学生综合测评系统实习报告.docx
《学生综合测评系统实习报告.docx》由会员分享,可在线阅读,更多相关《学生综合测评系统实习报告.docx(30页珍藏版)》请在冰豆网上搜索。
学生综合测评系统实习报告
本文档大部分来自湖工程大神的文档我把实习报告全部整理了一下欢迎大家参考一下~虽然我的水平很渣渣~哈哈
2015.7.10
程序实习报告
题目:
学生综合测评系统
姓名
学号
专业通信工程
班级
指导教师
编写日期2015-7-8
1、学生测评系统具体要求:
每个学生的信息为:
学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。
考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。
A、学生信息处理
(1)输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。
提示:
学生信息可先输入到数组中,排序后可写到文件中。
(2)插入(修改)同学信息:
先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,
(3)删除同学信息:
输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。
(4)浏览学生信息:
打开文件,显示该文件的学生信息。
B、学生数据处理:
(1)按考试科目录入学生成绩并且按公式:
考试成绩=(语文+数学+外语)/3计算考试成绩,并计算考试名次,提示:
先把学生信息读入数组,然后按提示输入每科成绩,计算考试成绩,求出名次,最后把学生记录写入一个文件中。
(2)学生测评数据输入并计算综合测评总分及名次。
综合测评总分=(考试成绩)*0.6+(同学互评分)*0.1+品德成绩*0.1+任课老师评分*0.2。
(3)学生数据管理
输入学号,读出并显示该同学信息,输入新数据,将改后信息写入文件
(4)学生数据查询:
输入学号或其他信息,即读出所有数据信息,并显示出来。
C、学生综合信息输出
输出学生信息到屏幕。
二、总体设计
三、详细设计
(要求列出所有编写的函数清单,说明每个函数的功能,各形式参数的意义,画出各函数的调用关系图。
即模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)。
)
●voidchushihua();初始化函数
●charmenu();欢迎界面(目录)
●voidInputInfo();输入信息函数
●voidview();查询
●voidxiugai();修改
●voiddel();删除
●voidpaiming1(structstudent_infostudent[]);定义排名
●voidpaiming2(structstudent_infostudent[]);
●voidViewAll();输出所有信息
●voidclean();清除所有函数
●voidzz();作者信息
●voidPaimingView();排名查询
●voidexit();推出
●structstudent_infoinput();定义学生结构体
●函数调用基本按照流程图所画关系调用
四、程序运行结果测试与分析
1.voidchushihua()初始化函数
初始化函数用于从硬盘中加载学生数据和学生数目。
首先,从硬盘读取counter.dat的数据。
若不存在counter.dat则说明程序第一次运行。
创建counter.dat和student_data.dat,把counter的初始值赋为1。
若存在counter.dat.则读取其中数据,把数据赋给变量counter,这个值为已储存的学生信息数量。
这个counter变量就是计数器变量。
用来计量学生信息数量的变化。
2.meue()函数
meue函数用来显示选项菜单,并将用户所选的序号返回。
主函数中的变量select接收到meue的返回值。
通过开关语句,选择需要使用的功能。
3.voidInputInfo()录入学生信息
输入学生的信息。
学生信息由以下结构体定义。
structstudent_info
{
intnum;//学号
charname[6];//姓名
charsex[5];//性别
charadress[20];//家庭住址
chartel[10];//电话
intchinese,math,english,huping,pingde,jiaoping,paiming1,paiming2;
//语文数学英语互评品德教评
doubleave,zhongping;
//平均综合
};
InputInfo调用input函数。
在input函数中的局部变量stu中录入数据,然后input函数返回stu给InputInfo中的结构体数组的counter号元素。
然后,InputInfo通过SortInfo();SaveStruct();SaveInt();
将数组按学号排序,并存储结构体student和counter。
4.voiddel()删除信息
删除信息函数,从要删除位信息开始,前位用后一位覆盖,直到数组结束。
并同时将counter减1。
之后调用SaveStruct();SaveInt();储存student结构体数组和counter计数变量。
5.voidpaiming1()/voidpaiming2()成绩排名
排名函数
将student的给个元素的首地址储存在p[N]指针数组中。
通过冒泡法将指针数组排序。
接下来,按顺序把指针数组顺序,把排名赋给student的成员paiming1,paiming2。
冒泡排序
for(i=0;ifor(j=i+1;j{if(p[i]->aveave){temp=p[i];p[i]=p[j];p[j]=temp;}}排名名词给每一个student的成员paiming1或paiming2。for(i=0;ip[i]->paiming1=i+1;这一步的目的就是为了把所有信息排名。 6.voidViewAll()浏览全部学生信息voidViewAll(){inti;for(i=0;i{ViewInfo(&student[i]);printf("\n");}getchar();printf("回车键返回...");getchar();system("cls");}7.voidclean()清除所有信息counter计数变量清零,counter.dat清空,student_info.dat清空。 8.voidPaimingView()查询排名根据输入的学号查询排名五、结论与心得其实在编写程序的过程中,我发现很多地方都可以用一些简单的思路考虑,比如在进行第五步排名的过程过,用的也是冒泡排序,不过就仅仅只是不用整型数据交换而是结构体交换。其次在排名成与其排列构造体数组,我更推荐新建一个指针数组,来排列这个指针数组来代替排列构造体数组。很显然,排列指针比排列构造体要快捷多了。而且在关于存储数据方面,我们主动设计程序使他保存下来,然后在程序刚刚启动的初始化过程中,加载counter.dat和student_info.dat进入内存,使得上次数据保留下来,并且可以随意修改。当然,在本次实习中,我感觉最有收获的是过程,虽然才刚开始接触结构体、指针,不过在编写过程中,由于对知识的匮乏吸引我不断看书,以及通过在课余时间恶补结构体等网络教学视频,使我真真切切的学会一种学习方法。当然虽然到最后,大部分程序也是借鉴网络平台,但也通过这些程序以及运行之后的效果进一步实践了那么多知识点。这一些我感觉是我收获最大的地方。六.程序源代码学生综合测评系统2015-07-08 #include#include#include#defineN100//----------------------------------------函数声明----------------------------------------voidchushihua();charmenu();voidInputInfo();voidview();voidxiugai();voiddel();voidpaiming1(structstudent_infostudent[]);voidpaiming2(structstudent_infostudent[]);voidViewAll();voidclean();voidzz();voidPaimingView();voidexit();structstudent_infoinput();voidsort(structstudent_infostudent[]);voidViewInfo(structstudent_info*sp);voidSaveStruct(structstudent_info*sp,intsize,intn,charfilename[20]);voidLoadStruct(structstudent_info*sp,intsize,intn,charfilename[20]);voidSaveInt(int*p,intsize,intn,charfilename[20]);voidLoadInt(int*p,intsize,intn,charfilename[20]);intNumExist(structstudent_infostudent[],intnum);//---------------------------------定义学生信息结构体----------------------------------------structstudent_info{intnum;//学号charname[6];//姓名charsex[5];//性别charaddress[20];//家庭住址chartel[10];//电话intchinese,math,english,huping,pingde,jiaoping,paiming1,paiming2;//语文数学英语互评品德教评doubleave,zhongping;//平均综合//每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、英语三门单科得分、//考试平均得分、考试名次、互评、品德、教评、综合测评总分、综合测评名次。//考试平均得分、互评、品德、教评分别占综合测评总分的60%,10%,10%,20%。};//---------------------------------定义全局结构体数据----------------------------------------structstudent_infostudent[N];intcounter,PM;//----------------------------------------------主函数----------------------------------------voidmain(){charselect;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");paiming1(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");exit(0);//选项10:退出}}}//----------------------------------------初始化函数----------------------------------------voidchushihua(){FILE*fp;fp=fopen("counter.dat","rb");//打开计数变量counter文件if(fp!=NULL)//载入counter{fclose(fp);LoadInt(&counter,sizeof(counter),1,"counter.dat");}else{fp=fopen("counter.dat","wb");//若没有counter文件,则创建一个,counter初始为0。fclose(fp);counter=0;}if(counter!=0)//载入学生数据LoadStruct(student,sizeof(structstudent_info),counter,"student_info.dat");}//----------------------------------------欢迎函数----------------------------------------charmenu(){charselect;system("colorbc");while(1){system("cls");printf("\t***************************************************************\n");printf("\tmenuto学生综合测评系统\n");printf("\t\n");printf("\t\n");printf("\t****1.录入学生信息2.浏览学生信息****\n\n");printf("\t****3.修正学生信息4.删除学生信息****\n\n");printf("\t****Enter.作者****\n\n");printf("\t****5.排名学生得分6.浏览学生信息****\n\n");printf("\t****7.清除所有数据8.查询学生排名****\n\n");printf("\t****0.退出****\n\n");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'){returnselect;system("cls");continue;}elsezz();}} //-------------------------------------1.录入学生信息----------------------------------------voidInputInfo(){inti,n;printf("需要录入多少位学生的信息:");scanf("%d",&n);system("cls");for(i=1;i<=n;i++){student[counter]=input();counter++;}PM=0;sort(student);SaveStruct(student,sizeof(structstudent_info),counter,"student_info.dat");SaveInt(&counter,sizeof(counter),1,"counter.dat");}//-------------------------------------2.游览学生信息----------------------------------------voidview(){inti,num;printf("请输入需要游览的学生信息的学号:");scanf("%d",&num);getchar();if((i=NumExist(student,num))==-1){printf("不存在该学号,按回车键返回...");getchar();system("cls");return;}ViewInfo(&student[i]);printf("\n按回车键返回...");getchar();system("cls");return;}//-------------------------------------3.修正学生信息----------------------------------------voidxiugai(){inti,num;charYN,select;printf("请输入需要修正的学生信息的学号:");scanf("%d",&num);getchar();if((i=NumExist(student,num))==-1){printf("不存在该学号,按回车键返回...");getchar();system("cls");return;}ViewInfo(&student[i]);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");printf("0.教评\n");scanf("%c",&select);switch(select){case'1':printf("修正学号:");scanf("%d",&student[i].num);break;case'2':printf("修正性别:");scanf("%s",&student[i].sex);break;case'3':printf("修正家庭住址:");scanf("%s",&student[i].address);break;case'4':printf("修正联系电话:");scanf("%s",&student[i].tel);break;case'5':printf("修正语文得分:");scanf("%d",&student[i].chinese);break;case'6':printf("修正数学得分:");scanf("%d",&student[i].math);break;case'7':printf("修正英语得分:");scanf("%d",&student[i].english);break;case'8':printf("修正互评:");scanf("%d",&student[i].huping);break;case'9':printf("修正品德:");scanf("%d",&student[i].pingde);break;case'0':printf("修正教评:");scanf("%d",&student[i].jiaoping);break;}sort(student);SaveStruct(student,sizeof(structstudent_info),counter,"student_info.dat");PM=0;getchar();printf("修正完成...");getchar();system("cls");}//-------------------------------------4.删除学生信息----------------------------------------voiddel(){inti,j,num;charYN;printf("请输入要删除的学生信息学号:");scanf("%d",&num);getchar();if((i=NumExist(
for(j=i+1;j{if(p[i]->aveave){temp=p[i];p[i]=p[j];p[j]=temp;}}排名名词给每一个student的成员paiming1或paiming2。for(i=0;ip[i]->paiming1=i+1;这一步的目的就是为了把所有信息排名。 6.voidViewAll()浏览全部学生信息voidViewAll(){inti;for(i=0;i{ViewInfo(&student[i]);printf("\n");}getchar();printf("回车键返回...");getchar();system("cls");}7.voidclean()清除所有信息counter计数变量清零,counter.dat清空,student_info.dat清空。 8.voidPaimingView()查询排名根据输入的学号查询排名五、结论与心得其实在编写程序的过程中,我发现很多地方都可以用一些简单的思路考虑,比如在进行第五步排名的过程过,用的也是冒泡排序,不过就仅仅只是不用整型数据交换而是结构体交换。其次在排名成与其排列构造体数组,我更推荐新建一个指针数组,来排列这个指针数组来代替排列构造体数组。很显然,排列指针比排列构造体要快捷多了。而且在关于存储数据方面,我们主动设计程序使他保存下来,然后在程序刚刚启动的初始化过程中,加载counter.dat和student_info.dat进入内存,使得上次数据保留下来,并且可以随意修改。当然,在本次实习中,我感觉最有收获的是过程,虽然才刚开始接触结构体、指针,不过在编写过程中,由于对知识的匮乏吸引我不断看书,以及通过在课余时间恶补结构体等网络教学视频,使我真真切切的学会一种学习方法。当然虽然到最后,大部分程序也是借鉴网络平台,但也通过这些程序以及运行之后的效果进一步实践了那么多知识点。这一些我感觉是我收获最大的地方。六.程序源代码学生综合测评系统2015-07-08 #include#include#include#defineN100//----------------------------------------函数声明----------------------------------------voidchushihua();charmenu();voidInputInfo();voidview();voidxiugai();voiddel();voidpaiming1(structstudent_infostudent[]);voidpaiming2(structstudent_infostudent[]);voidViewAll();voidclean();voidzz();voidPaimingView();voidexit();structstudent_infoinput();voidsort(structstudent_infostudent[]);voidViewInfo(structstudent_info*sp);voidSaveStruct(structstudent_info*sp,intsize,intn,charfilename[20]);voidLoadStruct(structstudent_info*sp,intsize,intn,charfilename[20]);voidSaveInt(int*p,intsize,intn,charfilename[20]);voidLoadInt(int*p,intsize,intn,charfilename[20]);intNumExist(structstudent_infostudent[],intnum);//---------------------------------定义学生信息结构体----------------------------------------structstudent_info{intnum;//学号charname[6];//姓名charsex[5];//性别charaddress[20];//家庭住址chartel[10];//电话intchinese,math,english,huping,pingde,jiaoping,paiming1,paiming2;//语文数学英语互评品德教评doubleave,zhongping;//平均综合//每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、英语三门单科得分、//考试平均得分、考试名次、互评、品德、教评、综合测评总分、综合测评名次。//考试平均得分、互评、品德、教评分别占综合测评总分的60%,10%,10%,20%。};//---------------------------------定义全局结构体数据----------------------------------------structstudent_infostudent[N];intcounter,PM;//----------------------------------------------主函数----------------------------------------voidmain(){charselect;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");paiming1(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");exit(0);//选项10:退出}}}//----------------------------------------初始化函数----------------------------------------voidchushihua(){FILE*fp;fp=fopen("counter.dat","rb");//打开计数变量counter文件if(fp!=NULL)//载入counter{fclose(fp);LoadInt(&counter,sizeof(counter),1,"counter.dat");}else{fp=fopen("counter.dat","wb");//若没有counter文件,则创建一个,counter初始为0。fclose(fp);counter=0;}if(counter!=0)//载入学生数据LoadStruct(student,sizeof(structstudent_info),counter,"student_info.dat");}//----------------------------------------欢迎函数----------------------------------------charmenu(){charselect;system("colorbc");while(1){system("cls");printf("\t***************************************************************\n");printf("\tmenuto学生综合测评系统\n");printf("\t\n");printf("\t\n");printf("\t****1.录入学生信息2.浏览学生信息****\n\n");printf("\t****3.修正学生信息4.删除学生信息****\n\n");printf("\t****Enter.作者****\n\n");printf("\t****5.排名学生得分6.浏览学生信息****\n\n");printf("\t****7.清除所有数据8.查询学生排名****\n\n");printf("\t****0.退出****\n\n");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'){returnselect;system("cls");continue;}elsezz();}} //-------------------------------------1.录入学生信息----------------------------------------voidInputInfo(){inti,n;printf("需要录入多少位学生的信息:");scanf("%d",&n);system("cls");for(i=1;i<=n;i++){student[counter]=input();counter++;}PM=0;sort(student);SaveStruct(student,sizeof(structstudent_info),counter,"student_info.dat");SaveInt(&counter,sizeof(counter),1,"counter.dat");}//-------------------------------------2.游览学生信息----------------------------------------voidview(){inti,num;printf("请输入需要游览的学生信息的学号:");scanf("%d",&num);getchar();if((i=NumExist(student,num))==-1){printf("不存在该学号,按回车键返回...");getchar();system("cls");return;}ViewInfo(&student[i]);printf("\n按回车键返回...");getchar();system("cls");return;}//-------------------------------------3.修正学生信息----------------------------------------voidxiugai(){inti,num;charYN,select;printf("请输入需要修正的学生信息的学号:");scanf("%d",&num);getchar();if((i=NumExist(student,num))==-1){printf("不存在该学号,按回车键返回...");getchar();system("cls");return;}ViewInfo(&student[i]);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");printf("0.教评\n");scanf("%c",&select);switch(select){case'1':printf("修正学号:");scanf("%d",&student[i].num);break;case'2':printf("修正性别:");scanf("%s",&student[i].sex);break;case'3':printf("修正家庭住址:");scanf("%s",&student[i].address);break;case'4':printf("修正联系电话:");scanf("%s",&student[i].tel);break;case'5':printf("修正语文得分:");scanf("%d",&student[i].chinese);break;case'6':printf("修正数学得分:");scanf("%d",&student[i].math);break;case'7':printf("修正英语得分:");scanf("%d",&student[i].english);break;case'8':printf("修正互评:");scanf("%d",&student[i].huping);break;case'9':printf("修正品德:");scanf("%d",&student[i].pingde);break;case'0':printf("修正教评:");scanf("%d",&student[i].jiaoping);break;}sort(student);SaveStruct(student,sizeof(structstudent_info),counter,"student_info.dat");PM=0;getchar();printf("修正完成...");getchar();system("cls");}//-------------------------------------4.删除学生信息----------------------------------------voiddel(){inti,j,num;charYN;printf("请输入要删除的学生信息学号:");scanf("%d",&num);getchar();if((i=NumExist(
if(p[i]->ave
ave)
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
排名名词给每一个student的成员paiming1或paiming2。
for(i=0;ip[i]->paiming1=i+1;这一步的目的就是为了把所有信息排名。 6.voidViewAll()浏览全部学生信息voidViewAll(){inti;for(i=0;i{ViewInfo(&student[i]);printf("\n");}getchar();printf("回车键返回...");getchar();system("cls");}7.voidclean()清除所有信息counter计数变量清零,counter.dat清空,student_info.dat清空。 8.voidPaimingView()查询排名根据输入的学号查询排名五、结论与心得其实在编写程序的过程中,我发现很多地方都可以用一些简单的思路考虑,比如在进行第五步排名的过程过,用的也是冒泡排序,不过就仅仅只是不用整型数据交换而是结构体交换。其次在排名成与其排列构造体数组,我更推荐新建一个指针数组,来排列这个指针数组来代替排列构造体数组。很显然,排列指针比排列构造体要快捷多了。而且在关于存储数据方面,我们主动设计程序使他保存下来,然后在程序刚刚启动的初始化过程中,加载counter.dat和student_info.dat进入内存,使得上次数据保留下来,并且可以随意修改。当然,在本次实习中,我感觉最有收获的是过程,虽然才刚开始接触结构体、指针,不过在编写过程中,由于对知识的匮乏吸引我不断看书,以及通过在课余时间恶补结构体等网络教学视频,使我真真切切的学会一种学习方法。当然虽然到最后,大部分程序也是借鉴网络平台,但也通过这些程序以及运行之后的效果进一步实践了那么多知识点。这一些我感觉是我收获最大的地方。六.程序源代码学生综合测评系统2015-07-08 #include#include#include#defineN100//----------------------------------------函数声明----------------------------------------voidchushihua();charmenu();voidInputInfo();voidview();voidxiugai();voiddel();voidpaiming1(structstudent_infostudent[]);voidpaiming2(structstudent_infostudent[]);voidViewAll();voidclean();voidzz();voidPaimingView();voidexit();structstudent_infoinput();voidsort(structstudent_infostudent[]);voidViewInfo(structstudent_info*sp);voidSaveStruct(structstudent_info*sp,intsize,intn,charfilename[20]);voidLoadStruct(structstudent_info*sp,intsize,intn,charfilename[20]);voidSaveInt(int*p,intsize,intn,charfilename[20]);voidLoadInt(int*p,intsize,intn,charfilename[20]);intNumExist(structstudent_infostudent[],intnum);//---------------------------------定义学生信息结构体----------------------------------------structstudent_info{intnum;//学号charname[6];//姓名charsex[5];//性别charaddress[20];//家庭住址chartel[10];//电话intchinese,math,english,huping,pingde,jiaoping,paiming1,paiming2;//语文数学英语互评品德教评doubleave,zhongping;//平均综合//每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、英语三门单科得分、//考试平均得分、考试名次、互评、品德、教评、综合测评总分、综合测评名次。//考试平均得分、互评、品德、教评分别占综合测评总分的60%,10%,10%,20%。};//---------------------------------定义全局结构体数据----------------------------------------structstudent_infostudent[N];intcounter,PM;//----------------------------------------------主函数----------------------------------------voidmain(){charselect;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");paiming1(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");exit(0);//选项10:退出}}}//----------------------------------------初始化函数----------------------------------------voidchushihua(){FILE*fp;fp=fopen("counter.dat","rb");//打开计数变量counter文件if(fp!=NULL)//载入counter{fclose(fp);LoadInt(&counter,sizeof(counter),1,"counter.dat");}else{fp=fopen("counter.dat","wb");//若没有counter文件,则创建一个,counter初始为0。fclose(fp);counter=0;}if(counter!=0)//载入学生数据LoadStruct(student,sizeof(structstudent_info),counter,"student_info.dat");}//----------------------------------------欢迎函数----------------------------------------charmenu(){charselect;system("colorbc");while(1){system("cls");printf("\t***************************************************************\n");printf("\tmenuto学生综合测评系统\n");printf("\t\n");printf("\t\n");printf("\t****1.录入学生信息2.浏览学生信息****\n\n");printf("\t****3.修正学生信息4.删除学生信息****\n\n");printf("\t****Enter.作者****\n\n");printf("\t****5.排名学生得分6.浏览学生信息****\n\n");printf("\t****7.清除所有数据8.查询学生排名****\n\n");printf("\t****0.退出****\n\n");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'){returnselect;system("cls");continue;}elsezz();}} //-------------------------------------1.录入学生信息----------------------------------------voidInputInfo(){inti,n;printf("需要录入多少位学生的信息:");scanf("%d",&n);system("cls");for(i=1;i<=n;i++){student[counter]=input();counter++;}PM=0;sort(student);SaveStruct(student,sizeof(structstudent_info),counter,"student_info.dat");SaveInt(&counter,sizeof(counter),1,"counter.dat");}//-------------------------------------2.游览学生信息----------------------------------------voidview(){inti,num;printf("请输入需要游览的学生信息的学号:");scanf("%d",&num);getchar();if((i=NumExist(student,num))==-1){printf("不存在该学号,按回车键返回...");getchar();system("cls");return;}ViewInfo(&student[i]);printf("\n按回车键返回...");getchar();system("cls");return;}//-------------------------------------3.修正学生信息----------------------------------------voidxiugai(){inti,num;charYN,select;printf("请输入需要修正的学生信息的学号:");scanf("%d",&num);getchar();if((i=NumExist(student,num))==-1){printf("不存在该学号,按回车键返回...");getchar();system("cls");return;}ViewInfo(&student[i]);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");printf("0.教评\n");scanf("%c",&select);switch(select){case'1':printf("修正学号:");scanf("%d",&student[i].num);break;case'2':printf("修正性别:");scanf("%s",&student[i].sex);break;case'3':printf("修正家庭住址:");scanf("%s",&student[i].address);break;case'4':printf("修正联系电话:");scanf("%s",&student[i].tel);break;case'5':printf("修正语文得分:");scanf("%d",&student[i].chinese);break;case'6':printf("修正数学得分:");scanf("%d",&student[i].math);break;case'7':printf("修正英语得分:");scanf("%d",&student[i].english);break;case'8':printf("修正互评:");scanf("%d",&student[i].huping);break;case'9':printf("修正品德:");scanf("%d",&student[i].pingde);break;case'0':printf("修正教评:");scanf("%d",&student[i].jiaoping);break;}sort(student);SaveStruct(student,sizeof(structstudent_info),counter,"student_info.dat");PM=0;getchar();printf("修正完成...");getchar();system("cls");}//-------------------------------------4.删除学生信息----------------------------------------voiddel(){inti,j,num;charYN;printf("请输入要删除的学生信息学号:");scanf("%d",&num);getchar();if((i=NumExist(
p[i]->paiming1=i+1;
这一步的目的就是为了把所有信息排名。
6.voidViewAll()浏览全部学生信息
voidViewAll()
inti;
for(i=0;i{ViewInfo(&student[i]);printf("\n");}getchar();printf("回车键返回...");getchar();system("cls");}7.voidclean()清除所有信息counter计数变量清零,counter.dat清空,student_info.dat清空。 8.voidPaimingView()查询排名根据输入的学号查询排名五、结论与心得其实在编写程序的过程中,我发现很多地方都可以用一些简单的思路考虑,比如在进行第五步排名的过程过,用的也是冒泡排序,不过就仅仅只是不用整型数据交换而是结构体交换。其次在排名成与其排列构造体数组,我更推荐新建一个指针数组,来排列这个指针数组来代替排列构造体数组。很显然,排列指针比排列构造体要快捷多了。而且在关于存储数据方面,我们主动设计程序使他保存下来,然后在程序刚刚启动的初始化过程中,加载counter.dat和student_info.dat进入内存,使得上次数据保留下来,并且可以随意修改。当然,在本次实习中,我感觉最有收获的是过程,虽然才刚开始接触结构体、指针,不过在编写过程中,由于对知识的匮乏吸引我不断看书,以及通过在课余时间恶补结构体等网络教学视频,使我真真切切的学会一种学习方法。当然虽然到最后,大部分程序也是借鉴网络平台,但也通过这些程序以及运行之后的效果进一步实践了那么多知识点。这一些我感觉是我收获最大的地方。六.程序源代码学生综合测评系统2015-07-08 #include#include#include#defineN100//----------------------------------------函数声明----------------------------------------voidchushihua();charmenu();voidInputInfo();voidview();voidxiugai();voiddel();voidpaiming1(structstudent_infostudent[]);voidpaiming2(structstudent_infostudent[]);voidViewAll();voidclean();voidzz();voidPaimingView();voidexit();structstudent_infoinput();voidsort(structstudent_infostudent[]);voidViewInfo(structstudent_info*sp);voidSaveStruct(structstudent_info*sp,intsize,intn,charfilename[20]);voidLoadStruct(structstudent_info*sp,intsize,intn,charfilename[20]);voidSaveInt(int*p,intsize,intn,charfilename[20]);voidLoadInt(int*p,intsize,intn,charfilename[20]);intNumExist(structstudent_infostudent[],intnum);//---------------------------------定义学生信息结构体----------------------------------------structstudent_info{intnum;//学号charname[6];//姓名charsex[5];//性别charaddress[20];//家庭住址chartel[10];//电话intchinese,math,english,huping,pingde,jiaoping,paiming1,paiming2;//语文数学英语互评品德教评doubleave,zhongping;//平均综合//每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、英语三门单科得分、//考试平均得分、考试名次、互评、品德、教评、综合测评总分、综合测评名次。//考试平均得分、互评、品德、教评分别占综合测评总分的60%,10%,10%,20%。};//---------------------------------定义全局结构体数据----------------------------------------structstudent_infostudent[N];intcounter,PM;//----------------------------------------------主函数----------------------------------------voidmain(){charselect;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");paiming1(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");exit(0);//选项10:退出}}}//----------------------------------------初始化函数----------------------------------------voidchushihua(){FILE*fp;fp=fopen("counter.dat","rb");//打开计数变量counter文件if(fp!=NULL)//载入counter{fclose(fp);LoadInt(&counter,sizeof(counter),1,"counter.dat");}else{fp=fopen("counter.dat","wb");//若没有counter文件,则创建一个,counter初始为0。fclose(fp);counter=0;}if(counter!=0)//载入学生数据LoadStruct(student,sizeof(structstudent_info),counter,"student_info.dat");}//----------------------------------------欢迎函数----------------------------------------charmenu(){charselect;system("colorbc");while(1){system("cls");printf("\t***************************************************************\n");printf("\tmenuto学生综合测评系统\n");printf("\t\n");printf("\t\n");printf("\t****1.录入学生信息2.浏览学生信息****\n\n");printf("\t****3.修正学生信息4.删除学生信息****\n\n");printf("\t****Enter.作者****\n\n");printf("\t****5.排名学生得分6.浏览学生信息****\n\n");printf("\t****7.清除所有数据8.查询学生排名****\n\n");printf("\t****0.退出****\n\n");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'){returnselect;system("cls");continue;}elsezz();}} //-------------------------------------1.录入学生信息----------------------------------------voidInputInfo(){inti,n;printf("需要录入多少位学生的信息:");scanf("%d",&n);system("cls");for(i=1;i<=n;i++){student[counter]=input();counter++;}PM=0;sort(student);SaveStruct(student,sizeof(structstudent_info),counter,"student_info.dat");SaveInt(&counter,sizeof(counter),1,"counter.dat");}//-------------------------------------2.游览学生信息----------------------------------------voidview(){inti,num;printf("请输入需要游览的学生信息的学号:");scanf("%d",&num);getchar();if((i=NumExist(student,num))==-1){printf("不存在该学号,按回车键返回...");getchar();system("cls");return;}ViewInfo(&student[i]);printf("\n按回车键返回...");getchar();system("cls");return;}//-------------------------------------3.修正学生信息----------------------------------------voidxiugai(){inti,num;charYN,select;printf("请输入需要修正的学生信息的学号:");scanf("%d",&num);getchar();if((i=NumExist(student,num))==-1){printf("不存在该学号,按回车键返回...");getchar();system("cls");return;}ViewInfo(&student[i]);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");printf("0.教评\n");scanf("%c",&select);switch(select){case'1':printf("修正学号:");scanf("%d",&student[i].num);break;case'2':printf("修正性别:");scanf("%s",&student[i].sex);break;case'3':printf("修正家庭住址:");scanf("%s",&student[i].address);break;case'4':printf("修正联系电话:");scanf("%s",&student[i].tel);break;case'5':printf("修正语文得分:");scanf("%d",&student[i].chinese);break;case'6':printf("修正数学得分:");scanf("%d",&student[i].math);break;case'7':printf("修正英语得分:");scanf("%d",&student[i].english);break;case'8':printf("修正互评:");scanf("%d",&student[i].huping);break;case'9':printf("修正品德:");scanf("%d",&student[i].pingde);break;case'0':printf("修正教评:");scanf("%d",&student[i].jiaoping);break;}sort(student);SaveStruct(student,sizeof(structstudent_info),counter,"student_info.dat");PM=0;getchar();printf("修正完成...");getchar();system("cls");}//-------------------------------------4.删除学生信息----------------------------------------voiddel(){inti,j,num;charYN;printf("请输入要删除的学生信息学号:");scanf("%d",&num);getchar();if((i=NumExist(
ViewInfo(&student[i]);
printf("\n");
getchar();
printf("回车键返回...");
system("cls");
7.voidclean()清除所有信息
counter计数变量清零,counter.dat清空,student_info.dat清空。
8.voidPaimingView()查询排名
根据输入的学号查询排名
五、结论与心得
其实在编写程序的过程中,我发现很多地方都可以用一些简单的思路考虑,比如在进行第五步排名的过程过,用的也是冒泡排序,不过就仅仅只是不用整型数据交换而是结构体交换。
其次在排名成与其排列构造体数组,我更推荐新建一个指针数组,来排列这个指针数组来代替排列构造体数组。
很显然,排列指针比排列构造体要快捷多了。
而且在关于存储数据方面,我们主动设计程序使他保存下来,然后在程序刚刚启动的初始化过程中,加载counter.dat和student_info.dat进入内存,使得上次数据保留下来,并且可以随意修改。
当然,在本次实习中,我感觉最有收获的是过程,虽然才刚开始接触结构体、指针,不过在编写过程中,由于对知识的匮乏吸引我不断看书,以及通过在课余时间恶补结构体等网络教学视频,使我真真切切的学会一种学习方法。
当然虽然到最后,大部分程序也是借鉴网络平台,但也通过这些程序以及运行之后的效果进一步实践了那么多知识点。
这一些我感觉是我收获最大的地方。
六.程序源代码
2015-07-08
#include
#defineN100
//----------------------------------------函数声明----------------------------------------
voidchushihua();
charmenu();
voidInputInfo();
voidview();
voidxiugai();
voiddel();
voidpaiming1(structstudent_infostudent[]);
voidpaiming2(structstudent_infostudent[]);
voidViewAll();
voidclean();
voidzz();
voidPaimingView();
voidexit();
structstudent_infoinput();
voidsort(structstudent_infostudent[]);
voidViewInfo(structstudent_info*sp);
voidSaveStruct(structstudent_info*sp,intsize,intn,charfilename[20]);
voidLoadStruct(structstudent_info*sp,intsize,intn,charfilename[20]);
voidSaveInt(int*p,intsize,intn,charfilename[20]);
voidLoadInt(int*p,intsize,intn,charfilename[20]);
intNumExist(structstudent_infostudent[],intnum);
//---------------------------------定义学生信息结构体----------------------------------------
charaddress[20];//家庭住址
//每个学生的信息为:
学号、姓名、性别、家庭住址、联系电话、语文、数学、英语三门单科得分、
//考试平均得分、考试名次、互评、品德、教评、综合测评总分、综合测评名次。
//考试平均得分、互评、品德、教评分别占综合测评总分的60%,10%,10%,20%。
//---------------------------------定义全局结构体数据----------------------------------------
structstudent_infostudent[N];
intcounter,PM;
//----------------------------------------------主函数----------------------------------------
voidmain()
charselect;
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");paiming1(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");exit(0);//选项10:
退出
//----------------------------------------初始化函数----------------------------------------
voidchushihua()
FILE*fp;
fp=fopen("counter.dat","rb");//打开计数变量counter文件
if(fp!
=NULL)//载入counter
fclose(fp);
LoadInt(&counter,sizeof(counter),1,"counter.dat");
else
fp=fopen("counter.dat","wb");//若没有counter文件,则创建一个,counter初始为0。
counter=0;
if(counter!
=0)//载入学生数据
LoadStruct(student,sizeof(structstudent_info),counter,"student_info.dat");
//----------------------------------------欢迎函数----------------------------------------
charmenu()
system("colorbc");
printf("\t***************************************************************\n");
printf("\tmenuto学生综合测评系统\n");
printf("\t\n");
printf("\t****1.录入学生信息2.浏览学生信息****\n\n");
printf("\t****3.修正学生信息4.删除学生信息****\n\n");
printf("\t****Enter.作者****\n\n");
printf("\t****5.排名学生得分6.浏览学生信息****\n\n");
printf("\t****7.清除所有数据8.查询学生排名****\n\n");
printf("\t****0.退出****\n\n");
printf("\t输入相应的功能序号:
");
select=getchar();
if(select=='1'||select=='2'||select=='3'||select=='4'||select=='5'||select=='6'||select=='7'||select=='8'||select=='0')
returnselect;
continue;
zz();
//-------------------------------------1.录入学生信息----------------------------------------
voidInputInfo()
inti,n;
printf("需要录入多少位学生的信息:
scanf("%d",&n);
for(i=1;i<=n;i++)
student[counter]=input();
counter++;
PM=0;
sort(student);
SaveStruct(student,sizeof(structstudent_info),counter,"student_info.dat");
SaveInt(&counter,sizeof(counter),1,"counter.dat");
//-------------------------------------2.游览学生信息----------------------------------------
voidview()
inti,num;
printf("请输入需要游览的学生信息的学号:
scanf("%d",&num);
if((i=NumExist(student,num))==-1)
printf("不存在该学号,按回车键返回...");
return;
printf("\n按回车键返回...");
//-------------------------------------3.修正学生信息----------------------------------------
voidxiugai()
charYN,select;
printf("请输入需要修正的学生信息的学号:
printf("是否要修正?
(Y/N):
scanf("%c",&YN);
if(YN!
='Y'&&YN!
='y')
printf("修正取消.");
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");
printf("0.教评\n");
scanf("%c",&select);
printf("修正学号:
");scanf("%d",&student[i].num);break;
printf("修正性别:
");scanf("%s",&student[i].sex);break;
printf("修正家庭住址:
");scanf("%s",&student[i].address);break;
printf("修正联系电话:
");scanf("%s",&student[i].tel);break;
printf("修正语文得分:
");scanf("%d",&student[i].chinese);break;
printf("修正数学得分:
");scanf("%d",&student[i].math);break;
printf("修正英语得分:
");scanf("%d",&student[i].english);break;
printf("修正互评:
");scanf("%d",&student[i].huping);break;
printf("修正品德:
");scanf("%d",&student[i].pingde);break;
printf("修正教评:
");scanf("%d",&student[i].jiaoping);break;
printf("修正完成...");
//-------------------------------------4.删除学生信息----------------------------------------
voiddel()
inti,j,num;
charYN;
printf("请输入要删除的学生信息学号:
if((i=NumExist(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1