VF学生管理系统(共22页).doc
精选优质文档-倾情为你奉上课程名称: 数据库技术及应用设计题目: 学生信息管理系统姓 名: 尹洪棣班 级: 电子商务092学 号: 9联系电话: 指导教师: 刘大召课程设计时间:2011.5.22至2011.5.30目录一、系统说明1.1系统设计目的···········································31.2系统功能简介···········································31)查询·················································32)数据操作·············································33)浏览打印·············································44)系统帮助·············································41.3系统设计平台············································5二、系统设计开发2.1数据库设计··············································52.2系统数据表的关系········································62.3封面表单设计············································72.4登陆验证设计············································82.5系统桌面设计············································92.6主菜单,主页右键快捷单设计······························102.7学生信息设计············································112.8课程信息设计············································152.9学生选课成绩信息设计····································163.0管理员信息设计··········································173.1报表、标签设计··········································193.2主程序设计··············································203.3程序连编和打包··········································21三、总结·设计的心得和感想·································21数据库课程设计报告电子商务092 9 尹洪棣指导老师:刘大召 一、系统说明1.2设计目的经过一个学期对数据库的学习,在一定的基础上掌握了数据库的建立和相关要件的建立,全面认识了VF6.0和Vf9.0,通过一周时间左右的课程实习,更深层掌握数据表、数据库的基本操作,已经深入了解学习程序的开发、包括表单、菜单、程序间的联系的建立,全面巩固数据库知识的学习。同时,开发此学生信息管理系统,主要面向班级学生的信息管理和成绩管理,简化日常学生班干对学生的管理工作,有助提高工作效率,并能提供更为直观、准确、容易理解的信息内容。1.2系统功能简介按照日常对学生管理的需要和操作,此学生信息管理系统,针对应用于管理学生的基本信息、选修课程管理、以及成绩的信息管理,其实现的基本功能包括如下:管理员功能:本系统通过界面加密,所以只有相应的管理员才能进入系统中,对相应的学生信息进行操作,在一定的程度上保证了数据的机密性和可靠性。1)查询:一学生信息查询模块,学生信息查询可以有两种模式,一种是系统自行录入工作,另外一种是由人工输入相关性的学号、姓名进行查询。二课程信息查询,对课程的信息进行查询。三学生选课和成绩查询。四系统管理员信息查询。此模块可以对管理员的相关信息进行逐一查询。2)数据操作:一学生信息操作,包括有对学生信息的修改、删除、添加功能。二课程信息操作,包括有对课程信息的修改、删除、添加功能。三学生选课成绩信息操作,同样地包括有对学生的选课情况可以修改、删除、添加功能,也可以对学生各科的选课成绩进行修改、删除、添加,大部分满足平常对学生信息管理的功能需求。四系统管理员信息操作,包括有对相关的系统管理员进行修改、添加、删除,同时可以对自己的密码进行修改,并能带引第三方人员进行注册对该管理系统使用。3)浏览、打印一浏览、打印学生成绩单,实现对各个同学的学习成绩情况进行了解。二浏览、打印课程成绩汇总单,实现对课程信息总体教学情况的掌握。三浏览多表信息,进行多表关联查询和了解。4)系统帮助:一系统版本说明,让管理员能够清楚了解该系统的相关信息,包括版本号,版权所有等信息。二系统操作帮助,方便管理员的操作。介绍系统相关特性。非管理员功能本管理系统由于进行加密操作,保证学生信息的准确性和安全性能。但非管理员可以对管理员的信息进行查询,和相关管理员联系,对系统注册就能方便使用。针对以上功能模块和日常管理需求,再对其进行模块化,从而得出系统功能模块图,结合工作流程得如下图所示。学生信息管理系统封面进入用户密码输入登陆界面管理员信息查询重启查询修改添加删除查看成绩单打印浏览管理员退出帮助学生信息课程信息成绩信息多表信息管理员 1.3系统设计平台 此学生信息管理系统,由Vf6.0和VF6.9共同开发设计,主要前期系统项目的创建有Vf9.0创建。而后期程序打包安装设计有VF6.0设计。本系统提供windows环境下使用。二、系统设计开发 2.1数据库设计 根据设计中的学生信息管理系统的功能分析,和实际应用需要,本系统的数据库在信息管理系统的项目管理器中创建了一个名为student的数据库,并在数据库中建立了有class(课程信息表,主要记载学生所有的课程信息),stu(学生信息表,主要记载学生信息),mark(学生成绩表,主要记载学生相应的选课成绩),user(系统管理员信息表,主要记载系统管理员的相关信息),各表的结构如下所示:图表 1class字段结构 图表 2学生成绩信息表Class表中有课程id,课程名,课程学分,课程教室安排,还有课程老师安排;学生成绩信息表中含有学生学号,课程id和课程成绩。图表 3学生表学生信息表含有学生班级,学生学号,学生姓名,学生性别,学生专业,学生民族,学生籍贯,学生年龄,学生是否团员,学生入学日期,学生照片。其中,特别指出,学生性别赋予了字段有效性规则xb="男".OR.xb="女",默认值为:男,所以凡是添加和修改学生信息性别这一属性的时候,就会要求用户输入正确的性别。图表 4管理员系统管理员的信息表含有名字、密码、电话号码、和联系地址。2.2系统数据表的关系1)索引设计:系统中各表的索引设计如下:class表以课程id为主索引,成绩表mark以课程id和学生学号为普通索引,学生表stu以学生学号为主索引,通过这样的设计建立各表间的关系如下:class与成绩表mark以课程id为关联,学生表stu以学生学号和成绩表相关联。 2)数据库完整性设计为了更好地为系统的相关数据操作,本系统的数据表间的参照完整性设计如下:当stu表和class表的值受到修改,其子表mark的相关记录就要级联更新;当删除父表stu、class的记录,也是级联删除子表mark的相关记录;当子表要插进新记录的时候,就要看父表中是否含有相关值,如果没有就限制插入。图表 5参照完整性设计3)数据库视图的创建根据系统功能需要和报表与标签的成绩汇总需要,本系统由以上所述的stu表、class表、mark表为数据源,创建了两个本地视图。1)课程汇总,以mark为数据源,选取了以课程id为分组依据对mark进行分组,并统计其课程总体的平均成绩,已经统计记录数量。方便后期课程汇总报表的建立。2)学生成绩单,以class、stu、mark表为数据源,选择了其中的学生表学号、姓名、专业、班级、课程id、课程名、课程老师安排、和课程成绩为字段。其作用广泛应用于有关成绩的表单,如学生成绩单;和报表的个人成绩的统计使用。 2.3封面表单设计1)封面界面的设计主要是本着实用简便的原则设计制作。在系统界面被打开时,映入一张图片,缓解使用环境和气氛。同时,包括系统名称,系统版本号和创作人,以及系统选择,通过命令按钮设计,系统可以退出,以及进入系统。此时除了按退出键可以退出以外,要退出系统封面,可以使用电脑系统的任务管理器,或者让封面自运行一分钟(60 s)就能退出系统。另外,利用了计时控件,设计了个动态字样“欢迎使用”,和系统时间表。实现的表达界面如图所示图表 6系统封面表单2)其中实现动态字样“欢迎使用”的计时控件代码设计如下:(100毫秒刷新)为Timer2的time event添加如下代码:if thisform.label4.Left+thisform.label4.Width<0thisform.label4.Left=thisform.WidthELSEthisform.label4.Left =thisform.label4.left-5ENDIF3)系统时间显示设计,进入系统就能看见此时系统的时间详细情况:(500毫秒刷新)为timer3的time event添加如下代码:thisform.label8.Caption=TIME()thisform.label7.Caption=DTOC(DATE()2.4登陆验证设计 密码验证作为系统最基本的安全管理步骤。用户如果不输入合法的用户名和密码,系统是不能进入的,只能点击查看按钮,查看系统管理员的信息,通过管理员对本系统进行注册方能使用。密码验证页包括操作员姓名和密码两个部分。下面是密码登陆页的图示:图表 7系统登陆界面、非用户查看管理员信息表 其主要事件代码在确定的命令按钮,为click event添加代码:SCAN FOR (name=na)&&查找数据环境中user表的name,na为输入的用户名,在表单init中设置为公有成员thisform.txtName.Value=ALLTRIM(name) &&把name赋值给一个文本控件thisform.txtPassword.Value=ALLTRIM(password)ENDSCANIF (ALLTRIM(thisform.text1.Value)=ALLTRIM(thisform.txtName.Value)IF (ALLTRIM(thisform.text2.Value)=ALLTRIM(thisform.txtPassword.Value) MESSAGEBOX('密码正确!',0+64) useDO FORM 表单1&&如果用户名,密码正确运行系统桌面thisform.ReleaseELSE&&如果用户名正确,而密码不正确,提示密码错误 MESSAGEBOX('密码不正确!',5+32) use endifELSE &&如果用户名不正确提示用户名不存在 MESSAGEBOX('用户名不存在,请查看管理员信息,与之联系注册后使用!',0+48) use endif2.5系统桌面设计当操作员的名称和密码均正确的时候,系统便会进入系统的主桌面,就好像windows一样,有着它的工作桌面,本学生信息管理系统亦如此,以下的所有表单都将在这个桌面上进行。此表单主要使用主菜单,建立桌面的菜单项,使用主菜单,用户可以对系统进行重启,对学生信息的操作(包括查询,修改,添加,删除,学生成绩单的查看,打印,浏览和系统管理员的操作,还有系统的退出,和系统的帮助选择),系统的主菜单实现部分将在下面详细谈及。当用户右击主桌面的时候,表单会调用右键快捷菜单,相应满足查找,浏览,关闭和退出的快捷操作。如图所示:图表 8系统主桌面其主要实现代码有:表单的restrooy事件中: application.Visible =.t.&&脱离VF操作Init事件中 :application.Visible =.f.DO 主菜单.mpr WITH this ,.t. Rightclict事件中:DO 主页右键.mpr2.6主菜单,主页右键快捷单设计主菜单:在应用系统中,各个模块是通过菜单组织在一起的。通过对系统功能模块的设计分析,而且根据用户动作的频繁,可以把主菜单分成以下主要模块:查询、修改、添加、删除、打印、浏览,具体的菜单模块功能如下:(主要利用do form 表单名语句来实现)1)系统重启,主要代码:CLOSE ALL DO 主程序2)查询,包括有学生信息查询(查询模式一、二)、课程信息查询、学生选课成绩查询、多表信息浏览、学生成绩浏览查询3)修改,包括有学生信息修改、课程信息修改、成绩修改4)添加,包括有添加学生信息、添加课程信息、添加成绩5)删除,包括有删除学生信息、删除课程信息、删除学生成绩6)学生成绩单,主要实现调用学生成绩单,查看学生的成绩。7)打印,包括有打印、预览两个子菜单,其中预览有预览成绩报表、预览课程成绩汇总表、预览学生成绩单,利用(report form 报表名 preview)、label form 标签名 preview语法来调用相应的报表;相应的可以打印这些报表和标签,主要的语法有(report form报表名 to printer)和(report form 标签名 to printer)8)浏览,主要浏览报表和相应的标签,包括有浏览多表信息,浏览成绩单,浏览课程成绩汇总单10)系统管理员,进入系统的管理员可以查看管理员信息,也可以对相应的管理员信息进行修改(除了密码),也可以修改自己的信息和密码,同时可以带引他人来注册使用本系统。11)退出,系统退出功能12)帮助,系统使用说明书,和学生信息系统的说明。主页右键菜单:1)查找,对学生信息的查找,和课程教学信息查找2)浏览 3)关闭当前表单 4)退出,系统退出 图表 9主菜单和主页右键菜单2.7学生信息设计一学生信息查询 本学生管理系统对学生信息的查询有两种模式,一为系统自行查询;二为由用户自行输入学号或者姓名进行查询。 主要代码: “最前,上一条,下一条,最后,返回”命令按钮组代码:bo1.Visible= .F.thisform.txtXm.Visible = .T.s=this.Value DO caseCASE s=1GOTO topCASE s=2SKIP -1IF BOF()GOTO topENDIFCASE s=3SKIPIF EOF()GOTO bottomENDIFCASE s=4GOTO bottomCASE s=5thisform.ReleaseGOTO bottomENDCASEthisform.Refresh模式二中“确定”的代码为:sno=ALLTRIM(thisform.text1.Value )SCANIF stu.xh=sno .or. stu.xm=snothisform.text1.Value =''thisform.Refresh RETURNENDIFENDSCANmessagebox('该学生不存在!',0,'查找失败!')运行界面模式二:图表 10学生信息查询二添加学生信息此界面通过学生自行输入相关信息,按下确定就能把这些信息通过数组输入到学生stu表中其中form init事件控件里的代码为:mand1.Visible= .F.GOto bottomIF LEN(ALLTRIM(stu.id)>0 &&当记录不是为空的时候,就插进新纪录,如果发现有空格为纪录,则把它先删除APPEND BLANK ELSEDELETEpackENDIF确定按钮的click事件控件代码为:DIMENSION x(10)x(1)=ALLTRIM(thisform.text2.Value) &&bjx(2) =ALLTRIM(thisform.text5.Value)&&xhx(3)=ALLTRIM(thisform.text1.Value) && xmx(4)=ALLTRIM(thisform.text7.Value)&&xbx(5)=ALLTRIM(thisform.text3.Value) &&zyx(6)=ALLTRIM(thisform.text9.Value)&&mzx(7)=ALLTRIM(thisform.text6.Value)&&jgx(8)=thisform.text8.Value&&nlIF thisform.check1.Value=1 &&ry x(9)=.t.endifyeah=ALLTRIM(str(thisform.spinner1.Value)mon=ALLTRIM(str(thisform.spinner2.Value)da=ALLTRIM(str(thisform.spinner3.Value)x(10)=CTOD(ALLTRIM(mon+'/'+da+'/'+yeah)GATHER FROM xa=MESSAGEBOX('添加成功,如需继续添加,请点击确定!',4+31,'确定')IF a=6thisform.text1.Value=''thisform.text2.Value=''thisform.text3.Value=''thisform.text5.Value=''thisform.text6.Value=''thisform.text7.Value=''thisform.text5.Value=''ELSEthisform.Releaseendif用户添加相片的按钮代码:wjm=getfile()if not empty(wjm)append general stu.photo from &wjmendif界面如下:图表 11添加学生三删除、修改学生信息用户通过输入姓名或者学生学号,首先进行查询查看相关学生信息,按下确认按钮,将有如下事件发生:sno=ALLTRIM(thisform.text1.Value )SCANIF stu.xh=sno .or. stu.xm=snothisform.txtXm.Enabled = .t.mand5.Enabled= .t.thisform.bj1.Enabled = .t.thisform.xh1.Enabled = .t.thisform.zy1.Enabled = .t.thisform.xb1.Enabled = .t.thisform.date1.Enabled = .t.thisform.nl1.Enabled = .t.thisform.mz1.Enabled = .t.thisform.ty1.Enabled = .t.thisform.JG1.Enabled = .T.SCATTER TO A &&首先保存记录,取消返回保存thisform.text1.Value =''thisform.Refresh RETURNENDIFENDSCANmessagebox('该学生不存在!',0,'查找失败!')删除按钮的按键发生事件代码:SCANIF stu.xh=sno .or. stu.xm=snoDELETE FOR (stu.xh=sno .or. stu.xm=sno)USE stu EXCLUSIVEPACKENDIFENDSCANUSE markPACKUSE用户通过输入姓名或者学号,按下确认键,期间学生信息相关的控件就能够实现开放修改,当然,用户也可以取消返回到系统的主界面。当按下删除该学生的时候,取消修改就起相应作用,同时把当前记录复制给一个数组A,此时若按下能够取消删除记录,将会全局sacn寻找当前记录,如果存在就替换掉当前记录,避免没有按删除键而无法操作返回的操作,如果寻找不到也就是已经按过删除键的时候,会通过插入新记录来返回误操作。修改学生信息和删除信息事件差不多。界面运行如下图所示:图表 12删除学生信息2.8课程信息设计有了上面对学生信息的管理的基础,课程信息设计就差不多和学生信息管理同一个模板,相关的属性不同了,界面也相应不同了。课程信息设计的内容同样包括有,课程信息查询、添加课程信息、删除课程信息、修改课程信息。其相关代码可以对照学生信息设计模块。其运行界面如下: 图表 13课程信息查询、修改 图表 14课程信息添加、删除2.9学生选课成绩信息设计 一学生选课成绩查询学生选课成绩查询的表单,力求简单和明了的特点,用户可以通过输入学号、姓名进行查询到改学生以后,通过list的组合框,实现用户点击某个课程,右边的与mark相连接起来的txtmark就能显示当前选中的课程的成绩。主要的“确定”按钮代码为:sno=ALLTRIM(thisform.text1.Value )SCANIF 学生成绩单.xh=sno .or. 学生成绩单.xm=snothisform.list1.Visible = .T.thisform.txtMark.Visible= .T.thisform.lblMark.Visible=.t.thisform.Refresh RETURNENDIFENDSCANmessagebox('该学生不存在!',0,'查找失败!')界面运行如下:图表 15学生成绩查询二学生成绩单本系统的学生成绩不另外设计了添加成绩、删除成绩等相关功能,而是通过了本地视图的,学生成绩单来建立一个表单,实现成绩单简单的添加、删除、查找、打印、编辑等。3.0管理员信息设计一管理员信息查看由上面的系统功能分析知道,本学生信息管理系统如果是非管理员进入系统,可以通过查看系统管理员注册使用的,同样的,管理员也可以在系统重查看到管理员的相关信息。管理员信息查看,是通过表单向导来设计的,设计为无按钮,并结合学生信息查询的“最前、上一条、下一条、最好、返回”命令按钮组,在一定的程度上满足非管理员的需要和信息的查阅度。二管理员信息修改管理员可以进入系统管理员信息修改器,进行对相关管理员信息的修改。本模块中,主要想实现的功能是修改当前管理员的密码。管理员点击密码修改,就能显示要输入旧密码的需要,通过 旧密码的tex1中的valid(将要释放)的代码实现和原来的密码对照,如果相同就可以修改新密码,不同的话,证明此管理员不是本人。代码如下:s=ALLTRIM(thisform.pasSWORD1.Value)IF this.Value=sthisform.standardlabel2.Visible= .t.thisform.standardlabel3.Visible= .t.thisform.text2.Visible= .t.thisform.text3.Visible= .t.ELSEMESSAGEBOX('密码错误,请重新输入',0,'错误')thisform.text1.Value=''endif另外,通过第二次输入密码,要释放焦点的时候,验证前后两次的新密码是否都一样,实现的代码如下:Text3lostfocus:s=ALLTRIM(thisform.text2.Value )IF this.Value=s thisform.passWORD1.Value=this.Value MESSAGEBOX('修改成功!',0) ELSE MESSAGEBOX('前后密码不一致!请修改!',0,'错误') endif 三管理员注册外界人员要对本系统进行使用,必须在管理员的情况下注册才能拥有对系统的使用权。“确定按钮”的主要代码为:if (LEN(ALLTRIM(thisform.text1.Value ) >0) AND (LEN(ALLTRIM(thisform.text6.Value ) >0) a=ALLTRIM(thisform.text1.Value)b=ALLTRIM(thisform.text6.Value)c=ALLTRIM(thisform.text3.Value)d=ALLTRIM(thisform.text4.Value)insert into user values(a,b,c,d)c=MESSAGEBOX('注册成功!',1+64)IF (c=1)thisform.ReleaseendifELSEMESSAGEBOX("注册失败,请新填写!",5+16)Endif相关界面运行图如下:图表 16系统管理员界面3.1报表、标签设计本系统有设计了两个报表,一个是课程汇总,实现每一个科目的成绩统计,包括有课程的平均分,和统计选修人数,并在总结中有学生总体的平均成绩。有利于班干和老师针对不同的课程有不同的教学方针。另一个是学生成绩单报表,主要记载了学生各个选修的科目和成绩。并能在组注脚中实现对学生个人平均成绩的计算。标签只有一个,名字为学生成绩单,类似于学生成绩单,只是形式不一样了。运行界面如下:图表 17报表预览3.2主程序设计本学生信息管理系统,主建了一个主程序,并设置为主文件,实现程序的开端调用文件。其中的代码如下:CLOSE ALL CLEAR ALL SET TALK OFF _screen.Caption='学生信息管理系统 v5·13'_screen.Visible=.f.DO FORM 封面READ eventsSET SYSMENU TO default33 程序连编和打包安装程序通过Vf9.0对该学生信息管理系统进行连编成程序exe格式,此时,可以双击改文件运行程序。由于v9没有打包安装向导,所以用v6进行程序打包成安装程序,可以生成web安装和网络安装文件。三 总结·设计的心得和感想较为漫长的一周,在老师的检查系统下,就完美的结束了我的数据库课程实习设计。这一周来,常常对着电脑上那渺小的文字,想着那连连相扣的思路,到后来总有点感觉累透了眼睛,也累透了脑袋。特别是在出现错误的时候,想的东西,需要更多。这次设计的学生信息管理系统,全在自己所掌握的知识下,进行编程设计,完全体现了自己在数据库语言和程序设计课程学习状况,充分地为自己以后更深入了数据库语言奠下深厚的基础。纵观此学生信息管理系统的整体概况,目前,自我认为设计良好,相关功能都能够实现,功能强大,条理清晰,界面可观性比较好。并且特色在于,所设计的表单都在一个表单系统桌面中运行,比较符合系统的观念。经过这次实习系统设计,自己总结了这个学生信息管理系统的一些问题,发现,虽然已经可以运行,但是,很多细节问题,还没有得到很好的解决,例如,那些排列显示,没有好好地对称显示;系统的主菜单太杂而繁多;多表信息浏览的界面太差等等。在系统设计的过程中,我搜索了许多关于Vf的相关知识,例如,怎么解决vf提示数据库的无效性;系统如何打包才正确而不出现CBA文件错误我从中发现,学习数据库要细心和有耐性,并且要不断地从外界学习更多的技术才能设计出一套完美的系统。专心-专注-专业