学生学籍管理系统_第1页
学生学籍管理系统_第2页
学生学籍管理系统_第3页
学生学籍管理系统_第4页
学生学籍管理系统_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VFP应用程序设计实例-学生学籍管理系统(1)电脑笔记   2007-10-29 16:43   阅读2402   评论4   字号: 大大  中中  小小      图1MIS是英文Management Information System的英文缩写,意思是信息管理系统,该系统可用于中小型企事业单位业务处理和信息交流,从而大大提高了企业运作的效率。微软公司的Visual FoxPro可视化面向对象的编程软件是一个设计MIS系统即简单又快捷的好软

2、件。下面,就以VFP 6.0为开发环境,讲述设计学生学籍管理系统的详细设计过程,也为在看过了前面非表单设计的学生学籍管理系统的朋友们继续了解并学习采用表单(Form)的方式设计MIS系统的方法。    一、设计思路:学生学籍管理系统的运行以封面表单开始,如图1所示,要求用户输入登录密码,并设置三次检查功能,若三次输入的密码均有错,则自动退出系统;否则出现系统菜单,接收用户的操作,操作完毕后用户可以从系统菜单中退出系统。   二、系统功能:系统的功能主要分成十个功能模块,它们是:录入数据、修改数据、删除数据、查询数据、统计数据、显示数据、打印数据

3、、导出数据、导入数据和清空数据。录入数据可以实现学生信息的录入;修改数据可以实现学生信息的修改;删除数据可以实现学生数据的删除;查询数据可以实现学生信息的查询;统计数据可以实现学生人数、党员人数、学生总平均成绩、高数平均成绩、英语平均成绩和VFP平均成绩的统计;显示数据可以实现以字段分布和二维表两种方式显示学生信息;打印数据可以实现用报表的形式打印学生的信息;导出数据可以实现学生数据的备份,防止数据丢失;导入数据可以实现学生数据的还原,保证数据的正确性;清空数据可以实现学生数据的清空操作。 三、菜单结构框架图 四、数据库结构:(可定义表名为xj.dbf) 字段名 类型 宽度

4、 小数位数 学号 字符型 2   姓名 字符型 6   性别 字符型 2   出生年月字符型10邮编字符型6高数数值型51英语数值型51VFP数值型51是否党员字符型2电话字符型8通信地址字符型30备注备注型4 五、具体设计:(给出源代码,表单属性可参照图示在VFP属性框中设置,所有程序文件和表单文件均通过VFP项目管理器建立) 1、学生学籍管理系统主程序源代码(可定义程序名为main.prg) _SCREEN.WINDOWSTATE=2  &&设置窗口规格为第2种系统窗口 _SCREEN.CAPTION="学生学籍管

5、理系统"  &&设置窗口标题为“学生学籍管理系统” _SCREEN.CLOSABLE=.T.  &&去掉关闭按钮 _SCREEN.CONTROLBOX=.F.  &&去掉控制按钮 _SCREEN.MAXBUTTON=.F.  &&去掉最大化按钮 _SCREEN.MINBUTTON=.F.  &&去掉最小化按钮 _SCREEN.BACKCOLOR=RGB(50,100,128)  &&设置窗口的背景色 CLOSE ALL CLEAR

6、 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 F

7、oxpro的系统菜单的默认值 SET SYSMENU ON  &&显示Visual Foxpro的系统菜单 SET STATUS BAR ON  &&显示Visual Foxpro的状态栏 CLOSE ALL  &&关闭所有文件 CLEAR ALL RETURN  &&返回 2、封面表单源代码(A:封面.sct) PROCEDURE Click  &&确定按    钮的单击事件过程 SET EXACT ON  &&am

8、p;设置精确比较命令 IF THISFORM.text1.VALUE="8888"  &&如果文本框的值是8888        THISFORM.RELEASE  &&那么释放封面表单        DO A:菜单.MPX  &&运行菜单程序 ELSE  &&否则        THISFOR

9、M.NO=THISFORM.NO+1  &&将自定义属性NO的值由0加1        IF THISFORM.NO>=3  &&如果自定义属性NO的值为3        =MESSAGEBOX("密码三次输错,您不能使用本系统!",0+16+0,"学生学籍管理系统")  &&那么弹出内容为“密码三次输错,您不能使用本系统!”的对话框  

10、60;     QUIT  &&结束程序的运行        ELSE  &&否则        =MESSAGEBOX("密码错误!",48+0+0,"警告")  &&弹出内容为“密码错误!”的对话框        THISFORM.text1.VALUE=&

11、quot;"  &&设置文本框的内容为空        THISFORM.text1.SETFOCUS  &&并将光标定位到文本框中        THISFORM.REFRESH  &&刷新封面表单        ENDIF ENDIF SET EXACT OFF  &&设置关闭精确比较命令 ENDPR

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

13、钮为不可用状态 THISFORMmand5.ENABLED=.f.  &&设置第五个按钮为不可用状态 THISFORM.txt学号.ENABLED=.f.  &&设置学号文本框为不可用状态 THISFORM.txt姓名.ENABLED=.f.  &&设置姓名文本框为不可用状态 THISFORM.combo1.ENABLED=.f.  &&设置组合框1为不可用状态 THISFORM.combo2.ENABLED=.f.  &&设置组合框2为不可用状态 THISFORM

14、.combo3.ENABLED=.f.  &&设置组合框3为不可用状态 THISFORM.combo4.ENABLED=.f.  &&设置组合框4为不可用状态 THISFORM.txt邮编.ENABLED=.f.  &&设置邮编文本框为不可用状态 THISFORM.txt高数.ENABLED=.f.  &&设置高数文本框为不可用状态 THISFORM.txt英语.ENABLED=.f.  &&设置英语文本框为不可用状态 THISFORM.txtVfp.ENABLED

15、=.f.  &&设置VFP文本框为不可用状态 THISFORM.combo5.ENABLED=.f.  &&设置组合框5为不可用状态 THISFORM.txt电话.ENABLED=.f.  &&设置电话文本框为不可用状态 THISFORM.txt通信地址.ENABLED=.f.  &&设置通信地址文本框为不可用状态 THISFORM.edt备注.ENABLED=.f.  &&设置备注编辑框为不可用状态 ENDPROC PROCEDURE Load  &am

16、p;&录入数据表单的加载事件过程 CLOSE DATA  &&关闭所有数据库 USE A:XJ存 &&打开A盘中的XJ.DBF表文件 SET MULTILOCKS ON  &&设置锁定一组记录 =CURSORSETPROP('buffering',5,'XJ')  &&打开开放式表缓冲 ENDPROC PROCEDURE InteractiveChange  &&录入数据表单的交互改变事件过程 REPL 出生年月 WITH THISFO

17、RM.combo2.displayvalue+"."+THISFORM.combo3.displayvalue+"."+THISFORM.combo4.displayvalue  &&用组合框的值替换出生年月字段 THISFORM.REFRESH  &&刷新录入数据表单 ENDPROC PROCEDURE Command1.Click  &&单击命令按钮1的事件过程 APPEND BLANK  &&添加一空白记录 THISFORM.REFRESH

18、60; &&刷新录入数据表单 THISFORMmand1.ENABLED=.f.  &&设置命令按钮1为不可用状态 THISFORMmand2.ENABLED=.f.  &&设置命令按钮2为不可用状态 THISFORMmand3.ENABLED=.f.  &&设置命令按钮3为不可用状态 THISFORMmand4.ENABLED=.t.  &&设置命令按钮4为可用状态 THISFORMmand5.ENABLED=.t.  &&设置命令按钮5为可用状态

19、 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=

20、.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

21、=MESSAGEBOX('确实要删除这条记录?',4+32+256,'删除确认')  &&弹出内容为“确实要删除这条记录?”的对话框 DO CASE  &&运行条件判断语句 CASE YN=6  &&当单击“是”按钮时 =TABLEUPDATE(.T.)  &&执行更新表函数,删除当前记录 CASE YN=7  &&当单击“否”按钮时 RECALL  &&恢复已作了删除标记的当前记录 ENDCASE THIS

22、FORM.REFRESH ENDPROC PROCEDURE Command3.Click  &&单击命令按钮3的事件过程 THISFORMmand1.ENABLED=.f. THISFORMmand2.ENABLED=.f. THISFORMmand3.ENABLED=.f. THISFORMmand4.ENABLED=.t. THISFORMmand5.ENABLED=.t. THISFORMmand6.ENABLED=.f. ENDPROC PROCEDURE Command4.Click  &&单击命令按钮4的事件过程 =TABLEU

23、PDATE(.T.) THISFORMmand1.ENABLED=.t. THISFORMmand2.ENABLED=.t. THISFORMmand3.ENABLED=.t. THISFORMmand4.ENABLED=.f. THISFORMmand5.ENABLED=.f. THISFORMmand6.ENABLED=.t. ENDPROC PROCEDURE Command5.Click  &&单击命令按钮5的事件过程 =TABLEREVERT(.T.) THISFORMmand1.ENABLED=.t. THISFORMmand2.ENABLED=.t. T

24、HISFORMmand3.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数据表 PACK  &&彻底删除已作了删除标记的记录 THISFORM.RELEASE  &

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

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

27、IF ENDPROC PROCEDURE 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

28、Command5.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 PROCEDURE Command6.Click =TABLEREVERT(.T.)  &&启用表缓冲,放弃表中对所有记录所做的

29、修改函数 THISFORMmand1.ENABLED=.t. THISFORMmand2.ENABLED=.t. THISFORMmand3.ENABLED=.t. THISFORMmand4.ENABLED=.t. THISFORMmand5.ENABLED=.f. THISFORMmand6.ENABLED=.f. THISFORMmand7.ENABLED=.t. ENDPROC PROCEDURE Command7.Click USE A:XJ EXCLUSIVE PACK THISFORM.RELEASE ENDPROC PROCEDURE Click IF EMPTY(THISFO

30、RM.combo1.VALUE)  &&如果组合框1的值为空 =MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统")  &&系统给出内容为“请选择学号!”的对话框 ENDIF AA=RECNO()  &&用显示记录号的函数将记录号赋给变量AA GO AA  &&将记录指针移到当前记录号 THISFORM.txt学号.REFRESH  &&刷新学号文本框的内容 THISFORM.txt姓名.REFRESH

31、  &&刷新姓名文本框的内容 THISFORM.txt性别.REFRESH  &&刷新性别文本框的内容 THISFORM.txt出生年月.REFRESH  &&刷新出生年月文本框的内容 THISFORM.txt邮编.REFRESH  &&刷新邮编文本框的内容 THISFORM.txt高数.REFRESH  &&刷新高数文本框的内容 THISFORM.txt英语.REFRESH  &&刷新英语文本框的内容 THISFORM.txtVfp.RE

32、FRESH  &&刷新VFP文本框的内容 THISFORM.txt是否党员.REFRESH  &&刷新是否党员文本框的内容 THISFORM.txt电话.REFRESH  &&刷新电话文本框的内容 THISFORM.txt通信地址.REFRESH  &&刷新通信地址文本框的内容 THISFORM.edt备注.REFRESH  &&刷新备注编辑框的内容 THISFORMmand5.ENABLED=.t. THISFORMmand6.ENABLED=.t. ENDPRO

33、C  (未完) VFP应用程序设计实例-学生学籍管理系统(3)电脑笔记   2007-10-29 16:56   阅读2137   评论2   字号: 大大  中中  小小 5、查询数据表单源代码(A:查询.sct) 图4PROCEDURE Click IF EMPTY(THISFORM.combo1.VALUE) =MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统") ENDIF AA=RECNO() GO A

34、A 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、统计数据表

35、单源代码(A:统计.sct)图5PROCEDURE Click  &&单击“统计记录总数”按钮时的事件过程 COUNT TO AA FOR 是否党员="是"  &&对党员计数,并将计数结果赋给变量AA THISFORM.text5.value=AA  &&将变量AA的值赋给文本框5 THISFORM.text5.REFRESH ENDPROC PROCEDURE Click  &&单击“统计英语平均成绩”按钮时的事件过程 AVERAGE 英语 TO AA  &a

36、mp;&对所有记录的英语成绩求平均,并将平均值赋给变量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.tex

37、t4.REFRESH ENDPROC PROCEDURE Click  &&单击“统计总平均成绩”按钮时的事件过程 AVERAGE 高数 TO AA  &&对所有记录的高数成绩求平均,并将平均值赋给变量AA AVERAGE 英语 TO BB  &&对所有记录的英语成绩求平均,并将平均值赋给变量BB AVERAGE vfp TO CC  &&对所有记录的VFP成绩求平均,并将平均值赋给变量CC STORE (AA+BB+CC)/3 TO DD  &&将三门成绩的平均成

38、绩和除3的总平均成绩赋给DD THISFORM.text6.value=DD  &&将变量DD的值赋给文本框6 THISFORM.text6.REFRESH ENDPROC 7、显示数据表单源代码(A:显示.sct) 图6PROCEDURE Command1.Click  &&单击“上条”按钮的事件过程 IF NOT BOF() SKIP -1 THISFORM.REFRESH THISFORMmand2.ENABLED=.t. ELSE WAIT WINDOW '已经是第一条记录了!' ENDIF ENDPROC

39、PROCEDURE Command2.Click  &&单击“下条”按钮的事件过程 IF NOT EOF() SKIP THISFORM.REFRESH THISFORMmand1.ENABLED=.t. ELSE WAIT WINDOW '已经是最后一条记录了!' ENDIF ENDPROC PROCEDURE Command3.Click  &&单击“首条”按钮的事件过程 GO TOP THISFORM.REFRESH THISFORMmand1.ENABLED=.f. THISFORMmand2.ENABLED=.t.

40、ENDPROC PROCEDURE Command4.Click  &&单击“末条”按钮的事件过程 GO BOTTOM THISFORM.REFRESH THISFORMmand1.ENABLED=.t. THISFORMmand2.ENABLED=.f. ENDPROC PROCEDURE Command5.Click  &&单击“返回”按钮的事件过程 THISFORM.RELEASE ENDPROC 8、删除数据表单源代码(A:删除.sct) 图7PROCEDURE Click  &&单击“显示”按钮的

41、事件过程 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出生年月.REFRESH THISFORM.txt邮编.REFRES

42、H 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,'删除确认'

43、;) 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.com

44、mand2.ENABLED=.f. ENDPROC PROCEDURE Click USE A:XJ EXCLUSIVE PACK THISFORM.RELEASE ENDPROC   (未完) VFP应用程序设计实例-学生学籍管理系统(4)电脑笔记   2007-10-29 16:58   阅读3624   评论4   字号: 大大  中中  小小 9、导出数据表单源代码(A:导出.sct) 图8PROCEDURE Click  &&单击“确定”按

45、钮的事件过程 SET SAFETY OFF  &&覆盖文件时不提示确认 USE A:XJ GO TOP IF EMPTY(THISFORM.combo1.VALUE) =MESSAGEBOX("请选择盘符!",48+0+0,"学生学籍管理系统") ELSE    IF EMPTY(THISFORM.text1.VALUE)    =MESSAGEBOX("请输入文件名!",48+0+0,"学生学籍管理系统")    ELSE &#

46、160;     IF RECC()>0  &&如果表记录大于0       DRIVER=THISFORM.COMBO1.DISPLAYVALUE  &&将组合框1的值赋给变量DRIVER       FILENAME=ALLTRIM(THISFORM.TEXT1.TEXT)  &&将去掉空格的文件名赋给变量FILENAME     

47、;  COPY TO &DRIVER&FILENAME  &&将系统表文件复制到选定的盘符和文件名中       =MESSAGEBOX("本系统所有数据已转出完毕!",48,"信息提示")       USE       THISFORM.RELEASE       ELSE       =MESSAGEBOX("

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论