资源描述
数据库课程设计
题目:超市销售管理系统
组员:
组长:
班级:
指导老师:
目录
1、项目计划
1.1系统开发目标
1.2背景说明
1.3项目确立
1.4应用范围
1.5定义
1.6参考资料
2、逻辑分析和具体分析
2.1系统功效
2.2数据流图
2.3用户类型和职能
2.4系统开发步骤
2.5系统环境需求
2.6系统安全问题
3、基于UML建模
3.1语义规则
3.2 UML模型
3.3系统实现图
4、概要设计文档
5、逻辑设计文档
6、物理设计文档
7、小结
1、项目计划
1.1系统开发目标
(1)大大提升超市运作效率;
(2)经过全方面信息采集和处理,辅助提升超市决议水平;
(3)使用本系统,能够快速提升超市管理水平,为降低经营成本, 提升效益,增强超市扩张力, 提供有效技术保障。
1.2背景说明
二十一世纪,超市竞争也进入到了一个全新领域,竞争已不再是规模竞争,而是技术竞争、管理竞争、人才竞争。技术提升和管理升级是超市业竞争关键。零售领域现在呈多元发展趋势,多个业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。怎样在猛烈竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求目标。
1.3项目确立
针对超市特点,为了帮助超市处理现在面临问题,提升小型超市竞争力,我们将开发以下系统:前台POS销售系统、后台管理系统,其中这两个子系统又包含其它部分子功效。
1.4应用范围
本系统适应于多种小型超市。
1.5 定义
(1)商品条形码:每种商品含有唯一条形码,对于一些价格一样商品,能够使用自定义条形码。
(2)交易清单:包含交易流水账号、每类商品商品名、数量、该类商品总金额、交易时间、负责此次收银职员号。
(3)商品积压:在一定时期内,远无法完成销售计划商品会造成积压。
(4)促销:在一定时期内,一些商品会按低于原价促销价格销售。
库存告警提醒:当商品库存数量低于库存报警数量时发出提醒。
(5)盘点:计算出库存、销售额、盈利等经营指标。
1.6 参考资料
《数据库原理及设计》 陶宏才编 清华大学出版社
《SQL Server 实用教程》范立南编 清华大学出版社
《SQL Server 编程员指南》李香敏编 北京期望电子出版社
《轻松搞定 SQL Server 程序设计》Rebecca M.Riordan编
《软件工程规范》Watts S.Humphrey编 清华大学出版社
《软件工程理论和实践》 Shari Lawrence Pfleeger编 清华大学出版社
《软件需求分析》 Swapna Kishore编 机械工业出版社
《软件工程思想》 林锐编
2、逻辑分析和具体分析
2.1系统功效
(1)、零售前台(POS)管理系统,本系统必需含有以下功效:
² 商品录入:依据超巿业务特点制订相关功效,能够经过输入唯一编号、扫描条形码、商品名称等来实现正确或模糊商品扫描录入。该扫描录入方法能够充足确保多种电脑操作水平层次人员均能正确快速地进行商品扫描录入。
² 收银业务:经过扫描条形码或直接输入商品名称(对于同类多件商品采取一次录入加数量方法)自动计算此次交易总金额。在用户付款后,自动计算找零,同时打印交易清单(包含交易流水账号、每类商品商品名、数量、该类商品总金额、交易时间、负责此次收银职员号)。假如用户是本店会员并持有本人会员卡,则在交易前先扫描会员卡,并对所购物品全部实施95折优惠,并将所购物品总金额累计到该会员总消费金额中。 会员卡使用期限为十二个月,满十二个月未续卡者,该会员卡将被注销。
² 安全性:OS登陆、退出、换班和操作锁定等权限验证保护;断电自动保护最大程度预防意外及恶意非法操作。
² 独立作业:有断网收银即在网络服务器断开或网络不通情况下,收银机仍能正常作业
(2)、后台管理系统,本系统必需含有以下功效
² 进货管理: 依据销售情况及库存情况,自动制订进货计划(亦可手工制订修改),能够避免盲目进货造成商品积压。 按计划单有选择性地进行自动入库登记。 综合查询打印计划进货和入库统计及金额。
² 销售管理: 商品正常销售、促销和限量、限期及严禁销售控制。 综合查询多种销售明细统计、各地收银员收银统计和交结账情况等。 按多个方法统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。
² 库存管理: 综合查询库存明细统计。 库存状态自动告警提醒。如库存过剩、少货、缺货等。软件为您预警,避免库存商品积压损失和缺货。 库存自动盘点计算。
² 人员管理: 职员、会员、供货商、厂商等基础信息登记管理。 职员操作权限管理。 用户销售权限管理。
(3)系统结构
系统总体结构
小型超市零售管理系统
前台POS销售系统
后台管理系统
商品录入
收银业务
进货管理
销售管理
库存管理
人员管理
模块子系统结构
商品录入
快速商品录入
支持条形码扫描
功效描述:商品录入子系统要求能快速录入商品,所以必需支持条形码扫描。
收银业务
交易总额计算
打印交易清单
支持会员卡打折
功效描述:收银业务子系统能计算交易总额,打印交易清单,并依据会员卡打折。
进货管理
自动制订进货计划
自动入库登记
查询打印计划
进货和入库统计
功效描述:进货管理子系统能够依据库存自动指定进货计划,进货时自动等级,和提供查询和打印计划进货和入库统计功效。
销售管理
商品销售控制
查询打印销售情况
生成销售排行榜
功效描述:销售管理子系统能够控制某商品是否许可销售,查询每种商品销售情况并产生年、月、日报表,同时能够生成销售排行榜。
查询库存明细统计
库存状态自动告警提醒
库存管理
自动盘点计算
功效描述:库存管理子系统提供查询库存明细统计基础功效,并依据库存状态报警,和自动盘点计算。
人员管理
基础信息登记管理
职员操作权限管理提醒
用户销售权限管理提醒
功效描述:人员管理子系统提供基础信息登记管理,职员操作权限管理,用户销售权限管理功效。
2.2、步骤图
前台管理系统
顶层DFD图
第0层DFD图
第1层DFD图
2.3、户类型和职能
(1)、职员(营业员):
² 经过商品条形码扫描输入商品到购置清单
² 操作软件计算交易总金额
² 操作软件输出交易清单
² 对会员进行会员卡扫描方便打折
(2)、:超市经理
² 操作软件录入商品,供货商,厂商
² 操作软件制订进货计划
² 查询打印计划进货和入库统计
² 操作软件控制商品销售是否
² 查询打印销售情况
² 操作软件生成销售排行榜
² 查询库存明细统计
² 依据软件发出库存告警进行入货
² 操作软件进行盘点计算
(3)、总经理:
² 基础信息登记管理
² 职员操作权限管理
² 用户销售权限管理
2.4、统开发步骤
² 确定参与者和相关用况
² 为每个用况设计过程
² 建立次序图,确定每个脚本中对象协作
² 创建类,确定脚本中对象
² 设计, 编码, 测试, 集成类
² 为过程编写系统测试案例
² 运行测试案例,检验系统
2.5、系统环境需求
² 系统模式
本系统采取C/S模式作为开发模式
² 硬件环境
服务器端:
高性能计算机一台,
一般双绞线作为连接。
用户端: 一般计算机或工作站,
一般双绞线作为连接。
² 软件环境
服务器端:安装SQL Server 服务器版本,
安装windows 服务器版本,
配置了诺顿等必需防毒软件。
用户端: 安装SQL Server服务器版本,
安装了VB等可视化开发工具软件,
安装windows服务器版本。
2.6、系统安全问题
信息系统尽管功效强大,技术优异,但因为受到本身体系结构,设计思绪和运行机制等限制,也隐含很多不安全原因。常见原因有:数据输入,输出,存取和备份,源程序和应用软件,数据库,操作系统等漏洞或缺点,硬件,通信部分漏洞,企业内部人员原因,病毒,“黑客”等原因。所以,为使本系统能够真正安全,可靠,稳定地工作,必需考虑以下问题:为确保安全,不致使系统遭到意外事故损害,系统因该能预防火,盗或其它形式人为破坏。
² 系统要能重建
² 系统应该是可审查
² 系统应能进行有效控制,抗干扰能力强
² 系统使用者使用权限是可识别
3、基于UML建模
3.1语义规则
用例模型(use cases view)(用例视图)基础组成部件是用例(use case)、角色(actor)和系统(system)。用例用于描述系统功效,也就是从外部用户角度观察,系统应支持哪些功效,帮助分析人员了解系统行为,它是对系统功效宏观描述,一个完整系统中通常包含若干个用例,每个用例具体说明应完成功效,代表系统全部基础功效(集)。角色是和系统进行交互外部实体,它能够是系统用户,也能够是其它系统或硬件设备,总而言之,通常需要和系统交互任何东西全部能够称作角色。系统边界线以内区域(即用例活动区域)则抽象表示系统能够实现全部基础功效。在一个基础功效(集)已经实现系统中,系统运转大致过程是:外部角色先初始化用例,然后用例实施其所代表功效,实施完后用例便给角色返回部分值,这个值能够是角色需要来自系统中任何东西。
UML:是一个标准图形化建模语言,它是面向对象分析和设计一个标准表示;它不是一个可视化程序设计语言而是一个可视化建模语言;不是工具或知识库规格说明而是一个建模语言规格说明是一个表示标准;不是过程也不是方法但许可任何一个过程和方法使用它。
用例(use case):
参与者(actor):
3.2、UML模型
3.21、系统UML模型
3.22、子系统UML模型
(1)零售前台(POS)管理系统用例视图
(2)后台管理系统用例视图
3.3、系统实现图
4、超市销售系统概念设计文档
(1)、系统ER图
许可销售
许可打折
商品
用户姓名
会员
用户号
用户类型
n
n
供货
购置日期
消费金额
会员卡号
厂商
厂商ID
厂商名称
厂商地址
厂商电话
供货商名称
m
n
生产
m
1
注册时间
会员ID
累计金额
用户
用户ID
用户密码
m
供货金额
供货日期
销售日期
供货商电话
供货商地址
供货商ID
供货商
销售
销售ID
商品ID
商品名称
价格
促销价格
消费
m
(2)、系统ER图说明
1) 商店中全部用户(职员)能够销售多个商品,每种商品可由不一样用户(职员)销售;
2) 每个用户能够购置多个商品,不一样商品可由不一样用户购置;
3) 每个供货商能够供给多个不一样商品,每种商品可由多个供给商供给。
(3)、视图设计
1) 交易视图(v_Dealing)——用于查询交易情况视图;
2) 计划进货视图(v_PlanStock)——用于查询进货计划视图;
3) 销售视图(v_Sale)——用于查询销售明细统计视图;
4) 入库视图(v_Stock)——用于查询入库情况视图。
5、逻辑设计文档
(1)、系统关系模型
a) 商品信息表(商品编号,商品名称,价格,条形码,促销价格,促销起日期,促销止日期,许可打折,库存数量,库存报警数量,计划进货数,许可销售,厂商编号,供货商编号)
b) 用户表(用户编号,用户名称,用户密码,用户类型)
c) 会员表(会员编号,会员卡号,累积消费金额,注册日期)
d) 销售表(销售编号,商品编号,销售数量,销售金额,销售日期)
e) 交易表(交易编号,用户名称,交易金额,会员卡号,交易日期)
f) 进货入库表(入库编号,入库商品编号,入库数量,单额,总额,入库日期,计划进货日期,入库状态)
g) 供货商表(供货商编号,供货商名称,供货商地址,供货商电话)
h) 厂商表(厂商编号,厂商名称,厂商地址,厂商电话)
(2)、系统数据库表结构
数据库表索引
表名
汉字名
MerchInfo
商品信息表
User
用户表
Menber
会员表
Sale
销售表
Dealing
交易表
Stock
进货入库表
Provide
供货商表
Factory
厂商表
商品信息表(MerchInfo)
字段名
字段类型
长度
主/外键
字段值约束
对应汉字名
MerchID
int
4
P
Not null
商品编号
MerchName
Varchar
50
Not null
商品名称
MerchPrice
Money
4
Not null
价格
MerchNum
Int
4
Not null
库存数量
CautionNum
Int
4
Not null
库存报警数量
PlanNum
Int
4
null
计划进货数
BarCode
Varchar
50
Not null
条形码
SalesProPrice
Money
4
促销价格
SalesProDateS
Datetime
8
促销起日期
SalesProDateE
Datetime
8
促销止日期
AllowAbate
Int
4
Not null
许可打折
AllowSale
Int
4
Not null
许可销售
FactoryID
Varchar
10
F
Not null
厂商编号
ProvideID
Varchar
10
F
Not null
供货商编号
用户表(User)
字段名
字段类型
长度
主/外键
字段值约束
对应汉字名
UserID
varchar
10
P
Not null
用户编号
UserName
Varchar
25
Not null
用户名称
UserPW
Varchar
50
Not null
用户密码
UserStyle
Int
4
Not null
用户类型
会员表(Menber)
字段名
字段类型
长度
主/外键
字段值约束
对应汉字名
MemberID
Varchar
10
P
Not null
会员编号
MemberCard
Varchar
20
Not null
会员卡号
TotalCost
Money
4
Not null
累积消费金额
RegDate
Datetime
8
Not null
注册日期
销售表(Sale)
字段名
字段类型
长度
主/外键
字段值约束
对应汉字名
SaleID
Varchar
10
P
Not null
销售编号
MerChID
Varchar
10
F
Not null
商品编号
SaleDate
Datetime
8
Not null
销售日期
SaleNum
Int
4
Not null
销售数量
SalePrice
Money
4
Not null
销售单额
交易表(Dealing)
字段名
字段类型
长度
主/外键
字段值约束
对应汉字名
DealingID
Varchar
10
P
Not null
交易编号
DealingPrice
Money
4
Not null
交易金额
DealingDate
Money
4
Not null
交易日期
MemberID
Varchar
10
会员卡号
UserName
Varchar
10
F
Not null
用户名称
入库纪录表(Stock)
字段名
字段类型
长度
主/外键
字段值约束
对应汉字名
StockID
Varchar
10
P
Not null
入库编号
MerchID
Varchar
10
F
Not null
入库商品编号
MerchNum
Int
4
Not null
入库数量
MerchPrice
Money
4
Not null
单额
TotalPrice
Money
4
Not null
总额
StockDate
Datetime
8
Datetime
入库日期
PlanDate
Datetime
8
Datetime
计划进货日期
StockState
Int
4
Not null
入库状态
供货商表(Provide)
字段名
字段类型
长度
主/外键
字段值约束
对应汉字名
ProvideID
varchar
10
P
Not null
供货商编号
ProvideName
Varchar
50
Not null
供货商名称
ProvideAddress
Varchar
250
供货商地址
ProvidePhone
Varchar
25
供货商电话
厂商表(Provide)
字段名
字段类型
长度
主/外键
字段值约束
对应汉字名
FactoryID
varchar
10
P
Not null
厂商编号
FactoryName
Varchar
50
Not null
厂商名称
FactoryAddress
Varchar
250
厂商地址
FactoryPhone
Varchar
25
厂商电话
6、物理设计文档
/*----------创建数据库----------*/
create database SuperMarketdb
on primary
(
name=SuperMarketdb,
filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SuperMarketdb.mdf',
size=100MB,
maxsize=200MB,
filegrowth=20MB
)
log on
(
name=SuperMarketlog,
filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SuperMarketdb.ldf',
size=60MB,
maxsize=200MB,
filegrowth=20MB
)
go
/*----------创建基础表----------*/
use [SuperMarketdb]
go
/*创建交易表*/
CREATE TABLE Dealing (
DealingID int identity(1,1) Primary key ,
DealingDate datetime NOT NULL ,
DealingPrice money NOT NULL ,
UserName varchar(25) NULL ,
MemberCard varchar(20) NULL
)
GO
/*创建厂商表*/
CREATE TABLE Factory (
FactoryID varchar(10) Primary key ,
FactoryName varchar(50) NOT NULL ,
FactoryAddress varchar(250) NULL ,
FactoryPhone varchar(50) NULL
)
GO
/*创建会员表*/
CREATE TABLE Member (
MemberID varchar(10) Primary key ,
MemberCard varchar(20) NOT NULL ,
TotalCost money NOT NULL ,
RegDate datetime NOT NULL
)
GO
/*创建商品信息表*/
CREATE TABLE MerchInfo (
MerchID int identity(1,1) Primary key ,
MerchName varchar(50) Unique NOT NULL ,
MerchPrice money NOT NULL ,
MerchNum int NOT NULL ,
CautionNum int NOT NULL ,
PlanNum int NOT NULL ,
BarCode varchar(20) Unique NOT NULL ,
SalesProPrice money NULL ,
SalesProDateS datetime NULL ,
SalesProDateE datetime NULL ,
AllowAbate int NOT NULL ,
AllowSale int NOT NULL ,
FactoryID int NOT NULL ,
ProvideID int NOT NULL
)
GO
/*创建供给商表*/
CREATE TABLE Provide (
ProvideID varchar(10) Primary key ,
ProvideName varchar(50) NOT NULL ,
ProvideAddress varchar(250) NULL ,
ProvidePhone varchar(25) NULL
)
GO
/*创建销售表*/
CREATE TABLE Sale (
SaleID int identity(1,1) Primary key ,
MerChID int NOT NULL ,
SaleDate datetime NOT NULL ,
SaleNum int NOT NULL,
SalePrice money NOT NULL
)
GO
/*创建入库表*/
CREATE TABLE Stock (
StockID int identity(1,1) Primary key ,
MerchID int NOT NULL ,
MerchNum int NOT NULL ,
MerchPrice money NULL ,
TotalPrice money NULL ,
PlanDate datetime NULL ,
StockDate datetime NULL,
StockState int NOT NULL
)
GO
/*创建用户表*/
CREATE TABLE User (
UserID varchar(10) Primary key ,
UserName varchar(25) NOT NULL ,
UserPW varchar(50) NOT NULL ,
UserStyle int NOT NULL ,
)
GO
/*----------创建表间约束----------*/
/*商品信息表中厂商编号、供给商编号分别和厂商表、供给商表之间外键约束*/
ALTER TABLE MerchInfo ADD
CONSTRAINT [FK_MerchInfo_Factory] FOREIGN KEY
(
[FactoryID]
) REFERENCES Factory (
[FactoryID]
),
CONSTRAINT [FK_MerchInfo_Provide] FOREIGN KEY
(
[ProvideID]
) REFERENCES Provide (
[ProvideID]
)
GO
/*销售表中商品编号和商品信息表之间外键约束*/
ALTER TABLE Sale ADD
CONSTRAINT [FK_Sale_MerchInfo] FOREIGN KEY
(
[MerChID]
) REFERENCES MerchInfo (
[MerchID]
) ON DELETE CASCADE
GO
/*入库表中商品编号和商品信息表之间外键约束*/
ALTER TABLE Stock ADD
CONSTRAINT [FK_Stock_MerchInfo] FOREIGN KEY
(
[MerchID]
) REFERENCES MerchInfo (
[MerchID]
) ON DELETE CASCADE
GO
/*----------创建索引----------*/
/*在交易表上建立一个以交易编号、交易日期为索引项非聚集索引*/
CREATE nonclustered INDEX IX_Dealing ON Dealing(DealingID, DealingDate)
GO
/*在商品信息表上建立一个以商品编号为索引项非聚集索引*/
CREATE nonclustered INDEX IX_MerchInfo ON MerchInfo(MerchID)
GO
/*在销售表上建立一个以销售编号、销售日期为索引项非聚集索引*/
CREATE nonclustered INDEX IX_Sale ON Sale(SaleID, SaleDate)
GO
/*在入库表上建立一个以入库编号、入库日期、商品编号为索引项非聚集索引*/
CREATE nonclustered INDEX IX_Stock ON Stock(StockID, StockDate, MerchID)
GO
/*----------创建视图----------*/
/*创建用于查询交易情况视图*/
CREATE VIEW v_Dealing
AS
SELECT DealingDate as 交易日期,
UserName as 职员名称,
MemberCard as 会员卡号,
DealingPrice as 交易金额
FROM Dealing
GO
/*创建用于查询进货计划视图*/
CREATE VIEW v_PlanStock
AS
SELECT Stock.StockID as SID,
MerchInfo.MerchName as 商品名称,
MerchInfo.BarCode as 条形码,
Factory.FactoryName as 厂商,
Provide.ProvideName as 供货商,
Stock.MerchNum as 计划进货数量,
Stock.PlanDate as 计划进货日期
FROM Stock,MerchInfo,Provide,Factory
Where Stock.MerchID = MerchInfo.MerchID
and Provide.ProvideID=MerchInfo.ProvideID
and Factory.FactoryID=MerchInfo.FactoryID
and Stock.StockState=0
GO
/*创建用于查询销售明细统计视图*/
CREATE VIEW v_Sale
AS
SELECT MerchInfo.MerchName as 商品名称,
MerchInfo.BarCode as 条形码,
MerchInfo.MerchPrice as 商品价格,
Sale.SalePrice as 销售价格,
Sale.SaleNum as 销售数量,
Sale.SaleDate as 销售日期
FROM Sale INNER JOIN
MerchInfo ON Sale.MerChID = MerchInfo.MerchID
GO
/*创建用于查询入库情况视图*/
CREATE VIEW v_Stock
AS
SELECT MerchInfo.MerchName as 商品名称,
MerchInfo.BarCode as 条形码,
Factory.FactoryName as 厂商,
Provide.ProvideName as 供货商,
Stock.MerchPrice as 入库价格,
Stock.MerchNum as 入库数量,
Stock.TotalPrice as 入库总额,
Stock.StockDate as 入库日期
FROM Stock,MerchInfo,Provide,Factory
Where Stock.MerchID = MerchInfo.MerchID
and Provide.ProvideID=MerchInfo.ProvideID
and Factory.FactoryID=MerchInfo.FactoryID
and Stock.StockState=1
GO
7、小结
和传统管理模式相比较,使用本系统,毫无疑问会大大提升超市运作效率,辅助提升超市决议水平,管理水平,为降低经营成本, 提升效益,降低差错,节省人力,降低用户购物时间,增加客流量,提升用户满意度,增强超市扩张能力, 提供有效技术保障。
因为开发者能力有限,加上时间仓促,本系统难免会出现部分不足之处,比如:
² 本系统只适合小型超市使用,不能适合中大型超市使用;
² 超市管理系统包含范围宽,要处理问题多,功效复杂,实现困难,但因为限于时间,本系统只能做出其中一部分功效;
对于以上出现问题,我们深表歉意,如发觉还有其它问题,期望老师批评指正。
展开阅读全文