1、一.应用程序名称:Student.exe二.应用程序的主题、设计目的:应用程序的主题是管理好学生成绩,设计目的是进一步掌握和实践C语言编程。三、应用程序简介:1.基本结构:2.基本内容:编写一个成绩管理程序。每个学生的信息包含学生学号、姓名、性别和6门课程成绩。(1)学生信息创建(顺序存储和链式存储都可);(2)各个信息的输入与输出;(3)按总成绩实现升序排列;(4)按学号查询成绩;(5)输出各门课程成绩高于90和低于60的学生的姓名及该门课程的成绩。3.运行环境: 本程序使用Visual C+ 2008编译器制作,在windows 7 64bit系统中成功运行,windows XP也可正常运
2、行。 4.测试结果:经过测试,所要求的内容基本上达到,个人认为比较好的地方是筛选和排序,不足之处是不明白存储方面的知识,以及程序流程的认识。5.实验心得:参考了许多网上资料,存储方面的知识依然不懂,部分代码都不是自己写的,而且看不太懂,所以程序流程自己都不太清楚,但是,经过老师验收代码,说了很多问题之后,明白了那些不知道也不明白的问题,学到了很多东西,更好的理解了语言的编程,明白了看代码与写代码的实际区别,以后要好好努力。附录:/ 学生信息管理.cpp : 定义控制台应用程序的入口点。/#include stdio.h#include stdafx.h#include string.h#inc
3、lude stdlib.h/*定义学生结构体*/struct Student char ID20,Name20,Sex20; float Chinese/*语文*/; float Math/*数学*/; float English/*英语*/; float Physics/*物理*/; float Chemical/*化学*/; float Biological/*生物*/; float Add/*总分值*/;/*声明学生数组及学生数量*/struct Student students100;int num=0;/*求总成绩值*/float Add(struct Student stu) re
4、turn stu.Chinese+stu.Math+stu.English+stu.Physics+stu.Chemical+stu.Biological;/*通过学号返回数组下标*/int Student_SearchByIndex(char id) int i; for (i=0;inum;i+) if (strcmp(studentsi.ID,id)=0) return i; return -1;/*显示单条学生记录*/void Student_DisplaySingle(int index) printf(%8s%6s%6s%8s%8s%8s%8s%8s%8s%8sn,学号,姓名,性别
5、,语文,数学,英语,物理,化学,生物,总分); printf( -n); printf(%8s%6s%6s%8.1f%8.1f%8.1f%8.1f%8.1f%8.1fn,studentsindex.ID,studentsindex.Name,studentsindex.Sex, studentsindex.Chinese,studentsindex.Math,studentsindex.English, studentsindex.Physics,studentsindex.Chemical,studentsindex.Biological,studentsindex.Add);/*插入学生信
6、息*/void Student_Insert() while(1) printf(请输入学号:); scanf(%s,&studentsnum.ID); getchar(); printf(请输入姓名:); scanf(%s,&studentsnum.Name); getchar(); printf(请输入性别:); scanf(%s,&studentsnum.Sex); getchar(); printf(请输入语文成绩:); scanf(%f,&studentsnum.Chinese); getchar(); printf(请输入数学成绩:); scanf(%f,&studentsnum.
7、Math); getchar(); printf(请输入英语成绩:); scanf(%f,&studentsnum.English); getchar(); printf(请输入物理成绩:); scanf(%f,&studentsnum.Physics); getchar(); printf(请输入化学成绩:); scanf(%f,&studentsnum.Chemical); getchar(); printf(请输入生物成绩:); scanf(%f,&studentsnum.Biological); getchar(); studentsnum.Add=Add(studentsnum);
8、num+; printf(是否继续?(y/n); if (getchar()=n) system(cls); 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 printf(你要修改的学生信息为:n); Student_DisplaySingle(index); print
9、f(- 请输入新值-n); printf(请输入学号:); scanf(%s,&studentsindex.ID); getchar(); printf(请输入姓名:); scanf(%s,&studentsindex.Name); getchar(); printf(请输入性别:); scanf(%s,&studentsindex.Sex); getchar(); printf(请输入语文成绩:); scanf(%f,&studentsindex.Chinese); getchar(); printf(请输入数学成绩:); scanf(%f,&studentsindex.Math); get
10、char(); printf(请输入英语成绩:); scanf(%f,&studentsindex.English); getchar(); printf(请输入物理成绩:); scanf(%f,&studentsindex.Physics); getchar(); printf(请输入化学成绩:); scanf(%f,&studentsindex.Chemical); getchar(); printf(请输入生物成绩:); scanf(%f,&studentsindex.Biological); getchar(); studentsindex.Add=Add(studentsindex)
11、; printf(是否继续?(y/n); if (getchar()=n) system(cls); 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); pr
12、intf(是否真的要删除?(y/n); if (getchar()=y) for (i=index;inum-1;i+) studentsi=studentsi+1; num-; getchar(); printf(是否继续?(y/n); if (getchar()=n) system(cls); break; /*按学号查询*/void Student_Select() while(1) char id20; int index; printf(请输入要查询的学生的学号:); scanf(%s,&id); getchar(); index=Student_SearchByIndex(id);
13、 if (index=-1) printf(学生不存在!n); else printf(你要查询的学生信息为:n); Student_DisplaySingle(index); printf(是否继续?(y/n); if (getchar()=n) system(cls); break; /*按总分值排序*/void Student_SortByAdd() int i,j; struct Student tmp; for (i=0;inum;i+) for (j=1;jnum-i;j+) if (studentsj-1.Addstudentsj.Add) tmp=studentsj-1; st
14、udentsj-1=studentsj; studentsj=tmp; /*显示学生信息*/void Student_Display() int i; printf(%8s%6s%6s%8s%8s%8s%8s%8s%8s%8sn,学号,姓名,性别,语文,数学,英语,物理,化学,生物,总分); printf( -n); for (i=0;inum;i+) printf(%8s%6s%6s%8.1f%8.1f%8.1f%8.1f%8.1f%8.1f%8.1fn,studentsi.ID,studentsi.Name,studentsi.Sex, studentsi.Chinese,students
15、i.Math,studentsi.English,studentsi.Physics, studentsi.Chemical,studentsi.Biological,studentsi.Add); system(pause); system(cls);/*选出优秀学生信息*/void Student_90A()int i;printf(%10s%10s%10s%10s%10sn,科目,学号,姓名,性别,分数);printf( -n);for (i=0;i=90) printf(%10s%10s%10s%10s%10.1fn,语文,studentsi.ID,studentsi.Name,stu
16、dentsi.Sex,studentsi.Chinese); printf(n);void Student_90B()int i;for (i=0;i=90) printf(%10s%10s%10s%10s%10.1fn,数学,studentsi.ID,studentsi.Name,studentsi.Sex,studentsi.Math);printf(n);void Student_90C()int i;for (i=0;i=90) printf(%10s%10s%10s%10s%10.1fn,英语,studentsi.ID,studentsi.Name,studentsi.Sex,stu
17、dentsi.English);printf(n);void Student_90D()int i;for (i=0;i=90) printf(%10s%10s%10s%10s%10.1fn,物理,studentsi.ID,studentsi.Name,studentsi.Sex,studentsi.Physics);printf(n);void Student_90E()int i;for (i=0;i=90) printf(%10s%10s%10s%10s%10.1fn,化学,studentsi.ID,studentsi.Name,studentsi.Sex,studentsi.Chemi
18、cal);printf(n);void Student_90F()int i;for (i=0;i=90) printf(%10s%10s%10s%10s%10.1fn,生物,studentsi.ID,studentsi.Name,studentsi.Sex,studentsi.Biological);printf(n);/*选出不及格学生信息*/void Student_60A()int i;printf(%10s%10s%10s%10s%10sn,科目,学号,姓名,性别,分数);printf( -n);for (i=0;inum;i+) if (studentsi.Chinese60)pr
19、intf(%10s%10s%10s%10s%10.1fn,语文,studentsi.ID,studentsi.Name,studentsi.Sex,studentsi.Chinese);printf(n);void Student_60B()int i;for (i=0;inum;i+) if (studentsi.Math60) printf(%10s%10s%10s%10s%10.1fn,数学,studentsi.ID,studentsi.Name,studentsi.Sex,studentsi.Math);printf(n);void Student_60C()int i;for (i=
20、0;inum;i+) if (studentsi.English60) printf(%10s%10s%10s%10s%10.1fn,英语,studentsi.ID,studentsi.Name,studentsi.Sex,studentsi.English);printf(n);void Student_60D()int i;for (i=0;inum;i+) if (studentsi.Physics60) printf(%10s%10s%10s%10s%10.1fn,物理,studentsi.ID,studentsi.Name,studentsi.Sex,studentsi.Physic
21、s);printf(n);void Student_60E()int i;for (i=0;inum;i+) if (studentsi.Chemical60) printf(%10s%10s%10s%10s%10.1fn,化学,studentsi.ID,studentsi.Name,studentsi.Sex,studentsi.Chemical);printf(n);void Student_60F()int i;for (i=0;inum;i+) if (studentsi.Biological60) printf(%10s%10s%10s%10s%10.1fn,生物,studentsi
22、.ID,studentsi.Name,studentsi.Sex,studentsi.Biological);printf(n);/*将学生信息从文件读出*/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
23、);/*将学生信息写入文件*/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); for (i=0;inum;i+) if (fwrite(&studentsi,sizeof(struct Student),1,fp)!=1) printf(写入文件错误!n); fclose(fp);/*主程序*/int main() int choice
24、; IO_ReadInfo(); while(1) /*主菜单*/ printf(ntt- 学生成绩管理系统-nn); printf(ttt1. 增加学生成绩记录n); printf(ttt2. 修改学生成绩记录n); printf(ttt3. 删除学生成绩记录n); printf(ttt4. 按学号查询学生成绩记录n); printf(ttt5. 按总分值排序n); printf(ttt6. 各科优秀人(不低于)数n); printf(ttt7. 各科不及格(低于)人数n); printf(ttt8. 退出nn); printf(请选择(1-8):); scanf(%d,&choice);
25、getchar(); switch(choice) case 1:system(cls); Student_Insert(); break; case 2:system(cls); Student_Modify(); break; case 3:system(cls); Student_Delete(); break; case 4:system(cls); Student_Select(); break; case 5:system(cls); Student_SortByAdd(); Student_Display(); break; case 6:system(cls); Student_90A(); Student_90B(); Student_90C(); Student_90D(); Student_90E(); Student_90F(); break; case 7:system(cls); Student_60A(); Student_60B(); Student_60C(); Student_60D(); Student_60E(); Student_60F(); break; case 8:system(cls); return 0; break; IO_WriteInfo(); 第一:程序运行主界面第二:各项目外观