大一vf论文Word下载.docx
《大一vf论文Word下载.docx》由会员分享,可在线阅读,更多相关《大一vf论文Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
5.可生成一些有关成绩统计和汇总的报表
2.2可行性分析
通过对成绩管理工作流程的分析,明确了管理系统所要完成的主要任务,根据VF及SQLServer等软件的特点,决定利用VF和SQLserver7.0建立基于C/S模式的学生成绩管理系统,完成通过局域网进行学生成绩的收集,教师在自已的办公室进行成绩的录入,学生及班主任进行查询等任务。
第三章:
系统设计
3.1功能设计
根据以上分析得出的系统目标实现如下功能表
3.2数据库设计
3.2.1E-R图
对于一个数据库管理信息系统,数据库设计的好坏直接影响到系统的实现,通过需求分析和实现目标,学生成绩管理的业务规则如下:
1.学院有多个系,每个聘用多位教师,每位教师只能属于一个系,每一个系有一位系主任,任主任也是一位教师。
局部E-R图如下所示
2.每个系开设多个专业,每一个专业只能属于一个系。
3.每个专业开设多门课程,这些课程统一编码列入教学计划。
另外在每一学期的教学招待计划(课表)中,教学计划中的一门课可能分成几部分,在几个学期内讲授。
这里规定将列入教学计划中的课程简称为课程,在课表中的课程简称为课表。
课程与课表之间是一对多的关系。
4.每个专业有多个班级,每个班级有多名学生,每位学生只能属于一个班。
5.每位学生学习多门课表课,每门课表课又同时被多名学生所学,是多对多的关系:
6.每位教师可任多门课局部E-R图如下所示
7.一位教师可以担任多个班的班主任。
综上所述,学生成绩管理系统的整体E-R图(如下页)所示:
3.2.2数据库结构设计
根据E-R图,转换成关系数据库,数据库为student,包括如下所示的表结构,其中因学生和所学课程是多对多的关系,所以转换成三个关系即学生、成绩、课表。
成绩表结构
字段字段名类型宽度小数位Nulls
1ST_ID字符型7
2KEBIAO_ID字符型7
3SCORE数值型51
班级表结构:
1CLASS_ID字符型4
2CLASS_NAME字符型10
3MAJOR_ID字符型3
4RENSHU数值型2
5TEACHER_ID字符型4
课程表结构
1COUR_ID字符型3
2COUR_NAME字符型20
3MAJOR_ID字符型10
系表结构
1DP_ID字符型2升序
2DP_NAME字符型10否
3TEACHER_ID字符型4升序
任课表结构
1KEBIAO_ID字符型7否
2COUR_ID字符型3否
3BUFEN字符型1
4XUESHI数值型3
5CLASS_ID字符型10
6TEACHER_ID字符型3
7KEMK字符型11
专业表结构
1MAJOR_ID字符型3
2MAJOR_NAME字符型10
3DP_ID字符型2
学生表结构
2ST_NAME字符型8
3SEX字符型1
4BIRTHDAY日期型8
5JIGUAN字符型36
6SCHDAY日期型8
7CLASS_ID字符型4
教师表结构
1TEACHER_ID字符型4
2TCH_NAME字符型8
3SEX数值型1
5MAJOR字符型12
6EDULEVEL字符型6
7ZHICHENG字符型10
8DP_ID字符型10
注册表结构
1TEACHER_ID字符型3
2PASSWORD字符型18
3QUESTION字符型30
4ANSWER字符型30
3.2.3数据库关联
将以上关系组合成整体的数据结构,如下图:
3.3系统应用环境
由于本系统是采用了VF和SQLserver等数据库系统创建的基于C/S模式的信息管理软件,所以系统应用的软、硬件环境为局域网,在服务器上安装了windowsNTServer及SQLserver7.0并运行正常,客户为能运行windows98或以上版本的计算机并安装windows98操作系统,使用的网络协议为TCP/IP协议。
3.4系统主要模块及功能说明
3.4.1系统启动
启动系统后出现的是登录界面,由于本系统对于不同的用户提供不同的功能(各用户及功能如下表所示)所以为了保护数据的安全,进入系统时必须进行用户登录。
用户功能
教务处管理人员进行各项教学基本资料的管理与维护
能进行成绩的查询与统计、报表打印
不能对学生成绩进行改动。
任课教师只能对自己所任课程的成绩进行维护
能查询、统计、打印功能
学生、班主任、学生处不能对成绩及教学基本资料的管理
只能进行成绩的查询、统计、打印
系统管理员各种功能均可用
用户的登录界面如下表所示;
输入用户名和口令后,系统在登录表中查找用户名,找到用户名后校验密码是否正确,如不正确,提示重新输入密码。
如正确则进入系统,在菜单栏上选择相应的菜单执行系统的各项功能。
系统有四大模块:
数据管理、数据查询、数据统计、报表打印。
3.4.2数据管理模块
在此模块主要完成对学生基本信息、课表信息、教师任课信息、班级信息、教师基本信息、学生成绩等信息的增加、编辑、简单浏览、删除、查找、标签打印功能。
除了学生成绩的维护以外,其它各项信息都由一个与下图类似的信息维护表单来完成以上功能。
为了保证学生成绩录入的正确性和数据的安全性,即任课教师只能维护自己所任课程的学生成绩,本系统采用了系统注册的方式来控制。
即教师在输入学生成绩之前需要进行用户注册,注册成功后,以自己注册的用户名和密码进行登录,系统在教师表、任课表及注册表中查找相关信息并进行较验,校验通过后,显示学生成绩录入界面,教师选择所任课程及班级后进行成绩的录入、编辑等工作。
3.4.3数据查询模块
本模块主要完成对教师任课情况及学生成绩的查询,其中教师任课查询又包括按教师号或教师姓名查询每位教师的任课情况和按班级查询每个班级的开课情况;
对学生成绩的查询又包括按课程名称查询各门课程的成绩、按学生姓名查询每位学生的成绩和按班级、学生、课程组合查询。
利用此模块可实现学生成绩和教师任课情况的快速查询。
3.4.4数据统计模块
此模块的主要功能是完成对学生成绩的简统计工作。
统计分单科成绩统计和班级成绩汇总统计两项,其中单科成绩统计可完成各门课成绩的各分数段的百分比数字分布及并绘出柱状图;
班级综合成绩统计可完成各班所学课程的汇总、不及格人员情况、计算出能获得奖学金情况及班级别排名。
在界面上选择班级名称和学期即可提出各班在各学期的统计结果。
3.4.5报表打印模块
本模块提供了教师任课及学生成绩的报表打印功能。
第四章系统实现
4.1系统实现所采用的主要技术方法
4.1.1利用VFP6提供的向导进行初始的设计工作
VFP6不仅仍然支持面向过程的编程方式,而且更重要的是采用了面向对象的事件触发型的编程方式,并且提供了大量的向导通过直观的画面来简化对界面的设计工作。
例如本系统中的表单的设计都是利用VFP6提供的表单向导来完成的,在设计过程中不但可以规划表单的界面,还可以添加表单运行所依据的数据环境,改变表单控件的相关参数。
然后对表单的控件添加相关的方法程序,使表单的各种控件发挥相应的功能,各表单控件相互配合,传递参数,共同完成表单的功能。
有时一个表单即可完成一项系统功能,有时需要几个表单相互配合才能完成。
利用表单设计器不但简化了设计表单的过程,而且由于直观,并随时可以执行表单以检查表单的运行效果,大大提高了编程的速度。
本系统所利用的设计向导还有新建数据库向导、新建表向导、视图向导、报表向导、菜单向导等。
4.1.2采用模块化编程
VFP6支持模块化编程,也就是说先将系统的功能先分解成若干个小的功能,小的功能再进一步分解,直至不能再分为止。
然后为完成每一个小的功能进行编程,每一小的模块完成一项可几项小的功能。
每一个小的模块是相对独立的,即有自己的表单、数据环境、方法程序等。
在完成各项功能的模块制作好之后,利用VFP6的项目管理器将各模块组合起来,将系统所应用到的如类、程序、表单、表、菜单等对象组合成一个整体,最后通过编译完成程序设计。
4.1.3利用远程视图实现采用C/S模式
利用VFP6很容易设计开发客户机/服务器应用程序,它为创建C/S应用程序提供了一些专用工具。
利用远程视图可以创建客户机/服务器模式的应用程序,在初始设计时,可以使用本地视图建立一个本地原型,即首先根据工作任务和完成的功能,建立本地视图,表单或程序访问表中的数据时通过本地视图访问而不是直接对表进行访问。
这样不仅可以先利用本地视图对程序进行调试,不必频繁地访问远程服务器数据,而且可以避免与远程的数据库的规则,大大提高编程的速度。
在本地原型的基础上,利用VFP6提供的升迁向导,将数据转移到远程数据源,本地视图转换为远程视图。
然后再做一些高速即可。
4.2系统主要功能的实现方法
4.2.1系统主菜单
系统菜单提供了实现系统功能的命令,通过单击各菜单项不定期完成系统的各项功能。
由于不同的用户执行的任务不同,所以不同的用户由登录菜单进行系统用的主菜单也不相同,考虑到系统只有四类用户,且如设计成带有功能限制的主菜单相对较复杂,所以在程序设计时设置了四个菜单程序,不同的用户运行不同的菜单,各菜单用VF提供的菜单生成器生成,十分方便。
菜单设计器如图所示。
4.2.2数据管理模块
4.2.2.1教学基本信息的管理
对于学生基本信息、班级信息、教师基本信息、教师任课等信息的维护一般包括数据的增加、删除、编辑、查找、简单浏览等,而且为单表操作,直接利用VF提供的表单向导生成表单的基本布局,再在此基础上进行修改,改变标签的显示属性如字型、字号,调整相对位置,增加帮助按钮,以便在输入如在学生表中输入班号、在任课表中输入教师编号、课程号时进行查询相应的编号。
由于VF提供了用于记录增加、删除、编辑、查找、简单游览的类,直接可在表单上添加这些按钮即可实现这些功能。
以学生基本信息维护为例,其用户界面如图所示。
利用VFP6提供的表单设计器可直接生成此表单的初始界面,在设计过程中添加了表单运行所需的数据环境。
在此基础上再对各控的位置进行布局,如调整表单大小,调整控件位置及参数、修饰控件使其更美观、增加”班号查询”按钮等,并为其添加方法程序。
其中”班号查询”按钮的”click”事件代码为运行bjhcx.prg,程序代码如下所示:
sele0
opendatabasestudent&
&
打开学生数据库
useclass_view&
打开班级表视图
brownoeditfielclass_id,
class_nametitle"
查询完毕后,按ESC键返回"
浏览班级号及班级名
onkeylabelESCuse&
浏览完后按ESC键退出
return&
返回表单
4.2.2.2成绩维护
成绩管理是本系统的主要任务,为了保证学生成绩录入的正确性和数据的安全性,即任课教师只能维护自己所任课程的学生成绩,本系统采用了系统注册的方式来控制。
“登录”的实现过程是:
首先将loginview视图作为表单的数据环境,在表中查找输入的教师编号和密码,在核对教师编号和密码正确后,用教师编号作为参数调用成绩输入表单.成绩输入表单的数据环境为学生表视图、教师授课视图、成绩表视图。
在接收到教师编号后,在教师任课视图中筛选出此教师编号的所有纪录的课表号作为成绩输入表单中课表编号组合框的控制源,此组合框的”interactivechange”方法程序的功能是当在组合框中选择课表编号时,在课程名称和班级号两个文本框中显示该课程的名称及班级号;
同时将”学号”组合框的控制源类型设为SQL语句,控制源为在学生表中筛选出班级号为”班号文本框”的值的学号列表.在成绩输入表单中插入一个表格gird1,其数据源为班号为”班号文本框”的值的学号及学生姓名清单.这样每当选中课表号,就会显示出班级号并报据班级号选出学生的学号,通过选择学号并输入分数。
通过“增加”按钮在成绩表中插入一条新的成绩记录。
通过“维护”按钮来控制游览及修改。
1.教师登录表单的“登录”按钮的click事件代码如下
*首先测试教师编号或密码是否为空,如果为空则提示重新输入
ifTHISFORM.teacher_id1.Value="
"
orTHISFORM.password1.Value="
waitwindow"
用户名或密码不能为空,请重新输入..."
THISFORM.teacher_id1.SetFocus
else
*在loginview表中查找教师编号
LOCATEFORUPPER(loginview.teacher_id)=;
UPPER(ALLTRIM(THISFORM.teacher_id1.Value))
*如果找到且密码一致,则调用成绩输入的表单
IFFOUND()ANDALLTRIM(loginview.password)==;
ALLTRIM(THISFORM.password1.Value)
cUser=ALLTRIM(loginview.teacher_id)
THISFORM.teacher_id1.Value="
THISFORM.password1.Value="
thisform.hide()
doformchjsr1withcuser
ELSE
*如果找不到,则提示
#DEFINEMISMATCH_LOC"
用户名或密码输入不正确,请重新输入,如果还没有注册,请先注册..."
WAITWINDOWMISMATCH_LOCTIMEOUT3
ENDIF
2.成绩输入表单中“课表号”组合框的interadtivechange方法程序如下:
publicclid&
设置公有变量
mand1.enabled=.t.&
使“增加”按钮可用
hhh=bo1.value&
将组合框的值赋值给变量hhh
seleshoukeview
locaforkebiao_id=hhh&
在授课表中查找课表号为&
hhh的记录
thisform.text1.value=cour_name&
找到后将课程名赋值给课程名文本框
thisform.text2.value=class_id&
将班级号赋值给班级号文本框
selestu_view
setfiltertoclass_id=alltrim(thisform.text2.value)&
在学生表中筛选本班
clid=alltrim(thisform.text2.value)学生,并将学号赋值
bo2.rowsource=&
设置组合框2的控制源
"
selectst_idfromstu_viewintocursortemp1whereclass_id=clid"
thisform.refresh
3.成绩录入表单中增加按钮的click事件程序为:
*将表单中课表号、学号、成绩分别存入三个变量
publicc1,c2,n1
c1=bo2.value
c2=bo1.value
n1=thisform.text4.value
selechjisr
*学号、成绩不能为空
ifc1="
andn1="
成绩不能为空..."
return
*控制成绩不能重复输入
locateforst_id=alltrim(c1)andkebiao_id=alltrim(c2)
iffound()
waitwindows"
成绩已经输入,按任意键返回"
*如果成绩未插入,则增加新记录
thisform.text4.value="
appendblank
replst_idwithc1;
kebiao_idwithc2;
scorewithval(alltrim(n1))
endif
教师输入时只需在组合框中选择课表号和学号,再输入成绩即可,即方便又避免了输入学号的输入错误。
如果要查找学号和学生姓名的对照,只需按下“帮助”按钮即可。
在此界面上,还可利用“维护”按钮配合“修改”、“下一个”、“上一个”按钮完成对学生成绩的修改。
4.2.3数据查询模块
4.2.3.1教师任课查询
该项功能是通过一个具有两个页框的表单完成,表单的数据环境是依课程表、任课表、班级表建立的视图shoukeview1。
在这个表单上可以选择“教师任课”标签“来按教师编号或按教师姓名进行查询每一位教师在本学期的任课信息;
也可以选择”班级课程“按钮来完成按班号或按班名来查询各班在本学期所学课程。
查询操作非常方便,只需在相关的页面上选择单选按钮并在组合框中选择“教师编号”、“教师姓名”、“班级号”或“班级名”,再按确定即可。
4.2.3.2学生成绩查询
学生成线查询功能的实现方法与教师任课查询相类,是用一个具有三个页框的表单实现的。
这个表单的数据源是依课程表、班级表、成绩表三个表建立的视图”chj1”。
用户可以选择“按课程查询”标签通过选择课程名称来查询各门课程的成绩情况,也可以选择“按姓名查询“通过选择学生姓名来查询每位学生各门课的成绩,还可以选择组合查询来进行综合查询。
以按课程名称查询为例说明实现过程。
在页面上设置组合框,设置其Rowsourcetype为SQL语句,设置其Rowsource为“selectdistinctcour_namefromchj1intocursortemp11.在页面上设置表格,共5列,表格的recordsourcetype为SQL语句,其visible的值为.F.,查找按钮的click事件代码为:
kcn=bo1.value
*设置表格的数据源为查询结果
thisform.pageframe1.page1.grid1.recordsource="
selectst_id,st_name,cour_name,score,class_namefromchj1intocursortempwherecour_name=kcn"
*显示查询结果
thisform.pageframe1.page1.label1.visible=.t.
thisform.pageframe1.page1.grid1.visible=.t.
thisform.pageframe1.page1.grid1.refresh
thisform.pageframe1.page1.grid1.setfocus
当单击查找按钮时,即可在表格中显示成绩。
组合查询的“查找”按钮的”click”事件代码为:
docase
*各项全为空,则为成绩表的全部记录
casekcn="
andkcn1="
andkcn2="
setfilterto
*按课程名查
casekcn<
>
andkcn="
thisform.pageframe1.page3.grid1.recordsource="
selest_id,st_name,cour_name,score,class_namef