下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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成绩:90序号:002姓名:李斯性
4、别:男年龄:19成绩:87序号:003姓名:王美性别:女年龄:20成绩:82添加模块:(再加1个信息)序号:004姓名:赵灵性别:女年龄:19成绩:89查询模块:(查询成绩的基本信息)分:按学号查询和按成绩查询四、概要设计(1)主函数主要模块结构图:r1输入模块4保存信息J11,读取信息,>r丁1输生信息.插入LJ删除更新信息>统计信息F-1修改LJlr三序.>退由程序*(2)模块功能详细说明:A、创建模块:此模块可以连续输入若干个学生的资料,若学生数少于该数,则可以在输入学号处输入e便可退出此模块,并把输入的信息保存到c:stud文件中。日追加模块:此*II块中先打开c:s
5、tud统计文件中的学生,后输入要添加的学生的学号,系统确认此学号在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保存功能:保存已输入信息。读取功能:打印功能:更新功能:查询功能:统计功能:排序功
7、能:退出系统。读取已输入信息。完成全部学生记录的显示。更新学生的信息。查询学生信息并显示。统计学生信息并显示。根据学号,平均成绩排序。五、详细设计及运行结果(1)各主要模块的程序流程图添加模块:删除模块:排序模块:打开c:stud文件,统计文件中学生个数count(2)函数之间相互调用的图示:(3)主要函数之间相互调用如下:主函数main()的调用switch(choice)case1:input_message();break;case2:save_message(sum);break;case 3: read_message();break;case 4: output_message()
8、;break;case 5: renew_message();break;case 6: inquire_message();break;case 7: count_message();break;case 8: sort_message();break;case0:break;删除函数调用intdel_by_name()(chardel_name20,i,f=0;printf("nnpleaseinputthestudentname:");scanf("%s",del_name);for(i=0;i<sum;i+)(if(strcmp(stude
9、,del_name)=0)(studenti.num=-1;printf("%sstudentinformationhavebeendeleted!",);f=1;break;if(f=0)printf("nn*cannotfindthestudent!*nn");getchar();return0;intdel_by_num()(intdel_num=0,i,f=0;printf("nnpleaseinputthestudentnum:");scanf("%d",&
10、;del_num);for(i=0;i<sum;i+)(if(studenti.num=delnum)追加函数的调用insert_message()/*添力讨言息*/inti=sum;intflag=0;charchoice;clrscr();printf("nnstudent'sinformation");dostudenti.num=+sum;printf("n",studenti.num);printf("nscanf("%s",);printf("nscanf(&qu
11、ot;%s",studenti.sex);printf("nscanf("%d",&studenti.age);printf("nscanf("%d",&studenti.class);printf("nscanf("%d",&studenti.num);printf("nscanf("%s",studenti.plants);printf("nscanf("%d%d%d&studenti.exam.english
12、,printf("ninsertsnewstudnetnum:%dstudent'sname:");student'ssex:");student'sage:");student'sclass:");student'snum:");student'splants:");student'sscore:");%d",&studenti.exam.chinese,&studenti.exam.math,&studenti.exam.
13、aver);student'sbirthday:");scanf("%d%d%d",&studenti.birthday.year,&studenti.birthday.month,&studenti.birthday.date);printf("nstudent'stelephone:");scanf("%d",&studenti.telephone);printf("nstudent'sadd:");scanf("%s",st
14、udenti.add);学生信息六调试情况,设计技巧及体会经过两周的实习时间,我用文件建立了一个应用系统程序,形成系统软件。此程序结构简单明了,让人一目了然,便于对程序的阅读和理解。同时操作起来也比较方便简单。又由于增加链表更增强了系统的灵活性。通过对此程序的编写,让我把书本上学到的应用到实际中去,但在编出程序的雏形后,再进行编译时出现了许多错误和警告。这才让我认识到理论和实践是存在一定差别的。最后,在多次查阅资料,询问同学后把程序给改编完成了。它让我体会到自己的不足,所以自己以后要踏踏实实地把计算机年学好,为自己将来的发展打下坚实基础。在此次程序编写中,发现的问题有:1 .函数应该是先定义后
15、使用,所以一开始时,总是出现很多警告,说没有定义!后来经过仔细检查,发现主函数应该是放在各个模块之后!2 .要注意全局变量的应用,若全局变量没定义好的话,对整个程序的编写与都有很大影响!3 .在删除模块中,刚开始存在很多问题,删除不了,或者删除后还能打印出来,结果后来发现是删除模块本身的问题。(该块较难处理)4 .在查询模块中,刚开始那个按商品类别查询无法运行,经检查,是由于未定义成字符串数组形式,因此定义变量的类型非常重要。5 .特别要注意的问题是循环的初值,循环的控制变量,循环的条件!do-while的循环在这个程序中多次运用!6 .说明如下:(1)、调试情况和设计技巧:a,刚开始没有那个
16、初始化函数,程序运行后没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!加入初始化函数后,这种现象也随之消失。b,在输入函数中设了最大值,可以输入66个学生的成绩信息,当输入字母'e'时停止,并保存信息。c,在没有输入任何信息的情况下,不能执行查询、修改、删除、统计、排序功能。本程序是由C语言的基本单位一函数来设计实现与其功能的多次使用函数调用以及函数的嵌套调用。本程序分为8个模块,分别为(1)创建学生信息。(2)保存学生信息。(3)读取学生信息。(4)更新学生信息。(5)查找学生信息。(6)统计学生的成绩(7)对学生的资料进行排序。本程序可以处理多个学生的成绩的输入
17、、添加、修改、排序等问题。本程序的使用特别方便,每做完一个模块,下面都有提示信息。使用环境为Win-Tco此程序的不足之处在学生基本信息方面还不够完善,另一方面就是在运行此程序时,需要执行操作的提示语不够具体和完善.改进方法:可以在学生基本信息的结构体中添加更多的学生信息,使得学生信息更加完善,此外,还可以在编程时加一些必要的提示语,用printf(")';语句直接可输入.(2)、在设计过程中的感受:首先经过两周的编程实习,并在后一段的报告总结,我对C语言这门科有新的认识,本人实在是获益不浅!要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识熟悉,还要掌握必要的上机
18、操作能力,写程序其实很容易而关键在于调试程序。这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验。其次,通过此次编程我也发现了自己在学习中的错误和不足,复习了以前学过的知识。同时也学到了一些没学过的知识,让我从中收益非浅,也为期末考试准备了一下!更重要的是培养了独立思考问题和解决问题的能力,熟悉了一些基本操作和解决问题的方法!第三,因为初次接触等原因此次设计遇到了许多问题,我深刻体会到老师发挥的重要作用,C语言程序对我们来说比较难,在匆忙的学习中更是难上加难,似乎觉得自己仅是个匆匆过客,但在老师的帮助下我学会了如何调试,如何查找系统没有提示的错误,最后终于排除万难把程序
19、搞定,体会到原来编程也挺有意思的快感,我想没有老师的帮助我很难在短期内把程序设计做的这样好,在此特地感谢老师的帮助。七、源程序清单(略,详见电子版实验报告)#include<stdio.h>#include<string.h>#defineN20#definePAGE2#definePRINT1printf("nname-sex-age-class-num-plants-score-birthday-add-phonen")#definePRINT2printf("n%s%s%d%d%d%s%d%d%d",studenti.nam
20、e,studenti.sex,studenti.age,studenti.class,studenti.num,studenti.plants,studenti.exam.chinese,studenti.exam.math,studenti.exam.english)#definePRINT3printf("%d%d%d%d%s%.0lfn",studenti.exam.aver,studenti.birthday.year,studenti.birthday.month,studenti.birthday.date,studenti.add,studenti.telep
21、hone)intsum;/*jiluxueshengderenshu*/structdataintyear;intmonth;intdate;structscoreintchinese;intmath;intenglish;intaver;structstudent_typecharname20;charsex20;charadd20;charplants20;/*banjizhiwu*/charscore20;intnum;intclass;intage;intR;doubletelephone;structdatabirthday;structscoreexam;/*kaoshicheng
22、ji*/studentN;input_message()/*shuruxinxi*/inti=0;charchoice;intflag;doublef;clrscr();printf("nninputstudents'information(themostis%d)n",N);doprintf("nnumber%d'sinformation”,i+1);printf("nstudent'sname:");scanf("%s",);printf("nstudent
23、39;ssex:");scanf("%s",studenti.sex);printf("nstudent'sage:");scanf("%d",&studenti.age);printf("nstudent'sclass:");scanf("%d",&studenti.class);printf("nstudent'snum:");scanf("%d",&studenti.num);printf(&
24、quot;nstudent'splants:");scanf("%s",studenti.plants);printf("nstudent'schengji:");,&studenti.exscanf("%d%d%d",&studenti.exam.chinese,&studenti.exam.matham.english);printf("nstudent'saverchengji:");scanf("%d",&studenti
25、.exam.aver);printf("nstudent'sshengri:");scanf("%d%d%d",&studenti.birthday.year,&studenti.birthday.month,&studenti.birthday.date);printf("nstudent'sadd:");scanf("%s",studenti.add);printf("nstduent'sphone:");scanf("%lf&quo
26、t;,&f);studenti.telephone=f;printf("ndoyouwanttocontinue(Y/N)");choice=getch();if(choice='y'|choice='Y')printf("ncontinue!n");i+;flag=1;elseflag=0;while(flag=1);printf("n%dstuents'informationinputhadbeenend!n",i);sum=i;printf("npushanybutton
27、togoaway!");bioskey(0);)save_message(intsum)/*保存信息*/FILE*fp;inti=0;if(fp=fopen("student.txt","wb")=NULL)printf("readmessagewrong!n");return0;)for(i=0;i<=sum;i+)if(fwrite(&studenti,sizeof(structstudent_type),1,fp)!=1)printf("writemessagewrong!n");fc
28、lose(fp);)read_message()/*读取信息*/FILE*fp;inti=0;if(fp=fopen("student.txt","rb")=NULL)printf("nn*now,therearenoanyinformationinfilenpleasepushanybuttontogoaway!*n");return;)while(feof(fp)!=1)fread(&studenti,sizeof(structstudent_type),1,fp);if(studenti.num=0)break;else
29、i+;)fclose(fp);return(i);)output_message()/*显示信息*/inti=0,page=1;intj=0;clrscr();printf("nnstudent'sinformation-page%dnn",page);PRINT1;doif(studenti.num!=0)j+;if(j%PAGE!=0)PRINT2;PRINT3;)elsePRINT2;PRINT3;if(studenti+1.num!=0)printf("pushanybuttontocontinue");bioskey(0);clrscr
30、();printf("nn-student'sinformation-page%dnn",+page);PRINT1;)i+;while(studenti.num!=0);printf("pushanybuttontogoaway");bioskey(0);insert_message()/*添加信息*/inti=sum;intflag=0;charchoice;clrscr();printf("nninsertsstudent'sinformationn");dostudenti.num=+sum;printf(&q
31、uot;nnewstudnetnum:%d",studenti.num);printf("nstudent'sname:");scanf("%s”,&);printf("nstudent'ssex:");scanf("%s”,&studenti.sex);printf("nstudent'sage:");scanf("%d",&studenti.age);printf("nstudent'scl
32、ass:");scanf("%d",&studenti.class);printf("nstudent'snum:");scanf("%d",&studenti.num);printf("nstudent'splants:");scanf("%s",&studenti.plants);printf("nstudent'sscore:");scanf("%d%d%d%d",&studenti.
33、exam.chinese,&studenti.exam.math,&studenti.exam.english,&studenti.exam.aver);printf("nstudent'sbirthday:");scanf("%d%d%d",&studenti.birthday.year,&studenti.birthday.month,&studenti.birthday.date);printf("nstudent'stelephone:");scanf("
34、;%d",&studenti.telephone);printf("nstudent'sadd:");scanf("%s",&studenti.add);sum+;printf("ndoyouwanttocontinue?(Y/N)");choice=getch();if(choice='y'|choice='Y')printf("ncontinue!n");i+;flag=1;elseflag=0;while(flag=1);printf(&quo
35、t;npushanybuttontogoaway");bioskey(0);intdel_by_name()chardel_name20,i,f=0;printf("nnpleaseinputthestudentname:");scanf("%s”,del_name);for(i=0;i<sum;i+)if(strcmp(,del_name)=0)studenti.num=-1;printf("%sstudentinformationhavebeendeleted!",);f=
36、1;break;if(f=0)printf("nn*cannotfindthestudent!*nn");getchar();return0;intdel_by_num()intdel_num=0,i,f=0;printf("nnpleaseinputthestudentnum:");scanf("%d”,&del_num);for(i=0;i<sum;i+)if(studenti.num=del_num).studenti.num=-1;printf("thestudents'informationhavebe
37、endeleted!");f=1;break;)*cannotfindthestudent!if(f=0)printf("nn*nn");getchar();return0;)del_message()(intchoice;do(students'clrscr();printf("*deleteinformation*nn");printf("1.deletebynamenn");printf("2.deletebynumnn");printf("0.retrunmenunn"
38、);printf("pleasechoose(0-2):");scanf("%d”,&choice);switch(choice)(case 1: del_by_name();break;case 2: del_by_num();break;case0:break;)while(choice!=0);return1;revise_message()/*修改信息*/inti=0,choice,flag;charrevise_name20;doclrscr();printf("nshuruyaoxiugaidexueshengming:")
39、;scanf("%s",revise_name);for(i=0;i<sum;i+)if(strcmp(,revise_name)=0&&studenti.num!=0)printf("n-students'information-n");PRINT2;PRINT3;PRINT1;printf("nwhichonedoyouwanttorevise?n");printf("n1.student'snamen");printf("n2.stud
40、ent'sagen");printf("n3.student'snumn");printf("n4.student'sbirthdayn");printf("nchose(1-4):");scanf("%d”,&choice);switch(choice)case1:printf("nshuruxiugaihoudename:");scanf("%s”,);break;case 2: printf("nshuruxiu
41、gaihoudeage:");scanf("%d”,&studenti.age);break;case 3: printf("nshuruxiugaihoudenum:");scanf("%d”,&studenti.num);break;case 4: printf("nshuruxiugaihoudebirthday:");scanf("%d%d%d",&studenti.birthday.year,&studenti.birthday.month,&studen
42、ti.birthday.date);break;printf("ninformationhadbeenrevised");PRINT1;PRINT2;PRINT3;break;if(i=sum)printf("nthisstudentisnotin");bioskey(0);printf("nndoyouwanttocontinuerevise?(Y/N)");choice=getch();if(choice='y'|choice='Y')flag=1;printf("ncontinue!n&
43、quot;);elseflag=0;while(flag=1);printf("npushanybuttontogoaway");bioskey(0);renew_message()/*更新信息*/intchoice;doclrscr();printf("nnn*renewstudent'sinformation*nn");printf("n1.insertinformationnn");printf("n2.delinformationnn");printf("n3.reviseinformat
44、ionnn");printf("n0.returnnn");printf("nchose(0-3):");scanf("%d”,&choice);switch(choice)case1:insert_message();break;case2:del_message();break;case3:revise_message();break;case0:break;while(choice!=0);inquire_name()/*按名字查询*/inti,j=0;charch,R;charinquire_name20;R:clrs
45、cr();printf("ninputnameyouwanttoinquire:");scanf("%s",inquire_name);for(i=0;i<sum;i+)if(strcmp(,inquire_name)=0&&studenti.num!=0)printf("n-studentinformation-n");PRINT1;PRINT2;PRINT3;elsej+;if(j=sum)printf("nthisstudnetisnotin!");bioske
46、y(0);)printf("nDoyouwanttocontinue?(Y/N)");scanf("%c",&ch);if(ch='y'|ch='Y')j=1;gotoR;)inquire_num()inti,j=0;charch,R;intinquire_num;R:clrscr();printf("ninputnumyouwanttoinquire:");scanf("%d”,&inquire_num);for(i=0;i<sum;i+)if(studenti.num
47、=inquire_num&&studenti.num!=0)printf("nnstudentinformation");PRINT1;PRINT2;PRINT3;elsej+;if(j=sum)printf("nthereisnoinformationaboutthestudent");bioskey(0);printf("nDoyouwanttocontinue?(y/Y)");scanf("%c",&ch);if(ch='y'|ch='Y')j=1;go
48、toR;inquire_message()/*查询信息*/intchoice;doclrscr();studentprintf("nnn*inquireinformation*nn");printf("1.inquire_namenn");printf("2.inquire_numnn");printf("3.goawaynn");printf("chose(1-3):");scanf("%d",&choice);switch(choice)case1:inquire
49、_name();break;case 2: inquire_num();break;case 3: break;while(choice!=3);count_message()inti,j,num;intchoice;charcount_score20;clrscr();printf("inputthescoreyouwanttocount:n");scanf("%d”,&count_score);printf("ntheresultsnnn");PRINT2;for(i=0;i<sum;i+)if(studenti.score=
50、count_score).num+;PRINT3;elsej+;printf("nscorenumbern");printf("%15d%13d”,count_score,num);if(j=sum)printf("nthescoreisnotexist,pressanykeytoreturnnn");bioskey(0);sort_num()/*按学号排序*/structstudent_typet;inti,j,k;clrscr();printf("nnumsortedn");printf("nsortedstu
51、dentnamestudentnumstudentagen");for(i=0;i<sum;i+)k=i;for(j=1;j<=sum;j+)if(studentk.num<studentj.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()/*按平均成绩排序*/structstudent_typet;inti,j,k;clrscr();printf("naverscoresortedn");print
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海视觉艺术学院《刑法前沿研究》2023-2024学年第一学期期末试卷
- 上海视觉艺术学院《城乡道路与交通》2023-2024学年第一学期期末试卷
- 人力资源述职报告范文
- 上海商学院《市场竞争软件模拟训练》2023-2024学年第一学期期末试卷
- 课题申报书:共同富裕目标下数智化影响人的全面发展的理论机制及路径研究
- 课题申报书:高铁时代关中平原城市群收缩识别及高铁多维效应研究
- 《不懂就要问》公开课一等奖创新教案
- 1《短歌行》公开课一等奖创新教学设计 统编版高中语文必修上册
- 上海闵行职业技术学院《面点工艺学实训》2023-2024学年第一学期期末试卷
- 中建集团面试自我介绍
- 高中期末复习 高效备考主题班会 课件
- 儿童故事:约瑟夫有件旧外套课件
- 水池满水试验报告
- 江苏省第十四批省级民主法治示范村
- 两班倒排班表excel模板
- 数学说题大赛评分标准
- 人教版高中英语必修5_unit2The_united_Kingdom_Reading
- 哈汽东芝型超超临界1000MW汽轮机低压缸动静碰磨故障分析与对策
- 温州市房屋租赁合同-通用版
- 医源性冠状动脉夹层的识别与防治
- 空心薄壁墩翻模施工技术交底(修改)
评论
0/150
提交评论