1、 word文档 可自由复制编辑 管 理 系 统 设 计word文档 可自由复制编辑 学生信息管理系统 目录1. 课程设计目的和要求.12.课程设计任务内容.23.设计说明:包括函数功能说明,参数说明,函数流程图,编码及调试.34软件测试方案.125.软件使用说明.166.课程设计心得与体会.17附录1:参考文献.18附录2:程序清单(带有较详细的注释).18word文档 可自由复制编辑一、 课程设计目的和要求1. 设计目的: 通过对高级语言程序设计课程设计的学习,来验证自身的学习效果,同时希望利用所学的基本知识和技能,进行简单的C语言程序设计。希望通过项目实践熟悉巩固所学知识,以使自己熟练掌握
2、高级语言程序设计,为日后学习计算机科学技术的专业知识能有进一步深入了解,奠定基础。用所学的C+语言知识及其编程方法包括类和对象、继承不多态等面向对象的基本思想和方法以及文件流的基本操作等内容。通过布置具有一定难度的实际程序设计项目要求学生独立完成所布置项目。在分析设计过程中要求学生养成良好的编程习惯学会分析解决简单的实际问题学会C+编程环境VC+的实际调试技巧和方法要求学生在教师的指导下逐步完成应用程序的分析不设计过程。 2. 题目要求:建立一个学生信息管理系统,能实现以下功能:(1)学生信息初始化: 创建学生信息文件,包括学号、姓名、年龄、性别、出生年月、宿舍、手机、Email、课程设计合作
3、者、题目等。(2)学生信息操作:1) 安全模块2) 信息录入3) 信息浏览4) 学号查询5) 姓名查询6) 信息删除7) 信息修改8) 保存文件9) 退出系统10) 系统菜单形式显示二、课程设计任务内容需求分析:1.系统功能需求:系统功能需求系统功能需求系统功能需求,学生信息管理系统在管理学生中占有重要的地位,它关系着学生信息的基本信息,其中包括学生信息,班级信息、课程信息等。对于学校来讲,学生信息管理系统是不可缺少的组成部分,它有效地管理学生档案,对学校学生的变动和统计起着重要的管理作用。2.基本信息管理:学生信息管理系统包括:信息输入模块完成学生信息的输入功能,输入信息包括学生号、姓名、性
4、别、出生年月、住址、电话、E-mail等;信息浏览模块完成已录入学生信息的显示;信息查询模块完成学生信息的查询,查询时对应有按姓名查询和按学号查询两种方式;信息修改模块完成学生信息的修改功能;信息删除模块完成学生信息的删除功能;安全模块 是进入系统需要用户名字 和密码;菜单选择模块完成用户命令的接收,此模块也是学生信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能;3.系统性能需求: 为了保证系统能够长期、安全、稳定、可靠、高效的运行,学生信息管理系统应该满足以下的性能需求: 1准确性和及时 2.易用性和易维护性4. 系统数据要求 学生信息管理系统
5、的数据需求包括如下几点: 1)数据录入和处理的准确性 数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。数据的输入来源是手工输入。手工输入要通过系统界面上的安排系统具有容错性,从而降低出错概率。 2)数据的一致性与完整性 学生信息管理系统对数据的处理有很高的要求,因为对学生信息的处理非常频繁,所以要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。 对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。 3)数据的独立性 学生信息管理的管理对学校来说是非常重要的
6、一个部分,不可能让每一个人都对其进行操作,应该有特定的人员对学生信息管理系统进行管理,对系统进行独立三、 详细设计说明: (包括函数功能说明,参数说明,函数流程图,编码及调试)1. 总体模块功能流程图:程序流程系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下1. 总流程图2. 模块功能函数 1安全模块 printf( 请输入用户名,n);scanf(%s,x);if(strcmp(x,y)=0) printf( 请输入密码,n); scanf(%d,&ma); while (ma=123456)通
7、过比较语句 来判定输入人名和密码的正确 如果正确进入菜单模块;2菜单模块通过while语句给出信息提示;清屏;绘制菜单(包含输入,浏览,查询,修改,删除,排序,保存,退出);提示菜单选择并读入到变量;根据读入变量的值调用不同的模块函数;3信息录入模块打开文件While() 清屏; 按照提示输入各种信息; While 显示各种信息;通过选择1.确认并继续 2.重新填写 3.放弃并返回 4.确认并返回 选择四种功能;4信息浏览模块通过设计一个模块,来实现学生信息的显示。以便于浏览学生的信息。打开文件While() 清屏; 用for语句依次按照顺序输出学生信息 通过选择可以翻页 1.上一页 2.下一
8、页 0.退出5信息查询 通过设计一个模块,这个模块可以按学生的学号、姓名来查询学生所有的信息,并显示学生的所有信息,以便查询者阅读。While() 通过菜单式的选择 是学号查询 还是姓名 printf(*学生信息管理系统*);printf(n-检 索-);printf(n您想要:);printf(n 1.按学号检索);printf(n 2.按姓名检索);printf(n 3.返回主菜单);printf(n*n);如果选择学号进入学号模块通过输入学号 If( 学号存在继续) 输出学生信息 Else 输出无此学生如果选择姓名进入姓名模块If(根据比较姓名判断学生是否存在) 输出学生信息 Else
9、输出无此学生6删除模块通过设计一个模块,当输入一个学生的学号或者姓名的时候,可以通过这个模块,将输入学号或者姓名的学生的所有信息从数据库中删除出去。以后,这个学生的信息将不再会出现再数据库中。 while( 继续删除 ) 提示并读入待删除的学生的学生号;显示要删除的信息删除成功7信息修改模块通过设计一个模块,当某个人的信息发生变化的时候,可以通过修改模块来进行修改。修改模块时一具有多级子菜单的摸块。使用十分的方便、灵活。输入要修改学生信息的学号:If (判断是否有此学生) 菜单形式显示要修改的项目printf(n1.姓名 2.年龄 3.性别 4.出生年月 5.地址 6.电话 7.E-mail
10、n); Swich() 选择要修改的项目进行修改8打开文件模块 void fileopen()FILE *fp;int n;if(fp=fopen(data,r+)=NULL)fp=fopen(data,w+);for(n=0;n100;n+)fread(&stun,sizeof(struct student),1,fp);fread(&stunum,4,1,fp);fclose(fp);9保存文件模块 void filesave()int n;FILE *fp;fp=fopen(data,r+);for(n=0;n100;n+)fwrite(&stun,sizeof(struct stude
11、nt),1,fp);fwrite(&stunum,4,1,fp);fclose(fp); printf(保存成功!press Enter to continue.);getch();10退出模块 case 8:ma=0;break; 用的是跳出while语句 回到安全模块学生基本信息结构体是struct studentint id;char name30;int age;char sex6;char birthday12;char add80;char tel15;char email25;四、 软件测试方案1. 安全模块:通过输入正确的用户名才能进入此系统2. 菜单显示:进入系统后便来到菜单
12、界面 通过选择进入不同的模块3. 录入函数;通过选择菜单1进入录入模块 下面是录入信息的界面4浏览模块如果选择2 可以进入浏览模块 包括学生的课中基本信息5 学号查找模块按学号查找6.按姓名查找7修改模块修改模块 可以通过选择分别修改姓名 年龄 性别 等信息依次修改修改后如下:8. 保存模块9删除模块10退出模块回到安全模块五、 软件使用说明1. 设计目标 开发这个系统的目的就是使学生在毕业设计选题环节中实现选题的规范化、智能化、高效化、简便化;同时极大得便捷学生和指导老师,减轻学生和老师的劳动强度,提高工作效率和管理水平。 本设计的任务是编程实现“学生信息管理系统”,主要包括用户登录(该系统
13、中涉及到的用户包括学生基本信息,输入自己的账号和密码登录系统后,进入不同的操作界面)、学生基本信息管理(学生的基本信息进行管理,可以方便灵活的进行添加、删除、修改和查询的功能)、首先教师可以通过成绩录入对成绩进行添加和维护。然后学生便可以通过各种查询方式显示出基本信息)。2 . 开发和运行环境选择 开发工具: Visual C+ 6.0运行环境:windows XP及更高的操作系统。 3. 需求描述 主要包括用户登录,学生基本信息管理,学生的基本信息进行管理,可以方便灵活的进行添加、删除、修改和查询的功能。六 课程设计心得与体会 这次的课程设计实验是对我们进入大学以来学习C语言结果的一次大考验
14、。自己动手,发现问题和解决问题。并发现了许多自己的不足,平时没掌握的知识在实践中暴漏,经过不断的思考,查阅书籍和上网查资料及上机运行,解决了大部分问题,还稍微有些小问题。但是,我相信在今的学习中,一定能把它解决好。当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 我不仅巩固C语言程序设计课程学习的内容,掌握设计的基本方法,强化上机动手能力,还进一步掌握以下了知识:数据类型、分支控制、循环控制、函数的定义及调用、结构体及数组、指针、文件操作、编译预处理等;通过课程
15、设计,掌握了程序的局部测试、调试方法,建立程序系统调试、测试的基本概念和思想,学会较大程序的系统测试和调试方法。 当我选择学生通讯录管理系统时,首先系统分析主要思路及框架,与同学讨论,联系所学知识,尽管一些文件要同组帮助找,也还有一些循环语句要具体分析,了解其运行路线,尤其是for,while,if等的使用。我知道书上和老师讲的有限,故上网搜也是一种利用资源的表现。在编程中,特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以下一步就是开始正式的编程序了。当读懂了C语言编程的基本过程和方法。 经过一波三折,终于开始正式编程。
16、 团队精神不可少,分工合作也是必须的,身为组长就要以身作则,带领好小组,做好各项工作。在开始,对本组人员进行整理,分析其特点,再分配任务,然后进行综合应用,最后对所需资料及要编的程序进行整理得出最后程序。 通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 附录1:参考文献1. 廖雷,C 语言程序设计基础实验教程,高等教学出版社,2004。2. 谭浩强,C 语言设计,北京:清华大学出版社,2005.3 徐连信,C语言程序设计,清华大学出版社,2
17、0054 杨涛C程序设计语言北京:机械工业出版社,20045. 网络百度文库资料 6. 豆丁网 附录2:程序代码#include #include #include #include int stunum=0; struct student / 结构体 int id; char name30; int age; char sex6; char birthday12; char add80; char tel15; char email25; int math; int english; int sum; stu100 ; void check() /查询函数 void jsid(); void
18、 jsname(); int a; char ch; while (a) system(cls); printf(*学生信息管理系统*); printf(n-检 索-); printf(n您想要:); printf(n 1.按学号检索); printf(n 2.按姓名检索); printf(n 3.返回主菜单); printf(n*n); ch=getchar(); switch(ch) case 1:jsid();break; case 2:jsname();break; case 3:a=0;break; void fileopen() /打开文件 FILE *fp; int n; if(
19、fp=fopen(data,r+)=NULL) fp=fopen(data,w+); for(n=0;n100;n+) fread(&stun,sizeof(struct student),1,fp); fread(&stunum,4,1,fp); fclose(fp); void filesave() /保存文件 int n; FILE *fp; fp=fopen(data,r+); for(n=0;n100;n+) fwrite(&stun,sizeof(struct student),1,fp); fwrite(&stunum,4,1,fp); fclose(fp); printf(保存
20、成功!press Enter to continue.); getch(); void editname(int n) /按照名字修改 printf(n新姓名:); scanf(%s,stun.name); void editage(int n) /修改年龄函数 printf(n新年龄:); scanf(%d,&stun.age); void editsex(int n) / 修改性别函数 printf(n新性别:); scanf(%s,stun.sex); void editbir(int n) /修改生日 printf(n新出生年月); scanf(%s,stun.birthday); v
21、oid editadd(int n) printf(n新地址:); /修改地址 scanf(%s,stun.add); void edittel(int n) /修改电话 printf(n新电话:); scanf(%s,stun.tel); void editemail(int n) printf(n新E-mail:); /修改邮箱 scanf(%s,stun.email); void editmath(int n) /修改数学成绩 printf(n新数学:); scanf(%d,&stun.math); stun.sum=stun.math+stun.english; void editen
22、glish(int n) / 修改经与成绩 printf(n新英语:); scanf(%d,&stun.english); stun.sum=stun.math+stun.english; void last(int n) if(n=stunum) system(cls); printf(*学生信息管理系统*); printf(n-检 索-); printf(n已检索到末尾。); printf(nPress any key to continue.); printf(n*n); void edit() /修改函数 char ch ; int a=1,b; int n; while(a) sys
23、tem(cls); printf(n请输入你想修改的人的学号:n); scanf(%d,&n); if(n=stunum) n=n-; printf(学号 姓 名 年龄 性别 出生年月n); printf(%4d ,stun.id); printf(%12s ,stun.name); printf(%4d ,stun.age); printf(%4s ,stun.sex); printf(%8s n,stun.birthday); printf(nnn学号 电 话 E-mail 地址n); printf(%4d ,stun.id); printf(%15s ,stun.tel); printf
24、(%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) case 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:
25、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; case y:b=0;a=0;break; case N:b=0;break; case n:b=0;break; void delect() /删除函数 int n, a; system(cls); printf(n请输入想要删除人的学
26、号:n); scanf(%d,&n); n=n-; for(a=n;a=stunum;a+) strcpy(stua.name,stua+1.name); stua.age=stua+1.age; strcpy(stua.sex,stua+1.sex); strcpy(stua.birthday,stua+1.birthday); strcpy(stua.add,stua+1.add); strcpy(stua.tel,stua+1.tel); strcpy(stua.email,stua+1.email); stua.math=stua+1.math; stua.english=stua+1
27、.english; stua.sum=stua+1.sum; stunum-; printf(删除成功!press Enter to continue.); void jsid() /按照学号查询 int n,i=0; system(cls); printf(*学生信息管理系统*); printf(n-检 索-); printf(n请输入想要检索的学号:); scanf(%d,&n); if(n=stunum) n=n-; printf(学号 姓 名 年龄 性别 出生年月n); printf(%4d ,stun.id); printf(%12s ,stun.name); printf(%4d
28、,stun.age); printf(%4s ,stun.sex); printf(%8s n,stun.birthday); printf(nnn学号 电 话 E-mail 地址n); printf(%4d ,stun.id); printf(%15s ,stun.tel); printf(%15s ,stun.email); printf(%sn, stun.add); if(i=0) printf(nError:无此学生。); printf(n*n); getch(); else system(cls); last(n); getch(); void jsname() /按照姓名查询 i
29、nt n,i=0; char m30; system(cls); printf(*学生信息管理系统*); printf(n-检 索-); printf(n请输入想要检索的姓名:); scanf(%s,m); for(n=0;nstunum;n+) if(strcmp(m,stun.name)=0) system(cls); printf(学号 姓 名 年龄 性别 出生年月n); printf(%4d ,stun.id); printf(%8s ,stun.name); printf(%4d ,stun.age); printf(%4s ,stun.sex); printf(%8s n,stun.birthday); printf(nnn