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