学生综合测评系统C语言设计HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】郑州科技学院C语言课程设计设计(论文)题目:学生成绩管理系统所在院:信息工程学院专业班级: 15计算机科学与技术3班学生姓名:宋建军学号:5指导教师:周丽2016年9月11日郑州科技学院课程设计(论文)任务书设计题目:学生综合信息测评系统专业班级:15计算机科学与技术3班学号85姓名宋建军主要内容设计学生成绩管理系统,主要包含:输入记录模块、查询记录模块、更新记录模块、统计记录模块和输出记录模块。
采用字符用户界面,通过菜单选择相应的操作,直观且操作简单。
数据的存储选用数据文件方式;编辑平台选用Microsoft Visual C++ 。
所用到的知识点有:三种基本程序结构,数组,函数,指针,结构体,文件操作和链表。
基本要求:按照内容要求,设计完整的学生成绩管理系统。
要求调试通过,不存在漏洞,方便用户操作。
功能的实现上力求容错能力要强且提示信息完备。
完成期限:2016年9月11日指导教师签名:程序要求 (1)具体分工情况 (1)开发环 (1)程序主界面设计……………………………………………………………..学生信息处理子界面设计...................................................................... ..学生数据处理子界面设计………………………………………………1概述1 ) 程序要求每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。
考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。
A、学生信息处理(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。
(2) 插入(修改)同学信息:(3) 删除同学信息:(4) 浏览学生信息:B、学生数据处理:(1) 按考试科目录入学生成绩并且按公式:考试成绩=(语文+数学+外语)/3 计算考试成绩,并计算考试名次,提示:先把学生信息读入数组,然后按提示输入每科成绩,计算考试成绩,求出名次,最后把学生记录写入一个文件中。
(2) 学生测评数据输入并计算综合测评总分及名次。
综合测评总分=(考试成绩)*+(同学互评分)*+品德成绩*+任课老师评分*。
(3) 学生数据管理输入学号,读出并显示该同学信息,输入新数据,将改后信息写入文件(4) 学生数据查询:输入学号或其他信息,即读出所有数据信息,并显示出来。
C、学生综合信息输出。
3 )开发环境Microsoft Visual C++2需求分析为什么要做个学生综合测评系统。
以下有几点理由1,我们都知道学校考核一个学生的主要依据就是学生的综合成绩,综合素质。
这就让一个学生的综合测评系统的建立显得尤为重要。
2一个学生综合测评系统包括学生的方方面面信息,这有利于学校的管理。
3大家都知道学生是流动的,而且综合测评是每年评比一次,所以这学生综合测评系统的更改录入功能重要性不明而喻。
4现在是个时间就是金钱的社会。
老师本身就工作繁忙。
这系统可以大大减轻老师的包袱。
5这是个开放的平台,每个学生都可以轻易地查询自己的成绩。
灵活性强。
3总体设计1) 程序主界面设计输出参数:无功能:本系统可以存储学生的基本信息和各科成绩,并能计算考试成绩,综合测评成绩和排名。
(2)函数程序int main(){system("color 2e");printf("\n\n\n\t\t............欢迎使用学生综合管理系统............\n\n");printf("\n\n\t\t");system("pause");menu(); 入学生信息\n");printf("\t\t\t● 2.修改学生信息\n");printf("\t\t\t● 3.删除学生信息\n");printf("\t\t\t● 4.浏览学生信息\n");printf("\t\t\t● 0.返回主菜单\n\n");printf("\t\t请输入序号选择操作:");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("cls");info_del(); break;case 4: system("cls");info_output(); break;default:system("cls"); printf("\n\t输入有误!请重新输入!\n\n"); break;}}}3)学生数据处理子菜单(1)函数描述函数名: data_menu()输入参数:无输出参数:无功能:显示学生数据处理系统菜单(2)函数程序Void data_menu() 入成绩数据\n");printf("\t\t\t● 2.修改学生数据\n");printf("\t\t\t● 3.学生数据查询\n");printf("\t\t\t● 0.返回主菜单\n\n");printf("\t\t请输入序号选择操作:");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: system("cls");printf("\n\t输入有误!请重新输入!\n\n"); break;}}}4)学生综合信息输出(1)函数描述函数名: shuchu()输入参数:无输出参数:无功能:学生信息的综合输出(2)函数程序void shuchu()umber,info[i].name,info[i].phone,data[i].avg,data[i].ksmc,data[i].ceping);printf("|____________|____________|______________ __|___________|___________|__________|\n");}printf("\n\n\t\t");system("pause");printf("\n");}5)帮助函数/**************************************************函数名: help()输入参数:无输出参数:无功能:显示本系统的信息****************************************************/void help() .\n\n");if((f_info=fopen("","r"))==NULL){printf("\n\t打开文件失败!\n\n");return;}count=0;while(!feof(f_info)){fscanf(f_info,"%d %s %s %s %s ",&,&,&,& ,&;info[count]=p;count++;}printf("\n\t导入已完成!共导入 %d 条记录!\n\n\n",count);fclose(f_info);system("cls");}7)学生信息输入函数/**************************************************函数名: info_input()输入参数:无输出参数:无功能:录入学生个人信息****************************************************/void info_input() umber){printf("\n\n\t该学号已存在!请重新输入!\n\n");return;}}printf("\t请输入姓名:"); umber>info[count].number){for(j=count;j>i;j--){info[j]=info[j-1];}info[i]=p;break;}}count++;}}8)输出函数/**************************************************函数名: info_output()输入参数:无输出参数:无功能:显示学生个人信息****************************************************/void info_output() umber);printf(" %8s",info[i].name);printf(" %8s",info[i].sex);printf(" %10s",info[i].addr);printf(" %10s\n\n",info[i].phone);}}printf("\t请按任意键返回上级:");printf("\n\n\t\t");system("pause");printf("\n\n\n\n");}9)学生信息写入文件/**************************************************函数名: info_xieru()输入参数:无输出参数:无功能:把学生个人信息数据写入到文件****************************************************/void info_xieru() umber== continue;else fprintf(f,"%d %s %s %s %s",info[i].number,info[i].name,info[i].sex,info[i].addr ,info[i].phon e);}fclose(f);printf("\n\t保存成功!\n\n");printf("\n\n\t\t");system("pause");system("cls");return;}10)删除学生信息函数/**************************************************函数名: info_del()输入参数:无输出参数:无功能:删除学生个人信息****************************************************/void info_del()umber==pp) break;if(i>=count){printf("\n\t没有找到该学生!\n"); return;}}printf("学号姓名性别地址联系电话\n"); umber);printf(" %5s ",info[i].name);printf(" %5s ",info[i].sex);printf(" %10s ",info[i].addr);printf(" %10s\n\n",info[i].phone);printf("\n\t是否删除?\t 1.是 \t 2.否 \t ");while(1){scanf("%d",&j);switch(j){case 1: info[i]=w; printf("\n\t删除成功!\n\n");info_xieru(); return;case 2: return;default : printf("输入错误!请重新输入!");break;}break;}printf("\n\n\t\t");system("pause");}11)学生信息修改函数/**************************************************函数名: info_xiugai()输入参数:无输出参数:无功能:修改学生信息****************************************************/void info_xiugai()umber==pp) break;}if(i>=count) {printf("\n\t没有找到该学生!\n"); return;}printf("学号姓名性别家庭地址联系电话\n"); umber);printf(" %10s",info[i].name);printf(" %10s",info[i].sex);printf(" %16s",info[i].addr);printf(" %13s\n",info[i].phone);printf("\n\t是否修改?\t 1.是 \t 2.否 \t ");while(1){d\n",info[i].number);printf("\t请输入姓名:");scanf("%s",info[i].name);printf("\t请输入性别:");scanf("%s",info[i].sex);if( ( strcmp ,"男")!=0 ) || (strcmp ,"女")!=0) ){ printf("\t你输入的内容不符合要求,请从新输入!按任意键继续……\n");getch();continue;}printf("\t请输入家庭地址");scanf("%s",&info[i].addr);printf("\t请输入电话号码:");scanf("%s",info[i].phone);printf("\n\t修改成功!\n\n"); info_xieru(); return; .\n\n");if((f_data=fopen("","r"))==NULL){printf("\n\t打开文件失败!\n\n");return;}i=0;while(!feof(f_data)){fscanf(f_data,"%d %d %d %d %f %d %d %d %d %f",&,&,&,&,&,&,& ,&,&,&;data[i]=d;i++;}printf("\n\t导入已完成!共导入 %d 条记录!\n\n\n",count);fclose(f_data);umber,data[i].chinese,data[i].math,data[i].english,data[i].avg,data[ i].ksmc,data[i].huping ,data[i].pinde,data[i].teacher,data[i].ceping );}fclose(f);printf("\n\n\t\t");system("pause");system("cls");return;}14)数据输入函数/**************************************************函数名: data_input()输入参数:无输出参数:无功能:录入学生数据****************************************************/void data_input() 回;其余数字继续)\n\n");scanf("%d",&choice);if(choice==0) return;printf("\n\n\t正在导入...\n\n");umber = ;info[count]=p;count++;}printf("\n\t导入已完成!共导入 %d 条记录!\n\n\n",count);fclose(f_info);for(i=0;i<count;i++){umber);printf("\n");printf("\t姓名:%s\n",info[i].name);printf("\n");printf("\t请输入语文成绩:");scanf("%d",&data[i].chinese);while( data[i].chinese < 0 || data[i].chinese > 100 ){ printf("\t对不起你输入的数据不是 1-100 之间,请从新输入真确的数值!\n");printf("\t请输入语文成绩:");scanf("%d",&data[i].chinese);}printf("\n");printf("\t请输入数学成绩:");scanf("%d",&data[i].math);while( data[i].math < 0 || data[i].math > 100 ){ printf("\t对不起你输入的数据不是 1-100 之间,请从新输入真确的数值!\n");printf("\t请输入数学成绩:");scanf("%d",&data[i].math);}printf("\n");printf("\t请输入英语成绩:");scanf("%d",&data[i].english);while( data[i].english < 0 || data[i].english > 100 ){ printf("\t对不起你输入的数据不是 1-100 之间,请从新输入真确的数值!\n");printf("\t请输入英语成绩:");scanf("%d",&data[i].english);}printf("\n");printf("\t请输入同学互评成绩:");scanf("%d",&data[i].huping );while( data[i].huping < 0 || data[i].huping > 100 ){ printf("\t对不起你输入的数据不是 1-100 之间,请从新输入真确的数值!\n");printf("\t请输入同学互评成绩:");scanf("%d",&data[i].huping );}printf("\n");printf("\t请输入品德成绩:");scanf("%d",&data[i].pinde);while( data[i].pinde < 0 || data[i].pinde > 100 ){ printf("\t对不起你输入的数据不是 1-100 之间,请从新输入真确的数值!\n");printf("\t请输入品德成绩:");scanf("%d",&data[i].pinde);}printf("\n");printf("\t请输入老师评分:");scanf("%d",&data[i].teacher);while( data[i].teacher < 0 || data[i].teacher > 100 ){ printf("\t对不起你输入的数据不是 1-100 之间,请从新输入真确的数值!\n");printf("\t请输入老师评分:");scanf("%d",&data[i].teacher);}data[i].avg=(data[i].chinese+data[i].math+data[i].english)/;data[i].ceping=(data[i].avg*+data[i].huping*+data[i].pinde*+data[i].teacher*;data[i].ksmc=i+1;for(k=0;k<i;k++){ vg>data[k].avg){data[k].ksmc=data[k].ksmc+1;if(data[i].ksmc>data[k].ksmc-1)data[i].ksmc=data[k].ksmc-1;}}}printf("\n\t输入已完成!正在保存... \n");data_xieru();system("cls");}15)数据修改/**************************************************函数名: data_xiugai()输入参数:无输出参数:无功能:学生成绩数据的修改****************************************************/void data_xiugai()umber==pp) break;}if(i>=count) { printf("\n\t没有找到该学生!\n"); return;}printf("\n\t学号:%.0d 姓名:%s \n\n\t语文:%d 数学:%d 英语:%d 品德成绩:%d 老师评分:%d\n\n",data[i].number,info[i].name,data[i].chinese,data[i].math, data[i].english,data[i].pinde,data[i].teacher);printf("\n\t是否修改?\t 1.是 \t 2.否 \t ");while(1){vg>data[k].avg) data[k].ksmc=data[k].ksmc-1;}printf("\n\t请输入语文成绩:");scanf("%d",&data[i].chinese);while( data[i].chinese < 0 ||data[i].chinese > 100 ){ printf("\t对不起你输入的数据不是 1-100 之间,请从新输入真确的数值!\n");printf("\t请输入老师评分:");scanf("%d",&data[i].chinese );}printf("\t请输入数学成绩:");scanf("%d",&data[i].math);while( data[i].math < 0 || data[i].math > 100 ){ printf("\t对不起你输入的数据不是 1-100 之间,请从新输入真确的数值!\n");printf("\t请输入数学成绩:");scanf("%d",&data[i].math);}printf("\t请输入英语成绩:");scanf("%d",&data[i].english);while( data[i].english < 0 ||data[i].english > 100 ){ printf("\t对不起你输入的数据不是 1-100 之间,请从新输入真确的数值!\n");printf("\t请输入英语成绩:");scanf("%d",&data[i].english);}printf("\n\t请输入同学互评成绩:");scanf("%d",&data[i].huping );while( data[i].huping < 0 ||data[i].huping > 100 ){ printf("\t对不起你输入的数据不是 1-100 之间,请从新输入真确的数值!\n");printf("\t请输入同学互评成绩:");scanf("%d",&data[i].huping );}printf("\n\t请输入品德成绩:");scanf("%d",&data[i].pinde);while( data[i].pinde < 0 ||data[i].pinde > 100 ){ printf("\t对不起你输入的数据不是 1-100 之间,请从新输入真确的数值!\n");printf("\t请输入品德成绩:");scanf("%d",&data[i].pinde);}printf("\t请输入老师评分:");scanf("%d",&data[i].teacher);while( data[i].teacher < 0 ||data[i].teacher > 100 ){ printf("\t对不起你输入的数据不是 1-100 之间,请从新输入真确的数值!\n");printf("\t请输入老师评分:");scanf("%d",&data[i].teacher);}data[i].avg=(data[i].chinese+data[i].math+data[i].english)/;data[i].ceping=(data[i].avg*+data[i].huping *+ data[i].pinde*+data[i].teacher*;data[i].ksmc=count;for(k=0;k<count;k++){ vg>data[k].avg){data[k].ksmc=data[k].ksmc+1;if(data[i].ksmc>data[k].ksmc-1)data[i].ksmc=data[k].ksmc-1;}}printf("\n\t修改成功!\n\n"); data_xieru(); return; 号查询方式\n\n");printf("\t2.姓名查询方式\n\n");printf("\t请选择:");scanf("%d",&xz);if(xz==1){printf("\n\t请输入要查询学生的学号:");scanf("%d",&pp);printf("\n");for(i=0;i<=count;i++){if(data[i].number==pp) break;if(i>=count){printf("\n\t没有找到该学生!\n");return;}}printf("\n\t学号:%d 姓名:%s 性别:%s \n\n\t语文:%d 数学:%d 英语:%d 平均成绩:%.1f名次:%d\n\n\t同学互评:%d 品德成绩:%d 老师评分:%d \n\n\t综合成绩:%.1f\n\n",info[i].number,info[i].name,info[i].sex,data[i].chinese ,data[i].math,data[i].english,data[i].avg,data[i].ksmc,data[i].hupin g ,data[i].pinde,data[i].teacher,data[i].ceping);printf("\n\n\t\t");system("pause");return;}else{printf("\n\t请输入要查询学生的姓名:");scanf("%s",&cname);printf("\n");for(i=0;i<=count;i++){if(strcmp(info[i].name,cname) ==0 ){printf("\n\t学号:%d 姓名:%s 性别:%s\n\n\t语文:%d 数学:%d 英语:%d 平均成绩:%.1f名次:%d\n\n\t同学互评:%d 品德成绩:%d 老师评分:%d \n\n\t综合成绩:%.1f\n\n",info[i].number,info[i].name,info[i].sex,data[i].chinese,data[i].math,data[i].english,data[i].avg,data[i].ksmc,data[i].huping ,data[i].pinde,data[i].teacher,data[i].ceping);printf("\n\n\t\t");system("pause");return;}if(i>=count){printf("\n\t没有找到该学生!\n");system("pause");return;}}}system("pause");}17)使用到的结构体(1)学生信息结构体struct student{ 浩强)《Visual C++程序设计培训教程》。