学生成绩管理.doc
《学生成绩管理.doc》由会员分享,可在线阅读,更多相关《学生成绩管理.doc(35页珍藏版)》请在三一文库上搜索。
1、 集中上机实习报告 指导教师: 李琳皓 姓 名: 徐莉娟 学 号: 2012213338 班 级: 1101204 时 间: 2013年6月 目 录一、本课程的地位、作用与目的.- 3-二、课程的基本要求- 3 -三、设计整体规划及方案- 3 -四、功能分析及设计任务- 3 -五、流程图- 4 -六、测试截图- 5 -七、个人心得体会- 8 -八、源程序- 8 -一、本课程的地位、作用与目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定
2、基础。二、课程的基本要求 学生成绩管理(限最多2人完成)1.主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序(3)能查询学生成绩,不及格科目及学生名单 (4)能按班级输出学生的成绩单 (5)系统以菜单方式工作三、设计整体规划及方案整个程序的设计是通过对每一个功能的设计,然后,再对每一个功能的程序进行模块化,从而形成一个完整的学生成绩管理系统。在对于给定问题进行透彻的了解和详细的分析的基础上,把问题分解成若干个按顺序执行的逻辑部分。每个子任务如果仍很复杂,还可以再分解为若干个子任务,如此逐层分解。4、 功
3、能分析及设计任务能按学期、按班级完成对学生成绩的录入、修改。能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序。能查询学生成绩,不及格科目及学生名单。能按班级输出学生的成绩单。系统以菜单方式工作。 五、流程图开始 开始主界面 查询学生信息退出本系统删除学生信息按单科排序按总分排序插入学生成绩修改学生信息输出学生成绩输入学生成绩 结束 6、 测试结果七、个人心得体会通过本次课程的学习我知道了我在C语言方面明显的不足,看了实验要求后我很茫然,我不知道那些题目我有把握做出来。选好了题目之后我开始想制作程序,我甚至不知道从哪里着手,于是我开始将大困难细化,先解决小功能再解决主
4、界面的困难。全都写完了之后,编译后有好多错误,我有很大挫败感,我开始上网查资料、请教同学等等,每少一个错误我都有成就感。最后编译成功了,正常运行了的时候我真的觉得自己很不错。但是在这之间我也深刻体会到了我在C语言方面的不足,还有很多要学习。八、源程序#include #include #include /*定义学生结构体*/struct Studentchar ID20;char Name20;float Mark1;float Mark2;float Mark3;float Average;/*声明学生数组及学生数量*/struct Student students1000;int num=
5、0;/*求平均值*/float Avg(struct Student stu)return (stu.Mark1+stu.Mark2+stu.Mark3)/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.Name,na
6、me)=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.Mark1,studentsindex.Mark2,studentsindex.Mark3,studentsindex.Average);/*插入学生信
7、息*/void Student_Insert()while(1)printf(请输入学号:);scanf(%s,&studentsnum.ID);getchar();printf(请输入姓名:);scanf(%s,&studentsnum.Name);getchar();printf(请输入成绩:);scanf(%f,&studentsnum.Mark1);getchar();printf(请输入成绩:);scanf(%f,&studentsnum.Mark2);getchar();printf(请输入成绩:);scanf(%f,&studentsnum.Mark3);getchar();st
8、udentsnum.Average=Avg(studentsnum);num+;printf(是否继续?(y/n);if (getchar()=n)break;/*修改学生信息*/void Student_Modify()float mark1,mark2,mark3;while(1)char id20;int index;printf(请输入要修改的学生的学号:);scanf(%s,&id);getchar();index=Student_SearchByIndex(id);if (index=-1)printf(学生不存在!n);elseprintf(你要修改的学生信息为:n);Stude
9、nt_DisplaySingle(index);printf(- 请输入新值-n);printf(请输入学号:);scanf(%s,&studentsindex.ID);getchar();printf(请输入姓名:);scanf(%s,&studentsindex.Name);getchar();printf(请输入成绩:);scanf(%f,&studentsindex.Mark1);getchar();printf(请输入成绩:);scanf(%f,&studentsindex.Mark2);getchar();printf(请输入成绩:);scanf(%f,&studentsindex
10、.Mark3);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);if (index=-1)printf(学生不存在!n);elseprintf(你要删除的学生信息为:n);Stud
11、ent_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(请输入要查询的学生的姓名:);scanf(%s,&name);getchar();index=Student_SearchByName(nam
12、e);if (index=-1)printf(学生不存在!n);elseprintf(你要查询的学生信息为: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+)if (studentsj-1.Averagestudentsj.Average)tmp=studentsj-1;studentsj-1=stud
13、entsj;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.Mark1,studentsi.Mark2,studentsi.Mark3,studentsi.Average);/*将学生信息从文件读出*/void IO_ReadInfo
14、()FILE *fp;int i;if (fp=fopen(Database.txt,rb)=NULL)printf(不能打开文件!n);return;if (fread(&num,sizeof(int),1,fp)!=1)num=-1;elsefor(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);retur
15、n;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);/*主程序*/void main()int choice;IO_ReadInfo();while(1)/*主菜单*/printf(n- 学生成绩管理系统-n);printf(1. 增加学生记录n);printf(2. 修改学生记录n);printf(3. 删除学生记录n);printf(
16、4. 按姓名查询学生记录n);printf(5. 按平均成绩排序n);printf(6. 退出n);printf(请选择(1-6):);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:exit(0);
17、break;IO_WriteInfo(); 1、#include #include #include /*定义学生结构体*/struct Student char ID20; char Name20; float Mark1; float Mark2; float Mark3; float Average;/*声明学生数组及学生数量*/struct Student students1000;int num=0;/*主程序*/void main()int choice;IO_ReadInfo();while(1)/*主菜单*/printf(n- 学生成绩管理系统-n);printf(1. 增加学
18、生记录n);printf(2. 修改学生记录n);printf(3. 删除学生记录n);printf(4. 按姓名查询学生记录n);printf(5. 按平均成绩排序n);printf(6. 退出n);printf(请选择(1-6):);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_Sort
19、ByAverage();Student_Display();break;case 6:exit(0);break;IO_WriteInfo(); 这两部分是自己完成的,其他地方都参考修改了别人的函数。其他部分的程序都大体可以看懂,对后面的文件函数掌握的相对来说比较好。2、当时选取第一题是因为觉得这道题相对简单,并且因为书上有这部分的相关内容,比较容易参考。在做这个程序的过程中,运用到了很多指针和结构体方面的知识,这方面是最近才学习到的知识,并且学习相对较浅,对他的运用不是很好。同时,我也发现,在运用结构体和指针的情况下,程序相对简单。但因为自己相关知识不足,所以无法独立完成程序的设计,所以自己
20、在参考网络资源和书本的情况下,修改完成了此程序。在完成这个程序的同时,自己对指针和结构体以及文件方面的知识有了不少的了解。自己也通过对这个程序的设计对C语言有了更多的了解。-下面是赠送的excel操作练习 不需要的下载后可以编辑删除(Excel 2003部分)1. 公式和函数1. (1)打开当前试题目录下文件excel-10.xls;(2)利用函数计算每个人各阶段总成绩,并利用函数计算各阶段的平均成绩;(3)“平均成绩”行数字格式都为带一位小数(例如0.0)格式;(4)同名存盘。步骤:a) 文件在各阶段总成绩单元格内,点插入,点函数,在对话框中选择求和函数“SUM”,在对话中Number1内点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 管理
链接地址:https://www.31doc.com/p-5183065.html