




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录一、需求分析2二、概要设计2三、详细设计4四、调试分析9五、用户手册9六、测试数据9七、附录10一、需求分析1.课设内容:学生学籍管理系统:用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。功能要求:(1) 系统以菜单方式工作。(2) 登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息。(3) 删除已知学号的学生信息。(4) 查找已知学号的学生信息。(5) 按学号,专业输出学生籍贯表。(6) 查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业。 2.用一个结构体来表示学生学籍的各种信息,结构体如下:struc
2、t student char namen; /姓名char sexS; /性别char addressA; /籍贯 int age; /年龄char numX; /学号char ClassC; /班级 char apartmentH; /院系char majorM; /专业int state; /当前该生的学习状态如降级等。; 3.学籍变化用1表示入学,2表示退学,3表示降级,4表示休学,5表示毕业。4.用数据文件存储信息,用函数fwrite()和fread()作为写入和读出文件信息。5.利用以上的结构体构造一个链表,用于查找学生信息这一功能。6.信息的输入都从键盘输入,以菜单形式展开以实现其
3、功能。7.程序执行命令: (1)写入学生信息。 (2)保存学生信息。 (3)实现其他功能。二、概要设计 1.程序功能模块主要由以下六大模块组成:void Register(); /学生信息写入功能void Update(); /学生信息修改功能void Research(); /学生信息查找功能void deletenum(); /学生信息删除功能(按学号删除)void Findstate(); /学生状态查找功能void Show(); /学生信息显示功能其中void Research();函数还包括子函数int findnum(char *key); int findname(char *
4、key);前一个是按学号查找,后一个是按姓名查找。而void Show()函数包括子函数int showmajor();int displaystu();int shownum();void Update()函数包括子函数int Add ()和intOther()以上的六大功能是独立工作的,互不影响,只有void Research();和void Show()和void Update()函数与它们的子函数有影响。2.学生学籍信息管理的数据类型声明如下:用结构体表示:#define n 8 /姓名字长#define S 6 /性别字长#define A 12 /籍贯字长#define H 10
5、/院系字长#define C 8 /班级字长#define X 10 /学号字长#define M 10 /专业字长#define N 10 /输入学生个数struct student /学生信息结构体char namen; /姓名char sexS; /性别char addressA; /籍贯 int age; /年龄char numX; /学号char ClassC; /班级 char apartmentH; /院系char majorM; /专业int state; /当前该生的学习状态stuN; /最多输入的学生数3.各个函数功能模块的调用如下: main() Register() U
6、pdate()Show() deletenum() Research()Findstate()退出 ( 三、详细设计: 1.写入信息函数如下: void Register() /学籍注册函数 int i,x; FILE *fp; /文件保存 printf(文件信息将保存在:message.txtnn); fp=fopen(message.txt,w); printf(请输入你要写入该文件的学生数量:); / 输入学生数量 scanf(%d,&i); for (x=0;x num,p-name,p-sex,p-age,p-address,p-apartment,p-Class,p-major,p
7、-state); p+; a+; fclose(fp); printf( 请输入要删除记录的学号:); scanf(%s,num); for(k=Stu;k num)=0) break; if(k Stu+a) for(p=k;pk+a-1;p+) *p=*(p+1); else printf(n 无此人!nn); fp=fopen(message.txt,r); if(fp=NULL) printf(n 打开文件失败!n); return 0; for(p=Stu;p num,p-name,p-sex,p-age,p-address,p-apartment,p-Class,p-major,p
8、-state); fclose(fp); return 0; 5. 状态查找功能如下: void Findstate() /按姓名查询学生状态FILE *fp;char Name8;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打开文件失败!); printf(请输入你已经写入文件的学生数量:);scanf(%d,&m);printf(请输入你要查找学生的姓名:);scanf(%s,Name);for (i=0;i m;i+) if (strcmp(S,Name) = 0) printf( 姓名:%sn ,S
9、); printf(学生状态:%dn,Stui.state);fclose(fp);6. 信息查找功能如下: void Research()int i;char j10;printf(1-按学号查询n);printf(2-按姓名查询n);printf(请输入您的选择:);scanf(%d,&i);switch (i)case 1: printf(请输入你要查找的学生学号:); scanf(%s,j); findnum(j);break;case 2: printf(请输入你要查找的学生姓名:); scanf(%s,j); findname(j);break;default: printf(输入
10、有误!正在退出!);break;7.主函数如下: void main()int i;do /* 主菜单 */ printf(=欢迎使用学生学籍管理系统=n); printf( 1-Register-(注册)n); printf( 2-Search-(查找)n); printf( 3-Update-(修改)n); printf( 4-Delete-(删除)n); printf( 5-Show-(显示)n);printf( 6-State-(状态)n);printf( 7-Exit-(退出)n); printf(=n);printf( 注:学生学习状态表示方法: 1-入学n);printf( 2-
11、退学n); printf( 3-降级n); printf( 4-休学n); printf( 5-毕业n); printf( 请输入您的选择:);scanf(%d,&i); printf(n); switch (i) case 1: Register(); break; case 2: Research(); break; case 3: Update(); break; case 4: deletenum(); break; case 5: Show(); break;case 6: Findstate();break; case 7: break; default: printf(输入有误!
12、请重新输入:nnn); break;while (i!=7);四、调试分析: 1.由于文件这块知识没有讲,所以通过自学的效果并不是很好,在程序设计中文件这块做起来有点吃力,但最终还是学会了。 2.指针问题,删除功能中要到的指针删除有问题。3.多文件结构即工程结构开始还不会。不过通过自学还是能搞定。4.全局变量的问题。什么地方该用有点不懂。不过现在明白了。五、用户手册:1.本程序的运行环境为TC6.0,执行文件为Studentmessage.exe。 进入演示程序后,即显示对话形式的提示操作过程。如:你要输入学生信息,则输入1即可。每种操作的代号不同,只需按提示操作即可。3.保存的文档在mess
13、age.txt文件中,可以查看。六、测试数据:运行的结果如下:1.菜单界面:2.写入学生信息3.显示信息4.修改信息:5.显示籍贯及学习状态:七、附录:1.源程序代码如下:#define n 8#define S 6#define A 12#define H 10#define C 8#define X 10#define M 10#define N 10struct student char namen; /姓名char sexS; /性别char addressA; /籍贯 int age; /年龄char numX; /学号char ClassC; /班级 char apartmentH
14、; /院系char majorM; /专业int state; /当前该生的学习状态; #include #include deletenum.h#include Update.h#include Show.h#include Research.h#include Register.h#include Findstate.h#include #include Struct.h#include Add.hvoid Save(int k);int findnum(char *key); int findname(char *key);int showmajor(); /*按专业显示*/int di
15、splaystu(); /*全部显示*/int shownum(); /*按学号显示*/extern struct student StuN;int findnum(char *key)FILE *fp;int i=0;int m;if (fp=fopen(message.txt,r) = NULL) printf(不能该打开文件n); return 0; printf(请输入你已经写入文件的学生数量:);scanf(%d,&m);printf(nn);for (;i m;i+)if (strcmp(key,Stui.num)=0) fread(&Stui,sizeof(struct stud
16、ent),1,fp); printf(n姓名 :%sn,S); printf( 学号 :%sn,Stui.num); printf( 性别 :%sn,Stui.sex); printf( 年龄 :%dn,Stui.age); printf( 籍贯 :%sn,Stui.address); printf( 班级 :%sn,Stui.Class); printf( 学院 :%sn,Stui.apartment); printf( 专业 :%sn,Stui.major); printf( 状态 :%dn,Stui.state); fclose(fp); if (i = 0)printf
17、(学生:%s不在该文件中n,key); return 1;return 0;int findname(char *key)FILE *fp;int i=0;int m;if (fp=fopen(message.txt,r) = NULL)printf(打开文件失败!);return 0; printf(请输入你已经写入文件的学生数量:);scanf(%d,&m);printf(nn);for (;i m;i+)if (strcmp(S,key) = 0)fread(&Stui,sizeof(struct student),1,fp); printf(n姓名 :%sn,Stui.
18、name); printf( 学号 :%sn,Stui.num); printf( 性别 :%sn,Stui.sex); printf( 年龄 :%dn,Stui.age); printf( 籍贯 :%sn,Stui.address); printf( 班级 :%sn,Stui.Class); printf( 学院 :%sn,Stui.apartment); printf( 专业 :%sn,Stui.major); printf( 状态 :%dn,Stui.state);fclose(fp);if (i = 0)printf(学生:%s不在该文件中!n,key);return 1;void R
19、egister() int i,x;FILE *fp; printf(文件信息将保存在:message.txtnn);fp=fopen(message.txt,w);printf(请输入你要写入该文件的学生数量:); scanf(%d,&i); for (x=0;x i;x+) printf(请输入学生姓名:); scanf(%s,S);printf(请输入学生学号:);scanf(%s,Stux.num);printf(请输入学生性别:);scanf(%s,Stux.sex);printf(请输入学生年龄:);scanf(%d,&Stux.age);printf(请输入学生籍
20、贯:);scanf(%s,Stux.address);printf(请输入学生班级:);scanf(%s,Stux.Class);printf(请输入学生学院:);scanf(%s,Stux.apartment);printf(请输入学生专业:);scanf(%s,Stux.major); printf(请输入学生状态:); scanf(%d,&Stux.state);printf(nn);fwrite (&Stux, sizeof (struct student), 1, fp);printf(输入完毕!n);fclose(fp);void Research()int i;char j10;
21、printf(1-按学号查询n);printf(2-按姓名查询n);printf(请输入您的选择:);scanf(%d,&i);switch (i)case 1: printf(请输入你要查找的学生学号:); scanf(%s,j); findnum(j);break;case 2: printf(请输入你要查找的学生姓名:); scanf(%s,j); findname(j);break;default: printf(输入有误!正在退出!);break;void Update() / *修改*/ int i; doprintf(输入修改的方式:nn);printf( 1-增加-);prin
22、tf( 2-其他-); printf(请输入:);scanf(%d,&i);switch(i)case 1:Add();break;case 2:Other();break; case 3: break; default: printf(输入有误!请重新输入:nnn); break;while(i!=3);int Add () /修改函数 int i,j;FILE *fp;printf(请输入你要增加的学生个数:); scanf(%d,&i);if (fp=fopen(message.txt,w)=NULL)printf(打开文件失败!);return 0;for (j=0;j i;j+) p
23、rintf(请输入学生姓名:); scanf(%s,S);printf(请输入学生学号:);scanf(%s,Stui.num); printf(请输入学生性别:);scanf(%s,Stui.sex); printf(请输入学生年龄:);scanf(%d,&Stui.age);printf(请输入学生籍贯:);scanf(%s,Stui.address);printf(请输入学生班级:);scanf(%s,Stui.Class);printf(请输入学生学院:);scanf(%s,Stui.apartment);printf(请输入学生专业:);scanf(%s,Stui.m
24、ajor); printf(请输入学生状态:); scanf(%d,&Stui.state);fwrite (&Stuj, sizeof (struct student), 1, fp);printf(输入完毕!n);fclose(fp);return 0;int Other() /按学号修改函数FILE *fp; char num10;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打开文件失败 :n);return 0; printf(请输入你已经写入文件的学生数量:);scanf(%d,&m);printf(nn);printf(请输入
25、你要修改的学生学号:n);scanf(%s,num);for (i=0;i num,p-name,p-sex,p-age,p-address,p-apartment,p-Class,p-major,p-state); p+; a+; fclose(fp); printf( 请输入要删除记录的学号:); scanf(%s,num); for(k=Stu;k num)=0) break; if(k Stu+a) for(p=k;pk+a-1;p+)*p=*(p+1); else printf(n 无此人!nn); fp=fopen(message.txt,r); if(fp=NULL) print
26、f(n 打开文件失败!n); return 0; for(p=Stu;p num,p-name,p-sex,p-age,p-address,p-apartment,p-Class,p-major,p-state); fclose(fp); void Show() /显示学生信息函数int c;do printf( n-请选择输出学生的方式-n );printf( 1-按学号输出学生籍贯信息n );printf( 2-按专业输出学生籍贯信息n );printf( 3-将显示所有学生学籍信息n );printf( 4-退出n );scanf(%d,&c);switch (c)case 1: sho
27、wnum();break;case 2: showmajor();break;case 3: displaystu();break;case 4:break;default: printf(n输入有误!请重新输入:nnn);break; while (c != 4);int shownum() /按学号输出籍贯表FILE *fp;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打开文件失败!); return 0; printf(请输入你已经写入文件的学生数量:);scanf(%d,&m);for (i=0;i m;i+)printf(n学号
28、: %sn,Stui.num); printf(n籍贯: %sn,Stui.address);fclose(fp);return 0;int showmajor() /按专业输出籍贯表FILE *fp;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打开文件失败!n);return 0; printf(请输入你已经写入文件的学生数量:);scanf(%d,&m);for (i=0;i m;i+)printf(n专业 :%sn,Stui.major); printf(n籍贯 :%sn,Stui.address); fclose(fp); ret
29、urn 0;int displaystu() /显示每个学生信息FILE *fp;int i,m;if (fp=fopen(message.txt,r) = NULL)printf(打开文件失败!n);return 0;printf(请输入你已经写入文件的学生数量:); scanf(%d,&m);printf(nn);for (i=0;i m;i+) fread(&Stui,sizeof(struct student),1,fp);printf( 姓名 :%sn,S); printf( 学号 :%sn,Stui.num); printf( 年龄 :%dn,Stui.age); printf( 性别 :%sn,Stui.sex); printf( 籍贯 :%sn,Stui.address); printf( 学院 :%sn,Stui.apartment); printf( 专业 :%sn,Stui.major); printf( 班级
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电光源材料与工艺考核试卷
- 电气设备防爆装置制造考核试卷
- 物联网数据标准化与互操作性考核试卷
- 户外设施使用协议
- 海底隧道施工质量控制与验收考核试卷
- 漆器制作与工匠技艺比赛的组织考核试卷
- 经济型酒店品牌服务质量评价体系考核试卷
- 小学生寒假防溺水安全教育
- 电池微型化与集成技术考核试卷
- 磷酸铁锂电池制造的新发展考核试卷
- 2024华能四川能源开发有限公司下属单位招聘笔试参考题库附带答案详解
- 钢结构高处作业安全管理
- JJF 2221-2025导热系数瞬态测定仪校准规范
- 华为手机协议合同
- 甘肃省陇南市礼县第六中学2024-2025学年八年级下学期第一次月考数学试卷(无答案)
- 公司两班倒管理制度
- 完整版高中古诗文必背72篇【原文+注音+翻译】
- 2025年武汉数学四调试题及答案
- 人教版小学四年级语文下册2024-2025学年度第二学期期中质量检测试卷
- 七年级下册道德与法治(2025年春)教材变化详细解读
- 鸡头黄精栽培技术规程
评论
0/150
提交评论