VFP学生成绩管理系统课程设计指导书.doc
数据库技术与应用B课程设计指导书班级:2011英语(本)指导教师:韩宇贞2012年9月班级学生成绩管理系统一、 引言1、开发背景班级学生成绩管理,通常是使用人工方式,效率低且容易出现错误。通过班级学生成绩管理软件来进行成绩管理,高效、准确无误,查询、统计方便易行,给班级成员带来了很大的方便。2、实现目标根据实际需要,编写班级学生成绩管理系统,解决传统手工方式的成绩管理,达到减少工作量、方便进行成绩查询、实现自动的成绩统计,提高效率的目的。具体如下:(1) 班级学生基本信息维护:包括班级学生基本信息的录入、修改、删除、查询等(2) 班级学生成绩信息维护:包括班级学生成绩信息的录入、修改、删除等(3) 成绩查询:包括按学号、姓名两种方式进行成绩查询(4) 成绩统计:包括个人成绩、课程成绩、班级成绩统计二、 需求分析1、 功能需求根据上述的目标,我们确定系统应该有如下的功能:(1) 学生成绩信息输入:输入(2) 学生成绩信息维护:对成绩信息进行维护(3) 学生信息维护:对学生基本信息进行维护(4) 成绩查询:根据指定查询条件查找符合条件的信息(5) 统计:进行个人成绩、课程成绩、班级成绩的统计2、 性能需求系统运行对运行环境的一些要求:(1) 硬件环境 处理器:80486/50MHz及以上处理器内存:不低于16M硬盘空间:100M(2) 软件环境操作系统:Windows 9x、2000或XP数据库:Visual FoxPro开发平台:Visual FoxPro三、 总体设计1、软件结构设计 本系统设计了一个简单的数据库,学生基本信息、学生成绩信息,即能基本满足班级成绩管理的要求。系统主要分为五个模块:(1) 学生基本信息维护模块:在此模块中,班级成绩管理员可以对学生基本信息如学号、姓名、性别等进行维护,可以新增、修改、删除或查询学生基本信息。(2) 成绩录入模块:在此模块中,班级成绩管理员可以进行班级学生成绩的录入。(3) 成绩查询模块:每个学生可以在此模块中通过学号或姓名来进行个人成绩的查询。(4) 成绩修改模块:班级成绩管理员可以在此模块中进行学生成绩的修改。(5) 成绩删除模块:班级成绩管理员在此模块中删除学生成绩信息。(6) 成绩统计模块:每个学生可以在此模块中查看个人成绩、课程成绩、班级成绩的统计结果。2、系统模块设计系统总体结构如图所示:班级学生成绩管理系统学生基本信息维护成绩录入成绩查询成绩修改成绩删除成绩统计按学号查询按姓名查询按学号修改按姓名修改按学号删除按姓名删除个人成绩统计课程成绩统计班级成绩统计3、 数据库结构设计按照系统不同的功能模块,需要不同的表来存储信息,数据库设计如下:(1) 学生基本信息表STUINFO名称字段名称数据类型主键非空学号XHChar(3)YesYes姓名XMChar(8)NoYes性别XBrChar(2)No(2) 学生成绩信息表SCORE名称字段名称数据类型主键非空学号XHChar(3)YesYes语文YUWENNumeric(3,0)NOYes数学SHUXUENumeric(3,0)NOYes英语YINGYUNumeric(3,0)NOYes平均分PINGJUNFENNumeric(5,1)NO四、 详细设计1、 主界面模块 2、 学生基本信息维护该模块实现学生基本信息的维护,包括增加、删除、修改等维护数据的操作。由于学生的基本信息仅仅是成绩管理系统中的辅助数据,信息内容简单,数据变动不大,维护操作较简单,故直接使用VFP中的表单向导生成该表单,运行界面如下:3、 成绩录入该模块实现班级学生成绩的录入。一个学生一条成绩记录。已录入成绩的学生不能再进行成绩的录入,只能做修改等其它操作。所以在录入成绩时,只能在学号下拉框中进行未曾录入成绩的学生学号的选择,同时在姓名文本框中确认是否待录入成绩的学生。确认该生后,录入其成绩数据。运行界面如下:程序代码:Frmsr的Load事件代码:public dimension no(100)for i=1 to 100 no(i)=.f.endforopen data studentselect 1use stuinfoselect 2use scoreselect 1i=1scan select 2 locate for xh=a.xh if not found() no(i)=a.xh i=i+1 endif select 1endscanFrmsr的Init事件代码:bo1.cleari=1do while type('no(i)')!='L' bo1.additem(no(i) i=i+1enddoFrmsr的Release事件代码:select 1useselect 2useclose databaseCmdok的Click事件代码:select 2append blankreplace xh with bo1.valueif len(alltrim(thisform.text3.value)>0 replace yuwen with val(thisform.text3.value)else replace yuwen with 0endifif len(alltrim(thisform.text4.value)>0 replace shuxue with val(thisform.text4.value)else replace shuxue with 0endifif len(alltrim(thisform.text5.value)>0 replace yingyu with val(thisform.text5.value)else replace yingyu with 0endifreplace pingjunfen with (yuwen+shuxue+yingyu)/3thisform.releaseCmdcancel的Click事件代码:thisform.release4、 成绩查询 该模块实现班级学生各门课程成绩的查询。可以按学号、姓名两种方式来进行查询。查询结果是不允许修改的,所有显示查询结果的文本框的ReadOnly属性均为.T.。运行界面如下:程序代码:Frmxhcx1:Cmdok的Click事件代码:cxxh=alltrim(thisform.text1.value)open data studentselect 1 use scoreloca for alltrim(xh)=cxxhif found() do form newcx1 thisform.releaseelse messagebox("没有此学号!",0+48+0,"错误") thisform.text1.setfocusendifCmdcancel的Click事件代码:thisform.releaseFrmxhcx2:Text1到Text5的ControlSource属性要修改为相应数据表的字段名,将相应数据与文本框绑定在一起,可以在运行期间显示数据的值,修改文本框的值也会反应到数据表中。如:Text1.ControlSource=score.xh。Frmxhcx2的Load事件代码:select 2use stuinfolocate for xh=a.xhCmdok的Click事件代码:select 1useselect 2useclose datathisform.release程序代码:Frmxmcx1:Cmdok的Click事件代码:cxxm=alltrim(thisform.text1.value)open data studentselect 1 use stuinfoloca for alltrim(xm)=cxxmif found() do form newcx2 thisform.releaseelse messagebox("没有此姓名!",0+48+0,"错误") thisform.text1.setfocusendifCmdcancel的Click事件代码:thisform.releaseFrmxmcx2:Text1到Text5的ControlSource属性同样要修改为相应数据表的字段名。Frmxmcx2的Load事件代码:select 2use scorelocate for xh=a.xhCmdok的Click事件代码:select 1useselect 2useclose datathisform.release5、 成绩修改该模块实现班级学生各门课程成绩数据的修改。可以按学号、姓名两种方式来进行修改,两种方式类似。以按学号进行修改为例,运行界面如下:Frmxhxg1:Cmdok的Click事件代码:cxxh=alltrim(thisform.text1.value)open data studentselect 1 use scoreloca for alltrim(xh)=cxxhif found() do form newxg1 thisform.releaseelse messagebox("没有此学号!",0+48+0,"错误") thisform.text1.setfocusendifCmdcancel的Click事件代码:thisform.releaseFrmxhxg2:Frmxmsc2的Load事件代码:由于进行了数据绑定,对文本框内容的修改会直接反应到数据表中。确认修改无需做特别工作,但是取消修改需要恢复修改前的原值。故在此使用了数组a来保存修改前的原始值。在恢复修改中,使用gather from a恢复原值。select 2use stuinfolocate for xh=a.xhpublic declare a(4)select 1scatter to aCmdok的Click事件代码:select 1replace pingjunfen with (yuwen+shuxue+yingyu)/3useselect 2useclose datathisform.releaseCmdcancel的Click事件代码:select 1gather from auseselect 2useclose datathisform.release6、 成绩删除该模块实现班级学生各门课程成绩数据的删除。可以按学号、姓名两种方式来进行删除,两种方式类似。以按姓名进行删除为例,运行界面如下:Frmxmsc1:Cmdok的Click事件代码:cxxm=alltrim(thisform.text1.value)open data studentselect 1 use stuinfoloca for alltrim(xm)=cxxmif found() do form newsc2 thisform.releaseelse messagebox("没有此姓名!",0+48+0,"错误") thisform.text1.setfocusendifCmdcancel的Click事件代码:thisform.releaseFrmxmsc2:Frmxmsc2的Load事件代码:select 2use scorelocate for xh=a.xhCmdok的Click事件代码:select 2delepackuseselect 1useclose datathisform.releaseCmdcancel的Click事件代码:select 1useselect 2useclose datathisform.release7、 成绩统计个人成绩统计中,使用了四个视图:YW、SX、YY、PJF,以取该生的语文、数学、英语及总分在班级中的排名次序。Frmgrtj1:Cmdok的Click事件代码:xhxm=alltrim(thisform.text1.value)open data studentselect 2use studscoreloca for alltrim(xh)=xhxmif found() do form newgrtj2 thisform.releaseelse loca for alltrim(xm)=xhxm if found() do form newgrtj2 thisform.release else messagebox("没有此学号或姓名!",0+48+0,"错误") thisform.text1.setfocus endifendifCmdcancel的Click事件代码:thisform.releaseFrmgrtj2:Frmgrtj2的Activate事件代码:set talk offselect 2xuehao=studscore.xhthisform.text6.value=alltrim(studscore.xh)thisform.text7.value=alltrim(studscore.xm)thisform.text8.value=alltrim(str(studscore.yuwen)thisform.text9.value=alltrim(str(studscore.shuxue)thisform.text10.value=alltrim(str(studscore.yingyu)thisform.text4.value=alltrim(str(studscore.pingjunfen)select 3use ywloca for xh=xuehaomc1=recno()thisform.text1.value=mc1select 4use sxloca for xh=xuehaomc2=recno()thisform.text2.value=mc2select 5use yyloca for xh=xuehaomc3=recno()thisform.text3.value=mc3select 6use pjfloca for xh=xuehaothisform.text5.value=recno()Cmdok的Click事件代码:select 1useselect 2useselect 3useselect 4useselect 5useselect 6useclose dataset talk onthisform.releaseFrmkctj1:Cmdok的Click事件代码:public kcmkcm=alltrim(bo1.value)do form newkctj2thisform.releaseCmdcancel的Click事件代码:thisform.releaseFrmkctj2:Frmkctj2的Activate事件代码:set talk offdo case case kcm='语文' kc='yuwen' case kcm='数学' kc='shuxue' case kcm='英语' kc='yingyu'endcaseopen data studentuse scorecount all to zrscount for &kc<60 to bjg1count for &kc<70 and &kc>=60 to jg1count for &kc<80 and &kc>=70 to zhong1count for &kc<90 and &kc>=80 to liang1count for &kc<=100 and &kc>=90 to you1bjg2=str(bjg1/zrs*100,5,1)+'%'jg2=str(jg1/zrs*100,5,1)+'%'zhong2=str(zhong1/zrs*100,5,1)+'%'liang2=str(liang1/zrs*100,5,1)+'%'you2=str(you1/zrs*100,5,1)+'%'calculate max(&kc) all to zgfcalculate min(&kc) all to zdfaverage &kc all to pjf1pjf=str(pjf1,5,1)Cmdok的Click事件代码:useclose datathisform.releaseFrmbjtj的Load事件代码:set talk offopen data studentdrop table stuscoreselect 1use stuinfo set order to xhselect 2use scorejoin with a to stuscore for a.xh=b.xh fields a.xh,a.xm,yuwen,shuxue,yingyu,pingjunfenadd table stuscoreuse stuscoresum yuwen to asum shuxue to bsum yingyu to ccount all to dzjf=str(a+b+c)/d/3,5,1)count for yuwen<60 to aacount for shuxue<60 to bbcount for yingyu<60 to ccbjgrs=aa+bb+ccbjgl1=(aa+bb+cc)/3/d*100bjgl=str(bjgl1,5,1)+'%'jgl=str(100-bjgl1,5,1)+'%'go topCmdok的Click事件代码:select 1useselect 2useclose datathisform.release 五、 课程设计体会略课程设计课题课题一 教材管理系统学校的教材科有大量的图书信息进行管理,且需要向学生及时供应所需的教材。传统的手工处理的方式已经不能满足我们的需求,利用计算机对图书信息及领书人员信息进行管理,从而减轻工作人员的工作量,提高领书效率,这是我们迫切需要的,也是本系统设计的目的。教材管理系统可以为教材科提供基本的图书管理,从而帮助工作人员高效准确的完成发书工作,本系统包括:(1) 图书信息管理,包括图书的增加、修改、删除和浏览;(2) 学生信息管理,包括学生的增加、修改、删除和浏览;(3) 综合查询管理,根据学号、学生姓名查询某个学生的领书情况,根据图书编号查询某类图书的领书情况数据库:1 图书信息表字段含义字段名称类型宽度是否非空图书编号图书编号字符型10Yes书名书名字符型20Yes作者作者字符型20No出版社出版社字符型40No现存数量数量数值型4No图书价格价格货币型8No2 学生信息表字段含义字段名称类型宽度是否非空学号学号字符型8Yes学生姓名姓名字符型10Yes学生性别性别字符型2No学生所在系别系字符型20No学生所在班级班级字符型10No出生日期出生日期日期型8No政治面貌党团关系字符型4No学生所需教材图书编号字符型10No本教材已领标记教材已领逻辑型1No备注备注备注型4No课题二 人力资源管理系统对于一个现代化企事业单位,信息化管理是必不可少的,无论在单位的任何部门,我们都已经看到信息化的管理工作正在实施中。作为这些单位的人力资源管理部门,信息化的管理工作自然也是必不可少的。企事业单位中每年都有大量的人事相关信息需要进行处理,人力资源管理已经变成了一件繁琐的工作,如何把这些工作更加条理的进行管理,减轻人力部门的工作强度,同时确保数据的安全,信息处理的高效,这是本系统设计的目的。人力资源管理系统可以为小型的企事业单位人事管理部门提供基本的人力资源管理,实现对所在单位的人力资源的电子化纪录。人力资源管理系统主要针对企事业员工的档案信息及相关方面的信息进行管理,这些管理包括:(1) 人事卡片管理,主要完成员工卡片信息的添加、修改、删除和查询;(2) 部门信息管理,主要完成本单位部门基本信息的添加、修改、删除和查询;(3) 员工档案查询,实现对员工档案信息的详细查询(含其所在部门的详细信息描述)。数据库:1 人事卡片信息表名称字段名称类型宽度是否非空员工代码代码字符型4Yes员上所属部门部门编号字符型8No员工姓名姓名字符型6Yes员工性别性别字符型2No员工现任职务现任职务宇符型10No员工出生日期出生日期日期型8No员工所属民族民族字符型2No员工的籍贯籍贯字符型10No员工的政治面貌政治面貌字符型8No员工职称职称字符型10No员工文化程度文化程度字符型8No员工婚姻状况婚姻状况于符型4No员工参加工作时间参加工作时间日期型8No员工工资工资数值型10(2位小数)No员工的各种补贴各种补贴数值型10(2位小数)No员工家庭住址家庭住址字符型30No备注备注备注型4No2 部门信息表名称字段名称类型宽度是否非空部门编号部门编号字符型10Yes部门名称部门名称字符型10Yes部门电话部门电话字符型10No备注备注备注型4No课题三 高考分数管理系统现代信息社会,信息化管理在教育部门的应用越来越广泛,人们也更加清楚地认识到信息化管理的高效和便捷。在高考结束后,无论教育管理部门,还是负责招生的高校,都有大量的考生信息需要进行管理。如何实现对这些考生分数信息的信息化管理,这是实现本系统的目的所在。高考分数管理系统可以为教育部门或中学高考管理部门提供服务,可以对高考生分数进行统一管理,同时提供相关信息的查询,从而帮助软件使用人员能够通过该软件对高考生信息进行有效的管理,这些管理包括:(1) 考生信息管理,主要完成考生信息的添加、修改、删除和浏览;(2) 考生分数管理,主要完成考生分数的添加、修改、删除和浏览;(3) 综合查询管理,实现根据考生考号、考生姓名、考生分数等相关信息进行查询。数据库:1. 考生情况表名称字段名称 类型宽度是否非空考生考号考号字符型6Yes考生姓名姓名字符型8Yes考生性别性别字符型2No考生出生日期出生日期日期型8No应届还是往届应_往届字符型2No考生毕业学校毕业学校字符型16No考生家庭住址家庭住址字符型16No考生第一志愿第一志愿字符型16No考生简历简历备注型4No考生照片照片通用型4No录取院校录取院校字符型16No2. 高考成绩表名称字段名称类型宽度是否非空考生考号考号字符型6Yes语文成绩语文数值型6 (小数位数2)No数学成绩数学数值型6 (小数位数2)No外语成绩外语数值型6 (小数位数2)No综合成绩综合数值型6 (小数位数2)No其他成绩其他数值型6 (小数位数2)No总分总分数值型6 (小数位数2)No课题四 班级综合素质测评管理系统在我学院每学年每个班级都要进行学生的综合素质测评,综合素质测评结果是学生获取奖学金的重要依据。以往,班级综合素质测评均由班级干部手工计算、统计完成。这样消耗了相关班干的大量精力,而且计算统计的过程中容易出错。实现班级综合素质测评的计算机管理,能提高效率及准确率学生的综合素质测评管理系统应具有以下功能: (1) 学生基本信息管理,主要完成学生基本信息的添加、修改、删除和浏览;(2) 学生综合素质测评分数管理,主要完成测评分数的添加、修改、删除和浏览;(3) 信息查询,能够让每个学生查询自己的综合素质测评分数、每个项目的分数、排名情况等;(4) 统计,班级综合素质测评汇总表,包括名次信息。数据库:1. 学生基本情况表名称字段名称 类型宽度是否非空学号学号字符型8Yes姓名姓名字符型8Yes性别性别字符型2No出生日期出生日期日期型8No备注备注备注型4No2综合素质测评分数表(该表中综合素质测评分数的详细项目及类型宽度参照我校实际情况来定,下表仅为样例示意)名称字段名称类型宽度是否非空学号XH字符型8Yes思想道德A1A1数值型6 (小数位数2)No思想道德A2A2数值型6 (小数位数2)No智育B1B1数值型6 (小数位数2)No智育B2B2数值型6 (小数位数2)No体育C1C1数值型6 (小数位数2)No体育C2C2数值型6 (小数位数2)No加分DD数值型6 (小数位数2)No其它分数E数值型6 (小数位数2)No总分ZF数值型6 (小数位数2)No课题五 学生宿舍管理系统学院学生宿舍管理采用手工方式登记在册进行管理,由于每个学期均进行学生宿舍调整,所以经过若干次宿舍调整后,宿舍管理比较混乱使用学生宿舍管理系统进行学生宿舍的计算机管理,将提高工作效率,且不会出现混乱状况。学生宿舍管理系统应具有以下功能: (1) 宿舍基本信息管理,主要完成宿舍基本信息的添加、修改、删除和浏览;(2) 学生宿舍信息管理,主要完成学生居住宿舍信息的添加、修改、删除和浏览;(3) 信息查询,能够查询某个学生所居住的宿舍;某宿舍的居住情况,包括该宿舍现有居住人数、成员信息;是否有尚未住满的宿舍等;(4) 统计,统计每个宿舍的居住情况等。数据库:1. 学生宿舍信息表名称字段名称 类型宽度是否非空学号学号字符型8Yes姓名姓名字符型8Yes性别性别字符型2No班级班级字符型6No宿舍号宿舍号字符型7No备注备注备注型4No2宿舍信息表名称字段名称类型宽度是否非空宿舍号宿舍号字符型8Yes所在宿舍楼宿舍楼字符型12Yes宿舍标准人数标准人数数值型2Yes宿舍现居住人数居住人数数值型2No备注备注备注型4No课题六 小型企业工资管理系统工资管理系统是企业进行管理的不可缺少的一部分,它是建立在人事档案系统之上的,其职能部门是财务处和会计室。在现今的科技时代,不可想象一个企业的工资管理仍采用手工方式的混乱情况。一个小型企业工资管理系统至少应具备以下功能: (1) 职工基本信息管理,主要完成职工基本信息的添加、修改、删除和浏览;(2) 工资基本信息管理,主要完成工资基本信息的添加、修改、删除和浏览;(3) 信息查询,个人信息、职工工资信息、本企业内某一个月或某一部门的工资情况等;(4) 统计,生成各类统计报表;数据库:1. 职工基本信息表名称字段名称 类型宽度是否非空职工编号编号字符型5Yes姓名姓名字符型8Yes性别性别字符型2No出生日期出生日期日期型4No部门部门字符型10No职称职称字符型10No职务职务字符型10No工龄工龄数值型2No备注备注备注型4No2工资信息表名称字段名称类型宽度是否非空职工编号编号字符型5Yes基本工资基本工资数值型6(小数位数1)Yes津贴津贴数值型6(小数位数1)No住房公积金住房公积金数值型5(小数位数1)No医疗保险医疗保险数值型5(小数位数1)No奖金奖金数值型6(小数位数1)No住房公积金扣发住房公积金扣发数值型5(小数位数1)No医疗保险扣发医疗保险扣发数值型5(小数位数1)No水电费扣发水电费扣发数值型6(小数位数1)No扣税扣税数值型6(小数位数1)No应发工资归还标志数值型6(小数位数1)No实发工资实发工资数值型6(小数位数1)No课题七 部门参考书借阅管理系统在我校各个院系、部门都有提供给教师借阅的专业参考书。传统的方式是借阅时将借阅人和参考书名登记在册,归还时就该记录划去。部门参考书借阅管理系统是对教师借阅参考书进行计算机管理。部门参考书借阅管理系统应具备以下功能:(1) 参考书基本信息管理,主要完成参考书基本信息的添加、修改、删除和浏览;(2) 借阅信息管理,主要完成借阅信息的修改和浏览;(3) 借阅管理,记录租借信息;(4) 归还管理,记录归还信息;(5) 信息查询,查询参考书信息、查询借阅信息等;(6) 统计,个人借阅统计、参考书借阅统计等。数据库:由于该系统仅在部门内部使用,一个部门内的人员是参考书管理员非常熟悉的。为降低复杂度,省去人员信息表。1. 参考书信息表名称字段名称类型宽度是否非空参考书编号编号字符型10Yes参考书名称名称字符型30Yes出版社名称出版社字符型30No价格价格数值型6(小数位数2)Yes类别类别字符型10Yes备注备注备注型4No2借阅信息表名称字段名称 类型宽度是否非空借阅者姓名借阅者姓名字符型8Yes参考书编号参考书编号字符型10Yes借阅日期借阅日期日期型8No归还日期归还日期日期型8No归还标志归还标志逻辑型1No备注备注备注型4No课程设计时间安排表周一:布置课题,需求分析、总体设计周二:数据库实现、详细设计周三:详细设计周四:详细设计、程序调试周五:完成课程设计报告、进行课程设计答辩