版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本文档大部分来自湖工程大神的文档 我把实习报告全部整理了一下 欢迎大家参考一下虽然我的水平很渣渣哈哈2015.7.10程序实习报告题 目: 学生综合测评系统 姓 名 学 号 专 业 通信工程 班 级 指导教师 编写日期 2015-7-8 1、 学生测评系统具体要求:每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。a、学生信息处理(1) 输入学生信息、学号、姓名、性别、家庭
2、住址、联系电话,按学号以小到大的顺序存入文件中。提示:学生信息可先输入到数组中,排序后可写到文件中。(2) 插入(修改)同学信息:提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,(3) 删除同学信息:提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。(4) 浏览学生信息:提示:打开文件,显示该文件的学生信息。b、学生数据处理:(1) 按考试科目录入学生成绩并且按公式:考试成绩(语文+数学+外语)/3 计算考试成绩,并计算考试名次,提示:先把学生信
3、息读入数组,然后按提示输入每科成绩,计算考试成绩,求出名次,最后把学生记录写入一个文件中。(2) 学生测评数据输入并计算综合测评总分及名次。提示:综合测评总分(考试成绩)*0.6+(同学互评分)*0.1+品德成绩*0.1+任课老师评分*0.2。(3) 学生数据管理提示:输入学号,读出并显示该同学信息,输入新数据,将改后信息写入文件(4) 学生数据查询:提示:输入学号或其他信息,即读出所有数据信息,并显示出来。c、学生综合信息输出提示:输出学生信息到屏幕。二、总体设计 三、详细设计(要求列出所有编写的函数清单,说明每个函数的功能,各形式参数的意义,画出各函数的调用关系图。即模块功能说明(如函数功
4、能、入口及出口参数说明,函数调用关系描述等)。)l void chushihua();初始化函数l char menu();欢迎界面(目录)l void inputinfo();输入信息函数l void view();查询l void xiugai();修改l void del();删除l void paiming1(struct student_info student);定义排名l void paiming2(struct student_info student);l void viewall();输出所有信息l void clean();清除所有函数l void zz();作者信息l
5、void paimingview();排名查询l void exit();推出l struct student_info input();定义学生结构体l 函数调用基本按照流程图所画关系调用四、程序运行结果测试与分析1.void chushihua() 初始化函数 初始化函数用于从硬盘中加载学生数据和学生数目。首先,从硬盘读取counter.dat的数据。若不存在counter.dat则说明程序第一次运行。创建counter.dat和student_data.dat,把counter的初始值赋为1。若存在counter.dat.则读取其中数据,把数据赋给变量counter,这个值为已储存的学生
6、信息数量。这个counter变量就是计数器变量。用来计量学生信息数量的变化。2.meue() 函数meue函数用来显示选项菜单,并将用户所选的序号返回。主函数中的变量select接收到meue的返回值。通过开关语句,选择需要使用的功能。3.void inputinfo() 录入学生信息输入学生的信息。学生信息由以下结构体定义。struct student_info int num;/学号char name6;/姓名char sex5;/性别char adress20;/家庭住址char tel10;/电话int chinese,math,english,huping,pingde,jiaopi
7、ng,paiming1,paiming2; /语文 数学 英语 互评 品德 教评 double ave,zhongping;/ 平均 综合;inputinfo调用input函数。在input函数中的局部变量stu中录入数据,然后input函数返回stu给inputinfo中的结构体数组的counter号元素。然后,inputinfo通过sortinfo();savestruct();saveint();将数组按学号排序,并存储结构体student和counter。4.void del() 删除信息删除信息函数,从要删除位信息开始,前位用后一位覆盖,直到数组结束。并同时将counter减1。之后
8、调用savestruct();saveint();储存student结构体数组和counter计数变量。5.void paiming1() / void paiming2() 成绩排名排名函数将student的给个元素的首地址储存在pn指针数组中。通过冒泡法将指针数组排序。接下来,按顺序把指针数组顺序,把排名赋给student的成员paiming1,paiming2。冒泡排序for(i=0;icounter-1;i+)for(j=i+1;jave ave)temp=pi;pi=pj;pj=temp;排名名词给每一个student的成员paiming1或paiming2。for(i=0;ipai
9、ming1=i+1;这一步的目的就是为了把所有信息排名。6.void viewall() 浏览全部学生信息void viewall()int i;for(i=0;icounter;i+)viewinfo(&studenti);printf(n);getchar();printf(回车键返回.);getchar();system(cls);7.void clean() 清除所有信息counter计数变量清零,counter.dat清空,student_info.dat清空。8. void paimingview() 查询排名根据输入的学号查询排名五、结论与心得其实在编写程序的过程中,我发现很多地
10、方都可以用一些简单的思路考虑,比如在进行第五步排名的过程过,用的也是冒泡排序,不过就仅仅只是不用整型数据交换而是结构体交换。其次在排名成与其排列构造体数组,我更推荐新建一个指针数组,来排列这个指针数组来代替排列构造体数组。很显然,排列指针比排列构造体要快捷多了。而且在关于存储数据方面,我们主动设计程序使他保存下来,然后在程序刚刚启动的初始化过程中,加载counter.dat和student_info.dat进入内存,使得上次数据保留下来,并且可以随意修改。当然,在本次实习中,我感觉最有收获的是过程,虽然才刚开始接触结构体、指针,不过在编写过程中,由于对知识的匮乏吸引我不断看书,以及通过在课余时
11、间恶补结构体等网络教学视频,使我真真切切的学会一种学习方法。当然虽然到最后,大部分程序也是借鉴网络平台,但也通过这些程序以及运行之后的效果进一步实践了那么多知识点。这一些我感觉是我收获最大的地方。六程序源代码 学生综合测评系统2015-07-08#include#include#include#define n 100/-函数声明-void chushihua();char menu();void inputinfo();void view();void xiugai();void del();void paiming1(struct student_info student);void pa
12、iming2(struct student_info student);void viewall();void clean();void zz();void paimingview();void exit();struct student_info input();void sort(struct student_info student);void viewinfo(struct student_info *sp);void savestruct(struct student_info *sp,int size,int n,char filename20);void loadstruct(s
13、truct student_info *sp,int size,int n,char filename20);void saveint(int *p,int size,int n,char filename20);void loadint(int *p,int size,int n,char filename20);int numexist(struct student_info student,int num);/-定义学生信息结构体-struct student_info int num;/学号char name6;/姓名char sex5;/性别char address20;/家庭住址c
14、har tel10;/电话int chinese,math,english,huping,pingde,jiaoping,paiming1,paiming2; /语文 数学 英语 互评 品德 教评 double ave,zhongping;/ 平均 综合/每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、英语三门单科得分、/考试平均得分、考试名次、互评、品德、教评、综合测评总分、综合测评名次。/考试平均得分、互评、品德、教评分别占综合测评总分的60%,10%,10%,20%。;/-定义全局结构体数据-struct student_info studentn;int count
15、er,pm;/-主函数-void main()char select;chushihua(); /调用初始化函数while(1)select=menu();switch(select)case 1:system(cls);inputinfo(); break; /选项1:输入学生信息case 2:system(cls); view(); break; /选项2:浏览学生信息case 3:system(cls);xiugai(); break; /选项3:修正学生信息case 4:system(cls);del(); break; /选项4:删除学生信息case 5:system(cls); p
16、aiming1(student);paiming2(student);pm=1;getchar();getchar();system(cls); break; /选项5:学生信息排名case 6: system(cls); viewall();break; /选项6:浏览全部学生信息case 7: system(cls); clean();break;/选项7:清除所有信息case 8: system(cls); paimingview();break;/选项8:查询排名case 9: system(cls); zz();break;/选项9:寻找作者case 0:system(cls); e
17、xit(0); /选项10:退出/-初始化函数-void chushihua()file *fp;fp=fopen(counter.dat,rb);/打开计数变量counter文件if(fp!=null)/载入counterfclose(fp);loadint(&counter,sizeof(counter),1,counter.dat);elsefp=fopen(counter.dat,wb);/若没有counter文件,则创建一个,counter初始为0。fclose(fp);counter=0;if(counter!=0) /载入学生数据loadstruct(student,sizeof
18、(struct student_info),counter,student_info.dat);/-欢迎函数-char menu()char select;system(color bc);while(1)system(cls);printf(t*n);printf(t menu to 学生综合测评系统 n);printf(tn);printf(tn);printf(t* 1.录入学生信息 2.浏览学生信息 * nn);printf(t* 3.修正学生信息 4.删除学生信息 * nn); printf(t* enter.作者 * nn);printf(t* 5.排名学生得分 6.浏览学生信息
19、* nn);printf(t* 7.清除所有数据 8.查询学生排名 * nn);printf(t* 0.退出 * nn); printf(n);printf(t输入相应的功能序号:);select=getchar();if(select=1|select=2|select=3|select=4|select=5|select=6|select=7|select=8|select=0)return select;system(cls);continue;else zz(); /-1.录入学生信息-void inputinfo()int i,n;printf(需要录入多少位学生的信息:);scan
20、f(%d,&n);system(cls);for(i=1;i=n;i+)studentcounter=input();counter+;pm=0;sort(student);savestruct(student,sizeof(struct student_info),counter,student_info.dat);saveint(&counter,sizeof(counter),1,counter.dat);/-2.游览学生信息-void view()int i,num;printf(请输入需要游览的学生信息的学号:);scanf(%d,&num);getchar();if(i=numex
21、ist(student,num)=-1)printf(不存在该学号,按回车键返回.);getchar();system(cls);return;viewinfo(&studenti);printf(n按回车键返回.);getchar();system(cls);return;/-3.修正学生信息-void xiugai()int i,num;char yn,select;printf(请输入需要修正的学生信息的学号:);scanf(%d,&num);getchar();if(i=numexist(student,num)=-1)printf(不存在该学号,按回车键返回.);getchar();
22、system(cls);return;viewinfo(&studenti);printf(是否要修正?(y/n):);scanf(%c,&yn);getchar();if(yn !=y& yn !=y)printf(修正取消.);getchar();system(cls);return;system(cls);printf(1.学号 n);printf(2.性别 n);printf(3.家庭住址 n);printf(4.联系电话 n);printf(5.语文得分 n);printf(6.数学得分 n);printf(7.英语得分 n);printf(8.互评 n);printf(9.品德 n
23、);printf(0.教评 n);scanf(%c,&select);switch(select)case 1:printf(修正学号:);scanf(%d,&studenti.num);break;case 2:printf(修正性别:);scanf(%s,&studenti.sex);break;case 3:printf(修正家庭住址:);scanf(%s,&studenti.address);break;case 4:printf(修正联系电话:);scanf(%s,&studenti.tel);break;case 5:printf(修正语文得分:);scanf(%d,&studen
24、ti.chinese);break;case 6:printf(修正数学得分:);scanf(%d,&studenti.math);break;case 7:printf(修正英语得分:);scanf(%d,&studenti.english);break;case 8:printf(修正互评:);scanf(%d,&studenti.huping);break;case 9:printf(修正品德:);scanf(%d,&studenti.pingde);break;case 0:printf(修正教评:);scanf(%d,&studenti.jiaoping);break;sort(st
25、udent);savestruct(student,sizeof(struct student_info),counter,student_info.dat);pm=0;getchar();printf(修正完成.);getchar();system(cls);/-4.删除学生信息-void del()int i,j,num;char yn;printf(请输入要删除的学生信息学号:);scanf(%d,&num);getchar();if(i=numexist(student,num)=-1)printf(没有该学号,按回车键返回.);getchar();system(cls);return
26、;viewinfo(&studenti);printf(n确认删除(y/n):);scanf(%c,&yn);getchar();if(yn!=y & yn!=y)printf(删除取消.);elsefor(j=i;jcounter-1;j+)studentj=studentj+1;counter-;pm=0;savestruct(student,sizeof(struct student_info),counter,student_info.dat);saveint(&counter,sizeof(counter),counter,counter.dat);printf(删除完成.);get
27、char();system(cls);/-平均分、综合分排名-void paiming1(struct student_info student)struct student_info *pn,*temp;int i,j;for(i=0;icounter;i+)pi=&studenti;for(i=0;icounter-1;i+)for(j=i+1;jave ave)temp=pi;pi=pj;pj=temp;for(i=0;ipaiming1=i+1;printf(平均分排名完成.n);/综合测评分排名void paiming2(struct student_info student)str
28、uct student_info *pn,*temp;int i,j;for(i=0;icounter;i+)pi=&studenti;for(i=0;icounter-1;i+)for(j=i+1;jzhongping zhongping)temp=pi;pi=pj;pj=temp;for(i=0;ipaiming2=i+1;printf(综合测评分排名完成.n);/-6.浏览所有学生信息-void viewall()int i;for(i=0;inum);getchar();if(numexist(student,sp-num)!=-1)printf(该学号已存在,请重新输入.);getc
29、har();system(cls);continue;break;printf(录入姓名:);gets(sp-name);printf(录入性别:);gets(sp-sex);printf(录入家庭住址:);gets(sp-address);printf(录入联系电话:);gets(sp-tel);printf(n接下来录入得分n);printf(语文:);scanf(%d,&sp-chinese);printf(数学:);scanf(%d,&sp-math);printf(英语:);scanf(%d,&sp-english);sp-ave=(sp-chinese+sp-math+sp-eng
30、lish)/3.0;printf(同学互评:);scanf(%d,&sp-huping);printf(品德分数:);scanf(%d,&sp-pingde);printf(教师评价:);scanf(%d,&sp-jiaoping);getchar();sp-zhongping=(sp-ave*0.6+sp-huping*0.1+sp-pingde*0.1+sp-jiaoping*0.2);printf(录入完毕,确认信息是否正确(y/n);yn=getchar();getchar();if(yn=y| yn=y)break;elseprintf(按回车键重新录入信息。);getchar();system(cls);continue;system(cls);return stu;/-排序函数-void sort(struct student_info student)int i,j;struct student_i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程安装窗户合同范本
- 工业原料采购合同范本
- 山岭租赁合同协议模板
- 工程临时水电合同范本
- 工程进度担保合同范本
- 学校食堂厨师合同范本
- 工程维修承接合同范本
- 耳声发射应用x教案
- 小学六年级语文爷爷的毡靴教案及教学反思(2025-2026学年)
- 洁净室空气处理过程图教案
- NB-T20048-2011核电厂建设项目经济评价方法
- 生物医学分析化学方程式总结
- 钯金的选矿工艺
- 家庭系统疗法
- 四川省遂宁市2024届高三上学期零诊考试高三生物答案
- 桥梁施工技术培训课件
- 南部山区仲宫街道乡村建设规划一张表
- 锅炉焊接工艺规程
- 中学生地理奥林匹克竞赛(高中组)试题
- GB/T 4291-2017冰晶石
- GB/T 4249-2018产品几何技术规范(GPS)基础概念、原则和规则
评论
0/150
提交评论