


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、注意:本文档可供大家参考,学习。请大家借鉴优点,批评不足。请各位湖工学弟,学妹不要 署名后直接打印,应付老师。一定要弄懂代码,这对大家的代码编写技术很有好处。虽然现在 完全自主编写有些困难,但是也要有一个迎难而上的心态。祝大家学业有成!课程设计报告课程名称C 语言程序设计课题名称学生综合测评系统专 业班 级学 号姓 名文案大全指导教师任务书下达日期年月日任务完成日期年月日目录一、设计容与设计要求 4学生综合测评系统 4一、问题描述: 4二、功能描述: 4三、算法提示: 4四、测试数据: 5二设计要求: 5三进度安排 5四总体设计方案 61. 总体流程图 62. 程序主要函数 61. void
2、inti()初始化函数 62. welcome()函数 63. void InputInfo()录入学生信息 74. void DeleteInfo()删除信息 85. void paiming1() / void paiming2()成绩排名 86. void ViewAll()浏览全部学生信息 87. void clean() 清除所有信息 98. void PaimingView()查询排名 93. 程序其他函数 9A. 信息存盘(结构体) 9B. 读取信息 ( 结构体 ) 9C. 信息存盘(整型) 9D. 读取信息 ( 整型 ) 9E. 学号检索 10五程序源代码 11六. 收获及体会
3、 23七. 参考文献 23计算机与通信学院课程设计评分表 24课程名称: C 语言程序设计 24第 3 页 共 24 页设计容与设计要求学生综合测评系统一、问题描述:每个学生的信息为:学号、性别、家庭住址、联系、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的 60% 10% 10% 20%二、功能描述:A、学生信息处理(1) 输入学生信息、学号、性别、家庭住址、联系,按学号以小到大的顺序存入文件中。提示:学生信息可先输入到数组中,排序后可写到文件中。(2)
4、 插入(修改)同学信息:提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录容替换源容,删除同学信息:提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。(4)浏览学生信息:提示:打开文件,显示该文件的学生信息。B、学生数据处理:(1) 按考试科目录入学生成绩并且按公式:考试成绩=(语文+数学+外语)/3计算考试成绩,并计算考试名次,提示:先把学生信息读入数组,然后按提示输入每科成绩,计算考试成绩,求岀名次,最后把学生记录写入一个文件中。(2) 学生测评数据输入并计算
5、综合测评总分及名次。提示:综合测评总分=(考试成绩)*0.6+ (同学互评分)*0.1+品德成绩*0.1+任课老师评分*0.2。(3) 学生数据管理提示:输入学号,读岀并显示该同学信息,输入新数据,将改后信息写入文件(4) 学生数据查询:提示:输入学号或其他信息,即读岀所有数据信息,并显示岀来。C学生综合信息输岀提示:输出学生信息到屏幕。三、算法提示:1、数据结构:结构体类型数组2、数据库结构:下表构成该系统的基本数据库。学号考试成绩评分CharCharstructint四、测试数据:学生人数:N=10二.设计要求:掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问
6、题,为将来编写软件积累一些典 型的案例处理经验。(1) 按学号顺序选课题号,并在规定的时间独自完成相关课题的C源程序编写、调试和运行。源程序及编译生成各文件均保存;(2) 按本任务书的要求,编写课程设计报告(Word文档格式)。并用A4的复印纸打印并装订;(3) 在2013年1月5日之前,请各班学习委员收齐课程设计报告交老师。附:课程设计报告容要求如下:封面课程设计任务书课程设计主文档容如下:1、课程设计题目2、课程设计目的3、课程设计主要任务4、设计环境5、总体设计方案的选定(主控模块和各子模块的设计方法及框图)6、源程序清单7、收获及体会参考资料四、报告容要求用宋体五号字,主标题用黑三号、
7、一级标题用黑四号字,二级标题用宋体小四号字加粗,要 求用A4纸打印出来。课程设计说明书装订顺序:封面、任务书、正文、附件(A4大小的图纸及程序清单)。三进度安排第18周,具体安排如下:星期时间班级容地点第17周任务布置第18周星期三第一次上机机房第18周星期四第二次上机机房第18周星期五第三次上机与答辩机房工程学院计算机与通信学院年 月 日四总体设计方案1. 总体流程图2. 程序主要函数l. void in ti()初始化函数初始化函数用于从硬盘中加载学生数据和学生数目。首先,从硬盘读取cou nter.dat的数据。若不存在 counter.dat则说明程序第一次运行。创建counter.d
8、at 和student_data.dat ,把counter的初始值赋为1。若存在counter.dat.则读取其中数据,把数据赋给变量counter,这个值为已储存的学生信息数量。这个counter变量就是计数器变量。用来计量学生信息数量的变化。2. welcome()函数Welcome函数用来显示选项菜单,并将用户所选的序号返回。戎便使月学主信息管理孕氓f1 ° T丄录入学生信息 氛浏览学生信息0修改学生信息札删除学生信息轧排名学生成绩 筑浏览所有学生信息7 清除所有数据-查询排名退出榆入相应的功能序号二主函数中的变量select接收到welcome的返回值。通过开关语句,选择需
9、要使用的功能。3. void In putl nfo()录入学生信息输入学生的信息。学生信息由以下结构体定义。struct stude nt_infoint num;/ 学号char n ame6;/char sex5;/性别char adress20;/家庭住址char tel1O;/int chi nese,math,e nglish,hup in g,p in gdejiaop in g,pai min g1,pai min g2;/ 语文数学英语互评品德教评double ave,zh ongping;/ 平均综合;In put Info 调用in put函数。在in put函数中的局部
10、变量 stu中录入数据,然后in put函数返回stu给 In put Info中的结构体数组的coun ter 号兀素。然后,InputInfo 通过 SortInfo(); SaveStruct();SaveInt();将数组按学号排序,并存储结构体student和counter 。4. void DeleteInfo() 删除信息删除信息函数,从要删除位信息开始,前位用后一位覆盖,直到数组结束。并同时将 counter 减 1。之后调用 SaveStruct(); SaveInt(); 储存 student 结构体数组和 counter 计数变量。5. void paiming1() /
11、 void paiming2()成绩排名排名函数将 student 的给个元素的首地址储存在 pN 指针数组中。通过冒泡法将指针数组排序。 接下来,按顺序把指针数组顺序,把排名赋给 student 的成员 paiming1,paiming2冒泡排序for(i=0;i<counter-1;i+) for(j=i+1;j<counter;j+)if(pi->ave < pj->ave) temp=pi; pi=pj; pj=temp;排名名词给每一个 student 的成员 paiming1 或 paiming2 。 for(i=0;i<counter;i+)p
12、i->paiming1=i+1;6. void ViewAll() 浏览全部学生信息void ViewAll()int i; for(i=0;i<counter;i+)ViewInfo(&studenti);printf("n");getchar();printf(" 回车键返回 .");getchar(); system("cls");7. void clean() 清除所有信息清空。counter 计数变量清零, counter.dat 清空, student_info.dat8. void PaimingVi
13、ew() 查询排名根据输入的学号查询排名3. 程序其他函数A. 信息存盘(结构体)void SaveStruct(struct student_info *sp,int size,int n,char filename20) FILE *fp; fp=fopen(filename,"wb"); fwrite(sp,size,n,fp);fclose(fp);B. 读取信息(结构体)void LoadStruct(struct student_info *sp,int size,int n,char filename20) 略C. 信息存盘(整型)void SaveInt(i
14、nt *p,int size,int n,char filename20)FILE *fp; fp=fopen(filename,"wb"); fwrite(p,size,n,fp);fclose(fp);D. 读取信息(整型)void LoadInt(int *p,int size,int n,char filename20)略E. 学号检索int NumExist(struct stude nt_info stude nt,i nt num)int i;for(i=0;i<co un ter;i+)if(stude nti. num=num)return i;re
15、turn -1;检索学号所在的元素下表,若学号存在,则返回该学号所在下标。若学号不存在,则返回-1。程序截图: - XMfsenXZSJ-PAD'xDesktopCiWwrbBXDebuQVOOOxxe*86細口 71S4.60德品帼址吕-鬍互96联系电话15545545 教评86学号2012002语文90 平均分 88.6?严分排名河评分排名学号2»12U01 语文90德品95 !tt评 覇互80联系电话15«b4bb 教评73平均分综合分83.&702.33平均分排名综合测评分排名33学号姓名2甘丄2000语文90平均分综合分91.33&8.60
16、4=德址#庭南评翥互80联系电话18000教评90第10页共24页五程序源代码学生综合测评系统2013年 1 月 3 日#include<stdio.h>#include<stdlib.h>#define N 100/ 函数声明 void init();char welcome();void InputInfo();void view();void xiugai();void DeleteInfo();void paiming1(struct student_info student);void paiming2(struct student_info student)
17、;void ViewAll();void clean();void PaimingView();void exit();struct student_info input();void SortInfo(struct student_info student);void ViewInfo(struct student_info *sp);void SaveStruct(struct student_info *sp,int size,int n,char filename20);void LoadStruct(struct student_info *sp,int size,int n,cha
18、r 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_infoint num;/ 学号char name6;/char sex5;/ 性别char adress20;/ 家庭住址char tel10;/int chinese,math,english,huping,p
19、ingde,jiaoping,paiming1,paiming2;/ 语文 数学 英语 互评 品德 教评 double ave,zhongping;/ 平均 综合/ 每个学生的信息为:学号、 、性别、家庭住址、联系、语文、数学、外语三门单科成绩、/ 考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。/ 考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%, 10%, 10%,20%。;/ 定义全局结构体数据 struct student_info studentN; int counter,PM;/主函数 void main()cha
20、r select;init(); / 调用初始化函数while(1)select=welcome();switch(select)fcase '1':system("cls");InputInfo(); break;/ 选项 1: 输入学生信息case '2':system("cls");view(); break;/ 选项 2: 浏览学生信息case '3':system("cls");xiugai(); break; /选项 3: 修改学生信息case '4':sys
21、tem("cls");DeleteInfo(); 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(
22、"cls"); clean();break;/ 选项 7: 清除所有信息case '8':system("cls"); PaimingView();break;/ 选项 8: 查询排名case '0':system("cls");exit(); break;/选项 9: 退出初始化函数 / 打开计数变量 counter 文件/void init()FILE *fp; fp=fopen("counter.dat","rb");if(fp!=NULL) / 载入 co
23、unter fclose(fp); LoadInt(&counter,sizeof(counter),1,"counter.dat");else/ 若没有 counter 文件,则创建一个, counter 初始为 0。fp=fopen("counter.dat","wb");fclose(fp);counter=0;if(counter!=0) / 载入学生数据 LoadStruct(student,sizeof(struct student_info),counter,"student_info.dat"
24、;);/ 欢迎函数 char welcome()char select;while(1)system("cls");printf("tt欢迎使用学生信息管理系统n"printf("n");printf("1.录入学生信息nn");printf("2.浏览学生信息nn");printf("3.修改学生信息nn");printf("4.删除学生信息nn");printf("5.排名学生成绩nn");printf("6.浏览所有学生
25、信息nnprintf("7.清除所有数据nn");printf("8.查询排名nn");printf("0.退出nn");printf("输入相应的功能序号 :");select=getchar();if(select='1'|select='2'|select='3'|select='4'|select='5'|select='6'|select=' 7'|select='8'|sele
26、ct='0')return select;system("cls");continue;/1. 录入学生信息 void InputInfo()int i,n;printf(" 需要录入多少位学生的信息 :");scanf("%d",&n);system("cls");for(i=1;i<=n;i+) studentcounter=input(); counter+;PM=0;SortInfo(student);SaveStruct(student,sizeof(struct stude
27、nt_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=NumExist(student,num)=-1)printf(" 不存在该学号 , 按回车键返回 .");getcha
28、r();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(&q
29、uot; 不存在该学号 , 按回车键返回 .");getchar(); system("cls"); return;ViewInfo(&studenti);printf(" 是否要修改? (Y/N):"); scanf("%c",&YN);getchar();if(YN !='Y'&& YN !='y')printf(" 修改取消 .");case '1'printf("case '2'printf(
30、"case '3'printf("case '4'printf("case '5'printf("case '6'printf("case '7'printf("case '8'printf("case '9'printf("case '0'printf("SortInfo(student);getchar(); system("cls");return;sy
31、stem("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.任课教师教师评分scanf(&quo
32、t;%c",&select);switch(select)修改学号 :");scanf("%d",&studenti.num);break;修改性别 :");scanf("%s",&studenti.sex);break; 修改家庭住址 :");scanf("%s",&studenti.adress);break;修改联系 :");scanf("%s",&studenti.tel);break;修改语文成绩 :");
33、scanf("%d",&studenti.chinese);break;修改数学成绩 :");scanf("%d",&studenti.math);break; 修改外语成绩 :");scanf("%d",&studenti.english);break; 修改同学互评分 :");scanf("%d",&studenti.huping);break;修改品德成绩 :");scanf("%d",&studenti.pi
34、ngde);break; 修改任课教师评分 :");scanf("%d",&studenti.jiaoping);break;SaveStruct(student,sizeof(struct student_info),counter,"student_info.dat");PM=0;getchar();printf(" 修改完成 ."); getchar();system("cls");4.删除学生信息/void DeleteInfo() int i,j,num;char YN;printf(&
35、quot; 请输入要删除的学生信息学号 :"); scanf("%d",&num);getchar(); if(i=NumExist(student,num)=-1)printf(" 没有该学号 , 按回车键返回 .");getchar();system("cls");return;ViewInfo(&studenti);printf("n 确认删除 (Y/N):");scanf("%c",&YN);getchar();if(YN!='Y' &a
36、mp;& YN!='y')printf(" 删除取消 .");elsefor(j=i;j<counter-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(" 删除完成 ."
37、);getchar();system("cls");/ 平均分、综合分排名 void paiming1(struct student_info student)struct student_info *pN,*temp;int i,j;for(i=0;i<counter;i+)pi=&studenti;for(i=0;i<counter-1;i+) for(j=i+1;j<counter;j+) if(pi->ave < pj->ave)temp=pi;pi=pj;pj=temp;for(i=0;i<counter;i+)
38、pi->paiming1=i+1;printf(" 平均分排名完成 .n");/ 综合测评分排名void paiming2(struct student_info student)struct student_info *pN,*temp;int i,j;for(i=0;i<counter;i+) pi=&studenti;for(i=0;i<counter-1;i+) for(j=i+1;j<counter;j+)if(pi->zhongping < pj->zhongping)temp=pi;pi=pj;pj=temp;
39、for(i=0;i<counter;i+) pi->paiming2=i+1;printf(" 综合测评分排名完成 .n");/6. 浏览所有学生信息 void ViewAll()int i;for(i=0;i<counter;i+)ViewInfo(&studenti); printf("n");getchar();printf(" 回车键返回 .");getchar();system("cls");/7. 清除所有信息 void clean()counter=0;SaveInt(&am
40、p;counter,sizeof(counter),1,"counter.dat");printf(" 清除完毕 .");getchar();getchar();system("cls");/8. 查询排名 void PaimingView()int i,num;printf(" 输入要查询的学号 :"); scanf("%d",&num);getchar(); i=NumExist(student,num);if(i=-1)printf(" 该学号不存在 .");g
41、etchar();return;if(PM=0)printf(" 请先进行成绩排名 .");getchar();return;printf("%s 的平均分排名 %dn",,studenti.paiming1);printf("%s 的综合测评分排名 %dn",,studenti.paiming2);printf(" 按回车键返回 .");getchar();return;9.退出/void exit() printf(" 使用 !n"); e
42、xit(0);/输入信息函数 struct student_info input()struct student_info stu,*sp; char YN;sp=&stu;while(1)while(1)printf(" 录入学号 :"); scanf("%d",&sp->num); getchar();if(NumExist(student,sp->num)!=-1)printf(" 该学号已存在 , 请重新输入 .");getchar(); system("cls"); conti
43、nue; break;printf(" 录入 :"); gets(sp->name); printf(" 录入性别 :"); gets(sp->sex);printf(" 录入家庭住址 :"); gets(sp->adress);printf(" 录入联系 :"); gets(sp->tel);printf("n 接下来录入成绩 n"); printf(" 语文 :"); scanf("%d",&sp->chinese
44、); printf(" 数学 :"); scanf("%d",&sp->math);printf(" 英语 :"); scanf("%d",&sp->english); sp->ave=(sp->chinese+sp->math+sp->english)/3.0;printf(" 同学互评 :"); scanf("%d",&sp->huping);printf(" 品德分数 :"); sca
45、nf("%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(" 录入完毕,确认信息是否正确 YN=getchar();getchar();if(YN='Y'| YN='y')break
46、;elseprintf(" 按回车键重新录入信息。 getchar();system("cls"); continue;system("cls");return stu;/void SortInfo(struct student_info student)int i,j;struct student_info temp;for(i=0;i<counter-1;i+) for(j=i+1;j<=counter-1;j+) if(studenti.num<studentj.num)temp=studenti; studenti=s
47、tudentj; studentj=temp;(Y/N)");");排序函数 / 显示学生信息 void ViewInfo(struct student_info *sp)printf(" 学号 tt 性别 t 家庭住址 t 联系 n"); printf("%dt%st%st%stt%sn",sp->num,sp->name,sp->sex,sp->adress,sp->tel);printf(" 语文 t 数学 t 英语 t 互评 t 品德 t 教评 n"); printf(&quo
48、t;%dt%dt%dt%dt%dt%dtn",sp->chinese,sp->math,sp->english,sp->huping,sp->pingde ,sp->jiaoping);printf(" 平均分 t 综合分 n");printf("%.2ft%.2fn",sp->ave,sp->zhongping);if(PM=1)printf(" 平均分排名 t 综合测评分排名 n"); printf("%dtt%dn",sp->paiming1,sp->paiming2); / 信息存盘 (结构体 )void SaveStruct(struct st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理安全培训 2
- 2-7逻辑运算的基本规则
- 统编版语文五年级下册第23课《童年的发现》精美课件
- 新乡学院《傅里叶分析与小波分析》2023-2024学年第一学期期末试卷
- 聊城大学东昌学院《混凝土结构原理与设计》2023-2024学年第一学期期末试卷
- 乐山师范学院《信息检索与科技写作》2023-2024学年第二学期期末试卷
- 四川省江油市2024-2025学年第二学期初三第一次模拟考试化学试题含解析
- 天津市职业大学《隶书技法》2023-2024学年第二学期期末试卷
- 潍坊科技学院《建筑安装工程概预算》2023-2024学年第一学期期末试卷
- 上海市宝山区上海交大附中2025届高三下5月第一次质量检测试题物理试题试卷含解析
- 腾讯游戏引擎技术向工业数字孪生的迁移
- 肩关节镜相关知识
- “趣”破“蛐蛐”小妙招社交魔法课主题班会
- 中国肥胖及代谢疾病外科治疗指南(2024版)解读
- 医院建设项目验收管理流程
- 工业能源管理的数字化转型
- 设计院保密管理制度(3篇)
- 2-2生态脆弱区的综合治理(分层练习)解析版
- 《投资理财课件》课件
- 2024年公务员考试公共基础知识常识题库及答案(共五套)
- 2024人工智能大模型技术财务应用蓝皮书
评论
0/150
提交评论