数据库课程设计报告孟炅.docx
- 文档编号:30717176
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:39
- 大小:2.07MB
数据库课程设计报告孟炅.docx
《数据库课程设计报告孟炅.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告孟炅.docx(39页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告孟炅
《数据库概论》课程考核报告
题目:
销售管理系统
班级:
192093
姓名:
孟炅
任课教师:
刘远兴
第一章概述
经济大环境的变化使得规模经济的优势不再突出。
固定的硬设备、人员数量、大量资金等资源投入占企业效益的比重变少,而软投入如管理、人力资源价值、服务、品牌附加值、渠道等要素资源的投入却能增加企业的效益。
“速度冲击规模”的速度经济概念已经向企业提出。
那么对于日益发展壮大的企业集团,怎样才能找到一套功能强大可任意拓展、低运行成本、安全可靠的管理解决方案,来跟上企业的发展,跟上时代的发展呢?
我们认为最好的办法是利用Internet这个工具,架构自己的供需链管理平台,使无处不在的互联网为你所用,实现无处不在的管理目标。
让Internet像电一样融入到企业的管理之中,提高企业在新经济时代的核心竞争力,通过对Internet的高效率使用,在激烈的市场竞争中,首先打赢第一仗“信息战”。
正是基于对Internet的这种深刻认识,针对中国企业特点提出了基于Internet的网络商务管理解决方案——企业销售管理系统。
1.1项目背景
中小企业在我国经济发展中具有重要地位,目前我国的中小企业数量多,地区分布广泛,行业分布跨度大。
随着全球经济一体化的发展和电子商务的兴起,中小企业之间的竞争将越来越激烈。
网络及电子商务的迅猛发展突破了时间、空间的局限性,给中小企业带来了更多的发展机会,同时也增大了企业之间的竞争强度。
这就要求中小企业必须改变企业的经营管理模式,提高企业的运营效率。
目前,我国中小企业的信息化水平还很低,相比国外企业,还只处于刚开始始用的阶段。
随着技术发展,电脑操作及管理日趋简化,电脑知识日趋普及,同时市场经济快速多变,竞争激烈,企业采用电脑管理进货、库存、销售等诸多环节也已成为趋势及必然。
1.3软件定义
现在商品销售单位需要处理大量的供应商信息,还要时刻更新单位所销售的产品信息,不断地添加、修改销售信息。
面对各种不同的信息,需要合理的数据库结构来保存数据信息,还需要有效的程序结构支持各种数据操作的执行。
本系统建设的目的在于专卖店可以方便地从系统获取产品信息,并且可以直接下订单;销售部门从系统获取订单,核对后通知仓库部门发货,系统自动创建发货单呈现给仓库员工;专卖店经理将每天的销售记录录入系统,系统对订货及销售记录进行统计,生成报表呈现给用户。
在此过程中,系统根据发货信息及销售信息自动更新公司及专卖店的库存,根据订货信息及发货信息自动更新店铺经理的资金。
最终实现公司销售系统的网络化,节省运营成本,提高运作效率。
⑴减少了系统对硬件的要求。
系统主要运行于服务器上,即系统运行的硬件取决于服务器,客户端的配置要求保证能够使用浏览器即可。
⑵节约了维护成本。
系统的维护主要集中于服务器端,比起维护多个客户端来说,成本和工作量将大大降低。
3降低了系统升级维护的难度。
逻辑和视图的分离使得模块相对独立在业务变更及系统升级和维护时,难度大大降低,大大提高了工作人员的工作效率。
在功能设计和系统实现方面,企业销售管理网站将具有以下特点:
4实用性:
为商品信息管理、用户信息管理提供了快捷、方便的方法。
5操作简单:
保证系统能适应不同等级计算机水平的用户,系统操作尽可能简单。
6代码可读性好:
要求系统结构清晰,代码简洁可读,便于日后维护和扩展。
1.4开发环境
(1)硬件环境
CPU:
P41.8GHz
内存:
256MB以上
硬盘空间:
40GB
(2)软件环境
操作系统:
中文Windows2000,Windows2003或XP
数据库:
SQLServer2008
开发工具包:
VisualStudio2010
第二章需求分析
2.1问题陈述
设计本系统模拟企业在产品销售活动过程中的管理内容,包括产品与顾客管理、订货、开票、信贷状况查询、产品销售后的查询、统计等的处理情况,简化的系统需要管理的情况如下:
1、每个顾客分配唯一顾客号(cno),要反映出顾客名(cna)、地址(cad)、电话(cte)、信贷状况(cco),预付款(cpm)等信息。
2、顾客订购产品由订单反应,每张订单由订单号(sno)、订货项数(snu)、订货日期(sdrq)、交货日期(sjrq)、付款金额(sje)和若干订单细节组成。
订单细节又由订单细则号(ssno)、订货产品号(pno)、数量(ssnu)等来描述。
3、产品由产品号(pno)、产品名(pna)、单价(ppr)与重量(pwe)来刻画。
4、某一顾客可任意订单,而某一订单只针对某一顾客;每一订单细节是相对某一订单来说的并只反映一种产品的订购情况,而某一产品能在不同的订单细节中出现。
2.2系统功能
系统需求分析是软件定义时期的最后一个阶段,是系统开发工作中的重要环节,它的基本任务是准确的回答“系统必须做什么”这个问题。
系统的功能需求
企业进销存管理系统是一个典型的数据库开发应用程序,主要由基础信息模块、采购管理模块、库存管理模块、商品销售模块、查询统计模块、往来管理模块、系统设置模块等功能。
2.3数据流分析
当数据在软件系统中运动时,它将被一系列“变换”所修改。
数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
它是在对系统调研阶段绘制出的业务流程图的基础上,从系统的科学性、管理的合理性、实际运行的可行性角度出发,将信息处理功能和彼此之间的联系自顶向下,逐层分解,从逻辑上精确地描述新系统应具有的数据加工功能、数据输入、数据输出、数据存储及数据来源和去向。
在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。
数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,因此是分析员与用户之间极好的通信工具。
此外,设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体的实现这些功能。
数据流图具有以下两个特性:
(1)抽象性:
表现在它完全舍去了具体的物质,只剩下数据的流动、加工、处理与存储。
(2)概括性:
表现在它可以把信息中的各种不同业务处理过程联系起来,形成一个整体。
数据流图由以下四种基本元素组成,即源点或终点、数据处理(功能)、数据存储和数据流。
该企业销售管理系统的数据流程见图2-2:
图2-1数据流图介绍
外部实体 数据处理数据流数据存储
商品销售系统的数据流程图如图:
图2-2数据流图
2.4功能模块设计
第三章数据库设计
在数据库设计的目标就是根据特定的用户需求及一定计算机软硬件环境,设计并优化数据库逻辑结构和物理结构,建立高效、安全的数据库,为数据库应用系统的开发和运行提供良好的平台。
设计一个数据库应该经历6个阶段,即需求分析阶段、概念结构设计、逻辑结构设计、物理结构设计、数据库实施与运行维护。
在第二章我们已经完成了需求分析,而物理结构设计基本上都是由数据库管理系统代为完成,数据库实施与运行维护会在第四章介绍。
因此本章将重点介绍,数据是数据的概念结构设计和逻辑结构设计。
3.1概念结构设计
将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计,他是整个数据库设计的关键。
概念结构设计以用户理解的形式表达信息为目标,这种表达与数据库系统的具体细节无关,它所涉及的数据及其表达独立于DBMS和计算机硬件,可以在任何DBMS和计算机硬件上实现。
概念设计最常用的方法就是E—R图。
一下就是部分E—R图。
图3-1整体E-R图
图3-2主要实体的属性
以上的E-R尽管不能描述整个数据库,但是已经大致看错数据库的结构。
在上面的E-R图中,我们可以看出,商品没有单价属性。
这并不是设计者没有考虑到,而是因为在商品这个实体里放单价这个属性完全没有意义。
因为一件商品的有多个价格,即采购价、最高采购价、最低销售价、销售价、平均采购价、平均销售价。
而且,在商品的各个价格有一定的约束条件,即最低销售应当大于最高采购价、最高采购价应当大于采购价、最低销售价应该小于销售价。
在E-R图中,我们可以看到有了仓库实体。
在指导书上并没有要求这个实体,但是,设计者经过了解得知,销售公司不可能没有仓库,而且必须有仓库。
因为仓库在销售过程中起着一个缓冲的作用,对于商品销售十分有益。
另外,在E-R图中,在联系中,我添加了员工编号属性。
设计者认为,任何采购、销售、存储的活动都必须有人完成。
在联系中添加员工编号,这样任何活动都可以找到对应的负责人。
3.2模式转换
概念设计是各种数据库模型的共同基础。
为了能够用某个DBMS实现用户需求,还必须将概念结构进一步优化为相应的数据模型,这正是数据库逻辑结构设计所完成的任务。
其中,最重要的工作就是模式转换工作。
转换的原则有
(1)一次实体转换为一个关系模式
(2)一个m:
n联系转换为一个关系模式(3)一个1:
n可以转换为一个关系模式(4)一个1:
1联系可以转换为一个独立的关系模式(5)3个或3个以上实体间的一个多元联系转换成一个关系模式。
主要转换的表如下:
商品(商品号,商品名,种类编号,保质期,数量)
顾客(顾客号,顾客名,电话,地址,信用等级编号,预付款)
供应商(供应商号,供应商名,电话,地址)
仓库(仓库号,仓库名,电话,地址,容量,管理员员工编号,大小)
采购单(采购编号,供应商编号,商品编号,员工编号,数量,进价,采购时间)
存储单(存储号,仓库名,商品编号,员工编号,方向,数量,时间)
销售单(销售号,顾客好,商品号,员工号,销售价,数量,销售时间)
部门(部门号,部门名称,部门经理,简介)
员工(员工号,身份证号,员工姓名,出生时间,性别,邮箱,部门号,职位)
3.3范式分析
范式是衡量关系模式优劣的标准,范式表达了关系模式中数据依赖应该满足的要求。
要强调的是,规范化理论主要是为了数据库设计提供理论的指南和参考,并不是关系模式规范化程度越高,实际应上还必须结合应用环境和现实世界的具体情况合理选择数据库模式的范式等级。
在实际设计中,范式分析并没有学习范式时那么复杂。
不难看出,以上数据关系都是三级范式。
第四章数据库实施
4.1数据库中表的定义
图4-1商品表
图4-2顾客表
图4-3仓库表
图4-4员工表
图4-5部门表
图4-6采购单表
图4-7存储单表
图4-8销售单表
图4-9登录表
代码见附录
4.2视图、存储过程、触发器的结构和定义
4.2.1视图
在数据库系统中,视图的作用有
1.视图能够简化用户的操作
2.视图能使用户能以多种角度看待同一数据
3.视图对重构数据库提供了一定程度的逻辑独立性
4.视图能够对机密数据库提供安全保护
5.适当的利用视图可以更清晰、更方便地表达
图4-10视图avrageofprice
createviewavrageofprice(Cno,AvgPrice)
as
selectCno,avg(PriceofP)fromPurchase
Groupbycno
功能:
用于存放商品的平均价格
图4-11视图ComoPP
功能:
用于存放商品的采购价信息
createviewComoPP
as
selectComodity.Cno,Cname,Supplier.SupplierNo,Suppliername,PriceofP,PurchaseTime,Unit
fromComodity,Purchase,Supplier
whereComodity.Cno=Purchase.CnoandSupplier.SupplierNo=Purchase.SupplierNo
图4-12视图ComoPP
createviewCoQuantity
asselectCno,Cname,Quantity,Unit
fromComodity
功能:
用于存放商品的总库存
功能:
用于存放仓库的商品库存
4.2.2存储过程
存储过程(storeProcedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过储存过程的名字并给出参数(如果存储过程有参数)来执行它。
1、insert_departmentinfo,用于插入部门信息
代码:
USE[ComManagement]
GO
/******Object:
StoredProcedure[dbo].[insert_departmentinfo]ScriptDate:
06/21/201209:
48:
04******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERprocedure[dbo].[insert_departmentinfo]
(@DepartmentNochar(5),@DepartmentNamevarchar(20),@Managervarchar(20),@BriefIntroductionvarchar(100))
as
insertintoDepartment(DepartmentNo,DepartmentName,Manager,BriefIntroduction)values(@DepartmentNo,@DepartmentName,@Manager,@BriefIntroduction)
2、insert_staffinfo,用于插入员工信息
代码:
USE[ComManagement]
GO
/******Object:
StoredProcedure[dbo].[insert_staffinfo]ScriptDate:
06/21/201209:
49:
39******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERprocedure[dbo].[insert_staffinfo]@StaffNochar(10),@PersonIdchar(18),@StaffNamevarchar(10),@BOrnTimesmalldatetime,@Sexchar
(2),@Emailvarchar(30),@DepartmentNochar(5),@positionvarchar(10)
as
insertintoStaffvalues(@StaffNo,@PersonId,@StaffName,@BOrnTime,@Sex,@Email,@DepartmentNo,@position)
3、insert_supplier,用于插入供应商
代码:
USE[ComManagement]
GO
/******Object:
StoredProcedure[dbo].[insert_supplier]ScriptDate:
06/21/201209:
50:
46******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERprocedure[dbo].[insert_supplier]@SupplierNochar(10),@SupplierNamevarchar(20),@Phonechar(15),@Addressvarchar(50)
as
insertintoSuppliervalues(@SupplierNo,@SupplierName,@Phone,@Address)
功能:
在实际应用中,笔者发现在前台调用数据库的存储过程比较麻烦,需要在前台定义参数。
相对于在前台直接使用嵌入式sql语言,前台调用数据库存储过程还是比复杂。
4.2.3触发器
触发器(trigger)是一个特殊的存储过程,它的执行不是程序调用,也不是手动启动,比如相对一个表操作(insert,delete,update)时,就会激活它执行。
1、
createtriggerpurchaseinsert1
onPurchase
afterinsert
as
updateComoditysetQuantity=Quantity+inserted.NumberofP
fromComodity,inserted
where
Comodity.Cno=inserted.Cno
功能:
插入采购单后,商品的数据自动增加
2、
createtriggersaleinsert
onSale
afterinsert
as
if(selectQuantityfromComodity,insertedwhereComodity.Cno=inserted.Cno)<(SelectNumberofSfrominserted)
begin
print'thestockislack'
rollbacktransaction
end
功能:
插入销售单时,如果销售数量大于存储量
3、
createtriggerStore_add
onstore
afterinsert
as
if(selectDirectionfrominserted)='进'
begin
if(NOTEXISTS(selectWC.CnofromWC,insertedwhereWC.Cno=inserted.Cnoandinserted.WarhouseNo=WC.WarhouseNo))
insertintoWCselectWarhouseNo,Cno,Numberoffrominserted
else
updateWC
setsort=sort+inserted.Numberof
frominserted,WC
where
WC.Cno=inserted.Cnoandinserted.WarhouseNo=WC.WarhouseNo
end
else
begin
if(selectsortfromWC,insertedwhereWC.Cno=inserted.Cnoandinserted.WarhouseNo=WC.WarhouseNo)<(selectNumberoffrominserted)
print'仓库库存不足!
';
rollbacktransaction;
end
功能:
插入存储单时,如果是存进,在把插入的数量自动加到库存数量上。
如果是存出,则检测数量十分大于库存,如果大于,则撤销,如果小于,就将仓库的存储量减少。
4、
USE[ComManagement]
GO
/******Object:
Trigger[dbo].[insert_CP2]ScriptDate:
06/21/201200:
33:
07******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
ALTERtrigger[dbo].[insert_CP2]
on[dbo].[CP]
forupdateas
DECLARE@Price1decimal(18,5)
DECLARE@Price2decimal(18,5)
select@Price1=采购最高价frominserted
select@price2=销售最低价frominserted
if@price2!
=0
begin
if@Price1>=@price2
begin
print('定价不合理')
rollbacktransaction
end
end
else
begin
commit
end
功能:
确保划价时,销售最低价大于采购最高价
第五章系统设计实现
这部分的设计是在前面的各项系统分析的基础上进行的总体结构设计以及具体的模块设计,为以后的程序设计制订蓝图。
为确定系统结构,必须从实现的角度把复杂的功能进一步分解。
通常程序中的一个模块完成一个适当的子功能。
应该把模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能,便于使用者使用该系统。
在代码编制的过程中,笔者遵循的是Google代码规范。
在所有会出现异常的地方,都使用了try{}catch{}语句。
这样大大减少了系统崩溃的可能性。
5.1销售管理系统主要功能模块详细设计
5.1.1销售管理系统的登录界面的设计:
用户登录页面比较简单,为防止用户的错误操作,应设置错误处理页面。
在登录操作中,一般发生的错误有:
用户输入了错误的用户名或密码;或用户直接单击了【登录】按钮。
图5-1登录界面1
如果第一次密码错误,密码清空,平且要求输入验证码。
图5-2登录界面2
5.1.2基础信息模块
下面是系统的主界面,由于登录者的权限不同,主菜单的访问权限也不同,图5-3是拥有所有权限的界面,图5-4是拥有采购经理权限的界面。
图5-3主界面1
图5-4主界面2
5.1.3采购管理模块
该模块的主要管理:
商品种类录入,商品录入,商品采购价划价,商品采购录入,商品采购价查询。
为了便于管理,在“图5-6界面”录入商品前必须在“图5-5界面”中添加商品种类。
添加后种类后,在“5-6界面”的种类选项中会自动种类号提供用户选择。
这样大大方便了用户。
这就是C#中的Combox的绑定技术,在这个系统中,有很多地方都使用到了这项技术。
图5-5添加品种
图5-6添加商品
在“图5-8界面”添加采购单前,必须先划价,否则在添加采购单前,会弹出“图5-9界面”的错误。
图5-7划价
图5-8添加采购单
图5-9添加采购单
由于不同供应商提供的商品的价格是不一样的,甚至同一个供应商提供的商品的价格也是不一样的,所以我添加了“图5-10”的查询价格功能,并且能算出该商品的平均价格。
图5-10按商品号查询
“图5-11界面”提供了按供应商编号查询商品价格的功能
图5-11按供应商查询
5.1.4仓库管理模块
该模块的主要是:
仓库管理和库存管理。
由于时间有限,笔者在前台功能实现时,所用时间最多的就是该功能模块,所以该模块的功能最全,最完整,最安全。
添加/修改/删除仓库信息和仓库信息查询最为简单,所有就不再介绍。
在添加过库存后,该仓库的该商品的数量会自动增加,可以通过“图5-16”查看。
如果减少库存时,触发器会自动检测,如果出货大于仓库存货,就会弹出“图5-17”的警告,并且撤销操作。
图5-12仓库管理
图5-13仓库查询
图5-14存储单查询
图5-15添加存储单询
图5-16查看库存
图5-17错误警告
5.1.4销售管理模块
该模块主要管理:
添加信用等级,添加顾客,添加销售单。
图5-18添加信用等级询
图5-18添加顾客
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 报告