《学籍管理系统(课程答辩).doc》由会员分享,可在线阅读,更多相关《学籍管理系统(课程答辩).doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言程序设计课程设计报告书学籍管理系统 天津工业大学设计人:帅继广 孙赫遥 龚慧慧 袁博指导教师:宁安良2014年06月19日提交课题选定与任务分解课题名称:学籍管理系统班级:信计1302组长:帅继广 联系电话:任务分解表:模块序号模块名称承担人学号01函数组建, 修改、删除函数的编写帅继广02录入学生信息函数的编写龚慧慧03查询函数的编写孙赫遥04显示全部、单一列表的编写袁博目 录 一、课程设计目的4二、课程设计内容及任务要求:41 设计内容42 任务要求4三.概要设计51.系统功能52、重要数据的数据结构设计63、函数设计7四 调试分析8五、调试问题8六.课程设计总结:9七、附录9C语言
2、课程设计学籍管理系统一、课程设计目的 1、 通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。2、 通过课程设计,学会设计数据结构。其中包括对结构数组、数据文件等知识的运用。3、 通过课程设计,提高程序开发功能,能运用合理的控制流程编写清晰高效的程序。4、 通过课程设计,训练C程序调试能力,能将一个中小型各级组织系统联调通过。5、 通过课程设计,开发一个中小型系统,掌握系统研发全过程。6、 通话课程设计,培养分析问题、解决实际问题的能力。二、课程设计内容及任务要求: 1 设计内容设计一个基于结构体数组的学生学籍管理系统,能实现对学生学籍信息进行录入,修改,
3、删除,查询和输出等基本操作。2 任务要求 (学籍管理系统应该实现以下功能):1、 能录入学生的基本信息,包括学号,姓名,专业,年级,性别和出生日期信息,保存到结构体数组中。2、 能根据输入的学号查询学生,进行信息的修改。3、 能根据输入的学号从结构体数组中删除学生的记录。4、 实现查询功能,能根据输入的学号或年级在屏幕上显示相应的学生信息。5、 能在屏幕上以列表的方式输出所有学生的信息。三.概要设计1.系统功能根据项目的开发要求,本系统划分成六个主要功能模块:录入学生信息模块、修改学生信息模块、删除学生信息模块、查询学生信息模块、输出模块和推出模块。系统功能机构图如下: 学生档案管理系统 退出
4、系统查询学生信息系统删除学生信息修改学生信息录入学生信息输出学生信息按班级 查询按学号查询2、重要数据的数据结构设计学生学籍的记录项用结构体Stu message表示,包括6个属性,stuno,name、spec、grade、sex、birthday分别代表学生的学号、专业、年级、性别和出生日期,其中birthday类型为自定义的结构体类型Date.Struct stumessageChar stuno11: /学号Char name9: /姓名Char spec2: /专业Char grade: /年级Char sex: /性别Stuct date birthday: /出生日期;日期类型
5、date包括三个属性,分别代表年、月、日。Struct dateint year : /年Int month: /月Int day: /日;3、函数设计学籍管理系统程序采用了结构化程序设计的思想,由1个.h头文件和3个C源文件组成。程序中除了主函数外,共设计了以下14个函数,分别包含在3个.c源文件中。以下是这些函数原型及功能设计。(1)void sysinfo(void)函数功能:在屏幕上输入系统及版权信息并等待用户响应。(2)Void menuofmain(struct stumessage stu);函数功能:在屏幕上显示主菜单,接收用户选择并响应用户相应操作。(3)Void appen
6、d(struct stumessage stu);函数功能:录入一条学生记录数组的末尾。(4)void modify(struct stumessage stu)函数功能:通过输入学号查询学生相关信息,如果存在在屏幕上输出相应学生记录并通过重新输入学生信息的方法修改该学生的记录,否则输出没有找到相关记录。;(5)void Delet(struct stu Message stu) 函数功能:通过输入学号查询学生的相应记录信息,如果存在在屏幕上输出相应学生记录,用户确认删除后用DelList()否则输出没有找到相关记录。(6)Void menuOfsear(struct stumessage s
7、tu);函数功能:在屏幕上显示查询了主菜单,接受用户选择并响应用户操作。(7)void listall(struct stumessage stu);函数功能:在屏幕上以列表的方式输出学生所有信息。调用printhead()输出表头,在调用listone()函数注意输出个条记录。(8)void quit(void);函数功能:退出菜单系统,并调用exit(0)系统函数结束程序运行。(9)voidsteargrade(stuct stumessage stu);函数功能:通过输入年级查询学生的相关记录信息,如果存在在屏幕以列表方式输出相应学生记录,并输出统计满足条件的学生个数,否则输出没有找到相
8、关记录。(11)int numofsear(struct stumessage stu.char stunumber);函数功能:根据接收到的学生学号,在相应记录数组中进行查询,如果存在相应记录,返加相应的数组下标,否则返回-1.(12)void printhead(void)函数功能:在屏幕上显示输出列表的表头。(13)void list one(struct stumessage list);函数功能:在屏幕上以行的形式显示输出一个学生的相关信息。四、 详细设计1、 系统主函数main()设计 开始 输出系统及版权信息 Sysinfo() 显示用户主菜单并响应 用户操作 Menuofmai
9、n() 结束2、主菜单模块函数menuofmain()设计 开始 choose退出系统输出学生信息修改学生信息删除学生信息查询学生信息录入学生信息非法操作 清屏显示主菜单接收用户选择 1 2 3 4 5 6 0Choose!=0 Y N 3、 录入学生信息功能模块函数Append()设计 清屏 返回Con=Y或con=y 接受用户选择 继续录入(Y/N) Length+ 录入一条记录 Y或y N或n4、修改学生信息功能模块函数modify()设计5、删除学生信息功能模块函数delete()设计继续删除(Y/N) Length-记录存在删除()Y/N 删除成功 输出第i条记录 输出表头没有找到相
10、关记录查询该学生记录,用i指向它接收要删除的学号 清屏 Y N N Y Y 返回 N 6. 查询菜单模块函数menuofsear()设计 Choose!=0按年级查询返回主菜单按学号查询 choose 接收用户的选择- 显示查询菜单- 清屏- 1 2 0 其他非法操作 Y N 7、 按学号查询功能模块函数searnum()设计Ilength且不 等于学号 清屏-接收查询学号- i=0 i+-没有找到相关记录- Choose!=0 输入表头- 输出第i条记录- 按任意键继续- Getch()-返回 N Y Y N 8、 按年级查询功能模块函数steargrade()设计 Getch()-Ilen
11、gth 等于年级 输入第i条记录- Count+- i +- Choose!=0 共找到n条记录- 没有找到相关记录- 按任意键继续- 清屏- 接收查询年级- 输出表头- i=0,count=0- 9、 输出学生信息功能模块函数ListALL()设计; 清屏- 输入表头- i=0 Ilength 输出第i条记录- i+- 按任意键继续- Getch()- 五、 调试分析本系统在VC6.0下编译调试通过,可顺利运行,各项功能达到设计要求。本系统程序由一个.h头文件和三个.C源文件构成。系统调试主要在vc6.0下进行,采用分模块的方法进行编译,即完成一个函数功能模块就编译一个功能模块,最后再进行整
12、体编译并产生可执行文件student.exe。六、调试问题(1)调试过程中的主要问题由于本程序是分模块设计的,所以运行时选择完任务并且执行完任务后,又会继续回到用户选择界面,供用户继续选择任务并执行任务,整个程序以文件形式读写,所以每次都可对输入的数据进行保存。对于本程序的调试运行,总体上情况良好。但是,其中也出现了一些小问题:1)主界面不工整,有乱行现象,主要问题出在运用“/t”和“/n”上2)在使用c语言系统函数进行数据输入的时候,发现使用getchar函数输入字符和字符串的时候,系统经常跳过相应a的输入语句,无法输入数据。查资料,是c系统的输入处理,缓存问题,解决方法是在进行字符和字符串
13、输入的时候,先使用fflush(stdin)函数清除缓存,既可正常输入字符和字符串。3)在这次程序调试中我还发现了return; 与break;的不同作用,其中break是只能用来结束它本身所在的本层循环,而return则是结束调用函数,让程序返回到主函数;用system(“cls”)来清理屏幕显示等。 (2)调试过程中的问题的解决办法:小组内成员进行讨论,向老师、学长请教,上网查资料,去图书馆查找参考文献,C语言程序设计第二版。七、课程设计总结:八、附录源代码如下:#include#include#include/函数的声明void menuofmain(void);/对菜单的操作,不需要返
14、回值,void SysInfo(void);void Append(struct StuMessage Stu100);void Modify(struct StuMessage Stu100);void Delete(struct StuMessage Stu100);void Menuofsear(struct StuMessage Stu100);void Listall(struct StuMessage Stu100);void listone(struct StuMessage Stu100, int i);struct dateint year;int month;int day
15、;struct StuMessagechar stuNo11;char name10;char spec21;int greade;char sex10;struct date birthday;int length=0;struct StuMessage Stu100;int main()char c;SysInfo();system(color 5a); c = getchar();menuofmain();return 0;void SysInfo(void)printf(nnnttt天津工业大学学籍管理系统n);printf(nnttt班级:信计1302班nn);printf(ttt姓
16、名:帅继广 孙赫遥 龚慧慧 袁博nn);printf(ttt指导教师:宁安良nn);printf(nttttt2014-06-19tt);printf(nnttt enter进入学籍管理系统.n);void menuofmain()int num;system(cls);system(color fc);printf(nnttt天津工业大学学生档案管理系统nnn);printf(tttplease make a choicennn);printf(ttt录入学生信息,请选择1n);printf(ttt修改学生信息,请选择2n);printf(ttt删除学生信息,请选择3n);printf(tt
17、t查询学生信息,请选择4n);printf(ttt输出学生信息,请选择5n);printf(ttt退出系统,请选择6n);printf(nttttttttttttn);printf(ntt n);printf(请输入编号做出选择:n);scanf(%d, &num);switch(num) case 1:Append(Stu);break;case 2:Modify(Stu);break;case 3:Delete(Stu);break;case 4:Menuofsear(Stu);break;case 5:Listall(Stu);break;case 6:exit (0);break;de
18、fault:printf(非法操作n);break; void Append(struct StuMessage Stu100)system(cls);char c, ch;fflush(stdin);printf(输入第%d个学生的信息。n,length+1);printf(第%d个学生的信息n,length+1);printf(please input stuNon);scanf(%s,Stu0.stuNo);printf(please input namen);scanf(%s,Stu0.name);printf(please input specn);scanf(%s,Stu0.spe
19、c);printf(please input greaden);scanf(%d,&Stu0.greade);printf(please input sexn);scanf(%s,Stu0.sex);printf(please input birthdayn);scanf(%d%d%d,&Stu0.birthday.year, &Stu0.birthday.month, &Stu0.birthday.day);length+;while(1)c=getchar();printf(输入y或Y继续输入学生记录n n或N结束输入返回主菜单n);ch=getchar();if(ch=y|ch=Y)sy
20、stem(cls);fflush(stdin);printf(第%d个学生的信息n,length+1);printf(please input stuNon);scanf(%s,Stulength.stuNo);printf(please input namen);scanf(%s,Stulength.name);printf(please input specn);scanf(%s,Stulength.spec);printf(please input greaden);scanf(%d,&Stulength.greade);printf(please input sexn);scanf(%
21、s,Stulength.sex);printf(please input birthdayn);scanf(%d%d%d,&Stulength.birthday.year,&Stulength.birthday.month,&Stulength.birthday.day);length+; elseif(ch=n|ch=N)menuofmain();void Modify(struct StuMessage Stu)system(cls); char ch100, c;int i, j=-1;printf(输入学号进行修改.n);gets(ch);for(i=0;ilength;i+)if(s
22、trcmp(ch,Stui.stuNo)=0)j=i;listone(Stu,i);if(j=-1)printf(没有找到相关记录。n);Modify(Stu);printf(修改Y,y/N,n.n);fflush(stdin);c=getchar();if(c=Y|c=y)fflush(stdin);printf(please input stuNon);scanf(%s,Stuj.stuNo);printf(please input namen);scanf(%s,Stuj.name);printf(please input specn);scanf(%s,Stuj.spec);print
23、f(please input greaden);scanf(%d,&Stuj.greade);printf(please input sexn);scanf(%s,Stuj.sex);printf(please input birthdayn);scanf(%d%d%d,&Stuj.birthday.year,&Stuj.birthday.month,&Stuj.birthday.day);elseif(c=N|c=n)menuofmain();printf(是否继续修改是输入y|Y否输入n|N。);c=getchar();if(c=y|c=Y)Modify(Stu);elseif(c=n|c
24、=N)menuofmain();void Delete(struct StuMessage Stu)system(cls);char ch100, c;int i, j=-1;printf(输入学号进行删除.n);fflush(stdin);gets(ch);for(i=0;ilength;i+)if(strcmp(ch,Stui.stuNo)=0)j=i;listone(Stu,i);if(j=-1)printf(没有找到相关记录。n);Delete(Stu);printf(删除是Y|y否N|nn);fflush(stdin);c=getchar();if(c=Y|c=y)for(j;jle
25、ngth;j+)Stuj=Stuj+1;length-;elsemenuofmain();printf(继续删除是y|Y否n|N);fflush(stdin);c=getchar();if(c=y|c=Y)Delete(Stu);elseif(c=n|c=N)menuofmain();void Menuofsear(struct StuMessage Stu)system(cls);char c;char ch100;int a, i, j=0; printf(t输入02进行选择n);printf(按学号查询,请选择1n);printf(按年级查询,请选择2n);printf(返回主菜单,请选
26、择0n);fflush(stdin); c=getchar();switch(c) case 1:fflush(stdin);printf(please input stuNon);scanf(%s,&ch);for(i=0;ilength;i+)if(strcmp(ch,Stui.stuNo)=0)j+;listone(Stu,i);if(j=0)printf(没有找到相关记录。n);Menuofsear(Stu);break;case 2:fflush(stdin);printf(please input greaden);scanf(%d,&a);for(i=0;ilength;i+)i
27、f(a=Stui.greade)j+;listone(Stu,i);if(j=0)printf(没有找到相关记录。n);Menuofsear(Stu);break;case 0:menuofmain();break;default:printf(非法操作); printf(继续查询y|Y返回主菜单n|Nn);fflush(stdin); c=getchar();if(c=y|c=Y)Menuofsear(Stu);elsemain();void Listall(struct StuMessage Stu)system(cls);int i;char c;for(i=0;ilength;i+) fflush(stdin);listone(Stu,i); c=getchar();menuofmain(); void listone(struct StuMessage Stu100,int i) fflush(stdin);printf(stuNo:%s,name:%s,spec:%s,greade:%d,sex:%s,birthday:%d %d %dn,Stui.stuNo,Stui.name,Stui.spec,Stui.greade,Stui.sex,Stui.birthday.year,Stui.birthday.month,Stui.birthday.day);