1、 专业班级:信管 112001学生学号:201120020128学生姓名:朱志喆指导老师:蔡江辉2012 年 12 月 28 日管理系统设 计学生信息管理系统目录1.课程设计目的和要求.12.课程设计任务内容23.设计说明:包括函数功能说明,参数说明,函数流程图,编码及调试.34 软件测试方案.125.软件使用说明.166.课程设计心得与体会.17附录 1:参考文献.18附录 2:程序清单(带有较详细的注释).1801、课程设计目的和要求1.设计目的:通过对高级语言程序设计课程设计的学习,来验证自身的学习效果,同时希望利用所学的基本知识和技能,进行简单的 C 语言程序设计。希望通过项目实践熟悉
2、巩固所学知识,以使自己熟练掌握高级语言程序设计,为日后学习计算机科学技术的专业知识能有进一步深入了解,奠定基础。用所学的 C+语言知识及其编程方法 包括类和对象、继承不多态等面向对象的基本思想和方法以及文件流的基本操作等内容。通过布置具有一定难度的实际程序设计项目 要求学生独立完成所布置项目。在分析设计过程中 要求学生养成良好的编程习惯 学会分析解决简单的实际问题 学会 C+编程环境 VC+ 的实际调试技巧和方法 要求学生在教师的指导下逐步完成应用程序的分析不设计过程。 2.题目要求:建立一个学生信息管理系统,能实现以下功能:(1)学生信息初始化: 创建学生信息文件,包括学号、姓名、年龄、性别
3、、出生年月、宿舍、手机、Email、课程设计合作者、题目等。(2)学生信息操作:1) 安全模块2) 信息录入3) 信息浏览4) 学号查询5) 姓名查询6) 信息删除7) 信息修改8) 保存文件9) 退出系统10) 系统菜单形式显示1二、课程设计任务内容需求分析:1.系统功能需求:系统功能需求系统功能需求系统功能需求,学生信息管理系统在管理学生中占有重要的地位,它关系着学生信息的基本信息,其中包括学生信息,班级信息、课程信息等。对于学校来讲,学生信息管理系统是不可缺少的组成部分,它有效地管理学生档案,对学校学生的变动和统计起着重要的管理作用。2.基本信息管理:学生信息管理系统包括:信息输入模块完
4、成学生信息的输入功能,输入信息包括学生号、姓名、性别、出生年月、住址、电话、E-mail 等;信息浏览模块完成已录入学生信息的显示;信息查询模块完成学生信息的查询,查询时对应有按姓名查询和按学号查询两种方式;信息修改模块完成学生信息的修改功能;信息删除模块完成学生信息的删除功能;安全模块 是进入系统需要用户名字 和密码;菜单选择模块完成用户命令的接收,此模块也是学生信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能;3.系统性能需求: 为了保证系统能够长期、安全、稳定、可靠、高效的运行,学生信息管理系统应该满足以下的性能需求: 1准确性和及时 2.
5、易用性和易维护性4.系统数据要求学生信息管理系统的数据需求包括如下几点: 1)数据录入和处理的准确性 数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。数2据的输入来源是手工输入。手工输入要通过系统界面上的安排系统具有容错性,从而降低出错概率。2)数据的一致性与完整性 学生信息管理系统对数据的处理有很高的要求,因为对学生信息的处理非常频繁,所以要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。3)数据的独立
6、性 学生信息管理的管理对学校来说是非常重要的一个部分,不可能让每一个人都对其进行操作,应该有特定的人员对学生信息管理系统进行管理,对系统进行独立3、详细设计说明: (包括函数功能说明,参数说明,函数流程图,编码及调试)1.总体模块功能流程图:程序流程系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下1.总流程图3开始用户登录菜单录入信息 浏览信息 查询信息 修改信息 删除信息保存信息结束4开始输入学生学号 、 姓名该信息是否存在添加到文件添加错误结束录入流程图YN5开始输入学生学号 、 姓名 、 手
7、机号是否存在显示信息结束查询流程图NY62.模块功能函数1 安全模块printf(“ 请输入用户名,n“);scanf(“%s“,x);if(strcmp(x,y)=0) printf(“ 请输入密码,n“);scanf(“%d“,while (ma=123456)通过比较语句 来判定输入人名和密码的正确 如果正确进入菜单模块;2 菜单模块通过 while 语句给出信息提示;清屏;绘制菜单(包含输入,浏览,查询,修改,删除,排序,保存,退出);提示菜单选择并读入到变量;根据读入变量的值调用不同的模块函数;3 信息录入模块打开文件While() 清屏;按照提示输入各种信息;While7显示各种信
8、息;通过选择 1.确认并继续 2.重新填写 3.放弃并返回 4.确认并返回 选择四种功能;4 信息浏览模块通过设计一个模块,来实现学生信息的显示。以便于浏览学生的信息。打开文件While() 清屏;用 for 语句依次按照顺序输出学生信息通过选择可以翻页 1.上一页 2.下一页 0.退出5 信息查询 通过设计一个模块,这个模块可以按学生的学号、姓名来查询学生所有的信息,并显示学生的所有信息,以便查询者阅读。While() 通过菜单式的选择 是学号查询 还是姓名printf(“*学生信息管理系统*“);printf(“n-检 索-“);printf(“n 您想要:“);printf(“n 1.按
9、学号检索“);printf(“n 2.按姓名检索“);printf(“n 3.返回主菜单“);8printf(“n*n“);如果选择学号进入学号模块通过输入学号 If( 学号存在继续)输出学生信息Else 输出无此学生如果选择姓名进入姓名模块If(根据比较姓名判断学生是否存在)输出学生信息Else 输出无此学生6 删除模块通过设计一个模块,当输入一个学生的学号或者姓名的时候,可以通过这个模块,将输入学号或者姓名的学生的所有信息从数据库中删除出去。以后,这个学生的信息将不再会出现再数据库中。while( 继续删除 )提示并读入待删除的学生的学生号;显示要删除的信息删除成功97 信息修改模块通过设
10、计一个模块,当某个人的信息发生变化的时候,可以通过修改模块来进行修改。修改模块时一具有多级子菜单的摸块。使用十分的方便、灵活。输入要修改学生信息的学号:If (判断是否有此学生) 菜单形式显示要修改的项目printf(“n1.姓名 2.年龄 3.性别 4.出生年月 5.地址 6.电话 7.E-mail n“);Swich() 选择要修改的项目进行修改8 打开文件模块void fileopen()FILE *fp;int n;if(fp=fopen(“data“,“r+“)=NULL)fp=fopen(“data“,“w+“);for(n=0;n#include#include#includei
11、nt stunum=0;struct student / 结构体int id;char name30;int age;char sex6;char birthday12;char add80;char tel15;18char email25;int math;int english;int sum;stu100 ;void check() /查询函数void jsid();void jsname();int a;char ch;while (a)system(“cls“);printf(“*学生信息管理系统*“);printf(“n-检 索-“);printf(“n 您想要:“);print
12、f(“n 1.按学号检索“);printf(“n 2.按姓名检索“);printf(“n 3.返回主菜单“);printf(“n*n“);19ch=getchar();switch(ch)case 1:jsid();break;case 2:jsname();break;case 3:a=0;break;void fileopen() /打开文件FILE *fp;int n;if(fp=fopen(“data“,“r+“)=NULL)fp=fopen(“data“,“w+“);for(n=0;n100;n+)fread(fread(fclose(fp);20void filesave() /保
13、存文件int n;FILE *fp;fp=fopen(“data“,“r+“);for(n=0;n100;n+)fwrite(fwrite(fclose(fp);printf(“保存成功!press Enter to continue“);getch();void editname(int n) /按照名字修改printf(“n 新姓名:“);scanf(“%s“,stun.name);void editage(int n) /修改年龄函数printf(“n 新年龄:“);21scanf(“%d“,void editsex(int n) / 修改性别函数printf(“n 新性别:“);sca
14、nf(“%s“,stun.sex);void editbir(int n) /修改生日printf(“n 新出生年月“);scanf(“%s“,stun.birthday);void editadd(int n)printf(“n 新地址:“); /修改地址scanf(“%s“,stun.add);void edittel(int n) /修改电话22printf(“n 新电话:“); scanf(“%s“,stun.tel);void editemail(int n)printf(“n 新 E-mail:“); /修改邮箱scanf(“%s“,stun.email);void editmat
15、h(int n) /修改数学成绩 printf(“n 新数学:“);scanf(“%d“,stun.sum=stun.math+stun.english;void editenglish(int n) / 修改经与成绩printf(“n 新英语:“); scanf(“%d“,stun.sum=stun.math+stun.english;23void last(int n)if(n=stunum)system(“cls“); printf(“*学生信息管理系统*“);printf(“n-检 索-“);printf(“n 已检索到末尾。“);printf(“nPress any key to c
16、ontinue“);printf(“n*n“);void edit() /修改函数char ch ;int a=1,b;int n;while(a) system(“cls“);printf(“n 请输入你想修改的人的学号:n“);scanf(“%d“,if(n=stunum)24n=n-;printf(“学号 姓 名 年龄 性别 出生年月n“);printf(“%4d “,stun.id);printf(“%12s “,stun.name);printf(“%4d “,stun.age);printf(“%4s “,stun.sex);printf(“%8s n“,stun.birthday
17、);printf(“nnn 学号 电 话 E-mail 地址n“);printf(“%4d “,stun.id);printf(“%15s “,stun.tel);printf(“%15s “,stun.email);printf(“%sn“, stun.add);printf(“n 请输入你想修改的内容:“);printf(“n1.姓名 2.年龄 3.性别 4.出生年月 5.地址 6.电话 7.E-mail n“);printf(“n*n“);getchar();ch=getchar();switch(ch)25case 1:editname(n);break;case 2:editage(n);break;case 3:editsex(n);break;case 4:editbir(n);break;case 5:editadd(n);break;case 6:edittel(n);break;case 7:editemail(n);break;case 8:editmath(n);break;case 9:editenglish(n);break;b=1;while (b)printf(“n 确认吗?(y/n)“);ch=getchar();switch(ch)case Y:b=0;a=0;break;