ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:268.58KB ,
资源ID:7179003      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7179003.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言成绩查询系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言成绩查询系统.docx

1、C语言成绩查询系统 C语言大作业姓 名: 班 级: 学 号: 指 导 教 师: 设 计 时 间: 一.目的1.1、 通过本次大作业,锻炼我们应用C语言的语法规则和已经掌握的算法,自己解决一个较简单的课题,初步积累编程经验。1.2、 通过学习掌握程序设计的方法与编程技术,学会良好的程序设计风格,为计算机在不同领域的应用打下坚实的基础。1.3、 要求我们能利用计算机解决实际问题。从分析问题入手,设计可行的算法,进而编出相应的C程序。强调上机实践过程,从实际应用出发,注重程序的实际应用。 二.题目描述和要求题目:学生成绩管理系统应用链表及外部文件,独立设计上述应用系统,并编程实现以下功能:2.1 信

2、息录入录入学生信息(包括姓名、学号、各科成绩)。2.2信息查询输入学号,查询与学号相对应的信息(包括成绩),并按可选的自定义规则进行排序。按班级查询学生成绩。按班级统计学科总分、平均分等。2.3 信息删除与修改输入学号,删除该学号对应的成绩信息。输入学号,查询并显示出该学号信息,并在此基础上进行修改。2.4 计算学生成绩计算每位学生的总分。计算每位学生的平均分。成绩排序。2.5信息保存将学生信息保存在文件中。2.6根据以上功能需求,定义通讯录信息结构,并采用链表结构对数据进行存储。2.7提供友好的用户界面,方便用户操作。三.报告内容3.1需求分析随着当今社会发展,信息化水平逐步提高,对教务管理

3、有了新的要求,因此,编写一个信息管理系统是十分有必要的。该软件主要是实现对学生信息进行系统化的管理,首先可以对学生基本信息进行输入和读取,其次查找并显示特定学生的相关信息,然后可以插入学生的相关信息,还有就是可按学生相关信息排序,以求达到简易操作的目的。3.2 概要设计1系统结构图(功能模块图)和数据变量说明2.系统总体流程图 3.3 详细设计源文件函数名或其他成分功能student.cpp函数名或其他成分功能main总控函数int choice菜单选择switch(choice)菜单处理IO_WriteInfo新建学生信息记录exit结束运行Student_Insert增加学生信息Stude

4、nt_Display显示信息Student_Delete删除指定的记录Student_Select查询指定学生的信息Student_Modify修改指定学生的信息Student_SortByAverage排序student.h结构声明学生成绩结构库函数及函数原型声明引用库函数及函数3.4 主要源程序代码#include #include#include struct Student char ID20; char Name20; float scor_eng; float scor_math; float scor_phy; float Average; ; struct Student st

5、udents1000; int num=0; float Avg(struct Student stu) return (stu.scor_eng+stu.scor_math+stu.scor_phy)/3; int Student_SearchByIndex(char id) int i; for (i=0;inum;i+) if (strcmp(studentsi.ID,id)=0) return i; return -1; int Student_SearchByName(char name) int i; for (i=0;inum;i+) if (strcmp(studentsi.N

6、ame,name)=0) return i; return -1; void Student_DisplaySingle(int index) printf(%10s%10s%8s%8s%8s%10sn,学号,姓名,英语成绩,数学成绩,物理成绩,平均成绩); printf(-n); printf(%10s%10s%8.2f%8.2f%8.2f%10.2fn,studentsindex.ID,studentsindex.Name, studentsindex.scor_eng,studentsindex.scor_math,studentsindex.scor_phy,studentsindex

7、.Average); void Student_Insert() while(1) printf(请输入学号:); scanf(%s,&studentsnum.ID); getchar(); printf(请输入姓名:); scanf(%s,&studentsnum.Name); getchar(); printf(请输入英语成绩:); scanf(%f,&studentsnum.scor_eng); getchar(); printf(请输入数学成绩:); scanf(%f,&studentsnum.scor_math); getchar(); printf(请输入物理成绩:); scanf

8、(%f,&studentsnum.scor_phy); getchar(); studentsnum.Average=Avg(studentsnum); num+; printf(是否继续?(y/n); if (getchar()=n) break; void Student_Modify() while(1) char id20; int index; printf(请输入要修改的学生的学号:); scanf(%s,&id); getchar(); index=Student_SearchByIndex(id); if (index=-1) printf(学生不存在!n); else pri

9、ntf(你要修改的学生信息为:n); Student_DisplaySingle(index); printf(- 请输入新值-n); printf(请输入学号:); scanf(%s,&studentsindex.ID); getchar(); printf(请输入姓名:); scanf(%s,&studentsindex.Name); getchar(); printf(请输入英语成绩:); scanf(%f,&studentsindex.scor_eng); getchar(); printf(请输入数学成绩:); scanf(%f,&studentsindex.scor_math);

10、getchar(); printf(请输入物理成绩:); scanf(%f,&studentsindex.scor_phy); getchar(); studentsindex.Average=Avg(studentsindex); printf(是否继续?(y/n); if (getchar()=n) break; void Student_Delete() int i; while(1) char id20; int index; printf(请输入要删除的学生的学号:); scanf(%s,&id); getchar(); index=Student_SearchByIndex(id)

11、; if (index=-1) printf(学生不存在!n); else printf(你要删除的学生信息为:n); Student_DisplaySingle(index); printf(是否真的要删除?(y/n); if (getchar()=y) for (i=index;inum-1;i+) studentsi=studentsi+1; num-; getchar(); printf(是否继续?(y/n); if (getchar()=n) break; void Student_Select() while(1) char name20; int index; printf(请输

12、入要查询的学生的姓名:); scanf(%s,&name); getchar(); index=Student_SearchByName(name); if (index=-1) printf(学生不存在!n); else printf(你要查询的学生信息为:n); Student_DisplaySingle(index); printf(是否继续?(y/n); if (getchar()=n) break; void Student_SortByAverage() int i,j; struct Student tmp; for (i=0;inum;i+) for (j=1;jnum-i;j

13、+) if (studentsj-1.Averagestudentsj.Average) tmp=studentsj-1; studentsj-1=studentsj; studentsj=tmp; void Student_Display() int i; printf(%10s%10s%8s%8s%8s%10sn,学号,姓名,英语成绩,数学成绩,物理成绩,平均成绩); printf(-n); for (i=0;inum;i+) printf(%10s%10s%8.2f%8.2f%8.2f%10.2fn,studentsi.ID,studentsi.Name, studentsi.scor_

14、eng,studentsi.scor_math,studentsi.scor_phy,studentsi.Average); void IO_ReadInfo() FILE *fp; int i; if (fp=fopen(Database.txt,rb)=NULL) printf(不能打开文件!n); return; if (fread(&num,sizeof(int),1,fp)!=1) num=-1; else for(i=0;inum;i+) fread(&studentsi,sizeof(struct Student),1,fp); fclose(fp); void IO_Write

15、Info() FILE *fp; int i; if (fp=fopen(Database.txt,wb)=NULL) printf(不能打开文件!n); return; if (fwrite(&num,sizeof(int),1,fp)!=1) printf(写入文件错误!n); for (i=0;inum;i+) if (fwrite(&studentsi,sizeof(struct Student),1,fp)!=1) printf(写入文件错误!n); fclose(fp); int main() int choice; IO_ReadInfo(); while(1) printf(n

16、- 学生成绩管理系统-n); printf(1. 增加学生记录n); printf(2. 修改学生记录n); printf(3. 删除学生记录n); printf(4. 按姓名查询学生记录n); printf(5. 按平均成绩排序n); printf(6. 保存文件n); printf(7. 退出n); printf(请选择(1-7):); scanf(%d,&choice); getchar(); switch(choice) case 1: Student_Insert(); break; case 2: Student_Modify(); break; case 3: Student_D

17、elete(); break; case 4: Student_Select(); break; case 5: Student_SortByAverage(); Student_Display(); break; case 6: IO_WriteInfo(); break; case 7: exit(0); break; 3.5 测试分析C语言是上学期的学习内容,现在生疏了很多,以致程序运行过程中有许多bug,测试也有很多想不到的错误。下面列举几个例子: 1)IO_ReadInfo读出文件If(fp=fopen(“database.txt”,”rb”))=NULL)以二进制的格式读取文件的模

18、式打开database.txt文件,并把文件指针赋值为文件读取指针 IO_WriteInfo写入文件If(fp=fopen(“database.txt”,”rb”))=NULL)以二进制写入方式打开文件,和读取类似。在写这个函数的时候总是不能读出,而且写入也有问题,if (fwrite(&num,sizeof(int),1,fp)!=1)因为sizeof(int)是指一次读入的二进制数据单位个数,后面的“1”表示要读取的次数,fread返回值有1、0,分别是成功,失败的意思。 2)在程序中float与int要根据数据得取值情况,还有字符串类型的使用,在求学生成绩平均值的时候,因为字符串类型不一

19、致,导致数据结果失真,这样的错误不应再犯。3.6 设计结果录入一条或多条学生数据删除一条或多条学生数据按姓名查找一条或多条学生数据增加一条或多条学生数据修改一条或多条学生数据按学生平均成绩排序保存文件到根目录退出程序四.结论与心得通过一周的上机实习,我对C语言又有了自己的一点认识。C语言的学习是一个系统的过程,不像其它学科知识,C语言必须自己亲自一个个代码打出来,自己对那个代码要有自己的了解,怎么用,如何用更好,还可以怎么用,都要通过自己联系才有体会,在实践中成长,在实践中求知。这次设计的课题是学生信息管理系统。课题要求对学生信息实现一系列基本操作。我选择通过结构体数组和指针来实现这个设计。但是,设计完成后关于用学号输出成绩还是用姓名都是可以的。但用学号输入时有很多麻烦都是之前没有料到的,换成姓名输入后,就简单多了。总之,通过这次实习,我也认识到了我自己在程序设计这门课程上的不足,在以后的学习实践中,要更加的严谨踏实,对知识的把握要更加的细致入微,要活学活用,争取在这个学科上取得更大的进步。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1