《数据库原理》药品销售管理系统.docx
- 文档编号:23445905
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:28
- 大小:579.80KB
《数据库原理》药品销售管理系统.docx
《《数据库原理》药品销售管理系统.docx》由会员分享,可在线阅读,更多相关《《数据库原理》药品销售管理系统.docx(28页珍藏版)》请在冰豆网上搜索。
《数据库原理》药品销售管理系统
《数据库原理》课程设计报告
设计题目:
药品销售管理系统
专业:
信息管理与信息系统
计算机与数据科学学院
2019年01月10日
1概述
1.1选题的背景与意义
医药作为民生的基本保障之一,是我们生活中不可缺少的部分。
近年来,中国医药行业迅速发展,药店企业多业态经营,仓储式大型超市、中等规模超市、便利连锁综合发展。
随着规模的扩大,传统的医药管理已经不能适应发展的需要,很难在激烈的竞争中生存。
越来越多的医药销售点的普及,规模各不一样。
但总的来说,免不了两个部分:
进购药品和销售药品。
为了实现这两个部分的功能和要求,需设计出功能细致的完整系统。
该系统需包含对药品信息的管理、对财务状况的管理等。
医药管理是一项琐碎、复杂而又十分细致的工作。
手工进行企业日常的药品销售、出入库的工作,容易出现“开空单”的现象,且呆账、错账时有发生,而且费时费力。
本系统在设计中考虑和克服了上诉问题,实现了企业管理工作的系统化、规范化和自动化。
在本次课程设计中,基于对资料的调查了解和自身的主观认识粗略设计出如下医药销售系统,以达到实现简单的医药销售的各个功能的目的。
系统在现有人力和物力条件下,完全具备可以开发出来。
作为阶段性产品,日后的发展空间大,实现方法简单。
本系统采用SQLSERVER,所有数据信息的储存都由数据库来完成。
在结构上也具有很大的灵活性,在安全上也可以得到充分地保证。
固本系统在技术上是完全可以实现的。
国内医药行业处于逢勃发展阶段,许多医药销售行业都要求使用计算机进行管理,并且实际中也有系统的使用。
所以本系统的使用市场非常的广阔,易于推广和普及。
固本系统在市场应用上是完全可行的。
1.2相关技术分析
要想完成这个课题,需要对数据库相当了解,即对SQL语言以及T-SQL语言有一定的了解,下面我们来介绍一下这两门语言。
SQL语言是结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;SQL语句用于取回和更新数据库中的数据。
SQL可与数据库程序协同工作,比如MSAccess、DB2、Informix、MSSQLServer、Oracle、Sybase以及其他数据库系统。
存在着很多不同版本的SQL语言,但是为了与ANSI标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如SELECT、UPDATE、DELETE、INSERT、WHERE等等)。
SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
SQL Server用于操作数据库的编程语言,简称T-SQL。
T-SQL与PL/SQL不同,并没有固定的程序结构。
T-SQL包括以下4个部分:
DDL:
定义和管理数据库及其对象,例如create、alter和drop等。
DML:
实现对数据库表各对象的操作,例如insert、update等。
DCL:
数据控制语言,实现对数据库进行安全管理和权限管理等控制,例如grant、revoke、deny等。
附加的语言元素。
T-SQL的附加语言元素,包括变量、运算符、函数、注释和流程控制语句等。
在T-SQL中,命令和语句的书写是不区分大小写的。
要想完成好课题,必须要把这些技术掌握好,这是基础,也是必要条件。
2系统功能设计
2.1系统总体结构设计图
图2.1-1总体结构设计图
2.2系统功能模块
2.2.1基本信息模块
图2.2-1基本信息模块
2.2.2销售查询模块
图2.2-2销售查询模块
3数据库设计
3.1需求分析设计
3.1.1概述
要求本系统能够投入实际的使用并且满足基本的功能要求。
要求具有较高的可靠性、安全性和易维护性,具有较高的可移植性。
本系统实现了以下的功能:
1)进行药物入库,对原有药物和新进药物进行登记
2)能够实现对药物的查询
3)能够统计当日销售量和当月销售量
3.1.2需求阶段的目标及任务
需求分析的目标及任务就是为了提取有效的信息,概念模型的抽象化,转化为计算机系统能够识别的信息。
则通过需求分析所得的信息如下:
1)处理对象
药品信息:
药品编号、药品名称、药品类别、售价、进价、库存量、供应商、有效期
员工信息:
员工号、姓名、用户名、密码、职位、权限
顾客信息:
顾客编号、会员号
供应商:
供应商编号、供应商名称、联系人、联系方式
2)处理功能及要求
本次数据库设计需要做到的功能有:
1.药品信息的查询.
2.顾客信息的查询
3.药品销售的查询
4.日销售、月销售额查询
3.1.3安全性和完整性要求
1)安全性要求
系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。
安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。
2)完整性要求
系统完整性要求系统中数据的正确性以及相容性。
可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。
在系统进行设计时,一定根据第七章所学知识对数据的安全性及完整性进行设计。
以保证数据库更为完善。
3.1.4建立数据业务流程及数据字典
系统需求分析主要是通过对药店销售员工的咨询、请教,了解药店的管理规则和运行机制,并通过上网搜索有关药品管理系统的知识,了解到了药品管理的现状,以及在管理中的一些问题,然后通过所了解的文字信息,理解数据业务流程及数据字典,为后期数据库设计提供概念基础。
1.数据流图
数据流图
2.数据字典
(1)数据项:
系统涉及的数据项有44项
数据项编号
数据项名
数据项含义
与其它数据项的关系
存储结构
别名
DI-1
药品编号
药品的编号
varchar(10)
DI-2
药品名称
药品的名称
varchar(50)
DI-3
所属类别
药品的类别
varchar(10)
DI-4
供应商编号
供应商的编号
varchar(10)
DI-5
生产批号
生产的批号
varchar(10)
DI-6
生产日期
药品的生产日期
datetime
DI-7
有效期
药品的有效期限
datetime
DI-8
产地
药品的生产产地
varchar(10)
DI-9
进价
药品的进价
money
DI-10
单价
药品的售价
money
DI-11
库存
药品的库存量
int
DI-12
会员折扣
会员的折扣
nvarchar(10)
DI-13
员工编号
员工的编号
varchar(10)
DI-14
顾客编号
顾客的购买号
varchar(10)
DI-15
销售数量
药品销售的数量
Numeric(18,0)
DI-16
销售金额
药品销售的金额
money
DI-17
销售日期
药品销售的日期
datetime
DI-18
姓名
员工的姓名
varchar(10)
DI-19
职位
员工的职位
varchar(10)
DI-20
供应商名称
药品供应商的名称
varchar(20)
DI-21
联系人
药品供应商联系人
varchar(10)
DI-22
联系方式
药品供应商的电话
numeric(11,0)
表3.1-1数据项列表
(2)数据结构:
数据结
构编号
数据结构名
数据结构
含义
组成
DS-1
药品信息
药店药品信息
药品编号,药品名称,所属类别,供应商编号,生产批号,生产日期,有效期,产地,进价,单价,库存,会员折扣
DS-2
销售信息
药品销售信息
药品编号,员工编号,顾客编号,销售数量,销售金额,销售日期
DS-3
供应商
药品供应商信息
供应商编号,供应商名称,联系人,联系方式
DS-8
员工信息
药店员工信息
员工编号,姓名,职位
表3.1-2数据结构列表
(3)处理逻辑描述
处理编号
处理功能
处理过程
PR-1
查询
药品信息模块、供应商信息模块、员工信息模块、顾客信息模块、销售信息模块:
先确定查询所涉及的功能模块;然后,根据要查询的内容,确定查询数据流向;最后显示查询结果。
表3.1.3处理逻辑列表
(4)数据流:
数据流名称
含义
来源
去向
组成
销售单据
顾客购买药品的单据
员工
顾客
药品编号,员工编号,顾客编号,销售数量,销售金额,销售日期
表3.1.4数据流列表
(5)数据存储:
数据存储名称
含义说明
输入数据流
输出数据流
药品信息
关于药品的有关信息
药品基本信息
表3.1.5数据存储列表
3.2概念结构设计
图3.2-1药品局部E-R图
图3.2-2员工局部E-R图
图3.2-3供应商局部E-R图
图3.2-4销售局部E-R图
图3.2-5全局E-R图
3.3逻辑结构设计
逻辑结构设计的主要目的是把E-R图转换为关系模式。
3.3.1逻辑结构实体转换成关系模式
实体型转换为关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
对于实体间的联系则有以下不同的情况:
一个m:
n联系转换为一个关系模式。
与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
一个1:
n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码
一个1:
1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
三个或三个以上实体间的一个多元联系可以转换为一个关系模式。
与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
具有相同码的关系模式可合并。
根据以上的概念设计,可以把以上的几个E-R图转化为以下六个关系模式:
供应商(供应商编号,供应商名称,联系人,联系方式)
药品(药品编号,供应商编号,药品名称,产地,生产批号,所属类别,进价,单价,库存,会员折扣,生产日期,有效期)
员工(员工编号,姓名,职位)
顾客(会员号,顾客编号)
销售(药品编号,员工编号,顾客编号,销售数量,销售金额,销售日期)
供应商:
每个非主属性完全函数依赖于主关系键供应商编号属于2NF且不存在函数传递所以为3NF
销售:
药品编号,员工编号,顾客编号3个属性组合成主关系键,剩余三个非主属性完全函数依赖于主关系键且不存在函数传递故为3NF
顾客:
会员号为主关系键,剩余非主属性完全函数依赖于主关系键且不存在函数传递故为3NF
员工:
员工编号为主关系键,剩余每个非主属性完全函数依赖于主关系键且不存在函数传递故为3NF
药品:
药品编号为主关系键,剩余每个非主属性完全函数依赖于主关系键且不存在函数传递故为3NF
3.4物理结构设计
数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:
(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
决定存储结构的主要因素包括存取时间、存储空间和维护代价三个方面。
设计时应当对这三个方面均衡考虑。
数据库管理系统提供了聚集和索引两个选择。
聚集就是为了提高查询速度,把一个属性上具有相同值的元组集中地存放到一个物理块中。
如果放不下,可以存到相邻的物理块中.使用聚集后,聚集码相同的元组集中在一起了,因而聚集值不必在每个元组中重复存储。
聚集功能可以大大提高聚集码进行查询的效率。
再主码上建立索引可以提高查询速度,还能避免重复值录入,确保完整性。
对于那些检索非常频繁的非主属性建立索引,从逻辑上改变了记录的存储位置,从而改变了访问数据的入口点。
在本次药品销售管理系统设计中,我采用了索引的方式,建立多个索引可以缩短存取时间。
以下是我针对具体情况建立的索引:
1.createuniqueindexscion供应商(供应商编号)
2.createuniqueindexygon员工信息(员工编号)
3.createuniqueindexypon药品信息(药品编号,供应商编号)
4.createuniqueindexxson销售信息(药品编号,顾客编号,员工编号)
5.createuniqueindexgkon顾客信息(会员号)
3.5数据库实施
(一)建立药品销售管理系统数据库
createdatabase药品销售管理系统
(二)建立各个数据表
1.药品信息
Createtable药品信息
(药品编号varchar(10)primarykey,
药品名称varchar(50)notnull,
所属类别varchar(10)notnull,
供应商编号varchar(10)foreignkeyreferences供应商(供应商编号),
生产批号varchar(10)notnull,
生产日期datetimenotnull,
有效期datetimenotnull,
产地varchar(10)notnull,
进价moneynotnull,
单价moneynotnull,
库存intnotnull,
会员折扣nvarchar(10),
)
2.供应商
Createtable供应商
(供应商编号varchar(10)primarykey,
供应商名称varchar(20)notnull,
联系人varchar(10)notnull,
联系方式numeric(11,0)notnull,
)
3.销售信息
Createtable销售信息
(药品编号varchar(10)foreignkeyreferences药品信息(药品编号),
员工编号varchar(10)foreignkeyreferences员工信息(员工编号),
顾客编号varchar(10)notnull,
销售数量numeric(18,0)notnull,
销售金额moneynotnull,
销售日期datetimenotnull
)
4.员工信息
Createtable员工信息
(员工编号varchar(10)primarykey,
姓名varchar(10)notnull,
职位varchar(10)notnull,
)
5.顾客信息
Createtable顾客信息
(会员号varchar(10)primarykey,
顾客编号varchar(10)notnull
)
(三)建立视图
(1)用于查询药品基本信息的视图定义如下:
createview药品_view(药品编号,药品名称,生产日期,进价,单价,库存)
as
select药品编号,药品名称,生产日期,进价,单价,库存
from药品信息
(2)用于查询员工基本信息的视图定义如下:
createview员工_view(员工编号,姓名)
as
select员工编号,姓名
from员工信息
(3)用于查询药品销售基本信息的视图定义如下:
createview销售_view
asselect药品编号,销售数量,销售日期,sum(销售金额*销售数量)as销售总额
from销售信息
groupby药品编号,销售数量,销售日期
(4)用于查询供应商基本信息的视图定义如下:
createview供应商_view(供应商编号,供应商名称,联系人,联系方式)
as
select供应商编号,供应商名称,联系人,联系方式
from供应商
(5)用于查询顾客基本信息的视图定义如下:
createview顾客_view(会员号,顾客编号)
as
select会员号,顾客编号
from顾客信息
(6)用于查询药品日销售基本信息的视图定义如下:
createview日销售_view
asselect销售日期,sum(销售总额)as日销售总额
from销售_view
groupby销售日期
(7)用于查询药品月销售基本信息的视图定义如下:
createview月_销售_view
asselectmonth(销售日期)as日期,sum(日销售总额)as月销售总额
from日销售_view
groupby销售日期
(四)建立存储过程
(1)用于添加药品供应商信息的存储过程如下:
use药品销售管理系统
go
createprocedure添加供应商信息
(@供应商编号varchar(10),
@供应商名称varchar(20),
@联系人varchar(10),
@联系方式numeric(10,0)
)
asinsertinto供应商values(@供应商编号,@供应商名称,@联系人,@联系方式)
(2)用于添加药品信息的存储过程如下:
use药品销售管理系统
go
createprocedure添加药品信息
(@药品编号varchar(10),
@药品名称varchar(50),
@所属类别varchar(10),
@供应商编号varchar(10),
@生产批号varchar(10),
@生产日期datetime,
@有效期datetime,
@产地varchar(10),
@进价money,
@单价money,
@库存int,
@会员折扣nvarchar(10)
)
asinsertinto药品信息values(@药品编号,@药品名称,@所属类别,@供应商编号,@生产批号,
@生产日期,@有效期,@产地,@进价,@单价,@库存,@会员折扣)
(3)用于添加药品销售信息的存储过程如下:
use药品销售管理系统
go
createprocedure添加销售信息
(@药品编号varchar(10),
@员工编号varchar(10),
@顾客编号varchar(10),
@销售数量numeric(18,0),
@销售金额money,
@销售日期datetime
)
asinsertinto销售信息values(@药品编号,@员工编号,@顾客编号,
@销售数量,@销售金额,@销售日期)
(4)用于添加顾客信息的存储过程如下:
use药品销售管理系统
go
createprocedure添加顾客信息
(@会员号varchar(10),
@顾客编号varchar(10)
)
asinsertinto顾客信息values(@会员号,@顾客编号)
(5)用于添加员工信息的存储过程如下:
use药品销售管理系统
go
createprocedure添加员工信息
(@员工编号varchar(10),
@姓名varchar(10),
@职位varchar(10)
)
asinsertinto员工信息values(@员工编号,@姓名,@职位)
(五)设计触发器
删除修改供应商信息的触发器如下:
use药品销售管理系统
go
createtrigger删除修改供应商信息on供应商
afterdelete,update
as
deletefrom药品信息
where药品信息.供应商编号
in(select供应商编号fromdeleted)
Go
(六)向表中添加数据
1.药品信息添加数据
insertinto药品信息(药品编号,药品名称,所属类别,供应商编号,生产批号,生产日期,有效期,产地,进价,单价,库存,会员折扣)
values('blg001','板蓝根','感冒药','ooo111','019837','2018-11-12','2020-11-12','深圳','10','20','3000','0.85'),
('blg002','长效西林','抗生素','ooo112','013333','2018-12-12','2020-12-12','上海','18','40','2000','0.85'),
('blg003','阿司匹林','感冒药','ooo111','019877','2018-11-12','2020-11-12','深圳','10','20','3000','0.85'),
('blg004','心痛定','止痛药','ooo123','019357','2018-12-23','2020-12-23','天津','8','30','3000','0.85'),
('blg005','安定','止痛药','ooo114','017577','2018-11-12','2020-11-12','深圳','8','25','3000','0.85'),
('blg006','阿莫西林','感冒药','ooo135','343227','2018-11-12','2020-11-12','哈尔滨','10','21','3000','0.85')
2.供应商添加数据
insertinto供应商(供应商编号,供应商名称,联系人,联系方式)
values('ooo111','药都制药公司','王先生','132*******'),
('ooo112','上海制药公司','李女士','153*******'),
('ooo114','中国中药公司','张先生','130*******'),
('ooo123','中国医药公司','易先生','132*******'),
('ooo135','广州药品集团','张小姐','1341*******')
3.销售信息添加数据
insertinto销售信息(药品编号,员工编号,顾客编号,销售数量,销售金额,销售日期)
values('blg001','0001','01','2','20','2018-12-21'),
('blg003','0001','02','1','20','2018-12-23'),
('blg004','0002',
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库原理 数据库 原理 药品 销售 管理 系统