vf课程设计说明书书写样例.docx
《vf课程设计说明书书写样例.docx》由会员分享,可在线阅读,更多相关《vf课程设计说明书书写样例.docx(28页珍藏版)》请在冰豆网上搜索。
![vf课程设计说明书书写样例.docx](https://file1.bdocx.com/fileroot1/2023-3/31/ac6723e6-f290-44d7-b237-0fad83290ef3/ac6723e6-f290-44d7-b237-0fad83290ef31.gif)
vf课程设计说明书书写样例
目录
一、系统需求分析1
二、系统主要功能模块2
三、数据库设计4
四、各功能模块的具体设计5
五、课设总结26
六、参考文献27
一、系统需求分析
本系统是用于开发一套专门用于班级管理工作的数据库系统,经过仔细研究分析,我们决定将系统分为三大部分,分别为学生人事档案管理,学生成绩查询,后台操作管理三部分。
为了便于使用者对班级情况的管理,其中主要侧重点在学生人事档案管理方面。
在学生人事档案管理又分为学生人事维护打印和查询打印两个分支。
学生成绩菜单具有查询打印功能。
系统管理分为操作员管理,密码管理,数据备份等部分。
1.学生信息维护:
管理学生学号、姓名、班级等,一些主要功能:
数据录入、修改、删除、查询、浏览、保存、打印等。
2.学生人事信息的查询:
提供学号,姓名,全体查询。
分别利用不同的命令代码方式实现查询打印功能,功能是便于指导员和老师,学生用户的检索查询
3.学生成绩查询的管理:
提供学号,姓名,全体查询,与学生人事信息查询相似。
几大部分紧密结合联系,共分为两个数据库,第一个数据库包括学生管理维护表和成绩查询表,第二个数据库包括系统管理表。
二、系统主要功能模块
学生管理系统基于VisualFoxPro6.0中文版开发,VFP在数据库开发方面具有方面,实用,简单,直接等优点,同时其也具有一定的局限性。
本系统主要面向班级指导员和班级学生开发使用,因此主要侧重于系统的使用性和方便性,同时在安全性方面,我们也十分重视。
特别是操作员级别的划分等密码管理,我们都做了仔细的分析研究。
1.“学生信息管理系统”的模块结构图(如图1)
图1系统模块划分
2、本系统的主要内容(如图2)
图2项目管理器
三、数据库设计
数据库设计是总体设计阶段非常重要的环节,数据库结构的变化会造成编码的改动,所以必须认真设计数据库结构后再进行编码,从而避免无谓的重复工作。
本系统的数据库包括4个表,即学生基本信息表,学生成绩表等。
1.学生基本信息表(rsb.dbf)
学生基本信息表(rsb.dbf)用于记录学号、姓名、班级等信息,其逻辑结构如表1所示。
表1学生基本信息表
字段名称
字段类型
宽度
小数位
NULL
学号
C
12
否
姓名
C
8
否
性别
C
2
否
专业
C
10
贷款否
L
2
备注
M
4
2.学生成绩表(cjb.dbf)
学生基成绩表(cjb.dbf)用于成绩的基本等信息,包括学号、课程编号、课程名称、成绩等信息,其逻辑结构如表2所示。
表2学生成绩表
字段名称
字段类型
宽度
小数位
NULL
学号
C
12
否
课程名称
C
8
否
成绩
N
4
1
否
3.用户表(yonghu.dbf)
用于记录系统用户的基本信息,包括用户名,密码等,其逻辑结构如表3所示。
表3用户表
字段名称
字段类型
宽度
小数位
NULL
用户名
C
8
否
密码
C
6
否
四、各功能模块的具体设计
根据系统规划和需要分析,把系统划分为学生信息管理,学生成绩查询,系统管理三个模块。
本系统用到的主要有以下文件:
主控程序main.prg、启动界面(封面)face.scx、系统登录界面(口令验证窗口)pass.scx、,主菜单main_menu.mpr。
程序的调用关系如下:
主控程序main.prg中调用界面表单face.scx,封面中调用“口令验证窗口”表单pass.scx,口令正确则调用系统菜单main_menu.mpr。
各菜单项调用相对应的表单。
1.主控程序main.prg的代码实现为:
CLEAR&&清屏
CLEARALL&&从内存中释放所有的内存变量
CLOSEALL&&关闭各种类型的文件
SETESCAPEOFF&&禁止运行的程序和命令在按Esc键后被中断
SETSAFETYOFF&&指定在改写已有文件时不显示对话框
SETDELETEON&&使用范围子句处理记录的命令忽略标有删除标记的记录
SETSYSMENUOFF&&在程序执行期间废止VisualFoxPro主菜单栏
RELEASEWINDOW"常用"&&关闭常用工具栏
SETCENTURYON&&年份以四位显示
SETDATETOymd&&日期格式为年、月、日
SETMARKTO"-"&&指定日期分隔字符
SETHOURSTO24&&指定为24-小时时间格式
_SCREEN.Visible=.t.
_SCREEN.Caption="05计专学生管理系统"&&系统窗口标题
_SCREEN.Icon=".\dod.ico"&&系统标题栏图标
*判断显示器当前分辨率
_SCREEN.Width=SYSMETRIC
(1)
_SCREEN.Height=SYSMETRIC
(2)
*根据分辨率不同,为系统设置不同的背景图片
IFSYSMETRIC
(1)>=1024
_SCREEN.Picture=".\img\bj.jpg"
ELSE
_SCREEN.Picture=".\img\bj.jpg"
ENDIF
DOFORM.\face.scx&&调用登录界面表单
OnShutDowndoOnShutdown&&退出系统时调用函数onshutdown()
READEVENTS&&建立事件循环
OnShutDown&&释放当前的OnShutDown命令
*按菜单的“关闭”按钮退出时,出现的提示框
FUNCTIONOnShutdown()
sel=MESSAGEBOX("真的要退出吗?
",4+32+256,"提示")
IFsel=6
*SELECT0
*USE.\dbsystem\LOG
*GOBOTTOM
*REPLACE离开时间WITHDATETIME()&&退出系统时记录操作员退出时间
CLOSEALL
CLEAREVENTS&&退出事件循环
QUIT&&结束当前VisualFoxPro工作期,并将控制权返回给操作系统
ENDIF
ENDFUNC
2、运行主程序后,系统调用登陆界面表单(face.scx)(图3)
图3系统调用界面
1)将用户表添加到系统调用表单的数据环境中。
2)系统调用界面中主要控件属性如表4所示。
表4系统调用界面表单控件属性
对象名称
属性名称
属性值
Form1
caption
05计专学生管理系统
AutoCenter
.T.
Timer1
Interival
1000
Timer2
Interival
1000
Timer3
Interival
1000
Command1
caption
登陆系统
3)主要事件代码:
FORM1的INIT事件代码:
SETBELLON
SETBELLTO'.\MUSIC\welcome.wav',2
?
?
CHR(7)
FORM1的UNLOAD事件代码:
SETBELLTO'\MUSIC\SILENT.WAV',2
?
?
CHR(7)
此两项功能分别为在打开表单时调用的音乐文件和关闭表单时调用的音乐文件。
Command1的mouseup事件代码:
LPARAMETERSnButton,nShift,nXCoord,nYCoord
releasethisform
DOFORM.\main\pass.scx
Timer1的timer事件代码:
releasethisform
DOFORM.\main\pass.scx
Timer2的timer事件代码:
为了实现五角星的闪动:
IFTHISFORM.label5.visible
thisform.label5.visible=.f.
else
thisform.label5.visible=.t.
endif
Timer3的timer事件代码:
为了实现五角星的闪动:
IFTHISFORM.label5.visible
thisform.label5.visible=.t.
else
thisform.label5.visible=.t.
endif
Timer4的timer事件代码:
为了实现五角星的闪动:
IFTHISFORM.label5.visible
thisform.label5.visible=.t
else
thisform.label5.visible=.t.
endif
同时在每个五角星的颜色也做了设置。
3.系统登陆表单(pass.scx)界面设计
密码验证作为系统最基本的安全管理步骤。
用户如果不输入合法的用户名和密码,系统是不能进入的。
当用户输入合法的用户名和密码时,系统管理会自动判断此用户,使用户的操作具有合法性。
密码验证页包括操作员姓名和密码两个部分。
具体的代码实现也将在详细设计书说明。
下面是密码登陆页的图示(图4):
用户在文本框输入操作员及口令,若正确则调用系统主界面(菜单)。
允许输入三次,若三次均不正确刚自动退出系统。
若用户输入的操作员姓名及口令正确,要完成下列工作:
图4登陆界面
1)要参数设置
(1)设置一个全局变量operat,用于记录登陆系统的操作员姓名,系统中有3个地方要用到操作员的姓名和代号:
一是进入主界面后在标题栏显示的操作员姓名;二是操作员在系统管理模块的口令设置中更改自己的口令,系统要知道是哪个操作员;三是退出系统时系统日志中要记录操作员的退出时间。
(2)在系统日志表log.dbf中增加一条记录,并同时记录此操作员的登录系统的时间。
从权限表menuright.dbf中读出此操作员对应各菜单项的权限,并赋值给数组。
调用菜单文件,显示系统主界面。
2)登陆表单界面中主要控件属性如表5所示。
表5登陆表单控件属性
对象名称
属性名称
属性值
Form1
caption
口令输入窗口
AutoCenter
.T.
Command1
caption
确定
Command2
caption
退出
3)事件代码:
Form1的init事件代码:
SETEXACTON&&精确比较
PUBLICARRAYrr[18]&&数组用于实现菜单项权限
PUBLICi&&i用于记录用户名及口令输入次数
PUBLICoperat&&operat用于保存操作员姓名
i=0
THISFORM.Text1.Setfocus
“确定”按钮(COMMAND1)CLICK事件代码:
*判断密码是否正确
i=i+1
SELECToperator
LOCATEFOR操作员姓名=ALLTRIM(THISFORM.Text1.Value)
DOCASE
CASEi<=3ANDFOUND()ANDTHISFORM.Text2.Value=operator.口令
*输入次数未超过3次且用户名正确、口令正确
operat=THISFORM.Text1.Value
INSERTINTOlog(操作员代号,操作员姓名,登录时间)VALUES(operator.操作;员代号,operator.操作员姓名,DATETIME())
_SCREEN.Caption="05计专学生管理系;
统"+SPACE(40)+DTOC(DATE())+SPACE(40)+"操作员:
"+operatSELECT权限FROMmenurightINTOARRAYrrWHERE操作员代号;
=operator.操作员代号ORDERBY菜单项编号
RELEASETHISFORM
DO.\main\main_menu.mpr
CASEi<=3ANDFOUND()ANDTHISFORM.Text2.Value!
=operator.口令
*输入次数未超过3次且用户名正确、口令不正确
MESSAGEBOX("密码错误,请重输!
","警告")
THISFORM.Text2.Value=""
THISFORM.Text2.Setfocus
CASEi<=3ANDNOTFOUND()&&输入次数未超过3次且用户名不正确
MESSAGEBOX("操作员姓名错误,请重输!
","警告")
THISFORM.Text1.Value=""
THISFORM.Text2.Value=""
THISFORM.Text1.Setfocus
CASEi>3&&输入次数超过3次
MESSAGEBOX("禁止进入系统!
","警告")
THISFORM.Release
ENDCASE
退出按钮(COMMAND2)CLICK事件代码:
RELEASETHISFORM
CLEAREVENTS
4.系统主界面
当操作员的名称和密码均正确的时候,系统便会进入系统主界面使用主菜单。
主菜单共分为三个分菜单项:
学生信息管理,学生成绩管理,系统管理。
如图(5)
图5主界面
在学生信息管理中分为学生信息维护和学生信息查询两个菜单项,在学生成绩管理中含有学生成绩查询打印菜单项,在系统管理中分为:
操作员管理、口令设置、权限管理、系统日志、数据备份、数据恢复、退出系统七项。
5系统菜单设计
1、学生信息管理系统的菜单
在应用系统中,各个了模块是通过菜单组织在一起的。
通过对人事工资管理系统功能模块的设计,可以交系统划分为3大模块:
学生信息管理、学生成绩查询、系统管理,具体的菜单设计见表6:
表6系统菜单
学生信息管理
学生成绩管理
系统管理
学生信息维护
学生成绩查询
操作员管理
口令设置
学生信息查询
权限管理
系统日志
数据备份
数据恢复
退出系统
在菜单设计器中实现权限设置
在菜单项设计器中,通过[提示选项]对话框设置菜单项的跳过条件可以实现用户权限。
每个操作员对每个菜单项有两种权限:
0或1。
“0”表示此操作员对该菜单项没有操作权,系统运行后,该菜单项为灰色。
不能打开对应的表单,“1”代表该操作员对该菜单项具有操作权,系统运行后,该菜单项可用,鼠标单击菜单项能打开对应的表单。
操作员对各菜单项的权限保存在表文件menuright.dbf中,在登录系统时读出该操作员对应各菜单项的权限,并赋值给一个数组RR。
本系统共10个菜单项,所以定义的数组也包含10个元素。
5.学生数据维护表单(weihu.scx)
学生信息维护表单(如图6)包换下列功能:
数据录入、修改、删除、查询、浏览、保存、打印等。
本表单左边是浏览窗口,便于用户浏览数据;右边是编辑窗口,主要用于输入修改数据。
图6学生数据维护界面
1)在表单数据环境中添加表:
rsb.dbf、cjb.dbf。
学生人事表和成绩表的结构请打开数据库表查看。
在表单数据环境的BRFOREOPENTABLES事件中添加代码:
this.cursor1.exclusive=.t.
2)学生数据维护表单界面中主要控件属性如表7所示。
表7学生数据维护表单控件属性
对象名称
属性名称
属性值
Form1
caption
05计专学生数据维护
AutoCenter
.T.
Grid1
recordsourcetype
1-别名
recordsource
rsb
Commandgroup1
buttoncount
10
value
1
3)事件代码:
FORM1的INIT事件代码:
THISFORM.COMMANDGROUP1.CMDTOP.ENABLED=.F.
THISFORM.COMMANDGROUP1.CMDPREV.ENABLED=.F.
THISFORM.COMMANDGROUP1.CMDNEXT.ENABLED=.T.
THISFORM.COMMANDGROUP1.CMDBOTTOM.ENABLED=.T.
THISFORM.COMMANDGROUP1.CMDADD.ENABLED=.T.
THISFORM.COMMANDGROUP1.CMDEDIT.ENABLED=.T.
THISFORM.COMMANDGROUP1.CMDDELETE.ENABLED=.T.
THISFORM.COMMANDGROUP1.CMDFIND.ENABLED=.T.
THISFORM.COMMANDGROUP1.CMDPRINT.ENABLED=.T.
THISFORM.COMMANDGROUP1.CMDEXIT.ENABLED=.T.
THISFORM.TEXT1.READONLY=.T.
THISFORM.TEXT2.READONLY=.T.
THISFORM.OPTIONGROUP1.ENABLED=.F.
THISFORM.TEXT3.READONLY=.T.
THISFORM.TEXT4.READONLY=.T.
THISFORM.TEXT5.READONLY=.T.
THISFORM.TEXT6.READONLY=.T.
THISFORM.CHECK1.READONLY=.T.
THISFORM.EDIT1.READONLY=.T.
THISFORM.GRID1.READONLY=.T.
THISFORM.COMMAND1.visible=.T.
THISFORM.LABEL11.visible=.F.
THISFORM.TEXT7.visible=.F.
FORM1的CLICK事件代码:
THISFORM.LABEL11.visible=.F.
THISFORM.TEXT7.visible=.F.
GRID1的afterrowclochange事件代码:
LPARAMETERSnColIndex
this.setall("dynamicbackcolor","IIF(This.activerow<>recno(),rgb(255,;255,255),;rgb(0,255,0))","column")
selectrsb
thisform.refresh
此代码实现不现颜色显示选中的GRID对象的行及列。
“第一个“按钮的CLICK事件代码:
selectrsb
gotop
mandgroup1.cmdtop.enabled=.f.
mandgroup1.cmdprev.enabled=.f.
ifnoteof()
mandgroup1.cmdnext.enabled=.t.
mandgroup1.cmdbottom.enabled=.t.
endif
thisform.refresh
“前一个“按钮的CLICK事件代码:
selectrsb
skip-1
ifbof()
gotop
mandgroup1.cmdtop.enabled=.f.
mandgroup1.cmdprev.enabled=.f.
endif
ifnoteof()
mandgroup1.cmdnext.enabled=.t.
mandgroup1.cmdbottom.enabled=.t.
endif
thisform.refresh
“下一个“按钮的CLICK事件代码:
selectrsb
skip
ifeof()
gobottom
mandgroup1.cmdnext.enabled=.f.
mandgroup1.cmdbottom.enabled=.f.
endif
ifnotbof()
mandgroup1.cmdtop.enabled=.t.
mandgroup1.cmdprev.enabled=.t.
endif
thisform.refresh
“最后一个“按钮的CLICK事件代码:
selectrsb
gobottom
mandgroup1.cmdnext.enabled=.f.
mandgroup1.cmdbottom.enabled=.f.
ifnotbof()
mandgroup1.cmdtop.enabled=.t.
mandgroup1.cmdprev.enabled=.t.
endif
thisform.refresh
“增加“按钮的CLICK事件代码:
ifthis.caption="增加"
this.caption="保存"
THISFORM.COMMANDGROUP1.CMDTOP.ENABLED=.F.
THISFORM.COMMANDGROUP1.CMDPREV.ENABLED=.F.
THISFORM.COMMANDGROUP1.CMDNEXT.ENABLED=.F.
THISFORM.COMMANDGROUP1.CMDBOTTOM.ENABLED=.F.
THISFORM.COMMANDGROUP1.CMDADD.ENABLED=.T.
THISFORM.COMMANDGROUP1.CMDEDIT.ENABLED=.F.
THISFORM.COMMANDGROUP1.CMDDELETE.ENABLED=.F.
THISFORM.COMMANDGROUP1.CMDFIND.ENABLED=.F.
THISFORM.COMMANDGROUP1.CMDPRINT.ENABLED=.F.
THISFORM.COMMANDGROUP1.CMDEXIT.ENABLED=.F.
THISFORM.TEXT1.READONLY=.F.
THISFORM.TEXT2.READONLY=.F.
THISFORM.OPTIONGROUP1.ENABLED=.T.
THISFORM.TEXT3.READONLY=.F.
THISFORM.TEXT4.READONLY=.F.
THISFORM.TEXT5.READONLY=.F.
THISFORM.TEXT6.READONLY=.F.
THISFORM.CHECK1.READONLY=.F.
THISFORM.EDIT1.READONLY=.F.
THISFORM.COMMAND1.VISIBLE=.F.
SELECTRSB
APPENDBLANK
GOBOTTOM
THISFORM.TEXT1.SETFOCUS()
THISFORM.REFRESH
ELSE
THIS.CAPTION="增加"
THISFORM.COMMANDGROUP1.CMDTOP.ENABLED=.t.
THISFORM.COMMANDGROUP1.CMDPREV.ENABLED=.t.
THISF