




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
结构化程序课程设计报告设计名称 _ 学生信息管理系统 指导教师 _ _ _ _ _ 班级 _ 1 2计算机卓越班 学生姓名 刘宝 王庆华 徐廷政 汪俊杰 李昱凡 完成日期 安庆师范学院计算机与信息学院一、 实验课题题目:学生信息管理系统 创建一个学生信息管理系统。假设系统中每个学生记录只包括学号、姓名、电话号码等信息。1、 系统功能的基本要求:(1) 创建信息管理系统。(2) 显示信息管理系统;(3) 查询信息管理系统;(4) 修改信息管理系统;(5) 删除信息管理系统;(6) 排序信息管理系统;(7) 退出信息管理系统;二、 需求分析使用链式结构,定义链表结构,使用文件储存学生信息#ifndef COMMON_H#define COMMON_H/*注:此处是为了后面可能要对学生添加其他属性而预留的typedef struct others*POTH,OTHE;*/typedef struct studentchar num10;/学号学号唯一,且不能改,作为用户登录账号char psw20;/密码每人一个密码,默认学号后四位,可以自己登录修改int root;/权限分管理员和用户,1代表管理员,0代表用户char nam10;/姓名char sex4;/性别char dom10;/寝室char cls40;/班级char clg40;/学院char mbp20;/手机/OTHE other;/其他使用结构体嵌套,方便添加其他属性struct student *next;*PSTU,STU;#endif三、 流程图设计大致流程设计如下:主函数调用登录函数void login(PSTU pHead),进入登录界面登录函数调用读取函数PSTU read(void),将学生信息从文件中读入内存登录界面下输入用户和密码,通过与学生信息匹配,判断是管理员还是用户如果是管理员则进入管理员界面,反则进入用户界面管理员拥有比用户更多的权限,可以进行行新增、查询、修改等操作相比较管理员,用户的权限少了很多。四、算法模块设计两大模块:前台界面、后台控制前台界面:登陆界面、管理员界面、用户界面、增删查改、修改密码、关于我们后台控制:数据读取、数据写入、数据加密、数据解密、构建链表、记录日志详细设计详细说明在代码里有注释,这里不再赘述,因为代码粘过来会很乱,这里只提供函数接口等信息登录界面函数原型:void login(PSTU pHead)接收参数:pHead:链表头结点返回参数:无功能实现:登陆界面编写作者:刘宝编写时间:2013/9/8管理员界面函数原型:void admin(PSTU pHead,PSTU p)接收参数:pHead:链表头结点 p:登录人信息所在的节点返回参数:无功能实现:管理员界面编写作者:刘宝编写时间:2013/9/7用户界面函数原型:void admin(PSTU pHead,PSTU p)接收参数:pHead:链表头结点 p:登录人信息所在的节点返回参数:无功能实现:用户界面编写作者:刘宝编写时间:2013/9/8增删查改函数原型:void adminadd(PSTU pHead,PSTU p1)接收参数:pHead:链表头结点 p1:当前登录成员返回参数:无功能实现:添加一个成员编写作者:王庆华编写时间:2013/9/7函数原型:void admindelete(PSTU pHead,PSTU p1)接收参数:pHead:链表头结点 p1:当前登录成员返回参数:无功能实现:删除一个成员编写作者:李昱凡编写时间:2013/9/7函数原型:void adminsearch(PSTU pHead)接收参数:pHead:链表头结点返回参数:无功能实现:查找一个成员的信息编写作者:汪俊杰编写时间:2013/9/7函数原型:void adminchange(PSTU pHead,PSTU p1)接收参数:pHead:链表头结点 p1:被修改的成员返回参数:无功能实现:修改一个成员的信息编写作者:徐廷政编写时间:2013/9/7修改密码函数原型:void changepsw(PSTU pHead,PSTU p1)接收参数:pHead:链表头结点 p1:当前登录成员返回参数:无功能实现:修改当前登录成员的密码编写作者:刘宝编写时间:2013/9/8关于我们函数原型:void about()接收参数:无返回参数:无功能实现:输出“关于我们”信息编写作者:刘宝编写时间:2013/9/8数据读写读:函数原型:PSTU read(void)接收参数:无返回参数:链表头结点功能实现:读取数据、解密密码编写作者:刘宝编写时间:2013/9/8写:函数原型:void save(PSTU pHead)接收参数:pHead:链表头结点返回参数:无功能实现:保存数据并加密密码编写作者:刘宝编写时间:2013/9/8构建链表函数原型:PSTU create(void)接收参数:无返回参数:返回指向这个结点的指针功能实现:新建一个结点编写作者:刘宝编写时间:2013/9/8记录日志函数原型:void record(PSTU p1,int n,PSTU p2)接收参数:p1:当前登录成员 n:记录种类 p2:被操作成员返回参数:无功能实现:记录日志编写作者:刘宝编写时间:2013/9/8五、系统测试登陆界面进度条登陆:管理员登陆界面普通用户登陆管理员的增删查改用户的增加:删除用户:查询:1、 学号查询2、 姓名查询改学生信息改密码密码修改成功后,会重新登陆日志:关于我们:六、系统风格整体风格:(1).程序块要采用缩进风格编写,使用TAB控制缩进。(2).函数定义采用linux内核编程风格,即函数类型与函数名称不分行。(3).左右花括号的位置采用GNU的风格,即左括号与右括号都在同一列左对起。(4).相对独立的代码段之间,变量说明之后,插入一个空行分隔。(5).相邻的函数块之间,插入一个空行分隔。(6).关键字if,while ,for与其后的条件判断的表达式之间,插入一个空格分隔。注释风格:(1).整个源文件的最顶部,说明次模块的相关信息,一般为多行注释(2).源文件内部定义的函数实现上则,紧贴其函数实现的部分,不用空行分隔。(3).相对独立的代码段上则,紧贴其注释说明的实现代码,不用空行分隔。(4).简短代码行的右侧,一般为单行注释,内容不超过10个单词。(5).对于全局变量的注释要尽量详细,包括它的功能,取值范围,各取值含义等。(6).数据结构中的变量要做充分的注释。(7).对于重要的分支语句、循环语句等也要加充分的注释。六、课程设计总结分工:组长:刘宝 负责基层代码实现、界面设计和分配任务组员:王庆华 负责增加模块的代码实现和撰写文档徐廷政 负责修改模块代码实现和测试程序汪俊杰 负责查找模块代码实现和PPT制作李昱凡 负责删除模块代码和提供创意以及查找相关资料感想:1、 团队合作很重要,大家在一起讨论,集思广义才能使课题更好的完成2、 巩固了以前一些不太清楚的东西,团队合作弥补了每个人的短板3、 明白了怎么去团队合作完成一个项目不足:1、输密码时产生的 “ * ” ,如果输错不能删除,只能退回重新输入2、很多函数模块没有返回值,不利于判断函数执行情况计划用&引用参数的方式带回数据,用函数返回值来判断函数执行情况七、源程序#ifndef HEAD_H#define HEAD_H#include#include#include#include#include#include#includecommon.hvoid login(PSTU);PSTU create(void);PSTU read(void);void save(PSTU);void about();void record(PSTU p1,int n,PSTU p2);void recordput();void changepsw(PSTU pHead,PSTU p);int searchnum(PSTU,PSTU,PSTU);void user(PSTU,PSTU);void usersee(PSTU p);void userchange(PSTU pHead,PSTU p);void admin(PSTU,PSTU);void adminadd(PSTU,PSTU);void adminsearch(PSTU);void adminchange(PSTU,PSTU);void admindelete(PSTU,PSTU);#e#includehead.h/*函数原型:int main(void)*接收参数:无*返回参数:整型参数,判定程序执行情况*功能实现:主函数*编写作者:刘宝*编写时间:2013/9/8*/int main(void)login(read();return 0;#ifndefCOMMON_H#define COMMON_H/*typedef struct others*POTH,OTHE;*/typedef struct studentchar num10;/学号char psw20;/密码int root;/权限char nam10;/姓名char sex4;/性别char dom10;/寝室char cls40;/班级char clg40;/学院char mbp20;/手机/OTHE other;/其他struct student *next;*PSTU,STU;#endif#includehead.h/*函数原型:void login(PSTU pHead)*接收参数:pHead:链表头结点*返回参数:无*功能实现:登陆界面*编写作者:刘宝*编写时间:2013/9/8*/void login(PSTU pHead)int i = 0,flag = 0,n;char num20;char str20;char psw20;PSTU p;system(cls);printf(n*学生信息管理系统*nn);printf( -n);printf( | 请 登 录 |n);printf( -nnn);printf(tttt用户:);scanf(%s,num);getchar();printf(ntttt密码:);while(stri=getch() != r)i+;printf(*);stri=0;printf(n);p = pHead-next;while(p-next)/printf(%sn,p-num);if(!strcmp(num,p-num)strcpy(psw,p-psw);flag = 1;break;p = p-next;if(!flag)printf(n无此用户,请重新输入.n);printf(n*n);Sleep(800);system(cls);login(pHead);else if(strcmp(str,psw)printf(n密码错误,请重新输入.n);printf(n*n);Sleep(800);system(cls);login(pHead);elseprintf(n密码正确,正在登陆.n);record(p,1,p);/记录日志printf(n);n=80;while(n-)printf();Sleep(10);if(p-root)admin(pHead,p);elseuser(pHead,p);#includehead.h/*函数原型:void admin(PSTU pHead,PSTU p)*接收参数:pHead:链表头结点 p:登录人信息所在的节点*返回参数:无*功能实现:管理员界面*编写作者:刘宝*编写时间:2013/9/7*/void admin(PSTU pHead,PSTU p)int m,n;char ch;while(1)n = strlen(p-nam);m = 70-n;system(cls);printf(n*学生信息管理系统*n);while(m-)printf( );printf(%s 管理员nn,p-nam);printf( 新增(N) 查询(S) 修改(C) 删除(D) 改密(P) 日志(R) 关于(A) 退出(X)nn);printf(nnnnnnnnnnnnnnnn);printf( );fflush(stdin);scanf(%c,&ch);switch(ch)case N:case n:adminadd(pHead,p);break;/新增case S:case s:adminsearch(pHead);break;/查询case C:case c:adminchange(pHead,p);break;/修改 case D:case d:admindelete(pHead,p);break;/删除case P:case p:changepsw(pHead,p);break;/改密case R:case r:recordput();break;/日志case A:case a:about();break;/关于case X:case x:record(p,0,p);exit(0);/退出#includehead.h/*函数原型:void adminadd(PSTU pHead,PSTU p1)*接收参数:pHead:链表头结点 p1:当前登录成员*返回参数:无*功能实现:添加一个成员*编写作者:刘宝*编写时间:2013/9/7*/void adminadd(PSTU pHead,PSTU p1)char ch;PSTU p;system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 新 增 成 员 |n);printf( -n);p = create();printf(ttt学号:);scanf(%s,p-num);if(searchnum(pHead,p,p1)printf(nttt密码:);scanf(%s,p-psw);printf(nttt权限:);scanf(%s,&p-root);printf(nttt姓名:);scanf(%s,p-nam);printf(nttt性别:);scanf(%s,p-sex);printf(nttt寝室:);scanf(%s,p-dom);printf(nttt手机:);scanf(%s,p-mbp);printf(nttt班级:);scanf(%s,p-cls);printf(nttt学院:);scanf(%s,p-clg);fflush(stdin);printf(确定新增该用户?(Y / N).);scanf(%c,&ch);fflush(stdin);if(ch = Y | ch = y)p-next = pHead -next;pHead -next = p;save(pHead);printf(已保存,按回车返回.);record(p1,2,p);getchar();else if(ch = N | ch = n)free(p);printf(未保存,按回车返回.);getchar();void change_num(PSTU,PSTU);void change_nam(PSTU,PSTU);void adminchange(PSTU pHead,PSTU p1) char num10;char ch;system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 修 改 信 息 |n);printf( -n);printf(n 选择查询方式:n);printf(n 学号(M) 姓名(N) 返回(R)nnnnnnnnnnnnnn);fflush(stdin);printf( );scanf(%c,&ch);system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 修 改 信 息 |n);printf( -n);switch(ch)case M:casem:change_num(pHead,p1);break;case N:casen:change_nam(pHead,p1);break;case R:caser:break; /学号查询void change_num(PSTU pHead,PSTU p1)int flag;char num10;PSTU p;system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 修 改 信 息 |n);printf( -n);flag=0;printf(nttt输入学号:);scanf(%s,num);p=pHead-next;while(p-next)if(!strcmp(p-num,num)flag=1;break;p = p-next;if(flag = 1)userchange(pHead,p);record(p1,4,p);elseprintf(nnnnnnnnnnn该学生不存在!n);printf(n*n);Sleep(800);adminchange(pHead,p1);/姓名查询void change_nam(PSTU pHead,PSTU p1)int flag;char nam10;PSTU p;system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 修 改 信 息 |n);printf( -n);flag=0;printf(nttt输入姓名:);fflush(stdin);scanf(%s,nam);p = pHead-next;while(p-next)if(!strcmp(p-nam,nam)flag=1;break;p = p-next;if(flag = 1)userchange(pHead,p);record(p1,4,p);elseprintf(nnnnnnnnnnn该学生不存在!n);printf(n*n);Sleep(800);adminchange(pHead,p1);void admindelete(PSTU pHead,PSTU p1) char num10;char ch;system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 删 除 成 员 |n);printf( -n);printf(n 选择查询方式:n);printf(n 学号(M) 姓名(N) 返回(R)nnnnnnnnnnnnnn);fflush(stdin);printf( );scanf(%c,&ch);system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 删 除 成 员 |n);printf( -n);switch(ch)case M:casem:delete_num(pHead,p1);break;case N:casen:delete_nam(pHead,p1);break;case R:caser:break; /学号查询void delete_num(PSTU pHead,PSTU p1)int flag;char ch;char num10;PSTU p;system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 删 除 成 员 |n);printf( -n);flag=0;printf(nttt输入学号:);scanf(%s,num);p=pHead-next;p1 = pHead;while(p-next)if(!strcmp(p-num,num)flag=1;break;p = p-next;p1 = p1-next;if(flag = 1)system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 修 改 信 息 |n);printf( -n);printf(nttt学号:%sn,p-num);printf(nttt姓名:%sn,p-nam);printf(nttt性别:%sn,p-sex);printf(nttt寝室:%sn,p-dom);printf(nttt手机:%sn,p-mbp);printf(nttt班级:%sn,p-cls);printf(nttt学院:%sn,p-clg);printf(n是否确定删除?(Y / N).);fflush(stdin);scanf(%c,&ch);fflush(stdin);if(ch = Y | ch = y)p1-next = p1-next-next;free(p);save(pHead);printf(已删除,按回车返回.);record(p1,3,p);else if(ch = N | ch = n)printf(未删除,按回车返回.);fflush(stdin);getchar();elseprintf(nnnnnnnnnnn该学生不存在!n);printf(n*n);Sleep(800);admindelete(pHead,p1);/姓名查询void delete_nam(PSTU pHead,PSTU p1)int flag;char ch;char nam10;PSTU p;flag=0;system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 删 除 成 员 |n);printf( -n);flag=0;printf(nttt输入姓名:);fflush(stdin);scanf(%s,nam);p = pHead-next;p1 = p1-next;while(p-next)if(!strcmp(p-nam,nam)flag=1;break;p = p-next;if(flag = 1)system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 修 改 信 息 |n);printf( -n);printf(nttt学号:%sn,p-num);printf(nttt姓名:%sn,p-nam);printf(nttt性别:%sn,p-sex);printf(nttt寝室:%sn,p-dom);printf(nttt手机:%sn,p-mbp);printf(nttt班级:%sn,p-cls);printf(nttt学院:%sn,p-clg);printf(n是否确定删除?(Y / N).);fflush(stdin);scanf(%c,&ch);fflush(stdin);if(ch = Y | ch = y)p1-next = p1-next-next;free(p);save(pHead);printf(已删除,按回车返回.);record(p1,3,p);else if(ch = N | ch = n)printf(未删除,按回车返回.);fflush(stdin);getchar();elseprintf(nnnnnnnnnnn该学生不存在!n);printf(n*n);Sleep(800);admindelete(pHead,p1);void adminsearch(PSTU pHead) char num10;char ch;system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 查 询 成 员 |n);printf( -n);printf(n 选择查询方式:n);printf(n 学号(M) 姓名(N) 返回(R)nnnnnnnnnnnnnn);fflush(stdin);printf( );scanf(%c,&ch);system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 查 询 成 员 |n);printf( -n);switch(ch)case M:casem:search_num(pHead);break;case N:casen:search_nam(pHead);break;case R:caser:break; /学号查询void search_num(PSTU pHead)int flag;char num10;PSTU p;flag=0;printf(nttt输入学号:);scanf(%s,num);p=pHead-next;while(p-next)if(!strcmp(p-num,num)flag=1;break;p = p-next;if(flag = 1)system(cls);printf(n*学生信息管理系统*n);printf( -n);printf( | 查 询
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 鱼塘土方开挖施工方案
- 蚌埠九年级二模数学试卷
- 2025年高性能纤维超细纤维项目建议书
- 灞桥工程铁艺花箱施工方案
- 2025年柔印CTP项目发展计划
- 马凳筋专项施工方案
- 渠道预制板衬砌施工方案
- 多重发展模式在林业高效种植中的应用价值及实现路径探讨
- 基本医疗卫生服务面临的主要问题
- 流动式起重机分解组塔施工方案
- 2025国家电投集团中国电力招聘8人笔试参考题库附带答案详解
- 曲靖市出租汽车从业资格证区域科目考试题(附答案)
- 2025年安徽城市管理职业学院单招职业技能考试题库汇编
- 2025年湖南国防工业职业技术学院单招职业倾向性测试题库及参考答案
- 2025年湖南水利水电职业技术学院单招职业技能测试题库附答案
- 2025年河南建筑职业技术学院单招职业技能测试题库审定版
- 2025年湖南食品药品职业学院单招职业倾向性测试题库参考答案
- 2025年湖南水利水电职业技术学院单招职业适应性测试题库1套
- 2025年家政服务策划免责声明协议
- 2025新人教版语文七年级下册《第四单元》大单元整体教学设计2022课标
- 2024人工智能大模型技术财务应用蓝皮书
评论
0/150
提交评论