vfp课程设计报告
- 格式:doc
- 大小:1.22 MB
- 文档页数:22
VFP课程设计
设计人员:康艳,刘露露,刘艳红,杨柳,吴晶晶,邹敏
1.系统设计目标
该系统的具体任务就是设计一个家电行业个体户的管理系统,由计算机代替人工执行一系列诸如仓库管理,名片管理,销售发票的管理等操作。这样就有效解决了个体户管理混乱的问题,使日常销售程序化、有理化、自动化,从而达到提高个体户经营效率的目的。
设计的指导思想是一切为用户着想,界面要美观大方,操作尽量简单方便,而且作为一个实用的应用程序要有很好的容错性,在用户出现错误操作时能尽量及时给出提示,以便用户及时更正。
2.开发和运行环境
开发工具:Visual FoxPro 6.0
运行环境:Windows 2007 、Windows 2000、Windows XP
3.系统功能
系统数据初始化
仓库信息的添加
仓库信息的修改
仓库信息的删除
名片信息的添加
名片信息的修改
名片信息的删除
仓库信息报表浏览
仓库信息报表打印
名片报表浏览
密码修改
4.系统功能模块结构图
系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、修改。在系统功能分析的基础上,考虑Visual FoxPro 6.0程序编制的特点,得到如下所示的系统功能模块结构图。
系统功能模块结构图 欢迎
登陆
主界面
仓库记录查询 仓库记录添加 仓库记录修改 名片记录查询 名片记录添加 名片记录修改 销售单据 报表浏览打印 密码设置 退出系统
按仓库浏览报表 按仓库打印报表 按品牌浏览报表 按品牌打印报表 按类型浏览报表 按类型打印报表 名片报表浏览
6.数据库表设计结构
(1)仓库表如下:
设计过程如下
(2)名片表结构如下
设计过程如下
(3)发票表结构如下
设计过程如下
(4)密码表结构如下
7.主要模块的设计说明和程序代码
主程序代码
set talk off
set stat off
set dele on
set safe off
set default to f:\软件\vfp2
do form f:\软件\vfp2\欢迎
欢迎界面
登陆界面
在该表单的数据环境中添加mm表,使其与mm内设置的用户名和密
码联系。
“确定”按钮的“click”事件中添加代码如下:
public 用户
set exact on
x1=allt(thisform.text1.value)
x2=allt(thisform.text2.value)
locate for allt(密码表.姓名)==x1
if !found()
k= messageb("该用户不存在,请重新输入!",1+32+0,"友情提示")
if k=1
thisform.text1.value=""
thisform.text1.setfocus
endif
else
yh=allt(thisform.text1.value)
if alltr(密码表.密码)==alltr(thisform.text2.value)
messageb("登录成功,欢迎使用!")
thisform.release
do form 主界面.scx
else
k=messageb("密码有误,请重新输入!",1+32+256,"警告")
if k=1
thisform.text2.value=""
thisform.text2.setfocus
endif
endif
endif
退出”按钮的“click”事件中添加代码如下:
x=messagebox('确认退出系统吗?',1+32+256,'友情提示')
if x=1
thisform.release
clear events
else
thisform.text1.value=""
thisform.text1.setfocus
endif
系统主界面
销售单据”按钮的“click”事件代码如下:do form 销售单据.scx
密码设置”按钮的“click”事件代码如下:do form 密码设置.scx
仓库查询记录”按钮的“click”事件代码如下:do form 查询记录.scx
仓库记录添加”按钮的“click”事件代码如下:do form 记录添加.scx
仓库记录修改”按钮的“click”事件代码如下:do form 记录修改.scx
名片记录查询”按钮的“click”事件代码如下do form 记录查询修改.scx
名片记录添加”按钮的“click”事件代码如下do form 记录添加.scx
仓库记录修改”按钮的“click”事件代码如下do form 记录修改.scx
报表浏览打印”按钮的“click”事件代码如下do form 报表浏览打印.scx
“退出系统”按钮的“click”事件代码如下:
x=messagebox('确认退出系统吗?',1+32+256,'确认退出')
if x=1
thisform.release
clear events
endif
密码修改
表单中“密码保存”命令按钮的“click”事件代码如下:
public 密码表
locate for alltr(密码表.姓名)=姓名
if alltr(密码表.密码)<>alltr(thisform.text1.value)
messageb("原密码有误,请重新输入!")
thisform.text1.value=""
thisform.text1.setfocus
return
else
if alltr(thisform.text2.value)<>alltr(thisform.text3.value)
messageb("新密码输入不一致,请重新输入!")
thisform.text2.value=""
thisform.text3.value=""
thisform.text2.setfocus
return
else
replace密码表.密码 with alltr(thisform.text2.value)
messageb("密码修改成功 ,请您记好新密码!")
thisform.release
endif
endif
“返回主界面”按钮的“click”事件代码为:do form 主界面.scx
查询记录(以仓库信息查询为例)
对于仓库中的一些货物,有时需要按照型号、类型、品牌、仓库来查找对应的库存。该表单只需在选项按钮组中选择需要的查找方式,然后在文本框中输入查询条件,单击“查询”按钮就可以在表格中找到对应的记录。在该表单的数据环境中添加“ck”表。
“查询”按钮的“click”事件中添加的代码如下:
do case
**选择按型号查询后的语句
case thisform.optiongroup1.value=1
sele ck
locate for alltr(ck.xh)==alltr(thisform.text1.value)
if found()
sele all pp as 品牌,lx as 类型,xh as 型号,sl as 数量,ck as 仓库,jhrq as 进货日期,bz as
备注;
from ck order by 3 ;
where alltr(ck.xh)==alltr(thisform.text1.value) into cursor temp
with thisform.grid1
.recordsourcetype=1
.recordsource="temp"
.columncount=7
.column1.header1.caption="品牌"
.column2.header1.caption="类型"
.column3.header1.caption="型号"
.column4.header1.caption="数量"
.column5.header1.caption="仓库"
.column6.header1.caption="进货日期"
.column7.header1.caption="备注"
endwith
thisform.refresh
thisform.grid1.setfocus
else
k=messageb("该型号无记录,请重新输入!",1+32+0,"友情提示")
if k=1
thisform.text1.value=""
thisform.text1.setfocus
endif
endif
**选择按类型查找代码
case thisform.optiongroup1.value=2
sele ck
locate for alltr(ck.lx)==alltr(thisform.text1.value)
if found()
sele all pp as 品牌,lx as 类型,xh as 型号,sl as 数量,ck as 仓库,jhrq as 进货日期,bz as
备注;
from ck order by 2 ;
where alltr(ck.lx)==alltr(thisform.text1.value) into cursor temp1
with thisform.grid1
.recordsourcetype=1
.recordsource="temp1"
.columncount=7