管理信息系统实验二
实验大纲
一、实验目的
1. 掌握《 管理信息系统( MIS ) 》课程中的MIS 开发方法,开发一个小型SMIS 。
2. 本实验不强调系统分析、系统设计,主要训练系统实施和开发的能力,了解系统实现的过程。
二、实验准备
1. 硬件∶Pentium 微机。
2.
软件∶Windows 环境∶Visual FoxPro 6.0
三、实验内容 实验题目∶学生管理信息系统的开发
该班级属学生科领导,SMIS 主要负责学生信息∶增加、删除、修改、查询、显示。
四、系统实施
1. 编写一个主控模块, 该模块运行后, 屏幕首先显示如下信息:
20070805****班 管理信息系统 成都理工大学 财务管理系
学生姓名 研制 2009年5月
屏幕显示如下的下拉式菜单: 选定不同的功能模块,将可以完成不同的模块功能. 2. 请编写上述9个子模块,各模块要求如下: (1) 系统初始化—— 在数据库结构和数据已经存在的情况下,擦去课程1、课程2、课程3字段的值,以便以后填写它们的新数值。 (2) 退出SMIS 系统——结束用户停止使用本系统,并在屏幕上显示
帮助 系统说明 查询与计算 查询 计算 显示 编辑 填写 修改 删除 系统管理 系统初始化 退出SMIS 系统
******班管理信息系统使用结束
再见
模块功能:退出到Windows。
(3) 填写——在数据文件中追加学员的记录。
模块功能:追加一条学员记录
(4) 修改——在数据文件中修改某一条学员记录
模块功能:根据学号(或姓名)修改某一条学员记录
(5) 删除——在数据文件中删除某一条学员记录
模块功能:根据学号或根据姓名删除某一学员记录、或删除全部学员记录。
(6) 查询——在数据文件中查询符合条件的学员记录,并将其显示在屏幕上。
模块功能: 1. 按照学号查询符合条件的某学员记录
2. 按照姓名查询符合条件的某学员记录
若检索成功, 请按如下格式显示(否则提示∶查无此人):
记录编号:
学号: 姓名: 性别: 年龄: 班号: 系别∶
课程1: 课程2: 课程3: 总分: 备注:
(7) 计算
模块功能:计算每个学员的总分、显示总分最高者和最低者;显示全部学员每门课程的平均成绩、每门课程最高分和最低分。
(8) 显示——在屏幕上显示全部数据记录
模块功能:逐屏根据学号顺序显示全部学员记录。
(9) 系统说明——系统说明将在屏幕上出现如下提示信息:
系统说明
a. 本系统是成都理工大学*******系****** 班管理信息系统.
b. 本系统是成都理工大学*******系****** 研制
c. 本系统是用Visual FoxPro(或Foxbase)开发.
d. 系统启动命令 a. 先进入Visual FoxPro(或Foxbase)状态
b. DO ****
f. 系统采用菜单提示的方法, 便于用户使用.
g. 系统必需留有备份盘.
**********大学*******系****** 2009 年5月**日
五、建立一个数据库文件
记录格式内容如下:
学号姓名系别班号年龄性别课程1 课程2 课程3 备注
请输入12-15条数据记录
六、调试并验收SMIS
请把整个系统连机调试并检验通过其功能,并在教师前使用并检查该系统。
参考文献
1. 史济民、汤观全,《Visual Foxpro 及其应用系统开发》,清华大学出版社,2000年1月
管理信息系统实验二
实验指导书
SMIS的开发过程将用到以下几个方面的知识:
1. 数据库(表)的基本操作第二章:表的基本操作
2. 菜单的设计第五章的第一节:下拉菜单的设计
3. 表单的设计第六章:表单设计基础
第七章:表单控件设计;第八章:表单高级设计
4. 程序设计请参考第四章:程序设计初步
5. 项目管理器请参考第一章第七节:项目管理器
SMIS具体开发过程分为如下16步:
一、建立并设置默认工作目录
为避免为SMIS所建立的各个文件与其他文件混在一起,可建立在硬盘上建立一子目录,并设置默认目录到此目录。
方法:在VFP的命令窗口中输入如下两条命令:
MD D:\SMIS
SET DEFAULT TO D:\SMIS
设置好默认目录以后,在保存所建立的各类文件时,如不指定盘符、路径,文件都将保存在此目录中。每次上机结束之前,关闭VFP,在Windows中将SMIS中所有文件复制到优盘上。下次上机时,先在Windows中将优盘上的文件复制到D:\SMIS目录,启动VFP 后,再使用命令:SET DEFAULT TO C:\SMIS 重设默认目录。(注意:退出VFP后,所设置的默认目录不被保存,再次进入VFP时,必须重新使用命令:SET DEFAULT TO D:\SMIS 设置默认目录)
二、建立数据库:STUDENTS.DBF
方法:在命令窗口中输入命令:create STUDENTS调出表设计器,定义各字段的字段名、类型、宽度、小数位如下:
字段名类型宽度小数
学号字符型4
姓名字符型8
性别字符型2
年龄数值型24+1 0
班号字符型5
系别字符型2
课程1 数值型30
课程2 数值型30
课程3 数值型30
备注备注型4
三、建立下拉菜单
第1步:调出菜单设计器
方法:单击“文件”菜单项,选择“新建”再选择“菜单”再单击“新建文件”按钮,
现单击“菜单”按钮。
第2步:输入各级菜单及其相应的调用命令。
一级菜单二级菜单调用的命令
系统管理系统初始化do form frmxtcsh
退出SMIS系统quit
编辑填写do form frmtx
修改do form frmxg
删除do form frmsc
查询计算查询do form frmcx
计算do form frmjs
显示do xs
帮助系统说明do form frmxtsm
第3步:单击“显示”菜单项,选择“常规选项”选择“顶层菜单”,再单击“确定”按钮。
第4步:单击“菜单”菜单项,选择“生成”输入文件名:mnusmis.mnx保存菜单设计器中的内容,并用mnusmis.mpr作为生成的可执行的菜单程序的文件名。
四、设计SMIS的主表单:frmsmis
第1步:调出表单设计器
方法:单击“文件”菜单项,选择“新建”再选择“表单”再单击“新建文件”按钮。
第2步:设置表单的有关属性
属性名称属性值
name frmsmis
caption 学生管理信息系统
desktop .T.
showwindow 2 (作项层表单)
第3步:编写事件代码
init 过程的代码
application.visible=.F.
do mnusmis.mpr with this, .T.
destroy 过程的代码
application.visible=.T.
cancel
(注:系统最终调试成功后,可将cancel 改为quit )
第4步:存盘退出
单击常用工具栏中的“保存”按钮,在“另存为”对话框的“保存表单为”框中输入frmsmis,单击对话框中的“保存”按钮,将表单存盘,然后关闭表单设计器。
五、编写主程序:main.prg
在命令窗口中使用命令:
modify command main
程序内容:
do form frmsmis
read events
六、设计“系统初始化”表单:frmxtcsh
第1步:打开表单设计器
第2步:设置表单的有关属性
属性名称属性值
name frmxtcsh
caption 系统初始化
showwindow 1(在项层表单中)
第3步:添加一个文本框(用于显示提示信息)并设置文本框的属性
属性名称属性值
value 要清除所有学生的各科成绩吗?
fontsize (请根据自己的喜好进行设置)
forecolor (请根据自己的喜好进行设置)
backcolor (请根据自己的喜好进行设置)
第4步:添加两个命令按钮并设置命令按钮的属性、编写命令按钮的事件代码
command1的属性
属性名称属性值
caption 清除
fontsize (请根据自己的喜好进行设置)
command2的属性
属性名称属性值
caption 返回
fontsize (请根据自己的喜好进行设置)
command1的事件代码
click 过程的代码:
use students
replace all 课程1 with 0,课程2 with 0,课程3 with 0
thisform.text1.value="所有学生的各科成绩已被清除!"
command2的事件代码
click 过程的代码:
thisform.release
第5步:存盘退出
以frmxtcsh 作表单文件名
七、创建用于显示一个学生的数据的表单类:clsfrmstud
第1步:调出类设计器
方法:单击“文件”菜单项,选择“新建”再选择“类”再单击“新建文件”按钮,填写“新建类”对话框中的类名(clsfrmstud)、派生于(form)、
存储于(clslibsmis)并单击“确定”按钮。
第2步:在类设计器中的表单上添加10个标签、10个文本框,一个命令按钮并合理安排它们的位置。
第3步:设置有关的属性
对象属性属性值
clsfrmstud showwindow 1(在项层表单中)
label1 caption 学号
label2 caption 姓名
label3 caption 性别
label4 caption 年龄
label5 caption 班号
label6 caption 系别
label7 caption 课程1
label8 caption 课程2
label9 caption 课程3
label10 caption 备注
text1 controlsource 学号
text2 controlsource 姓名
text3 controlsource 性别
text4 controlsource 年龄
text5 controlsource 班号
text6 controlsource 系别
text7 controlsource 课程1
text8 controlsource 课程2
text9 controlsource 课程3
text10 controlsource 备注
command1 caption 返回
第4步:设置有“返回”命令按钮的事件代码
click 事件的代码:
thisform.release
第5步:存盘退出
八、创建“填写”子表单frmtx
第1步:打开表单设计器
第2步:将自定义的clsfrmstud类添加到“表单控件工具栏”
方法:单击“表单控件工具栏”中的“查看类”按钮,选择“添加”,在“打开”对话框中选择文件“clslibsmis.vcx”再单击“打开”,此时在“表单控件工具栏”中将出现一个“clsfrmstud”控件。
第3步:利用自定义的clsfrmstud类创建表单
方法:选中“表单控件工具栏”中的“clsfrmstud”控件,鼠标移到表单上并单击鼠标左键,此时屏幕上出现一对话框提问:“要添加表单,需要一个表单集对象,创建一个吗?”,回答“是(Y)”。
第4步:设置新创建的表单的属性和事件代码
属性属性值
name frmtx
caption 填写
对象事件代码
frmtx init 过程的代码
use students
append blank
frmtx destroy 过程的代码
delete for empty(学号)
pack
frmtx getfocus 过程的代码
thisform.text1.setfocus
第5步:添加一命令按钮command2,并设置其属性和事件代码
(在第3步操作之后,“表单控件工具栏”中显示的控件是用户自定义的类,此时要使用常用的表单控件,可单击“表单控件工具栏”中的“查看类”按钮,选择“常用”。)属性属性值
caption 继续
事件代码
click 过程的代码
append blank
thisform.text1.refresh
thisform.text2.refresh
thisform.text3.refresh
thisform.text4.refresh
thisform.text5.refresh
thisform.text6.refresh
thisform.text7.refresh
thisform.text8.refresh
thisform.text9.refresh
thisform.text10.refresh
第6步:将表单集中多余的表单:form1删除
方法:选中表单:form1,选择“表单”菜单项中的“移去表单”
第7步:存盘退出,存盘时用frmtx作表单的文件名。
九、创建可根据学生的学号和姓名来指定显示一个学生的数据的表单类clsfrmstuda
第1步:调出类设计器
方法:单击“文件”菜单项,选择“新建”再选择“类”再单击“新建文件”按钮,填写“新建类”对话框中的类名(clsfrmstuda)、派生于(clsfrmstud)(方法:单击派生于列表框右边的带三个小数点的按钮,从打开对话框中选择clslibsmis.vcx并单击“打开”)、存储于(clslibsmis)并单击“确定”按钮。
第2步:添加一个标签和两个“组合框”:label11、combo1、combo2,合理安排它们的位置并设置其属性:
对象属性属性值
label11 caption 请指定学生的学号或姓名
combo1 rowsouretype 6 -- 字段
rowsoure 学号
combo2 rowsouretype 6 -- 字段
rowsoure 姓名
第3步:编写事件代码
对象过程及代码
clsfrmstuda
init
use students
https://www.wendangku.net/doc/8e7440525.html,bo1.value=学号
https://www.wendangku.net/doc/8e7440525.html,bo2.value=姓名
getfocus
https://www.wendangku.net/doc/8e7440525.html,bo1.setfocus
destroy
use
combo1
valid
thisform.text1.refresh
thisform.text2.refresh
thisform.text3.refresh
thisform.text4.refresh
thisform.text5.refresh
thisform.text6.refresh
thisform.text7.refresh
thisform.text8.refresh
thisform.text9.refresh
thisform.text10.refresh
locate for alltrim(学号)==alltrim(this.value)
if found() or empty(学号)
return .t.
else
return .f.
endif
combo2
valid
thisform.text1.refresh
thisform.text2.refresh
thisform.text3.refresh
thisform.text4.refresh
thisform.text5.refresh
thisform.text6.refresh
thisform.text7.refresh
thisform.text8.refresh
thisform.text9.refresh
thisform.text10.refresh
locate for alltrim(姓名)==alltrim(this.value)
if found() or empty(姓名)
return .t.
else
return .f.
endif
第4步:存盘退出
十、创建“修改”子表单frmxg
第1步:打开表单设计器。
第2步:利用自定义的clsfrmstuda类创建表单。
(先使用步骤八的第2步的方法将clsfrmstuda添加到“表单控件工具栏”)
方法:选中“表单控件工具栏”中的“clsfrmstuda”控件,鼠标移到表单上并单击鼠标左键,此时屏幕上出现一对话框提问:“要添加表单,需要一个表单集对象,创建一个吗?”,回答“是(Y)”。
第3步:设置新创建的表单的属性和事件代码。
属性属性值
name frmxg
caption 修改
第4步:将表单集中多余的表单:form1删除
方法:选中表单:form1,选择“表单”菜单项中的“移去表单”
第5步:存盘退出,存盘时用frmxg作表单的文件名。
十一、创建“删除”子表单frmsc
第1步:打开表单设计器。
第2步:利用自定义的clsfrmstuda类创建表单。
方法:选中“表单控件工具栏”中的“clsfrmstuda”控件,鼠标移到表单上,此时屏幕上出现一对话框提问:“要添加表单,需要一个表单集对象,创建一个吗?”,回答“是(Y)”。
第3步:设置新创建的表单的属性和事件代码。
属性属性值
name frmsc
caption 删除
第4步:将text1~text10设置为只读
对象属性属性值
text1 readonly .T.
text2 readonly .T.
text3 readonly .T.
text4 readonly .T.
text5 readonly .T.
text6 readonly .T.
text7 readonly .T.
text8 readonly .T.
text9 readonly .T.
text10 readonly .T.
第6步:在新创建的表单中增加4个命令按钮:command2、command3、command4、command5,1个标签:label11,1个复选框:check1、设置属性和事件代码如下:对象属性属性值
command2 caption 删除当前记录
command3 caption 恢复当前记录
command4 caption 删除所有记录
command5 caption 恢复所有记录
label11 caption 当前记录是否已加删除标志?
check1 readonly .T.
第5步:编写表单及控件的事件代码
对象过程及代码
frmsc destroy
pack
use
combo1 valid
thisform.check1.value=delete()
dodefault()
combo2 valid
thisform.check1.value=delete()
dodefault()
command2 click
delete
thisform.check1.value=.t.
command3 click
recall
thisform.check1.value=.f.
command4 click
delete all
thisform.check1.value=.t.
command5 click
recall all
thisform.check1.value=.f.
第7步:将表单集中多余的表单:form1删除
方法:选中表单:form1,选择“表单”菜单项中的“移去表单”
第8步:存盘退出,存盘时用frmsc作表单的文件名
十二、创建“查询”子表单frmcx
第1步:打开表单设计器。
第2步:利用自定义的clsfrmstuda类创建表单。
方法:选中“表单控件工具栏”中的“clsfrmstuda”控件,鼠标移到表单上并单击鼠标左键,此时屏幕上出现一对话框提问:“要添加表单,需要一个表单集对象,创建一个吗?”,回答“是(Y)”。
第3步:设置新创建的表单的属性和事件代码。
属性属性值
name frmcx
caption 查询
第4步:将text1~text10设置为只读
对象属性属性值
text1 readonly .T.
text2 readonly .T.
text3 readonly .T.
text4 readonly .T.
text5 readonly .T.
text6 readonly .T.
text7 readonly .T.
text8 readonly .T.
text9 readonly .T.
text10 readonly .T.
第5步:将表单集中多余的表单:form1删除
方法:选中表单:form1,选择“表单”菜单项中的“移去表单”
第6步:存盘退出,存盘时用frmcx作表单的文件名。
十三、创建“计算”子表单frmjs
第1步:打开表单设计器。
第2步:设置表单的有关属性
属性名称属性值
name frmjs
caption 计算
showwindow 1 (在项层表单中)
第3步:在表单上添加4个标签和11个文本框合理按排它们的位置并设置它们的属性对象属性属性值
label1 caption 总分最高者、最低分者:
label2 caption 课程1的最高分、最低分、平均分:
label3 caption 课程2的最高分、最低分、平均分:
label4 caption 课程3的最高分、最低分、平均分:
第4步:在init过程中编写用于计算的代码:
对象过程及其代码
frmjs init
use students
set talk off
max=课程1+课程2+课程3
min=课程1+课程2+课程3
max1=课程1
min1=课程1
max2=课程2
min2=课程2
max3=课程3
min3=课程3
scan
if 课程1+课程2+课程3>max
max=课程1+课程2+课程3
endif
if 课程1+课程2+课程3 min=课程1+课程2+课程3 endif if 课程1>max1 max1=课程1 endif if 课程1 min1=课程1 endif if 课程2>max2 max2=课程2 endif if 课程2 min2=课程2 endif if 课程3>max3 max3=课程3 endif if 课程3 min3=课程3 endif endscan average 课程1,课程2,课程3 to aver1,aver2,aver3 locate for 课程1+课程2+课程3=max xmofmax=姓名 locate for 课程1+课程2+课程3=min xmofmin=姓名 this.text1.value=xmofmax this.text2.value=xmofmin this.text3.value=max1 this.text4.value=min1 this.text5.value=aver1 this.text6.value=max2 this.text7.value=min2 this.text8.value=aver2 this.text9.value=max3 this.text10.value=min3 this.text11.value=aver3 第6步:存盘退出,存盘时用frmjs作表单的文件名。 十四、创建“显示”子程序xs 第1步:在命令窗口中输入命令: modify command xs 第2步:在程序编辑窗口中输入如下代码: use students brow noedit noappend nodelete use 十五、创建“系统说明”子表单frmxtsm 第1步:打开表单设计器。 第2步:设置表单的有关属性 属性名称属性值 name frmxtsm caption 系统说明 showwindow 1 (在项层表单中) 第3步:在表单上添加1个文本框、1个命令按钮合理安排它们的位置(文本框的尺寸应足够大,用于显示说明信息),并设置属性 对象属性名称属性值 command1 caption 返回 第4步:编写表单和控件的事件代码 对象过程及其代码 frmxtsm init this.text1.value=' 系统说明'+chr(10)+; ' 本系统是电子科大XX 系XXXXXX 的管理信息系统'+chr(10)+; '............' command1 click thisform.release 第5步:存盘退出,存盘时用frmxtsm作表单的文件名。 十六、创建项目文件:smis.pjx,并将smis编译成可执行文件:smis.exe 当SMIS的全部程序创建完成后,并在Visual Foxpro中调试成功后,可将其编译成EXE 文件,从而可脱离Visual Foxpro 而运行。(可先参考步骤四第3步的说明,将表单:frmsmis 的destory事件中的cancel命令改成quit命令) 第1步:打开项目管理器 方法:单击“文件”菜单项,选择“新建”再选择“项目”再单击“新建文件”按钮,以smis.pjx作项目文件名。 第2步:将主程序添加到项目中 选“代码”|“程序”,单击“添加”按钮,在“打开”对话框中选择:main.prg ,单击“确定”,将main.prg添加到项目。 第3步:编译 单击“连编”按钮,在操作框中选择“连编可执行文件”,单击“确认”。