超市销售数据库.docx

上传人:b****6 文档编号:12326535 上传时间:2023-06-05 格式:DOCX 页数:21 大小:110.36KB
下载 相关 举报
超市销售数据库.docx_第1页
第1页 / 共21页
超市销售数据库.docx_第2页
第2页 / 共21页
超市销售数据库.docx_第3页
第3页 / 共21页
超市销售数据库.docx_第4页
第4页 / 共21页
超市销售数据库.docx_第5页
第5页 / 共21页
超市销售数据库.docx_第6页
第6页 / 共21页
超市销售数据库.docx_第7页
第7页 / 共21页
超市销售数据库.docx_第8页
第8页 / 共21页
超市销售数据库.docx_第9页
第9页 / 共21页
超市销售数据库.docx_第10页
第10页 / 共21页
超市销售数据库.docx_第11页
第11页 / 共21页
超市销售数据库.docx_第12页
第12页 / 共21页
超市销售数据库.docx_第13页
第13页 / 共21页
超市销售数据库.docx_第14页
第14页 / 共21页
超市销售数据库.docx_第15页
第15页 / 共21页
超市销售数据库.docx_第16页
第16页 / 共21页
超市销售数据库.docx_第17页
第17页 / 共21页
超市销售数据库.docx_第18页
第18页 / 共21页
超市销售数据库.docx_第19页
第19页 / 共21页
超市销售数据库.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

超市销售数据库.docx

《超市销售数据库.docx》由会员分享,可在线阅读,更多相关《超市销售数据库.docx(21页珍藏版)》请在冰点文库上搜索。

超市销售数据库.docx

超市销售数据库

 

数据库系统课程设计

题目超市销售管理数据库设计

院系信息技术与工程学院

专业计算机科学与技术

姓名

学号

班级名称

指导教师

 

成绩

 

2016年12月15日

前言

超市销售管理系统是为了解决超市销售管理业务方面面临的复杂业务流程和繁琐数据处理等问题,提高超市运营效率,提高经济效益,提高市场竞争力而研究开发的一款数据库软件。

在开发平台windows上,采用了SQL数据库程序设计语言予以实现;可访问SQLSEREVER2005数据库,具有商品录入、商品信息查询、交易额计算、会员打折、打印销售发票、退货、打印退货发票、记录交易细节、货架管理、商品过期警告、缺货警告等方面的功能,为超市管理提供了有效的技术保障,并且可直接作为开发整个超市管理系统时已完成的一部分模块。

一、系统需求分析

1、处理对象

系统要处理的基本对象包括营业员基本信息、会员基本信息、管理员基本信息、商品基本信息、货架基本信息、销售单基本信息、退货单基本信息等多个对象。

各个基本对象包含信息如下所示:

营业员(营业员号,姓名,收银台位置,上班时间,下班时间,月薪,联系电话);

会员(会员卡号,会员姓名,卡密码,注册时间,累计消费);

商品(商品编号,货架编号,条形码,商品名称,商品价格,现有存量,存量底线,生产日期,保质期,供货商);

销售单(销售单编号,营业员编号,会员卡号,打印时间,有无折扣);

销售商品(销售单号,商品编号,销售数量);

货架(货架编号,管理员号,货架名称);

管理员(管理员号,姓名,联系电话,上班时间,下班时间,月薪);

退货单(退货单号,商品编号,退货数量);

打印(退货单号,销售单号,营业员号,打印时间)。

2、系统功能及信息处理

本中小型超市销售管理系统大体上包含三个模块,为前台收银业务处理,前台退货业务处理以及后台销售处理功能模块,具体如下所述。

2.1收银业务

通过扫描条形码或者直接输入商品名称(对于同类多件商品采用一次录入加数量的方式),计算本次交易的总金额,同时打印销售发票给顾客(包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号等信息)。

如果顾客是本店会员并持有本人会员卡,则在交易前先扫描会员卡,对此会员一定优惠,并将所购物品的总金额累计到该会员的总消费金额中,记录好会员信息。

2.2退货处理

顾客持有销售发票到收银台找收银员退货,若没有相应销售发票不予以退货。

通过扫描销售发票计算本次退货处理的退货额,并打印出退货发票给顾客,系统记录好退货信息。

2.3销售处理

作为超市后台管理部分,此系统应该具有功能包括当打印销售发票或退货发票时自动增减货架上商品数量,当货架商品不足时自动生成缺货警告信息给管理员,系统能够生成销售排行榜供管理员查看。

3、安全性和完整性要求

安全性先通过视图机制,不同的用户只能访问系统授权的视图;再通过用户授权机制,通过用户登陆来识别用户级别,根据这个级别来分配用户权限,达到数据更高层次的安全保密功能。

完整性要求用于确保各处理对象的主属性取值唯一并且一般不能为空;各处理对象的参照属性取值必须是来自于被参照属性。

可以通过用户自定义完整性(符合实际要求)来确保数据符合更高规范要求。

详细完整性要求见于系统的逻辑设计阶段。

4、系统结构图

通过对中小型超市销售管理业务及其功能方面的分析,构造出超市管理系统的总体结构图如下:

图1超市管理总体结构图

由于本系统为销售管理系统,只是超市管理系统的一部分,因此只实现了收营业务、退货处理和销售处理部分的功能。

对这三个处理模块进一步细化得到如下分结构图:

图1-2退货处理结构图

图1-1收银业务结构图

图1-3销售处理结构图

二、概念模型

1、分E-R图建立

根据分解第二层数据流程图可分别得到三个分E-R图。

图4-1收银业务模块E-R图

2、全局/整体E-R图

由于在做局部E—R图时,只考虑了局部功能模块,这样会导致各个E—R图之间有很多不一致的地方,造成在合并各分E—R图生成全局E—R图时有很多冲突。

通过仔细分析各个分E-R图之间的联系,消除冗余,消除冲突,最终成功生成全局E-R图,如下图所示。

三、关系数据模型

1、关系模式建立

关系模型由E—R图转换而来,实际上就是要将实体、实体的属性和实体之间的联系明确表示出来,这种转换一般遵循如下规则:

一个实体型转换为一个关系模式。

实体的属性就是关系的属性,实体的码就是关系的码。

此数据库系统包括营业员、会员、管理员、商品、货架、销售单、销售商品、退货单、打印多个关系模式:

营业员(营业员号,姓名,收银台位置,上班时间,下班时间,月薪,联系电话);

会员(会员卡号,会员姓名,卡密码,注册时间,累计消费);

商品(商品编号,货架编号,条形码,商品名称,商品价格,现有存量,存量底线,生产日期,保质期,供货商);

销售单(销售单编号,营业员编号,会员卡号,打印时间,有无折扣);

销售商品(销售单号,商品编号,销售数量);

货架(货架编号,管理员号,货架名称);

管理员(管理员号,姓名,联系电话,上班时间,下班时间,月薪);

退货单(退货单号,商品编号,退货数量);

打印(退货单号,销售单号,营业员号,打印时间);

2、用户子模式建立

用户子模式可通过建立视图来表示。

视图是虚表,是从一个或几个基本表(或视图)中导出的表,在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。

定义视图可以简化应用程序、可以实现一定的权限控制。

为了满足用户需求及方便后期数据库实施阶段的设计,此系统设计了如下视图。

各视图定义:

商品保质期(商品名称,生产日期,保质期,过期日期)

下架商品(商品名称,货架名称,过期日期)

营业员基本信息(营业员号,上班时间,下班时间,月薪,联系电话)

会员总消费情况(卡号,姓名,累计消费)

商品价格(商品名称,价格)

商品存放(商品名称,货架名称)

缺货商品(商品名称,现有存量,底线存量)

货架信息(货架名称,存放商品名)

上班情况(上班时间,营业员姓名,管理员姓名)

工作人员联系方式(姓名,编号,联系电话)

工作人员工资信息(姓名,编号,工资)

四、数据库物理设计

此数据库系统建立的索引如下所述。

(1)对于基本表ShopAssistant(营业员),由于要经常对属性列Snum查询从而获得某个营业员的完整信息,并且很少对其更新,因此可以给属性列Snum建一个聚簇索引。

(2)同理对于基本表Member(会员),由于要经常对属性列Mnum查询从而获得某个会员的完整信息,并且很少对其更新,因此可以给属性列Mnum建一个聚簇索引。

(3)对于Adminastrator(管理员),可在其属性列Anum上建立唯一性索引,索引值按降序排列。

(4)同样对于基本表GoodsShelf(货架)、Goods(商品),可在其主属性上建立唯一性索引。

(5)对于基本表BillSell(销售单)、SellGoods(销售商品)、ReturnGoods(退货单)、PrintBill(打印),由于其属性值经常发生变化,权衡系统为维护索引付出的代价,可考虑不建立索引。

五、数据库实施与测试

数据库实施与测试阶段主要内容包括数据库实施和测试两个部分。

1、数据库实施

1.1数据库及数据库对象建立

主要包括:

数据库、基本表、视图、索引、触发器以及存储过程。

相应T-SQL和PL/SQL语句详见附录.

1.2数据入库

对各个数据表成功要录入了50条左右的测试记录,测试结果满足设计要求。

2、数据库测试

数据库测试阶段主要内容是对建立的数据库及数据库对象进行测试,对测试结果进行分析,是否满足设计要求。

六、总结

通过数据库课程设计实习,对数据库知识有了更广泛的了解,在数据库的应用方面有了很大的收获。

(2)加深了对数据库系统相关知识和SQLSERVER2008数据库相关功能的理解。

以前只停留于记忆书本上关于数据库系统的理论知识,没有切身实地的实践过,而通过这次实习我再次加深了对数据库相关功能的理解与应用。

(3)进一步掌握相关的SQL语句。

开发设计超市销售管理系统的过程中牵涉到相当多基本表的建立,视图、索引以及存储过程的设计,这让我对这些SQL语句操作更熟练了。

(4)熟悉了对项目开发的大致过程。

这次系统开发,我更加明白体验到了数据库系统开发的过程,包括系统需求分析、概念设计、逻辑设计、物理设计,再到数据库实施、系统的测试和调试,对项目(系统)开发的大致流程有了一定的了解,为以后的系统的开发打下了良好的基础。

同样在在这次实习中,我看到了自己的基础知识的薄弱性,更体验到了基础知识的重要性。

比如说对具体的SQL语句还不是很熟悉,在画E-R图、设计带输出变量的存储过程以及建立相关索引(聚簇索引)时感到有些棘手。

遇到问题不可怕,其实能遇到问题是好事,它能让我在解决问题时学到更多的新知识,更能增加我的自信。

和传统管理模式相比较,使用本系统,毫无疑问会大大提高超市的运作效率,辅助提高超市的决策水平,管理水平,为降低经营成本,提高效益,减少差错,节省人力,减少顾客购物时间,增加客流量,提高顾客满意度,增强超市扩张能力,都能提供有效的技术保障。

但超市管理系统涉及范围宽,要解决的问题多,功能复杂,实现困难,本系统只能做出其中的销售管理部分功能,只适合小型超市使用。

由于自己初次独立设计开发数据库系统,能力非常有限,加上时间仓促,本系统毫无疑问有许多的不足之处。

对于出现的以上问题,我们深表歉意,恳请老师批评指正。

附录

1、创建数据库

createdatabaseSupermarket_SM;

2、创建基本表

createtableShopAssistant(

Snumchar(10)primarykey,

Snamechar(10)notnull,

Splacechar(10),

Swtimechar(10),

Sctimechar(10),

Ssalaarynumeric(10,1),

Sphonechar(20)

createtableAdministrator(

Anumchar(5)primarykey,

Anamechar(15)notnull,

Awtimechar(10),

Actimechar(10),

Asalarynumeric(10,1),

Aphonechar(25)

createtableMember(

Mnumchar(15)primarykey,

Mnamechar(15),

Mpasswordchar(6)notnull,

MregisterTimedate,

Mexpensenumeric(10,2)

createtableGoodsShelf(

GSnumchar(10)primarykey,

Anumchar(5)foreignkeyreferencesAdministrator(Anum),

GSnamechar(15),

createtableGoods(

Gnumchar(10)primarykey,

GSnumchar(10)foreignkeyreferencesGoodsShelf(GSnum),

Gbarcodechar(20),

Gnamechar(20),

Gpricenumeric(5,2),

GSstocksmallint,

GSlimitsmallint,

Gproducetimedate,

Gtimeint,

Gsupplierchar(50)

createtableBillSell(

Bnumchar(15)primarykey,

Snumchar(10)foreignkeyreferencesShopAssistant(Snum),

Mnumchar(15)foreignkeyreferencesMember(Mnum),

Bdatesmalldatetime,

Bdiscountchar

(2)

createtableSellGoods(

Bnumchar(15),

Gnumchar(10),

Bquantitysmallint,

primarykey(Gnum,Bnum),

foreignkey(Gnum)referencesGoods(Gnum),

foreignkey(Bnum)referencesBillSell(Bnum)

createtableReturnGoods(

Rnumchar(10)primarykey,

Gnumchar(10)foreignkeyreferencesGoods(Gnum),

Rquantitysmallint

createtablePrintBill(

Bnumchar(15),

Rnumchar(10),

Snumchar(10),

Rdatasmalldatetime,

primarykey(Bnum,Rnum,Snum),

foreignkey(Bnum)referencesBillSell(Bnum),

foreignkey(Rnum)referencesReturnGoods(Rnum),

foreignkey(Snum)referencesShopAssistant(Snum)

3、创建索引

(1)对于基本表ShopAssistant(营业员),由于要经常对属性列Snum查询从而获得某个营业员的完整信息,并且很少对其更新,因此可以给属性列Snum建一个聚簇索引。

其相应SQL语句为:

createclusteredindexdex_SnumonShopAssistant(Snum);

(2)同理对于基本表Member(会员),由于要经常对属性列Mnum查询从而获得某个会员的完整信息,并且很少对其更新,因此可以给属性列Mnum建一个聚簇索引。

其相应SQL语句为:

createclusteredindexdex_MunmonMember(Mnum);

(3)对于Adminastrator(管理员),可在其属性列Anum上建立唯一性索引,索引值按降序排列。

其相应SQL语句为:

createuniqueindexdex_AnumonAdministrator(Anumdesc);

(4)同样对于基本表GoodsShelf(货架)、Goods(商品),可在其主属性上建立唯一性索引。

其相应SQL语句为:

createuniqueindexdex_GSnumonGoodsShelf(GSnum);

createuniqueindexdex_GnumonGoods(Gnum);

4、创建视图

相应SQL语句为:

createviewV_Salesman

as

selectSnum,Swtime,Sctime,Ssalaary,Sphone

fromShopAssistant

createviewV_member

as

selectMnum,Mname,Mexpense

fromMember

createviewV_GoodsPrice

as

selectGname,Gprice

fromGoods

createviewV_GoodsStore

as

selectGname,GSname

fromGoods,GoodsShelf

whereGoods.GSnum=GoodsShelf.GSnum

createviewV_GoodsLack

as

selectGname,GSstock,GSlimit

fromGoods

whereGSstock<=GSlimit

createviewV_GoodsShelf

as

selectGSname,Gname

fromGoodsShelf,Goods

whereGoodsShelf.GSnum=Goods.GSnum

createviewV_Work

as

selectShopAssistant.Swtime,ShopAssistant.Sname,Administrator.Aname

fromShopAssistant,Administrator

whereShopAssistant.Swtime=Administrator.Awtime

createviewV_Phone(name,num,phone)

as

(selectSname,Snum,Sphone

fromShopAssistant)

union

(selectAname,Anum,Aphone

fromAdministrator)

createviewV_Salary(name,num,salary)

as

(selectSname,Snum,Ssalaary

fromShopAssistant)

union

(selectAname,Anum,Asalary

fromAdministrator)

createviewV_GoodsEnd

as

selectGname,Gproducetime,Gtime,DateAdd(DAY,Gtime,Gproducetime)EndTime

fromGoods

createviewV_GoodsUnload

as

selectGname,GoodsShelf.GSname,DateAdd(DAY,Gtime,Gproducetime)EndTime

fromGoods,GoodsShelf

whereDateAdd(DAY,Gtime,Gproducetime)<=GETDATE()

andGoods.GSnum=GoodsShelf.GSnum

createviewv_BillExpense

as

selectBnum,Gname,Gprice,Bquantity,(Bquantity*Gprice)TotalExpense

fromSellGoods,Goods

whereSellGoods.Gnum=Goods.Gnum

5、创建触发器

(1)当打印一张销售发票时,即删除数据库中刚建立的销售发票时,相应商品在货架上的现有存量减少,相应会员总消费额增加。

其相应SQL语句为:

createtriggert1onv_BillExpense

INSTEADOFdelete

as

declare@Quantityint,

@Gnamechar(10),

@TotalExpensefloat

--@Bnumchar(10)

select@Quantity=Bquantityfromdeleted

select@Gname=Gnamefromdeleted

--select@TotalExpense=TotalExpensefromdeleted

--select@Bnum=Bnumfromdeleted

updateGoods

setGSstock=GSstock-@Quantity

whereGoods.Gname=@Gname

--updateMember

--setMexpense=Mexpense+@TotalExpense

--where@Bnum=SellBill.Bnum

--andSellBill.Mnum=Mnum

(2)当从过期商品名单中删除某记录时,相应商品现有存量减少.

其相应SQL语句为:

createtriggert2onV_GoodsUnload

INSTEADOFdelete

as

declare@Gnamechar(10)

select@Gname=Gnamefromdeleted

deletefromGoods

whereGname=@Gname

(3)打印一张退货发票,即删除退货单中的记录,表示R商品重新返回原货架存储(假设脱货商品不影响第二次销售),货架商品现有存量增加.

其相应SQL语句为:

createtriggert3onReturnGoods

afterdelete

as

declare@Gnumchar(10),

@Rquantityint

select@Gnum=Gnumfromdeleted

select@Rquantityfromdeleted

updateGoods

setGSstock=GSstock+@Rquantity

whereGnum=@Gnum

6、建立储存过程

(1)计算某个销售单上,每种商品的累计销售额(即输出每种商品名称,件数,单价,费用小计)。

其相应SQL语句为:

createprocedurep_TotalExpense

(@BS_Bnumvarchar,

@Bnumvarcharoutput,

@Gnamevarcharoutput,

@Bquantityintoutput,

@Gpricenumericoutput,

@TotalExpensenumericoutput)

as

select@Bnum=Bnum,@Gname=Gname,@Bquantity=Bquantity,@Gprice=Gprice,@TotalExpense=(Bquantity*Gprice)

fromv_BillExpense

whereBnum=@BS_Bnum

其验证语句为:

Declare

@T_Bnumvarchar,

@T_Gnamevarchar,

@T_Bquantityint,

@T_Gpricevarchar,

@T_TotalExpensevarchar

Executep_TotalExpense'GS-0000004',@T_Bnumoutput,@T_Gnameoutput,@T_Bquantityoutput,@T_Gpriceoutput,@T_TotalExpenseoutput

Print@T_Bnum+''+@T_Gname+''+@T_Bquantity+''+@T_Gprice+''+@T_TotalExpense

(2)计算某个销售单上,顾客消费商品总数量和总消费额。

其相应SQL语句为:

createprocedurep_BillExpense

@BS_Bnumvarchar

as

selectBnum,sum(Bquantity)TotalQuantity,sum(TotalExpense)TotalExpense

fromv_BillExpense

groupbyBnum

havingBnum=@BS_Bnum

(3)查询某件商品价格。

其相

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2