学生学籍管理系统vfp课程设计.docx
- 文档编号:30071982
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:27
- 大小:246.92KB
学生学籍管理系统vfp课程设计.docx
《学生学籍管理系统vfp课程设计.docx》由会员分享,可在线阅读,更多相关《学生学籍管理系统vfp课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
学生学籍管理系统vfp课程设计
MIS是英文ManagementInformationSystem的英文缩写,意思是信息管理系统,该系统可用于
中小型企事业单位业务处理和信息交流,从而大大提高了企业运作的效率。
微软公司的Visual
FoxPro可视化面向对象的编程软件是一个设计MIS系统即简单又快捷的好软件。
下面,就以VFP6.0
为开发环境,讲述设计学生学籍管理系统的详细设计过程,也为在看过了前面非表单设计的学生学
籍管理系统的朋友们继续了解并学习采用表单(Form)的方式设计MIS系统的方法。
一、设计思路:
学生学籍管理系统的运行以封面表单开始,如图1所示,要求用户输入登录密码,
并设置三次检查功能,若三次输入的密码均有错,则自动退出系统;否则出现系统菜单,接收用户的
操作,操作完毕后用户可以从系统菜单中退出系统。
二、系统功能:
系统的功能主要分成十个功能模块,它们是:
录入数据、修改数据、删除数据、查
询数据、统计数据、显示数据、打印数据、导出数据、导入数据和清空数据。
录入数据可以实现学生
信息的录入;修改数据可以实现学生信息的修改;删除数据可以实现学生数据的删除;查询数据可以
实现学生信息的查询;统计数据可以实现学生人数、党员人数、学生总平均成绩、高数平均成绩、英
语平均成绩和VFP平均成绩的统计;显示数据可以实现以字段分布和二维表两种方式显示学生信息;
打印数据可以实现用报表的形式打印学生的信息;导出数据可以实现学生数据的备份,防止数据丢
失;导入数据可以实现学生数据的还原,保证数据的正确性;清空数据可以实现学生数据的清空操
作。
三、菜单结构框架图
四、数据库结构:
(可定义表名为xj.dbf)
字段名
类型
宽度
小数位数
学号
字符型
2
姓名
字符型
6
性别
字符型
2
出生年月
字符型
10
邮编
字符型
6
高数
数值型
5
1
英语
数值型
5
1
VFP
数值型
5
1
是否党员
字符型
2
电话
字符型
8
通信地址
字符型
30
备注
备注型
4
五、具体设计:
(给出源代码,表单属性可参照图示在VFP属性框中设置,所有程序文件和表单文件
均通过VFP项目管理器建立)
1、学生学籍管理系统主程序源代码(可定义程序名为main.prg)
_SCREEN.WINDOWSTATE=2&&设置窗口规格为第2种系统窗口
_SCREEN.CAPTION="学生学籍管理系统"&&设置窗口标题为“学生学籍管理系统”
_SCREEN.CLOSABLE=.T.&&去掉关闭按钮
_SCREEN.CONTROLBOX=.F.&&去掉控制按钮
_SCREEN.MAXBUTTON=.F.&&去掉最大化按钮
_SCREEN.MINBUTTON=.F.&&去掉最小化按钮
_SCREEN.BACKCOLOR=RGB(50,100,128)&&设置窗口的背景色
CLOSEALL
CLEARALL
CLEAR
SETSYSMENUOFF
SETSYSMENUTO
SETTALKOFF
SETSAFETYOFF
SETSTATUSBAROFF&&关闭VisualFoxpro的状态栏
DOFORMA:
\封面.SCX&&调用系统登录“封面”表单
READEVENT&&响应用户输入
DOA:
\菜单.MPX&&运行系统菜单
READEVENT
SETSYSMENUTODEFAULT&&恢复VisualFoxpro的系统菜单的默认值
SETSYSMENUON&&显示VisualFoxpro的系统菜单
SETSTATUSBARON&&显示VisualFoxpro的状态栏
CLOSEALL&&关闭所有文件
CLEARALL
RETURN&&返回
2、封面表单源代码(A:
\封面.sct)
PROCEDUREClick&&确定按钮的单击事件过程
SETEXACTON&&设置精确比较命令
IFTHISFORM.text1.VALUE="8888"&&如果文本框的值是8888
THISFORM.RELEASE&&那么释放封面表单
DOA:
\菜单.MPX&&运行菜单程序
ELSE&&否则
THISFORM.NO=THISFORM.NO+1&&将自定义属性NO的值由0加1
IFTHISFORM.NO>=3&&如果自定义属性NO的值为3
=MESSAGEBOX("密码三次输错,您不能使用本系统!
",0+16+0,"学生学籍管理系统")&&那么弹出内容为“密码三次输错,您不能使用本系统!
”的对话框
QUIT&&结束程序的运行
ELSE&&否则
=MESSAGEBOX("密码错误!
",48+0+0,"警告")&&弹出内容为“密码错误!
”的对话框
THISFORM.text1.VALUE=""&&设置文本框的内容为空
THISFORM.text1.SETFOCUS&&并将光标定位到文本框中
THISFORM.REFRESH&&刷新封面表单
ENDIF
ENDIF
SETEXACTOFF&&设置关闭精确比较命令
ENDPROC
PROCEDUREClick&&取消按钮的单击事件过程
THISFORM.RELEASE&&释放封面表单
CLOSEALL&&关闭所有文件
CLEAREVENT
quit
ENDPROC
3、录入数据表单源代码(A:
\录入.sct,如图2所示)
PROCEDUREInit&&录入数据表单的初始化事件过程
SETTALKOFF
THISFORMmand4.ENABLED=.f.&&设置第四个按钮为不可用状态
THISFORMmand5.ENABLED=.f.&&设置第五个按钮为不可用状态
THISFORM.txt学号.ENABLED=.f.&&设置学号文本框为不可用状态
THISFORM.txt姓名.ENABLED=.f.&&设置姓名文本框为不可用状态
THISFORM.combo1.ENABLED=.f.&&设置组合框1为不可用状态
THISFORM.combo2.ENABLED=.f.&&设置组合框2为不可用状态
THISFORM.combo3.ENABLED=.f.&&设置组合框3为不可用状态
THISFORM.combo4.ENABLED=.f.&&设置组合框4为不可用状态
THISFORM.txt邮编.ENABLED=.f.&&设置邮编文本框为不可用状态
THISFORM.txt高数.ENABLED=.f.&&设置高数文本框为不可用状态
THISFORM.txt英语.ENABLED=.f.&&设置英语文本框为不可用状态
THISFORM.txtVfp.ENABLED=.f.&&设置VFP文本框为不可用状态
THISFORM.combo5.ENABLED=.f.&&设置组合框5为不可用状态
THISFORM.txt电话.ENABLED=.f.&&设置电话文本框为不可用状态
THISFORM.txt通信地址.ENABLED=.f.&&设置通信地址文本框为不可用状态
THISFORM.edt备注.ENABLED=.f.&&设置备注编辑框为不可用状态
ENDPROC
PROCEDURELoad&&录入数据表单的加载事件过程
CLOSEDATA&&关闭所有数据库
USEA:
\XJ存&&打开A盘中的XJ.DBF表文件
SETMULTILOCKSON&&设置锁定一组记录
=CURSORSETPROP('buffering',5,'XJ')&&打开开放式表缓冲
ENDPROC
PROCEDUREInteractiveChange&&录入数据表单的交互改变事件过程
REPL出生年月WITHTHISFORM.combo2.displayvalue+"."+THISFORM.combo3.displayvalue+"."+
THISFORM.combo4.displayvalue&&用组合框的值替换出生年月字段
THISFORM.REFRESH&&刷新录入数据表单
ENDPROC
PROCEDURECommand1.Click&&单击命令按钮1的事件过程
APPENDBLANK&&添加一空白记录
THISFORM.REFRESH&&刷新录入数据表单
THISFORMmand1.ENABLED=.f.&&设置命令按钮1为不可用状态
THISFORMmand2.ENABLED=.f.&&设置命令按钮2为不可用状态
THISFORMmand3.ENABLED=.f.&&设置命令按钮3为不可用状态
THISFORMmand4.ENABLED=.t.&&设置命令按钮4为可用状态
THISFORMmand5.ENABLED=.t.&&设置命令按钮5为可用状态
THISFORMmand6.ENABLED=.f.&&设置命令按钮6为不可用状态
THISFORM.txt学号.ENABLED=.t.
THISFORM.txt姓名.ENABLED=.t.
THISFORM.combo1.ENABLED=.t.
THISFORM.combo2.ENABLED=.t.
THISFORM.combo3.ENABLED=.t.
THISFORM.combo4.ENABLED=.t.
THISFORM.txt邮编.ENABLED=.t.
THISFORM.txt高数.ENABLED=.t.
THISFORM.txt英语.ENABLED=.t.
THISFORM.txtVfp.ENABLED=.t.
THISFORM.combo5.ENABLED=.t.
THISFORM.txt电话.ENABLED=.t.
THISFORM.txt通信地址.ENABLED=.t.
THISFORM.edt备注.ENABLED=.t.
THISFORM.txt学号.SETFOCUS
ENDPROC
PROCEDURECommand2.Click&&单击命令按钮2的事件过程
SETDELETEON&&设置打开删除命令
DELETE&&删除当前记录
YN=MESSAGEBOX('确实要删除这条记录?
',4+32+256,'删除确认')&&弹出内容为“确实要删除这条记录?
”的对话框
DOCASE&&运行条件判断语句
CASEYN=6&&当单击“是”按钮时
=TABLEUPDATE(.T.)&&执行更新表函数,删除当前记录
CASEYN=7&&当单击“否”按钮时
RECALL&&恢复已作了删除标记的当前记录
ENDCASE
THISFORM.REFRESH
ENDPROC
PROCEDURECommand3.Click&&单击命令按钮3的事件过程
THISFORMmand1.ENABLED=.f.
THISFORMmand2.ENABLED=.f.
THISFORMmand3.ENABLED=.f.
THISFORMmand4.ENABLED=.t.
THISFORMmand5.ENABLED=.t.
THISFORMmand6.ENABLED=.f.
ENDPROC
PROCEDURECommand4.Click&&单击命令按钮4的事件过程
=TABLEUPDATE(.T.)
THISFORMmand1.ENABLED=.t.
THISFORMmand2.ENABLED=.t.
THISFORMmand3.ENABLED=.t.
THISFORMmand4.ENABLED=.f.
THISFORMmand5.ENABLED=.f.
THISFORMmand6.ENABLED=.t.
ENDPROC
PROCEDURECommand5.Click&&单击命令按钮5的事件过程
=TABLEREVERT(.T.)
THISFORMmand1.ENABLED=.t.
THISFORMmand2.ENABLED=.t.
THISFORMmand3.ENABLED=.t.
THISFORMmand4.ENABLED=.f.
THISFORMmand5.ENABLED=.f.
THISFORMmand6.ENABLED=.t.
ENDPROC
PROCEDURECommand6.Click&&单击命令按钮6的事件过程
SELE1&&选择1号工作区
USEA:
\XJEXCLUSIVE打开A盘中的XJ.DBF数据表
PACK&&彻底删除已作了删除标记的记录
THISFORM.RELEASE&&释放录入数据表单
ENDPROC
PROCEDUREInteractiveChange
REPL是否党员WITHTHISFORM.combo5.DISPLAYVALUE&&用组合框的值替换是否党员字段
THISFORM.REFRESH
ENDPROC
4、修改数据表单源代码(A:
\修改.sct)
PROCEDURECommand1.Click
IFNOTBOF()&&如果记录指针没有到记录的开头
SKIP–1&&向上跳转一个记录
THISFORM.REFRESH
THISFORMmand2.ENABLED=.t.
ELSE
WAITWINDOW'已经是第一条记录了!
'&&系统给出内容为“已经是第一条记录了!
”提示窗口
ENDIF
ENDPROC
PROCEDURECommand2.Click
IFNOTEOF()&&如果记录指针没有到记录的结尾
SKIP&&向下跳转一个记录
THISFORM.REFRESH
THISFORMmand1.ENABLED=.t.
ELSE
WAITWINDOW'已经是最后一条记录了!
'
ENDIF
ENDPROC
PROCEDURECommand3.Click
GOTOP&&将记录指针移到记录的开头
THISFORM.REFRESH
THISFORMmand1.ENABLED=.f.
THISFORMmand2.ENABLED=.t.
ENDPROC
PROCEDURECommand4.Click
GOBOTTOM&&将记录指针移到记录的结尾
THISFORM.REFRESH
THISFORMmand1.ENABLED=.t.
THISFORMmand2.ENABLED=.f.
ENDPROC
PROCEDURECommand5.Click
=TABLEUPDATE(.T.)
THISFORMmand1.ENABLED=.t.
THISFORMmand2.ENABLED=.t.
THISFORMmand3.ENABLED=.t.
THISFORMmand4.ENABLED=.t.
THISFORMmand5.ENABLED=.f.
THISFORMmand6.ENABLED=.f.
THISFORMmand7.ENABLED=.t.
ENDPROC
PROCEDURECommand6.Click
=TABLEREVERT(.T.)&&启用表缓冲,放弃表中对所有记录所做的修改函数
THISFORMmand1.ENABLED=.t.
THISFORMmand2.ENABLED=.t.
THISFORMmand3.ENABLED=.t.
THISFORMmand4.ENABLED=.t.
THISFORMmand5.ENABLED=.f.
THISFORMmand6.ENABLED=.f.
THISFORMmand7.ENABLED=.t.
ENDPROC
PROCEDURECommand7.Click
USEA:
\XJEXCLUSIVE
PACK
THISFORM.RELEASE
ENDPROC
PROCEDUREClick
IFEMPTY(THISFORM.combo1.VALUE)&&如果组合框1的值为空
=MESSAGEBOX("请选择学号!
",48+0+0,"学生学籍管理系统")&&系统给出内容为“请选择学号!
”的对话框
ENDIF
AA=RECNO()&&用显示记录号的函数将记录号赋给变量AA
GOAA&&将记录指针移到当前记录号
THISFORM.txt学号.REFRESH&&刷新学号文本框的内容
THISFORM.txt姓名.REFRESH&&刷新姓名文本框的内容
THISFORM.txt性别.REFRESH&&刷新性别文本框的内容
THISFORM.txt出生年月.REFRESH&&刷新出生年月文本框的内容
THISFORM.txt邮编.REFRESH&&刷新邮编文本框的内容
THISFORM.txt高数.REFRESH&&刷新高数文本框的内容
THISFORM.txt英语.REFRESH&&刷新英语文本框的内容
THISFORM.txtVfp.REFRESH&&刷新VFP文本框的内容
THISFORM.txt是否党员.REFRESH&&刷新是否党员文本框的内容
THISFORM.txt电话.REFRESH&&刷新电话文本框的内容
THISFORM.txt通信地址.REFRESH&&刷新通信地址文本框的内容
THISFORM.edt备注.REFRESH&&刷新备注编辑框的内容
THISFORMmand5.ENABLED=.t.
THISFORMmand6.ENABLED=.t.
ENDPROC(未完)
5、查询数据表单源代码(A:
\查询.sct)
PROCEDUREClick
IFEMPTY(THISFORM.combo1.VALUE)
=MESSAGEBOX("请选择学号!
",48+0+0,"学生学籍管理系统")
ENDIF
AA=RECNO()
GOAA
THISFORM.txt学号.REFRESH
THISFORM.txt姓名.REFRESH
THISFORM.txt性别.REFRESH
THISFORM.txt出生年月.REFRESH
THISFORM.txt邮编.REFRESH
THISFORM.txt高数.REFRESH
THISFORM.txt英语.REFRESH
THISFORM.txtVfp.REFRESH
THISFORM.txt是否党员.REFRESH
THISFORM.txt电话.REFRESH
THISFORM.txt通信地址.REFRESH
THISFORM.edt备注.REFRESH
ENDPROC
6、统计数据表单源代码(A:
\统计.sct)
PROCEDUREClick&&单击“统计记录总数”按钮时的事件过程
COUNTTOAAFOR是否党员="是"&&对党员计数,并将计数结果赋给变量AA
THISFORM.text5.value=AA&&将变量AA的值赋给文本框5
THISFORM.text5.REFRESH
ENDPROC
PROCEDUREClick&&单击“统计英语平均成绩”按钮时的事件过程
AVERAGE英语TOAA&&对所有记录的英语成绩求平均,并将平均值赋给变量AA
THISFORM.text3.value=AA&&将变量AA的值赋给文本框3
THISFORM.text3.REFRESH
ENDPROC
PROCEDUREClick&&单击“统计VFP平均成绩”按钮时的事件过程
AVERAGEvfpTOAA&&对所有记录的VFP成绩求平均,并将平均值赋给变量AA
THISFORM.text4.value=AA&&将变量AA的值赋给文本框4
THISFORM.text4.REFRESH
ENDPROC
PROCEDUREClick&&单击“统计总平均成绩”按钮时的事件过程
AVERAGE高数TOAA&&对所有记录的高数成绩求平均,并将平均值赋给变量AA
AVERAGE英语TOBB&&对所有记录的英语成绩求平均,并将平均值赋给变量BB
AVERAGEvfpTOCC&&对所有记录的VFP成绩求平均,并将平均值赋给变量CC
STORE(AA+BB+CC)/3TODD&&将三门成绩的平均成绩和除3的总平均成绩赋给DD
THISFORM.text6.value=DD&&将变量DD的值赋给文本框6
THISFORM.text6.REFRESH
ENDPROC
7、显示数据表单源代码(A:
\显示.sct)
PROCEDURECommand1.Click&&单击“上条”按钮的事件过程
IFNOTBOF()
SKIP-1
THISFORM.REFRESH
THISFORMmand2.ENABLED=.t.
ELSE
WAITWINDOW'已经是第一条记录了!
'
ENDIF
ENDPROC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 学籍 管理 系统 vfp 课程设计