




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、郑州科技学院C语言课程设计设计(论文)题目:学生成绩管理系统所 在 院:信息工程学院专业班级:15计算机科学与技术 3班学生姓名:宋建军学号:201515085指导教师:周丽2016年9月11日郑州科技学院课程设计(论文)任务书设计题目:学生综合信息测评系统专业班级:15计算机科学与技术 3班学号 2015150085 姓名 宋建军主要内容设计学生成绩管理系统,主要包含:输入记录模块、查询记录模块、更新记录模块、统 计记录模块和输出记录模块。采用字符用户界面,通过菜单选择相应的操作, 直观且操作简单。数据的存储选用数据 文件方式;编辑平台选用 Microsoft Visual C+ 6.0。所
2、用到的知识点有:三种基本程序结构,数组,函数,指针,结构体,文件操作和链表。基本要求:按照内容要求,设计完整的学生成绩管理系统。要求调试通过,不存在漏洞,方便用户 操作。功能的实现上力求容错能力要强且提示信息完备。完成期限:2016年9月11日指导教师签名:1概述 错误!未定义书签。1.1 程序要求 .11.2 具体分工情况 .11.3 开发环 12需求分析 23 总体设计13.1 程序主界面设计 .3.2 学 生 信 息 处 理 子 界 面 设计3.3 学生数据处理子界面设计4程序设计错误!未定义书签。5程序调试396程序评估397参考文献 错误!未定义书签。1 概述1 ) 程序要求每个学生
3、的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、 综合测评总分、综合测评名次。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%, 10%, 10%, 20%。A学生信息处理(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。(2) 插入(修改)同学信息:(3) 删除同学信息:(4) 浏览学生信息:R学生数据处理:(5) 按考试科目录入学生成绩并且按公式:考试成绩=(语文+数学+外语)/3计算考试成绩,并计算考试名次,提示: 先把学生信息读入
4、数组,然后按提示输入每科成绩,计算考试成绩,求出名次,最后把学生记录写入一个文件中。(6) 学生测评数据输入并计算综合测评总分及名次。综合测评总分=(考试成绩)*0.6+ (同学互评分)*0.1+品德成绩*0.1 +任课老师评分*0.2 。(7) 学生数据管理输入学号,读出并显示该同学信息,输入新数据,将改后信息写入文件(8) 学生数据查询:输入学号或其他信息,即读出所有数据信息,并显示出来。C、学生综合信息输出3 ) 开发环境Microsoft Visual C+ 6.02 需求分析 为什么要做个学生综合测评系统。以下有几点理由1,我们都知道学校考核一个学生的主要依据就是学生的综合成绩,综合
5、素质。这就让一个学生的综合测评系统的建立显得尤为重要。2 一个学生综合测评系统包括学生的方方面面信息,这有利于学校的管理。3大家都知道学生是流动的,而且综合测评是每年评比一次,所以这学生综合 测评系统的更改录入功能重要性不明而喻。4现在是个时间就是金钱的社会。老师本身就工作繁忙。这系统可以大大减轻 老师的包袱。5这是个开放的平台,每个学生都可以轻易地查询自己的成绩。灵活性强。3总体设计1)程序主界面设计主界面J2 )学生信息处理子界面设计学生信息处理返回浏览学生信息删除学生信息修改学生信息输入学生信息3)学生数据处理子界面设计学生数据处理录入成绩修改学生数据学生数据查询主菜单程序流程图开始/输
6、入数字/041否一 否<=9>1退出 一4程序设计1 )主界面程序设计(1)函数描述info-menuData-menushuchuHelp主菜单输入参数:无输出参数:无功 能:本系统可以存储学生的基本信息和各科成绩,并能计算考试成绩,综合测评成绩和排名。2)函数程序 int main()system("color 2e");printf("nnntt欢 迎 使 用 学 生 综 合 管 理 系统 nn");printf("nntt");system("pause");menu(); / 主菜单入口函数r
7、eturn 0 ;2 )学生信息处理子菜单( 1) 函数描述函 数 名: info_menu()输入参数:无输出参数:无功能:显示学生信息处理系统菜单( 2) 函数程序info_menu()void/ 学生信息菜单int choice;while(1)system("cls");/ 清屏printf("nnnntt学生信息处理系统nn");printf("ttt1.输入学生信息n");printf("ttt2.修改学生信息n");printf("ttt3.删除学生信息n");printf(&qu
8、ot;ttt4.浏览学生信息n");printf("ttt 0. 返回主菜单nn");printf("tt 请输入序号选择操作:");scanf("%d",&choice);if(choice=0) break;switch(choice)case 1: system("cls");info_input(); info_xieru(); break;case 2: system("cls");info_xiugai(); break;case 3: system("c
9、ls");info_del(); break;case 4: system("cls");info_output(); break;default:system("cls"); printf("nt输入有误! 请重新输入 !nn"); break;3 )学生数据处理子菜单1) 1) 函数描述函 数 名: data_menu()输入参数:无输出参数:无功能:显示学生数据处理系统菜单2) 函数程序Voiddata_menu()/ 数据处理菜单int choice;/printf("nt 在进入学生数据管理前,请确认学生
10、信息已全部完成! n");printf("nt 输入数字选择(0 :返回;其它数字继续。)n");scanf("%d",&choice);if(choice=0) return;while(1)system("cls");/ 清屏printf("nnnntt 学生数据处理系统 nn");printf("ttt1.录入成绩数据n");printf("ttt2.修改学生数据n");printf("ttt3.学生数据查询n");printf(&
11、quot;ttt 0. 返回主菜单nn");printf("tt 请输入序号选择操作:");scanf("%d",&choice);if(choice=0) break;switch(choice)case 1: system("cls");data_input(); break;case 2: system("cls");data_xiugai(); break;case 3: system("cls");data_chaxun(); break;default: syste
12、m("cls");printf("nt输入有误! 请重新输入 !nn"); break;4)学生综合信息输出( 1) 函数描述函 数 名 : shuchu()输入参数:无输出参数:无功 能 :学生信息的综合输出( 2)函数程序void shuchu()/学生综合信息输出int i;data_daoru();printf("n");printf(" n");printf("学 号姓 名电 话平均分名次测评总分 n");printf(" n");for(i=0;i<coun
13、t;i+)printf("|%10d %10s %14s %10.1f %10d %10.1fn",infoi.number,,infoi.phone,datai.avg,datai.ksmc,datai.ceping);printf("|_|n");printf("nntt");system("pause");printf("n");5)帮助函数/*函数名 : help()输入参数:无输出参数:无功能 :显示本系统的信息*/帮助信息void help()system(&qu
14、ot;cls");/清屏printf("n");printf("ttt 学生综合测评系统!nn");printf("本系统可以存储学生的基本信息和各科成绩,并能计算考试成绩,综合测评成绩和排名。nn");printf("基本信息包括:学号、 姓名、 性别、家庭住址、联系电话;nn各科成绩包括:语文、数学、英语成绩;nn");printf("其它包括:考试名次、同学互评分、品德成绩、任课教师评分等。 nn");printf("说明:考试成绩排名是按照考试成绩计算的(考试成绩=(
15、语 +数 +外 )/3);nn");printf(" 综合测评总分=( 考试成绩)*0.6+ (同学互评分)*0.1+( 品德成绩 )*0.1n +( 任课教师评分)*0.2)nn");printf(" 其它请按照提示操作即可。nn");printf("nntt");system("pause");6)学生信息导入函数/*函数名 : info_daoru()输入参数:无输出参数:无功能 :打开存放的学生信息*/void info_daoru()/信息导出文件函数FILE *f_info;printf(&q
16、uot;nnt 正在导入.nn");if(f_info=fopen("info.txt","r")=NULL)printf("nt 打开文件失败!nn");return;count=0;while(!feof(f_info)fscanf(f_info,"%d%s%s",&p.number,&,&p.sex,&p.addr ,&p.phone);学生%s%sinfocount=p;count+;printf("nt 导入已完成! 共导入 %d 条
17、记录 !nnn",count);fclose(f_info);system("cls");7)学生信息输入函数/*函数名: info_input()输入参数:无输出参数:无功能 :录入学生个人信息*/void info_input()/学生信息输入函数int i,j;info_daoru();for( ; ; )printf("t 请输入学号( 输入 0 退出 ): ");scanf("%d",&p.number);if(p.number=0) return;for(i=0;i<=count;i+)/判断是否存
18、在该学生if(p.number=infoi.number)printf("nnt 该学号已存在! 请重新输入!nn");return;printf("t 请输入姓名:");/输入学生信息scanf("%s",&);printf("t 请输入性别:");scanf("%s",&p.sex);if( ( strcmp(p.sex ," 男 ")!=0 ) | (strcmp(p.sex ," 女 ")!=0) ) printf(&q
19、uot;t 你输入的内容不符合要求,请从新输入!按任意键继续n");getchar();continue;printf("t请输入家庭地址");scanf("%s",&p.addr );printf("t 请输入电话号码:");scanf("%s",&p.phone);infocount=p;for(i=0;i<count;i+)/ 按学号排序if(infoi.number>infocount.number)for(j=count;j>i;j-)infoj=infoj-1
20、;infoi=p;break;count+;8)输出函数/*函数名: info_output()输入参数:无输出参数:无功能 :显示学生个人信息*/学生信息void info_output()/浏览FILE *f_info;int i;if(f_info=fopen("info.txt","r")=NULL)/ 判断printf("nt 没有学生信息!");printf("nntt");system("pause");return;info_daoru();printf("n"
21、;);if(count=0)/ 判断printf("nt没有学生信息!");printf("nntt");system("pause");return;elseprintf(" 学号 姓名性别家庭地址联系电话n");/ 输出学生信息for(i=0;i<count;i+)printf(" %d",infoi.number);printf(" %8s",);printf(" %8s",infoi.sex);printf("
22、%10s",infoi.addr);printf(" %10snn",infoi.phone);printf("t 请按任意键返回上级:");printf("nntt");system("pause");printf("nnnn");9)学生信息写入文件/*函数名: info_xieru()输入参数:无输出参数:无功能 :把学生个人信息数据写入到文件*/void info_xieru() 信息写入文件函数FILE *f;int i;/学生if(f=fopen("info.tx
23、t","w")=NULL)printf("nt 打开文件失败!nn");exit(0);for(i=0;i<count;i+) 存文件/if(infoi.number=w.number) continue;elsefprintf(f,"%d%s",infoi.number,,infoi.sex,infoi.addr e);%s %s,infoi.phon%sfclose(f);printf("nt 保存成功!nn");printf("nntt");system
24、("pause");system("cls");return;10)删除学生信息函数/*函数名: info_del()输入参数:无输出参数:无功能 :删除学生个人信息*/*/学生信void info_del() 息删除int pp;int i,j;info_daoru();printf("nt 请输入要删除学生的学号:");scanf("%d",&pp);printf("n");for(i=0;i<=count;i+)/判断if(infoi.number=pp) break;if(
25、i>=count)printf("nt 没有找到该学生!n"); return;printf(" 学 号 姓 名 性 别地 址联 系 电 话 n");/ 显示删除信息printf(" %d ",infoi.number);printf(" %5s ",);printf(" %5s ",infoi.sex);printf(" %10s ",infoi.addr);printf(" %10snn",infoi.phone);print
26、f("nt 是否删除?t 1. 是 t 2. 否 t ");while(1)scanf("%d",&j);switch(j)case 1: infoi=w; printf("nt 删除成功!nn"); info_xieru();return;case 2: return;default : printf(" 输入错误! 请重新输入!");break;break;printf("nntt");system("pause");11)学生信息修改函数/*函数名: info_
27、xiugai()输入参数:无输出参数:无功能 :修改学生信息*/void info_xiugai()/修 改 学 生信息int pp;int i,j;info_daoru();printf("nt 请输入要修改学生的学号:");/查找scanf("%d",&pp);printf("n");for(i=0;i<=count;i+)if(infoi.number=pp) break;if(i>=count) printf("nt没有找到该学生!n"); return;printf(" 学
28、号 姓 名 性 别 家 庭 地 址联 系 电 话 n");/ 显示printf(" %d",infoi.number);printf(" %10s",);printf(" %10s",infoi.sex);printf(" %16s",infoi.addr);printf(" %13sn",infoi.phone);printf("nt 是否修改?t 1. 是 t 2. 否 t ");while(1)/修改scanf("%d"
29、,&j);switch(j)case 1:printf("t 学号为:%.0dn",infoi.number);printf("t请输入姓名:");scanf("%s",);printf("t请输入性别:");scanf("%s",infoi.sex);if( ( strcmp(p.sex ," 男 ")!=0 ) | (strcmp(p.sex ,"女 ")!=0) ) printf("t 你输入的内容不符合要求,请
30、从新输入!按任意键继续n");getch();continue;printf("t 请输入家庭地址");scanf("%s",&infoi.addr);printf("t 请输入电话号码:");scanf("%s",infoi.phone);printf("nt 修 改 成 功 !nn"); info_xieru(); return; / 保存case 2: return;default : printf(" 输入错误! 请重新输入!");break;bre
31、ak;printf("nntt");system("pause");12)学生成绩数据导入/*函数名: data_daoru()输入参数:无输出参数:无功能 :学生成绩从文件导入*/学生数据void data_daoru() 导出FILE *f_data;int i;info_daoru();printf("nnt 正在导入.nn");if(f_data=fopen("data.txt","r")=NULL)printf("nt 打开文件失败!nn");return;i=0;
32、while(!feof(f_data)fscanf(f_data,"%d %d %d %d %f %d %d %d %d %f ",&d.number,&d.chinese,&d.math,&d.english,&d.avg,&d.ksmc,&d.huping,&d.pinde,&d.teacher,&d.ceping);datai=d;i+;printf("nt 导入已完成! 共导入 %d 条记录 !nnn",count);fclose(f_data);/关 闭 文件sys
33、tem("cls");13)数据写入*函数名: data_xieru()输入参数:无输出参数:无功能 :学生数据写入到文件*void data_xieru()/写入文件函数FILE *f;int i;if(f=fopen("data.txt","w")=NULL)printf("nt 打开文件失败!nn");exit(0);for(i=0;i<count;i+)fprintf(f,"%d%d %d %d %f %d %d %d %d %f",datai.number,datai.chine
34、se,datai.math,datai.english,datai .avg,datai.ksmc,datai.huping,datai.pinde,datai.teacher,datai.ceping);fclose(f);printf("nntt");system("pause");system("cls");return;14)数据输入函数 /*: data_input()输入参数:无 输出参数:无功能 :录入学生数据*/void data_input()/数据输入FILE *f_info;int choice,i,k;/pri
35、ntf("nt警告!原有成绩将被覆盖!n");printf("nt输入数字选择(0. 返回;其余数字继续)nn");scanf("%d",&choice);if(choice=0) return;/ 判断printf("nnt 正在导入.nn");if(f_info=fopen("info.txt","r")=NULL)printf("nt 打开文件失败!nn");return;count=0;while(!feof(f_info)/导出学生信息f
36、scanf(f_info,"%d%s%s%s%s",&p.number,,p.sex,p.addr ,p.phone);datacount.number =p.number ;infocount=p;count+;printf("nt 导入已完成! 共导入 %d 条记录 !nnn",count);fclose(f_info);for(i=0;i<count;i+)/输入学生数据printf("t 学号 :%dn",infoi.number);printf("n");printf("
37、;t 姓名 :%sn",);printf("n");printf("t 请输入语文成绩:");scanf("%d",&datai.chinese);while( datai.chinese < 0 | datai.chinese > 100 ) printf("t 对不起你输入的数据不是1-100 之间,请从新输入真确的数值!n");printf("t请输入语文成绩:");scanf("%d",&datai.chine
38、se);printf("n");printf("t 请输入数学成绩:");scanf("%d",&datai.math);while( datai.math < 0 | datai.math > 100 ) printf("t 对不起你输入的数据不是1-100 之间,请从新输入真确的数值!n");printf("t 请输入数学成绩:");scanf("%d",&datai.math);printf("n");printf(&qu
39、ot;t 请输入英语成绩:");scanf("%d",&datai.english);while( datai.english < 0 | datai.english > 100 ) printf("t 对不起你输入的数据不是1-100 之间,请从新输入真确的数值!n");printf("t 请输入英语成绩:");scanf("%d",&datai.english);printf("n");printf("t 请输入同学互评成绩:");s
40、canf("%d",&datai.huping );while( datai.huping < 0 | datai.huping > 100 ) printf("t 对不起你输入的数据不是1-100 之间,请从新输入真确的数值!n");printf("t 请输入同学互评成绩:");scanf("%d",&datai.huping );printf("n");printf("t 请输入品德成绩:");scanf("%d",&
41、;datai.pinde);while( datai.pinde < 0 | datai.pinde > 100 ) printf("t 对不起你输入的数据不是1-100 之间,请从新输入真确的数值!n");printf("t请输入品德成绩:");scanf("%d",&datai.pinde);printf("n");printf("t 请输入老师评分:");scanf("%d",&datai.teacher);while( datai.teac
42、her < 0 | datai.teacher > 100 ) printf("t 对不起你输入的数据不是1-100 之间,请从新输入真确的数值!n");printf("t请输入老师评分:");scanf("%d",&datai.teacher);datai.avg=(datai.chinese+datai.math+datai.english)/3.0;datai.ceping=(datai.avg*0.6+datai.huping*0.1 +datai.pinde*0.1+datai.teacher*0.2);
43、datai.ksmc=i+1;for(k=0;k<i;k+)/名次排序if(datai.avg>datak.avg)datak.ksmc=datak.ksmc+1;if(datai.ksmc>datak.ksmc-1)datai.ksmc=datak.ksmc-1;printf("nt 输入已完成!正在保存. n");data_xieru();system("cls");15)数据修改/*函数名: data_xiugai()输入参数:无输出参数:无功能 :学生成绩数据的修改*/void data_xiugai()/数据修改int pp;
44、int i,j,k;data_daoru();printf("nt 请输入要修改学生的学号:");scanf("%d",&pp);printf("n");for(i=0;i<=count;i+)if(datai.number=pp) break;if(i>=count) printf("nt没有找到该学生!n"); return;printf("nt 学号 :%.0d 姓名 :%s nnt 语文 :%d 数学 :%d 英语 :%d 品德成绩:%d老师评分 :%dnn",dat
45、ai.number,,datai.chinese,datai.math, datai.english,datai.pinde,datai.teacher);printf("nt 是否修改?t 1. 是 t 2. 否 t ");/询问while(1)scanf("%d",&j);switch(j)case 1:for(k=0;k<=count;k+)/ 重新排名次if(datai.avg>datak.avg)datak.ksmc=datak.ksmc-1;printf("nt 请输入语文成绩:")
46、;scanf("%d",&datai.chinese);while( datai.chinese <0 | datai.chinese >100 ) printf("t 对不起你输入的数据不是1-100 之间,请从新输入真确的数值!n");printf("t 请输入老师评分:");scanf("%d",&datai.chinese );printf("t 请输入数学成绩:");scanf("%d",&datai.math);while( d
47、atai.math < 0 | datai.math > 100 ) printf("t 对不起你输入的数据不是1-100 之间,请从新输入真确的数值!n");printf("t 请输入数学成绩:");scanf("%d",&datai.math);printf("t 请输入英语成绩:");scanf("%d",&datai.english);while( datai.english < 0 | datai.english > 100 ) printf(&
48、quot;t对不起你输入的数据不是1-100 之间,请从新输入真确的数值!n");printf("t请输入英语成绩:");scanf("%d",&datai.english);printf("nt 请输入同学互评成绩:");scanf("%d",&datai.huping );while( datai.huping < 0 | datai.huping > 100 ) printf("t 对不起你输入的数据不是1-100 之间,请从新输入真确的数值!n");
49、printf("t 请输入同学互评成绩:");scanf("%d",&datai.huping );printf("nt 请输入品德成绩:");scanf("%d",&datai.pinde);while( datai.pinde < 0 | datai.pinde > 100 ) printf("t 对不起你输入的数据不是1-100 之间,请从新输入真确的数值!n");printf("t 请输入品德成绩:");scanf("%d&quo
50、t;,&datai.pinde);printf("t 请输入老师评分:");scanf("%d",&datai.teacher);while( datai.teacher < 0 | datai.teacher > 100 ) printf("t 对不起你输入的数据不是1-100 之间,请从新输入真确的数值!n");printf("t 请输入老师评分:");scanf("%d",&datai.teacher);datai.avg=(datai.chinese+
51、datai.math+datai.english)/3.0;datai.ceping=(datai.avg*0.6+datai.huping*0.1+datai.pinde*0.1+datai.teacher*0.2);datai.ksmc=count;for(k=0;k<count;k+)/ 重新排名次if(datai.avg>datak.avg)datak.ksmc=datak.ksmc+1;if(datai.ksmc>datak.ksmc-1)datai.ksmc=datak.ksmc-1;return;printf("nt 修 改 成 功 !nn"
52、); data_xieru();/ 写入文件case 2: return;default : printf("输入错误! 请重新输入!");break;break;printf("nntt");system("pause");16)数据查询/*函数名: data_chaxun()输入参数:无输出参数:无功能 :学生数据的查询*/数据查询void data_chaxun()int pp;char cname20;int i,xz;data_daoru();/导出文件数据printf("t 请输入查询方式:nn");p
53、rintf("t1. 学号查询方式nn");printf("t2. 姓名查询方式nn");printf("t 请选择:");scanf("%d",&xz);if(xz=1)printf("nt 请输入要查询学生的学号:");scanf("%d",&pp);printf("n");for(i=0;i<=count;i+)if(datai.number=pp) break;if(i>=count)printf("nt 没有
54、找到该学生!n");return;printf("nt 学号 :%d 姓名 :%s 性别 :%s nnt 语文 :%d 数学 :%d 英 语:%d平均成绩:.1f名次:%dnnt同学互评:d品彳惠成绩:d老师评分:d nnt综合成绩 :%.1fnn",infoi.number,,infoi.sex,datai.chinese ,datai.math,datai.english,datai.avg,datai.ksmc,datai.huping ,datai.pinde,datai.teacher,datai.ceping);printf("nntt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年心理咨询师职业考试试题及答案
- 2025年药学专业执业资格考试试题及答案
- 2025年中小学教师职业道德考试试卷及答案
- 2025年网络设计与开发实践考试试题及答案
- 2025年艺术设计基础知识综合考试卷及答案
- 江苏省徐州市经济技术开发区2025届小升初全真数学模拟预测卷含解析
- 内蒙古科技大学《材料工程基础》2023-2024学年第二学期期末试卷
- 四川省德阳市重点名校2024-2025学年初三第二学期二模考试生物试题含解析
- 外贸职业学院思政课件
- 消费者行为分析私域流量池合作协议
- 山东师大附属中2025届高三第二次模拟考试英语试卷含解析
- 《子宫肌瘤的护理》课件
- 液化气经营权转让协议
- 《高温合金钻削加工特性研究》
- 中央空调系统维保服务报价清单
- 建设项目职业病危害风险分类管理目录
- 8.3 法治社会 课件高中政治统编版必修三政治与法治
- 工程安全施工方案范本
- 《昨日重现》中英文歌词对照
- DB13-T 5687-2023 负压封闭引流术护理规范
- 北大A计划在线测评题
评论
0/150
提交评论