包裹详单管理.docx
《包裹详单管理.docx》由会员分享,可在线阅读,更多相关《包裹详单管理.docx(17页珍藏版)》请在冰点文库上搜索。
包裹详单管理
包裹详单管理系统的设计与实现
一、需求分析3
1系统需求3
1.1功能需求3
1.2性能需求3
1.3可靠性、可用性需求3
1.4将来可能提出的需求3
2数据字典4
2.1实体信息4
2.2实体联系信息5
二、概要设计5
1包裹发货系统E-R图6
2快递公司-库内包裹“处理”联系细化E-R图6
3库内包裹实体属性图7
4收件人实体属性图7
5寄件人实体属性图7
6供应包裹报价-快递公司-供应商“收货”联系的属性图8
7快递公司-库内包裹“发货”联系的属性图8
8快递公司-库内包裹“退书”联系的属性图9
三、详细设计9
1数据库关系模式9
2数据库及表结构的创建9
3数据库表关系图13
4功能实现操作的T-SQL语句14
四、实现与探讨15
五、参考文献16
一、需求分析
1系统需求
1.1功能需求
某快递公司需要一套信息管理系统辅助完成商品发货业务,该包裹详单系统业务主要包括收货、发货、退货、统计、查询功能。
①收货:
根据某种包裹的信息,把本次收货的信息添加到货库中。
②发货:
根据某种包裹的信息,把本次发货的信息添加到已发货库中。
③退货:
收件人把已接收的包裹退还给快递公司。
输出一份退货单并自动修改库存量,把本次退货的信息添加到退货库中。
④统计:
根据发货情况输出统计的报表。
一般内容为每月的发货总额、发
货总量及排行榜等信息。
⑤查询:
允许用户设置条件进行收货、退货、统计。
⑥系统维护:
如数据安全管理(含备份与恢复)、操作员管理、权限设置等。
1.2性能需求
实现信息管理自动化,提高发货事务工作效率,减少工作中工作人员工作量;实现自动统计功能,提供有效参考数据作为快递公司运营决策依据,实现管理信息化、自动化。
1.3可靠性、可用性需求
系统应当有较高的可用性,操作简单,便于用户使用;
系统要有相对较高的可靠性,这样才能保障可用性,系统的数据一定要可靠,才能保障快递公司业务的照常进行,并且可靠的统计结果才能供管理人员进行准确决策,更好的运营快递公司,提高运营效率。
1.4将来可能提出的需求
进一步改善系统功能具体要求如下:
1、实现信息和各种统计报表的打印功能;
2、实现用户分级和不同权限操作;
3、实现多客户端的数据共享和多客户端同时业务操作。
2数据字典
2.1实体信息
需要描述的实体和从联系中抽象出的实体信息如下:
1Sender:
寄件人信息
SenterID:
寄件人编号
Sname:
寄件人姓名
Saddress:
寄件人地址
Sphone:
寄件人电话
Spostcode:
寄件人邮编
2Receive:
收件人信息
ReceiveID:
收件人编号
Rname:
收件人姓名
Raddress:
收件人地址
Rphone:
收件人电话
Rpostcode:
收件人邮编
3Package:
包裹信息
PackageID:
包裹编号
SenderID:
寄件人编号
Pkind:
包裹种类
Pname:
包裹名
Pweight:
包裹重量
Pprice:
包裹价格
PostPrice:
包裹资费
PNum:
内置物数量
4GetIn:
收货信息
GetID:
收货编号
SenderID:
寄件人编号
PackageID:
包裹编号
GDate:
收货日期
PostPrice:
包裹资费
PNum:
内置物数量
5SellOut:
发货信息
SellID:
发货编号
PackageID:
包裹编号
SDate:
发货时间
PNum:
内置物数量
6ReturnPackage:
退货信息
ReturnID:
退货编号
PackageID:
货物编号
RDate:
退货时间
Rnum:
退货数量
Rprice:
退货资费
2.2实体联系信息
1收货:
一次可进多本书,一间快递公司对应不同的供应商,可根据报价选择供应商,收货在收货信息表中记录收货信息,同时修改库存包裹记录,如已存在该书修改库存量,不存在插入新书。
2退货:
退货和发货存在特定的对应关系,没有发货退货时不可能产生的,首先通过发货记录确认售出,才可进行后续操作,记录退货信息,删除对应发货记录,并处理相关库存信息,并且超出规定期限无法完成退货操作。
3发货:
首先要保证有库存,没有库存无法完成发货,发货时需要保存发货信息,同时对库存信息进行更改。
4统计:
相应的营业信息均存储,根据不同条件可以进行统计和汇总,形成有价值的参考性数据可以指导经营,如包裹排行榜的实现,和月发货的汇总。
二、概要设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
同时,合理的数据库结构也将有利于应用系统程序的实现。
在充分需求分析的基础上,经过逐步抽象,概括,分析,充分研讨,可以画出如下反映包裹发货管理系统数据的整体E-R图.
1包裹发货系统E-R图
2快递公司-库内包裹“处理”联系细化E-R图
3库内包裹实体属性图
4收件人实体属性图
5寄件人实体属性图
6供应包裹报价-快递公司-供应商“收货”联系的属性图
7快递公司-库内包裹“发货”联系的属性图
8快递公司-库内包裹“退书”联系的属性图
三、详细设计
1数据库关系模式
按照实体-联系图转化为关系模式的规则,本系统的E-R图可转化为如下有6关系模式:
包裹供应商(寄件人编号,寄件人地址,寄件人电话,寄件人邮编,寄件人姓名)
库内包裹(包裹编号,寄件人编号,包裹种类,包裹名,包裹重量,包裹价格,包裹资费,内置物数量)
收货(收货编号,寄件人编号,包裹编号,收货日期,包裹资费,内置物数量)
发货(发货编号,包裹编号,发货日期,内置物数量)
退货(退货编号,包裹编号,退货日期,包裹资费,内置物数量)
2数据库及表结构的创建
打开SQLServier2008,新建查询分析,根据已设计的关系模式及各模式的完整性要求,使用Transact-SQL(SQLServer中的SQL命令)建立数据库和表结构。
(1)建立数据库package
CreateDataBasepackage
go
(2)选择使用package
usepackage
go
(3)建立Getin表收货信息表
CREATETABLE[dbo].[GetIn](
[GetID][int]NOTNULL,
[SenderID][int]NULL,
[PackageID][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
[GDate][datetime]NULL,
[PostPrice][float]NULL,
[PNum][int]NULL,
CONSTRAINT[PK_GetIn]PRIMARYKEYCLUSTERED
(
[GetID]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
建表结果:
(4)建立Package表包裹信息表
CREATETABLE[dbo].[Package](
[PackageID][nvarchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,
[SenderID][int]NULL,
[Pkind][nchar](10)COLLATEChinese_PRC_CI_ASNULL,
[Pname][nchar](10)COLLATEChinese_PRC_CI_ASNULL,
[ReceiveID][int]NULL,
[Pweight][int]NULL,
[Pprice][float]NULL,
[PostPrice][float]NULL,
[PNum][int]NULL,
[SDate][datetime]NULL,
[pn][int]NOTNULLCONSTRAINT[DF_Package_pn]DEFAULT(
(1)),
CONSTRAINT[PK_Package]PRIMARYKEYCLUSTERED
(
[PackageID]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
建表结果:
(5)建立Receive表收件人信息表
CREATETABLE[dbo].[Receive](
[ReceiveID][int]NOTNULL,
[Rname][nchar](10)COLLATEChinese_PRC_CI_ASNULL,
[Radderss][nchar](10)COLLATEChinese_PRC_CI_ASNULL,
[Rphone][int]NULL,
[Rpostcode][int]NULL,
CONSTRAINT[PK_Recive]PRIMARYKEYCLUSTERED
(
[ReceiveID]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
建表结果:
(6)ReturnPackage表退货信息表
CREATETABLE[dbo].[ReturnPackage](
[ReturnID][int]NOTNULL,
[PackageID][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
[RDate][datetime]NULL,
[PostPrice][float]NULL,
[PNum][int]NULL,
CONSTRAINT[PK_ReturnPackage]PRIMARYKEYCLUSTERED
(
[ReturnID]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
建表结果:
(7)建立SellOut表发货信息表
CREATETABLE[dbo].[SellOut](
[SellID][int]NOTNULL,
[PackageID][nvarchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,
[SDate][datetime]NULL,
[PNum][int]NOTNULL,
[ReceiveID][int]NULL,
[Raddress][nchar](10)COLLATEChinese_PRC_CI_ASNULL,
CONSTRAINT[PK_SellOut]PRIMARYKEYCLUSTERED
(
[PackageID]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
建表结果:
(8)建立Sender表发货人信息表
CREATETABLE[dbo].[Sender](
[SenderID][int]NOTNULL,
[Sname][nchar](10)COLLATEChinese_PRC_CI_ASNULL,
[Saddress][nchar](10)COLLATEChinese_PRC_CI_ASNULL,
[Sphone][int]NULL,
[Spostcode][int]NULL,
CONSTRAINT[PK_Sender]PRIMARYKEYCLUSTERED
(
[SenderID]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]建表结果:
3数据库表关系图
数据库名称:
BookSalesSys,创建6张用户表后,表间能形成如下的关系图:
4功能实现操作的T-SQL语句
1.录入:
insertinto[package].[dbo].[Package](PackageID,SenderID,ReceiveID,Pkind,Pname,Pweight,Pprice,PNum)
values(4,1,1,'办公用品','办公桌','100','10000',1)
修改:
update[package].[dbo].[Package]
setPackageID=5wherePackageID=4
删除:
deletefrom[package].[dbo].[Package]wherePackageID=5
2.按收件人查询包裹信息(按价格降序排列):
select*from[package].[dbo].[Package]
whereReceiveID=1orderbyPpriceDESC
3.按寄件人查询包裹信息(按重量升序排列):
select*from[package].[dbo].[Package]
whereSenderID=1orderbyPweightASC
4.计算每个月的包裹资费:
selectsum(PostPrice)as月总资费
from[package].[dbo].[Package]
whereSDatelike'%8%'
5.按收件人统计包裹数量:
selectsum(pn)as包裹数量
from[package].[dbo].[Package]
6.按寄件人统计包裹数量:
selectsum(pn)as包裹数量
from[package].[dbo].[Package]asp,[package].[dbo].[Sender]ass
wherep.SenderID=s.SenderID
ands.SenderId=1
7.建立用户及授权:
execsp_addlogin'zhangsan','123'
go
execsp_grantdbaccess'zhangsan','zhangsan'
usepackage
go
grantselectonPackagetozhangsan
四、实现与探讨
1、设计和实现数据库过程中应当考虑实践应用需要,如果把多过程的功能的后续部分过程改为触发器实现,在应用时可以将大部分软件部署在服务器端,减少客户端的负担可提高软件的效率。
2、最终的软件产品一般以易操作的图形界面提交给用户,作为后台的数据库不容忽视,其好坏影响到整个软件的开发,在动手搭建数据库之前,一定要根据需求做好分析和设计,为后续工作的开展打好坚实基础。
五、参考文献
[1]T-SQL教程
[2]T-SQL完全手册