资源描述
超市货物管理系统
1. 课程设计目的
通过数据库课程设计,培养学生数据库设计的综合能力。从需求分析和数据库逻辑、物理设计,到功能分析和应用程序的最终实现,让学生亲自动手参与一个具有一定规模的数据库应用系统的设计和开发,真正理解和掌握数据库设计和开发的思路和方法,加深对数据库系统,软件工程,程序设计语言的理论知识的理解和应用水平;在理论和实验教学基础上进一步巩固已学基本理论及应用知识并加以综合提高;学会将知识应用于实际的方法,提高分析和解决问题的能力,增强对手能力;并更好的理解和消化课本所学的知识,为毕业设计和以后工作打下必要基础。
2.设计方案论证
2.1问题提出
超市管理系统是市场上最流行的超市上常用的系统之一,它主要包含以下几个模块:系统权限的设定、原始数据录入、数据的汇总及查询等。从而,实现对进货、销售及员工信息等实现全面、动态、及时的管理。
随着计算机技术的发展和网络人口的增加,人们对网络的需求也越来越苛刻,越来越贴近其生活,电子信息管理已经成为网上的一股潮流。而更多的,是要求传统行业的管理要延伸到网络,以更方便其生活、工作和学习。可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。
我们细致一对人工系统及软件系统实现测评的费用进行了计算及对比,得出的结论是使用软件系统可节省人力、物力,而且可以提高测评结果的准确性。
实现本系统需要的技术包括:SQL脚本的编程、B/S结构的软件开发技术。目前这些技术已经成熟。这些技术对计算机系的教师而言都是必须掌握的基本技术。
此外,本软件系统开发成本低,有较强的应用需求。数据采集节省了大量纸张,保护了环境。数据处理使用计算机进行,快速、准确。
2.2可行性研究
2.2.1技术可行性分析
此课程设计均是利用SQL server 2005 企业版软件调试出来的,因为该系统具有友好的人机互操作界面,操作人员只要进行少量的培训,系统的功能和使用方法就基本上能够是系统顺利运行。
2.2.2经济可行性分析
该系统带来的经济效益明显的,其最主要的表现就是减少了企业管理费用和人力开支,不仅节省了大量的时间,还为企业的各项决策提供了宝贵的资料,为企业带来巨大的经济效益。同时该系统可以提高超市的销售效率,即提高了超市的经济效益,所以从经济上完全是可行的。
2.2.3操作可行性分析
本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那些有一般的计算机知识的人员就可以轻松上手。而整个超市管理系统采用最友好的交互界面,简介明了,不需要对数据库进行深入的了解。
综合以上三方面,该系统的操作是可行的,开发该系统可行。
2.3需求分析
2.3.1业务流程分析
超市管理系统工作流程为:系统启动并进入登录界面,系统管理员输入正确的用户名及密码后,登陆系统主操作界面,系统管理员可对系统相关信息进行操作,包括基本信息、货物信息、供应商信息、销售信息、仓库信息等。
本系统的业务流程图如图1所示:
厂商
商品信息
营业员
订货信息
购买信息
顾客
销售信息
用户信息(员工)
商品信息
库存信息
老板
图1 业务流程图
2.3.2数据流程分析
数据流程分析主要包括对信息的流动、传递、处理、存储等的分析。数据流程分析的目的就是要发现和解决数据流通中的问题。现有的数据流程分析多是通过分层的数据流程图(data flow diagram,简称DFD)来实现的。其具体的做法是:按业务流程图理出的业务流程顺序,将相应调查过程中所掌握的数据处理过程,绘制成一套完整的数据流程图。
超市管理系统的数据流程:对本系统操作的数据源有普通用户、注册用户和管理员三种,首先由系统管理员根据不同用户的需要将某些信息保存到数据库中,然后再进行发布。不同权限的用户可以对这些库信息进行添加、修改和删除处理。所有用户均可以进行信息查询。通过对本系统的需求分析,系统的基本功能已经确定。
整个系统的数据流程图如2
厂商
超市老板
顾客
超市管理系统
超市老板
F1商品信息
F5进货信息
F4库存信息
F3销售额信息
F1商品信息
F2用户信息
F6购买信息
图2 系统数据流程图
2.3.2数据字典
超市管理系统的数据字典
数据字典列表——数据存储
(1)数据存储名称:管理员信息
数据来源:管理员信息表
数据去向:管理员登陆模块
数据组成:管理员信息=管理信息唯一标识+管理员帐号+管理员密码+管理员权限+注册时间
描述:存储了管理员的基本信息
(2) 数据存储名称:商品类别信息
数据来源:商品类别信息表
数据去向:商品类别模块
数据组成:商品类别信息=商品类别信息唯一标识+商品类别+添加时间+经手人
描述:存储了商品类别的注册信息
(3)数据存储名称:商品信息
数据来源:商品信息表
数据去向:商品信息模块
数据组成:商品信息=商品信息唯一标识+货物名称+供货编号+进价+售价+数量+厂商等
描述:存储了商品信息
(4) 数据存储名称:库存信息
数据来源:库存信息表
数据去向:库存信息模块
数据组成:库存信息=库存信息唯一标识+商品名称+价格+数量+添加时间+单位+编号等
描述:存储了库存信息
(5)数据存储名称:销售信息
数据来源:销售信息表
数据去向:销售信息模块
数据组成:销售信息=销售信息唯一标识+货物名称+数量+价格+时间等
描述:存储了销售详细信息
数据字典列表——数
(1) 名字:录入信息
描述:职员信息,货物信息等的录入
输入: 输入要添加录入的信息
过程: 将需要添加录入的信息加入数据库中
输出: 系统新的信息表页面
输出: 查询得到的信息页面
(2) 名字:修改、删除信息
描述:对职员信息,货物信息等修改或删除后存入数据库中
输入: 输入要修改或删除的信息
过程:对需要修改的信息做修改、删除过时的信息
输出: 系统新的信息表页面
输出: 查询得到的信息页面
数据字典列表——数据存储
(1) 名字: 数据库信息
别名:无
描述:存储了数据库的基本信息
数据组成:数据库信息=管理员信息+客户信息+货物信息+库存信息+销售信息
位置:数据库
输
2.4 概念结构设计
2.4.1概念结构设计的方法
概念设计阶段采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。
2.4.2概念结构设计的步骤
第一步是进行局部视图的设计:由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。因此先逐一的设计分E-R图。
第二步是进行视图的集成:各子系统的E-R图设计好之后,下一步就是要将所有的分E-R图合成一个系统的总E-R图,一般有两个方式,多个分E-R图一次集成,另一种是一次集成两个分E-R图。我想采用一次集成多个分E-R图的方式。
1 2.4.3数据库概念设计(E-R图设计)
用户
用户ID
用户密码
用户姓名
用户类型
用户号
图3 用户E-R图
销售日期
销售
销售ID
图4 销售E-R图
图5 供货E-R图
图6 供货商E-R图
图7 商品E-R图
图8 交易E-R图
2.5逻辑结构设计(下划线为主码)
2.5.1 E-R图向关系模型的转换
(1)商品信息表(商品编号,商品名称,价格,条形码,促销价格,促销起日期,促销止日期,允许打折,库存数量,库存报警数量,计划进货数,允许销售,厂商编号,供货商编号)
(2)用户表(用户编号,用户名称,用户密码,用户类型)
(3)销售表(销售编号,商品编号,销售数量,销售金额,销售日期)
(4)交易表(交易编号,用户名称,交易金额,会员卡号,交易日期)
(5)进货入库表(入库编号,入库商品编号,入库数量,单额,总额,入库日期,计划进货日期,入库状态)
(6)供货商表(供货商编号,供货商名称,供货商地址,供货商电话)
(7)厂商表(厂商编号,厂商名称,厂商地址,厂商电话)
2.5.2数据库物理设计
根据总体结构图设计各表的结构,其相应标的定义如下:
表1 商品信息表
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
MerchID
MerchName
MerchPrice
MerchNum
FactoryID ProvideID
Int
Varchar
Money
Int
Varchar
Varchar
4
50
4
4
10
10
P
F
F
Not null
Not null
Not null
Not null
Not null
Not null
商品编号
商品名称
价格
库存数量
厂商编号
供货商编号
表2 用户表
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
UserID
UserName
UserPW
UserStyle
Varchar
Varchar
Varchar
Int
10
25
50
4
P
Not null
Not null
Not null
Not null
用户编号
用户名称
用户密码
用户类型
表3 销售表
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
SaleID
MerChID
SaleDate
SaleNum
SalePrice
Varchar
Varchar
Datetime
Int
Money
10
10
8
4
4
P
F
Not null
Not null
Not null
Not null
Not null
销售编号
商品编号
销售日期
销售数量
销售单额
表4 交易表
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
DealingID
DealingPrice
DealingDate
MemberID
UserName
Varchar
Money
Money
Varchar
Varchar
10
4
4
10
10
P
F
Not null
Not null
Not null
Not null
交易编号
交易金额
交易日期
会员卡号
用户名称
表5 供货商表
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
ProvideID
ProvideName
ProvideAddress
ProvidePhone
Varchar
Varchar
Varchar
Varchar
10
50
250
25
P
Not null
Not null
供货商编号
供货商名称
供货商地址
供货商电话
表6 厂商表
字段名
字段类型
长度
主/外键
字段值约束
对应中文名
FactoryID
FactoryName FactoryAddress FactoryPhone
Varchar
Varchar
Varchar
Varchar
10
50
250
25
P
Not null
Not null
厂商编号
厂商名称
厂商地址
厂商电话
2.5.3设计索引和视图
(1)索引
在商品表上建立一个以商品ID为索引项的非聚集索引
在交易表上建立一个以交易编号、交易日期为索引项的非聚集索引
在商品信息表上建立一个以商品编号为索引项的非聚集索引
在销售表上建立一个以销售编号、销售日期为索引项的非聚集索引
在入库表上建立一个以入库编号、入库日期、商品编号为索引项的非聚集索引
(2) 视图
创建用于查询商品价格的视图
创建用于查询交易情况的视图
创建用于查询交易情况的视图
创建用于查询销售明细记录的视图
创建用于查询入库情况的视图
3.程序结果及分析
3.1创建数据库
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
图9 创建数据库
3.2创建基本表
Create table user(
userID varchar(10) primary key,
userName varchar(25) not null,
userPW varchar(50) not null,
userStyle varchar(4) not null)
Create table provider(
provideID varchar(10) primary key,
provideName varchar(50) not null,
provideAddress varchar(250),
providePhone varchar(25))
(1)创建交易表并填入数据,如图10所示:
图10 交易表的创建
(2)创建厂商表并填入数据,如图11所示:
图11 厂商表的创建
(3)创建商品信息表并填入数据,如图12所示:
图12 商品信息表的创建
(4)创建供货商表并填入数据,如图13所示:
图13 供货商表的创建
(5)创建销售表并填入数据,如图14所示:
图14 销售表的创建
(6)创建用户表并填入数据,如图15所示:
图15 用户表的创建
3.3创建索引
/*在交易表上建立一个以交易编号、交易日期为索引项的非聚集索引*/
CREATE nonclustered INDEX IX_Dealing ON Dealing(DealingID, DealingDate)
GO
图16 交易索引
/*在商品信息表上建立一个以商品编号为索引项的非聚集索引*/
CREATE nonclustered INDEX IX_MerchInfo ON MerchInfo(MerchID)
go
图片17 创建商品ID索引
/*在销售表上建立一个以销售编号、销售日期为索引项的非聚集索引*/
CREATE nonclustered INDEX IX_Sale ON Sale(SaleID, SaleDate)
GO
图18 创建销售索引
/*在入库表上建立一个以入库编号、入库日期、商品编号为索引项的非聚集索引*/
CREATE nonclustered INDEX IX_Stock ON Stock(StockID, StockDate, MerchID)
GO
图19 创建stockID
3.4创建视图
/*创建用于查询交易情况的视图*/
CREATE VIEW v_Dealing
AS
SELECT DealingDate as 交易日期,
UserName as 员工名称,
MemberCard as 会员卡号,
DealingPrice as 交易金额
FROM Dealing
GO
图20 交易视图
/*创建用于查询销售明细记录的视图*/
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
图21 状态视图
/ *创建用于查询入库情况的视图*/
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
:
图22入库状态
4.设计体会
课程设计做的是超市货物管理系统,经过了一个多星期的上网,图书馆进行查找学习才终于完成了此次课程设计。
通过这次对数据库的课程设计,不仅仅让我对所学的知识有了更深一步的掌握及理解,同时也得到了很多有用的发现及认识,大体有一下几个方面。
首先,设计始终应带着面向对象的思想去设计,这是设计的基本原则。对象的抽取应该符合真实性和抽象性,不能将对象强制抽取合并。
其次,在数据设计中,数据的使用率和冗余应该是设计考虑的通用标准。对外键的认识不能停留在表面,它代表了一对多的关系,它在真实的实体之间也能体现这关系的。
最后,虽然目前我们的数据库设计模式能够满足开发要求,也节省了开发时间,但是这样的设计会对以后工程项目的维护、改版造成成本上的增加。数据库表的字段在修改上将对主程序造成影响;另外对于开发和维护人员来说,字段的编码也需要规范化,这样可以统一字段编码,让维护人员一看就懂,增添的字段对以后接手项目的人员来说则很容易上手。
针对上述问题,我建议数据开发需要定义一套简明扼要的规范。规范中包括三个部分:一是编码的规范;二是字段类型长度的定义;三是表设计的特殊说明。
定义好域之后,就可以设计数据表以及字段了。设计完表,可以选择导出的数据库类型,并生成建数据和建表的sql,再通过数据库连接工具执行sql语句,一个工程项目的数据库就建立好了。以后只要有数据库的修改要求,则重新生成sql语句并执行之即可
此次数据库的课程设计,对于数据字典的创建,懂得了不少有关数据库开发过程中的知识,在实验中建表,数据修改查询更新等数据库的基本操作进行了系统的学习,感觉到这是一种能让我掌握知识和巩固知识的一个有效手段,培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实际能力的重要环节,是对我实际工作能力的具体训练和考察过程,
5.参考文献
[1]范立南,刘天惠等. SQL Server 2000 实用教程[M]. 北京:清华大学出版社,2004.02:47~138
[2]陈伟编著.SQLServer 2005数据库应用与开发教程[M].北京:清华大学出版社.2005.6:25~70
[3]Thomas M.Connolly ,Carolyn E.Begg . 数据库设计教程[M]. 北京: 机械工业出版社, 2005.1:1~49
[4]石岩.数据库技术与应用 [M].哈尔滨:哈尔滨工业大学出版社,2009.5:36 ~63
[5]周山夫,黄京莲.数据库应用程序设计 [M]. 北京:清华大学出版社,2004.9:76~109
[6]孙瑜.数据库系统基础 [M]. 北京:人民邮电出版社,2008.10:23~246
[7] 成先海.数据库基础与应用-SQL Sever 2000[M].北京:机械工业出版社,2008.3:45~70
沈 阳 大 学
沈 阳 大
沈 阳 大
沈 阳 大 学
展开阅读全文