




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西安邺雷擘院实验题目学生信息管理系统一、实验目的:(1)本学期我们学习了 C语言,由于初接触,学习有一定困难;于是学校给我们提供 一次巩固提高的机会课程设计。该可程设计要求学生既动手又动脑,自学,查 资料,独立实践。将本学期课本上的理论知识和实际有机的结合起来,锻炼学生 实际分析问题和解决问题的能力,提高学生适应实际、实践编程的能力,使对C 语言系统编程有一个大致的了解。(2)C语言的实践。掌握C语言函数的定义方法,函数的声明及函数的调用过程。掌握 结构体类型变量的定义和使用,综合应用C语言的知识,实现一个完整的系统, 提高编程能力,体会软件程序的开发过程。二、实验内容:(1)根据所学知识,运
2、用结构体数组编辑一个简单的学生信息管理系统,使之能够完成对学生信息的天价查找,删除,更改,管理等操作,并对文件进行保存和读取。(2)执行编译操作,并根据提示调试此程序,排除所有的错误和警告。直到编译成功 为止。(3)执行运行操作,逐一对每个模块进行调试。直到全部程序运行成功为止。(4)请老师检查,向老师演练此程序,并能回答老师提出的相关问题。三、需求分析:(1)根据学生信息管理的需要,建立一个“学生信息管理系统”,系统具有对学生信 息的添加,查找,删除,更改的管理操作等基本功能;以方便对学生的各项管理操 作。每一条记录包括一个学生的学号,姓名,性别,年龄,住址,成绩.系统的各 个功能模块都用函
3、数的形式来实现;可以将学生信息保存在文件中,并从文件中 读取出来。本程序是由C语言的基本单位一函数来设计实现与其功能的多次使用函数 调用以及函数的嵌套调用。本程序分为8个模块,可以处理多个学生信息的输入、 添加、删除,修改等问题。本程序的使用特别方便,每做完一个模块,下面都有 提示信息。使用环境为Win-Tco(2)创建该学生信息管理系统目的就是能够对学生基本信息进行创建、追加、查询、 修改等功能,这样可以简化许多人工做起来很复杂的问题。(3)该学生基本信息管理系统是在WIN-TC中文简体环境下运行。该系统要测试的数据如下:输入模块:(输入3个学生信息)序号:001姓名:张三性别:男年龄:20
4、成绩:90序号:002姓名:李斯性别:男年龄:19成绩:87序号:003添加模块:姓名:王美(再加1个信息)性别:女年龄:20成绩:82序号:004姓名:赵灵性别:女年龄:19成绩:89查询模块:(查询成绩的基本信息) 分:按学号查询和按成绩查询四、概要设计(1)主函数主要模块结构图:土保存信息J_函读取信息A输出信息插入LJ尸、数A更新信息删除LJ广统计信息修改LJA排序J退出程序输入模块(2)模块功能详细说明:A、创建模块:此模块可以连续输入若干个学生的资料,若学生数少于该数,则可以在输入 学号处输入e便可退出此模块,并把输入的信息保存到c:stud文件中。B、追加模块:此模块中先打开c:
5、stud统计文件中的学生,后输入要添加的学生的学号, 系统确认此学号在c:stud不存在时开始纪录新学生的资料,否则输出“此学号已存 在!”,以便清楚使用者。C、查询模块:此模块中使用者可以用3种方式查询学生成绩。分别为(1)按学号查询(2) 按姓名查询(3)按成绩查询。在这里以按学号查询为列:先选择按学号查询,输入要查 询的学生的学号,系统确认此学号在c:student存在后读取信息并在屏幕上输出学生 纪录。D、修改模块:此模块中可以修改一门科的成绩也可以同时修改四门科的成绩。修改完毕后 输入1可以继续修改,输入0则退出此模块。E、删除模块:此模块中用到的删除原理为覆盖要删除的学生的资料。过
6、程简述,先输入要 删除的学生的学号,系统找到此学生的信息后给它复制下一个学生的信息,给下一个学 生的纪录复制下下一个学生的信息,一直到最后一个学生的信息复制给倒数第二个学生 的信息为止。然后文件中的学生总数减一。F、此模块较简单,先统计文件c:student中的学生个数,后把每个学生的各门科的成绩 加起来,然后总成绩除以学生总数,屏幕上输出各科的平均成绩。G、排序模块:在此模块中可以按2种方法进行排序,分别为(1)按学号排序(2)按平均 成绩成绩排序。输出时以从小到大的循序进行输出。(3)模块功能说明1输入功能:可以一次完成N条记录的输入。2保存功能:保存已输入信息。3读取功能:读取已输入信息
7、。4打印功能:完成全部学生记录的显示。5更新功能:更新学生的信息。6查询功能:查询学生信息并显示。7统计功能:统计学生信息并显示。8排序功能:根据学号,平均成绩排序。0退出系统。五、详细设计及运行结果(1)各主要模块的程序流程图添加模块:删除模块:排序模块:(2 )函数之间相互调用的图示:(3)主要函数之间相互调用如下:主函数main ()的调用switch(choice)(casecasecasecasecasecasecasecasecase1: input_message();break;2:save_message(sum);break;3: read_message();break;
8、4: output_message();break;5: renew_message();break;6: inquire_message();break;7: count_message();break;8: sort_message();break;0: break;删除函数调用int del_by_name()char del_name20,i,f=0;printf( nnplease input the student name:);scanf(%s”,del_name);for(i=0;isum;i+)if(strcmp(,del_name)=0)stude
9、nti.num=-1;printf( %s student information have been deleted! ”,);f=1;break;if(f=0)printf( nn*cannot find the student ! *nn);getchar();return 0;int del_by_num()int del_num=0,i,f=0;printf(nnplease input the studentnum:);scanf(%d”,&del_num);for(i=0;isum;i+)if(studenti.num=del_num)追加函数的调用in
10、sert_message()/* 添加信息*/ int i=sum;int flag=0;char choice;clrscr();printf(nninsert sstudents informationn); do studenti.num=+sum;printf(nnew studnet num: %d,studenti.num);printf(nstudents name:);scanf (%s,);printf(nstudents sex:);scanf (%s,studenti.sex);printf(nstudents age:);scanf (%d,&
11、studenti.age);printf(nstudents class:);scanf (%d,&studenti.class);printf(nstudents num:);scanf(%d,&studenti.num);printf(nstudents plants:);scanf(%s,studenti.plants);printf(nstudents score:);scanf(%d %d %d %d,&studenti.exam.chinese,&studenti.exam.math,&studenti.exam.english,&studenti.exam.aver);print
12、f(nstudents birthday:);scanf(%d%d%d,&studenti.birthday.year,&studenti.birthday. month,&studenti.birthday.date);printf(nstudents telephone:);scanf(%d, &studenti.telephone);printf(nstudents add:);scanf(%s,studenti.add);21输入学号输出输出输入指令(1, 2, 3, 4, 5, 6, 7, 8, 0)30+ I回/输入学号 /输入修改后的内容0O退出添加信息删除信息返14568查询学
13、生信息排序无选择修改项目读文件Z/壬意键回主菜学生信息开 始输入指令,选择排序项目输指令(4结束输入指令,选择查寻项目学号成绩学号返 回成绩、录入学生信息返回姓 名更新学生信息输出学生信息写入文件中修改信息存入文件有删除六调试情况,设计技巧及体会经过两周的实习时间,我用文件建立了一个应用系统程序,形成系统软件。此程序结构简单明了,让人一目了然,便于对程序的阅读和理解。同时操作起来 也比较方便简单。又由于增加链表更增强了系统的灵活性。通过对此程序的编写,让我把书本上学到的应用到实际中去,但在编出程序的雏形后,再进 行编译时出现了许多错误和警告。这才让我认识到理论和实践是存在一定差别的。最后,在
14、多次查阅资料,询问同学后把程序给改编完成了。它让我体会到自己的不足,所以自己以后 要踏踏实实地把计算机年学好,为自己将来的发展打下坚实基础。在此次程序编写中,发现的问题有:函数应该是先定义后使用,所以一开始时,总是出现很多警告,说没有定义!后来经过 仔细检查,发现主函数应该是放在各个模块之后!要注意全局变量的应用,若全局变量没定义好的话,对整个程序的编写与都有很大影响!在删除模块中,刚开始存在很多问题,删除不了,或者删除后还能打印出来,结果后来 发现是删除模块本身的问题。(该块较难处理)在查询模块中,刚开始那个按商品类别查询无法运行,经检查,是由于未定义成字符串 数组形式,因此定义变量的类型非
15、常重要。特别要注意的问题是循环的初值,循环的控制变量,循环的条件!do-while的循环在这 个程序中多次运用!说明如下:(1 )、调试情况和设计技巧:刚开始没有那个初始化函数,程序运行后没有输入任何数据就试得去执行显示功能,结 果显示的是一些乱码!加入初始化函数后,这种现象也随之消失。在输入函数中设了最大值,可以输入66个学生的成绩信息,当输入字母e时停止, 并保存信息。在没有输入任何信息的情况下,不能执行查询、修改、删除、统计、排序功能。本程序是由C语言的基本单位一函数来设计实现与其功能的多次使用函数调用以及函 数的嵌套调用。本程序分为8个模块,分别为(1)创建学生信息。(2)保存学生信息
16、。(3) 读取学生信息。(4)更新学生信息。(5)查找学生信息。(6)统计学生的成绩(7)对学生 的资料进行排序。本程序可以处理多个学生的成绩的输入、添加、修改、排序等问题。本程 序的使用特别方便,每做完一个模块,下面都有提示信息。使用环境为Win-Tc。此程序的不足之处在学生基本信息方面还不够完善,另一方面就是在运行此程序时,需 要执行操作的提示语不够具体和完善.改进方法:可以在学生基本信息的结构体中添加更多的学生信息,使得学生信息更加完 善,此外,还可以在编程时加一些必要的提示语,用printf( “”语句直接可输入.(2)、在设计过程中的感受:首先经过两周的编程实习,并在后一段的报告总结
17、,我对C语言这门科有新的认识, 本人实在是获益不浅!要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识 熟悉,还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。这次设计, 让我重新掌握了 C语言,而且还得到了用C语言解决实际问题的宝贵经验。其次,通过此次编程我也发现了自己在学习中的错误和不足,复习了以前学过的知识。 同时也学到了一些没学过的知识,让我从中收益非浅,也为期末考试准备了一下!更重要的 是培养了独立思考问题和解决问题的能力,熟悉了一些基本操作和解决问题的方法!第三,因为初次接触等原因此次设计遇到了许多问题,我深刻体会到老师发挥的重要作 用,C语言程序对我们来说
18、比较难,在匆忙的学习中更是难上加难,似乎觉得自己仅是个匆匆过 客,但在老师的帮助下我学会了如何调试,如何查找系统没有提示的错误,最后终于排除万难 把程序搞定,体会到原来编程也挺有意思的快感.我想没有老师的帮助我很难在短期内把程序 设计做的这样好,在此特地感谢老师的帮助。七、源程序清单(略,详见电子版实验报告)#include #include #define N 20#define PAGE 2PRINT1#define printf(nname-sex-age-class-num-plants-score-birthday- add-phonen)PRINT2#define printf(n
19、 %s %s %d %d %d %s %d%d%d,,studenti.sex ,studenti.age,studenti.class,studenti.num,studenti.plants,studenti.e xam.chinese,studenti.exam.math,studenti.exam.english)PRINT3#define printf( %d %d %d %d %s %.0lfn”,studenti.exam.aver,studenti.b irthday.year,studenti.birthday.month,studenti.birt
20、hday.date,studenti.add ,studenti.telephone)int sum;/*ji lu xue sheng de ren shu*/struct data int year;int month;int date;struct score int chinese;int math;int english;int aver;struct student_type char name20;char sex20;char add20;char plants20; /*ban ji zhi wu*/char score20;int num;int class;int age
21、;int R;double telephone;struct data birthday;struct score exam;/*kao shi cheng ji*/studentN;input_message()/*shu ru xin xi*/ int i=0;char choice;int flag;double f;clrscr();do printf(nnumber %ds information”,i+1 ); students name:);printf(nninput studentsinformation(the most is %d) n,N);printf(nstudsc
22、anf (%s”,);printf(nstudents sex:);scanf (%s”,studenti.sex);printf(nstudents age:);scanf (%d”,&studenti.age);printf(nstudents class:);scanf (%d,&studenti.class);printf(nstudents num:);scanf(%d,&studenti.num);printf(nstudents plants:);scanf(%s”,studenti.plants);printf(nstudents cheng ji:)
23、;scanf(%d%d%d,&studenti.exam.chinese ,&studenti.exam.math ,&studenti.ex english);printf(nstudents aver cheng ji:);scanf(%d, &studenti.exam.aver);printf(nstudents shengri:);scanf(%d %d %d,&studenti.birthday.year,&studenti.birthday.month,&studenti.birthday.date);printf(nstudents add:);scanf(%s,student
24、i.add);printf(nstduents phone:);scanf (%lf,&f);studenti.telephone=f;printf(ndo you want to continue(Y/N);choice=getch();if(choice=y|choice=Y) printf(ni+;flag=1;else flag=0;while(flag=1);printf(nsum=i;printf(nbioskey(0);save_message(int sum) FILE *fp;int i=0;if(fp=fopen(student.txt,wb)=NULL) printf(r
25、ead message wrong!n);return 0;for(i=0;i=sum;i+)if(fwrite(&studenti,sizeof(struct student_type),1,fp)!=1)printf(write message wrong!n);am.continue!n);%d stuentsinformation input had been end!n,i );push any button to go away!);/*保存信息*/fclose(fp);read_message()/* 读取信息*/ FILE *fp;int i=0;if(fp=fopen(stu
26、dent,txt”,rb)=NULL) printf(nn*now,there are no any informationin file n please push any button to goaway!*n);return;while(feof(fp)!=1) fread(&studenti,sizeof(struct student_type),1,fp);if(studenti.num=0) break;else i+;fclose(fp);return(i);output_message()/* 显示信息*/ int i=0,page=1;int j=0;clrscr();pri
27、ntf(nn students information- page%dnn”,page );PRINT1;do if(studenti.num!=0) j+;if(j%PAGE!=0) PRINT2;PRINT3;else PRINT2;PRINT3;if(studenti+1.num!=0) printf(push any button to continue);bioskey(0);clrscr();printf(nn-students information-page%dnn,+page);PRINT1;i+;while(studenti.num!=0);printf(push any
28、button to go away); bioskey(0);insert_message()/* 添加信息 */ int i=sum;int flag=0;char choice;clrscr();insert s studentsprintf(nn informationn);do studenti.num=+sum;printf(nnew studnet num: %d ,studenti.num);printf(nstudents name:);scanf (%s,&);printf(nstudents sex:);scanf (%s,&studenti.se
29、x);printf(nstudents age:);scanf (%d,&studenti.age);printf(nstudents class:);scanf (%d,&studenti.class);printf(nstudents num:);scanf (%d”,&studenti.num);printf(nstudents plants:);scanf (%s”,&studenti.plants);printf(nstudents score:);scanf (%d %d %d %d,&studenti.exam.chinese,&studenti.exam.math,&stude
30、nti.exam.english, &studenti.exam.aver);printf(nstudents birthday:);scanf(%d%d%d,&studentibirthday.year,&studentibirthday.month, &studenti.birthday.date);printf(nstudents telephone:);scanf(%d”, &studenti.telephone);printf(nstudents add:);scanf(%s”,&studenti.add);sum+;printf(ndo you want to continue?(
31、Y/N);choice=getch();if(choice=y|choice=Y) printf(ncontinue!n);i+;flag=1;else flag=0;while(flag=1);printf(npush any button to go away);bioskey(0);int del_by_name()char del_name20,i,f=0;printf( nn please input the student name:);scanf(%s,del_name);for(i=0;isum;i+)if(strcmp(,del_name)=0)st
32、udenti.num=-1;printf( %s student information have been deleted ! ,);f=1;break;if(f=0)printf( nn*cannot find the student! *nn);getchar();return 0;int del_by_num()int del_num=0,i,f=0;printf(nnplease input the student num:);scanf(%d,&del_num);for(i=0;isum;i+)if(studenti.num=del_num)student
33、i.num=-1;printf(the students information have been deleted!);f=1;break;if(f=0)printf( nn*cannot find the student !*nn);getchar();return 0;del_message()int choice;doclrscr();printf(*delete studentsinformation*nn);printf(1.deleteby namenn);printf(2.deleteby numnn);printf(0.retrunmenunn);printf(please
34、choose (0-2):);scanf(%d”,&choice);switch(choice)case 1: del_by_name();break;case 2: del_by_num();break;case 0: break;while(choice!=0);return 1;revise_message()/* 修改信息 */ int i=0,choice,flag;char revise_name20;do clrscr();printf(nshu ru yao xiu gai de xue sheng ming:);scanf(%s,revise_name);for(i=0;is
35、um;i+) if(strcmp(,revise_name)=0&studenti.num!=0)printf(n-studentsinformation-n);PRINT2;PRINT3;PRINT1;printf(nwhich one do you want to revise?n);printf(n1.studentsname n);printf(n2.studentsagen);printf(n3.studentsnumn );printf(n4.studentsbirthdayn);printf(nchose(1-4):);scanf(%d”,&choice
36、);switch(choice) case 1: printf(nshu ru xiu gai hou de name:);scanf(%s,);break;case 2: printf(nshu ru xiu gai hou de age:);scanf(%d,&studenti.age);break;case 3: printf(nshu ru xiu gai hou de num:);scanf(%d”,&studenti.num);break;case 4: printf(nshu ru xiugaihoudebirthday:);scanf(%d%d%d,&
37、studenti.birthday.year,&studenti.birthday.month,&studenti.birthdaydate);break;printf(ninformation had been revised);PRINT1;PRINT2;PRINT3;break;if(i=sum) printf(nthis student is not in);bioskey(0);printf(nndo you want to continuerevise ?(Y/N);choice=getch();if(choice=y|choice=Y) flag=1;printf(ncontin
38、ue!n);else flag=0;while(flag=1);printf(n bioskey(0);renew_message() int choice;do clrscr();printf(nnn information*nn);printf(n printf(n printf(n printf(n printf(n scanf(%d,&choice); switch(choice)1: insert_message();break;2: del_message();break;3: revise_message();break;0: break;push any button to g
39、o away);/*更新信息*/*renew studentsl.insert informationnn);del informationnn);revise informationnn);0.returnnn);chose (0-3):); case case case casewhile(choice!=0);/*按名字查询*/inquire_name() int i,j=0;char ch,R;char inquire_name20;R: clrscr();printf(ninput name you want to inquire: );scanf(%s,inquire_name);
40、for(i=0;isum;i+) if(strcmp(,inquire_name)=0&studenti.num!=0) printf(n-studentinformation-n); PRINT1; PRINT2; PRINT3;else j+;this studnet is not in !);if(j=sum) printf(nbioskey(0);printf(n Do you want to continue?(Y/N);scanf(%c,&ch);if(ch=,y,|ch=,Y,) j=1; goto R;inquire_num()int i,j=0;ch
41、ar ch,R;int inquire_num;R: clrscr();printf(ninput num you want to inquire: );scanf(%d,&inquire_num);for(i=0;isum;i+) if(studenti.num=inquire_num&studenti.num!=0)student information); printf(nnPRINT1;PRINT2;PRINT3;else j+;if(j=sum)there is no informationprintf(n about the student);bioskey(0);printf(n
42、 Do you want to continue?(y/Y);scanf(%c,&ch);if(ch=,y,|ch=,Y,)j=1; goto R;/*查询信息*/inquire_message() int choice;do clrscr();*inquire studentprintf(nnninformation*nn);printf(printf(printf(printf(chose1.inquire_namenn);2.inquire_numnn);3.go awaynn );(1-3):);scanf(%d,&choice);switch(choice) case 1: inqu
43、ire_name();break;case 2: inquire_num();break;case 3: break;while(choice!=3);count_message() int i,j,num;int choice;char count_score20;clrscr();printf(input the score you want to count:n);scanf(%d”,&count_score);printf(nthe resultsnnn);PRINT2;for(i=0;isum;i+)if(studenti.score=count_score)num+;PRINT3;
44、else j+;printf(nscorenumber n);printf(%15d%13d”,count_score,num);if(j=sum)printf( nthe score is not exist,press anykey toreturn nn);bioskey(0);sort_num()/*按学号排序*/ struct student_type t;int i,j,k;clrscr();printf(nnum sortedn);printf(n sorted studentname studentnum studentagen);for(i=0;isum;i+) k=i;for(j=1;j=sum;j+)if(studentk.numstudentj.num) k=j;if(k!=i) t=studenti; studenti=studentk; studentk=t;for(i=0;i=sum;i+) printf(n%d %s %d %d”,i+1,,studenti.num,studenti.age);bioskey(0);sort_aver()/*按平均成绩排序*/ struct student_type
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025储备土地临时利用合同书
- 2025年建筑工程《土地使用权转让合同》
- 香港房屋租赁合同范本
- 社区服务协议
- 个人无息借款协议书范本
- 经营合作合同
- 涉车辆房产分割离婚协议书
- 2025年预付式消费合同的法律规范与监管
- 2025有限责任公司股权转让合同范本「」
- 安全生产协议书租房
- 司法雇员考试题目及答案
- 2025年03月广西玉林博白县总工会社会化工会工作者13人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- GB/T 37133-2025电动汽车用高压连接系统
- 2024年榆林市榆阳区公立医院招聘考试真题
- Unit 2 Go for it!Understanding ideas教学设计 -2024-2025学年外研版(2024)七年级英语下册
- 电缆桥架国标10216-2013
- 管理学基础-形考任务一-国开-参考资料
- 体育体感游戏创业计划
- 法律实务案例分析卷集及参考答案解析
- 小学生风电知识科普课件
- 建筑施工各岗位安全生产责任书标准范本
评论
0/150
提交评论