订货管理系统设计VFP设计.docx
- 文档编号:3771050
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:66
- 大小:1.24MB
订货管理系统设计VFP设计.docx
《订货管理系统设计VFP设计.docx》由会员分享,可在线阅读,更多相关《订货管理系统设计VFP设计.docx(66页珍藏版)》请在冰点文库上搜索。
订货管理系统设计VFP设计
第1章系统概述
1.1系统功能
在社会经济发展,社会的信息化程度越来越高,中小企业在信息化的过程中担任了很重要的角色,其信息化速度也较快。
另外随着企业的发展,其对信息化的要求也越来越高,使用信息化的管理手段将明显地减少管理的工作量,并使管理的过程规范化和自动化。
因此有必要使用一个完整的系统来管理企业的各种信息数据。
本说明书通过一个完整的小型订货管理系统来介绍如何定制及开发一个企业信息管理系统。
本系统开发的总体任务是实现与订货相关的各种信息的系统化、规范化和自动化。
系统主要完成的功能如下:
●系统登录控制:
必须使用特定的用户名和密码登录系统后才能使用。
●产品信息管理:
管理订货中所使用的产品信息,可以浏览、增加、修改和删除产品信息。
●客户信息管理:
管理订货时客户的信息,可以浏览、增加、修改和删除客户信息。
●订货信息管理:
管理订货的信息,可以浏览、增加、修改和删除订货信息,在增加订货时需要使用的产品信息和客户信息必须首先通过产品信息管理和客户信息管理功能添加。
●客户信息浏览:
浏览系统中所有客户的信息,可以使用指定的关键字查询相应的客户,并且可以使用报表的形式将查询结果输出。
●产品信息浏览:
浏览系统中所有产品的信息,可以使用指定的关键字查询相应的产品,并且可以使用报表的形式将查询结果输出。
●用户权限管理:
实现简单的用户权限管理,普通用户仅能修改自己的密码,而管理员用户可以添加、修改和删除用户。
1.2系统设计思想
订货管理系统的主要目的是实现对订货信息的管理,然而规范的订货信息管理必然会涉及订货的客户,以及订货中所涉及的产品,因此在系统中需要添加客户信息管理和产品信息管理的功能。
一个信息管理系统必然由一定的用户来操作,要保证信息管理系统中的信息正确,需要对能够操作系统的用户进行管理,因此在系统中添加了用户权限管理的功能。
信息管理系统中管理各种信息的目的是在于日后能够对系统中的信息进行浏览、查询、输出的备份,因此系统中添加了信息浏览、备份等功能。
因此,一个简单而完整的订货管理系统包含了信息管理、信息浏览和用户管理等功能。
1.3系统功能模块
根据上述的系统功能分析,得出如图1所示的系统功能模块图。
图1 系统功能模块图
第2章数据库设计
2.1数据库需求分析
数据库在一个管理系统中占有非常重要的地位,设计的好坏将直接对应用系统的效率以及实现产生影响。
本系统中用户的需求具体体现在各种信息的提供、保存和查询,这就要求数据库结构能充分满足各种信息的输入和输出。
因此,本系统的需求信息为:
●订货信息涉及产品信息和客户信息。
●产品信息和客户信息中需要存在惟一的字段。
●产品信息和客户信息可以进行信息的模糊查询。
●产品信息、客户信息和订货信息可以增加、删除、修改和打印输出。
●用户信息的用户名必须是惟一的以及包含权限信息。
综合上述的系统功能分析和需求分析,设计如下的数据结构:
⏹产品信息,包含编号、品名、单位、单价、产地、说明等。
⏹客户信息,包含编号、名称、联系人、电话、地址等。
⏹订货信息,包含订货编号、产品编号、产品数量、客户编号、电话、送货地址、订货日期、说明等。
⏹用户信息,包含账号、密码、姓名、部门、权限等
2.2数据库结构设计
根据上面的分析,就设计出能满足用户需求的各种实体,以及它们之间的关系。
设计出的实体有:
订货信息实体、客户信息实体、产品信息实体和用户信息实体。
各个信息实体具体的描述E-R图如下。
产品信息、客户信息和订货信息实体之间关系的E-R图如图2所示。
图2 实体之间关系的E-R图
订货信息实体的E-R图如图3所示。
图3 订货信息实体的E-R图
产品信息实体的E-R图如图4所示。
图4 产品信息实体的E-R图
客户信息实体的E-R图如图5所示。
图5 客户信息实体的E-R图
用户信息实体的E-R图如图6所示。
图6 用户信息实体的E-R图
2.3数据表结构设计
VisualFoxPro开发时可以直接使用自带的数据库,订货管理系统中使用的各个数据表的字段设置如下。
用户信息(UserInfo)的字段设置如表1所示。
表1 用户信息表(UserInfo)
字段名
类型
宽度
是否为空
默认值
说明
账号
字符型
10
否
主索引字段
密码
字符型
10
否
姓名
字符型
8
是
部门
字符型
10
是
管理
逻辑型
1
否
.F.
账号管理权限
产品信息表(ProductInfo)的字段设置如表2所示。
表2 产品信息表(ProductInfo)
字段名
类型
宽度
小数位数
索引
是否为空
编号
字符型
8
主索引
否
品名
字符型
30
否
单位
字符型
4
否
单价
数值型
8
1位小数
否
类别
字符型
10
否
产地
字符型
10
是
说明
字符型
40
是
订货信息表(OrderInfo)的字段设置如表3所示。
表3 订货信息表(OrderInfo)
字段名
类型
宽度
小数位数
索引
是否为空
订货编号
字符型
8
主索引
否
产品编号
字符型
8
普通索引
否
产品名称
字符型
30
否
产品单价
数值型
8
1位小数
否
产品数量
数值型
6
否
订货总额
数值型
10
1位小数
是
客户编号
字符型
8
普通索引
客户名称
字符型
30
下单日期
日期型
8
送货地址
字符型
30
联系人
字符型
8
联系电话
字符型
20
备注
字符型
20
客户信息表(ClientInfo)的字段设置如表4所示。
表4 客户信息表(ClientInfo)
字段名
类型
宽度
小数位数
索引
是否为空
编号
字符型
8
主索引
否
名称
字符型
30
否
联系人
字符型
8
否
地址
字符型
30
否
电话
字符型
20
否
说明
字符型
30
是
第3章可视化类及系统主表单
3.1可视化类
在系统中要多次使用移动记录工具栏和命令按钮工具栏,每个表单都各做是很繁琐的。
因此,创建可视化类可以减小工作量,又能保证风格的统一。
移动记录工具栏可视类的效果如图7所示。
图7移动记录工具栏
移动记录工具栏类中的4个按钮是根据表单记录指针的位置不同,禁用或者启用不同的按钮,具体为:
●数据表为空或者只有一条记录,禁用4个按钮。
●记录指针位于数据表开始,禁用“首记录”和“上一个”按钮。
●记录指针位于数据表末尾,禁用“末记录”和“下一个”按钮。
●记录指针位于数据表中部,启用4个按钮。
移动记录工具栏类的Refresh事件代码:
-------------------------------------------------------------------------
*如果数据表为空或者只有一条记录
IFBOF().AND.EOF().OR.RECCOUNT()=1
THIS.Cmdtop.ENABLED=.F.
THIS.Cmdpre.ENABLED=.F.
THIS.Cmdnxt.ENABLED=.F.
THIS.Cmdbtm.ENABLED=.F.
ENDIF
*如果在记录指针在数据表的末尾
IFRECNO()=RECCOUNT().OR.EOF()
THIS.Cmdtop.ENABLED=.T.
THIS.Cmdpre.ENABLED=.T.
THIS.Cmdnxt.ENABLED=.F.
THIS.Cmdbtm.ENABLED=.F.
ELSE
*如果记录指针在数据表的首部
IFRECNO()=1.OR.BOF()
THIS.Cmdtop.ENABLED=.F.
THIS.Cmdpre.ENABLED=.F.
THIS.Cmdnxt.ENABLED=.T.
THIS.Cmdbtm.ENABLED=.T.
ELSE
*如果记录指针不在数据表的首部也不在尾部
THIS.Cmdtop.ENABLED=.T.
THIS.Cmdpre.ENABLED=.T.
THIS.Cmdnxt.ENABLED=.T.
THIS.Cmdbtm.ENABLED=.T.
ENDIF
ENDIF
-------------------------------------------------------------------------
命令按钮工具栏类的效果如图8所示。
图8移动记录工具栏
命令按钮工具栏类,由于在表单中创建可视类的对象后,类中的各个按钮的操作对象不同,所以代码要在创建可视类的对象后再添加。
3.2系统主表单
本系统中使用.PRG程序作为主程序,由该程序设置运行的环境,并调用系统登录表单。
登录通过后显示Logon表单,然后才是系统主菜单,再由系统主菜单调用其他表单来完成系统提供的各个功能。
系统主程序代码:
-------------------------------------------------------------------------
*——系统环境设置
CLEAR&&清屏
CLEARALL&&从内存中释放所有的内存变量
SETESCAPEOFF&&禁止运行的程序在按ESC键被中断
SETTALKOFF&&关闭命令显示
SETSAFETYOFF&&覆盖时不要确认
SETSTATBAROFF&&将状态栏关闭
SETSYSMENUOFF&&可关掉VFP系统菜单区域
SETSYSMENUTO&&关闭系统菜单
SETCENTURYON&&显示四位年代
SETDATEANSI&&指定日期表达式的显示格式为yy.mm.dd
*——避免多次运行程序
*——声明API函数“FindWindow”
DECLAREIntegerFindWindowINUSER32.DLLStringlpClassName,StringlpWindowName
lpWindowName="订货管理系统"
IF.NOT.FindWindow(0,lpWindowName)==0&&寻找窗口标题
=MESSAGEBOX("程序已经运行了",48,"订货管理系统")
QUIT
ENDIF
_Screen.Caption=lpWindowName
*——声明全局变量
PUBLICcUser,IsAdmin&&声明全局变量,用来保存系统中的登录用户
*——调用登录表单
DOFORMLogon&&显示登录表单
*——进入事物处理
READEVENTS&&进入事务处理
QUIT&&退出VisualFoxPro
-------------------------------------------------------------------------
系统主表单是一个状态控件其作用是作为程序主窗口、装载主菜单、装载状态栏。
系统主表单在初始化时,需要调用系统主菜单,然后将登录用户的用户名显示在状态栏中。
系统主表单的Init事件代码:
-------------------------------------------------------------------------
*——调用系统主菜单
DOMain.MPRWITHThis
*——显示当前登录用户
THISFORM.OLEcontrol1.Panels
(2).Text=CUser
*——刷新表单
THISFORM.Refresh
-------------------------------------------------------------------------
系统主菜单的结构如表5所示。
系统中的所有信息管理、浏览功能都是通过系统主表单中的菜单调用的,系统中实现的简单用户权限管理也是通过菜单来实现的。
表5 系统主菜单结构
菜 单
菜单项
结 果
命 令
跳过条件
系统
数据备份
命令
doformdatabackup
数据恢复
命令
doformdatarestore
\-
命令
退出
命令
Quit
信息管理
产品信息管理
命令
doform产品管理
客户信息管理
命令
doform客户管理
订货信息管理
命令
doform订货管理
信息浏览
产品信息浏览
命令
doform产品浏览with"cBrowse"
客户信息浏览
命令
doform客户浏览with"cBrowse"
用户管理
添加用户
命令
doformAdduser
IsAdmin=.F.
修改用户
命令
doformSetuserwith"cModify"
IsAdmin=.F.
删除用户
命令
doformSetuserwith"cDelete"
IsAdmin=.F.
修改密码
命令
doformSetpass
数据
订货报表
命令
do.\档案过程.prg
订货总额
命令
do.\订货总额.qpr
关于
关于
命令
doform关于
心灵感应
命令
doform心灵感应
第4章用户管理模块
用户管理模块包括系统登录、修改密码、修改和删除用户、添加用户5项功能,其中修改和删除用户功能是集成在一个表单中。
有账号管理权限的用户登录系统后,才能执行修改用户、删除用户和添加用户功能。
4.1系统登录表单
系统登录(Logon)表单如图9所示。
在使用中如果用户名为空,则弹出“账号不能为空”对话框,等待输入;如果连续3次输入的账号或者密码错误,则弹出警告对话框后退出系统。
账号和密码都正确,则将用户名存储在全局变量“Cuser”中,将用户是否具有账号管理权限存储在全局变量“IsAdmin”中,退出系统登录表单,调用系统Logo表单。
“确定”按钮的Click事件代码:
------------------------------------------------------------------------------
*——改为精确比较
SETEXACTON
*——试图登录次数自动加1
THISFORM.i=THISFORM.i+1
*——选择“系统用户信息”表所在的工作区
SELECTUserInfo
*——查找用户名
LOCATEFORALLTRIM(账号)=ALLTRIM(THISFORM.txt账号.VALUE)
*——如果找到用户名
IFFOUND()
*——如果密码正确
IFALLTRIM(密码)=ALLTRIM(THISFORM.txt密码.VALUE)
*——将登录的用户名保存到全局变量中
CUser=账号
IsAdmin=管理
*——退出表单
THISFORM.RELEASE
*——调用系统Logo表单
DOFORMLogo
ELSE
*——如果密码错误
*——如果次数小于3
IFTHISFORM.i<3
MESSAGEBOX("密码错误,请重新输入",48,"订货管理系统")
THISFORM.txt账号.VALUE=""
THISFORM.txt密码.VALUE=""
THISFORM.txt账号.SETFOCUS
ELSE
*——如果次数为3
MESSAGEBOX("用户名或者密码错误三次,系统无法启动",16,"订货管理系统")
*——退出表单
THISFORM.RELEASE
*——结束事件循环
CLEAREVENTS
*——退出VisualFoxPro
QUIT
ENDIF
ENDIF
ELSE
IFTHISFORM.i<3
MESSAGEBOX("账号不存在,请重新输入",48,"订货管理系统")
THISFORM.txt账号.VALUE=""
THISFORM.txt密码.VALUE=""
THISFORM.txt账号.SETFOCUS
ELSE
MESSAGEBOX("账号或者密码错误三次,系统无法启动",16,"订货管理系统")
THISFORM.RELEASE&&退出表单
CLEAREVENTS&&结束事件循环
QUIT&&退出VisualFoxPro
ENDIF
ENDIF
*——改为模糊比较
SETEXACTOFF
图9系统登录表单
账号、密码正确后进入到欢迎使用界面Logo表单如图10所示。
该界面中显示程序的名称、制作人、版权等信息,并播放登录音乐。
图10欢迎使用界面表单
Logo表单的Init事件代码:
------------------------------------------------------------------------------
SETBELLON
SETBELLTO'.\MUSIC\welcome.wav',2
?
?
CHR(7)
“进入”按钮的Click事件代码:
------------------------------------------------------------------------------
*--调用“Mainform”表单
DOFORMMainform
*--退出“logo”表单
THISFORM.RELEASE()
4.2修改密码表单
修改密码(SetPass)表单如图11所示。
该表单是用来更改当前登录用户的密码。
图11修改密码表单
“确定”按钮的Click事件代码:
------------------------------------------------------------------------------
*——声明本地变量,记录表单中输入情况
LOCALOK
*——默认是输入无误
OK=.T.
*——比较方式为精确比较
SETEXACTON
*——检测表单中数据输入情况
DOCASE
*——如果新密码为空
CASEEMPTY(ALLTRIM(THISFORM.txt新密码.VALUE)).AND.EMPTY(ALLTRIM(THISFORM.txt确认密码.VALUE))
MESSAGEBOX("新密码不能为空",48,"订货管理系统")
THISFORM.txt新密码.SETFOCUS
OK=.F.
*——如果新密码与确认密码不一致
CASEALLTRIM(THISFORM.txt新密码.VALUE)<>ALLTRIM(THISFORM.txt确认密码.VALUE)
MESSAGEBOX("新密码与确认密码不一致",48,"订货管理系统")
THISFORM.txt新密码.SETFOCUS
OK=.F.
ENDCASE
*——如果输入无误
IFOK=.T.
*——检测原密码输入情况
SELECTUSERINFO
LOCATEFORALLTRIM(账号)=ALLTRIM(cuser).AND.ALLTRIM(密码)=ALLTRIM(THISFORM.txt原密码.VALUE)
*——如果输入正确
IFFOUND()
LOCALNewPass
NewPass=ALLTRIM(THISFORM.txt新密码.VALUE)
UPDATEUSERINFOSET密码=NewPass&&修改密码
MESSAGEBOX("修改成功",64,"订货管理系统")
THISFORM.RELEASE
ELSE
*——如果原密码错误
MESSAGEBOX("原密码错误",48,"订货管理系统")
THISFORM.txt原密码.SETFOCUS
ENDIF
ENDIF
*——改为模糊比较
SETEXACTOFF
------------------------------------------------------------------------------
4.3修改和删除用户表单
修改用户和删除用户(SetUser)表单如图12、图13所示。
修改用户和删除用户功能是使用一个表单来完成的。
因此,表单在接收到参数值后根据参数值来确定使用哪种功能,其不同点为表单标题和CmdOK按钮的初始标题。
CmdOK按钮有3种标题修改、确定和删除。
图12修改用户表单
修改用户和删除用户(SetUser)表单的Init事件代码:
--------------------------------------------------------------------------
*——声明参数,用来接收执行参数
PARAMETERScFormMode
*——将接到的参数值保存到表单属性中
THISFORM.FormMode=cFormMode
*——如果参数值为“cModify”
IFTHISFORM.FormMode="cModify"
*——表单作为“修改用户”表单
THISFORM.txt密码.Width=200
THISFORM.CmdOK.Caption="修改"
ELSE
*——表单作为“删除用户”表单
THISFORM.txt密码.Width=200
THISFORM.CmdOK.Caption="删除"
THISFORM.CAPTION="删除用户"
ENDIF
*——表单进入浏览状态
THISFORM.bModify=.F.
THISFORM.ModeControl
*——刷新表单
THISFORM.Refresh
--------------------------------------------------------------------------
“CmdOK”按钮的Click事件代码:
--------------------------------------------------------------------------
*——当“确定”按钮的标题为“修改”时,如果单击该按钮
IFTHIS.CAPTION="修改"
*——表单进入修改状态
THIS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 订货 管理 系统 设计 VFP