




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、可编辑 C语言大作业姓 名: 班 级: 学 号: 指 导 教 师: 设 计 时 间: 目 录一.目的7二.题目描述和要求7三.报告内容83.1需求分析83.2 概要设计83.3 详细设计83.4 主要源程序代码83.5 测试分析93.6 设计结果9四.结论与心得9一.目的1.1、 通过本次大作业,锻炼我们应用C语言的语法规则和已经掌握的算法,自己解决一个较简单的课题,初步积累编程经验。1.2、 通过学习掌握程序设计的方法与编程技术,学会良好的程序设计风格,为计算机在不同领域的应用打下坚实的基础。1.3、 要求我们能利用计算机解决实际问题。从分析问题入手,设计可行的算法,进而编出相应的C程序。强
2、调上机实践过程,从实际应用出发,注重程序的实际应用。 二.题目描述和要求题目:学生成绩管理系统应用链表及外部文件,独立设计上述应用系统,并编程实现以下功能:2.1 信息录入录入学生信息(包括姓名、学号、各科成绩)。2.2信息查询输入学号,查询与学号相对应的信息(包括成绩),并按可选的自定义规则进行排序。按班级查询学生成绩。按班级统计学科总分、平均分等。2.3 信息删除与修改输入学号,删除该学号对应的成绩信息。输入学号,查询并显示出该学号信息,并在此基础上进行修改。2.4 计算学生成绩计算每位学生的总分。计算每位学生的平均分。成绩排序。2.5信息保存将学生信息保存在文件中。2.6根据以上功能需求
3、,定义通讯录信息结构,并采用链表结构对数据进行存储。2.7提供友好的用户界面,方便用户操作。三.报告内容3.1需求分析随着当今社会发展,信息化水平逐步提高,对教务管理有了新的要求,因此,编写一个信息管理系统是十分有必要的。该软件主要是实现对学生信息进行系统化的管理,首先可以对学生基本信息进行输入和读取,其次查找并显示特定学生的相关信息,然后可以插入学生的相关信息,还有就是可按学生相关信息排序,以求达到简易操作的目的。3.2 概要设计1系统结构图(功能模块图)和数据变量说明主菜单输入列表查找增加修改排序保存退出2.系统总体流程图开始编译运行有/错MAIN有无调用MENUK0EXITK=0 调用各
4、个功能函数(K=?)连接执行错误 输入正确3.3 详细设计源文件函数名或其他成分功能student.cpp函数名或其他成分功能main总控函数int choice菜单选择switch(choice)菜单处理IO_WriteInfo新建学生信息记录exit结束运行Student_Insert增加学生信息Student_Display显示信息Student_Delete删除指定的记录Student_Select查询指定学生的信息Student_Modify修改指定学生的信息Student_SortByAverage排序student.h结构声明学生成绩结构库函数及函数原型声明引用库函数及函数3.4
5、 主要源程序代码#include #include#include struct Student char ID20; char Name20; float scor_eng; float scor_math; float scor_phy; float Average; ; struct Student students1000; 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
6、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.Name,name)=0) return i; return -1; void Student_DisplaySingle(int index) printf(%10s%10s%8s%8s%8s%10sn,学号,姓名,英语成绩,数学成绩,物理成绩,平均成绩); printf(-n); pr
7、intf(%10s%10s%8.2f%8.2f%8.2f%10.2fn,studentsindex.ID,studentsindex.Name, studentsindex.scor_eng,studentsindex.scor_math,studentsindex.scor_phy,studentsindex.Average); void Student_Insert() while(1) printf(请输入学号:); scanf(%s,&studentsnum.ID); getchar(); printf(请输入姓名:); scanf(%s,&studentsnum.Name); get
8、char(); printf(请输入英语成绩:); scanf(%f,&studentsnum.scor_eng); getchar(); printf(请输入数学成绩:); scanf(%f,&studentsnum.scor_math); getchar(); printf(请输入物理成绩:); scanf(%f,&studentsnum.scor_phy); getchar(); studentsnum.Average=Avg(studentsnum); num+; printf(是否继续?(y/n); if (getchar()=n) break; void Student_Modif
9、y() while(1) char id20; int index; printf(请输入要修改的学生的学号:); scanf(%s,&id); getchar(); index=Student_SearchByIndex(id); if (index=-1) printf(学生不存在!n); else printf(你要修改的学生信息为:n); Student_DisplaySingle(index); printf(- 请输入新值-n); printf(请输入学号:); scanf(%s,&studentsindex.ID); getchar(); printf(请输入姓名:); scan
10、f(%s,&studentsindex.Name); getchar(); printf(请输入英语成绩:); scanf(%f,&studentsindex.scor_eng); getchar(); printf(请输入数学成绩:); scanf(%f,&studentsindex.scor_math); getchar(); printf(请输入物理成绩:); scanf(%f,&studentsindex.scor_phy); getchar(); studentsindex.Average=Avg(studentsindex); printf(是否继续?(y/n); if (getc
11、har()=n) break; void Student_Delete() int i; while(1) char id20; int index; printf(请输入要删除的学生的学号:); scanf(%s,&id); getchar(); index=Student_SearchByIndex(id); if (index=-1) printf(学生不存在!n); else printf(你要删除的学生信息为:n); Student_DisplaySingle(index); printf(是否真的要删除?(y/n); if (getchar()=y) for (i=index;in
12、um-1;i+) studentsi=studentsi+1; num-; getchar(); printf(是否继续?(y/n); if (getchar()=n) break; void Student_Select() while(1) char name20; int index; printf(请输入要查询的学生的姓名:); scanf(%s,&name); getchar(); index=Student_SearchByName(name); if (index=-1) printf(学生不存在!n); else printf(你要查询的学生信息为:n); Student_Di
13、splaySingle(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+) if (studentsj-1.Averagestudentsj.Average) tmp=studentsj-1; studentsj-1=studentsj; studentsj=tmp; void Student_Display() int i; printf(%10s%10
14、s%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_eng,studentsi.scor_math,studentsi.scor_phy,studentsi.Average); void IO_ReadInfo() FILE *fp; int i; if (fp=fopen(Database.txt,rb)=NULL) printf(不能
15、打开文件!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_WriteInfo() FILE *fp; int i; if (fp=fopen(Database.txt,wb)=NULL) printf(不能打开文件!n); return; if (fwrite(&num,sizeof(int),1,fp)!=1) printf(写入文件错误!n); fo
16、r (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- 学生成绩管理系统-n); printf(1. 增加学生记录n); printf(2. 修改学生记录n); printf(3. 删除学生记录n); printf(4. 按姓名查询学生记录n); printf(5. 按平均成绩排序n); printf(6. 保存文件n); printf(
17、7. 退出n); printf(请选择(1-7):); scanf(%d,&choice); getchar(); switch(choice) case 1: Student_Insert(); break; case 2: Student_Modify(); break; case 3: Student_Delete(); break; case 4: Student_Select(); break; case 5: Student_SortByAverage(); Student_Display(); break; case 6: IO_WriteInfo(); break; case
18、7: exit(0); break; 3.5 测试分析C语言是上学期的学习内容,现在生疏了很多,以致程序运行过程中有许多bug,测试也有很多想不到的错误。下面列举几个例子: 1)IO_ReadInfo读出文件If(fp=fopen(“database.txt”,”rb”))=NULL)以二进制的格式读取文件的模式打开database.txt文件,并把文件指针赋值为文件读取指针 IO_WriteInfo写入文件If(fp=fopen(“database.txt”,”rb”))=NULL)以二进制写入方式打开文件,和读取类似。在写这个函数的时候总是不能读出,而且写入也有问题,if (fwrite(&num,sizeof
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纺织品质量控制与追溯系统考核试卷
- 电声器件在耳机与耳塞中的应用考核试卷
- 机床功能部件在石油钻采设备中的耐高温性能考核试卷
- 糕点店经营风险与应对策略考核试卷
- 私募股权投资医疗健康行业分析考核试卷
- 静脉治疗护理技术操作标准2023版解读
- 3-2组合逻辑电路的设计
- 小学一年级数学20以内加减法测试题
- 内蒙古医科大学《室内装修工程》2023-2024学年第二学期期末试卷
- 江苏省南通市海安市十校联考2025届初三毕业班联考(二)数学试题试卷含解析
- 2025年初中团员考试试题及答案
- 2025年广东省中考模拟英语试卷(二)(原卷版+解析版)
- 北京市人民大附属中学2025届中考化学模拟试卷含解析
- 网线施工方案
- 2025年陕西省公民科学素质大赛考试题(附答案)
- 浙江首考2025年1月普通高等学校招生全国统考政治试题及答案
- 《DeepSeek入门宝典》第4册·个人使用篇
- 2024年04月徽商银行北京分行2024年招考对公客户经理笔试历年参考题库附带答案详解
- 2025年人教版六年级英语下册月考试卷
- 英语影视欣赏教案
- 《设计的可持续发展》课件
评论
0/150
提交评论