数据库课程设计实例
标题:小型超市管理系统
1,项目计划
1.1系统开发目的
(1)大大提高了超市的运营效率;
(2)通过全面的信息收集和处理,协助提高超市的决策水平;
(3)使用该系统可以快速提高超市的管理水平,为降低运营成本、提高效率、增强超市的扩张性提供有效的技术支持。
1.2背景说明
21世纪,超市的竞争也进入了一个全新的领域。竞争不再是规模的竞争,而是技术、管理和人才的竞争。技术和管理的升级是超市行业竞争的核心。目前,零售领域呈多元化趋势发展,超市、仓储式商店、便利店、加盟店、专卖店、仓库等多种业态并存。如何在激烈的竞争中提高销售额,降低经营成本,扩大经营规模,成为超市经营者追求的目标。
1.3项目立项
针对超市的特点,为了帮助超市解决现在面临的问题,提高小超市的竞争力,我们将开发以下系统:前端POS销售系统和后端管理系统,其中这两个子系统包含其他子功能。
1.4适用范围
该系统适用于各种小型超市。
1.5定义
(1)商品条码:每件商品都有唯一的条码。对于一些价格相同的产品,可以使用自定义条形码。
(2)交易清单:包括交易流水号,每种商品的商品名和数量,该类商品的总金额,交易时间,负责该收银的员工号。
(3)货物积压:在一定时期内,远未完成销售计划的货物会造成积压。
(4)促销:在一定时期内,某些商品会以低于原价的促销价格出售。
库存报警提示:当商品的库存数量低于库存报警数量时,进行提示。
(5)存货:计算存货、销售、利润等经营指标。
1.6引用
《数据库原理与设计》,陶主编,清华大学出版社。
《SQL Server 2000实用教程》范立南主编清华大学出版社。
《SQL Server 2000程序员指南》李主编,北京希望电子出版社出版
《SQL Server 2000的简易编程》,丽贝卡·m·赖尔丹编辑
《软件工程代码》,Watts S.Humphrey主编,清华大学出版社。
《软件工程理论与实践》,Shari Lawrence Pfleeger主编,清华大学出版社。
软件需求分析,Swapna Kishore编辑,机械工业出版社。
芮林主编的软件工程思想。
2.逻辑分析和详细分析
2.1系统功能
(1)零售前台(POS)管理系统,本系统必须具备以下功能:
商品输入:根据超市业务特点制定相关功能,通过输入唯一编号、扫描条形码、商品名称等,实现准确或模糊的商品扫描输入。这种扫描输入方式可以充分保证各种计算机操作水平的人都能准确、快速地扫描输入商品。
收银业务:通过扫描条码或直接输入商品名称(多种同类商品一次性添加数量),自动计算出本次交易的总金额。客户付款后,自动计算找零并打印交易清单(包括交易流水号、每种商品的商品名和数量、该类商品的总金额、交易时间、负责该收银员的员工号)。如果顾客是我店会员,持有自己的会员卡,在交易前扫描会员卡,购买的商品全部打八五折,购买的商品总金额累计到会员的总消费金额中。会员卡的有效期是一年。一年后不续卡,会员卡将被注销。
安全性:OS登录、退出、换班、操作锁等权限验证保护;停电自动保护最大限度防止事故和恶意违章操作。
独立运行:部分收银机即使网络服务器断开或网络被阻断,仍能正常工作。
(2)、后台管理系统,本系统必须具备以下功能
采购管理:根据销售情况和库存情况,自动制定采购计划(或手工修改),可以避免盲目采购造成的货物积压。根据计划清单有选择地进行自动入库登记。全面查询和打印计划采购和仓储记录及金额。
销售管理:控制正常销售,促销和配额,截止日期和禁止销售。全面查询各种明细销售记录,全国各地收银员收银记录,支付结算。通过多种方式统计生成销售排行榜,灵活查看和打印商品销售日报表、月报、年报。
库存管理:全面查询库存明细记录。库存状态自动报警提示。如积压、短缺、缺货等。软件为您提供预警,避免库存商品的丢失和短缺。自动库存盘点计算。
人员管理:员工、会员、供应商、厂商等基本信息的登记和管理。员工操作权限的管理。客户销售权限管理。
(3)系统结构
系统总体结构
模块化子系统结构
功能描述:商品录入子系统要求快速录入商品,因此必须支持条码扫描。
功能描述:收银业务子系统可以根据会员卡计算交易总额,打印交易清单和折扣。
功能描述:采购管理子系统可以根据库存自动指定采购计划,采购时自动分级,并提供计划采购和入库记录的查询和打印功能。
功能描述:销售管理子系统可以控制一种商品是否允许销售,查询每种商品的销售情况,生成年报、月报、日报表,生成销售图表。
功能描述:库存管理子系统提供查询库存明细记录、根据库存状况进行报警、自动统计计算的基本功能。
功能描述:人事管理子系统提供基本信息注册管理、员工操作权限管理、客户销售权限管理功能。
2.2、流程图
前台管理系统
顶部DFD图
第0层DFD图
1层的DFD图
2.3、家居类型和功能
(1),员工(销售人员):
通过商品条码扫描将商品录入采购清单。
操作软件计算交易总额。
操作软件输出交易清单。
扫描会员卡以获得折扣。
(2),:超市经理
通过操作软件输入货物、供应商和制造商。
操作软件制定采购计划
查询并打印计划采购和仓储记录
操作软件控制商品的销售与否。
询问印刷品销售情况
操作软件生成销售排行榜
查询库存明细记录
根据软件发出的库存报警来输入商品。
操作库存计算软件。
(3)总经理:
基本信息注册管理
员工操作权限管理
客户销售权限管理
2.4、统一开发步骤
确定参与者和相关用例
为每个用例设计流程
建立序列图,确定每个脚本中对象的协作。
创建类来标识脚本中的对象。
设计、编码、测试、集成课程
为流程编写一个系统测试用例
运行测试用例并测试系统。
2.5、系统环境要求
系统模型
本系统采用C/S模式作为开发模式。
硬件环境
服务器端:
一台高性能计算机,
普通双绞线用作连接。
客户机:一台普通的计算机或工作站,
普通双绞线用作连接。
软件环境
服务器端:安装SQL Server 2000的服务器版本,
安装windows 2000 server版本,
已配置诺顿和其他必要的防病毒软件。
客户端:安装SQL Server2000的服务器版本,
安装VB等可视化开发工具。
安装windows2000 server版本。
2.6、系统安全问题
信息系统虽然功能强大,技术先进,但由于自身架构、设计思路和运行机制的限制,也包含着许多不安全因素。常见的因素有:数据输入、输出、存取和备份,源程序和应用软件,数据库、操作系统等漏洞或缺陷,硬件,通信漏洞,内部因素,病毒,“黑客”等因素。因此,为了使这一系统安全、可靠、稳定地工作,必须考虑以下问题:为了保证安全,系统不应受到事故的损坏,系统应能防止火灾、盗窃或其他形式的人为损坏。
系统应该可以重建。
该系统应该是可审计的。
系统应能有效控制,抗干扰能力强。
系统用户的权限是可识别的。
3.基于UML的建模。
3.1语义规则
用例视图的基本组件是用例、参与者和系统。用例用于描述系统的功能,即从外部用户的角度来看,系统应该支持哪些功能来帮助分析人员理解系统的行为。它是系统功能的宏观描述。一个完整的系统通常包含几个用例,每个用例都指定了要完成的功能,并代表了系统的所有基本功能(集)。角色是与系统交互的外部实体。它可以是系统用户,也可以是其他系统或硬件设备。简而言之,任何需要与系统交互的东西都可以称为角色。系统边界线内的区域(即用例的活动区域)抽象地表示了系统能够实现的所有基本功能。在一个基本功能(集)已经实现的系统中,系统运行的一般流程是:外部角色先初始化用例,然后用例执行它所代表的功能,执行后用例返回一些值给角色,可以是角色需要系统提供的任何东西。
UML:它是一种标准的图形化建模语言,是面向对象分析和设计的标准表示;它不是可视化编程语言,而是可视化建模语言。它不是工具或知识库的规范,而是建模语言规范,是表达的标准;它既不是进程,也不是方法,但允许任何进程或方法使用它。
使用案例:
演员:
3.2、UML模型
3.21,系统UML模型
3.22、子系统UML模型
(1)零售前台(POS)管理系统的用例视图
(2)后台管理系统的用例视图
3.3、系统实现图
4.超市销售系统概念设计文件
(1),系统ER图
(2)系统ER图描述
1)店内所有用户(员工)可以销售多种商品,每种商品可以由不同的用户(员工)销售;
2)每个顾客可以购买多种商品,不同的商品可以由不同的顾客购买;
3)每个供应商可以供应多种不同的商品,每种商品可以由多个供应商供应。
(3)视图设计
1)交易视图(V _ Dealing)——查询交易状态的视图;
2)计划采购视图(v _计划库存)-查询采购计划的视图;
3)销售视图(V _ SALE)——查询销售明细的视图;
4)入库视图(V _ stock)-查询入库状态的视图。
5.逻辑设计文档
(1),系统关系模型
a)商品信息表(商品编号、商品名称、价格、条形码、促销价格、促销开始日期、促销结束日期、允许折扣、库存数量、库存报警数量、计划采购数量、允许销售、制造商编号和供应商编号)
b)用户表(用户编号、用户名、用户密码和用户类型)
c)会员名单(会员号、会员卡号、累计消费金额和注册日期)
d)销售表(销售编号、商品编号、销售数量、销售金额和销售日期)
e)交易表(交易号、用户名、交易金额、会员卡号、交易日期)
f)进货清单(进货编号、进货商品编号、进货数量、单笔金额、总金额、进货日期、计划进货日期、进货状态)
g)供应商列表(供应商编号、供应商名称、供应商地址和供应商电话号码)
h)供应商列表(供应商编号、供应商名称、供应商地址、供应商电话号码)
(2)、系统数据库表结构
数据库表索引
表名的中文名称
MerchInfo商品信息表
用户用户表
会员名单
销售销售表
交易交易表
库存进出清单
提供供应商列表
工厂制造商列表
MerchInfo (Merchinfo)
字段名字段类型长度主/外键字段值约束对应的中文名称
MerchID int 4 P Not null商品编号
MerchName Varchar 50非空商品名称
MerchPrice Money 4非空价格
MerchNum Int 4不为空库存数量
原因编号int 4不为空库存警报数量
计划数量Int 4计划采购数量为空
条形码Varchar 50非空条形码
销售费用4促销价格
销售产品日期时间8促销开始日期
销售生产日期时间8促销结束日期
Allowbate int 4 not null允许折扣。
AllowSale Int 4 Not null允许销售。
工厂id varchar 10 f非空制造商编号
Provideidvarchar 10 f非空供应商编号
用户表(用户)
字段名字段类型长度主/外键字段值约束对应的中文名称
UserID varchar 10 P非空用户号
用户名Varchar 25非空用户名
用户密码不为空
UserStyle Int 4 Not null用户类型
成员名单(成员)
字段名字段类型长度主/外键字段值约束对应的中文名称
成员varchar 10 p非空成员号
MemberCard Varchar 20 Not null会员卡号
总成本金额4不为空累计消费金额
注册日期日期时间8不为空注册日期
销售表(销售)
字段名字段类型长度主/外键字段值约束对应的中文名称
SaleID Varchar 10 P Not null销售编号
MerChID Varchar 10 F非空商品编号
销售日期日期时间8不为空销售日期
SaleNum Int 4 Not null销售数量
销售价格金额4不为空销售订单金额
交易表(交易)
字段名字段类型长度主/外键字段值约束对应的中文名称
交易id varchar 10 p非空交易号
交易价格金额4不为空交易金额
交易日期货币4不为空交易日期
MemberID Varchar 10会员卡号
用户名varchar10f非空用户名
库存记录表(库存)
字段名字段类型长度主/外键字段值约束对应的中文名称
StockID Varchar 10 P非空仓储号
MerchID Varchar 10 F Not null入境商品编号
MerchNum Int 4 Not null接收数量
MerchPrice Money 4单笔金额不为空
总价货币4合计不为空
库存日期日期时间8日期时间入库日期
计划日期日期时间8日期时间计划购买日期
库存状态Int 4不为空仓储状态
供应商列表(提供)
字段名字段类型长度主/外键字段值约束对应的中文名称
Provideidvarchar10 p非空供应商编号
ProvideName Varchar 50非空供应商名称
供应商地址
提供电话Varchar 25供应商电话
供应商列表(提供)
字段名字段类型长度主/外键字段值约束对应的中文名称
工厂id varchar 10 p非空制造商编号
FactoryName Varchar 50非空制造商名称
FactoryAddress Varchar 250制造商地址
FactoryPhone Varchar 25工厂电话
6、实物设计文件
/*-创建数据库*/
创建数据库超级市场
初选时
(
name=SuperMarketdb,
filename = ' C:\ Program Files \ Microsoft SQL Server \ MSSQL \ Data \ supermarketdb . MDF ',
size=100MB,
maxsize=200MB,
文件增长=20MB
)
登录
(
name=SuperMarketlog,
filename = ' C:\ Program Files \ Microsoft SQL Server \ MSSQL \ Data \ supermarketdb . ldf ',
大小=60MB,
maxsize=200MB,
文件增长=20MB
)
去
/* -创建基本表*/
使用[超级市场数据库]
去
/*创建交易表*/
创建表格交易(
DealingID int identity(1,1)主键,
DealingDate日期时间不为空,
交易价格不为空,
用户名varchar(25) NULL,
MemberCard varchar(20) NULL
)
去
/*创建供应商表*/
创建表工厂(
FactoryID varchar(10)主键,
FactoryName varchar(50)不为空,
FactoryAddress varchar(250) NULL,
FactoryPhone varchar(50) NULL
)
去
/*创建成员资格表*/
创建表成员(
MemberID varchar(10)主键,
MemberCard varchar(20)不为空,
总成本金额不为空,
RegDate日期时间不为空
)
去
/*创建商品信息表*/
创建表MerchInfo(
MerchID int identity(1,1)主键,
merch name varchar(50)Unique NOT NULL,
商品价格不为空,
MerchNum int不为空,
警告int不为空,
PlanNum int不为空,
条形码varchar(20)唯一不为空,
销售价格为空,
SalesProDateS日期时间为空,
SalesProDateE日期时间为空,
AllowAbate int不为空,
AllowSale int不为空,
FactoryID int不为空,
ProvideID int不为空
)
去
/*创建供应商表*/
创建表格提供(
ProvideID varchar(10)主键,
ProvideName varchar(50)不为空,
ProvideAddress varchar(250) NULL,
ProvidePhone varchar(25) NULL
)
去
/*创建销售表*/
创建表格销售(
SaleID int identity(1,1)主键,
MerChID int不为空,
销售日期日期时间不为空,
SaleNum int不为空,
销售价格金额不为空
)
去
/*创建收据表*/
创建表格库存(
StockID int identity(1,1)主键,
MerchID int不为空,
MerchNum int不为空,
商品价格为空,
总价金额为空,
计划日期日期时间为空,
StockDate日期时间为空,
库存状态int不为空
)
去
/*创建用户表*/
创建表用户(
UserID varchar(10)主键,
用户名varchar(25)不为空,
UserPW varchar(50)不为空,
UserStyle int不为空,
)
去
/*-在表之间创建约束*/
/*商品信息表中的供应商编号和供应商编号与供应商表和供应商表中的供应商编号之间的外键约束*/
更改表MerchInfo添加
约束[FK _ merchin fo _工厂]外键
(
[FactoryID]
)引用工厂(
[FactoryID]
),
约束[FK_MerchInfo_Provide]外键
(
[提供ID]
)参考资料提供(
[提供ID]
)
去
/*销售表中商品编号与商品信息表之间的外键约束*/
更改表销售添加
约束[FK _销售_商业信息]外键
(
[默契德]
)引用MerchInfo(
[默契德]
)在删除层叠时
去
/*收货表中商品编号和商品信息表之间的外键约束*/
更改表格库存添加
约束[FK股票信息]外键
(
[默契德]
)引用MerchInfo(
[默契德]
)在删除层叠时
去
/* -创建索引。
/*创建非聚集索引,将事务编号和事务日期作为事务表上的索引项*/
在Dealing(DealingID,DealingDate)上创建非聚集索引IX_Dealing
去
/*创建一个非聚集索引,将商品编号作为商品信息表的索引项*/
在MerchInfo(MerchID)上创建非聚集索引IX_MerchInfo
去
/*创建一个非聚集索引,将销售编号和日期作为销售表的索引项*/
创建非聚集索引IX_Sale ON Sale(SaleID,SaleDate)
去
/*创建一个非聚集索引,将仓储号、仓储日期和商品号作为仓储表上的索引项*/
在Stock(StockID,StockDate,MerchID)上创建非聚集索引IX_Stock
去
/* -创建视图。
/*创建用于查询交易状态的视图*/
创建视图v_Dealing
如同
选择交易日期作为交易日期,
用户名作为员工姓名,
MemberCard作为会员卡号,
交易价格作为交易金额
来自交易
去
/*创建用于查询采购计划的视图*/
创建视图v_PlanStock
如同
选择股票。StockID为SID,
MerchInfo。MerchName作为商品名称,
MerchInfo。条形码作为条形码,
工厂。工厂名称作为制造商,
提供。提供供应商名称,
股票。汞作为计划采购数量,
股票。计划日期作为计划采购日期
来自库存、MerchInfo、供应商、工厂
股票在哪里。MerchID = MerchInfo。默希德
并提供。ProvideID=MerchInfo。ProvideID
和工厂。FactoryID=MerchInfo。FactoryID
和股票。库存状态=0
去
/*创建用于查询销售明细记录的视图*/
创建视图v_Sale
如同
选择MerchInfo。MerchName作为商品名称,
MerchInfo。条形码作为条形码,
MerchInfo。商品价格作为商品价格,
销售。销售价格作为销售价格,
销售。salenumas销售数量,
销售。销售日期作为销售日期
来自销售内部连接
MerchInfo打折。MerChID = MerchInfo。默希德
去
/*创建用于查询收据状态的视图*/
创建视图v_Stock
如同
选择MerchInfo。MerchName作为商品名称,
MerchInfo。条形码作为条形码,
工厂。工厂名称作为制造商,
提供。提供供应商名称,
股票。作为仓储价格,
股票。mershnumas入库数量,
库存总额。总价为:
股票。库存日期作为入库日期
来自库存、MerchInfo、供应商、工厂
股票在哪里。MerchID = MerchInfo。默希德
并提供。ProvideID=MerchInfo。ProvideID
和工厂。FactoryID=MerchInfo。FactoryID
和股票。库存状态=1
去
7.摘要
与传统管理模式相比,该系统的使用无疑将大大提高超市的运营效率,有助于提高超市的决策水平和管理水平,为降低运营成本、提高效率、减少差错、节省人力、减少顾客购物时间、增加客流、提高顾客满意度、增强超市扩容能力提供有效的技术支持。
由于开发人员能力有限,时间又短,这个系统不可避免地会有一些缺点,如:
这个系统只适用于小型超市,不适用于中大型超市。
超市管理系统涉及面广,需要解决的问题多,功能复杂,实现难度大,但由于时间的限制,本系统只能做到其部分功能;
对于以上问题,我们深表歉意。如果发现其他问题,希望老师批评指正。