文档介绍:该【超市物流管理系统数据库课程设计报告需求分析,数据流图,系统设计 】是由【1781111****】上传分享,文档一共【19】页,该文档可以免费在线阅读,需要了解更多关于【超市物流管理系统数据库课程设计报告需求分析,数据流图,系统设计 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..一、系统定义:当今中国零售业发展正盛,大量超市涌现于各个城市,很大程度上改变了人民的消费方式。大量频繁的物资流通,使得传统低效的人工管理已不合时宜。本系统以一个统一的界面,给收银员、采购员和管理人员提供了不同的操作及管理功能。数据库服务器可配置在独立的服务器上,也可配置在一台运行本系统的计算机上。适用于中小型无连锁店,或连锁店间经济独立的超市的物流管理。二、需求分析:(一)系统综合需求作为一个超市物流管理系统,应该给用户提供方便、友好而简洁的界面进行应用,并对超市的运营过程中物资的流动详细记录归档,并将这些数据进行逻辑上的融合,以便于用户查看、分析及管理。针对中小型超市的运营模式,有三类核心员工:收银员、采购员和管理人员,分别有三个核心功能需要实现,销售功能,采购功能,库存管理和员工管理功能。管理人员的功能应该在此基础上进行扩展,实现销售记录查询,采购记录查询,商品信息查询、添加、删除和修改,以及促销活动的设置。很多超市实行了会员制度,会员享受优惠待遇。所以本系统应该引入会员管理的模块,对会员进行注册、删除、查询、消费跟踪。此外,一个成熟的管理系统不仅应该具有基本的处理、查询功能,还应该有一些分析、后台监控的功能。所以可以将基本的供销数据进行融合,以图形化的界面展示给用户进行供销情况的分析。在后台实时监控商品库存量,当低于某一值时,向前台发出预警通知。最后,本系统中对实际中应该机械化处理的过程,如条形码扫描仪,读卡机等,进行手工操作模拟的简化,加入相应功能模块即可在现实中使用。(二)系统逻辑模型1:...数据流图:消费清单销售商品信息,会员卡号POS收银系统应收金额收银员当库前消存打费量采购信息销采购入库折金减售情额少信况量库息存本采购员量次会员信息商品信息采增历史采购信息加购信采购管理用量会库息用户查询条件户消修员存查费改优惠规则信销售记录商采采询清的息品购购条单信采购记录信查记件息修历息询录打用改史户条折会员管理销商品及库存管理商品信息列表信的查件息信售询息记条商品修改信息录件商品查询条件优惠规则管理销售记录销售管理销售查询条件会员资料,消费清单会员查询条件管理人员优惠规则修改信息当前优惠规则图1-:..存储项目组成类型来源去向使用频度变动频度者管理人当前打折情况收银员员数据流-(打折信息)管理人管理人会员优惠规则,全员员频繁有时(当前优惠规则)场优惠规则数据存管理优惠规则--储人员销售商品信息商品编号,售价,管理人(销售信息)数据流收银员-增加频销售数量,销售日员频繁繁,基本(历史销售记录)期,会员编号,收无更改银员工号数据存收银销售记录--储员会员信息会员编号,姓名,管理人管理人住址,电话,身份员,收银-(会员资料)员证号,消费金额员商品编号,售价,数据流增加不频销售数量,销售日管理人消费清单收银员-频繁繁,基本期,会员编号,收员无更改银员工号会员编号,姓名,数据存管理会员信息住址,电话,身份--储人员证号管理人员,采购管理人商品信息列表编号,名称,规格,数据流-增加不频员,收银员供应商,售价,库频繁繁,更改员存量不频繁数据存管理商品信息--储人员本次采购信息历史采购信息采购编号,商品编管理人数据流采购员-增加有采购信息号,采购价格,采员有时时,基本购数量,采购日采购记录无更改期,采购员数据存采购采购记录--储员表系统数据字典3:..三、系统设计:(一)概念结构设计售价销售时间姓名编号销售数量电话销售员m住址编号名称身份证消费金额规格p商品姓名工号当前售价供应商库存量登陆密码员工n采购职位在职情况编号采购数量购价采购时间(二)逻辑结构设计员工信息表Employee字段名类型NULL其他备注e_idvarchar(10)PK员工号e_namevarchar(10)Index员工姓名e_pwdvarchar(100)Y登陆密码e_positiontinyint(1)职位(0:管理人员1:收银员2:采购人员)e_statebit(1)在职情况4:..会员信息表Member字段名类型NULL其他备注m_idbigint(8)PK会员编号m_namevarchar(10)Index会员姓名m_addrvarchar(50)会员住址m_telvarchar(15)会员电话m_codevarchar(18)会员身份证号m_consumedecimal会员消费金额商品信息表Product字段名类型NULL其他备注p_idbigint(8)PK商品编号p_namevarchar(30)Index商品名称p_scalevarchar(6)规格p_pricedecimal商品当前单价p_manuvarchar(30)供应商p_qtyint(5)Index库存量采购记录表Buy字段名类型NULL其他备注b_idbigint(8)PK采购编号p_idbigint(8)Index,FK商品编号b_pricedecimal购入价格b_qtyint(5)购入数量b_timevarchar(19)采购时间e_idvarchar(10)FK采购员工号销售记录表Sell字段名类型NULL其他备注s_idbigint(10)PK销售编号p_idbigint(8)Index,FK商品编号s_pricedecimal销售价格s_qtyint(5)销售数量5:..varchar(19)销售时间e_idvarchar(10)FK收银员m_idbigint(8)YFK,Index会员编号预警日志表Warning字段名类型NULL其他备注w_idint(4)PK预警编号w_contenttext预警内容优惠规则表Discount字段名类型NULL其他备注m_allfloat所有会员打折数d_allfloat全场打折数部分表关系图:6:..(三)子模块划分及功能概述登陆收银员管理人员P采O采会商员供销优查S品销惠看收购购员及工售情规预银库况则警入系管管存管管管分管日统库理理理理析理理志系统设置三种权限:收银员、采购员和管理人员。登陆后,可以进入不同的功能模块,在登陆界面可以修改登陆密码。子模块划分如下:收银台POS系统(需要权限:收银员)顾客拿商品到收银台时,首先出示会员卡(如果是会员),收银员通过读卡机读取会员卡的会员号,然后通过条形码扫描仪一一扫描商品,获得商品编号,并手动输入购买数量,结算后显示应付金额。在扫描过程中,结算之前,可以取消某项商品的购买信息。收银员还可以在这里看到管理人员发送的通知消息。读卡机读取有卡号扫描商品条有无会员卡添加到列表写入数据库无形码?采购入库(需要权限:采购员)采购员只能采购数据库中已存在的商品。对每种采购的商品输入采购的商品编号,采购数量,和采购价格,这些商品的信息和采购的信息显示在列表中,结算入库后列表清空,并将数据写入数据库。7:..填写采购信息添加到列表写入数据库商品及库存管理(需要权限:管理人员):填写商品的名称,规格,供应商和售价,将商品引入超市。添加后的商品库存量为0,需要采购。供应商或规格不同的同名商品,应作为不同的商品对待。是填写商品信息填写正确?:可以根据商品的名称,供应商,库存量进行查询,并可以查看所有商品的信息列表。显示的信息包括编号,名称,规格,供应商和库存量。:只能删除库存量为0的商品,表明不再引进此商品。支持批量删除。:在商品信息列表中选择一行,对其基本信息进行修改。选择修改对象修改信息更新数据库更新显示结果8:..会员管理(需要权限:管理人员):填写顾客姓名,住址,电话及身份证号,即可注册成为会员,享受优惠待遇。是填写会员信息填写正确?:可以按会员的编号和姓名进行查询,并可以查看所有会员的信息列表。显示的信息包括编号,姓名,住址,电话,身份证号和累计消费金额。:删除会员资料,使其会员卡失效。支持批量删除。:在会员信息列表中选择一行,对其详细的消费记录进行查询。选择查询对象搜索数据库显示清单?销售管理(需要权限:管理人员)对历史的销售记录进行查看。可以按商品编号,商品名称或日期进行查询,也可以列出所有的销售记录。显示信息包括商品编号,商品名称,商品规格,销售数量,销售价格,收银员和销售时间。9:..填写查询信息搜索数据库显示结果查询全部员工管理(需要权限:管理人员):添加新上岗的员工的信息。需要填写工号,姓名,登陆密码和职位。是填写员工信息填写正确?:列出了所有员工的信息列表。显示的信息包括工号,姓名,职位和在职情况。:将离职员工的在职情况置为“离职”。:在员工信息列表中选择一行,修改其基本信息(姓名和职位)。:输入运行本系统的收银台的IP和消息,可以向收银员发送通知消息。填写目标IP和发送消息反馈发送结果消息内容?采购管理(需要权限:管理人员)对历史的采购记录进行查看。可以按商品编号,商品名称或日期进行查询,也可以10:..列出所有的采购记录。显示信息包括商品编号,商品名称,商品规格,供应商,采购数量,采购价格,采购时间,采购员和当前库存量。填写查询信息搜索数据库显示结果查询全部供销情况分析(需要权限:管理人员)对历史采购及销售数据,用图形的方式显示其供销情况及盈利状况,直观的供管理人员分析。搜集数据库数图表显示结果据?优惠规则管理(需要权限:管理人员):设置对会员购物实行多少折优惠。:设置促销活动,全场商品打折多少。设置规则写入数据库?缺货报告日志(需要权限:管理人员)后台实时监测商品的库存量,当库存量低于某值时,就发出预警,并记入日志。这里可以查看和清空所有的预警日志。管理员可控制预警开关,如果打开,则发出报警,否则,只在后台写入日志。查看缺货日志显示是缺货日志开启报警?报警扫描数据库检写入查库存量?其他附加功能11:...修改密码,,将数据源连接信息写入配置文件,避免硬编码数据源名,用户名和密码带来的弊端。:解释如何配置服务器及一些常见问题。(增量备份和完全备份),恢复数据库。四、详细设计(一)开发平台及工具开发工具MicrosoftVisualC++?DBMS:MicrosoftSQLServer2000?建模工具:MicrosoftVisio,SybasePowerDesigner?第三方库:Skin++换肤库,MD5加密类说明:为了方便的实现多线程及Socket通信等功能,以及个人熟悉程度的因素,选择了VC的开发平台。而在Windows平台上为数不多的DBMS产品中,Oracle过于庞大,不利于在低配置的机器上运行;Access又过于小型,不能负载大量的数据访问请求,所以选择了适中的MSSQLServer。为了弥补VC做界面困难的缺陷,软件用了一个换肤的共享库Skin++,以dll形式附带在程序包中。另外在登陆密码的加密存储中,用到了流行的MD5加密,算法实现来源于。(二)存储过程及触发器作为数据库应用系统,数据的一致性需要得到保证,通过单纯的手工编码方式,工作烦琐,容易出错,而且不易于扩展。采用DBMS的外码约束,Unique约束,触发器的使用来解决这一问题。在查询效率方面,三表及四表连接查询的过程用存储过程实现。对商品,采购,销售表的外码没有强制级联删除和级联修改,因不再进购某种商品,或某雇员辞职,不应该影响过去的采购,销售记录。12:..查询销售记录的存储过程CREATEPROCEDURE[dbo].search_sell_******@idvarchar(8),***@namevarchar(30),***@timevarchar(30),***@midvarchar(8)ASIF(***@mid='')BEGINSELECTASpid,ASpname,ASpscale,ASsqty,ASsprice,ASstime,ASenameFROMproductP,sellS,employeeEWHERElike'%'+***@id+'%'andlike'%'+***@name+'%'andlike'%'+***@time+'%'and=and=ORDERBYdescENDIF(***@mid<>'')BEGINSELECTASpid,ASpname,ASpscale,ASsqty,ASsprice,ASstime,ASename,ASpqtyFROMproductP,sellS,employeeEWHERElike'%'+***@id+'%'andlike'%'+***@name+'%'andlike'%'+***@time+'%'and=***@midand=and=ORDERBYdescENDGO?查询采购记录的存储过程CREATEPROCEDURE[dbo].search_buy_******@idvarchar(8),***@namevarchar(30),***@timevarchar(30)ASBEGINSELECTASpid,ASpname,ASpscale,ASpmanu,ASbqty,ASbprice,ASbtime,ASenameFROMproductP,buyB,employeeEWHERElike'%'+***@id+'%'andlike'%'+***@name+'%'andlike'%'+***@time+'%'and=13:..and=ORDERBYdescENDGO触发器:采购商品后,自动增长库存量CREATETRIGGERqty_incON[dbo].[buy]FORINSERTASUPDATEPSET=+FROMproductASPINNERJOININSERTEDASION=?触发器:销售商品后,自动减少库存量,并为相应会员增加其消费金额记录CREATETRIGGERqty_decONFORINSERTASUPDATEPSET=-FROMproductASPINNERJOININSERTEDASION=******@membervarchar(10)******@consumedecimal(9,2)******@member=(SELECTm_idFROMINSERTED)******@consume=(SELECTs_priceFROMINSERTED)******@member<>''BEGINUPDATEmemberSETm_consume=m_consume+***@consumeWHEREm_id=***@memberEND?触发器:删除商品时,如果库存量不为0,则撤销操作。并将相应销售及采购记录的编号字段置空CREATETRIGGERp_delON[dbo].[product]******@******@qty=(SELECTFROMDELETEDASD)IF(***@qty<>0)BEGIN14:..RAISERROR('该商品的库存量不为0,不能删除',0,1)ROLLBACKTRANSACTIONENDELSEUpdateSSET=NULLFROMsellASSINNERJOINDELETEDASDON=UpdateBSET=NULLFROMbuyASBINNERJOINDELETEDASDON=COMMITTRANSACTION触发器:删除会员时,将相应销售记录中会员编号字段置空CREATETRIGGERmem_delON[dbo].[member]FORDELETEASUPDATEsellSETm_id=nullWHEREm_id=(SELECTm_idFROMDELETED)(三)编码设计系统采用MFC对话框应用程序以方便开发,MFC对常用API做了很好的封装。每个对话框对应一个类,每个数据库表对应一个类。根据程序需要,自己再一次做了封装。,使用ini配置文件来存储DSN,UID,PWD的信息,以避免硬编码方式带来的种种问题:不能修改密码,不能换数据库用户等等。主要采用了GetPrivateProfileString和WritePrivateProfileString两个WindowsAPI。,因此封装了一个CListStyle类来设置列表框样式及对其进行通用操作。#ifndef_LISTSET_H_#define_LISTSET_H_classCListStyle{protected:CListCtrl*m_pList;由于存储过程不能通过ClassWizard创建类,所以手工完成类建立和RFX数据交换。。15:..程序启动初始化数据库连接时,显示启动画面。?备份数据库时显示进度。?后台监控商品库存量(四)界面设计?登陆界面:?收银台POS界面:16:..采购入库界面:17:..管理人员主界面:五、参考文献1.《VisualC++2003程序设计》何炜等冶金工业出版社P247-2612.《数据库系统概论(第三版)》萨师煊等高等教育出版社3.《Windows用户界面开发》[美]++、课程设计总结这次课程设计我花了一个月的时间来完成,前期做了一些准备工作,了解了一般超市物流管理方面的背景知识,然后再权衡了时间和人力,做了适量简化,并完成了初步的需求分析。稍作细化后,便开始设计数据库。而后做了界面设计,完成了程序大部分的主要界面。18:..而在编码方面,我从系统的功能、规模和实用方面考虑,并没有去学****和采用过多花哨的新技术,如、分布式等企业级应用。我在规划前,进行了近半个月的时间来学****MFCODBC的使用,以及MFC中DDX和RFX数据交换技术,还有SQLServer中触发器和存储过程的知识和编写方法。而且在以后的编码过程中,也在不断的学****并解决遇到的问题。在数据库设计时,由于有些仓促,没有深入的考虑外码约束的问题,使得编码阶段,发现了一个重大问题。销售记录和采购记录中对商品号进行了引用,而删除某种商品后,如果设置了级联删除,则记录不能真实体现收支金额;如果不设,则数据库出现不一致现象。基于这种情况,我写了几个将外码字段置空的DELETE触发器作为弥补措施。在工程接近完成的时候,我对部分代码做了优化,将一些重复工作加以封装调节;将批处理操作改为以事务方式处理;并将费时的连表查询写成了存储过程。在研究如何把存储过程和MFC的Recordset类联系起来的过程中,走了很多弯路,想了很多办法都不能成功。在找到解决方案的同时,也在MSDN中找到了答案。这次课程设计,我更加深入的了解到软件工程的复杂性,以及前期规划分析的重要性。其实在MFC这种面向对象的程序设计中,我的瀑布开发模型并不太合适。而且如果系统再稍微大型一些,以一人之力也难以完成。以后的学****中应该学****一些先进的思想,并多加实践,从写程序和软件架构两个方面都增强自己的能力。19