C语言大作业学生信息管理系统完稿.doc

上传人:豆**** 文档编号:17404149 上传时间:2022-05-23 格式:DOC 页数:23 大小:415KB
返回 下载 相关 举报
C语言大作业学生信息管理系统完稿.doc_第1页
第1页 / 共23页
C语言大作业学生信息管理系统完稿.doc_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《C语言大作业学生信息管理系统完稿.doc》由会员分享,可在线阅读,更多相关《C语言大作业学生信息管理系统完稿.doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流C语言大作业学生信息管理系统完稿.精品文档.武汉工业学院语言 学 院电气与电子工程学院班 级英才班1101学 号111204525姓 名刘兴目录摘要3第一章 综合设计概述31.1综合设计名称31.2任务要求31.3开发环境41.4应用平台4第二章 总体设计42.1系统功能需求分析42.2系统总体设计框架42.3系统功能模块图及各功能模块的目的与意义6第三章详细设计73.1N-S流程图73.1.1主函数main( )73.1.2录入学生基本信息函数student_new( )83.1.3修改学生档案函数student_edit ( )83.1.

2、4注销学生基本信息函数student_del( )83.1.5查找学生基本信息函数search_num ( )93.1.6录入成绩函数score_input( )93.1.7修改成绩函数score_edit( )93.1.8浏览学生成绩函数browser( )103.1.9学生成绩排序函数sort_it( )10第四章 调试分析过程描述114.1调试过程114.2调试发现的问题与解决15第五章 源程序代码21参考文献30摘要大作业为程序设计的第六题 “学生信息管理系统的设计”。在设计中用到了一个主函数和12个自定义函数。主函数实现了菜单操作,可根据数据的输入,控制操作选项。自定义函数则完成了对

3、数据的处理和学生管理的各种功能。如学生信息的录入,查找,修改,成绩的录入,修改和排序,在程序设计中尽量使用模块化,结构化设计,追求功能齐全,界面完整,简洁易读的设计理念。但是,限于内存局限与设计时间限制,本程序的学生人数设计最大为32人,而且不具备读取上次已录入学生信息档案功能。但总体来说,该程序已能满足要求的功能需求。因为本人学识有限,若有未发现的缺陷,敬请谅解第一章 综合设计概述1.1 综合设计名称学生信息管理系统的设计1.2 任务要求学生信息包括学号、姓名、年龄、性别、电话等。试设计一学生的信息管理系统,使之能提供以下功能:(1) 系统以菜单方式工作。(2) 学生信息录入功能(学生信息用

4、文件保存)-输入。(3) 学生信息浏览功能-输出。(4) 查询排序功能:n 按学号查询。n 按学号排序。n 按成绩与总分排序。(5) 学生信息的删除与修改(可选项)。1.3 开发环境开发工具为Microsoft Visual C+ 6.0.1.4 应用平台Windows XP32位。第二章 总体设计2.1 系统功能需求分析(1)建立学生信息,每个学生的信息包括:学号、姓名、年龄、性别、电话等。(2)求出每个学生的总分和平均分。(3)查找:根据学号、姓名中任一项查询该生的基本信息。(4)排序:根据学号、各科分数或总分将学生的信息按照一定的顺序进行排序。(5)根据需要修改学生的基本信息。(6)根据

5、实际情况注销某生的信息。(7)根据实际情况插入某生的信息。(8)将学生信息输出至文本文件中。2.2 系统总体设计框架(1)利用switch语句设计如图所示的主菜单。主选单选项编号1输入学生信息2修改学生信息3注销学生信息4查询学生信息5录 入 成 绩6修 改 成 绩7 浏 览8 输 出0 退 出 图1 学生信息管理系统主菜单(2)选择1后,调用录入函数student_new,进入录入函数后利用输入学生基本信息。(3)选项2后,调用修改信息函数student_edit,先进入查找函数后查找到学生信息并进行修改。(4)选择3后,调用查找函数student_del,查找某个学生的信息。(5)选择4后

6、,调用删除函数search_num,根据需要删除某个学生的信息。(6)选择5后,调用浏览函数score_input,浏览所有学生的信息。(7)选择6后,调用修改成绩函数score_edit,将每个学生的信息排序并全部输出。(6)选择7后,调用浏览函数student_browser,浏览所有学生的信息。(7)选择8后,调用输出函数save,将每个学生的信息全部输出。(8)选择0后,退出学生信息管理系统。(9)根据所选菜单编号编写相应代码。排序菜单 输入选项编号1按学号排序2按语文分数查找3按高数分数查找4按外语分数查找5按总分查找6按平均分查找0退 出图2 排序子菜单2.3 系统功能模块图及各功

7、能模块的目的与意义录入学生信 息修改学生信息查 找学生信息录入学生成绩删除学生信 息浏览学生成绩修改学生成绩主模块修改学生信息删除学生信 息修改学生成绩按学号排序按语文排序按数学排序按外语排序按总分排序按平均分排序找 按学号查询输出至文件退出第三章详细设计3.1 N-S流程图3.1.1 主函数main( )主函数主要通过switch()循环语句,实现菜单界面的操作控制,并且发挥了界面友好,模块化等特点,追求语句简洁,调用简单函数,通俗易懂。但是,由于switch语句的局限性,因而在菜单操作过程中使用了goto语句,这与结构化程序设计理念相悖,也是主函数中的最大缺陷。主函数的N-S流程图如下:3

8、.1.2 录入学生基本信息函数student_new( )在编写student_new( )函数时,主要设计思路就是通过判断语句进行递归嵌套,以此达到循环连续输入的效果,减少了操作复杂性。 录入学生基本信息函数N-S流程图如下:当N输入错误!);return_confirm();修改后代码:scanf(%d,&s0);if (s0=1)student_add();else if(s0=0) return_confirm(); else printf(nntt 输入错误!);return_confirm();(2) 修改学生成绩score_edit函数,在执行时学号不存在时仍然修改问题原代码:i

9、f(n=student_search()!=-1) printf(tt 语文:%d 数学:%d 英语:%dn,studentsn.chinese,studentsn.math,studentsn.english);printf(tt 请重新输入成绩:nntt 语文:);scanf(%d,&studentsn.chinese);printf(tt 数学:);scanf(%s,&studentsn.math);printf(tt 英语:);scanf(%d,&studentsn.english);return_confirm();修改后代码:if(n=student_search()!=-1&n!

10、=33) printf(tt 语文:%d 数学:%d 英语:%dn,studentsn.chinese,studentsn.math,studentsn.english);printf(tt 请重新输入成绩:nntt 语文:);scanf(%d,&studentsn.chinese);printf(tt 数学:);scanf(%s,&studentsn.math);printf(tt 英语:);scanf(%d,&studentsn.english);return_confirm();if(n=33)return_confirm();(3) 浏览函数中由于学号太长而引起的打印不齐问题原代码:s

11、ort_it(1); while(1)page_title(tt - *浏览*);printf(按数字键选择排序方式或按 0 返回n);printf(学号-1tt姓名tt年龄t语文-2t数学-3t英语-4t总分-5n);for(n=0;n32;n+)if(INDEXn!=-1)x=INDEXn;printf(%dtt%stt,studentsx.num,studentsx.name);printf(%dt%dt,studentsx.age,studentsx.chinese);printf(%dt%dt,studentsx.math,studentsx.english);printf(%dn,

12、studentsx.chinese+studentsx.math+studentsx.english);修改后代码:sort_it(1);while(1)page_title(tt - *浏览* -);printf(按数字键选择排序方式或按 0 返回n);printf(t学号-1| 姓名| 年龄| 语文-2| 数学-3| 英语-4| 总分-5| 平均分-6|n);for(n=0;n请用数字键选择科目nntt 1-语文 2-数学 3-英语nnntt );scanf(%d,&s);for(n=0;n输入错误!tt nn);break;if(studentsn.num!=0)printf(tt 学号

13、:%dntt 姓名:%sntt 成绩:,studentsn.num,studentsn.name);scanf(%d,&t);printf(n);switch(s)case 1 : studentsn.chinese=t;break;case 2 : studentsn.math=t;break;case 3 : studentsn.english=t;break;printf(tt 若需继续录入,请按1,退出录入请按0.nnntt );scanf(%d,&s1);if (s1=1)score_input();else if(s1=0) return_confirm(); else print

14、f(nntt 输入错误!);return_confirm();修改后代码:printf(ntt 请用数字键选择科目nntt 1-语文 2-数学 3-英语nnntt );scanf(%d,&s);for(n=0;n输入错误!tt nn);break;if(studentsn.num!=0)printf(tt 学号:%dntt 姓名:%sntt 成绩:,studentsn.num,studentsn.name);scanf(%d,&t);printf(n);switch(s)case 1 : studentsn.chinese=t;break;case 2 : studentsn.math=t;b

15、reak;case 3 : studentsn.english=t;break;printf(tt 若需继续录入,请按1,退出录入请按0.nnntt );scanf(%d,&s1);if (s1=1)score_input();else if(s1=0) return_confirm(); else printf(nntt 输入错误!);return_confirm();第五章 源程序代码/*学生成绩管理系统 刘兴*/*microsoft visual C+ 6.0 下编译通过*/#include #include #include /用于动态单元分配,如malloc(),calloc(),r

16、and()等#include /字符串输入输出,如出现getch(),clrscr()等#define N 32;int INDEX32;/定义学生信息数组,学生数目最大为32/*定义学生信息结构体*/struct STUDENT int num,age,chinese,math,english; char name21,sex16,tele20;students32;/结构体变量为数组students,数目为32/*打印标题函数*/void page_title(char *menu_item) system(cls);/清屏,包含于conio,h函数中 printf(* 欢迎进入学生信息管

17、理系统 按任意键返回nn);getch();/*操作完成后的返回函数*/void return_con(void)printf(ntt 按回车进行下步 nn);getch();/*录入学生基本信息函数*/void student_add(void)int s0; int n; page_title(tt - *录入学生基本信息* -); for(n=0;n学号:); scanf(%d,&studentsn.num); printf(tt 姓名:); scanf(%s,&studentsn.name);printf(tt 年龄:); scanf(%d,&studentsn.age);printf

18、(tt 性别:); scanf(%s,&studentsn.sex);printf(tt 电话:); scanf(%s,&studentsn.tele);break;printf(nntt 如需继续请按1,返回请按0.nnnntt );/次步骤方便了学生信息的连续录入scanf(%d,&s0); if (s0=1)student_add(); else if(s0=0) return_confirm(); else printf(nntt 输入错误!);return_confirm();/*查找学生档案函数*/int student_search(void)int n,i;printf(tt

19、- *请输入学生学号* -nnntt 学号:);scanf(%d,&i);for(n=0;n姓名:%sn,studentsn.name);printf(tt 年龄:%dn,studentsn.age);printf(tt 性别:%sn,studentsn.sex);printf(tt 电话:%sn,studentsn.tele); if (studentsn.chinese=0) printf(tt 语文:%sn,尚未录入);else printf(tt 语文:%dn,studentsn.chinese);if (studentsn.math=0) printf(tt 数学:%sn,尚未录入)

20、;else printf(tt 数学:%dn,studentsn.math);if (studentsn.english=0) printf(tt 英语:%sn,尚未录入);else printf(tt 英语:%dn,studentsn.english);return_con();return n;printf(ntt 输入错误或学号不存在.n);return_con();return 33;/*注销学生基本信息函数*/void student_delete(void)int n;page_title(tt - *注销学生基本信息* -);if(n=student_search()!=-1)

21、studentsn.num=0;printf(ntt 该学生已注销.n);return_confirm();/*修改学生基本信息函数*/void student_edit(void)int n;page_title(tt - *查找学生基本信息* -);n=student_search();if(n!=33)printf(ntt 请重新输入新信息:ntt 学号:);scanf(%d,&studentsn.num);printf(tt 姓名:);scanf(%s,&studentsn.name);printf(tt 年龄:);scanf(%d,&studentsn.age); printf(tt

22、 性别:);scanf(%s,&studentsn.sex);printf(tt 电话:);scanf(%s,&studentsn.tele);return_confirm();/录入成绩函数void score_input(void)int s1;int s,n,t;page_title(tt - *录入成绩* -);printf(ntt 请用数字键选择科目nntt 1-语文 2-数学 3-英语nnntt );scanf(%d,&s);for(n=0;n输入错误!tt nn);break;if(studentsn.num!=0)printf(tt 学号:%dntt 姓名:%sntt 成绩:,

23、studentsn.num,studentsn.name);scanf(%d,&t);printf(n);switch(s)case 1 : studentsn.chinese=t;break;case 2 : studentsn.math=t;break;case 3 : studentsn.english=t;break;printf(tt 若需继续录入,请按1,退出录入请按0.nnntt );scanf(%d,&s1);if (s1=1)score_input();else if(s1=0) return_confirm(); else printf(nntt 输入错误!);return

24、_confirm();/*修改成绩函数*/void score_edit(void)int n;page_title(tt - *修改成绩* -);if(n=student_search()!=-1&n!=33) printf(tt 语文:%d 数学:%d 英语:%dn,studentsn.chinese,studentsn.math,studentsn.english);printf(tt 请重新输入成绩:nntt 语文:);scanf(%d,&studentsn.chinese);printf(tt 数学:);scanf(%s,&studentsn.math);printf(tt 英语:)

25、;scanf(%d,&studentsn.english);/return_confirm();if(n=33)return_confirm();/*学生成绩排序函数*/void sort_it(char nn)int n,m,p,x,t32;for(n=0;n32;n+)switch(nn)/不同排序方式的选择结构case 1 : tn=studentsn.num;break;case 2 : tn=studentsn.chinese;break;case 3 : tn=studentsn.math;break;case 4 : tn=studentsn.english;break;case

26、 5 : tn=studentsn.chinese+studentsn.math+studentsn.english;break;case 6 : tn=(studentsn.chinese+studentsn.math+studentsn.english)/5;break;for(n=0;n32;n+)/对结构体的序号数进行排序x=0;p=-1;for(m=0;mx)x=tm;p=m;tp=-1;INDEXn=p; /*浏览学生成绩*/void score_browser(void)int n,x;char k;sort_it(1);/初始时按学号降序排序while(1)page_title

27、(tt - *浏览* -);printf(按数字键选择排序方式或按 0 返回n);printf(t学号-1| 姓名| 年龄| 语文-2| 数学-3| 英语-4| 总分-5| 平均分-6|n);/提醒排序输入的命令for(n=0;n32;n+)/循环打印学生成绩if(INDEXn!=-1)x=INDEXn;printf(%14d|%10s|,studentsx.num,studentsx.name);printf(%5d|%7d|,studentsx.age,studentsx.chinese);printf(%7d|%7d|,studentsx.math,studentsx.english);

28、printf(%7d|,studentsx.chinese+studentsx.math+studentsx.english);printf(%9d|n,(studentsx.chinese+studentsx.math+studentsx.english)/5);k=getch();if(k0) sort_it(k);else if(k=0) break;else continue; /数据储存函数void save(struct STUDENT *students)/将数据保存到文件int i;FILE *fp;fp=fopen(成绩统计表.txt,w);fprintf(fp,%32s, tt学生基本信息数据库文件已保存到成绩统计表.txt);getchar();getchar();/主函数void main(void)/生成操作选单 menu: page_title( - *操作选单* -); printf( * 请用数字键选择操作 * n); printf( *

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁