超市物流管理系统数据库课程设计报告需求分析数据流图系统设计.docx

上传人:b****4 文档编号:3635962 上传时间:2022-11-24 格式:DOCX 页数:20 大小:469.38KB
下载 相关 举报
超市物流管理系统数据库课程设计报告需求分析数据流图系统设计.docx_第1页
第1页 / 共20页
超市物流管理系统数据库课程设计报告需求分析数据流图系统设计.docx_第2页
第2页 / 共20页
超市物流管理系统数据库课程设计报告需求分析数据流图系统设计.docx_第3页
第3页 / 共20页
超市物流管理系统数据库课程设计报告需求分析数据流图系统设计.docx_第4页
第4页 / 共20页
超市物流管理系统数据库课程设计报告需求分析数据流图系统设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

超市物流管理系统数据库课程设计报告需求分析数据流图系统设计.docx

《超市物流管理系统数据库课程设计报告需求分析数据流图系统设计.docx》由会员分享,可在线阅读,更多相关《超市物流管理系统数据库课程设计报告需求分析数据流图系统设计.docx(20页珍藏版)》请在冰豆网上搜索。

超市物流管理系统数据库课程设计报告需求分析数据流图系统设计.docx

超市物流管理系统数据库课程设计报告需求分析数据流图系统设计

一、系统定义:

当今中国零售业发展正盛,大量超市涌现于各个城市,很大程度上改变了人民的消费方式。

大量频繁的物资流通,使得传统低效的人工管理已不合时宜。

本系统以一个统一的界面,给收银员、采购员和管理人员提供了不同的操作及管理功能。

数据库服务器可配置在独立的服务器上,也可配置在一台运行本系统的计算机上。

适用于中小型无连锁店,或连锁店间经济独立的超市的物流管理。

二、需求分析:

(一)系统综合需求

作为一个超市物流管理系统,应该给用户提供方便、友好而简洁的界面进行应用,并对超市的运营过程中物资的流动详细记录归档,并将这些数据进行逻辑上的融合,以便于用户查看、分析及管理。

针对中小型超市的运营模式,有三类核心员工:

收银员、采购员和管理人员,分别有三个核心功能需要实现,销售功能,采购功能,库存管理和员工管理功能。

管理人员的功能应该在此基础上进行扩展,实现销售记录查询,采购记录查询,商品信息查询、添加、删除和修改,以及促销活动的设置。

很多超市实行了会员制度,会员享受优惠待遇。

所以本系统应该引入会员管理的模块,对会员进行注册、删除、查询、消费跟踪。

此外,一个成熟的管理系统不仅应该具有基本的处理、查询功能,还应该有一些分析、后台监控的功能。

所以可以将基本的供销数据进行融合,以图形化的界面展示给用户进行供销情况的分析。

在后台实时监控商品库存量,当低于某一值时,向前台发出预警通知。

最后,本系统中对实际中应该机械化处理的过程,如条形码扫描仪,读卡机等,进行手工操作模拟的简化,加入相应功能模块即可在现实中使用。

(二)系统逻辑模型

1.数据流图:

图1-1系统数据流图

 

2.数据字典

项目

组成

类型

来源

去向

存储者

使用频度

变动频度

当前打折情况

会员优惠规则,全场优惠规则

数据流

管理人员

收银员

-

频繁

有时

(打折信息)

管理人员

管理人员

(当前优惠规则)

优惠规则

数据存储

-

-

管理人员

销售商品信息

商品编号,售价,销售数量,销售日期,会员编号,收银员工号

数据流

收银员

管理人员

-

频繁

增加频繁,基本无更改

(销售信息)

(历史销售记录)

销售记录

数据存储

-

-

收银员

会员信息

会员编号,姓名,住址,电话,身份证号,消费金额

数据流

管理人员,收银员

管理人员

-

频繁

增加不频繁,基本无更改

(会员资料)

消费清单

商品编号,售价,销售数量,销售日期,会员编号,收银员工号

收银员

管理人员

-

会员信息

会员编号,姓名,住址,电话,身份证号

数据存储

-

-

管理人员

商品信息列表

编号,名称,规格,供应商,售价,库存量

数据流

管理人员,采购员,收银员

管理人员

-

频繁

增加不频繁,更改不频繁

商品信息

数据存储

-

-

管理人员

本次采购信息

采购编号,商品编号,采购价格,采购数量,采购日期,采购员

数据流

采购员

管理人员

-

有时

增加有时,基本无更改

历史采购信息

采购信息

采购记录

采购记录

数据存储

-

-

采购员

表系统数据字典

 

三、系统设计:

(一)概念结构设计

(二)逻辑结构设计

员工信息表Employee

字段名

类型

NULL

其他

备注

e_id

varchar(10)

PK

员工号

e_name

varchar(10)

Index

员工姓名

e_pwd

varchar(100)

Y

登陆密码

e_position

tinyint

(1)

职位(0:

管理人员1:

收银员2:

采购人员)

e_state

bit

(1)

 

 

在职情况

 

会员信息表Member

字段名

类型

NULL

其他

备注

m_id

bigint(8)

PK

会员编号

m_name

varchar(10)

Index

会员姓名

m_addr

varchar(50)

会员住址

m_tel

varchar(15)

会员电话

m_code

varchar(18)

会员身份证号

m_consume

decimal

 

 

会员消费金额

商品信息表Product

字段名

类型

NULL

其他

备注

p_id

bigint(8)

PK

商品编号

p_name

varchar(30)

Index

商品名称

p_scale

varchar(6)

规格

p_price

decimal

商品当前单价

p_manu

varchar(30)

供应商

p_qty

int(5)

 

Index

库存量

采购记录表Buy

字段名

类型

NULL

其他

备注

b_id

bigint(8)

PK

采购编号

p_id

bigint(8)

Index,FK

商品编号

b_price

decimal

购入价格

b_qty

int(5)

购入数量

b_time

varchar(19)

采购时间

e_id

varchar(10)

 

FK

采购员工号

销售记录表Sell

字段名

类型

NULL

其他

备注

s_id

bigint(10)

PK

销售编号

p_id

bigint(8)

Index,FK

商品编号

s_price

decimal

销售价格

s_qty

int(5)

销售数量

s_time

varchar(19)

销售时间

e_id

varchar(10)

FK

收银员

m_id

bigint(8)

Y

FK,Index

会员编号

预警日志表Warning

字段名

类型

NULL

其他

备注

w_id

int(4)

PK

预警编号

w_content

text

 

 

预警内容

优惠规则表Discount

字段名

类型

NULL

其他

备注

m_all

float

所有会员打折数

d_all

float

 

 

全场打折数

部分表关系图:

(三)子模块划分及功能概述

系统设置三种权限:

收银员、采购员和管理人员。

登陆后,可以进入不同的功能模块,在登陆界面可以修改登陆密码。

子模块划分如下:

●收银台POS系统(需要权限:

收银员)

顾客拿商品到收银台时,首先出示会员卡(如果是会员),收银员通过读卡机读取会员卡的会员号,然后通过条形码扫描仪一一扫描商品,获得商品编号,并手动输入购买数量,结算后显示应付金额。

在扫描过程中,结算之前,可以取消某项商品的购买信息。

收银员还可以在这里看到管理人员发送的通知消息。

●采购入库(需要权限:

采购员)

采购员只能采购数据库中已存在的商品。

对每种采购的商品输入采购的商品编号,采购数量,和采购价格,这些商品的信息和采购的信息显示在列表中,结算入库后列表清空,并将数据写入数据库。

●商品及库存管理(需要权限:

管理人员)

1.

引入新商品:

填写商品的名称,规格,供应商和售价,将商品引入超市。

添加后的商品库存量为0,需要采购。

供应商或规格不同的同名商品,应作为不同的商品对待。

2.

商品查询:

可以根据商品的名称,供应商,库存量进行查询,并可以查看所有商品的信息列表。

显示的信息包括编号,名称,规格,供应商和库存量。

3.

删除商品:

只能删除库存量为0的商品,表明不再引进此商品。

支持批量删除。

4.

修改商品信息:

在商品信息列表中选择一行,对其基本信息进行修改。

 

●会员管理(需要权限:

管理人员)

5.

会员注册:

填写顾客姓名,住址,电话及身份证号,即可注册成为会员,享受优惠待遇。

6.

会员查询:

可以按会员的编号和姓名进行查询,并可以查看所有会员的信息列表。

显示的信息包括编号,姓名,住址,电话,身份证号和累计消费金额。

7.取消会员身份:

删除会员资料,使其会员卡失效。

支持批量删除。

8.

查看消费记录:

在会员信息列表中选择一行,对其详细的消费记录进行查询。

●销售管理(需要权限:

管理人员)

对历史的销售记录进行查看。

可以按商品编号,商品名称或日期进行查询,也可以列出所有的销售记录。

显示信息包括商品编号,商品名称,商品规格,销售数量,销售价格,收银员和销售时间。

●员工管理(需要权限:

管理人员)

9.

增加员工:

添加新上岗的员工的信息。

需要填写工号,姓名,登陆密码和职位。

10.

员工信息列表:

列出了所有员工的信息列表。

显示的信息包括工号,姓名,职位和在职情况。

11.

员工离职:

将离职员工的在职情况置为“离职”。

12.

修改员工信息:

在员工信息列表中选择一行,修改其基本信息(姓名和职位)。

13.

向收银台发送消息:

输入运行本系统的收银台的IP和消息,可以向收银员发送通知消息。

●采购管理(需要权限:

管理人员)

对历史的采购记录进行查看。

可以按商品编号,商品名称或日期进行查询,也可以

列出所有的采购记录。

显示信息包括商品编号,商品名称,商品规格,供应商,采购数量,采购价格,采购时间,采购员和当前库存量。

●供销情况分析(需要权限:

管理人员)

对历史采购及销售数据,用图形的方式显示其供销情况及盈利状况,直观的供管理人员分析。

●优惠规则管理(需要权限:

管理人员)

14.会员优惠规则:

设置对会员购物实行多少折优惠。

15.

全场优惠规则:

设置促销活动,全场商品打折多少。

●缺货报告日志(需要权限:

管理人员)

后台实时监测商品的库存量,当库存量低于某值时,就发出预警,并记入日志。

这里可以查看和清空所有的预警日志。

管理员可控制预警开关,如果打开,则发出报警,否则,只在后台写入日志。

●其他附加功能

1.修改密码,重新登陆

2.配置数据源连接,将数据源连接信息写入配置文件,避免硬编码数据源名,用户名和密码带来的弊端。

3.帮助文档:

解释如何配置服务器及一些常见问题。

4.备份(增量备份和完全备份),恢复数据库。

四、详细设计

(一)开发平台及工具

●开发工具MicrosoftVisualC++

●DBMS:

MicrosoftSQLServer2000

●建模工具:

MicrosoftVisio,SybasePowerDesigner

●第三方库:

Skin++换肤库,MD5加密类

说明:

为了方便的实现多线程及Socket通信等功能,以及个人熟悉程度的因素,选择了VC的开发平台。

而在Windows平台上为数不多的DBMS产品中,Oracle过于庞大,不利于在低配置的机器上运行;Access又过于小型,不能负载大量的数据访问请求,所以选择了适中的MSSQLServer。

为了弥补VC做界面困难的缺陷,软件用了一个换肤的共享库Skin++,以dll形式附带在程序包中。

另外在登陆密码的加密存储中,用到了流行的MD5加密,算法实现来源于。

 

(二)存储过程及触发器

作为数据库应用系统,数据的一致性需要得到保证,通过单纯的手工编码方式,工作烦琐,容易出错,而且不易于扩展。

采用DBMS的外码约束,Unique约束,触发器的使用来解决这一问题。

在查询效率方面,三表及四表连接查询的过程用存储过程实现。

对商品,采购,销售表的外码没有强制级联删除和级联修改,因不再进购某种商品,或某雇员辞职,不应该影响过去的采购,销售记录。

●查询销售记录的存储过程

CREATEPROCEDURE[dbo].search_sell_rec

@idvarchar(8),

@namevarchar(30),

@timevarchar(30),

@midvarchar(8)

AS

IF(@mid='')

BEGIN

SELECTASpid,ASpname,ASpscale,

ASsqty,ASsprice,ASstime,

ASenameFROMproductP,sellS,employeeE

WHERElike'%'+@id+'%'andlike'%'+@name+'%'

andlike'%'+@time+'%'and=

and=

ORDERBYdesc

END

IF(@mid<>'')

BEGIN

SELECTASpid,ASpname,ASpscale,

ASsqty,ASsprice,ASstime,

ASename,ASpqtyFROMproductP,

sellS,employeeE

WHERElike'%'+@id+'%'andlike'%'+@name+'%'

andlike'%'+@time+'%'and=@midand

=and=

ORDERBYdesc

END

GO

●查询采购记录的存储过程

CREATEPROCEDURE[dbo].search_buy_rec

@idvarchar(8),

@namevarchar(30),

@timevarchar(30)

AS

BEGIN

SELECTASpid,ASpname,ASpscale,ASpmanu,

ASbqty,ASbprice,ASbtime,

ASenameFROMproductP,buyB,employeeE

WHERElike'%'+@id+'%'andlike'%'+@name+'%'and

like'%'+@time+'%'and=

and=

ORDERBYdesc

END

GO

●触发器:

采购商品后,自动增长库存量

CREATETRIGGERqty_incON[dbo].[buy]

FORINSERT

AS

UPDATEPSET=+

FROMproductASPINNERJOININSERTEDASI

ON=

●触发器:

销售商品后,自动减少库存量,并为相应会员增加其消费金额记录

CREATETRIGGERqty_decON

FORINSERT

AS

UPDATEPSET=-

FROMproductASPINNERJOININSERTEDASI

ON=

DECLARE@membervarchar(10)

DECLARE@consumedecimal(9,2)

SET@member=

(SELECTm_idFROMINSERTED)

SET@consume=

(SELECTs_priceFROMINSERTED)

if@member<>''

BEGIN

UPDATEmemberSETm_consume=m_consume+@consume

WHEREm_id=@member

END

●触发器:

删除商品时,如果库存量不为0,则撤销操作。

并将相应销售及采购记录的编号字段置空

CREATETRIGGERp_delON[dbo].[product]

FORDELETE

AS

DECLARE@qtyint

SET@qty=(SELECTFROMDELETEDASD)

IF(@qty<>0)

BEGIN

RAISERROR('该商品的库存量不为0,不能删除',0,1)

ROLLBACKTRANSACTION

END

ELSE

UpdateSSET=NULL

FROMsellASSINNERJOINDELETEDASD

ON=

UpdateBSET=NULL

FROMbuyASBINNERJOINDELETEDASD

ON=

COMMITTRANSACTION

●触发器:

删除会员时,将相应销售记录中会员编号字段置空

CREATETRIGGERmem_delON[dbo].[member]

FORDELETE

AS

UPDATEsellSETm_id=nullWHEREm_id=

(SELECTm_idFROMDELETED)

 

(三)编码设计

系统采用MFC对话框应用程序以方便开发,MFC对常用API做了很好的封装。

每个对话框对应一个类,每个数据库表对应一个类。

根据程序需要,自己再一次做了封装。

1.在数据源连接方面,使用ini配置文件来存储DSN,UID,PWD的信息,以避免硬编码方式带来的种种问题:

不能修改密码,不能换数据库用户等等。

主要采用了GetPrivateProfileString和WritePrivateProfileString两个WindowsAPI。

1.很多数据需要通过列表框来显示,因此封装了一个CListStyle类来设置列表框样式及对其进行通用操作。

#ifndef_LISTSET_H_

#define_LISTSET_H_

classCListStyle

{

protected:

CListCtrl*m_pList;由于存储过程不能通过ClassWizard创建类,所以手工完成类建立和RFX数据交换。

3.在需要的地方采用多线程。

⏹程序启动初始化数据库连接时,显示启动画面。

⏹备份数据库时显示进度。

⏹后台监控商品库存量

(四)界面设计

●登陆界面:

●收银台POS界面:

采购入库界面:

 

管理人员主界面:

五、参考文献

1.《VisualC++2003程序设计》何炜等冶金工业出版社P247-261

2.《数据库系统概论(第三版)》萨师煊等高等教育出版社

3.《Windows用户界面开发》[美]EverettN.McKay著北京大学出版社

4.常州VC编程网用VisualC++开发数据库应用程序

5.MicrosoftMSDN关于MFCODBC部分的文档

六、课程设计总结

这次课程设计我花了一个月的时间来完成,前期做了一些准备工作,了解了一般超市物流管理方面的背景知识,然后再权衡了时间和人力,做了适量简化,并完成了初步的需求分析。

稍作细化后,便开始设计数据库。

而后做了界面设计,完成了程序大部分的主要界面。

而在编码方面,我从系统的功能、规模和实用方面考虑,并没有去学习和采用过多花哨的新技术,如、分布式等企业级应用。

我在规划前,进行了近半个月的时间来学习MFCODBC的使用,以及MFC中DDX和RFX数据交换技术,还有SQLServer中触发器和存储过程的知识和编写方法。

而且在以后的编码过程中,也在不断的学习并解决遇到的问题。

在数据库设计时,由于有些仓促,没有深入的考虑外码约束的问题,使得编码阶段,发现了一个重大问题。

销售记录和采购记录中对商品号进行了引用,而删除某种商品后,如果设置了级联删除,则记录不能真实体现收支金额;如果不设,则数据库出现不一致现象。

基于这种情况,我写了几个将外码字段置空的DELETE触发器作为弥补措施。

在工程接近完成的时候,我对部分代码做了优化,将一些重复工作加以封装调节;将批处理操作改为以事务方式处理;并将费时的连表查询写成了存储过程。

在研究如何把存储过程和MFC的Recordset类联系起来的过程中,走了很多弯路,想了很多办法都不能成功。

在找到解决方案的同时,也在MSDN中找到了答案。

这次课程设计,我更加深入的了解到软件工程的复杂性,以及前期规划分析的重要性。

其实在MFC这种面向对象的程序设计中,我的瀑布开发模型并不太合适。

而且如果系统再稍微大型一些,以一人之力也难以完成。

以后的学习中应该学习一些先进的思想,并多加实践,从写程序和软件架构两个方面都增强自己的能力。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1