郑州轻工业学院实训报告实训名称:成绩管理系统姓名:刘珂金院(系):软件学院专业班级:软件卓越12—01学号:541213440222指导教师:殷知磊成绩:时间:2013年6月24日至2013年6月28日郑州轻工业学院软件学院学生实训任务书一、题目“学生成绩管理系统”设计二、学生信息专业学号姓名三、用户需求及约束条件1、用C语言实现基于Dos操作系统的“学生成绩管理系统”。2、设计“学生成绩管理系统”的用户界面,系统启动进入后,只能通过界面菜单指令才能退出。3、“学生成绩管理系统”具有以下功能:1)系统启动后,弹出一个用户界面,能实现人机交互的功能。而且只能通过界面菜单命令实现各种功能(包括系统退出功能)。2)录入学生成绩(信息有:班级、姓名、学号、五门课程成绩);3)计算学生五门功课的平均成绩并存档。下面的功能必须是第3)项功能完成以后才能进行。4)输出学生的信息和对应的原始成绩以及平均成绩;5)按平均成绩进行排序,输出排序后的学生信息以及对应的课程成绩和平均成绩。6)对成绩修改,分别有两种模式,一种是按学号查找后进行修改;另一种是按姓名查找后进行修改;修改后重新排序学生的顺序,并输出学生信息和对应课程成绩和平均成绩。7)增补遗漏的学生以及对应的信息和对应的课程成绩,并计算出平均成绩,增补以后重新排序学生顺序,并输出学生信息和对应课程成绩和平均成绩。8)把学生信息和对应的课程成绩和平均成绩存入到文件中。9)试着从文件中导入数据到成绩管理系统中,然后进行管理。四、设计要求、技术参数及设计规格1、原始成绩由老师统一给出,在Excel表中;2、设计的系统能够运行,提交源程序、目标文件和可执行文件;3、提交实训报告,实训报告中列写:1)软件需求分析;2)软件规格说明和设计要求;3)对数据的管理方案;4)“学生成绩管理系统”设计的思路和整体框架;5)各功能或者模块实现的思路(或者用带注释的程序代替)并交待模块之间的接口关系;6)“学生成绩管理系统”设计的结果(可以用一些屏幕拷贝的图来补充说明)。4、程序设计环境为VC++6.05、所有的设计工作需要同学自己真实地、独立地完成。五、工作量天/日期任务描述通过标准2013年6月24日上午熟悉系统功能,完成三项任务(用文档记录):1)软件需求分析;2)软件规格说明和设计要求;3)对数据的管理方案。下午构思“学生成绩管理系统”的思路和整体框架。设计数据结构(命名),设计函数框架(命名,考虑参数的类型和个数,即考虑数据之间的传递关系)文档通过方案通过数据结构通过设计的函数框架通过2013年6月25日设计被系统调用的main函数;设计界面函数;设计各功能子函数的框架;成绩录入;计算平均成绩要求数据传递接口正常,main函数能运行。2013年6月26日实现输出功能;排序功能实现并输出排序后的成绩将学生信息保存到文件;从文件中读出学生信息各子函数调试通过,能被main函数成功调用,其子功能能实现。2013年6月27日实现修改功能;实现删除功能;各子函数调试通过,能被main函数成功调用,其子功能能实现。2013年6月28日上午完善“成绩管理系统的各项功能”。撰写实训报告。实践能力强的同学实现附加功能:输出系统中的成绩到文件中保存;打印输出文件中的内容;从文件中导入数据到成绩管理系统中;下午:继续写实训报告并且验收设计的项目。系统能正确运行,界面友好);各功能能够实现,性能良好操作方便。备注:项目进度尽量往前赶,尽可能多的完成需求分析中的各项要求。六、考核形式、考核时间、考核指标及成绩评定实训成绩由下面构成:实训纪律、实训态度和平时表现占20%;实训结果占30%;实训报告占30%;实践操作能力占20%。考核形式:1)老师每日对学生的考察、评估和考核;2)最后对实训项目完成的质量进行考核和验收。完成期限:2013年6月28日指导教师签章:殷知磊专业负责人签章:教学院长签章:13年6月8日目录:目录:1)系统简介2)系统设计的思路和整体框架3)各功能或者模块实现的思路并交待模块之间的接口关系;4)系统设计的结果(可以用一些屏幕拷贝的图来补充说明)。5)实训感想系统简介在本学生成绩管理系统项目的是为了适应各个中小学的需求让各个学校方便快捷的管理学校学生成绩让学校能直接的排出名次快速知道自己的成绩状况。2,项目背景:本学生成绩管理系统由郑州轻工业学院委托,经刘珂金负责开发设计。学生成绩管理系统将由两部分组成:置于各个学生电脑客户程序,以及置于学校的数据库服务器。本软件的优点:1,本学生成绩管理系统软件系统用户页面要美观大方,内容尽量居中,让学生,家长,老师一目了然。2,要具有人与电脑的交互功能。3,本软件可以在系统菜单页面进行选择,可以节省大家的时间。4,为了保护个人隐私与文件的安全性,大家在退出本软件时,应从菜单页面退出本系统。5,为了便于有的人们第一次使用本软件,在用户操作时系统会不断冒出友情帮助提示页面,让大家在第一次使用本软件就能熟练的操作各个功能。6,为了避免有的用户点错选项而使数据丢失,本软件具有拦截一些错误的操作的提示,以避免数据丢失,可以让大家喜欢用本软件。7,软件按原始成绩格式输入,让大家可以见到自己的成绩。8,操作方便适应各大院校的使用,不管是否懂得电脑知识都能操作起来。9,本软件也适用于高考和中招考试的录用和查询便于大量人数的使用。10,本软件纯为绿色软件在电脑上绝对安全可以放心的使用。系统设计的思路和整体框架此软件首先要一个整体的思路首先要想它需这是它需要实现的功能系统框架的设计思路整体框架的的问题思路选择功能的实现数据结构的实现各功能或者模块实现的思路并交待模块之间的接口关系#includestdio.h#includestdlib.h#includestring.hstructstudent{intstudentid;intbanji;charname[20];intgrade[5];intavg_grade;};structstudentstudents[100];staticintindex=0;头文件的设计主要是想到各个函数和调用voidinputstudent(){charname[20];intstudentid;intbanji;intl1;intl2;intl3;intl4;intl5;//ntavg_grade;printf(添加学生姓名:\n);scanf(%s,&name);strcpy(students[index].name,name);printf(添加学生学号:\n);scanf(%d,&studentid);students[index].studentid=studentid;printf(添加学生班级:\n);scanf(%d,&banji);students[index].banji=banji;printf(请输入学生的数学:\n);scanf(%d,&l1);printf(请输入学生的外语:\n);scanf(%d,&l2);printf(请输入学生的java:\n);scanf(%d,&l3);printf(请输入学生的C语音:\n);scanf(%d,&l4);printf(请输入学生的语文:\n);scanf(%d,&l5);//strcpy(students[index].name,name);students[index].grade[0]=l1;students[index].grade[1]=l2;students[index].grade[2]=l3;students[index].grade[3]=l4;students[index].grade[4]=l5;students[index].avg_grade=((l1+l2+l3+l4+l5)/5);printf(平均成绩%d\t,students[index].avg_grade);index++;system(cls);输入功能的实现主要运用的输出程序voidinputstudent(){charname[20];intstudentid;intbanji;intl1;intl2;intl3;intl4;intl5;//ntavg_grade;printf(添加学生姓名:\n);scanf(%s,&name);strcpy(students[index].name,name);printf(添加学生学号:\n);scanf(%d,&studentid);students[index].studentid=studentid;printf(添加学生班级:\n);scanf(%d,&banji);students[index].banji=banji;printf(请输入学生的数学:\n);scanf(%d,&l1);printf(请输入学生的外语:\n);scanf(%d,&l2);printf(请输入学生的java:\n);scanf(%d,&l3);printf(请输入学生的C语音:\n);scanf(%d,&l4);printf(请输入学生的语文:\n);scanf(%d,&l5);//strcpy(students[index].name,name);students[index].grade[0]=l1;students[index].grade[1]=l2;students[index].grade[2]=l3;students[index].grade[3]=l4;students[index].grade[4]=l5;students[index].avg_grade=((l1+l2+l3+l4+l5)/5);printf(平均成绩%d\t,students[index].avg_grade);index++;system(cls);这是打印的设计里面涉及求平均数的方法system(cls);这个主要是清屏的设计voidsave_grade()//保存{inti=0;FILE*fp;fp=fopen(liyin.txt,w+);if(fp==NULL){printf(sorry!文件打开失败,请重试!\n);getchar();return;}for(i=0;iindex;i++){fwrite(&students[i],sizeof(structstudent),1,fp);}fclose(fp);printf(verygood!成绩已经保存,按任意键返回\n);fflush(stdin);getchar();}voidread_file(intreadonly){FILE*fp;index=0;if(readonly==1)printf(文件中学生成绩信息如下:\n);fp=fopen(liyin.txt,rb);if(fp==NULL){printf(文件打开失败,请重试!\n);getchar();return;}while(fread(&students[index],sizeof(structstudent),1,fp)){index++;}xianshi();fclose(fp);printf(verygood!成绩已经读取,按任意键返回\n);fflush(stdin);getchar();system(cls);这是储存功能的运用voidpaixu()//排序{structstudentt;intj,k;for(j=0;jindex;j++)for(k=j+1;kindex;k++)if(students[j].avg_gradestudents[k].avg_grade){t=students[j];students[j]=students[k];students[k]=t;}xianshi();getchar();system(cls);}这是排序功能的设计//按学号查询voidanxuehaochaxun(){intu,t,i=1;printf(请输入要查询的学号:);scanf(%d,&u);fo