《VFP实验报告学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《VFP实验报告学生成绩管理系统.doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、VFP实验报告学生成绩管理系统 密码:08605214班级:06国贸(3)班学号:200610430302姓名:李建成1、 需求分析某大学因扩招需求,需要建立一个“学生成绩管理系统”,以取代人工管理。开发目的和功能如下:(1)能进行成绩及相关数据的录入。(2)具有修改功能。(3)能按姓名、学号查询任意一名同学的成绩。(4)能完成上表中各项统计。(5)能将全班同学按从高分到低分的顺序排序。(6)能打印上述表格。一、数据需求在调研的过程中,用户提供了该系统所需的输入、输出单据。输入单据包括学生成绩单、基本信息单等,输出单据包括成绩从高到低排序单、分数段人数单、相关数据统计单等,另外,在最终的打印输
2、出中还有两张表:成绩分析表和成绩排序表。学号姓名平时成绩考试成绩最终成绩学生成绩表课程名称任课老师上课班级学生人数考试时间考试形式考试基本信息表命题形式命题负责人阅卷人阅卷负责人平卷负责人教研室主任填表日期分数段人数表分数不及格60707080809090100人数相关数据统计表相关数据平均分数平均离差标准差极差合格率数值二、功能需求功能分析的任务,是弄清用户对目标系统数据处理功能所提出的需求,根据系统目标和数据需求,本系统的功能需求可归纳为以下几个方面。1、数据录入录入功能用于在各种手填单据中增加新的记录,及时补充到系统将要运行的表中。这些单据包括学生成绩表、基本信息表等。2、数据浏览和修改
3、能够浏览所要得到的数据表单,并且有修改功能。这些表单包括学生成绩表、基本信息表等。3、数据查询此查询功能包括两个:按姓名查询和按学号查询,能够查询到学生成绩表中各个字段的信息,并显示相关内容。4、数据统计和管理此功能能够统计出各个分数段的人数和分数的相关信息,包括全班学生的平均分数、平均离差、标准差、极差和合格率等。它从学生成绩表中调用相关数据,把计算得到的数据放入分数段人数表和相关数据统计表。平均分数= 平均离差=平均分数-期望值 标准差S =极差=最高分-最低分 合格率=合格人数实考人数5、表格打印此功能把上面得到的考试基本信息、分数段人数、相关数据统计中的数据填入到最终的打印报表中,这些
4、报表包括成绩排序表和成绩分析表。课程名称任课教师上课班级学生人数(n)考试时间考试形式命题命题形式负责人阅卷阅卷人负责人成绩分析成绩评价成绩分布成绩0-59.560-69.570-79.580-89.590-100人数主要指标平均分数=平均离差=平均分数-期望值标准差S =极差=最高分-最低分=合格率=合格人数实考人数=评卷负责人教研室主任填表日期年 月 日考试情况统计分析表2、数据库设计数据库设计的任务是确定系统所需的数据库。数据库是表的集合,通常一个系统只需一个数据库。数据库设计可分为逻辑设计与物理设计两个步骤,第一步确定数据库所包含的表及字段,第二步是确定表的具体结果,即确定字段的名称、
5、类型及宽度等。一、逻辑设计设计从分析数据入手,输入数据中的某类相关数据可以归纳为一个类。对需要同时调用的若干表,应使它们符合关联要求。数据库设计好后,可通过分析输出数据来验证起可用性,若发现有的输出数据不能导出,必须检查问题,重新调试。本系统根据学生成绩单、基本信息单等单据的数据需求,从学生成绩单、基本信息单、成绩从高到低排序单、分数段人数单、相关数据统计单中归纳出了包含五个表的数据库。现将这些表列出如下:(1)学生成绩单:姓名、学号、平时成绩、考试成绩、最终成绩。(2)基本信息单等:课程名称、任课教师、上课班级、学生人数、考试时间、考试形式、命题形式、命题负责人、阅卷人、阅卷负责人、成绩评价
6、、评卷负责人、教研室主任、填表日期。(3)成绩从高到低排序单:姓名、学号、平时成绩、考试成绩、最终成绩。(4)分数段人数单:成绩段、人数。(5)相关数据统计单:,平均分数、平均离差、标准差、极差、合格率。根据数据库处理的需求,这些表需要和打印表关联起来,如下图所示。图中矩形框表示表,需要关联的表用线段连接。分数段人数单成绩分析表相关数据统计单基本信息单成绩排序表学生成绩单成绩从高到低排序单二、物理设计下面列出了学生成绩管理系统的部分的表结构,为了便于理解系统,同时也列出了表的部分记录。1、学生成绩单(学生成绩.DBF)结构:学生成绩单(姓名c(10)、学号c(10)、平时成绩n(10)、考试成
7、绩n(10)、最终成绩n(10))记录:学号 姓名 平时成绩 考试成绩 最终成绩08605201 小红 91 85 8908605202 小明 88 88 8808605203 小云 95 93 942、分数段人数(分数段人数.DBF)结构:分数段人数(成绩段c(10)、人数n(10))记录:分数 不及格 6070 7080 8090 90100人数 1 1 1 3 33、相关数据统计表(相关数据统计表.DBF)结构:相关数据统计表(平均分数n(10)、平均离差n(10)、标准差n(10)、极差n(10)、合格率n(10))记录:相关数据 平均分数 平均离差 标准差 极差 合格率 数值 82.
8、8889 22.8889 13.87599 47.0000 0.88889出来上述的三个表外,还有基本信息单(学基本信息单.DBF)、成绩从高到低排序单(成绩从高到低排序单.DBF),其结构为课程名称c(10)、任课教师c(10)、上课班级c(10)、学生人数n(10)、考试时间c(10)、考试形式c(10)、命题形式c(10)、命题负责人c(10)、阅卷人c(10)、阅卷负责人c(10)、成绩评价c(10)、评卷负责人c(10)、教研室主任c(10)、填表日期c(10)。3、应用成绩设计一、总统设计按照功能分类是总体设计中常用的方法,系统的总体结构可用层次图(Hierarchy Chart,
9、简称HC图)来表示,此学生成绩管理系统的HC可由下图表示。自上而下进行分层:第一层是系统层,对应主程序;第二层为子系统层,起分类控制作用,但是当该层没有下一层时也可直接用来表达功能;第三层为功能层;第四层为操作层。下图所示的学生成绩管理系统有三层,系统功能分类如下:学生成绩表和基本信息表的新增功能归入数据录入一类,它们俩的浏览和修改功能归入数据修改一类,数据查询功能包括了按姓名查询和按学号查询,相关成绩统计和成绩排序归入数据统计与管理一类,最后的表格打印中有打印成绩分析表和打印排序结果。图中未画出操作层,该层次的程序模块在模块设计中列出。学生成绩表基本信息表学生成绩表基本信息表打印成绩分析表打
10、印排序结果表格打印相关成绩统计成绩排序数据统计与管理按姓名查询按学号查询数据查询数据修改数据录入成绩统计信息系统二、初始用户界面设计从总统结构图很容易列出应用程序的菜单,由总体结构图转换到菜单时,其对应的情况如下:系统层对应菜单文件,子系统层对应菜单标题,功能层则对应子菜单项。下图是“学生成绩管理系统”下拉式菜单的示意图,说明如下:(1)本系统使用菜单作为输入密码后进入系统的初始界面,并设置一个主文件来调用菜单程序。表格打印数据统计与管理数据查询数据修改数据录入打印成绩分析表相关成绩统计姓名查询学生成绩学生成绩打印排序结果从高到低排序学号查询基本信息基本信息从低到高排序(2)若改用表单为初始界
11、面,可以在表单上设置若干按钮来表示格子系统的功能。对于图中的菜单项,下文将为它们进行设计与编码。三、模块设计与编码本小节将对“学生成绩管理系统”的主要模块的设计与编写作简要说明。1、主文件(主文件.PRG)菜单文件名为“主菜单”,并设置一个主文件来调用它。主文件的代码编写如下:set talk offclea allset view to sjhj.vuepublic xm,xhxm=space(8)xh=space(8)do form fm.scxkeyb CTRL+F4modi wind screen titl 欢迎使用跑跑成绩查询系统cleado 主菜单.mprread eventqui
12、t下图为fm(封面)的示意图:上图确定键的Click事件的代码为:i=i+1if thisform.text1.value=08605214thisform.releaseelse if i3 &允许输入三次 messagebox(密码错误,请重新输入!最多三次尝试机会_哦) thisform.text1.value= &清空表单 thisform.text1.setfocus &获得焦点 else messagebox(密码错,明天再试吧) thisform.release endifendif取消键的Click事件的代码为:quit2、主菜单程序按照菜单图示建立菜单的内容,一层菜单包括数据
13、录入、数据修改、数据查询、数据统计与管理、数据打印和退出项。(1)退出菜单项的命令clear events(2)数据录入项此项有两个子菜单,分别是学生成绩和基本信息,用于输入新学生的各项成绩和增加最终打印报表中的基本信息。其中,学生成绩子菜单是过程,其代码是:close alluse 学生成绩appenduse基本信息子菜单也是过程,其代码是:close alluse 基本信息表appenduse(3)数据修改项此项也有两个子菜单,也是学生成绩和基本信息,用于修改学生的各项成绩和最终打印报表中的基本信息。其中,学生成绩子菜单是过程,其代码是:close alluse 学生成绩browseuse
14、基本信息子菜单也是过程,其代码是:close alluse 基本信息表browseuse(4)数据查询项此项包括两个子菜单,按姓名查询和按成绩查询,它们都是命令,分别用于显示各自的表单。按姓名查询的命令是“do form 输入学生姓名”,所出现的表单如下:其中Text1中的LostFocus事件的代码是:xm=thisform.Text1.VALUEForm1的Load事件的代码是:public xm,用来定义公共变量xm确定按钮的Click事件的代码是use 学生成绩locate for 姓名=trim(xm)if not found()wait window无此学生!elsebrow fo
15、r 姓名=trim(xm)thisform.releaseendif在Text1中输入学生姓名,点击确定即可查出此学生的相关成绩。按学号查询的命令是“do form 输入学生学号”,所出现的表单如下:其中Text1中的LostFocus事件的代码是:xh=thisform.Text1.VALUEForm1的Load事件的代码是:public xh,用来定义公共变量xh确定按钮的Click事件的代码是use 学生成绩locate for 学号=trim(xh)if not found()wait window无此学生!elsebrow for 学号=trim(xh)thisform.releas
16、eendif在Text1中输入学生姓名,点击确定即可查出此学生的相关成绩。(4)数据统计与管理项此项包括两个子菜单,分别是相关成绩统计和成绩排序。其中相关成绩统计是过程,其代码是:clear*成绩人数段use 学生成绩count for 最终成绩=90 to a?90-100分的学生人数为:,acount for 最终成绩=80 to b?80-90分的学生人数为: ,bcount for 最终成绩=70 to c?80-90分的学生人数为: ,ccount for 最终成绩=60 to d?80-90分的学生人数为: ,dcount for 最终成绩=0 to e?80-90分的学生人数为:
17、 ,euse 分数段人数replace 不及格 with ereplace 六十到七十 with dreplace 七十到八十 with creplace 八十到九十 with breplace 九十到一百 with a*平均分数use 学生成绩calculate avg(平时成绩),avg(考试成绩),avg(最终成绩) to f,g,h?全班学生的平时成绩平均分数为: ,f?全班学生的考试成绩平均分数为: ,g?全班学生的平均分数为: ,h*平均离差i=h-60?全班学生的平均离差为: ,i*标准差j=a+b+c+d+estore 0 to x,ygo topfor k=1 to j x=
18、最终成绩-h y=y+x*x skipendforz=y/jl=sqrt(z)?全班学生的标准差为: ,l*极差store 0 to sstore 100 to tgo topfor m=1 to j if s最终成绩 t=最终成绩 endif skipendforn=s-t?全班学生的极差为: ,n*合格率o=a+b+c+dp=o/j?全班学生的合格率为: ,p*100,%use 相关数据统计 replace 平均分数 with h replace 平均离差 with i replace 标准差 with l replace 极差 with n replace 合格率 with p此过程命令
19、完成后会在屏幕上显示相关内容,另外还会把显示的数据输入到相关成绩统计.DBF和分数段人数.DBF两个表中,用于和以后的打印报表相关联,输出数据。成绩排序也是子菜单,包括从按成绩高到低排序和从按成绩低到高排序两个过程。其中从按成绩高到低排序的过程代码是:clearuse 学生成绩sort to 从高到低成绩排序 on 最终成绩/D fields 学号,姓名,平时成绩,考试成绩,最终成绩use 从高到低成绩排序 listr=recc(select()dimension shuzu(r,5)copy to array shuzu fields 学号,姓名,平时成绩,考试成绩,最终成绩use 成绩从高
20、到低排序delet allpackappend from array shuzu close all从按成绩低到高排序的过程代码是:clearuse 学生成绩sort to 从低到高成绩排序 on 最终成绩 fields 学号,姓名,平时成绩,考试成绩,最终成绩use 从低到高成绩排序 listr=recc(select()dimension shuzu(r,5)copy to array shuzu fields 学号,姓名,平时成绩,考试成绩,最终成绩use 成绩从高到低排序delet allpackappend from array shuzu close all这两个过程命令执行完成后
21、,会生成从低到高成绩排序.DBF和从高到低成绩排序.DBF俩个表,然后分别传递到成绩从高到低排序.DBF和成绩从低到高排序.DBF,因为前两个表是自己生成,在每次显示时都会先删除在生成,所以学要另外两个表用于存放,这就要设临时变量,然后把后两个表与打印报表相关联,用于输出数据。(5)表格打印项此项包括两个子菜单,分别是打印成绩分析表和打印排序结果,它们都是命令,其代码分别是:report form 成绩分析表和report form 成绩排序表。用于显示各自需要打印的报表。其中“report form 成绩分析表”显示结果如下图:此报表的数据环境中添加了分数段人数表、基本信息表和相关数据统计表
22、,用报表控件控制栏填入个空的相关信息,用于带入数据,输出打印。“report form 成绩排序表”显示结果如下图:此报表的数据环境中添加了成绩从高到低排序表,用报表控件控制栏填入个空的相关信息,用于带入数据,输出打印。最后,结束编码以后,应对系统进行测试与调试,进一步完善系统设计。4、运行设计一、装载数据在应用系统连编运行之前,要先在数据库中装如必要的或已有的成批数据。这里包括:成绩从高到低排序、分数段人数、基本信息表相关数据统计和学生成绩等五个表,如下图:二、连编形成.APP文件 在所有的程序、代码和数据表单都完成之后,在上图的右端点击连编按钮就可以生成一个.app文件,然后双击此.app文件,查看所要实现的功能,进一步调试和完善此系统。