课程设计医药销售管理系统doc.docx
《课程设计医药销售管理系统doc.docx》由会员分享,可在线阅读,更多相关《课程设计医药销售管理系统doc.docx(32页珍藏版)》请在冰豆网上搜索。
课程设计医药销售管理系统doc
成绩
09信计2011-2012
(一)
《数据库原理及应用》课程设计
设计题目 医药销售管理系统
设计时间 2011.12.29至2012.1.4
学生姓名
学生学号
所在班级
指导教师
医药销售管理系统
1可行性研究
近年来,中国医药行业迅速发展,药店企业多业态经营,仓储式大型超市、中等规模超市、便利连锁综合发展。
随着规模的扩大,传统的医药管理已经不能适应发展的需要,很难在激烈的竞争中生存。
通过对从事医药产品的零售、批发等工作企业的深入调查,发现其业务主要包括企业药品销售、出入库管理、企业的财务、人事管理等。
医药管理是一项琐碎、复杂而又十分细致的工作。
手工进行企业日常的药品销售、出入库的工作,容易出现“开空单”的现象,且呆账、错账时有发生,而且费时费力。
本系统在设计中考虑和克服了上述问题,实现了企业管理工作的系统化、规范化和自动化。
2需求分析
2.1任务概述
根据医药管理系统的需求分析结果总结系统内实体及联系并绘制系统的局部ER图然后画出全局ER图。
结合需求分析与概念结构设计把设计好的ER图转换为DBMS所支持的数据模型所符合的逻辑结构,运用SQL数据库管理系统建好表和相关约束
2.1.1目标
要求本系统能够投入实际的使用并且满足基本的功能要求。
要求具有较高的可靠性、安全性和易维护性,具有较高的可移植性。
本系统实现了以下的功能:
基本信息模块:
包括药品信息、员工信息、客户信息、供应商信息四个子模块。
(1)进货管理模块:
包括入库登记、入库登记查询二个子模块。
(2)库房管理模块:
包括库存查询、库存盘点、退货处理三个子模块。
(3)销售管理模块:
包括销售登记、销售退货、销售报表查询三个子模块。
(4)财务统计模块:
包括当日统计、当月统计二个子模块。
(5)系统维护模块:
包括数据安全管理、操作员管理、权限设置三个模块。
说明:
根据对现实中医药销售管理业务,将用户分为二类超级管理员(经理)、普通管理员(操作员)。
2.1.2运行环境
Windows98/2000/XP/2003操作系统下,安装并配置软件MicrosoftSQLServer2000数据库管理系统。
2.2数据需求
2.2.1数据字典(DD)
绘制DFD,只是对数据处理和彼此之间的联系进行了说明。
为进一步明确数据的详细内容和数据加工过程,应将数据流图中的全部数据流及其组成部分的数据元素,数据存储,数据加工,通过数据字典描述清楚,以便于此后系统设计的进行。
这就需要开发人员编写详细的数据字典,来描述系统开发过程的细节。
下面列出本系统中的数据项、数据流、数据存储、加工处理和数据结构的数据字典。
数据字典可采用图表格式或较紧凑的记录格式描述,本文采用的是图表格式。
数据项的DD表列举如下:
表2.1药品编号的数据字典
数据项
系统名:
医药销售管理系统编号:
I001名称:
药品编码别名:
数据项值:
类型:
字符型长度:
6个字节取值范围:
简述:
每种药品都具有唯一的编号,它是某种药品的唯一标识符,每种药品都有唯一的编号,如“011976”通常用前两位数字表示入库的年份,中间两位表示类别,最后两位表示该药的序号。
如果该类药数超过100种时,可用“0119A0”表示第100种药。
修改记录:
编写
日期
审核
日期
表2.2药品名称
数据项
系统名:
医药销售管理系统编号:
I002名称:
药品名称别名:
数据项值:
类型:
字符型长度:
32个字节取值范围:
简述:
每种药品都具有唯一药品标识。
修改记录:
编写
日期
审核
日期
表2.3密码
数据项
系统名:
医药销售管理系统编号:
I003名称:
售价别名:
数据项值:
类型:
数值型长度:
8个字节取值范围:
简述:
每种药品都要设置一个销售价格。
修改记录:
编写
日期
审核
日期
2.2.2数据库描述
使用SQLSERVER2000作为后台数据库,就可以行使基于网络连接的用户认证。
从而给不同的子系统分配不同的数据库使用角色,让他们彼此之间使用的数据库隔离开来,以达到较高的安全性。
2.3功能需求
2.3.1功能划分
本系统实现了以下的功能:
(1)基本信息模块
(2)进货管理模块
(3)库房管理模块
(4)销售管理模块
(5)财务统计模块
(6)系统维护模块
2.3.2功能描述
(1)基本信息模块:
包括药品信息、员工信息、客户信息、供应商信息四个子模块。
(2)进货管理模块:
包括入库登记、入库登记查询二个子模块。
(3)库房管理模块:
包括库存查询、库存盘点、退货处理三个子模块。
(4)销售管理模块:
包括销售登记、销售退货、销售报表查询三个子模块。
(5)财务统计模块:
包括当日统计、当月统计二个子模块。
(6)系统维护模块:
包括数据安全管理、操作员管理、权限设置三个模块
2.3.3数据流图(DFD):
数据流图是组织中信息运动的抽象。
是在调研的基础上,从系统的科学性、管理的合理性、实际运动的可行性角度出发。
将信息处理功能和彼此之间的联系自顶向下,逐层分解,从逻辑上精确地描述系统应具有的数据加工功能、数据输入、数据输出、数据存储及数据来源和去向(外部实体)等项目。
在数据流程图中可以很清楚的看到数据的流向,药品信息的数据分别能够流向经理、员工和顾客。
药品销售信息的信息也流经理。
药品销售信息记录的是药品销售和退还的信息。
顾客表信息从顾客流出又可以流回到顾客和员工、经理。
2.4一致性需求
在医药销售管理系统相关的表之间,有较强的关联性,为了实现一致性的需求,我们在各个表之间建立起了一致性约束。
2.5完整性需求
根据医药销售系统的要求,为保持数据的完整性,采用了数据库的事务机制,防止出现操作故障。
3概要设计
3.1总体设计
3.1.1系统结构示意图
医药销售管理系统结构示意图通过对系统的数据流图进行分析,进一步进行功能分解,直到分解成含义明确,功能单一的功能模块,从而得到系统的功能模块结构图。
3.2接口设计
3.2.1外部接口
通过一定的计算机硬件,建立服务器系统,管理员通过管理服务器系统,与用户进行交互,从而达到资源共享的目的,实现图书管理系统。
3.2.2内部接口
程序内部需要共同的数据定义和描述,此系统是智能办公化管理系统的一个子系统,必须和这个系统的其他子系统统一数据定义等,才能使该系统性能达到最好,并且要尽量消除和其他子系统模块之间存在的数据冗余,才能使整个智能办公系统做到高效,方便。
3.3E-R图
在系统的数据库设计中,先要对系统分析得到的数据字典中的数据存储进行分析,分析各数据存储之间的关系,然后才能得出系统的关系模式。
可以采用E-R图的方法来进行数据结构分析,E-R设计方法是一种通过E-R图来描述现实世界信息结构的DB设计方法。
E-R图由实体、属性、联系三部分组成。
各分E-R图说明如下:
经理E-R图:
供应商E-R图:
员工E-R图:
药品销售清单E-R图:
客户E-R图:
药品E-R图:
整体E-R图:
4逻辑设计
4.1关系模式转换
药品信息(药品编号,药品名称,药品类别代号,售价,进价,库存量,供应商,有效期)外码:
药品类别代号、供应商
药品分类索引信息(药品类别代号,类别说明)
员工信息(员工号,姓名,用户名,密码,职位,权限)
客户信息(客户号,客户名称,联系人,联系方式,客户所在城市)
供应商信息(供应商号,供应商名称,联系人,联系方式,供应商所在城市)
药品销售信息(销售编码,销售日期,药品编码,药品名称,单价,数量,供应商,总额,销售员编码)外码:
销售员编码、药品编码
4.2模式优化
在上述关系模式中,每一个分量都是不可分割的数据项所以都符合第一范式;而且前四个关系模式都是单个属性作为码,没有任何非主属性对码部分函数依赖,在药品销售信息内虽由三个属性作为码,但也不存在非主性对码的部分函数依赖,所以上都符合第二范式;药品信息、药品类别索引、客户信息、供应商信息四个关系模式中都不存在非主属性对码的传递函数依赖,都属于第三范式。
在员工信息关系模式中,员工是按照权限分类的,职位不同权限也不同,这样该关系模式就存在了非主属性对码的传递依赖:
职工号->职位,职位->权限,所以就将用员工信息分解为如下现个模式:
①员工信息(员工号,姓名,用户名,用户口令,职位)
②职位权限信息(职位,权限)
本系统不考虑职工信息的管理,为了使销售员编号与销售员的职工号连系起来,并能通过职工姓名和职位来修改用户信息所以把员工的部分信息(职工号,姓名,职位)和经理(用户名,密码)合成了员工信息(员工号,姓名,用户名,密码,职位,权限)以便系统功能的实现,所以在此不采用模式分解。
药品销售信息中有大量的数据冗余,表达不明确,将其分解为如下两个模式:
①药品销售主表(销售编码,销售日期,销售员编号,总金额)
②药品销售子表(销售编码,销售日期,药品编码,药品名称,单价,数量,供应商)
5数据库实现
5.1创建数据库表
药品信息(药品编号,药品名称,药品类别代号,售价,进价,库存量,供应商,有效期)外码:
药品类别代号、供应商
药品分类索引信息(药品类别代号,类别说明)
员工信息(员工号,姓名,用户名,密码,职位,权限)
客户信息(客户号,客户名称,联系人,联系方式,客户所在城市)
供应商信息(供应商号,供应商名称,联系人,联系方式,供应商所在城市)
药品销售信息(销售编码,销售日期,药品编码,药品名称,单价,数量,供应商,总额,销售员编码)外码:
销售员编码、药品编码
5.2创建视图
由供应商信息表“FirmInfor”建立一个视图,该视图由供应商信息表的所有列构成*/
createview供应商信息(供应商编码,供应商名称,联系人,联系电话,所在城市)
as
select*fromFirmInfor
5.3创建存储过程与触发器
建立INSERT触发器
/*建立INSERT触发器*/
createtriggerMedID_insertonMedID
forinsert
asif(selectcount(*)
fromMedID_med,inserted
whereMedID_med.MedKindeCode=inserted.MedKindeCode)=0
rollbacktransaction
建立DELETE触发器
createtriggerdelete_MedIDonMedID
fordelete
as
select*fromMedID
declare@MedKindeCodechar(10)
select@MedKindeCode=MedKindeCodefromdeleted
deletefromMedID
whereMedKindeCode=@MedKindeCode
select*fromMedID
建立UPDATE触发器
createtriggerMedID_updateonMedID
forupdate
as
ifupdate(MedKindeCode)
begin
raiserror('youcannotmodifythiscolumn',16,1)
rollbacktransaction
end
6测试
7课程设计总结
本次课程设计调查从事医药产品的零售、批发等工作的企业,根据其具体情况,设计医药销售管理系统。
加深了对数据库课程知识的理解。
由于时间仓促,软件还有很多不足之处,如:
药品信息查询部分不够完善,软件代码交冗余、效率不高等等,都相关功能缺乏认识造成的。
在今后的学习中我们会加强理论的实践的结合,通过不断摸索来弥补自己在软件制作方面的差距。
参考文献:
[1]苗雪兰,刘瑞新,宋歌.数据库系统原理及应用教程[M].北京.机械工业出版社.2010
[2]萨师煊,王珊.数据库系统概论[M].北京:
高等教育出版社.1997
[3]刘真原.SQLSERVER2000培训教程[M].北京:
清华大学出版社.2003
[4]李清国.Windows2000+ASPSQLServer案例教程[M].上海:
中科多媒体电子出版社.2001
[5]李晓黎.ASP+SQLSERVER网络应用系统开发指南[M].北京.人民邮电出版社.2004
附录:
createdatabaseMedicalManagerSystem/*创建医药销售管理系统*/
useMedicalManagerSystem
createtableMedID/*创建药品类别索引信息*/
(MedKindeCodechar(10)constraintMI_PRIPRIMARYKEY,
KindExplanationvarchar(12)NOTNULL)
createtableMedInfor/*创建药品信息表*/
(MedicineCodechar(6)constraintM_PRIMPRIMARYKEY,
MedicineNamevarchar(8)NOTNULL,
MedKindeCodechar(10)FOREIGNKEYREFERENCESMedID(MedKindeCode),
PriceMoney,
ListPriceMoney,
NumberInt,
FirmCodechar(10)FOREIGNKEYREFERENCESFirmInfor(FirmCode),
UserfulllifeDatetime)
createtableGueInfor/*创建客户信息表*/
(GuestCodechar(10)constraintG_PRIMPRIMARYKEY,
GuestNamevarchar(16)NOTNULl,
GLinkvarchar(12),
GLinkTellvarchar(11),
Cityvarchar(8))
createtableFirmInfor/*创建供应商信息表*/
(FirmCodechar(10)constraintF_PRIMPRIMARYKEY,
FirmNamevarchar(16)NOTNULL,
Linkvarchar(12),
LinkTellvarchar(11),
Cityvarchar(8))
createtableWorkInfor/*创建员工信息表*/
(WorkNochar(10)constraintW_PRIMPRIMARYKEY,
Namevarchar(12),
UserRegNamechar(6)NOTNULL,
Passwordchar(10)NOTNULL,
Positionchar(10),
PowerInt)
createtablesellMain/*创建医药销售主表*/
(SaleNointconstraintSM_PRIMPRIMARYKEY,
WorkNochar(10)FOREIGNKEYREFERENCESWorkInfor(WorkNo),
SaleDateDateTime,
AmountMoney)
createtablesellChild/*创建医药销售子表*/
(SaleNointconstraintSC_PRIMPRIMARYKEY,
MedicineCodechar(6)FOREIGNKEYREFERENCESMedInfor(MedicineCode),
MedicineNamevarchar(32)NOTNULL,
PriceMoney,
NumberInt,
Uintchar(8),
AmountMoney)
/*插入数据的存储过程*/
createprocMedID_proc
@MedKindeCodechar(10),@KindExplanationvarchar(12)
as
insertintoMedID(MedKindeCode,KindExplanation)values(@MedKindeCode,@KindExplanation)
execMedID_proc'0001','口腔溃疡'
execMedID_proc'0002','感冒'
execMedID_proc'0003','发烧'
execMedID_proc'0004','拉肚子'
execMedID_proc'0005','外伤'
createprocMedInfor_proc
@MedicineCodechar(6),@MedicineNamevarchar(8),@MedKindeCodechar(10),@Pricemoney,@ListPricemoney,
@Numberint,@FirmCodechar(10),@UserfulllifeDatetime
as
insertintoMedInfor(MedicineCode,MedicineName,MedKindeCode,Price,ListPrice,
Number,Supplicer,Userfulllife)values(@MedicineCode,@MedicineName,@MedKindeCode,@Price,@ListPrice,
@Number,@FirmCode,@Userfulllife)
execMedInfor_proc'1001','板蓝根','0002',5,3,'100','014','2010-12-5'
execMedInfor_proc'2002','四季感康','0002',14,10.5,'150','051','2010-12-12'
execMedInfor_proc'2003','银黄颗粒','0002',12,8.8,'120','014','2012-10-6'
execMedInfor_proc'2004','感冒清热软胶囊','0002',17,12,'150','015','2011-11-1'
execMedInfor_proc'3001','阿斯匹林','0003',15,11,'100','014','2010-12-1'
execMedInfor_proc'3002','布洛芬','0003',21,17.5,'120','051','2010-6-5'
execMedInfor_proc'4001','泻利挺','0004',25,20,'120','015','2012-10-2'
execMedInfor_proc'4002','诺氟沙星胶囊','0004',15,12,'100','015','2012-9-16'
execMedInfor_proc'5001','碘酒','0005',5,2.5,'50','051','2012-10-12'
execMedInfor_proc'5002','创口贴','0005',2,1,'250','014','2015-5-1'
createprocGueInfor_proc
@GuestCodechar(10),@GuestNamevarchar(16),@GLinkvarchar(12),@GLinkTellvarchar(11),
@Cityvarchar(8)
as
insertintoGueInfor(GuestCode,GuestName,GLink,GLinkTell,
City)values(@GuestCode,@GuestName,@GLink,@GLinkTell,@City)
execGueInfor_proc'015112','zhangsan','xiaozhang','668401','jiaxing'
execGueInfor_proc'065114','lisi','xiaofang','614425','yuyao'
execGueInfor_proc'052114','wangwu','xiaowu','659024','wenzhou'
execGueInfor_proc'043115','zhaoliu','xiaowu','615874','shangyu'
execGueInfor_proc'014221','awu','xiaozhang','651283','linan'
execGueInfor_proc'025471','asha','xiaofang','691472','dongyang'
createprocFirmInfor_proc
@FirmCodechar(10),@FirmNamevarchar(16),@Linkvarchar(12),@LinkTellvarchar(11),@Cityvarchar(8)
as
insertintoFirmInfor(FirmCode,FirmName,Link,LinkTell,City)
values(@FirmCode,@FirmName,@Link,@LinkTell,@City)
execFirmInfor_proc'015','yangshengtang','xiaotai','681472','huzhou'
execFirmInfor_proc'014','baozhilin','zhangqing','658421','deqing'
execFirmInfor_proc'051','pinmingdayaofang','oudan','65417','xiangshan'
createprocWorkInfor_proc
@WorkNochar(10),@Namevarchar(12),@UserRegNamechar(6),@Passwordchar(10),@Positionchar(10),@PowerInt
as
insertintoWorkInfor(WorkNo,Name,UserRegName,Password,Position,Power)
values(@WorkNo,@Name,@UserRegName,@Password,@Position,@Power)
execWorkInfor_proc'075101','ZKL','zkl01','456789','jingli',''
execWorkInfor_proc'075201','ZJM','zjm01','1