C语言学习知识成绩查询系统_第1页
C语言学习知识成绩查询系统_第2页
C语言学习知识成绩查询系统_第3页
C语言学习知识成绩查询系统_第4页
C语言学习知识成绩查询系统_第5页
已阅读5页,还剩32页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言大作业姓名:班级:学号:指导教师:设计时间:目 录一. 目的3.二. 题目描述和要求4三报告内容5.3.1需求分析53.2概要设计63.3详细设计83.4主要源程序代码 93.5测试分析243.6设计结果2 5四.结论与心得31目的1.1、通过本次大作业,锻炼我们应用 C语言的语法规则和已经掌握的 算法,自己解决一个较简单的课题,初步积累编程经验。1.2、通过学习掌握程序设计的方法与编程技术, 学会良好的程序设计风格, 为计算机在不同领域的应用打下坚实的基础。1.3、要求我们能利用计算机解决实际问题。从分析问题入手,设计可行的 算法,进而编出相应的C程序。强调上机实践过程,从实际应用出发

2、,注重程序的实际应用1 .题目描述和要求题目:学生成绩管理系统应用链表及外部文件,独立设计上述应用系统,并编程实现以下功能:2.1信息录入录入学生信息(包括姓名、学号、各科成绩)。2.2信息查询输入学号,查询与学号相对应的信息(包括成绩),并按可选的自定义规 则进行排序。按班级查询学生成绩。按班级统计学科总分、平均分等。2.3信息删除与修改输入学号,删除该学号对应的成绩信息输入学号,查询并显示出该学号信息,并在此基础上进行修改。2.4计算学生成绩计算每位学生的总分。计算每位学生的平均分。成绩排序。2.5信息保存将学生信息保存在文件中。2.6根据以上功能需求,定义通讯录信息结构,并采用链表结构对

3、数据进行存储。2.7提供友好的用户界面,方便用户操作。报告内容3.1需求分析随着当今社会发展,信息化水平逐步提高,对教务管理有了新的要求,因此,编写一个信息管理系统是十分有必要的该软件主要是实现对学生信息进行系统化的管理,首先可以对学生基本信息 进行输入和读取,其次查找并显示特定学生的相关信息,然后可以插入学生的相 关信息,还有就是可按学生相关信息排序,以求达到简易操作的目的。3.2概要设计1 系统结构图(功能模块图)和数据变量说明2.系统总体流程图开始执行3.3详细设计源文件函数名或其他成分功能stude nt.cpp函数名或其他成分功能mai n总控函数int choice菜单选择swit

4、ch(choice)菜单处理IO_Writel nfo新建学生信息记录exit结束运行Stude nt_lnsert增加学生信息Stude nt_Display显示信息Stude nt_Delete删除指定的记录Stude nt_Select查询指定学生的信息Stude nt_Modify修改指定学生的信息Stude nt_SortByAverag e排序stude nt.h结构声明学生成绩结构库函数及函数原型声明引用库函数及函数3.4主要源程序代码#in clude#in clude#in elude struct Stude ntchar ID20;char Name20;float sc

5、or_math;float scor_phy;float Average;;struct Stude nt stude nts1000;int num=0;float Avg(struct Stude nt stu)retur n (stu.scor_e ng+stu.scor_math+stu.scor_phy)/3;int Stude nt_SearchByl ndex(char id)int i;for (i=0;i nu m;i+)if (strcmp(stude ntsi.ID,id)=O)return i;return -1;int Stude nt_SearchByName(ch

6、ar n ame)int i;for (i=0;i nu m;i+)if (strcmp(stude ntsi.Name ,n ame)=0)return i;return -1;void Stude nt_DisplayS in gle(i nt in dex)printf(%10s%10s%8s%8s%8s%10sn,学号,姓名,”英语成绩,数学成绩,物理成绩,”平均成绩);printf(n);prin tf(%10s%10s%8.2f%8.2f%8.2f%10.2fn,stude ntsi ndex.ID,stude ntsi ndex.Name,tsi ndex.Average);vo

7、id Stude nt_ln sert()while(1)printf(”请输入学号:);scan f(%s, &stude ntsn um.ID);getchar();printf(请输入姓名:”);scan f(%s, &stude nts num.Name);getchar();printf(请输入英语成绩:);sca nf(%f, &stude ntsnu m.scor_e ng); getchar();printf(请输入数学成绩:);sca nf(%f, &stude ntsnu m.scor_math); getchar();printf(请输入物理成绩:);sca nf(%f,

8、 &stude ntsnu m.scor_phy);getchar();nu m+;printf(是否继续?(y/in);if (getchar()= n)break;void Stude nt_Modify()while(1)char id20;int in dex;printf(”请输入要修改的学生的学号:”);scan f(%s,&id);getchar();in dex=Stude nt_SearchBy In dex(id);if (in dex=-1)printf(”学生不存在!n);elseprintf(你要修改的学生信息为:n);Stude nt_DisplayS in gle

9、(i ndex);printf(-请输入新值-n);printf(请输入学号:);scan f(%s, &stude ntsi ndex.ID);getchar();printf(请输入姓名:”);scan f(%s, &stude ntsi ndex.Name);getchar();printf(请输入英语成绩:”);sca nf(%f, &stude ntsi ndex.scor_e ng);getchar();printf(请输入数学成绩:);sca nf(%f, &stude ntsi ndex.scor_math);getchar();printf(请输入物理成绩:”);sca nf

10、(%f, &stude ntsi ndex.scor_phy);printf(”是否继续?(y/in门;if (getchar()= n)break;void Stude nt_Delete()int i;while(1)char id20;int in dex;printf(请输入要删除的学生的学号:”);scan f(%s,&id);in dex=Stude nt_SearchBy In dex(id);if (in dex=-1) printf(”学生不存在!n);elseprintf(你要删除的学生信息为:n);Stude nt_DisplayS in gle(i ndex);prin

11、tf(是否真的要删除?(y/n);if (getchar()=y)for (i=in dex;i nu m-1;i+)stude ntsi=stude ntsi+1;num-;getchar();printf(” 是否继续?(y/n);break;void Stude nt_Select()while(1)char n ame20;int in dex;printf(”请输入要查询的学生的姓名:”);scan f(%s,&n ame);getchar();in dex=Stude nt_SearchByName (n ame);if (in dex=-1)printf(学生不存在!n”);el

12、seprintf(”你要查询的学生信息为:n);Stude nt_DisplayS in gle(i ndex);printf(” 是否继续?(y/n);if (getchar()= n)break;void Stude nt_SortByAverage()int i,j;struct Stude nt tmp;for (i=0;i nu m;i+)for (j=1;j nu m_i;j+)j.Average)if (stude ntsj-1.Averagestude ntstmp=stude ntsj-1;stude ntsj-1=stude ntsj;stude ntsj=tmp;void

13、 Stude nt_Display()int i;printf(%10s%10s%8s%8s%8s%10sn,学号,姓名,”英语成绩,数学成绩,物理成绩,”平均成绩);printf(”n);for (i=0;i nu m;i+)prin tf(%10s%10s%8.2f%8.2f%8.2f%10.2fn,stude ntsi.ID,stude ntsi.Name,stude ntsi.scor_e ng,stude ntsi.scor_math,stude ntsi.scor_phy,stude ntsi.Average);void IO_Readl nfo()FILE *fp;int i;i

14、f (fp=fope n(Database.txt,rb)=NULL)printf(不能打开文件!n”);return;if (fread(&nu m,sizeof(i nt),1,fp)!=1)num=-1;elsefor(i=0;i nu m;i+)fread(&stude ntsi,sizeof(struct Stude nt),1,fp);fclose(fp);void IO_Writel nfo()FILE *fp;int i;if (fp=fope n( Database.txt,wb)=NULL)printf(不能打开文件!n”);return;if (fwrite(&nu m,

15、sizeof(i nt),1,fp)!=1)printf(写入文件错误!n”);for (i=0;i nu m;i+)if (fwrite(&stude ntsi,sizeof(struct Stude nt),1,fp)!=1)printf(写入文件错误!n);fclose(fp);int mai n()int choice;IO_Readl nfo();while(1)prin tf(n-学生成绩管理系统prin tf(1.增加学生记录n);prin tf(2.修改学生记录n);prin tf(3.删除学生记录n);prin tf(4.按姓名查询学生记录n);prin tf(5.按平均成绩

16、排序n);prin tf(6.保存文件n);prin tf(7.退出n);printf(” 请选择(1-7):);scan f(%d, &choice);getchar();switch(choice)n “);case 1:Stude nt_ln sert();break;case 2:Stude nt_Modify();break;case 3:Stude nt_Delete();break;case 4:Stude nt_Select();break;case 5:Stude nt_SortByAverage();Stude nt_Display();break;case 6:IO_Wr

17、itel nfo();break;case 7:exit(0);break;3.5测试分析C语言是上学期的学习内容,现在生疏了很多,以致程序运行过程中有许多bug,测试也有很多想不到的错误。下面列举几个例子:1)IO_Readlnfo 读出文件If (fp=fopen( “database.txt ”,” rb ”)=NULL )以二进制的格式读取文件的模式打开database.txt文件,并把文件指针赋值为文件读取指针IO_Writel nfo 写入文件If (fp=fopen( “database.txt ”,” rb ”)=NULL )以二进制写入方式打开文件,和读取类似。在写这个函数的

18、时候总是不能读出,而且写入也有问题,if(fwrite(&num,sizeof(int),1,fp)!=1) 因为 sizeof (int )是指一次读入的二进制数据单位个数,后面的“ 1 ”表示要读取的次数,fread返回值有1、0,分别是成功,失败的意思2)在程序中float与int要根据数据得取值情况,还有字符串类型的使用, 在求学生成绩平均值的时候,因为字符串类型不一致,导致数据结果失真,这样 的错误不应再犯。3.6设计结果录入一条或多条学生数据ZO3|L此H |删除一条或多条学生数据按姓名查找一条或多条学生数据增加一条或多条学生数据修改一条或多条学生数据按学生平均成绩排序Oj3367

19、33hu:lu匚S5. 00 85.0096. 00阪0078.0078.00E5.007S.000096. 0065. 0065 00gy gh hl56 0044* 0045.0045.0075. 0085. 00 5生UO 5生0095.0095. 0065. 0063. 00ZO? IUr|3 O3 O4. 按姓名晋询学生记录5. 按平均成绩排序工保存文件7很屮 洁选择(1却):5学号娃名英语腹责数学成绩物理成绩平均成绩14D31404140514011406140214011403陋4.学生成绩管琨奚统 増加/录入学主记录修改学生记录3. 删除学生记录4. 按姓名弯询学生记录乩按平均成绩排序氐保存文件7,退岀 请选择(1切:保存文件到根目录140

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论