1、一个三层架构的进销存管理系统设计实 习 报 告姓名:queen 日期:2007-1012目 录一、软件需求分析21.1 系统设计原则21。2 实现目标3二、系统概要设计42.1平台要求42。2 软件体系结构4三、系统详细设计53。1 客户端详细设计53。1.1 客户端的功能51前台收银系统52后台管理系统53。1.2 设计细节63.2 服务器端详细设计133.2。1 服务器端的功能133.2.2 设计细节13四、软件实现过程164。1 客户端窗体164.2 服务器端设置窗体17五、软件测试过程195.1 运行环境测试195.1。1 任务195。1。2 测试过程195.1。3 测试结果195。1
2、.4 评价195.2 软件功能测试195。2。1 任务195。2。2 测试过程195。2.3 测试结果205。2。4 评价20一、 软件需求分析商品零售业的核心问题是如何高效地管理进货销售调拨和存货等业务。随着商品零售业的发展,商业运作模式日趋多样化,以往的单机版的进销存存在过于简单,自动化程度差,数据安全性差,缺少辅助决策功能等不足,不能适应如今大型超市和连锁经营的需要。1。1 系统设计原则先进性系统应包含成熟的网络通信和数据库技术的设计,对于数据库访问应具备容错性.可靠性数据库系统必须是安全可靠的分布式数据库系统, 能确保数据的一致性和完整性,并使系统免受病毒感染,提供完善的数据备份方案和
3、系统工程崩溃后的恢复手段。可维护性系统提供强有力的网络,数据库管理,维护和监测功能,能有效地进行网络系统和数据库系统的管理,维护,监视和故障恢复, 使系统保持良好的性能,以方便用户的使用和维护。可扩充性应用软件实现模块相互独立,控制程序和执行程序相分离,具有高度的程序独立性和数据独立性, 使机构和业务变化的影响至最小,方便了扩充和修改。安全保密性系统在系统级,数据库级和应用级提供三级权限控制功能,检查用户是否具有合法身份和权限,以防止非用户的入侵或数据的不合法使用, 有效地保护数据的安全性。应用系统的设计应充分地,合理地利用系统提供的多种机制和功能,把商业销售与管理系统建成一个高安全性的系统。
4、实用性用户界面直观,友好, 各类人员只需经过简单培训即可上手操作。其他考虑到大多数大件商品零售企业在企业信息化方面都有不同程度的投资, 从保护现有投资的角度出发,客户端应该具有相对较低的平台要求。1。2 实现目标销售数据的及时汇总进销存业务全部电脑化, 提高办公效率和工作质量.强化以库存为中心的管理模式, 严格控制库存量, 降低运作成本。以库存,销售,供货商信息为基础, 动态地自动产生订货单,既降低库存,又避免缺货。以库存,销售信息为基础, 动态地自动产生调拨单,确保卖场不断货。提供完善合理的供货商结算机制,解决结算难问题及时提供多种统计报表,为管理人员经营决策提供可靠的分析数据。严格的数据保
5、密机制,所有用户均须根据权限进行有限的操作, 提高系统安全性。保护商业机密 。三层架构的进销存管理系统是一个采用三层客户机/服务器结构的网络应用程序.具有如下优势: 数据库服务器集中管理企业数据,克服了单机应用的很多弊端. 系统的应用逻辑由应用程序服务器集中处理,可高效地访问数据库和管理客户连接, 并有效地对客户端实施监测。 工作站的工作量较轻,可以利用已有PC机运行,保护了各企业已有的投资.在程序设计技术方面,三层架构的进销存管理系统向读者展示了高级用户界面设计等Windows程序开发技术的应用,读者可以在阅读中充分体会。二、系统概要设计2。1平台要求操作系统:客户端和服务器端均可运行于Wi
6、ndows 2000和Windows XP平台的各个版本上.开发工具:含MFC支持的Microsoft Visual Studio 6.0。SQL server 20002.2 软件体系结构本系统服务器,客户端都设计成单文档/视图结构。服务器端包括一个主模块和通信模块,数据库访问模块, 在主模块中处理系统业务,对通信模块和数据库访问模块的调度。客户端的结构和服务器端结构类似。客户端程序的各项功能都是这样添加到文档/视图结构的框架中的.三、系统详细设计3。1 客户端详细设计3。1.1 客户端的功能1前台收银系统 支持多种形式经营模式 支持多种形式促销方式, 如打折,变价,赠送等 支持商品组销售
7、支持会员制销售方式 商品,库存查询功能 单键商品定义功能 前台统计 用户权限管理、 营业员业绩考核2后台管理系统 业务子系统 维护子系统 统计子系统 供货商结算子系统 领导查询号子系统3。1。2 设计细节(1) 协议设计本系统的协议设计按照逐级划分的办法编码,协议命令的每一位用一个阿拉伯数字表示该命令对应的类别 。编码规则如下:第一位:1表示发送,2表示接收 第二位:大类的编号第三位:小类的编号第四位:小类的操作命令第五位:返回值有关的协议命令的格式和流程如下.u 采购及订货管理 自动订货管理 1120:发送查询销售量大于一定数量和小于一定数量的商品及其现有存货量的请求。2120:返回商品名称
8、,销售量,存货量,生产厂家等 缺货超储商品管理1130:发送查询存货量小于一定值和超过一定值的商品的请求.2130:返回商品名称,存货量。u 入库、验收、出库及退货管理 入库: 1210:发送存储供应商资料、商品分类资料、单品资料到“入库单”的请求。2210:返回存储成功或失败标志1211:发送查询入库单最大编号的请求 2211:返回入库单最大编号1212:发送根据商品编号查询商品基本资料的请求2212:返回商品基本资料 验收:1220:发送查询最大验收单号请求2220:返回查询结果1221:发送查询入库单的请求2221:返回查询结果1222:发送存储验间单的请求2222:返回存储成功或失败的
9、请求1223:发送更新入库单的请求2223:返回更新成功或失败标志 出库:1230:发送查询出库单最大编号的请求2230:返回查询号结果1232:发送存储出库单的请求2232:返回存储成功或失败的请求1233:发送查询送货或收款凭据的请求 2233:返回查询结果 退货:1240:发送“库房退货”请求,减少商品库存账2240:返回存储成功或失败标志1241:发送“商场退货”请求,减少商品库存账.2241:返回存储成功或失败标志。1242:发送“损坏商品退货出库请求,减少损坏商品数量和金额。2242:返回存储成功或失败标志. 正常销售1311:发送存储“送货单”请求2311:返回存储成功或失败标志
10、1312:发送为送货和约查询“收款凭证的请求2312:返回存储成功或失败标志1313:发送根据送货单号查询送货明细的请求2313:返回查询结果1314:发送根据编号查询“收款凭证”字段给送货和约的请求2314:返回查询结果1315:发送查询“送货单”的请求2315:返回查询结果1316:发送修改“送货单”的请求2316:返回修改成功或失败标志 预定销售1320:发送存储“订货和约”请求2320:返回存储成功或失败标志13201:发送查询订货和约最大编号的请求23201:返回查得的最大编号值1321:发送查询“订货合约”部分字段的请求2321:返回结果字段1322:发送存储“收款凭证请求2322
11、:返回存储成功或失败标志13221:发送查询收款凭证最大编号的请求23221:返回查得的发送查询“送货单的请求1323:发送查询“订货合约”全部字段的请求2323:返回结果字段1311:发送存储“送货单”请求2311:返回存储成功或失败标志13111:发送查询送货单最大编号的请求23111:返回查得的最大编号值 尾款收取1331:发送查询“收款凭证的请求2331:返回查询结果1332:发送修改收款凭证”的请求2332:返回修改成功或失败标志 提货1340:发送查询最大调拨单号的请求2340:返回查询号结果1341:发送存储“商品调拨单的请求2341:返回存储成功或失败标志 销售情况查询1350
12、:发送根据关键字模糊查询“送货单”请求2350:返回查询结果 盘点管理1410:发送查询剩余商品的请求2410:返回查询结果1411:发送存储“收款凭证请求2411:返回存储成功或失败标志 报表查询1510:发送根据起止日期查询部门销售业绩的请求2510:返回查询结果1511:发送根据起止日期查询营业员销售业绩的请求2511:返回查询结果1512:发送根据起止日期查询供货员销售业绩的请求2512:返回查询结果1513:发送根据起止日期查询号供货商销售业绩的请求2513:返回查询结果1514:发送根据起止日期查询商品销售明细的请求2514:返回查询结果1515:发送根据起止日期查询商品进货明细的
13、请求2515:返回查询结果1516:发送根据起止日期和排行关键字查询商品销售排行的请求2515:返回查询结果1517:发送库存盘点请求2517:返回盘点结果1518:发送滞销商品统计请求2518:返回统计结果1519:发送预付统计请求2519:返回统计结果 营业员管理1610:发送查询销售金额的请求2610:返回总金额的一定百分比 经理管理 1620:发送查询负责的所有营业员销售金额的请求2620:返回总金额的一定百分比 安装工管理1630:发送查询安装数量的请求2630:返回结果(2)模块主流程客户端应用程序主模块的主要功能是构建应用程序框架、控制用户权限和管理通信块以及各个功能模块。主模块
14、的工作流程如下:客户端程序在服务器端启动后启动,程序首先弹出一个登录对话框,提示用户输登录名和登录密码,经服务器端确认后进入程序的运行界面。客户端应用程序是服务的主动请求方。用户通过菜单或工具栏的快捷按钮激活功能模块,功能模块直接调用通信模块和服务器端联系.用户退出功能模块后,主模块重新获得程序的控制权,等待下一个功能模块被激活和操作,直到用户退出客户端程序。(3)类设计和服务器端程序类似,客户端程序主模块由MFC文档/视图结构的基本类组成。CJXCApp类CJXCApp类是客户端的应用程序类,派生自CwinApp,它主要负责维护程序状态和应用程序运行的消息循环。CMainFrame类CMai
15、nFrame类是客户端应用程序的主窗口类,它派生自CframeWnd,其主要作用是维持客户端的用户界面.CJXCDoc类CJXCDoc类是客户端主模块文档/视图结构的文档类,它派生自COleServerDoc类,主要负责处理来自服务器端的命令和一些主菜单命令。CJXCView类.CJXCView类是客户端主模块文档/视图结构的视图类,它派生自Cview类,其主要作用是处理各种和客户端程序功能密切相关的菜单命令,这些菜单命令大体上分为功能模块操作和报表打印命令两大类.下图是客户端主模块类图:图2 客户端主模块类图(4).通信模块设计和服务器端通信模块类似,客户端通信模块包括一个数据包格式的表示类
16、Cmessage和一个通信套接字类CSerViceSocket,CMessage类和服务器端的CMessage类完全相同,且CSerViceSocket类也具有和服务器端的CServiceSoclcet类似的声明形式.主模块和其它各个功能模块需要和服务器通信时,都直接调用本模块.(5)商品基本资料管理模块设计本模块在功能上包括商品基本资料管理和供货商资料管理两部分。(1)表设计商品基本资料管理模块是查询、增删、更新商品和供货商等资料的一个客户端功能模块。该模块主要是对数据库中”商品基本资料”表和”供货商资料”表的操作.图3是系统数据库中这两个表的设计。图3:“商品基本资料”表和“供货商资料”表
17、的设计 (2)模块主流程商品基本资料管理和供货商资料管理有着类似的工作流程.因此,这里以商品基本资料为例说明: 客户端用户在程序主菜单中触发商品基本资料管理的菜单命令,由主模块的视图类CJXCView处理,处理函数创建商品基本资料管理对话框类的实例,然后以模态对话框的方式显示。商品基本资料管理对话框在初始化时向服务器发送请求所有”商品基本资料表的记录的命令,并将返回的结果显示到对话框中。商品基本资料管理对话框中有关于查询、添加、删除、更新记录的按钮以及查询条件的编辑框,不同的按钮触发相应的操作:添加、删除操作只有在更新操作执行后才有效。用户按下退出按钮,对话框结束,客户端主模块重新获得程序的控
18、制权.(3)类设计基本资料管理模块是由若干个对话框类组成的,其中最主要的两个是CDlgJBZL-SP和CDlgJBEd-JGZK类,它们分别表示商品基本资料管理和供货商资料管理主界面的对话框.3。2 服务器端详细设计3.2。1 服务器端的功能3.2。2 设计细节(1) 功能概述 服务器端的功能包括:接受并验证客户端连接,并维持连接的正确性.接收用户请求,解释协议命令,接着执行相应的数据库操作,并将操作结果返回到客户端。监视客户端的活动和数据库操作。 (2)业务逻辑主模块设计1) 模块主流程在总体设计部分,定义了主模块的功能是处理业务逻辑和调度通信模块及数据库访问|模块。由于服务器端的被动服务的
19、特性,可以确定如下的模块主流程:服务器端必须先于客户端启动,并在己知的端口上提供服务。通信模块在收到来自客户端的命令后通知主模块,业务逻辑主模块解析命令的类型|和操作参数,如果需要访问数据库,接着传入操作参数,并调用数据库访问模块的方法执行相应的数据库操作,接着返回操作结果到主模块.业务逻辑主模块将操作结果格式化成系统协议的数据包格式,接着调用通信模块的方法发送操作结果回客户端。2) 类设计业务逻辑主模块的类事实上就是文档/视图结构中的基本类,它们共同构建了服务器端应用程序的框架。cserverApp类cserverApp类是服务器端的应用程序类,派生自CwinApp,它主要负责维护程序状态和
20、应用程序运行的消息循环.由于进销存系统服务器端需要访问数据库,因此,在cserverApp中还包括COM/DCOM子系统的初始化工作。CMainFrame类CMainFrame类是服务器端应用程序的主窗口类,它派生自CframeWnd,主要保存了服务器的配置信息.CServerDoc类CServerDoc类是主模块的文档类,它派生自Cdocument类,主模块的主要功能处理业务逻辑和调度通信模块的功能都在CServerDoc类中实现.CserverView类CServerView类是主模块的视图类。CServerView类有两个作用,一是显示客户端操作,二是调度数据库访问模块,向CServer
21、Doc类提供数据库调用接口。下图是服务器端主模块类图:图2 服务器端主模块类图:3) 通信模块设计(1)数据包格式、。.本例的进销存管理系统设计了一种和上一章的远程控制系统不同的数据包格式。数据包的格式是:命令号字符串数据发送方接收方数据包各个部分间用特定的分隔符隔开:字符串数据如果包含有多个信息,也使用分隔符分隔。如果数据包表示数据库查询操作的结果,那么字符串数据中要包含行数和列数.例如,如果设计了分隔符是#,在根据关键字查询商品基本资料表时,如果只有一条记录符合要求,那么返回的数据应该具有如下的格式: 2712行数#列数商品编码名称#规格单位型号#供货商生产厂商进价#售价#最小库存#商品分
22、类#商品编码-发送方接收方.返回多条记录时的格式也是类似的,只须把记录格式化为用分隔符连接的形式再用分隔符连接多条记录即可。cserverDoc::Stringseg()函数的作用就是把这样的数据包分解成若干条基本信息。采取这样的字符串表示数据,其优点在于所有的协议命令都具有统一的数据包格式,便于统一处理和协议扩充。(2)类设计通信模块要解决的问题包括数据包的表示和数据包的收发。因此,本模块由一个表示数据包内容的类CMessage和套接字类CAcceptsockert、CServicesocket组成.Cmessage类Cmessage类封装了本系统通信数据包的表示,它派生自Cobject。C
23、AcceptSocket类CAcceptSocket类是通信模块的监听套接字类,它派生自Csocket类,是服务器端的监听套接字类。CServerSocket类CServerSocket类是通信模块的数据套接字/服务套接字类,它派生自CSocket类.4) 数据库访问模块设计数据库访问模块是服务器端一个相当重要的模块,它为主模块提供了系统数据库访问接口,这样的访问接口有两个好处:一是有利于代码的复用:二是可以充分控制对数据库的访问方法。数据库访问模块的工作流程如下:服务器端启动时,直接建立和数据库的连接。.有客户端的数据包到达时,通信模块回调主模块的业务逻辑处理函数,主模块在业务逻辑处理函数中
24、调用数据库访问模块函数(如果需要的话).服务器端结束时,程序终止和系统数据库的连接.四、软件实现过程使用Microsoft Visual Studio 6。0进行开发,开发过程严格按照概要设计和详细设计进行.4。1 客户端窗体连接服务器端界面如图4.1。图41进入主界面如图4。2图424。2 服务器端设置窗体服务器端设置窗体如图4.3所示.图4。3五、软件测试过程软件测试是保证软件质量的关键步骤,是对软件规格说明、设计和编码的最后复审,其工件量约占总工作量40以上(对于人命关天的情况,测试相当于其它部分总成本的3 5倍).5。1 运行环境测试5.1。1 任务测试软件对的可移植行,对运行环境的要求。5.1。2 测试过程在Windows98/me/2000/NT/XP等版本进行安装运行,测试软件的每项功能。5.1。3 测试结果软件可在Windows98/me/2000/NT/XP环境下安装运行,每项功能运行正常.5。1。4 评价软件对Windows环境支持良好,但是不能跨平台使用。可移植行不太好.5。2 软件功能测试5。2.1 任务对软件的功能进行逐个测试,发现每个功能中的问题。5。2.2 测试过程采用实际数据进行测试,让用户参与.让用户对软件的每个功能进行使用,录入实际数据。5.2。3 测试结果基本上符合要求,个别功能需要修改。5.2。4 评价软件没有严重设计问题和技术问题.16