班级管理工作的数据库系统设计说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级管理工作的数据库系统设计说明书
一、系统需求分析
本系统是用于开发一套专门用于班级管理工作的数据库系统,经过仔细研究分析,我们决定将系统分为三大部分,分别为学生人事档案管理,学生成绩查询,后台操作管理三部分。
为了便于使用者对班级情况的管理,其中主要侧重点在学生人事档案管理方面。
在学生人事档案管理又分为学生人事维护打印和查询打印两个分支。
学生成绩菜单具有查询打印功能。
系统管理分为操作员管理,密码管理,数据备份等部分。
1.学生信息维护:管理学生学号、、班级等,一些主要功能:数据录入、修
改、删除、查询、浏览、保存、打印等。
2.学生人事信息的查询:提供学号,,全体查询。
分别利用不同的命令代码
方式实现查询打印功能,功能是便于指导员和老师,学生用户的检索查询
3.学生成绩查询的管理:提供学号,,全体查询,与学生人事信息查询相似。
几大部分紧密结合联系,共分为两个数据库,第一个数据库包括学生管理维护表和成绩查询表,第二个数据库包括系统管理表。
二、系统主要功能模块
学生管理系统基于Visual FoxPro 6.0中文版开发,VFP在数据库开发方面具有方面,实用,简单,直接等优点,同时其也具有一定的局限性。
本系统主要面向班级指导员和班级学生开发使用,因此主要侧重于系统的使用性和方便性,同时在安全性方面,我们也十分重视。
特别是操作员级别的划分等密码管理,我们都做了仔细的分析研究。
1. “学生信息管理系统”的模块结构图(如图1)
图1 系统模块划分2、本系统的主要容(如图2)
图 2 项目管理器
三、数据库设计
数据库设计是总体设计阶段非常重要的环节,数据库结构的变化会造成编码的改动,所以必须认真设计数据库结构后再进行编码,从而避免无谓的重复工作。
本系统的数据库包括4个表,即学生基本信息表,学生成绩表等。
1.学生基本信息表(rsb.dbf)
学生基本信息表(rsb.dbf)用于记录学号、、班级等信息,其逻辑结构如表1所示。
2.学生成绩表(cjb.dbf)
学生基成绩表(cjb.dbf)用于成绩的基本等信息,包括学号、课程编号、课程名称、成绩等信息,其逻辑结构如表2所示。
3.用户表(yonghu.dbf)
用于记录系统用户的基本信息,包括用户名,密码等,其逻辑结构如表3所示。
表3 用户表
四、各功能模块的具体设计
根据系统规划和需要分析,把系统划分为学生信息管理,学生成绩查询,系统管理三个模块。
本系统用到的主要有以下文件:主控程序main.prg、启动界面(封面)face.scx、系统登录界面(口令验证窗口)pass.scx、,主菜单main_menu.mpr。
程序的调用关系如下:主控程序main.prg中调用界面表单face.scx,封面中调用“口令验证窗口”表单pass.scx,口令正确则调用系统菜单main_menu.mpr。
各菜单项调用相对应的表单。
1.主控程序main.prg的代码实现为:
CLEAR &&清屏
CLEAR ALL &&从存中释放所有的存变量
CLOSE ALL &&关闭各种类型的文件
SET ESCAPE OFF &&禁止运行的程序和命令在按 Esc 键后被中断
SET SAFETY OFF &&指定在改写已有文件时不显示对话框
SET DELETE ON &&使用围子句处理记录的命令忽略标有删除标记的记录SET SYSMENU OFF &&在程序执行期间废止 Visual FoxPro 主菜单栏RELEASE WINDOW "常用" &&关闭常用工具栏
SET CENTURY ON &&年份以四位显示
SET DATE TO ymd &&日期格式为年、月、日
SET MARK TO "-" &&指定日期分隔字符
SET HOURS TO 24 &&指定为 24-小时时间格式
_SCREEN.Visible=.t.
_SCREEN.Caption="05计专学生管理系统" &&系统窗口标题
_SCREEN.Icon=".\dod.ico" &&系统标题栏图标
*判断显示器当前分辨率
_SCREEN.Width=SYSMETRIC(1)
_SCREEN.Height=SYSMETRIC(2)
*根据分辨率不同,为系统设置不同的背景图片
IF SYSMETRIC(1)>=1024
_SCREEN.Picture=".\img\bj.jpg"
ELSE
_SCREEN.Picture=".\img\bj.jpg"
ENDIF
DO FORM .\face.scx &&调用登录界面表单
On ShutDown do OnShutdown &&退出系统时调用函数onshutdown() READ EVENTS &&建立事件循环
On ShutDown &&释放当前的On ShutDown命令
*按菜单的“关闭”按钮退出时,出现的提示框
FUNCTION OnShutdown()
sel=MESSAGEBOX("真的要退出吗?",4+32+256,"提示")
IF sel=6
*SELECT 0
*USE .\dbsystem\LOG
*GO BOTTOM
*REPLACE 离开时间 WITH DATETIME() &&退出系统时记录操作员退出时间
CLOSE ALL
CLEAR EVENTS &&退出事件循环
QUIT &&结束当前 Visual FoxPro 工作期,并将控制权返回给操作系统
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事件代码:SET BELL ON
SET BELL TO '.\MUSIC\welcome.wav',2
??CHR(7)
FORM1的UNLOAD事件代码:
SET BELL TO '\MUSIC\SILENT.WAV',2
??CHR(7)
此两项功能分别为在打开表单时调用的音乐文件和关闭表单时调用的音乐
文件。
Command1的mouseup事件代码:
LPARAMETERS nButton, nShift, nXCoord, nYCoord release thisform
DO FORM .\main\pass.scx
Timer1的timer事件代码:
release thisform
DO FORM .\main\pass.scx
Timer2的timer事件代码:
为了实现五角星的闪动:
IF bel5.visible
bel5.visible=.f.
else
bel5.visible=.t.
endif
Timer3的timer事件代码:
为了实现五角星的闪动:
IF bel5.visible
bel5.visible=.t.
else
bel5.visible=.t.
endif
Timer4的timer事件代码:
为了实现五角星的闪动:
IF bel5.visible
bel5.visible=.t
else
bel5.visible=.t.
endif
同时在每个五角星的颜色也做了设置。
3.系统登陆表单(pass.scx)界面设计
密码验证作为系统最基本的安全管理步骤。
用户如果不输入合法的用户名和密码,系统是不能进入的。
当用户输入合法的用户名和密码时,系统管理会自动判断此用户,使用户的操作具有合法性。
密码验证页包括操作员和密码两个部分。
具体的代码实现也将在详细设计书说明。
下面是密码登陆页的图示(图4):
用户在文本框输入操作员及口令,若正确则调用系统主界面(菜单)。
允许输入三次,若三次均不正确刚自动退出系统。
若用户输入的操作员及口令正确,要完成下列工作:
图4 登陆界面
1)要参数设置
(1)设置一个全局变量operat,用于记录登陆系统的操作员,系统中有3个地
方要用到操作员的和代号:一是进入主界面后在标题栏显示的操作员;
二是操作员在系统管理模块的口令设置中更改自己的口令,系统要知道是哪个操作员;三是退出系统时系统日志中要记录操作员的退出时间。
(2)在系统日志表log.dbf中增加一条记录,并同时记录此操作员的登录系
统的时间。
从权限表menuright.dbf中读出此操作员对应各菜单项的权限,并赋值给数组。
调用菜单文件,显示系统主界面。
2)登陆表单界面中主要控件属性如表5所示。
对象名称属性名称属性值
Form1 caption 口令输入窗口
AutoCenter .T.
Command1 caption 确定
Command2 caption 退出
3)事件代码:
Form1的init事件代码:
SET EXACT ON &&精确比较
PUBLIC ARRAY rr[18] &&数组用于实现菜单项权限
PUBLIC i &&i用于记录用户名及口令输入次数
PUBLIC operat &&operat用于保存操作员
i=0
THISFORM.Text1.Setfocus
“确定”按钮(COMMAND1)CLICK事件代码:
*判断密码是否正确
i=i+1
SELECT operator
LOCATE FOR 操作员=ALLTRIM(THISFORM.Text1.Value)
DO CASE
CASE i<=3 AND FOUND() AND THISFORM.Text2.Value=operator.口令
*输入次数未超过3次且用户名正确、口令正确
operat=THISFORM.Text1.Value
INSERT INTO log(操作员代号,操作员,登录时间) VALUES(operator.操作;员代号,operator.操作员,DATETIME())
_SCREEN.Caption="05计专学生管理系;
统"+SPACE(40)+DTOC(DATE())+SPACE(40)+"操作员:"+operatSELECT 权限 FROM menuright INTO ARRAY rr WHERE 操作员代号;
=operator.操作员代号 ORDER BY 菜单项编号
RELEASE THISFORM
DO .\main\main_menu.mpr
CASE i<=3 AND FOUND() AND THISFORM.Text2.Value!=operator.口令
*输入次数未超过3次且用户名正确、口令不正确
MESSAGEBOX("密码错误,请重输!","警告")
THISFORM.Text2.Value=""
THISFORM.Text2.Setfocus
CASE i<=3 AND NOT FOUND() &&输入次数未超过3次且用户名不正确
MESSAGEBOX("操作员错误,请重输!","警告")
THISFORM.Text1.Value=""
THISFORM.Text2.Value=""
THISFORM.Text1.Setfocus
CASE i>3 &&输入次数超过3次
MESSAGEBOX("禁止进入系统!","警告")
THISFORM.Release
ENDCASE
退出按钮(COMMAND2)CLICK事件代码:
RELEASE THISFORM
CLEAR EVENTS
4.系统主界面
当操作员的名称和密码均正确的时候,系统便会进入系统主界面使用主菜单。
主菜单共分为三个分菜单项:学生信息管理,学生成绩管理,系统管理。
如图(5)
图5 主界面
在学生信息管理中分为学生信息维护和学生信息查询两个菜单项,在学生成绩管理中含有学生成绩查询打印菜单项,在系统管理中分为:操作员管理、口令设置、权限管理、系统日志、数据备份、数据恢复、退出系统七项。
5系统菜单设计
1、学生信息管理系统的菜单
在应用系统中,各个了模块是通过菜单组织在一起的。
通过对人事工资管理系统功能模块的设计,可以交系统划分为3大模块:学生信息管理、学生成绩查询、系统管理,具体的菜单设计见表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所示。
对象名称属性名称属性值
Form1 caption 05计专学生数据维护
AutoCenter .T.
Grid1 recordsourcetype 1-别名
recordsource rsb
Commandgroup1 buttoncount 10
value 1
3)事件代码:
FORM1的INIT事件代码:
MANDGROUP1.CMDTOP.ENABLED=.F.
MANDGROUP1.CMDPREV.ENABLED=.F.
MANDGROUP1.CMDNEXT.ENABLED=.T.
MANDGROUP1.CMDBOTTOM.ENABLED=.T.
MANDGROUP1.CMDADD.ENABLED=.T.
MANDGROUP1.CMDEDIT.ENABLED=.T.
MANDGROUP1.CMDDELETE.ENABLED=.T.
MANDGROUP1.CMDFIND.ENABLED=.T.
MANDGROUP1.CMDPRINT.ENABLED=.T.
MANDGROUP1.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.
MAND1.visible=.T.
BEL11.visible=.F.
THISFORM.TEXT7.visible=.F.
FORM1的CLICK事件代码:
BEL11.visible=.F.
THISFORM.TEXT7.visible=.F.
GRID1的afterrowclochange事件代码:
LPARAMETERS nColIndex
this.setall("dynamicbackcolor","IIF(This.activerow<>recno(),rgb(2 55,;255,255),;rgb(0,255,0))","column")
select rsb
thisform.refresh
此代码实现不现颜色显示选中的GRID对象的行及列。
“第一个“按钮的CLICK事件代码:
select rsb
go top
mandgroup1.cmdtop.enabled=.f. mandgroup1.cmdprev.enabled=.f.
if not eof()
mandgroup1.cmdnext.enabled=.t. mandgroup1.cmdbottom.enabled=.t. endif
thisform.refresh
“前一个“按钮的CLICK事件代码:
select rsb
skip -1
if bof()
go top
mandgroup1.cmdtop.enabled=.f. mandgroup1.cmdprev.enabled=.f. endif
if not eof()
mandgroup1.cmdnext.enabled=.t. mandgroup1.cmdbottom.enabled=.t. endif
thisform.refresh
“下一个“按钮的CLICK事件代码:
select rsb
skip
if eof()
go bottom
mandgroup1.cmdnext.enabled=.f.
mandgroup1.cmdbottom.enabled=.f. endif
if not bof()
mandgroup1.cmdtop.enabled=.t. mandgroup1.cmdprev.enabled=.t. endif
thisform.refresh
“最后一个“按钮的CLICK事件代码:
select rsb
go bottom
mandgroup1.cmdnext.enabled=.f. mandgroup1.cmdbottom.enabled=.f.
if not bof()
mandgroup1.cmdtop.enabled=.t. mandgroup1.cmdprev.enabled=.t. endif
thisform.refresh
“增加“按钮的CLICK事件代码:
if this.caption="增加"
this.caption="保存"
MANDGROUP1.CMDTOP.ENABLED=.F. MANDGROUP1.CMDPREV.ENABLED=.F. MANDGROUP1.CMDNEXT.ENABLED=.F. MANDGROUP1.CMDBOTTOM.ENABLED=.F. MANDGROUP1.CMDADD.ENABLED=.T. MANDGROUP1.CMDEDIT.ENABLED=.F. MANDGROUP1.CMDDELETE.ENABLED=.F. MANDGROUP1.CMDFIND.ENABLED=.F. MANDGROUP1.CMDPRINT.ENABLED=.F. MANDGROUP1.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.
MAND1.VISIBLE=.F.
SELECT RSB
APPEND BLANK
GO BOTTOM
THISFORM.TEXT1.SETFOCUS()
THISFORM.REFRESH
ELSE
THIS.CAPTION="增加"
MANDGROUP1.CMDTOP.ENABLED=.t. MANDGROUP1.CMDPREV.ENABLED=.t. MANDGROUP1.CMDNEXT.ENABLED=.t. MANDGROUP1.CMDBOTTOM.ENABLED=.t. MANDGROUP1.CMDADD.ENABLED=.t. MANDGROUP1.CMDEDIT.ENABLED=.t. MANDGROUP1.CMDDELETE.ENABLED=.t. MANDGROUP1.CMDFIND.ENABLED=.t. MANDGROUP1.CMDPRINT.ENABLED=.t. MANDGROUP1.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.
mand1.visible=.t.
endif
“删除“按钮的CLICK事件代码:
SELECT RSB
XH=RSB.学号
sel=messagebox("该记录学号为:"+XH+chr(13)+"真的要删除;吗?",4+32+256,"提示")
if sel=6
delete
endif
“查找“按钮的CLICK事件代码:
bel11.visible=.t.
thisform.text7.visible=.t.
thisform.text7.value=""
thisform.text7.setfocus()
“打印“按钮的CLICK事件代码:
report form .\menu1\rsb_bb1.frx preview for rsb.学;
号=alltrim(thisform.text1.value)
“退出“按钮的CLICK事件代码:
select rsb
pack
thisform.release
“TEXT7”的valid事件代码为:
select rsb
set filter to 学号=alltrim(thisform.text7.value) or ;
学生=alltrim(thisform.text7.value)
locate for 学号=alltrim(thisform.text7.value) or ;
学生=alltrim(thisform.text7.value)
thisform.refresh
set filter to
6、运行界面:(如图7)
图7学生数据维护
6.学生信息查询表单(chaxun)的设计
学生人事信息的查询如图8,是基于RSB.dbf表,提供学号,,全体查询。
分别利用不同的命令代码方式实现查询打印功能。
功能是便于指导员和老师,学生用户的检索查询。
图8学生信息查询表单
1)学生信息查询表单界面中主要控件属性如表8所示。
对象名称属性名称属性值
Form1 caption 学生信息查询
AutoCenter .T.
Grid1 recordsourcetype 1-别名
recordsource rsb Optiongroup1 buttoncount 4
value 1 Command1 caption 查询
FORM1的INIT事件代码:
*输入编号、提示标签及文本框
bel2.Visible=.F.
THISFORM.Text1.Visible=.F.
THISFORM.Text1.Setfocus()
*输入起始日期、截止日期提示标签及文本框不可见
bel4.Visible=.F.
bel5.Visible=.F.
THISFORM.Text2.Visible=.F.
THISFORM.Text3.Visible=.F.
mand4.Visible=.F.
*表格数据不可修改
THISFORM.Grid1.Readonly=.T.
Optiongroup1的CLICK事件代码:
*选定查询类别后,设置各控件是否可见
DO CASE
CASE THIS.Value=1 &&按学号查询
bel2.Visible=.T.
THISFORM.Text1.Visible=.T.
bel4.Visible=.F.
bel5.Visible=.F.
THISFORM.Text2.Visible=.F.
THISFORM.Text3.Visible=.F.
mand4.Visible=.F.
bel2.Caption="请输入要查询的学号:" THISFORM.Text1.Value=""
THISFORM.Text1.Setfocus
CASE THIS.Value=2 &&按查询
bel2.Visible=.T.
THISFORM.Text1.Visible=.T.
bel4.Visible=.F.
bel5.Visible=.F.
THISFORM.Text2.Visible=.F.
THISFORM.Text3.Visible=.F.
mand4.Visible=.F.
bel2.Caption="请输入学生:"
THISFORM.Text1.Value=""
THISFORM.Text1.Setfocus()
CASE THIS.Value=3 &&按出生日期查询
bel2.Visible=.F.
THISFORM.Text1.Visible=.F.
bel4.Visible=.T.
bel5.Visible=.T.
THISFORM.Text2.Visible=.T.
THISFORM.Text3.Visible=.T.
mand4.Visible=.T.
THISFORM.Text2.Setfocus
CASE THIS.Value=4 &&显示全体记录
bel2.Visible=.F.
THISFORM.Text1.Visible=.F.
bel4.Visible=.F.
bel5.Visible=.F.
THISFORM.Text2.Visible=.F.
THISFORM.Text3.Visible=.F.
mand4.Visible=.F.
SET FILTER TO
GO TOP
THISFORM.Grid1.Refresh
ENDCASE
GRID1的数据连接连接RSB表。
一一对应该对应的数据项,COMMAND4(查询)的CLICK事件代码:
*按输入的日期条件在表格中显示查询的记录
SELECT rsb
PUBLIC qsrq,jzrq
qsrq=THISFORM.Text2.Value
jzrq=THISFORM.Text3.Value
DO CASE
CASE NOT EMPTY(qsrq) AND EMPTY(jzrq)
SET FILTER TO 出生日期>=qsrq
CASE EMPTY(qsrq) AND NOT EMPTY(jzrq)
SET FILTER TO 出生日期<=jzrq
CASE NOT EMPTY(qsrq) AND NOT EMPTY(jzrq) SET FILTER TO 出生日期>=qsrq AND 出生日期<=jzrq; OTHERWISE
MESSAGEBOX("未输入查询时间!","提示")
ENDCASE
THISFORM.Grid1.Refresh
COMMAND1的CLICK事件代码:
REPORT FORM .\menu1\rsb_bb1.frx PREVIEW
实现调用.\menu1\rsb_bb1.frx报表实现打印的功能。
该表单的运行图示如下(图9)
图9学生信息查询表单
7.学生成绩查询表单(cjch.scx)设计
首先,学生成绩查询菜单的设计与学生信息查询菜单的设计比较类似。
菜单调用的是cjcx.scx表单。
1)将cjb.dbf添加到该表单的数据环境中。
2)学生成绩查询表单界面中主要控件属性如表9所示。
表9学生成绩查询表单控件属性
对象名称属性名称属性值
Form1 caption 学生成绩查询
AutoCenter .T.
Grid1 recordsourcetype 1-别名
recordsource cjb Optiongroup1 buttoncount 3
value 1
Command1 caption 打印预览
…
图10学生成绩查询表单
3)各事件代码均类似于学生信息查询的事件代码。
其打印预览按钮的CLICK的事件代码为:
DO CASE
CASE THISFORM.Optiongroup1.Option1.Value=1
SET FILTER TO 学号=ALLTRIM(THISFORM.Text1.Value); CASE THISFORM.Optiongroup1.Option2.Value=1
SET FILTER TO 学生;=ALLTRIM(THISFORM.Text1.Value)
CASE THISFORM.Optiongroup1.Option4.Value=1
ENDCASE
REPORT FORM .\cjb_pri.frx PREVIEW
…
…
8.系统菜单的设计
系统菜单的设计主要分为操作员管理、口令设置、权限管理、系统日志、数据备份、数据恢复、退出系统七项。
各项调用相应的表单。
在操作员管理项可实现操作员的添加,删除,编辑等功能,口令设置实现口令修改的功能,权限管理实现该操作员相应的操作权限功能的设置,系统日志用来记录每个操作员的登陆动作,便于系统的安全管理,数据备份和数据恢复主要是为数据库的数据安全管理设置的。
退出系统菜单功能实现退出到操作系统界面,把存归还给操作系统。
系统菜单的各项设计类似于前几项菜单的设计,代码也基本类似于学生信息管理菜单的设计,在此不再详细给出。
操作员管理的菜单运行如下:(图11)
图11 学生成绩查询
六、参考文献
[1]周永恒.Visual FoxPro 基础教程 (第3版).:高等教育,2006.。