1、C语言课程设计题目名称: 学生信息管理系统 姓 名 XXX 学 号 XXXXXXXX 专 业 网络工程 班 级 一班 指导老师 XXX 编写日期 /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、需求分析 本系统关键需要处理任务是实现学生信息关系系统化、规范化和自动化,其关键目标是计算学生多种信息进行日常管理,如查询、修改、增加删除学生信息等。在实现程序功效同时应该做到界面简单易懂,轻易操作,方便使用要求。而且程序需要有一定纠错能力。2.1.具体目标本系统关键应用于学生学籍管理、信息查询等部分,含有不一样操作功效。具体功效以下:2.1.1 相关学生信息录入,
3、学生信息包含输入学生学号,姓名,年纪,性别,出生年月,地址,电话,E-mail等(学生信息用文件保留)。 2.1.2. 学生信息浏览功效。2.1.3. 学生信息查询功效,其中实现按学号和姓名二种方法查询。2.1.4. 学生信息修改功效,包含增加、删除等。3、总体设计3.1.算法分析首先,考虑信息录入,一个学生包含这么多属性,应该考虑定义一个结构体。其次,我们应该考虑数据存放形式,在这里我们用一个数组。从文件中录入我们首先要定义一个文件指针,打开该文件后经过一个循环来读文件,将全部信息读出来后关闭文件。对于菜单实现,首先用printf语句把程序功效列出来,然后等候用户输入而实施不一样函数,实施完
4、了一个功效后又回到菜单。信息浏览,我们只需要经过一个循环将结构体中全部元素输出就行了。信息查询,我们选择用switch结构来处理用学号和姓名二种方法来查询要求。等输入学号或姓名时候,经过字符串比较函数,假如存在,那么输出学生信息,不然提醒错误并要求重新输入。信息修改,输入要修改信息学号。首先用字符串比较函数判定改学生信息是否存在,假如存在,同过switch语句来依次修改学生各项信息。修改信息我们需要用字符串复制函数。增加新学生信息,输入要增加学号。首先用字符串比较函数判定,假如输入学号已经存在,则提醒重新输入,不然依次输入各项信息。删除学生信息,经过比较找到要删除学号,用后一个学生信息直接赋值
5、,后面依次赋值给前一个学生信息。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);
6、 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;bre
7、ak; 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(fs
8、canf(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
9、,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-
10、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
11、(该学生学号,姓名,年纪,性别,出生年月,地址,电话,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来选择对应模块。用
12、一个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.修
13、改地址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(%
14、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地址
15、: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
16、; 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); sc
17、anf(%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
18、);说明:首先判定学号是否存在,假如存在,则提醒学号已经存在。不然经过循环依次输入学生多种信息,输入结束后返回主界面。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(删除成功,显示
19、结果请选择菜单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 %
20、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 %
21、s %sn,studenti.number,studenti.name,studenti.age, studenti.sex,studenti.time,studenti.add,studenti.tel,studenti.email); fclose(fp);说明:定义该函数是为了保留信息至文件,首先必需定义一个文件指针,用指针打开函数打开一个已经存放好文件,经过一个循环将n个学生信息存进文件。最终关闭文件,以确保信息不会丢失。函数调用完成后返回主界面,从而能够继续操作程序。4、组员名单XXX 14160127 模块:删除学生信息、输出学生信息、将信息存入文件XXX 14160125 模块:
22、结构体定义、录入信息XXX 14160103 模块:修改学生信息XXX 14160119 模块:查询学生信息XXX 14160140 模块:主界面、增加学生信息5、结论和心得XXX:在这次C程序课程设计中我负责三个模块,分别是:删除学生信息,输出学生信息和将学生信息存入文件。我负责是相对比较简单模块,实现时候不是很吃力。但还是存在很多小问题,列如忘记分号啊、一些表示式位置不正确造成逻辑错误等等。在这次设计中我体会到了写程序一定得细心,因为几乎全对还是等于错误,细节决定成败。另外也加强了组员中友谊,有很多问题全部是大家一起讨论处理。我们讨论分配了各自负责模块,在接口方面我们开始有部分分歧,但最终
23、全部达成了一致。我们每个人全部在努力,当最终我们用文件包含语句将全部模块包含起来运行成功那一刻,我认为我付出得到了收获。当然这收获不仅仅是成功完成了作业,更多是过程中那种不懈努力精神,组员间相互帮助鼓舞,让我收益良多。当然也要感谢老师在设计中对我帮助,给我启发,谢谢你们!XXX:经过此次C语言程序设计实践,我实在是获益不浅!C语言是这个学期才开始学习,有很多地方全部没弄懂,所以一开始做题,也是有点模糊,在指导老师指导下,我们慢慢进入状态,我们做是一个学生信息管理系统,内容包含很多。利用函数也是很复杂,我们一组有五个人,我们分工合作,我们每个人各负责一块功效区域,经过几星期努力,我们完成了大半个
24、程序,不过总是有很多错误出现,有好多是些小问题,这全部是我们粗心大意造成,所以设计程序一定要仔细,不容一点马虎。同时,也让我们知道了,合作力量,假如是孤军奋战话,我们也不能在要求时间内完成,当然,也多亏老师指导。程序设计过程有如处理一实际问题,从处理实际问题角度,我们能够这么来看:首先要了解这个问题基础要求,即输入、输出、完成从输入到输出要求是什么;其次,从问题要害入手,以前到后处理问题每个方面,即从输入开始入手,着重考虑怎样从输入导出输出,在这个过程中,可确定所需变量、数组、函数,然后确定处理过程算法。可得最终结论。在程序设计中,可认为也是一个社会,每个一同社会组员全部有不一样想法。程序设计
25、学得好坏要看你在社会中处理问题能力高低,所以不一样人编程结果是不一样。在这个社会中,经验和想法最为关键。这次设计,让我掌握了C语言,而且还得到了用C语言处理实际问题宝贵经验!XXX:这学期我们学C语言,以前就听过这个名字,打开书一看简直一窍不通,学好这门科简直就是一个挑战,课前课后全部要把书啃一遍,要不然上课就跟不上,最终学期快结束了,我们有一个课程设计,完成一个复杂程序,我们题目是做简易学生通讯录系统,难度不小啊。经过组员分工合作。最终还是完成了设计。 首先感谢郭美老师给帮助。经过这次课程设计使我们知道了理论和实际相结合是很关键,只有理论知识是远远不够,只有把所学理论知识和实践相结合起来,从
26、理论中得出结论,才能真正为社会服务,从而提升自己实际动手能力和独立思索能力。在设计过程中碰到问题,能够说得是困难重重,这毕竟第一次做,难免会碰到过多种多样问题,同时在设计过程中发觉了自己不足之处,对部分前面学过知识了解得不够深刻,掌握得不够牢靠,比如说结构体,指针,链表经过这次课程设计以后,我们把前面所学过知识又重新温故了一遍。 做它,难就难在不知从何开始,这个时候才知道上课老师们不厌其烦教导是多么宝贵,这个时候才后悔上课时候没有认真听讲。可是现在一切全部晚了,还好时间还算是充裕,只好拿出书本重新复习一下。 尤其是结构体,指针部分,几乎是一片空白。不过经过几天努力,大致上把书本上知识点看了一遍
27、,知识点也全部基础是撑握了,所以一下一步就是开始正式编程序了。不过毕竟是个新手,还是不知怎样下手,于是就在网上下了一篇类似程序,经过仔细研究,最终读懂了C语言编程基础过程和方法。 经过一波三折,最终开始正式编程。 编程是一件很枯燥很无聊事情,不过出于完成作业,得到学分压力,还必需强破自己坚持下去,根据老师所说模块化思想,分部分进行编写。而且编程是一件高精度、模范化事情,稍有疏乎全部会影响全局,也可能因为某一处小错误而造成整个程序无法运行。所以认真仔细就是很关键了。 在这次合作中我是负责“修改信息”这一模块:(以下) void modify() /*修改信息*/int i,j,item,num;
28、 char sex13,s1LEN+1,s2LEN+1; /* 以姓名和学号最长长度+1为准 */ printf(请输入要要修改学生学号:n); scanf(%s,s1); for(i=0;i5道理,即使这个过程我们碰到过很多困难,不过我们相互交流,到网上搜索资料,最终还是把困难一一处理了,这次我得到最大收获就是,团体合作和体会到了编程乐趣,只要我们以后还能坚持下去,我们一定能够编写出很优异程序。陈赳赳:在这次课程设计中我负责是主界面跟修改菜单,在这之中我不仅检验了我所学习知识,也培养了我怎样去把握一件事情,怎样去做一件事情,又怎样完成一件事情。课程设计是我们专业课程知识综合应用实践训练,有时候书本上学习知识不够编某个程序,就需要自己找资料。体会了学以致用、突出自己劳动结果喜悦心情,从中发觉自己平时学习不足和微弱步骤,从而加以填补。在我们一组人努力下课程设计最终完成。在课程设计时有很多问题是我不能处理,全部要找同学一起想,让我认识到了团体关键性。6、致谢感谢老师在百忙之中抽出宝贵时间批阅。让我在此向你表示最真挚问候:老师,您辛劳了