学生信息管理系统C语音课程设计

上传人:仙*** 文档编号:33887355 上传时间:2021-10-19 格式:DOC 页数:21 大小:108KB
返回 下载 相关 举报
学生信息管理系统C语音课程设计_第1页
第1页 / 共21页
学生信息管理系统C语音课程设计_第2页
第2页 / 共21页
学生信息管理系统C语音课程设计_第3页
第3页 / 共21页
点击查看更多>>
资源描述
C语言课程设计题目名称: 学生信息管理系统 姓 名 XXX 学 号 XXXXXXXX 专 业 网络工程 班 级 一班 指导教师 XXX 编写日期 2011/6/6 目录1、序言32、需求分析32.1.具体目标32.1.132.1.2.32.1.3.32.1.4.33、总体设计43.1.算法分析43.2.程序框图54、详细设计54.1.函数模块54.1.1.主界面函数54.1.2.输入函数64.1.3.查询函数74.1.4.修改信息函数94.1.5.增加信息函数114.1.6删除信息函数.134.1.7.输出信息函数144.1.8保存信息函数144、组员名单155、结论和心得156、致谢211、序言随着学校的规模不断过大,学生数量急剧增加,有关学生的各种信息量也成倍增加。面对庞大的信息量需要有学生信息管理系统来提高学生管理工作的效率。通过这样的系统可以做到信息的规范化管理、科学性统计和快速查询、修改、增加、删除等,从而减少管理方面的工作量。2、需求分析 本系统主要需要解决的任务是实现学生信息关系的系统化、规范化和自动化,其主要目的是计算学生各种信息进行日常管理,如查询、修改、增加删除学生信息等。在实现程序功能的同时应该做到界面简单易懂,容易操作,方便使用的要求。并且程序需要有一定的纠错能力。2.1.具体目标本系统主要应用于学生学籍管理、信息查询等部分,具有不同的操作功能。具体功能如下:2.1.1 有关学生信息的录入,学生信息包括输入学生的学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等(学生信息用文件保存)。 2.1.2. 学生信息的浏览功能。2.1.3. 学生信息的查询功能,其中实现按学号和姓名二种方式查询。2.1.4. 学生信息的修改功能,包括增加、删除等。3、总体设计3.1.算法分析首先,考虑信息的录入,一个学生包括这么多的属性,应该考虑定义一个结构体。其次,我们应该考虑数据的存储形式,在这里我们用一个数组。从文件中录入我们首先要定义一个文件指针,打开该文件后通过一个循环来读文件,将所有信息读出来后关闭文件。对于菜单的实现,首先用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。信息的浏览,我们只需要通过一个循环将结构体中所有元素输出就行了。信息的查询,我们选择用switch结构来解决用学号和姓名二种方式来查询的要求。等输入学号或者姓名的时候,通过字符串比较函数,如果存在,那么输出学生信息,否则提示错误并要求重新输入。信息的修改,输入要修改信息的学号。首先用字符串比较函数判断改学生信息是否存在,如果存在,同过switch语句来依次修改学生的各项信息。修改信息我们需要用字符串复制函数。增加新学生信息,输入要增加的学号。首先用字符串比较函数判断,如果输入的学号已经存在,则提示重新输入,否则依次输入各项信息。删除学生信息,通过比较找到要删除的学号,用后一个学生的信息直接赋值,后面的依次赋值给前一个学生的信息。3.2.程序框图 学生信息管理录入学生信息查询学生信息修改学生信息增加学生信息删除学生信息显示当前信息保存学生信息退出系统按学号按姓名4、详细设计4.1.函数模块4.1.1.主界面函数void menu() int num; printf( 简易学生通讯录系统nn); printf( -系统功能菜单-n); printf( *n); printf( * 1.读入学生信息 *n); printf( *2.查询学生信息 *n); printf( *3.修改学生信息 *n); printf( *4.增加学生信息 *n); printf( *5.按学号删除信息 *n); printf( *6.显示当前信息 *n); printf( *7.保存当前学生信息 *n); printf( *8.退出系统 *n); printf( *n); printf(请选择菜单编号:); scanf(%d,&num); switch(num) case 1:input();break; case 2:inquir();break; case 3:modify();break; case 4:increase();break; case 5:del();break; case 6:output();break; case 7:save();break; case 8:k=0;break; default:printf(请在1-8之间选择n); 说明:此函数的功能是输出主界面功能菜单,已供选择相应的模块进行操作。其中定义一个变量num,通过输入num的值来进入相应的功能,switch提供了不同选择的入口。在结束相应功能的操作后又返回主界面,并且对错误的输入有一定的纠错能力。4.1.2.输入函数void input() FILE *fp; int i=0; if (fp=fopen(student.dat,r)=NULL) printf(Open file studentdent.dat error! Strike any key to exit!); exit(0); while(fscanf(fp,%s %s%d%s %s %s %s %s,studenti.number,studenti.name,&studenti.age, studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.email)=8) i+; fclose(fp); n=i; printf(录入完毕!n);说明:此函数的功能是从文件中录入信息。首先定义了一个文件指针fp,用他来打开文件student.dat(事先已经储存),通过while循环录入信息,最后关闭文件。显示录入信息成功!4.1.3.查询函数void inquir()int i,j,item,flag; char s1LEN; printf(-n);printf(1.按学号查询n);printf(2.按姓名查询n);printf(3.退出本菜单n);printf(-n);while(1) printf(请选择子菜单编号:); scanf(%d,&item); flag=0; switch(item) case 1: printf(请输入要查询的学生的学号:n); scanf(%s,s1); for(i=0;in;i+) if(strcmp(studenti.number,s1)=0) flag=1; printf(该学生学号,姓名,年龄,性别,出生年月,地址,电话,E-email 分别为:n); printf(%s %s %d %s %s %s %s %sn,studenti.number,studenti.name,studenti.age, studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.email); if(flag=0) printf(该学号不存在!n); break; case 2: printf(请输入要查询的学生的姓名:n); scanf(%s,s1); for(i=0;in;i+) if(strcmp(studenti.name,s1)=0) flag=1; printf(该学生学号,姓名,年龄,性别,出生年月,地址,电话,E-email 分别为:n); printf(%s %s %d %s %s %s %s %sn,studenti.number,studenti.name,studenti.age, studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.email); if(flag=0) printf(该姓名不存在!n); break; case 3:return; default:printf(请在1-3之间选择n); 说明:首先定义一个变量,输入值通过switch来选择相应模块。用一个for循环和字符串比较函数来不断的把输入的数据和系统储存的信息比较,如果相同,则输出信息。否则提示信息不存在!4.1.4.修改信息函数void modify() int i,j,item,num; char sex13,s1LEN,s2LEN; printf(请输入要要修改的学生的学号:n); scanf(%s,s1); for(i=0;in;i+) if(strcmp(studenti.number,s1)=0) num=i;printf(-n);printf(1.修改姓名n);printf(2.修改年龄n);printf(3.修改性别n);printf(4.修改出生年月n);printf(5.修改地址n);printf(6.修改电话号码n);printf(7.修改E-email地址n);printf(8.退出本菜单n);printf(-n);while(1) printf(请选择子菜单编号:); scanf(%d,&item); switch(item) case 1: printf(请输入新的姓名:n); scanf(%s,s2); strcpy(studentnum.name,s2); break; case 2: printf(请输入新的年龄:n); scanf(%d,&studentnum.age);break; case 3: printf(请输入新的性别:n); scanf(%s,sex1); strcpy(studentnum.sex,sex1); break; case 4: printf(请输入新的出生年月:n); scanf(%s,s2); strcpy(studentnum.time,s2); break; case 5: printf(请输入新的地址:n); scanf(%s,s2); strcpy(studentnum.add,s2); break; case 6: printf(请输入新的电话号码:n); scanf(%s,s2); strcpy(studentnum.tel,s2); break; case 7: printf(请输入新的E-email地址:n); scanf(%s,s2); strcpy(studentnum.email,s2); break; case 8:return; default:printf(请在1-8之间选择n); 说明:首先输入要修改信息的学号,同样通过字符串比较函数来判断学号是否存在。如果存在则通过switch语句来选择需要修改的信息,修改通过字符串复制函数。修改结束后可以选择退出该模块,进入主界面。4.1.5.增加信息函数void increase() int i=n,j,flag; printf(请输入待增加的学生数:n); scanf(%d,&m); do flag=1; while(flag) flag=0; printf(请输入第 %d 个学生的学号:n,i+1); scanf(%s,studenti.number); for(j=0;ji;j+) if(strcmp(studenti.number,studentj.number)=0) printf(已有该学号,请检查后重新录入!n); flag=1; break; printf(请输入第 %d 个学生的姓名:n,i+1); scanf(%s,studenti.name); printf(请输入第 %d 个学生的年龄:n,i+1); scanf(%d,&studenti.age); printf(请输入第 %d 个学生的性别:n,i+1); scanf(%s,studenti.sex); printf(请输入第 %d 个学生的出生年月:(格式:年.月)n,i+1); scanf(%s,studenti.time); printf(请输入第 %d 个学生的地址:n,i+1); scanf(%s,studenti.add); printf(请输入第 %d 个学生的电话:n,i+1); scanf(%s,studenti.tel); printf(请输入第 %d 个学生的E-email:n,i+1); scanf(%s,studenti.email); if(flag=0) i+; while(in+m); n+=m; printf(录入完毕!nn);说明:首先判断学号是否存在,如果存在,则提示学号已经存在。否则通过循环依次输入学生的各种信息,输入结束后返回主界面。4.1.6删除信息函数.void del() int i,j,flag=0; char s1LEN+1; printf(请输入要删除学生的学号:n); scanf(%s,s1); for(i=0;in;i+) if(strcmp(studenti.number,s1)=0) flag=1; for(j=i;jn-1;j+) studentj=studentj+1; if(flag=0) printf(该学号不存在!n); if(flag=1) n-; printf(删除成功,显示结果请选择菜单6n); 说明:该函数的目的是为了删除学生信息,我们定义了四个变量,其中数组s1用来输入需要删除的学生学号。i为for的循环变量,用来遍历全部学生信息,通过strcmp函数来判断该学号是否存在。如果存在,将定义的变量flag赋值为1,同时将i后面的每一个学生信息都赋给前一个学生的信息,达到删除的效果。如果学号不存在,那么flag为0,这时系统则提示学号不存在。函数调用完后返回主界面,可以继续选用其他模块的功能。4.1.7.输出信息函数void output() int i; printf(所有学生的信息为:n); for(i=0;in;i+) printf(%s %s %d %s %s %s %s %sn,studenti.number,studenti.name,studenti.age, studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.email); 说明:此函数是为了输出所有的学生信息,要实现比较简单,只需直接通过一个循环将结构体中的元素遍历输出即可。输出后返回主界面。4.1.8保存信息函数void save() int i,j,k,flag=0; FILE *fp; fp=fopen(student.dat,w); for(i=0;in;i+) fprintf(fp,%s %s %d %s %s %s %s %sn,studenti.number,studenti.name,studenti.age, studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.email); fclose(fp);说明:定义该函数是为了保存信息至文件,首先必须定义一个文件指针,用指针打开函数打开一个已经存储好的文件,通过一个循环将n个学生的信息存进文件。最后关闭文件,以保证信息不会丢失。函数调用完毕后返回主界面,从而可以继续操作程序。4、组员名单XXX 201014160127 模块:删除学生信息、输出学生信息、将信息存入文件XXX 201014160125 模块:结构体定义、录入信息XXX 201014160103 模块:修改学生信息XXX 201014160119 模块:查询学生信息XXX 201014160140 模块:主界面、增加学生信息5、结论和心得XXX:在这次的C程序课程设计中我负责三个模块,分别是:删除学生信息,输出学生信息和将学生信息存入文件。我负责的是相对比较简单的模块,实现的时候不是很吃力。但还是存在很多的小问题,列如忘记分号啊、某些表达式位置不正确导致的逻辑错误等等。在这次设计中我体会到了写程序一定得细心,因为几乎全对还是等于错误,细节决定成败。另外也加强了组员中的友谊,有很多问题都是大家一起讨论解决的。我们讨论分配了各自负责的模块,在接口方面我们开始有一些分歧,但最后都达成了一致。我们每个人都在努力,当最后我们用文件包含语句将所有的模块包含起来运行成功的那一刻,我觉得我的付出得到了收获。当然这收获不仅仅是成功的完成了作业,更多是过程中的那种不懈努力的精神,组员间相互的帮助鼓舞,让我收益良多。当然也要感谢老师在设计中对我的帮助,给我的启发,谢谢你们!XXX:通过此次C语言程序设计实践,我实在是获益不浅!C语言是这个学期才开始学习的,有很多地方都没弄懂,所以一开始做题,也是有点模糊,在指导老师的指导下,我们慢慢的进入状态,我们做的是一个学生信息管理系统,内容包括很多。运用的函数也是非常的复杂,我们一组有五个人,我们分工合作,我们每个人各负责一块功能区域,经过几星期的努力,我们完成了大半个程序,但是总是有很多错误出现,有好多是些小问题,这都是我们粗心大意造成的,所以设计程序一定要仔细,不容一点的马虎。同时,也让我们知道了,合作的力量,如果是孤军奋战的话,我们也不能在规定时间内完成,当然,也多亏老师的指导。程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程算法。可得最后结论。在程序设计中,可认为也是一个社会,每个一同的社会成员都有不同的想法。程序设计学得的好坏要看你在社会中解决问题的能力的高低,所以不同的人编程的结果是不同的。在这个社会中,经验与想法最为重要。这次设计,让我掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验!XXX:这学期我们学的C语言,以前就听过这个名字,打开书一看简直一窍不通,学好这门科简直就是一个挑战,课前课后都要把书啃一遍,要不然上课就跟不上,终于学期快结束了,我们有一个课程设计,完成一个复杂的程序,我们的题目是做简易学生通讯录系统,难度不小啊。通过组员的分工合作。终于还是完成了设计。 首先感谢郭美老师给予的帮助。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。 做它,难就难在不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。 特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以一下一步就是开始正式的编程序了。不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法。 经过一波三折,终于开始正式编程。 编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。 在这次合作中我是负责“修改信息”这一模块的:(如下) void modify() /*修改信息*/int i,j,item,num; char sex13,s1LEN+1,s2LEN+1; /* 以姓名和学号最长长度+1为准 */ printf(请输入要要修改的学生的学号:n); scanf(%s,s1); for(i=0;i5的道理,即使这个过程我们遇到过很多困难,但是我们互相交流,到网上搜索资料,最终还是把困难一一解决了,这次我得到的最大收获就是,团队合作和体会到了编程的乐趣,只要我们以后还能坚持下去,我们一定可以编写出很优秀的程序的。陈赳赳:在这次的课程设计中我负责的是主界面跟修改菜单,在这之中我不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。课程设计是我们专业课程知识综合应用的实践训练,有时候课本上学习的知识不够编某个程序,就需要自己找资料。体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。在我们一组人的努力下课程设计终于完成的。在课程设计时有很多问题是我不能解决的,都要找同学一起想,让我认识到了团队的重要性。6、致谢感谢老师在百忙之中抽出宝贵的时间批阅。让我在此向你表示最诚挚的问候:老师,您辛苦了
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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