VFP数据库系统开发实例(附图)
VFP第3章数据库与表的创建及使用PPT课件
命令方式
◦ USE [IN 别名|工作区]
关闭所有的表
◦ CLOSE TABLES ALL ◦ CLOSE DATABASE ALL ◦ CLOSE ALL
【注】在退出Visual FoxPro系统时,所有的表都将 被关闭。
2021/2/10
23
5. 表的独占与共享
设置独占与共享打开表的默认状态 ①工具→选项→数据 ②SET EXCLUSIVE ON→默认“共享”打开 SET EXCLUSIVE OFF→默认“独占”打开
在VFP中,表使用前必须打开。表的打开可以是 显式打开,也可以是隐式打开。
显示打开 用菜单等界面操作方法或USE命令直接 打开表
隐式打开 指在执行某些操作时系统会自动打开 相应的表。如在项目管理器窗口中选择一个表后 单击“修改”或“浏览”按钮时,会自动打开表 ;在执行SELECT-SQL语句进行查询时,也会自 动打开数据源表等。
常删除,这样才能删除数据库中所包含的表的链接信 息,数据库表将自动变成自由表。否则,只能用命令 FREE TABLE 强行解除数据库与表间的链接,将表变 成自由表。
2021/2/10
12
VFP中的表(Table)是指存放在磁盘文件中的一张 二维表,通常用来描述一个实体。
表中的一列称为字段(Field),字段规定了数据的特 征。
新建的数据库,保存后自动以独占方式打开;
打开数据库中的表,系统会自动打开相应的数据库;
在项目管理器中选择一个数据库并单击“修改”按钮 ;
OPEN DATABASE [DatabaseName] [EXCLUSIVE|SHARED][NOUPDATE][VALIDATE]
打开多个数据库可重复进行数据库打开操作即可,系 统默认最后一个打开的数据库为当前数据库。
管理数据库VFP常见编程实例
程序设计实例(一)建立//编辑自由表结构(1)表设计器:(2)命令(3)SQL(二)自由表_ 添加新记录(1)输入框(2)程序*.prg(3)表单*.scx录入李国防同学的信息05001 李国防男05/12/87 营销学598 营销在[E:\ vfp实验] 文件夹中保存一份王码个人简历“李国防简历.txt”文档和一张李国防个人相片“李国防.bmp”。
员工(员工编号 C(4),姓名 C(8),性别 C(2),出生日期 D(8),职务 C(10),工资 N(7,2),简历 M(4),相片 G(4))准备建立一张“员工.dbf”一建立表单1建立form,标签,文本框,单选钮组,组合框,微调框,编辑框,图象框命令按钮2属性设置*.caption=Combo1捆绑数据列表(经理、班长、销售员) 二建立数据环境添加“员工.dbf”三对象事件过程[form_load]:定义公共变量[浏览]:选择员工的相片[添加]:选择当前表“员工.dbf”, 数组元素接收各控件的当前值将数组写入员工.dbf表尾记录[取消]:清除各控件值[退出]:释放表单四运行[form_load]:定义公共变量public p,public array a(7)p=“”[浏览]:选择员工的相片p=getpict()"&p"[添加]:接收各控件的当前值,然后将数组写入员工.dbf表尾记录a(1)=a(2)=Ifa(3)="男"elsea(3)="女"endifcsrq="{^"+"}"a(4)=&csrqa(5)=a(6)= a(7)=select 员工Append from array a fields 员工编号,姓名,性别,出生日期,职务,工资if empty(replace 简历 with a(7) addiendifif empty(p)=.f.append gene 相片 from "&p"endif[取消]:清除各控件值""""""""""P=“”[退出]:释放表单thisform.release(三)记录数据的计算(1)命令:(2)prg程序(3)表单*.scx在VFP系统的默认文件夹中有数据“表”如图,要求统计并显示男同学的人数、总分、平均入学成绩。
12vfp系统开发实例.ppt
需求分析
数据分析
功能分析
数据库设计 应用程序设计
系统调试
是否满意?
N
Y
系统运行与维护
湖南文理学院电信学院——叶华
3
1.数据库设计步骤
分析数据需求 收集和规划数据
.尽量避免数据的重复,可减少更 改数据时出错的可能性;
.对数据合理分类,明确表的个数 及其需存储的信息; .防止删除有用的信息。
湖南文理学院电信学院——叶华
15
12.2.4 运行设计
一、装载数据:打开相应的数据表,并输 入数据。
二 、 设 置 应 用 系 统 程 序 项 : 在 windows 的 开始菜单中建立程序项来运行应用程序。
湖南文理学院电信学院——叶华
16
日期,小时工资) 零件用量:LJYL(编号,零件号,数量) 零件库存:LJKC(零件号,零件名,成本,价格,库存量,
最低库存,订货量)
湖南文理学院电信学院——叶华
11
(2)建立表之间的关联。
牌 号
汽车
车主名 车主
修理单
工 号
编 号
二、物理设计
修理工
零件号
零件用量
零件库存
数据库的物理设计就是用指定的软件来创建 数据库,定义数据库表,以及表之间的关联。
使用VFP生成汽车修理管理系统的6张数据表, 并为各个数据表建立索引。
湖南文理学院电信学院——叶华
12
12.2.3 应用程序设计
一、总体设计
汽车修理管理系统
登记
零件管理
查询 打印
修车 汽车 修理工
零件
零件 零件
登记 修理 管理 订货计划 入库 出库
发
VFP应用程序设计实例
VFP应用程序设计实例--学生学籍管理系统(1)电脑笔记2007-10-29 16:43:36 阅读2795 评论5 字号:大中小图1MIS是英文Management Information System的英文缩写,意思是信息管理系统,该系统可用于中小型企事业单位业务处理和信息交流,从而大大提高了企业运作的效率。
微软公司的VisualFoxPro可视化面向对象的编程软件是一个设计MIS系统即简单又快捷的好软件。
下面,就以VFP 6.0为开发环境,讲述设计学生学籍管理系统的详细设计过程,也为在看过了前面非表单设计的学生学籍管理系统的朋友们继续了解并学习采用表单(Form)的方式设计MIS系统的方法。
一、设计思路:学生学籍管理系统的运行以封面表单开始,如图1所示,要求用户输入登录密码,并设置三次检查功能,若三次输入的密码均有错,则自动退出系统;否则出现系统菜单,接收用户的操作,操作完毕后用户可以从系统菜单中退出系统。
二、系统功能:系统的功能主要分成十个功能模块,它们是:录入数据、修改数据、删除数据、查询数据、统计数据、显示数据、打印数据、导出数据、导入数据和清空数据。
录入数据可以实现学生信息的录入;修改数据可以实现学生信息的修改;删除数据可以实现学生数据的删除;查询数据可以实现学生信息的查询;统计数据可以实现学生人数、党员人数、学生总平均成绩、高数平均成绩、英语平均成绩和VFP平均成绩的统计;显示数据可以实现以字段分布和二维表两种方式显示学生信息;打印数据可以实现用报表的形式打印学生的信息;导出数据可以实现学生数据的备份,防止数据丢失;导入数据可以实现学生数据的还原,保证数据的正确性;清空数据可以实现学生数据的清空操作。
三、菜单结构框架图四、数据库结构:(可定义表名为xj.dbf)字段名类型宽度小数位数学号字符型 2姓名字符型 6五、具体设计:(给出源代码,表单属性可参照图示在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) &&设置窗口的背景色CLOSE ALLCLEAR ALLCLEARSET SYSMENU OFFSET SYSMENU TOSET TALK OFFSET SAFETY OFFSET STATUS BAR OFF &&关闭Visual Foxpro的状态栏DO FORM A:\封面.SCX &&调用系统登录“封面”表单READ EVENT &&响应用户输入DO A:\菜单.MPX &&运行系统菜单READ EVENTSET SYSMENU TO DEFAULT &&恢复Visual Foxpro的系统菜单的默认值SET SYSMENU ON &&显示Visual Foxpro的系统菜单SET STATUS BAR ON &&显示Visual Foxpro的状态栏CLOSE ALL &&关闭所有文件CLEAR ALLRETURN &&返回2、封面表单源代码(A:\封面.sct)PROCEDURE Click &&确定按钮的单击事件过程SET EXACT ON &&设置精确比较命令IF THISFORM.text1.VALUE="8888" &&如果文本框的值是8888THISFORM.RELEASE &&那么释放封面表单DO A:\菜单.MPX &&运行菜单程序ELSE &&否则THISFORM.NO=THISFORM.NO+1 &&将自定义属性NO的值由0加1IF THISFORM.NO>=3 &&如果自定义属性NO的值为3=MESSAGEBOX("密码三次输错,您不能使用本系统!",0+16+0,"学生学籍管理系统") &&那么弹出内容为“密码三次输错,您不能使用本系统!”的对话框QUIT &&结束程序的运行ELSE &&否则=MESSAGEBOX("密码错误!",48+0+0,"警告") &&弹出内容为“密码错误!”的对话框THISFORM.text1.VALUE="" &&设置文本框的内容为空THISFORM.text1.SETFOCUS &&并将光标定位到文本框中THISFORM.REFRESH &&刷新封面表单ENDIFENDIFSET EXACT OFF &&设置关闭精确比较命令ENDPROCPROCEDURE Click &&取消按钮的单击事件过程THISFORM.RELEASE &&释放封面表单CLOSE ALL &&关闭所有文件CLEAR EVENTquitENDPROC (未完)VFP应用程序设计实例--学生学籍管理系统(2)电脑笔记2007-10-29 16:54:06 阅读3360 评论0 字号:大中小图23、录入数据表单源代码(A:\录入.sct,如图2所示)PROCEDURE Init &&录入数据表单的初始化事件过程SET TALK OFFmand4.ENABLED=.f. &&设置第四个按钮为不可用状态mand5.ENABLED=.f. &&设置第五个按钮为不可用状态THISFORM.txt学号.ENABLED=.f. &&设置学号文本框为不可用状态THISFORM.txt姓名.ENABLED=.f. &&设置姓名文本框为不可用状态bo1.ENABLED=.f. &&设置组合框1为不可用状态bo2.ENABLED=.f. &&设置组合框2为不可用状态bo3.ENABLED=.f. &&设置组合框3为不可用状态bo4.ENABLED=.f. &&设置组合框4为不可用状态THISFORM.txt邮编.ENABLED=.f. &&设置邮编文本框为不可用状态THISFORM.txt高数.ENABLED=.f. &&设置高数文本框为不可用状态THISFORM.txt英语.ENABLED=.f. &&设置英语文本框为不可用状态THISFORM.txtVfp.ENABLED=.f. &&设置VFP文本框为不可用状态bo5.ENABLED=.f. &&设置组合框5为不可用状态THISFORM.txt电话.ENABLED=.f. &&设置电话文本框为不可用状态THISFORM.txt通信地址.ENABLED=.f. &&设置通信地址文本框为不可用状态THISFORM.edt备注.ENABLED=.f. &&设置备注编辑框为不可用状态ENDPROCPROCEDURE Load &&录入数据表单的加载事件过程CLOSE DATA &&关闭所有数据库USE A:\XJ存 &&打开A盘中的XJ.DBF表文件SET MULTILOCKS ON &&设置锁定一组记录=CURSORSETPROP('buffering',5,'XJ') &&打开开放式表缓冲ENDPROCPROCEDURE InteractiveChange &&录入数据表单的交互改变事件过程REPL 出生年月 WITHbo2.displayvalue+"."+bo3.displayvalue+"."+ bo4.displayvalue &&用组合框的值替换出生年月字段THISFORM.REFRESH &&刷新录入数据表单ENDPROCPROCEDURE Command1.Click &&单击命令按钮1的事件过程APPEND BLANK &&添加一空白记录THISFORM.REFRESH &&刷新录入数据表单mand1.ENABLED=.f. &&设置命令按钮1为不可用状态mand2.ENABLED=.f. &&设置命令按钮2为不可用状态mand3.ENABLED=.f. &&设置命令按钮3为不可用状态mand4.ENABLED=.t. &&设置命令按钮4为可用状态mand5.ENABLED=.t. &&设置命令按钮5为可用状态mand6.ENABLED=.f. &&设置命令按钮6为不可用状态THISFORM.txt学号.ENABLED=.t.THISFORM.txt姓名.ENABLED=.t.bo1.ENABLED=.t.bo2.ENABLED=.t.bo3.ENABLED=.t.bo4.ENABLED=.t.THISFORM.txt邮编.ENABLED=.t.THISFORM.txt高数.ENABLED=.t.THISFORM.txt英语.ENABLED=.t.THISFORM.txtVfp.ENABLED=.t.bo5.ENABLED=.t.THISFORM.txt电话.ENABLED=.t.THISFORM.txt通信地址.ENABLED=.t.THISFORM.edt备注.ENABLED=.t.THISFORM.txt学号.SETFOCUSENDPROCPROCEDURE Command2.Click &&单击命令按钮2的事件过程SET DELETE ON &&设置打开删除命令DELETE &&删除当前记录YN=MESSAGEBOX('确实要删除这条记录?',4+32+256,'删除确认') &&弹出内容为“确实要删除这条记录?”的对话框DO CASE &&运行条件判断语句CASE YN=6 &&当单击“是”按钮时=TABLEUPDATE(.T.) &&执行更新表函数,删除当前记录CASE YN=7 &&当单击“否”按钮时RECALL &&恢复已作了删除标记的当前记录ENDCASETHISFORM.REFRESHENDPROCPROCEDURE Command3.Click &&单击命令按钮3的事件过程mand1.ENABLED=.f.mand2.ENABLED=.f.mand3.ENABLED=.f.mand4.ENABLED=.t.mand5.ENABLED=.t.mand6.ENABLED=.f.ENDPROCPROCEDURE Command4.Click &&单击命令按钮4的事件过程=TABLEUPDATE(.T.)mand1.ENABLED=.t.mand2.ENABLED=.t.mand3.ENABLED=.t.mand4.ENABLED=.f.mand5.ENABLED=.f.mand6.ENABLED=.t.ENDPROCPROCEDURE Command5.Click &&单击命令按钮5的事件过程=TABLEREVERT(.T.)mand1.ENABLED=.t.mand2.ENABLED=.t.mand3.ENABLED=.t.mand4.ENABLED=.f.mand5.ENABLED=.f.mand6.ENABLED=.t.ENDPROCPROCEDURE Command6.Click &&单击命令按钮6的事件过程SELE 1 &&选择1号工作区USE A:\XJ EXCLUSIVE 打开A盘中的XJ.DBF数据表PACK &&彻底删除已作了删除标记的记录THISFORM.RELEASE &&释放录入数据表单ENDPROCPROCEDURE InteractiveChangeREPL 是否党员 WITH bo5.DISPLAYVALUE &&用组合框的值替换是否党员字段THISFORM.REFRESHENDPROC4、修改数据表单源代码(A:\修改.sct)图3PROCEDURE Command1.ClickIF NOT BOF() &&如果记录指针没有到记录的开头SKIP –1 &&向上跳转一个记录THISFORM.REFRESHmand2.ENABLED=.t.ELSEWAIT WINDOW '已经是第一条记录了!' &&系统给出内容为“已经是第一条记录了!”提示窗口ENDIFENDPROCPROCEDURE Command2.ClickIF NOT EOF() &&如果记录指针没有到记录的结尾SKIP &&向下跳转一个记录THISFORM.REFRESH mand1.ENABLED=.t.ELSEWAIT WINDOW '已经是最后一条记录了!'ENDIFENDPROCPROCEDURE Command3.ClickGO TOP &&将记录指针移到记录的开头THISFORM.REFRESH mand1.ENABLED=.f. mand2.ENABLED=.t.ENDPROCPROCEDURE Command4.ClickGO BOTTOM &&将记录指针移到记录的结尾THISFORM.REFRESH mand1.ENABLED=.t. mand2.ENABLED=.f.ENDPROCPROCEDURE Command5.Click=TABLEUPDATE(.T.) mand1.ENABLED=.t. mand2.ENABLED=.t. mand3.ENABLED=.t. mand4.ENABLED=.t.mand5.ENABLED=.f.mand6.ENABLED=.f.mand7.ENABLED=.t.ENDPROCPROCEDURE Command6.Click=TABLEREVERT(.T.) &&启用表缓冲,放弃表中对所有记录所做的修改函数mand1.ENABLED=.t.mand2.ENABLED=.t.mand3.ENABLED=.t.mand4.ENABLED=.t.mand5.ENABLED=.f.mand6.ENABLED=.f.mand7.ENABLED=.t.ENDPROCPROCEDURE Command7.ClickUSE A:\XJ EXCLUSIVEPACKTHISFORM.RELEASEENDPROCPROCEDURE ClickIF EMPTY(bo1.VALUE) &&如果组合框1的值为空=MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统") &&系统给出内容为“请选择学号!”的对话框ENDIFAA=RECNO() &&用显示记录号的函数将记录号赋给变量AA 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文本框的内容THISFORM.txt是否党员.REFRESH &&刷新是否党员文本框的内容THISFORM.txt电话.REFRESH &&刷新电话文本框的内容THISFORM.txt通信地址.REFRESH &&刷新通信地址文本框的内容THISFORM.edt备注.REFRESH &&刷新备注编辑框的内容mand5.ENABLED=.t.mand6.ENABLED=.t.ENDPROC(未完)VFP应用程序设计实例--学生学籍管理系统(2)电脑笔记2007-10-29 16:54:06 阅读3360 评论0 字号:大中小图23、录入数据表单源代码(A:\录入.sct,如图2所示)PROCEDURE Init &&录入数据表单的初始化事件过程SET TALK OFFmand4.ENABLED=.f. &&设置第四个按钮为不可用状态mand5.ENABLED=.f. &&设置第五个按钮为不可用状态THISFORM.txt学号.ENABLED=.f. &&设置学号文本框为不可用状态THISFORM.txt姓名.ENABLED=.f. &&设置姓名文本框为不可用状态bo1.ENABLED=.f. &&设置组合框1为不可用状态bo2.ENABLED=.f. &&设置组合框2为不可用状态bo3.ENABLED=.f. &&设置组合框3为不可用状态bo4.ENABLED=.f. &&设置组合框4为不可用状态THISFORM.txt邮编.ENABLED=.f. &&设置邮编文本框为不可用状态THISFORM.txt高数.ENABLED=.f. &&设置高数文本框为不可用状态THISFORM.txt英语.ENABLED=.f. &&设置英语文本框为不可用状态THISFORM.txtVfp.ENABLED=.f. &&设置VFP文本框为不可用状态bo5.ENABLED=.f. &&设置组合框5为不可用状态THISFORM.txt电话.ENABLED=.f. &&设置电话文本框为不可用状态THISFORM.txt通信地址.ENABLED=.f. &&设置通信地址文本框为不可用状态THISFORM.edt备注.ENABLED=.f. &&设置备注编辑框为不可用状态ENDPROCPROCEDURE Load &&录入数据表单的加载事件过程CLOSE DATA &&关闭所有数据库USE A:\XJ存 &&打开A盘中的XJ.DBF表文件SET MULTILOCKS ON &&设置锁定一组记录=CURSORSETPROP('buffering',5,'XJ') &&打开开放式表缓冲ENDPROCPROCEDURE InteractiveChange &&录入数据表单的交互改变事件过程REPL 出生年月 WITHbo2.displayvalue+"."+bo3.displayvalue+"."+ bo4.displayvalue &&用组合框的值替换出生年月字段THISFORM.REFRESH &&刷新录入数据表单ENDPROCPROCEDURE Command1.Click &&单击命令按钮1的事件过程APPEND BLANK &&添加一空白记录THISFORM.REFRESH &&刷新录入数据表单mand1.ENABLED=.f. &&设置命令按钮1为不可用状态mand2.ENABLED=.f. &&设置命令按钮2为不可用状态mand3.ENABLED=.f. &&设置命令按钮3为不可用状态mand4.ENABLED=.t. &&设置命令按钮4为可用状态mand5.ENABLED=.t. &&设置命令按钮5为可用状态mand6.ENABLED=.f. &&设置命令按钮6为不可用状态THISFORM.txt学号.ENABLED=.t.THISFORM.txt姓名.ENABLED=.t.bo1.ENABLED=.t.bo2.ENABLED=.t.bo3.ENABLED=.t.bo4.ENABLED=.t.THISFORM.txt邮编.ENABLED=.t.THISFORM.txt高数.ENABLED=.t.THISFORM.txt英语.ENABLED=.t.THISFORM.txtVfp.ENABLED=.t.bo5.ENABLED=.t.THISFORM.txt电话.ENABLED=.t.THISFORM.txt通信地址.ENABLED=.t.THISFORM.edt备注.ENABLED=.t.THISFORM.txt学号.SETFOCUSENDPROCPROCEDURE Command2.Click &&单击命令按钮2的事件过程SET DELETE ON &&设置打开删除命令DELETE &&删除当前记录YN=MESSAGEBOX('确实要删除这条记录?',4+32+256,'删除确认') &&弹出内容为“确实要删除这条记录?”的对话框DO CASE &&运行条件判断语句CASE YN=6 &&当单击“是”按钮时=TABLEUPDATE(.T.) &&执行更新表函数,删除当前记录CASE YN=7 &&当单击“否”按钮时RECALL &&恢复已作了删除标记的当前记录ENDCASETHISFORM.REFRESHENDPROCPROCEDURE Command3.Click &&单击命令按钮3的事件过程mand1.ENABLED=.f.mand2.ENABLED=.f.mand3.ENABLED=.f.mand4.ENABLED=.t.mand5.ENABLED=.t.mand6.ENABLED=.f.ENDPROCPROCEDURE Command4.Click &&单击命令按钮4的事件过程=TABLEUPDATE(.T.)mand1.ENABLED=.t.mand2.ENABLED=.t.mand3.ENABLED=.t.mand4.ENABLED=.f.mand5.ENABLED=.f.mand6.ENABLED=.t.ENDPROCPROCEDURE Command5.Click &&单击命令按钮5的事件过程=TABLEREVERT(.T.)mand1.ENABLED=.t.mand2.ENABLED=.t.mand3.ENABLED=.t.mand4.ENABLED=.f.mand5.ENABLED=.f.mand6.ENABLED=.t.ENDPROCPROCEDURE Command6.Click &&单击命令按钮6的事件过程SELE 1 &&选择1号工作区USE A:\XJ EXCLUSIVE 打开A盘中的XJ.DBF数据表PACK &&彻底删除已作了删除标记的记录THISFORM.RELEASE &&释放录入数据表单ENDPROCPROCEDURE InteractiveChangeREPL 是否党员 WITH bo5.DISPLAYVALUE &&用组合框的值替换是否党员字段THISFORM.REFRESHENDPROC4、修改数据表单源代码(A:\修改.sct)图3PROCEDURE Command1.ClickIF NOT BOF() &&如果记录指针没有到记录的开头SKIP –1 &&向上跳转一个记录THISFORM.REFRESHmand2.ENABLED=.t.ELSEWAIT WINDOW '已经是第一条记录了!' &&系统给出内容为“已经是第一条记录了!”提示窗口ENDIFENDPROCPROCEDURE Command2.ClickIF NOT EOF() &&如果记录指针没有到记录的结尾SKIP &&向下跳转一个记录THISFORM.REFRESH mand1.ENABLED=.t.ELSEWAIT WINDOW '已经是最后一条记录了!'ENDIFENDPROCPROCEDURE Command3.ClickGO TOP &&将记录指针移到记录的开头THISFORM.REFRESH mand1.ENABLED=.f. mand2.ENABLED=.t.ENDPROCPROCEDURE Command4.ClickGO BOTTOM &&将记录指针移到记录的结尾THISFORM.REFRESH mand1.ENABLED=.t. mand2.ENABLED=.f.ENDPROCPROCEDURE Command5.Click=TABLEUPDATE(.T.) mand1.ENABLED=.t. mand2.ENABLED=.t. mand3.ENABLED=.t. mand4.ENABLED=.t.mand5.ENABLED=.f.mand6.ENABLED=.f.mand7.ENABLED=.t.ENDPROCPROCEDURE Command6.Click=TABLEREVERT(.T.) &&启用表缓冲,放弃表中对所有记录所做的修改函数mand1.ENABLED=.t.mand2.ENABLED=.t.mand3.ENABLED=.t.mand4.ENABLED=.t.mand5.ENABLED=.f.mand6.ENABLED=.f.mand7.ENABLED=.t.ENDPROCPROCEDURE Command7.ClickUSE A:\XJ EXCLUSIVEPACKTHISFORM.RELEASEENDPROCPROCEDURE ClickIF EMPTY(bo1.VALUE) &&如果组合框1的值为空=MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统") &&系统给出内容为“请选择学号!”的对话框ENDIFAA=RECNO() &&用显示记录号的函数将记录号赋给变量AA 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文本框的内容THISFORM.txt是否党员.REFRESH &&刷新是否党员文本框的内容THISFORM.txt电话.REFRESH &&刷新电话文本框的内容THISFORM.txt通信地址.REFRESH &&刷新通信地址文本框的内容THISFORM.edt备注.REFRESH &&刷新备注编辑框的内容mand5.ENABLED=.t.mand6.ENABLED=.t.ENDPROC(未完)、查询数据表单源代码(A:\查询.sct)图4PROCEDURE ClickIF EMPTY(bo1.VALUE)=MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统")ENDIFAA=RECNO()GO AATHISFORM.txt学号.REFRESHTHISFORM.txt姓名.REFRESHTHISFORM.txt性别.REFRESHTHISFORM.txt出生年月.REFRESHTHISFORM.txt邮编.REFRESHTHISFORM.txt高数.REFRESHTHISFORM.txt英语.REFRESHTHISFORM.txtVfp.REFRESHTHISFORM.txt是否党员.REFRESHTHISFORM.txt电话.REFRESHTHISFORM.txt通信地址.REFRESHTHISFORM.edt备注.REFRESHENDPROC6、统计数据表单源代码(A:\统计.sct)图5PROCEDURE Click &&单击“统计记录总数”按钮时的事件过程COUNT TO AA FOR 是否党员="是" &&对党员计数,并将计数结果赋给变量AA THISFORM.text5.value=AA &&将变量AA的值赋给文本框5THISFORM.text5.REFRESHENDPROCPROCEDURE Click &&单击“统计英语平均成绩”按钮时的事件过程AVERAGE 英语 TO AA &&对所有记录的英语成绩求平均,并将平均值赋给变量AA THISFORM.text3.value=AA &&将变量AA的值赋给文本框3THISFORM.text3.REFRESHENDPROCPROCEDURE Click &&单击“统计VFP平均成绩”按钮时的事件过程AVERAGE vfp TO AA &&对所有记录的VFP成绩求平均,并将平均值赋给变量AA THISFORM.text4.value=AA &&将变量AA的值赋给文本框4THISFORM.text4.REFRESHENDPROCPROCEDURE Click &&单击“统计总平均成绩”按钮时的事件过程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的值赋给文本框6THISFORM.text6.REFRESHENDPROC7、显示数据表单源代码(A:\显示.sct)图6PROCEDURE Command1.Click &&单击“上条”按钮的事件过程IF NOT BOF()SKIP -1THISFORM.REFRESHmand2.ENABLED=.t.ELSEWAIT WINDOW '已经是第一条记录了!'ENDIFENDPROCPROCEDURE Command2.Click &&单击“下条”按钮的事件过程IF NOT EOF()SKIPTHISFORM.REFRESHmand1.ENABLED=.t.ELSEWAIT WINDOW '已经是最后一条记录了!'ENDIFENDPROCPROCEDURE Command3.Click &&单击“首条”按钮的事件过程GO TOPTHISFORM.REFRESHmand1.ENABLED=.f.mand2.ENABLED=.t.ENDPROCPROCEDURE Command4.Click &&单击“末条”按钮的事件过程GO BOTTOMTHISFORM.REFRESHmand1.ENABLED=.t.mand2.ENABLED=.f.ENDPROCPROCEDURE Command5.Click &&单击“返回”按钮的事件过程THISFORM.RELEASEENDPROC8、删除数据表单源代码(A:\删除.sct)图7PROCEDURE Click &&单击“显示”按钮的事件过程IF EMPTY(bo1.VALUE)=MESSAGEBOX("请选择学号!",48+0+0,"学生学籍管理系统") mand2.ENABLED=.f.ELSEmand2.ENABLED=.t.ENDIFAA=RECNO()GO AATHISFORM.txt学号.REFRESHTHISFORM.txt姓名.REFRESHTHISFORM.txt性别.REFRESHTHISFORM.txt出生年月.REFRESHTHISFORM.txt邮编.REFRESHTHISFORM.txt高数.REFRESHTHISFORM.txt英语.REFRESHTHISFORM.txtVfp.REFRESHTHISFORM.txt是否党员.REFRESHTHISFORM.txt电话.REFRESHTHISFORM.txt通信地址.REFRESHTHISFORM.edt备注.REFRESHENDPROCPROCEDURE Click &&单击“删除”按钮的事件过程SET DELETE ONDELETEYN=MESSAGEBOX('确实要删除这条记录?',4+32+256,'删除确认')DO CASECASE YN=6=TABLEUPDATE(.T.)=MESSAGEBOX("记录已成功删除!",0+64+0,'学生学籍管理系统') mand2.ENABLED=.f.bo1.DISPLAYVALUE="请选择"GO TOPCASE YN=7RECALLENDCASETHISFORM.REFRESHENDPROCPROCEDURE Init &&删除数据表单的初始化过程SET TALK OFFmand2.ENABLED=.f.ENDPROCPROCEDURE ClickUSE A:\XJ EXCLUSIVEPACKTHISFORM.RELEASEENDPROC(未完)VFP应用程序设计实例--学生学籍管理系统(4)电脑笔记2007-10-29 16:58:43 阅读3843 评论5 字号:大中小9、导出数据表单源代码(A:\导出.sct)图8PROCEDURE Click &&单击“确定”按钮的事件过程SET SAFETY OFF &&覆盖文件时不提示确认USE A:\XJGO TOPIF EMPTY(bo1.VALUE)=MESSAGEBOX("请选择盘符!",48+0+0,"学生学籍管理系统")ELSEIF EMPTY(THISFORM.text1.VALUE)=MESSAGEBOX("请输入文件名!",48+0+0,"学生学籍管理系统")ELSEIF RECC()>0 &&如果表记录大于0DRIVER=BO1.DISPLAYVALUE &&将组合框1的值赋给变量DRIVERFILENAME=ALLTRIM(THISFORM.TEXT1.TEXT) &&将去掉空格的文件名赋给变量FILENAMECOPY TO &DRIVER\&FILENAME &&将系统表文件复制到选定的盘符和文件名中 =MESSAGEBOX("本系统所有数据已转出完毕!",48,"信息提示")USETHISFORM.RELEASEELSE=MESSAGEBOX("没有任何数据,不能转出",48,"信息提示")USETHISFORM.RELEASEENDIFENDIFENDIFENDPROCPROCEDURE Click &&单击“取消”按钮的事件过程RELEASE THISFORMENDPROC10、导入数据表单源代码(A:\导入.sct)图9PROCEDURE Click &&单击“确定”按钮的事件过程SET SAFETY OFFIF EMPTY(bo1.VALUE)=MESSAGEBOX("请选择要导入的数据表所在的盘符!",48+0+0,"学生学籍管理系统")THISFORM.text1.SETFOCUSELSEIF EMPTY(THISFORM.text1.VALUE)=MESSAGEBOX("请输入要导入的数据表名!",48+0+0,"学生学籍管理系统")ELSEDRIVER=bo1.VALUEFILENAME=ALLTRIM(THISFORM.TEXT1.VALUE)USE A:\XJ? &&打印一空行ON ERROR ? MESSAGE() &&发生找不到文件的错误时,打印错误信息APPEND FROM &DRIVER\&FILENAME &&将选定的文件追加到系统表文件中 =MESSAGEBOX('数据表已成功导入原表!',0+64+0,'学生学籍管理系统')USETHISFORM.RELEASEENDIFENDIFENDPROC11、打印数据表单源代码(A:\打印.sct)图10PROCEDURE Command1.Click??CHR(7)REPORT FORM A:\学生学籍管理表.frx NOEJECT NOCONSOLE TO PRINTERENDPROCPROCEDURE Command2.ClickREPORT FORM A:\学生学籍管理表.frx PREVIEWENDPROCPROCEDURE Command3.ClickTHISFORM.RELEASEENDPROC学生学籍管理系统的开发和应用,可以提高学校的管理水平。
VFP应用系统的开发案例
14.3.5 系统工具条的设计 • 系统工具条是系统菜单的另一种表现形式,通过系 统工具条中所列的命令按钮,同样可以完成系统功 能的操作。 14.3.6 主程序的设计 • 所谓主程序就是一个应用系统的主控软件,是系统 首先要执行的程序。 • 以下通过实例介绍一般应用系统主程序的任务设计。 1. 设置系统运行参数 • 在主程序中,首先要设置系统运行参数,从而确定 整个系统运行过kcolor=rgb(64,128,128) _screen.lbl1.autosize=.t. _screen.lbl1.fontsize=24 _screen.lbl1.fontname=″楷体_GB2312″ _screen.lbl1.caption=allt(systit) _screen.lbl1.left=(_screen.width-len(systit)*16-2)/2 _screen.lbl1.top=74 _screen.lbl1.forecolor=rgb(0,0,0) _screen.lbl1.visible=.t. _screen.lbl1.backstyle=0 _screen.addobject(″lbl3″,″label″)
set blocksize to 64 set collate to ′stroke′ set sysformats off set seconds on set century on set currency left set currency to ′NT$′ set hours to 12 set date to ansi set decimals to 2 set fdow to 1
_screen.img1.visible=.t. _screen.img1.picture=″c:\\example\\phot.bmp″ systit=″系统标题″ _screen.caption=systit _screen.windowstate=2 _screen.movable=.f. _screen.backcolor=rgb(64,128,128) _screen.minbutton=.f. _screen.maxbutton=.f. _screen.showtips=.t. _screen.addobject(″lbl1″,″label″)
《Visual FoxPro 6.0数据库应用》教学课件 项目十 系统开发实例
任务实施
2 物理设计 物理设计就是确定逻辑设计中得到的每个表的具体结构,包括字段的名称、类型、宽度及小数
位数。下面列出了图书管理系统中4个表的表结构和表中记录。 读者信息表 读者信息表的结构如表所示。
字段名称 字段类型 字段宽度 小数位数 字段名称 字段类型 字段宽度 小数位数
借书证号 字符型
8
姓名
图书借阅表〔借书 证号,姓名,联系 方式,条形码,馆 藏编号,书名,借 书日期,还书日期 〕
管理员信息表〔用 户名,密码〕
表设计 根据对系统涉及数据的整理,以及系统对输 入、输出的分析,本系统建立了4个表
其中,括号外是表名,括号内是表中的字段名,直线下划线标识的是主索引,曲线下划线标识的是普 通索引。
endif endif
“退出系统〞按钮的Click事件过程代码如下: quit
— 22 —
开发“图书管理系统”
2 创建管理员界面 管理员在登录界面输入正确的用
户名和密码后,单击“登录〞按钮会 进入管理员界面。管理员界面允许管 理员进行查询、管理和借还书登记等 操作,如下图。
vfp数据库程序设计程序示例
vfp数据库程序设计程序示例如何进行VFP数据库程序设计的示例。
请注意,vfp数据库是Visual FoxPro数据库的缩写。
第一步:理解VFP数据库编程的基础知识在进行VFP数据库程序设计之前,我们需要先理解VFP数据库编程的基础知识。
VFP数据库是一种关系型数据库,它使用表格来组织和管理数据。
每个表格包含一系列的字段,并且可以在表格之间建立关系。
VFP数据库还支持SQL查询语言,可以方便地查询和操作数据。
第二步:创建数据库在VFP中创建数据库非常简单。
首先,打开VFP软件,在菜单栏中选择"数据库",然后选择"新建"。
接下来,为数据库指定一个名称,选择保存位置,并点击"确定"。
数据库创建成功后,我们可以在VFP软件中看到它的图标。
第三步:创建表格在VFP数据库中,表格用于存储和管理数据。
要创建一个表格,首先确保数据库窗口处于活动状态。
然后,在数据库窗口中右键单击,选择"新建",然后选择"表格"。
接下来,为表格指定一个名称,并定义字段。
在每个字段中,我们可以定义字段名称、字段类型、字段长度以及其他属性。
创建完所有字段后,点击"确定" 完成表格创建。
第四步:插入数据在VFP数据库中插入数据十分简单。
首先,双击要插入数据的表格,打开表格编辑窗口。
然后,在表格编辑窗口中,点击"插入"按钮。
接下来,输入要插入的数据,每个字段占一列,然后点击"确定" 完成数据插入。
可以重复这个过程,插入更多的数据。
第五步:查询数据VFP数据库支持使用SQL查询语言来查询和操作数据。
在VFP软件中的菜单栏中选择"工具",然后选择"查询",打开查询编辑器。
在查询编辑器中,我们可以输入SQL查询语句。
例如,要查询某个表格中所有记录的所有字段,可以使用以下SQL查询语句:"SELECT * FROM table_name"。
VFP数据库系统开发实例(附图)
11.1 系统需求分析传统的学生成绩管理方法不仅浪效率低,而且由于管理不规范容易导致各种错误的发生。
因此实现一个智能化、系统化的公共计算机成绩管理系统是十分必要和不可缺少的。
它将大大减轻管理者的劳动强度,降低出错率,提高管理的效率。
该系统可以实现如下功能:1. 数据需求通过调查,总结出该应用程序对数据的需求大致有如下这些:(1) 学生信息包括学号,姓名,性别,出生日期等(2) 学生成绩信息主要包括学号, 课程编号,平时成绩(3) 课程信息包括课程编号,课程名称2. 功能需求功能分析的任务是了解用户对数据的处理方法和输出格式。
(1) 基本数据录入基本数据包括学生信息、管理员信息、学生成绩休息和课程信息等。
要求系统能够录入这些数据,并且可以进行修改。
在数据录入和修改过程中应保持数据的参照完整性。
(2) 学生和管理员信息的维护要求能够根据需要对学生和管理员信息进行维护修改等。
(3) 打印输出打印学生信息表。
11.2 系统设计1. 程序总体结构设计在开始程序设计之前,首先应该将程序的总体结构以层次图的形式表示出来,便于对程序分层设计和实现。
图1所示为公共计算机成绩管理系统的功能模块图。
图1公共计算机成绩管理系统功能模块2. 数据库逻辑设计进行数据库设计的依据有三个:第一是在进行系统调查时由成绩管理员提供的各种处理数据;第二是功能设计结果;第三是数据库设计规范化理论。
数据库设计是系统设计的一项基本工作,其效果的好坏,对后续设计、调试、使用、维护等工作关系极大,因此,一定要高度重视这一部分工作。
当然,我们不能简单地将数据库设计理解为在计算机上用可视化的方法建立表的过程,其主要工作是建立一种完整、规范的数据模型以支持整个应用系统对数据的要求。
根据对实际情况进行分析建立关系模型1) 学生信息表(学号,姓名,性别,出生日期)2) 学生成绩表(学号, 课程编号,平时成绩)3 课程表(课程编号,课程名称)11.3 创建项目Visual Foxpro推荐在项目管理器中开发应用程序,因为项目管理器会为开发工作带来很多方便。
VFP开发实例
开发实例(6学时)一、【教学目标】1.掌握小型数据库应用程序的开发过程和方法。
2.掌握系统发布及生成的方法。
二、【重点和难点】重点:1.小型数据库应用程序的开发过程和方法。
2.系统发布及生成的方法。
难点:1.小型数据库应用程序的开发过程和方法。
三、【教学要点】一个应用软件如小型数据库应用系统,其开发过程采用生命周期法的理论,设计过程可以分为六个阶段:需求分析、概念设计、逻辑设计、物理设计、数据库实施和运行、数据库的使用和维护。
结合VFP本身的特点,下面给出一个数据库应用系统的设计流程,如图7.1所示:图7.1通常,项目由用户提出,开发人员到用户处进行初步调查了解情况,拟定出初步的方案,征得用户同意后,开始系统的分析与设计。
我们以商品进货销售系统为例,说明怎样用VFP 完整地开发一个应用系统。
7.2需求分析及主要功能模块通过与用户的交流,我们了解商品进货销售系统的主要功能包括:系统功能模块、数据维护模块、数据查询模块、报表打印模块。
商品进货销售系统完整的结构如图7.2所示:这些都是从用户角度看到的商品进货销售系统的主要功能,随着需求的进一步细化,用户会增加一些功能,每个功能模块又可以划分为几项子功能。
7.3数据库规划与设计先建立系统的存储结构,通过数据分析,按照数据库设计的规范化原则,先对每个主题建立一个或多个表。
然后再根据系统运行的需要建立一些辅助表。
进入VFP ,建立一个商品管理数据库,并建立表结构及表间关系。
1、几个主要表的表结构 (1)商品表:(2)供应商表商品进货销售系统系统功能 数据维护 数据查询 报表打印背景设置计算器日 历浏览数据增加记录修改记录退出系统利润查询客户查询前款查询销售分组报表供应商报表商品标签(4)销售表(5)客户表(6)商品类别表图7.37.4输入/输出设计1、表单设计系统设计的核心是表单。
对数据的操作类型从表中记录的观点看,可分为:输入新数据、修改已有数据,删除已有数据,查询数据,打印数据和统计分析数据。
VFP应用系统的开发案例
(2) 应用系统工具栏 • 应用系统工具栏是为更方便地实现系统功能而提供 的工具。利用系统提供工具,可以完成对系统各功 能部件的操作。 (3) 应用系统菜单 • 系统菜单是为用户设计的控制系统操作的菜单。使 用系统菜单可以快捷、方便地实现对系统的全部操 作。 (4) 应用系统登录表单 • 系统登录表单是用来控制操作员使用系统的口令和 输入的窗口。通过程序设计者提供的保密口令可以 安全可靠地使用系统,通过系统的口令也可以分级 实现系统功能。
14.3 应用系统主要功能模块的设计
14.3.1 数据库的设计 • 一个数据库应用系统的好坏,多半取于数据库的设 计。应用系统的数据量越大,数据来源越复杂,数 据库设计的好坏就越显得重要。 • 数据库设计是系统设计的第一步,也是非常重要的 一步,它将影响着整个系统的设计过程。设计数据 库要完成以下几项工作: (1) 收集数据 • 收集数据就是将与系统相关的数据粗略汇集到一起。 (2) 分析数据 • 根据系统功能需求,分析确定数据源,去掉重复数 据,删除无关数据。
(3) 数据查询表单。 14.3.3 系统登录表单的设计 • 系统登录表单设计,是用户使用系统的第一个窗口。 设计时要考虑界面的美观大方,要通过该界面吸引 用户对系统的关注。另外系统口令的输入要尽量方 便、简捷,要有容错功能。
14.3.4 系统菜单的设计 • 当系统数据表单、系统登录表单及其他工作窗口设 计完成后,就可以设计系统菜单,通过系统菜单整 体调度系统每一个工作窗口。
第14章
14.1 14.2 14.3 14.4 习题
应用系统开发
应用系统开发的一般过程 应用系统总体规划 应用系统主要功能模块的设计 应用系统主要功能模块的组装
• 应用系统开发是使用数据库管理系统软件的最终目 的。在进行应用系统开发过程中,将综合地运用前 面各章所讲的知识和设计技巧,亦是对本书学习过 程一个全面的、综合的运用和训练。本章将结合一 些具体案例,介绍应用系统开发的一般过程,以及 怎样设计一个Visual FoxPro的应用系统。
VF第13章
13.1 开发 开发VFP数据库应用系统的一般步骤 数据库应用系统的一般步骤
开发步骤 系统管理
项目管理 目录管理 构造程序框架 应用项目连编 应用程序发布 文件包含 与排除 应用程序发布 开发实例
软件测试 应用程序设计过程中要对菜单、表单、 应用程序设计过程中要对菜单、表单、报表 等应用程序模块进行测试和调试,通过测试来 等应用程序模块进行测试和调试 通过测试来 找出错误,再通过调试来纠正错误 再通过调试来纠正错误。 找出错误 再通过调试来纠正错误。 应用程序发布 将应用程序“连编” 程序,并进行应用 将应用程序“连编”为.EXE程序 并进行应用 程序 程序发布。 程序发布。 系统运行与维护 只要系统还在使用,就可能常需要调整和修 只要系统还在使用 就可能常需要调整和修 维护” 改, “维护”工作包括纠正错误和系统改进等。 维护 工作包括纠正错误和系统改进等。
Visual FoxPro 数据库与程序设计
结束
第十三章 应用程序的生成和发布
• • • • • • 第一节 第二节 第三节 第四节 第五节 第六节 开发VFP数据库应用系统的一般步骤 数据库应用系统的一般步骤 开发 VFP应用程序系统的管理 应用程序系统的管理 构造应用程序框架的步骤 应用项目的连编 VFP应用程序的发布 应用程序的发布 实开发例——教学管理系统的开发 实开发例 教学管理系统的开发
13.4 应用项目的连编
开发步骤 系统管理
项目管理 目录管理 构造程序框架 应用项目连编 应用程序发布 文件包含 与排除 应用程序发布 开发实例
操作区的选项 1)重新连编项目 编译项目中所有文件 重新连编项目:编译项目中所有文件 重新连编项目 编译项目中所有文件, 生成.PJX和.PJT文件。 文件。 生成 和 文件 2)连编应用程序 连编项目并生成以 连编应用程序:连编项目并生成以 连编应用程序 连编项目并生成以.APP(必 必 须在开发环境中运行)为扩展名的应用程序 为扩展名的应用程序。 须在开发环境中运行 为扩展名的应用程序。 3)连编可执行的文件 连编项目并生成以 连编可执行的文件:连编项目并生成以 连编可执行的文件 连编项目并生成以.EXE 为扩展名的应用程序。 为扩展名的应用程序。 .EXE文件可以在 文件可以在Windows中独立运行。 中独立运行。 文件可以在 中独立运行 4)连编 连编COM DLL:连编项目并生成以 连编项目并生成以.DLL为 连编 连编项目并生成以 为 扩展名的动态连接库文件,.DLL文件可以被 扩展名的动态连接库文件 文件可以被 其他应用程序调用。 其他应用程序调用。
VFP实用第10章 数据库应用系统开发
2. 系统分析
数据对象和数据流程分析 数据对象和数据流程分析是数据库设计的基础工作。 在此阶段要收集全部数据资料,如学生登记表、学生成 绩表、教学计划等。 还要了解用户想从数据库中获得哪些信息,需要对数据 进行哪些处理以及对数据安全性和完整性的要求等。 经过分析将数据对象及其之间的关系用E-R图来描述,成 绩管理系统的E-R图在2.1节已介绍。
教研组名称 企业管理 计算机
英语 财会 经济 营销 文法 数学 体育
专业编码 11 12 13 21 22 23 41 51 52 61
专业名称 企业管理 物业管理 酒店管理 计算机应用 管理信息系统 电子商务 财务管理 国际金融 国际贸易 市场营销
16
(2) 编码设计
班级编码为4位数字:年级编码(2位)+专业编码(2位)。 例:09级计算机班的班级编码为“0921”,其中“09”是入学年份, “21”是计算机专业的编码。
设计以及处理过程设计。
3
10.1 应用系统开发的一般过程
4.系统实施 按照系统的设计要求,建立新系统。 包括:创建项目;在项目中建立数据库和表;完成表单、报 表、菜单等文件的设计和调试;再设置主程序,将项目中的
文件连编成一个应用程序。
5.运行与维护 测试通过的软件交付用户使用,在使用中有可能会发现新的 问题,此时可以根据用户的要求进行必要的修改和扩充,使
经过初步调查,确定系统的开发目标和应用范围。 2.系统分析
经过详细调查,分析用户的需求和业务流程,以及软件要处理的 数据对象和数据流程;
然后确定系统要实现的功能,即弄清楚系统要“做什么”。 3.系统设计
设计系统的实现方案,即解决系统“怎么做”的问题。 包括:系统的总体结构设计和详细设计。 详细设计又包括:编码设计、数据库设计、输入输出和人机界面
VFP应用系统的开发案例PPT教学课件
14.1 应用系统开发的一般过程 14.2 应用系统总体规划 14.3 应用系统主要功能模块的设计 14.4 应用系统主要功能模块的组装
• 应用系统开发是使用数据库管理系统软件的最终目 的。在进行应用系统开发过程中,将综合地运用前 面各章所讲的知识和设计技巧,亦是对本书学习过 程一个全面的、综合的运用和训练。本章将结合一 些具体案例,介绍应用系统开发的一般过程,以及 怎样设计一个Visual FoxPro的应用系统。
14.1 应用系统开发的一般过程
• 应用系统开发一般要经过系统分析、系统设计、系统 实施和系统维护几个阶段。
1. 分析阶段
• 在应用系统开发的分析阶段,信息收集是决定系统开 发可行性的重要环节。程序设计者要通过对应用系统 所需信息的收集,确定应用系统的总目标、应用系统 开发的总体思路及开发所需的时间等。
14.3.1 数据库的设计
• 一个数据库应用系统的好坏,多半取于数据库的设 计。应用系统的数据量越大,数据来源越复杂,数 据库设计的好坏就越显得重要。
• 数据库设计是系统设计的第一步,也是非常重要的 一步,它将影响着整个系统的设计过程。设计数据 库要完成以下几项工作:
(1) 收集数据
• 收集数据就是将与系统相关的数据粗略汇集到一起。 (2) 分析数据
1. 设置系统运行参数 • 在主程序中,首先要设置系统运行参数,从而确定
整个系统运行过程中的系统环境。
• 例14.1设计定义系统运行参数程序。 *MAIN.PRG clear all close all set sysmenu off set sysmenu to set clock on set status bar off set notify off set palette off set bell on
VFP系统开发过程
2013年秋
VFP程序设计
• 设置主程序文件——入口点(唯一):
主文件的任务是设置应用程序的起始点,初 始化环境,显示初始的用户界面,控制事件 循环,当退出应用程序时,恢复原始的开发 环境,程序、菜单、表单或查询都可以作为 主文件,一般是程序,黑体 设置方法:
选中—项目菜单/单击右键—设置主文件
18
2013年秋
VFP程序设计
8、连编可独立执行的EXE文件:
打开项目管理器,按“连编”按钮,选 择“连续可执行文件”选项,并设置有关版 本信息。
19
2013年秋
VFP程序设计
1、表单设置背景图片:图片如何跟随表单变大或变 小? 用表单的picture属性不能完成,需用image控件,设 置image控件的picture和stretch属性,并且在form的 Init中编写: With Thisform.Image1 .Top=This.Top .Left=This.Left .Height=This.Height .Width=This.Width Endwith
主文件的任务是主文件的任务是设置应用程序的起始点初设置应用程序的起始点初始化环境显示初始的用户界面控制事件始化环境显示初始的用户界面控制事件循环当退出应用程序时恢复原始的开发循环当退出应用程序时恢复原始的开发环境环境程序菜单表单或查询都可以作为程序菜单表单或查询都可以作为主文件一般是主文件一般是程序程序黑体黑体设置方法
• 设置文件的排除与包含
将一个项目编译成一个应用程序时,所有项 目包含的文件将组合为一个单一的应用程序 文件,所有包含的文件变为只读文件,若应 用程序中包含需要用户修改的文件,必须将 该文件标为排除。如表需要录入数据,经常 会被修改,则标为排除。 注意:排除文件仍然是应用程序的一部分, 但是没有在应用程序的文件中编译。 设置方法:选中对象—单击右键—包含/排除
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VFP基本数据库系统开发实例(附图)西南大学计信院导学在Visual Foxpro中开发一个应用系统应该包括需求分析、项目创建、模块设计、运行调试、保存发布到建立帮助等,下面介绍如何把各个模块集成起来,并创建一个应用程序。
11.1 系统需求分析传统的学生成绩管理方法不仅浪效率低,而且由于管理不规范容易导致各种错误的发生。
因此实现一个智能化、系统化的公共计算机成绩管理系统是十分必要和不可缺少的。
它将大大减轻管理者的劳动强度,降低出错率,提高管理的效率。
该系统可以实现如下功能:1. 数据需求通过调查,总结出该应用程序对数据的需求大致有如下这些:(1) 学生信息包括学号,姓名,性别,出生日期,系科,备注,照片(2) 管理员信息包括用户名,密码,管理员姓名,权限,说明信息(3) 学生成绩信息主要包括学号, 课程编号,平时成绩,笔试成绩,上机成绩,总评成绩,审核否(4) 课程信息包括课程编号,课程名称2. 功能需求功能分析的任务是了解用户对数据的处理方法和输出格式。
(1) 基本数据录入基本数据包括学生信息、管理员信息、学生成绩休息和课程信息等。
要求系统能够录入这些数据,并且可以进行修改。
在数据录入和修改过程中应保持数据的参照完整性。
(2) 查询能够查询出学生成绩,和补考人员名单等。
(3) 学生和管理员信息的维护要求能够根据需要对学生和管理员信息进行维护修改等。
(4)成绩的审核根据学生的总评成绩审核学生的计算机成绩是否通过。
(5) 打印输出打印学生成绩表和补考人员名单等。
11.2 系统设计1. 程序总体结构设计在开始程序设计之前,首先应该将程序的总体结构以层次图的形式表示出来,便于对程序分层设计和实现。
图1所示为公共计算机成绩管理系统的功能模块图。
图1公共计算机成绩管理系统功能模块2. 数据库逻辑设计进行数据库设计的依据有三个:第一是在进行系统调查时由成绩管理员提供的各种处理数据;第二是功能设计结果;第三是数据库设计规范化理论。
数据库设计是系统设计的一项基本工作,其效果的好坏,对后续设计、调试、使用、维护等工作关系极大,因此,一定要高度重视这一部分工作。
当然,我们不能简单地将数据库设计理解为在计算机上用可视化的方法建立表的过程,其主要工作是建立一种完整、规范的数据模型以支持整个应用系统对数据的要求。
根据对实际情况进行分析建立关系模型1) 学生信息表(学号,姓名,性别,出生日期,系科,备注,照片)2) 管理人员信息表(用户名,密码,管理员姓名,权限,说明信息)3) 学生成绩表(学号, 课程编号,平时成绩,笔试成绩,上机成绩,总评成绩,审核否)4) 补考名单表(学号,姓名, 总评成绩,补考成绩)5) 课程表(课程编号,课程名称)11.3 创建项目Visual Foxpro推荐在项目管理器中开发应用程序,因为项目管理器会为开发工作带来很多方便。
在项目管理器中创建一个项目后,应用程序就具备了一个开发框架,然后在这个框架中,再利用项目管理器所提供的强大功能,按照需求来实现应用程序的设计。
用户可以启动Visual Foxpro,选择【文件】|【新建】命令,在打开的对话框中,选择“项目”单选按钮,然后单击“新建文件”按钮,接着在“创建”对话框中,输入项目文件名并确定项目路径(本例使用的路径为D:\公共计算机成绩管理系统),然后单击“保存”按钮,即可启动项目管理器。
一个完整的应用程序,即使规模不大,也会涉及到多种类型文件,如dbc数据库、dbf表以及菜单、表单、报表、位图等。
为了以后的修改、维护工作方便进行,就需要把这些文件放在不同的文件夹中便于管理维护,例如一般把dbc数据库文件、dbf表文件和cdx索引文件放在DA TE 目录,表单、报表、标签等放在FORMS目录等。
11.4数据库的物理设计a) 数据库名为公共计算机成绩管理.dbcb) 数据表i. 学生信息表.dbf学号/C/10,姓名/C/10,性别/L/1,出生日期/D/8,系科/C/30,备注/M/4,照片/G/4ii. 管理人员信息表.dbf用户名/C/10,密码/C/10,管理员姓名/C/10,权限/C/4,说明信息/C/20iii. 学生成绩表.dbf学号/C/10, 课程编号/C/2,平时成绩/N/6/2,笔试成绩/N/6/2,上机成绩/N/6/2,总评成绩/N/6/2,审核否/L/1iv. 补考名单表学号/C/10,姓名/C/10, 总评成绩/N/6/2,补考成绩/N/6/2v. 课程表课程编号/C/2,课程名称/C/14图2 公共计算机成绩管理数据库及其表结构11.5界面设计1) 创建启动表单下面设计应用程序的封面,主要由一个表单来实现,其效果如图10.4所示。
在项目管理器中,打开“文档”选项卡,选择“表单”选项,单击“新建”按钮,在打开的对话框中单击“新建表单”按钮,这时,将弹出一个表单设计器和表单Form1。
单击表单设计器工具栏中的标签和命令按钮,分别在表单中添加一个标签控件(采用系统默认名称Labell)和两个命令按钮控件(采用系统默认名称command1和command2)。
下面分别设置各对象的主要属性。
属性设置见表10.6所示。
设置command1对象的click事件代码为:do form 密码.scx*打开“密码”表单设置command2对象的click事件代码为:thisform.release*释放本表单Quit*清除事务处理退出VF2) 创建身份验证表单在项目管理器中,与主表单的创建方法相类似,可以创建“身份验证”表单的界面如图10.5所示。
首先通过表单控件工具栏在表单上添加二个标签控件、一个文本框控件及两个命令按钮控件。
其中“密码”表单中各对象的属性设置情况如表10.7所示:设置密码表单的init事件为:Thisform.text1.SetFocus()Thisform.text1.passwordchar='*'设置密码表单的load事件为:SELE 1USE 密码设置option1对象的click事件代码为:PUBLIC M.权限,M.密码sele 1SET EXAC ONLOCA FOR 密码=ALLTRIM(Thisform.text1.Value)IF FOUND()M.密码=密码M.权限=权限KUAN=1thisform.releaseELSEThisform.text1.passwordchar=''Thisform.text1.Value='密码错误!'A=INKEY(1)Thisform.text1.Value=''THISFORM.OPTIONGROUP1.VALUE=0Thisform.text1.SetFocus()Thisform.text1.passwordchar='*'KUAN=0ENDIF设置option2对象的click事件代码为:thisform.release*释放本表单clear event11.6主菜单设计下面利用Visual FoxPro的菜单功能设计应用程序的子系统,其结构示意如图10.8所示。
图10.8 打开项目管理器中的“其他”选项卡,选中【菜单】项,然后单击“新建”按钮,在弹出的对话框中单击“菜单”按钮,参照总体结构图10.8,在打开的菜单设计器中,设计主菜单,如图10.9所示。
图10.9单击菜单项后的“创建”按钮,即可在打开的菜单设计器窗口中创建该菜单项的子菜单。
如果要设置命令的快捷键,可以单击其后的选项按钮,然后在打开的对话框中,输入快捷键的名称,如图10.10所示。
图10.10最后单击确定按钮,返回到菜单设计器窗口,在“退出”菜单项的文本框中,输入clear events,然后单击关闭按钮,将菜单保存为“主菜单.mnx”。
运行该菜单,其效果如图10.11所示。
图10.11接着,创建应用程序的主文件,将其保存为“主程序.prg” 。
在代码编辑窗口中,输入以下代码:_screen.windowstate=2_screen.caption="公共计算机成绩管理系统 "_screen.closable=.f._screen.picture="图片\news_2003816214445.jpg"close allclear allclearset sysmenu off br> set sysmenu toset talk offset safety offset status bar offdo form 封面.scxDO 菜单1.MPXread eventset sysmenu to defaultset sysmenu onset status bar onclose allclear allreturn图10.12如图10.12所示,在项目管理器中,将“主程序.prg”设置为主文件,然后选中“主程序.prg”并单击“运行”按钮,即可得到如图10.13所示的效果。
图10.13运行主程序后的效果11.7表单设计为了实现和完善“公共计算机成绩管理系统”应用程序的功能,下面通过表单的调用来实现某些特定的底层功能。
在此,我们主要介绍“学生信息输入”表单、“成绩查询”表单、“学生信息维护”表单的制作过程,其他的表单制作过程与此类似,读者可以自己完成。
1)“学生信息输入”表单(学生信息输入.scx)“学生信息输入”表单主要用于输入学生的信息。
首先创建“学生信息输入”表单,然后选择【显示】|【数据环境】命令,在打开的“添加表或视图”对话框中添加“学生信息表”表到数据环境设计器中,如图10.14所示。
图10.14接着,设置“学生信息输入”表单的属性,见表10.9所示。
然后设置标签和文本框。
从数据环境设计器中,将下列字段拖放到表单中规定的位置,生成相应的标签和文本框:“学生信息表”表中的学号、姓名、性别、系科、出生日期、备注等字段。
从数据环境直接拖动到表单中定义标签和文本框不仅速度快,而且标签的Coption 和Name属性、文本框的Name属性都会自动设置与源字段有关的名字,文本框也会自动与源表中的源字段绑定,效果如图10.15所示。
图10.15最后,设置命令按钮组与事件代码。
从表单控件工具栏中单击“命令按钮组” 工具,在窗口的相应位置单击,创建命令按钮组控件。
在属性窗口,分别设置各个command的属性,并且在编辑状态下,对按钮命令组中的command进行排列与设定。
双击该控件,在打开的代码编辑窗口中,输入Click事件的代码。
Command1的Click事件的代码:select 学生信息表append blankthisform.refresh()Command2的Click事件的代码:SET EXACT onIF ALLTRIM(学号)=''DELETEPACKENDIFIF thisform.Optiongroup1.Option1.value=1REPLACE 性别 with .t.ELSEREPLACE 性别 with .f.endifCommand3的Click事件的代码:if !bof()SKIP -1elsego topENDIFIF 性别thisform.Optiongroup1.Option1.value=1thisform.Optiongroup1.Option2.value=0ELSEthisform.Optiongroup1.Option1.value=0thisform.Optiongroup1.Option2.value=1endifthisform.refresh()Command4的Click事件的代码:if !eof()skipelsego bottomENDIFIF 性别thisform.Optiongroup1.Option1.value=1thisform.Optiongroup1.Option2.value=0ELSEthisform.Optiongroup1.Option1.value=0thisform.Optiongroup1.Option2.value=1endifthisform.refresh()Command5的Click事件的代码:SET EXACT onGO topscanIF ALLTRIM(姓名)=''DELETEPACKENDIFendscanuserelease thisform关闭该窗口,保存代码,然后单击项目管理器中的运行按钮,可以得到如图10.16所示的表单效果。