VFP应用程序设计实例--学生学籍管理系统.doc

上传人:asd****56 文档编号:70338326 上传时间:2023-01-19 格式:DOC 页数:25 大小:432.50KB
返回 下载 相关 举报
VFP应用程序设计实例--学生学籍管理系统.doc_第1页
第1页 / 共25页
VFP应用程序设计实例--学生学籍管理系统.doc_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《VFP应用程序设计实例--学生学籍管理系统.doc》由会员分享,可在线阅读,更多相关《VFP应用程序设计实例--学生学籍管理系统.doc(25页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、VFP应用程序设计实例-学生学籍管理系统(1)电脑笔记 2007-10-29 16:43 阅读2402评论4 字号: 大大 中中 小小 图1MIS是英文Management Information System的英文缩写,意思是信息管理系统,该系统可用于中小型企事业单位业务处理和信息交流,从而大大提高了企业运作的效率。微软公司的VisualFoxPro可视化面向对象的编程软件是一个设计MIS系统即简单又快捷的好软件。下面,就以VFP 6.0为开发环境,讲述设计学生学籍管理系统的详细设计过程,也为在看过了前面非表单设计的学生学籍管理系统的朋友们继续了解并学习采用表单(Form)的方式设计MIS系

2、统的方法。一、设计思路:学生学籍管理系统的运行以封面表单开始,如图1所示,要求用户输入登录密码,并设置三次检查功能,若三次输入的密码均有错,则自动退出系统;否则出现系统菜单,接收用户的操作,操作完毕后用户可以从系统菜单中退出系统。 二、系统功能:系统的功能主要分成十个功能模块,它们是:录入数据、修改数据、删除数据、查询数据、统计数据、显示数据、打印数据、导出数据、导入数据和清空数据。录入数据可以实现学生信息的录入;修改数据可以实现学生信息的修改;删除数据可以实现学生数据的删除;查询数据可以实现学生信息的查询;统计数据可以实现学生人数、党员人数、学生总平均成绩、高数平均成绩、英语平均成绩和VFP

3、平均成绩的统计;显示数据可以实现以字段分布和二维表两种方式显示学生信息;打印数据可以实现用报表的形式打印学生的信息;导出数据可以实现学生数据的备份,防止数据丢失;导入数据可以实现学生数据的还原,保证数据的正确性;清空数据可以实现学生数据的清空操作。三、菜单结构框架图四、数据库结构:(可定义表名为xj.dbf) 字段名 类型 宽度 小数位数 学号 字符型 2 姓名 字符型 6 性别 字符型 2 出生年月字符型10邮编字符型6高数数值型51英语数值型51VFP数值型51是否党员字符型2电话字符型8通信地址字符型30备注备注型4五、具体设计:(给出源代码,表单属性可参照图示在VFP属性框中设置,所有

4、程序文件和表单文件均通过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) &设置窗

5、口的背景色 CLOSE ALL CLEAR ALL CLEAR SET SYSMENU OFF SET SYSMENU TO SET TALK OFF SET SAFETY OFF SET STATUS BAR OFF &关闭Visual Foxpro的状态栏 DO FORM A:封面.SCX &调用系统登录“封面”表单 READ EVENT &响应用户输入 DO A:菜单.MPX &运行系统菜单 READ EVENT SET SYSMENU TO DEFAULT &恢复Visual Foxpro的系统菜单的默认值 SET SYSMENU ON &显示Visual Foxpro的系统菜单 SE

6、T STATUS BAR ON &显示Visual Foxpro的状态栏 CLOSE ALL &关闭所有文件 CLEAR ALL RETURN &返回 2、封面表单源代码(A:封面.sct) PROCEDURE Click &确定按 钮的单击事件过程 SET EXACT ON &设置精确比较命令 IF THISFORM.text1.VALUE=8888 &如果文本框的值是8888 THISFORM.RELEASE &那么释放封面表单 DO A:菜单.MPX &运行菜单程序 ELSE &否则 THISFORM.NO=THISFORM.NO+1 &将自定义属性NO的值由0加1 IF THISFOR

7、M.NO=3 &如果自定义属性NO的值为3 =MESSAGEBOX(密码三次输错,您不能使用本系统!,0+16+0,学生学籍管理系统) &那么弹出内容为“密码三次输错,您不能使用本系统!”的对话框 QUIT &结束程序的运行 ELSE &否则 =MESSAGEBOX(密码错误!,48+0+0,警告) &弹出内容为“密码错误!”的对话框 THISFORM.text1.VALUE= &设置文本框的内容为空 THISFORM.text1.SETFOCUS &并将光标定位到文本框中 THISFORM.REFRESH &刷新封面表单 ENDIF ENDIF SET EXACT OFF &设置关闭精确比较

8、命令 ENDPROC PROCEDURE Click &取消按钮的单击事件过程 THISFORM.RELEASE &释放封面表单 CLOSE ALL &关闭所有文件 CLEAR EVENT quit ENDPROC (未完) 图2 3、录入数据表单源代码(A:录入.sct,如图2所示) PROCEDURE Init &录入数据表单的初始化事件过程 SET TALK OFF THISFORMmand4.ENABLED=.f. &设置第四个按钮为不可用状态 THISFORMmand5.ENABLED=.f. &设置第五个按钮为不可用状态 THISFORM.txt学号.ENABLED=.f. &设置

9、学号文本框为不可用状态 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. &设置高数文本框为

10、不可用状态 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 PROCEDURE Load &录入数据表单的加载事件过

11、程 CLOSE DATA &关闭所有数据库 USE A:XJ存 &打开A盘中的XJ.DBF表文件 SET MULTILOCKS ON &设置锁定一组记录 =CURSORSETPROP(buffering,5,XJ) &打开开放式表缓冲 ENDPROC PROCEDURE InteractiveChange &录入数据表单的交互改变事件过程 REPL 出生年月 WITH THISFORM.combo2.displayvalue+.+THISFORM.combo3.displayvalue+.+THISFORM.combo4.displayvalue &用组合框的值替换出生年月字段 THISFOR

12、M.REFRESH &刷新录入数据表单 ENDPROC PROCEDURE Command1.Click &单击命令按钮1的事件过程 APPEND BLANK &添加一空白记录 THISFORM.REFRESH &刷新录入数据表单 THISFORMmand1.ENABLED=.f. &设置命令按钮1为不可用状态 THISFORMmand2.ENABLED=.f. &设置命令按钮2为不可用状态 THISFORMmand3.ENABLED=.f. &设置命令按钮3为不可用状态 THISFORMmand4.ENABLED=.t. &设置命令按钮4为可用状态 THISFORMmand5.ENABLED

13、=.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英语.ENABL

14、ED=.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 PROCEDURE Command2.Click &单击命令按钮2的事件过程 SET DELETE ON &设置打开删除命令 DELETE &删除当前记录 YN=MESSAGEBOX(确实要删除这条记录?,4+32+256,删除确认) &弹出内

15、容为“确实要删除这条记录?”的对话框 DO CASE &运行条件判断语句 CASE YN=6 &当单击“是”按钮时 =TABLEUPDATE(.T.) &执行更新表函数,删除当前记录 CASE YN=7 &当单击“否”按钮时 RECALL &恢复已作了删除标记的当前记录 ENDCASE THISFORM.REFRESH ENDPROC PROCEDURE Command3.Click &单击命令按钮3的事件过程 THISFORMmand1.ENABLED=.f. THISFORMmand2.ENABLED=.f. THISFORMmand3.ENABLED=.f. THISFORMmand4.

16、ENABLED=.t. THISFORMmand5.ENABLED=.t. THISFORMmand6.ENABLED=.f. ENDPROC PROCEDURE Command4.Click &单击命令按钮4的事件过程 =TABLEUPDATE(.T.) THISFORMmand1.ENABLED=.t. THISFORMmand2.ENABLED=.t. THISFORMmand3.ENABLED=.t. THISFORMmand4.ENABLED=.f. THISFORMmand5.ENABLED=.f. THISFORMmand6.ENABLED=.t. ENDPROC PROCEDU

17、RE Command5.Click &单击命令按钮5的事件过程 =TABLEREVERT(.T.) THISFORMmand1.ENABLED=.t. THISFORMmand2.ENABLED=.t. THISFORMmand3.ENABLED=.t. THISFORMmand4.ENABLED=.f. THISFORMmand5.ENABLED=.f. THISFORMmand6.ENABLED=.t. ENDPROC PROCEDURE Command6.Click &单击命令按钮6的事件过程 SELE 1 &选择1号工作区 USE A:XJ EXCLUSIVE 打开A盘中的XJ.DBF

18、数据表 PACK &彻底删除已作了删除标记的记录 THISFORM.RELEASE &释放录入数据表单 ENDPROC PROCEDURE InteractiveChange REPL 是否党员 WITH THISFORM.combo5.DISPLAYVALUE &用组合框的值替换是否党员字段 THISFORM.REFRESH ENDPROC 4、修改数据表单源代码(A:修改.sct)图3PROCEDURE Command1.Click IF NOT BOF() &如果记录指针没有到记录的开头 SKIP 1 &向上跳转一个记录 THISFORM.REFRESH THISFORMmand2.EN

19、ABLED=.t. ELSE WAIT WINDOW 已经是第一条记录了! &系统给出内容为“已经是第一条记录了!”提示窗口 ENDIF ENDPROC PROCEDURE Command2.Click IF NOT EOF() &如果记录指针没有到记录的结尾 SKIP &向下跳转一个记录 THISFORM.REFRESH THISFORMmand1.ENABLED=.t. ELSE WAIT WINDOW 已经是最后一条记录了! ENDIF ENDPROC PROCEDURE Command3.Click GO TOP &将记录指针移到记录的开头 THISFORM.REFRESH THISF

20、ORMmand1.ENABLED=.f. THISFORMmand2.ENABLED=.t. ENDPROC PROCEDURE Command4.Click GO BOTTOM &将记录指针移到记录的结尾 THISFORM.REFRESH THISFORMmand1.ENABLED=.t. THISFORMmand2.ENABLED=.f. ENDPROC PROCEDURE Command5.Click =TABLEUPDATE(.T.) THISFORMmand1.ENABLED=.t. THISFORMmand2.ENABLED=.t. THISFORMmand3.ENABLED=.t

21、. THISFORMmand4.ENABLED=.t. THISFORMmand5.ENABLED=.f. THISFORMmand6.ENABLED=.f. THISFORMmand7.ENABLED=.t. ENDPROC PROCEDURE Command6.Click =TABLEREVERT(.T.) &启用表缓冲,放弃表中对所有记录所做的修改函数 THISFORMmand1.ENABLED=.t. THISFORMmand2.ENABLED=.t. THISFORMmand3.ENABLED=.t. THISFORMmand4.ENABLED=.t. THISFORMmand5.E

22、NABLED=.f. THISFORMmand6.ENABLED=.f. THISFORMmand7.ENABLED=.t. ENDPROC PROCEDURE Command7.Click USE A:XJ EXCLUSIVE PACK THISFORM.RELEASE ENDPROC PROCEDURE Click IF EMPTY(THISFORM.combo1.VALUE) &如果组合框1的值为空 =MESSAGEBOX(请选择学号!,48+0+0,学生学籍管理系统) &系统给出内容为“请选择学号!”的对话框 ENDIF AA=RECNO() &用显示记录号的函数将记录号赋给变量AA

23、GO AA &将记录指针移到当前记录号 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文

24、本框的内容 THISFORM.txt是否党员.REFRESH &刷新是否党员文本框的内容 THISFORM.txt电话.REFRESH &刷新电话文本框的内容 THISFORM.txt通信地址.REFRESH &刷新通信地址文本框的内容 THISFORM.edt备注.REFRESH &刷新备注编辑框的内容 THISFORMmand5.ENABLED=.t. THISFORMmand6.ENABLED=.t. ENDPROC (未完) VFP应用程序设计实例-学生学籍管理系统(3)电脑笔记 2007-10-29 16:56 阅读2137评论2 字号: 大大 中中 小小 5、查询数据表单源代码(A

25、:查询.sct)图4PROCEDURE Click IF EMPTY(THISFORM.combo1.VALUE) =MESSAGEBOX(请选择学号!,48+0+0,学生学籍管理系统) ENDIF AA=RECNO() GO AA THISFORM.txt学号.REFRESH THISFORM.txt姓名.REFRESH THISFORM.txt性别.REFRESH THISFORM.txt出生年月.REFRESH THISFORM.txt邮编.REFRESH THISFORM.txt高数.REFRESH THISFORM.txt英语.REFRESH THISFORM.txtVfp.REFR

26、ESH THISFORM.txt是否党员.REFRESH THISFORM.txt电话.REFRESH THISFORM.txt通信地址.REFRESH THISFORM.edt备注.REFRESH ENDPROC 6、统计数据表单源代码(A:统计.sct)图5PROCEDURE Click &单击“统计记录总数”按钮时的事件过程 COUNT TO AA FOR 是否党员=是 &对党员计数,并将计数结果赋给变量AA THISFORM.text5.value=AA &将变量AA的值赋给文本框5 THISFORM.text5.REFRESH ENDPROC PROCEDURE Click &单击“

27、统计英语平均成绩”按钮时的事件过程 AVERAGE 英语 TO AA &对所有记录的英语成绩求平均,并将平均值赋给变量AA THISFORM.text3.value=AA &将变量AA的值赋给文本框3 THISFORM.text3.REFRESH ENDPROC PROCEDURE Click &单击“统计VFP平均成绩”按钮时的事件过程 AVERAGE vfp TO AA &对所有记录的VFP成绩求平均,并将平均值赋给变量AA THISFORM.text4.value=AA &将变量AA的值赋给文本框4 THISFORM.text4.REFRESH ENDPROC PROCEDURE Cli

28、ck &单击“统计总平均成绩”按钮时的事件过程 AVERAGE 高数 TO AA &对所有记录的高数成绩求平均,并将平均值赋给变量AA AVERAGE 英语 TO BB &对所有记录的英语成绩求平均,并将平均值赋给变量BB AVERAGE vfp TO CC &对所有记录的VFP成绩求平均,并将平均值赋给变量CC STORE (AA+BB+CC)/3 TO DD &将三门成绩的平均成绩和除3的总平均成绩赋给DD THISFORM.text6.value=DD &将变量DD的值赋给文本框6 THISFORM.text6.REFRESH ENDPROC 7、显示数据表单源代码(A:显示.sct)图

29、6PROCEDURE Command1.Click &单击“上条”按钮的事件过程 IF NOT BOF() SKIP -1 THISFORM.REFRESH THISFORMmand2.ENABLED=.t. ELSE WAIT WINDOW 已经是第一条记录了! ENDIF ENDPROC PROCEDURE Command2.Click &单击“下条”按钮的事件过程 IF NOT EOF() SKIP THISFORM.REFRESH THISFORMmand1.ENABLED=.t. ELSE WAIT WINDOW 已经是最后一条记录了! ENDIF ENDPROC PROCEDURE

30、 Command3.Click &单击“首条”按钮的事件过程 GO TOP THISFORM.REFRESH THISFORMmand1.ENABLED=.f. THISFORMmand2.ENABLED=.t. ENDPROC PROCEDURE Command4.Click &单击“末条”按钮的事件过程 GO BOTTOM THISFORM.REFRESH THISFORMmand1.ENABLED=.t. THISFORMmand2.ENABLED=.f. ENDPROC PROCEDURE Command5.Click &单击“返回”按钮的事件过程 THISFORM.RELEASE E

31、NDPROC 8、删除数据表单源代码(A:删除.sct)图7PROCEDURE Click &单击“显示”按钮的事件过程 IF EMPTY(THISFORM.combo1.VALUE) =MESSAGEBOX(请选择学号!,48+0+0,学生学籍管理系统) THISFORM.command2.ENABLED=.f. ELSE THISFORM.command2.ENABLED=.t. ENDIF AA=RECNO() GO AA THISFORM.txt学号.REFRESH THISFORM.txt姓名.REFRESH THISFORM.txt性别.REFRESH THISFORM.txt出生

32、年月.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 PROCEDURE Click &单击“删除”按钮的事件过程 SET DELETE ON DELETE YN=MESSAGEBOX(确实要删除这条记录?,4+32+256,删除确认)

33、DO CASE CASE YN=6 =TABLEUPDATE(.T.) =MESSAGEBOX(记录已成功删除!,0+64+0,学生学籍管理系统) THISFORM.command2.ENABLED=.f. THISFORM.combo1.DISPLAYVALUE=请选择 GO TOP CASE YN=7 RECALL ENDCASE THISFORM.REFRESH ENDPROC PROCEDURE Init &删除数据表单的初始化过程 SET TALK OFF THISFORM.command2.ENABLED=.f. ENDPROC PROCEDURE Click USE A:XJ E

34、XCLUSIVE PACK THISFORM.RELEASE ENDPROC (未完) VFP应用程序设计实例-学生学籍管理系统(4)电脑笔记 2007-10-29 16:58 阅读3624评论4 字号: 大大 中中 小小 9、导出数据表单源代码(A:导出.sct)图8PROCEDURE Click &单击“确定”按钮的事件过程 SET SAFETY OFF &覆盖文件时不提示确认 USE A:XJ GO TOP IF EMPTY(THISFORM.combo1.VALUE) =MESSAGEBOX(请选择盘符!,48+0+0,学生学籍管理系统) ELSE IF EMPTY(THISFORM.

35、text1.VALUE) =MESSAGEBOX(请输入文件名!,48+0+0,学生学籍管理系统) ELSE IF RECC()0 &如果表记录大于0 DRIVER=THISFORM.COMBO1.DISPLAYVALUE &将组合框1的值赋给变量DRIVER FILENAME=ALLTRIM(THISFORM.TEXT1.TEXT) &将去掉空格的文件名赋给变量FILENAME COPY TO &DRIVER&FILENAME &将系统表文件复制到选定的盘符和文件名中 =MESSAGEBOX(本系统所有数据已转出完毕!,48,信息提示) USE THISFORM.RELEASE ELSE =

36、MESSAGEBOX(没有任何数据,不能转出,48,信息提示) USE THISFORM.RELEASE ENDIF ENDIF ENDIF ENDPROC PROCEDURE Click &单击“取消”按钮的事件过程 RELEASE THISFORM ENDPROC 10、导入数据表单源代码(A:导入.sct)图9PROCEDURE Click &单击“确定”按钮的事件过程 SET SAFETY OFF IF EMPTY(THISFORM.combo1.VALUE) =MESSAGEBOX(请选择要导入的数据表所在的盘符!,48+0+0,学生学籍管理系统) THISFORM.text1.SE

37、TFOCUS ELSE IF EMPTY(THISFORM.text1.VALUE) =MESSAGEBOX(请输入要导入的数据表名!,48+0+0,学生学籍管理系统) ELSE DRIVER=THISFORM.combo1.VALUE FILENAME=ALLTRIM(THISFORM.TEXT1.VALUE) USE A:XJ ? &打印一空行 ON ERROR ? MESSAGE() &发生找不到文件的错误时,打印错误信息 APPEND FROM &DRIVER&FILENAME &将选定的文件追加到系统表文件中 =MESSAGEBOX(数据表已成功导入原表!,0+64+0,学生学籍管理

38、系统) USE THISFORM.RELEASE ENDIF ENDIF ENDPROC11、打印数据表单源代码(A:打印.sct)图10PROCEDURE Command1.Click ?CHR(7) REPORT FORM A:学生学籍管理表.frx NOEJECT NOCONSOLE TO PRINTER ENDPROC PROCEDURE Command2.Click REPORT FORM A:学生学籍管理表.frx PREVIEW ENDPROC PROCEDURE Command3.Click THISFORM.RELEASE ENDPROC 学生学籍管理系统的开发和应用,可以提高学校的管理水平。学校办公效率可以有很大的提高,为学校的信息管理提供了一个良好的工具,化简了繁琐的工作模式,从而使得学校的管理更加合理化和科学化。良好的管理信息系统节省了大量的人力和物力,也避免了大量重复性工作。高效的管理信息系统也为工作人员提高自身的计算机水平提供了机会,每个人都应该适应社会高新技术的发展,努力追赶科技潮流。在学生学籍管理系统的设计和开发工作中,也存在着诸如程序难免有一些错误和不足等,欢迎朋友们看过文章后能够提出宝贵的意见和建议

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com