订单管理系统文档_第1页
订单管理系统文档_第2页
订单管理系统文档_第3页
订单管理系统文档_第4页
订单管理系统文档_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、订单管理信息系统一、系统概述(一)系统开发及应用背景随着社会经济的发展,社会的信息化程度越来越高,中小企业在信息化的过程中担任了很重要的角色,其信息化速度也较快。随着企业的发展,其对信息化的要求也越来越高,因此有必要使用一个完整的系统来管理企业的各种信息数据本次课程设计中我们小组通过开发一个完整的小型订单管理系统来帮助企业制定和开发一份企业管理信息系统,订单管理系统的总体任务是实现与订单相关的各种信息的系统化、规范化和自动化。(二) 、系统设计思想设计中创建“订单管理系统”的主要目的是实现对订单信息的管理,然而规划订单管理必然会涉及下订单的客户,以及订单中所涉及的产品,因此在系统中需要添加客户

2、信息滚利和产品信息管理的功能。一个信息管理系统必然由一定的用户来操作,要保证信息管理系统中信息正确,需要对能够操作信息的用户进行管理,因此在操作中添加了用户管理的功能。信息管理系统中管理各种信息的目的是在于日后能够对系统中的信息进行浏览、查询和输出,因此在系统中添加了信息浏览的功能。因此, 一个简单而完整的订单管理系统至少应该包含本系统中设计的信息管理、信息浏览和用户管理3 类功能。二、系统调查(一)系统目标及功能在本次课程设计中,我们小组确定开发的订单管理信息所要完成的的功能 有:1. 系统登录控制,必须使用特定的用户名和密码登录系统才能使用系统。2. 产品信息管理,管理订单所使用的产品信息

3、,可以浏览、增加、修改和删 除产品信息。3. 客户信息管理,管理下订单时客户的的信息,可以浏览、增加、修改和删4. 订单信息管理,管理订单的信息,可以浏览、增加、修改和删除订单信息,5. . 客户信息浏览,浏览系统中所有的客户信息,可以使用制定的关键字来查6. 产品信息浏览,浏览系统中所有的产品信息,可以使用制定的关键字查询7. 用户权限管理,本系统中是吸纳了简单的用户权限管理,普通用户仅能修改密码,而管理员则可以添加、修改、删除用户。根据上述的系统功能分析,可以得出如图1-1 所示的系统功能模块图客户浏览三、系统分析与设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏直接

4、对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。设计数据库系统时应该充分了解用户各个方面的需要,包括现有的及将来可能增加的需求。数据库设计一般包括如下几个步骤。数据库需求分析数据库概念结构设计 数据库逻辑结构设计(二)数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构,以及 数据处理的流程,组成一份详尽的数据字典,为后面的设计打下基础。通过上述系统功能分析,正对一般客户管理信息系统的需求,总结出如下的需求信息。订单信息涉及产品信息和客户信息。产品信

5、息和客户信息中需要存在唯一字段。产品信息和客户信息可以按几种常用的信息查询。产品信息、客户信息、订单信息应该可以增加、修改、删除和打印输出。用户信息中的用户名必须是唯一的。用户信息中必须包含权限信息。经过上述系统功能分析和需求总结,我们考虑到将来功能上的扩展,涉及如下面所示的数据项和数据结构。产品信息,包含编号、品名、单位、单价、类别、产地以及说明等。 客户信息,包含编号、名称、联系人、电话、地址、邮编等。 订单信息,包含订单编号、产品编号、产品数量、客户编号、联系人、 联系电话、送货地址、下单日期以及说明等。 用户信息,包含账号、密码、姓名、部门以及管理等。(三)数据库概念结构设计得到上面的

6、数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础,这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。本次课程设计中,根据上面的设计规划处的实体有:订单信息实体、客户信息实体、产品信息实体,以及用户信息实体,各实体具体的描述E-R图如下。、 “客户信息”和“产品信息”实体之间的 E-R 图如图 1-2E-R 图如图 1-3 所示E-R 图如图 1-4所示E-R 图如图 1-5 所示E-R 图如图 1.6所示(四)数据库逻辑结构设计数据库的概念结构设计完毕后,就可以将上面的数据库概念结构转化为实际数据模型,也就是数据库的逻辑结

7、构。使用 Visual FoxPro 开发直接使用其自带的数据库,订单管理系统中使用的各个数据表的字段设置如下。用户信息表(UserInfo)的字段设置如表1-1 所示。产品信息表(ProductInfo)的字段设置如表1-2 所示客户信息表(ClientInfo)的字段设置如表1-3所示订单信息表(OrderInfo )的字段设置如表1-4所示在 Visual FoxPro项目主窗口中选择【文件】中新建命令,选择新建项目OFA。项目创建后即可打开项目管理器,如表单1-1 所示。(一)创建可视化类信息管理模块中所使用的表单中都使用到了移动记录工具栏和命令按钮工具栏,若分别添加,其属性和代码将是

8、一件很繁琐的事,因此在本次课程设计中将首先创建可视类,然后在表单中添加创建的可视化类,就减少了工作量,又保证了组员间风格的一致。在本次试验中共需创建“移动记录工具栏”类和“命令按钮工具栏”这两个类。1、创建“移动记录工具栏”类( 1)创建可视类打开项目管理器,切换到“类”选项卡,单击该选项卡的新建,在“新建类” 对话框的 “类名” 文本框中输入可视化类的名称“ MOVERECORD ” ,在 “派生于” 下拉列表框中选择要新建的基类“ COMMANDGROUP ”, 单击 “存储于”文本框右侧的按钮,打开“另存为”对话框,选择存储位置,以及可视类库的名称,并将可视类库命名为“ADMINBUTT

9、ON ”设置完毕后,单击“确定”就完成了可视类的创建,打开了类设计器。在可视化类中设置类的“BUTTONCOUNT 属性值为4,并修改类及类中按钮的属性如表1-5 所示。控件名称属性属性取值moverecordbutton4height40width320按钮Frontbold.T.Forecolor0,0,255Height30width65cmdtopCaption首记录tooltiptext到第一条记录cmdpreCaption上一个tooltiptext到上一条记录CmdnxtCaption下一个tooltiptext到下一条记录cmdbtmCaption末记录tooltiptext到

10、最后一条记录可视化类“移动记录工具栏”及其中的控件后,可视类的效果如下图1-72)添加代码在本次实例中当鼠标移动到按钮上方时鼠标指针变为自定义形状,这需要在按钮的“MOUSEMOVE ”事件中添加代码来指定鼠标的指针形状,代码如程 1.1 所示LPARAMETERS nButton, nShift, nXCoord, nYCoordThis.MousePointer = 99& 鼠标指针为自定义形状This.MouseIcon = SYS(5)+h_point.cur& 指定鼠标的指针“首记录”按钮的 click 代码GO TOP& 到首记录THISFORM.REFRESH &刷新表单“移动记

11、录工具栏”类中的“上一个”按钮的 click 代码如程1.2所示* 如果到了数据表首部IF BOF() .OR. RECNO() = 1MessageBox(已到首记录,48,移动记录)ELSE* 如果数据指针不位于数据表首部SKIP-1ENDIF* 刷新表单THISFORM.REFRESH“移动记录工具栏”类中的“下一个”按钮的 click 代码如程1.3所示* 如果记录指针位于数据表末尾IF EOF() or RecNO() = RecCount()MessageBox(已到末记录,48,移动记录)* 如果记录指针不位于数据表末尾ELSE& 记录指针下移SKIPENDIF* 刷新表单THI

12、SFORM.REFRESH()“末记录”按钮的 click 代码如程1.4所示GO BUTTOM&到数据末尾THISFORM.REFRESH&刷新表单“移动记录工具栏”类中的4 个按钮设定是,根据表单中数据记录指针的位置不同,禁用或者启用不同的按钮,所以需将判断及操作代码添加到“移动记录工具栏”类的“refresh”事件中,具体代码如程1.5所示* 如果数据表为空或者只有一条记录IF BOF() .AND. EOF() .OR. RECCOUNT()=1THIS.Cmdtop.ENABLED=.F.THIS.Cmdpre.ENABLED=.F.THIS.Cmdnxt.ENABLED=.F.TH

13、IS.Cmdbtm.ENABLED=.F.ENDIF* 如果在记录指针在数据表的末尾IF RECNO()=RECCOUNT() .OR. EOF()THIS.Cmdtop.ENABLED=.T.THIS.Cmdpre.ENABLED=.T.THIS.Cmdnxt.ENABLED=.F.THIS.Cmdbtm.ENABLED=.F.ELSE* 如果记录指针在数据表的首部IF RECNO()=1 .OR. BOF()THIS.Cmdtop.ENABLED=.F.THIS.Cmdpre.ENABLED=.F.THIS.Cmdnxt.ENABLED=.T.THIS.Cmdbtm.ENABLED=.T.

14、ELSE* 如果记录指针不在数据表的首部也不在尾部THIS.Cmdtop.ENABLED=.T.THIS.Cmdpre.ENABLED=.T.THIS.Cmdnxt.ENABLED=.T.THIS.Cmdbtm.ENABLED=.T.ENDIFENDIF这样, “移动记录工具栏”类就创建完毕 !2、创建“命令按钮工具栏”类由于前面已详细介绍了“移动记录工具栏”类的创建,这里就不再一一介绍了,按照之前我们设想设置好类及按钮的属性后, “命令按钮工具栏”类的效果如图1-8与“移动记录工具栏”类相同,当鼠标移动到按钮上方时,鼠标指针要使用自定义鼠标指针,所以也要添加该类中的按钮的“mousemove

15、”事件代码如上。由于“命令按钮工具栏”类在各个表单中的效果相同,即可首先弹出一个确认话框,如果确认则退出当前表单,所以退出按钮的“click”事件代码如程1.6所示LOCAL YN& 声明本地变量* 确认对话框YN=MESSAGEBOX( 确定退出,4+32,订单管理系统)IF YN=6&如果确认THIS.PARENT.PARENT.RELEASEENDIF至此, “命令按钮工具栏”类创建完成。(二)创建系统主表单本次课程设计中,使用.PRG 程序作为主程序,由该程序设置运行的环境,并调用系统登录表单,系统通过后显示系统LOGO 表单,然后再试系统主表单,再由系统主表单调用其他表单完成系统提供

16、的各个功能。1 、创建系统主程序主程序是所编写的程序的入口,其作用是设置程序的运行环境,定义变量、常量,然后调用其他的表单,其代码如程1.7所示* 系统环境设置CLEARCLEAR ALLSET ESCAPE OFF& 禁止运行的程序在按ESC键被中断SET TALK OFF&关闭命令显示SET SAFETY OFF&覆盖时不要确认SET STAT BAR OFF&将状态栏关闭SET SYSMENU OFF&可关掉 VFP 系统菜单区域SET SYSMENU TO&关闭系统菜单SET CENTURY ON&显示四位年代SET DATE ANSI& 指定日期表达式的显示格式为yy.mm.dd*

17、避免多次运行程序* 声明 API 函数“ FindWindow ”DECLARE Integer FindWindow IN USER32.DLL String lpClassName,String lpWindowNamelpWindowName=订单管理系统IF .NOT. FindWindow(0,lpWindowName)=0 & 寻找窗口标题 =MESSAGEBOX( 程序已经运行了,48,订单管理系统)QUITENDIF_Screen.Caption=lpWindowName* 声明全局变量PUBLIC cUser,IsAdmin & 声明全局变量,用来保存系统中的登录用户* 调用

18、登录表单DO FORM Logon& 显示登录表单* 进入事物处理READ EVENTS2、创建系统主菜单打开项目管理器,切换到“其他”选项卡,在选项卡的类表框中选择“菜单”选项,新建菜单如下:由于菜单不是单独运行,而是内置在系统主表单中运行,所以还需要设置菜单的常规选项。打开菜单设计器,选择显示中常规选项命令,打开“常规选项”对话框,在此对话框中选中“顶层表单”复选框,这样菜单就可以与顶层表单一起运行了。菜单设计完成后,还需要生成可执行的菜单文件(.mpr文件) ,在菜单设计器中选择菜单生成命令,打开“生成菜单”对话框,在此对话框中的“输出文件”文本框中输入生成的可执行的菜单文件位置,单击确

19、定按钮即可。3、 创建用户管理模块“订单管理系统”中设计的用户管理模块包括系统登录、密码修改、添加用户、修改用户和删除用户5 项功能, 其中修改和删除用户功能在集成在一个表单中,下面分别介绍:( 1) 创 建“系统登录”表单设置表单一些基本属性之后,创建好的表单效果如下把用户信息表(userinfo)添加到数据环境中,之后便添加代码。“确定”按钮的“click”事件代码如程1.8所示* 改为精确比较SET EXACT ON试图登录次数自动加1THISFORM.i=THISFORM.i+1IF EMPTY(ALLTRIM( 账号 )MESSAGEBOX( 请输入账号名称,48,订单管理系统)TH

20、ISFORM.txt 账号 .SetFocusELSESELECT UserInfoLOCATE FOR ALLTRIM( 账号 )=ALLTRIM(THISFORM.txt 账号 .VALUE)& 查找用户* 用户名和密码正确IF FOUND() .AND. ALLTRIM( 密 码 )=ALLTRIM(THISFORM.txt 密 码 .VALUE)CUser=账号& 将登录用户的姓名存储到全局变量中IsAdmin=管理THISFORM.RELEASE()DO FORM LOGO& 执行 Logo 表ELSE* 用户名和密码错误IF THISFORM.i3& 如果次数小于3MESSAGEB

21、OX( 账号或密码错误, 请重新输入,48,订单管理系统)THISFORM.txt账号 .VALUE=THISFORM.txt密码 .VALUE=)THISFORM.txtELSE账号 .SETFOCUS& 如果已登录3 次MESSAGEBOX( 密码错误三次,系统无法启动,48,订单管理系统THISFORM.RELEASE& 退出表单CLEAR EVENTS& 结束事件循环QUIT& 退出 Visual FoxProENDIFENDIFENDIF* 改为模糊比较SET EXACT OFF“取消”按钮的“click”事件代码如程1.9所示* 声明本地变量LOCAL YN* 确认对话框YN=ME

22、SSAGEBOX( 确定退出,4+32,订单管理系统)* 如果确认IF YN=6THISFORM.RELEASECLEAR EVENTSQUITENDIF& 退出当前表单& 结束事务处理& 退出 Visual FoxPro2) 创 建“修改密码”表单将“用户信息表”添加到表单数据环境中,其代码添加介于篇幅就不详细介绍了。同上“修改用户表单与删除用户表单”也不一一介绍了。(3)创 建“修改密码”表单将“用户信息表”添加到表单数据环境中,其代码添加介于篇幅就不详细了。4、 创建信息浏览表单( 1)创建“产品信息浏览”表单命名为 “ proselect” 将 “产品信息”表添加到表单的数据环境中,I

23、F .NOT. EMPTY(ALLTRIM(THISFORM.txt 产品编号.Value)SelTJ=SelTJ + AND + ALLTRIM(THISFORM.txt 产品编号 .Value) + $ 编号 ENDIFIF .NOT. EMPTY(ALLTRIM(THISFORM.txt 产品名称.VALUE)SelTJ=SelTJ + AND + ALLTRIM(THISFORM.txt 产品名称 .Value)+ $ 品名 ENDIFSELECT ProductInfoSET FILTER TOSET FILTER TO &SelTJ 添加“产品信息浏览”表单的“init ”事件代码

24、如程2.1 所示PARAMETERS cFormModeTHISFORM.FormMode=cFormModePUBLIC SelTJSelTJ=.T.SELECT ProductInfoSET FILTER TOIF THISFORM.FormMode=cBrowseTHISFORM.Grid1.Column1.Header1.Caption=编号THISFORM.CmdPrint.Visible=.T.THISFORM.CAPTION= 产品信息浏览ELSEIF THISFORM.FormMode=cSelectTHISFORM.Grid1.Column1.Header1.Caption=

25、编号(双击选择) THISFORM.CmdPrint.Visible=.F.THISFORM.CmdExit.Left=THISFORM.CmdExit.Left-35THISFORM.CAPTION= 产品信息选择ENDIFENDIFTHISFORM.Refresh当“产品信息浏览”表单作为“产品信息选择”表单时在表单推出是要向调用的该表单的表单返回值,即添加一个“return”语句,添加“产品信息浏览”表单的“unload”事件代码如程2.2所示IF THISFORM.FormMode=cSelectReturn THISFORM.SelectedProENDIF当“产品信息浏览”表单作为

26、“产品信息选择”表单时,在表格控件的第一列中双击时即可选择该条记录,并将该记录的“编号”字段值返回给调用表单,添加“产品信息浏览”表单的表格控件的第一列文本框的“dblclick”事件,代码如程 2.3所示If thisform.formmode= ” cselect”thisform.selectedpro=alltrim(this.value)thisform.releaseendif查看按钮的“click”代码如程 2.4所示SelTJ=.T.THISFORM.Refresh“打印 ”按钮的“ click”代码如程2.5所示REPORT FORM ProductInfo Preview

27、FOR &SelTJ“退出 ”按钮的“click”代码如程2.6所示YN=MESSAGEBOX( 确定退出,4+32,订单管理系统)IF YN=6IF THISFORM.FormMode=cSelectTHISFORM.SelectedPro=0000000000ENDIFTHISFORM.ReleaseENDIF至此, “产品信息管理”表单创建完毕。2)创建“产品信息浏览”表单5、 创建信息管理模块( 1)创建产品信息管理表单将“产品信息”表添加到表单数据环境中,把之前创立的两个类控件添加到表单中,由于在这里还使用了一个自定义方法“modecontrol” ,其代码如程2.7Local Be

28、Modify,BeBrowseBeModify=THISFORM.bModify BeBrowse=THISFORM.bBrowse THISFORM.txt 编号.ReadOnly=.NOT.BeModifyTHISFORM.txt 品名.ReadOnly=.NOT.BeModifyTHISFORM.txt 单位.ReadOnly=.NOT.BeModifyTHISFORM.txt 单价.ReadOnly=.NOT.BeModifyTHISFORM.txt 类别.ReadOnly=.NOT.BeModifyTHISFORM.txt 产地.ReadOnly=.NOT.BeModifyTHISF

29、ORM.txt 说明.ReadOnly=.NOT.BeModifyTHISFORM.ProMoveRec.Enabled=.NOT. BeModify THISFORM.ProAdminButton.CmdAdd.Enabled=.NOT. BeModify THISFORM.ProAdminButton.CmdMod.Enabled=.NOT. BeModify THISFORM.ProAdminButton.CmdDel.Enabled=.NOT. BeModify THISFORM.ProAdminButton.CmdPri.Enabled=.NOT. BeModify THISFORM

30、.ProAdminButton.CmdExit.Enabled=.NOT. BeModify THISFORM.ProAdminButton.CmdSave.Enabled=BeBrowseTHISFORM.ProAdminButton.Cmdccl.Enabled=BeBrowse“产品信息管理”表单的“init ”事件代码2.8* 选择“产品信息”表所在的工作区SELECT ProductInfo* 清除工作区中可能存在的过滤条件SET FILTER TO* 如果“产品信息”表为空IF EOF() AND BOF() OR RECCOUNT()=0* 表单进入“数据表为空”状态THISFORM.bModify=.T.THISFORM.bBrowse=.F.THISFORM.ModeControlTHISFORM.ProAdminButton.CmdAdd.Enabled=.T.THISFORM.ProAdminbutton.CmdExit.Enabled=.T.ELSE* 表单进入浏览状态THISFORM.bModify=.F.THISFORM.bBrowse=.F.THISFORM.Mode

温馨提示

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

评论

0/150

提交评论