医院药品进销存系统

更新时间:2024-05-27 17:41:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

一、概述 .................................................................. 错误!未定义书签。 1.1 课程设计的目的 ........................................ 错误!未定义书签。 1.2 课程设计的内容 ........................................ 错误!未定义书签。 1.3 课程设计的要求 ........................................ 错误!未定义书签。 二、需求分析.......................................................... 错误!未定义书签。 2.1 系统需求 .................................................... 错误!未定义书签。 2.2 数据字典 .................................................... 错误!未定义书签。 三、系统总体设计 ................................................. 错误!未定义书签。 3.1系统总体设计思路 ..................................... 错误!未定义书签。 3.2 概念模型设计 ............................................ 错误!未定义书签。 3.2.1 局部E-R图 ....................................... 错误!未定义书签。 3.2.2 全局E-R图 ....................................... 错误!未定义书签。 3.3 逻辑结构设计 ............................................ 错误!未定义书签。 3.4 数据库建立实施 ........................................ 错误!未定义书签。 3.4.1 建立数据库 ....................................... 错误!未定义书签。 3.4.2 建立关系表 ....................................... 错误!未定义书签。 四、系统实现.......................................................... 错误!未定义书签。 五、系统评价.......................................................... 错误!未定义书签。 六、课程设计心得、总结 ..................................... 错误!未定义书签。 参考文献: .............................................................. 错误!未定义书签。

一、概述

1.1课程设计的目的

随着互联网的发展,利用网络技术来实现“无纸办公”这个概念已经深入人心,医药管理系统作为医院信息化建设的一个重要平台在完成各种医药资源的合理统计与分配,互联网访问,医院管理,电子设备等方面面发挥了重要的作用。但是现在十分缺少类似的能够满足医院需求的医药进销存管理系统,为规范医院的医药进存销管理和数据统计和分析,在较小的代价下满足用户信息需求,设计了这个医药进存销管理系统。

1.2课程设计的内容

(1)主要的数据表

药品分类代码表,药品库存表,供货商信息表,采购信息表等等。 (2)主要功能模块

1) 新药品的入库。

2) 过期药品的出库登记、处理记录。 3) 药品库存检索。 4) 供货商信息检索。 5) 药品采购记录管理。 6) 药品用药说明信息管理。 7) 输出相应的数据报表。

8) 具有数据备份和数据恢复功能。

1.3课程设计的要求

具体项目内容去医院进行调研,药品编码也应参考国家统一编码方法。

二、需求分析 2.1 系统需求

目前中小型药店的营业规模不断的扩大,药品的数量和种类不断增加。对于许多仍处于人工管理阶段的药店来说管理也越来越复杂。如果以药店工作人员的增加来实现药品的管理虽然能使工作变得方便起来但是这样带来更大的经济开销对于中小型药店来说要解决实际问题并不是很合适。开发药品进销存

管理系统可以很大程度上方便管理人员对药品的管理实现药品管理的高效化和统一化。为便于管理的方便性和可行性。根据现阶段的应用需求的开发目标设计药品进销存数据库管理系统。实现药品采购库存和销售管理的功能完成对药品从采购到销售的流水作业的数据管理功能。

根据市场的需求,要求系统具有以下功能: 1)新药品的入库。

2)过期药品的出库登记、处理记录。 3)药品库存检索。 4)供货商信息检索。 5)药品采购记录管理。 6)药品用药说明信息管理。 7)输出相应的数据报表。

8)具有数据备份和数据恢复功能。

系统主要为登陆,登陆后可以浏览,查询,添加,删除药品信息外还可以对销售记录进行浏览,删除,添加,修改。本系统是根据中小企业的实际需求而开发的,完全能够实现药品入库、销售管理,通过本系统可以达到以下目标:

? ? ? ? ?

系统运行稳定,安全可靠。 界面设计美观,人机交互界面友好。

信息查询灵活、方便、快捷、准确,数据存储安全可靠。 强大的报表预览、打印功能。 信息安全保密。

开发及运行环境

硬件要求

CPU:300MHz以上的处理器 内存:128MB,推荐256MB 硬盘:150MB以上剩余空间

显示像素:最低800*600,最佳效果1024*768 软件要求

操作系统:Windows2000/NT/XP/Vista。

数据库:SQL Server2000。

2.2数据字典 2.2.1数据项

数据项编号 Dl-1 Dl-2 Dl-3 Dl-4 Dl-5 Dl-6 Dl-7 Dl-8 Dl-9 Dl-10 Dl-11 Dl-12 Dl-13 Dl-14 Dl-15 Dl-16 Dl-17 Dl-18 Dl-19 Dl-20 Dl-21 Dl-22

数据项名 Supnumber Supname Supadress Supphone Gsname Gkind Gtype Gprice Gshelf Empnumber Empkind Empname Hounumer Houkind Houaddr Buynumber Buydate Buyliang

数据项含义 供应商编号 供应商名称 供应商地址 供应商电话 药品名称 药品分类 药品剂型 药品单价 药品保质期 职员编号 职员类别 职员姓名 仓库编号 仓库类别 仓库地址 采购单编号 采购日期 采购量

与其他数据项关系

类型 varchar(10) varchar(30) varchar(30) varchar(20) varchar(20) varchar(20) varchar(20) float date varchar(10) varchar(10) varchar(10) varchar(10) varchar(10) varchar(20) varchar(10) date int

varchar(10) int date varchar(10)

Sendnumber 发货单编号 Sendliang Senddate

发货量 发货日期

Lostnumber 报损单编号

Dl-23 Dl-24 Dl-25 Dl-26 Dl-27 Dl-28 Dl-29 Dl-30 Dl-31 Dl-32 Dl-33 Dl-34 Dl-35 Dl-36 Dl-37 Dl-38 Dl-39 Dl-40 Dl-41 Dl-42 Dl-43 Dl-44 Dl-45 Dl-46 Dl-47 Dl-48 Dl-49 Dl-50 Dl-51

Lostreas Lostliang Swnumber Swliang Jcnumber Jcliang

报损原因 报损量 实物清单编号 实物数量 盘查记录单编号 记录量

varchar(30) int

varchar(10) int

varchar(10) int

varchar(10) int

varchar(10) date int

varchar(10) date int

varchar(10) varchar(10) varchar(2) varchar(20) varchar(10) date int

varchar(10) varchar(30) date int

varchar(10) int

varchar(30) varchar(10)

Pancnumber 盘存单编号 Pancliang Dynumber Dydate Dyliang

盘存实际量 订药单编号 订药日期 订药数量

Salenumber 销售单编号 Saledate Saleliang Cusnumber Cusname Cussex Cusphone Innumber Indate Inliang Outnumber Outreas Outdate Outliang CBacknum

销售日期 销售量 客户编号 客户姓名 客户性别 客户电话 药品入库单编号 药品入库日期 药品入库量 药品出库单编号 药品出库原因 药品出库时间 药品出库量 客户退货单编号

Cbackliang 客户退货单量 Cbackreas Sbacknum

客户退货原因 药店退货单编号

处理处理逻辑逻辑编号 名称

检验合格入库 简述

输入的数据流

处理

输出的数据流

理频率

F3合格单 登记库存账目

F6入库记录单,35/F8采购记录单 F5退货单,F7退货记录单

月 10/月

P1.2 入库

P1.3 退货

检验不合格F4不合格退去 销售部向客户卖货 退货部处理客户退货单 客户退货成功

确定退货

P2.1 销售

确认退货

F9订货单 导购提货

F10销售单,F1150/出库单 F15退单 F14退货记录

月 5/月 5/月

P2.2 F12退货单 处理退货单

P2.3 退货 F15退单 客户退货成功 单,F16退货确认单

P3.1

主管检查 确定

主管检查报损单

F17报损单

根据报损单检查报损

F18不合格报损单,F19合格报损单 F20报损记录

1/月

P3.2 报损

单 报损P3.3 不生

效 P4.1

存货清查 对比账单

主管接受合F19合格报格报损单

损单

确定报损单 单,F21报损清单

F18不合格报损单

1/月

主管反馈不F18不合格向库管反馈不合合格报损单 报损单

格报损单

1/月 2/月 3/月 4/

对仓库存货F22药品清根据药品清单存清查 对比清查结果

单 F23记录单

货清查 根据药品清单对比记录单

F23记录单 F22药品清单,F24盘存单 F25盘存清单,

P4.2

P4.3 确定确定盘存单 F24盘存单 登记盘存和库存

处理处理逻辑逻辑编号 名称

盘存单

简述

输入的数据流

处理

输出的数据流

理频率

记录

F26盘存记录单 月

2.2.5数据存储

数据存储编号

数据存储名称

商品入库出库,

S1

库存记录

客户退货,报损盘存清查后修改库存量

采购记录 退货记录 销售记录 退货记录 报损记录 盘存记录

商店从供应商采购的货物记录

商店退给供应

供应商编号,商品编号,商品名,商品数量,商品价格 供应商编号,商品编号,商品商品编号,仓库编号,存储量

P1.2,P2.2,P2.3,P3.2,P4.3

简述 数据存储组成

相关联的处理

S2 P1.2

S3

商的退货记录 名,商品数量 商品卖给客户的销售记录 客户退给商店的退货记录 库房报损记录 商品盘存清查的记录

商品编号,客户编号,商品名,商品数量

商品编号,客户,商品名,商品数量

仓库编号,商品编号,商品名,报损数量

仓库编号,商品编号,商品名,实际数量

P1.3

S4 P2.1

S5 P2.3

S6 P3.2

S7

P4.3

三、系统总体设计

3.1系统总体设计思路

将需求分析得到的用户需求抽象为信息结构(概念模型)的过程。要能充分的反应事物与事物之间的联系,是对现实世界的一个真实模型。在需求分析阶段得到的应用需求首先抽象为信息世界的结构才能更好的用某一DBMS实现这些需求。E-R模型是概念模型的有力工具。逐一设计分E-R图,再将所有的分E-R图综合成系统的总E-R图。 3.2 概念模型设计 3.2.1 局部E-R图

局部E-R图的建立依据于数据流图的建立。以下可从第二层数据流图分别建立局部E-R图。详见图1-1至1-8。

职员姓名职员性别仓库类别仓库地址职员编号仓库编号职员仓库 图1-1 局部E-R图 图1-2 局部E-R图

供应商名称供应商供应商编号客户编号客户

供应商地址供应商电话客户姓名客户性别客户电话 图1-3 局部E-R图 图1-4 局部E-R图

药品保质期药品的剂型药品药品分类药品单价

药品名称图1-5 局部E-R图

m购买商品m销售n职员n 客户 图1-6 局部E-R图

库房m管理n库管理

图1-7 局部E-R图

图1-8 局部E-R图

3.2.2 全局E-R图

综合各部分的局部E-R图,药品进销存管理系统的总体E-R图的设计如下图1-10所示。

药品供应供应商药品库存mnmnm采购n职员

客户姓名 客户性别 客户的电话

varchar(10) not null —— varchar(2)

—— ——

varchar(20)

采购

列名 数据类型 约束

采购单编号 varchar(10) not null

供应商编号 varchar(10) not null

药品名称 varchar(30) not null

职员编号 varchar(10) not null

采购量 int not null

发货 列名 发货单编号 供应商编号 药品名称 职员编号 发货量 发货日期

数据类型

约束

采购日期

date

主外键 主键 外键 外键 外键 —— ——

主外键 主键 外键 外键 外键 —— ——

varchar(10) not null varchar(8)

not null

varchar(30) not null varchar(10) not null int date

not null

采购退货 列名

数据类型

约束 not null not null not null not null

主外键 主键 外键 外键 外键

采购退货单编号 varchar(10) 供应商编号 药品名称 职员编号

varchar(10) varchar(30) varchar(10)

退货量 退货原因

int

varchar(30)

not null

—— ——

客户退货 列名

客户退货单编号 客户编号 药品名称 职员编号 退货量 退货原因

数据类型

约束

主外键

varchar(10) not null 主键 varchar(10) not null 外键 varchar(30) not null 外键 varchar(10) not null 外键 int

not null ——

——

varchar(30)

销售 列名 销售单编号 客户编号 药品名称 职员编号 销售量 销售日期

数据类型

约束

主外键 主键 外键 外键 外键 —— ——

varchar(10) not null varchar(10) not null varchar(30) not null varchar(10) not null int date

not null

客户订药 列名 订药单编号 客户编号 药品名称 职员编号 订药量

数据类型

约束

主外键

varchar(10) not null 主键 varchar(10) not null 外键 varchar(30) not null 外键 varchar(10) not null 外键 int

not null ——

订药日期 date ——

入库 列名 入库单编号 药品名称 仓库编号 职员编号 入库量 入库日期

数据类型

约束

主外键

varchar(10) not null 主键 varchar(30) not null 外键 varchar(10) not null 外键 varchar(10) not null 外键 int date

not null ——

——

出库 列名 出库单编号 药品名称 仓库编号 职员编号 出库量 出库日期

报损 列名 报损单编号 药品名称 仓库编号 职员编号 报损量 报损原因

数据类型

约束

主外键 主键 外键 外键 外键 —— ——

数据类型

约束

主外键

varchar(10) not null 主键 varchar(30) not null 外键 varchar(10) not null 外键 varchar(10) not null 外键 int date

not null ——

——

varchar(10) not null varchar(30) not null varchar(10) not null varchar(10) not null int

not null

varchar(30)

盘存 列名 盘存单编号 药品名称 仓库编号 职员编号 盘存量

数据类型

约束

主外键

varchar(10) not null 主键 varchar(30) not null 外键 varchar(10) not null 外键 varchar(10) not null 外键 int

not null ——

四、系统实现

4.1 数据库实施(详见附录)

数据库的物理设计阶段之后就进入了实施阶段,这一阶段要用SQL2000来操作。具体的数据库,数据表,视图,索引和存储过程等都是这个阶段用SQL语句创建。

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

药店的药品管理所涉及的对象主要包括:数据库、基本表、视图、索引、触发器以及存储过程。以实现对数据的操作的简便和有效。

(详细的sql代码见附录)。 4.1.2 数据入库

对各个主要数据表要录入20条以上的记录,方法可用EXCEL批量导入,也可以逐条录入。 4.1.3 数据库测试

主要内容是对建立的数据库及数据库对象进行测试 具体要求:

(1)要设计好测试数据

(2)对测试的结果要以图片形式,同时注意图片的格式 (3)对测试结果进行分析,是否满足设计要求。 (数据操作的验证,存储过程的验证详见附录。)

五、系统评价

这次数据库的课程设计是医院药品进销存系统,医院药品进销存系统能够为用户提供充足的信息和快捷的查询手段。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好等。这些优点能够极大地提高医院药品进销存系统的效率, 而在本系统中还有很多的遗漏和欠缺,但是基本的医院药品进销存系统的功能,已经能够实现。

六、课程设计心得、总结

在此次数据库设计中,我有一下心得及体会: 一.在这学期的数据库系统概论学习中,因为对数据库系统的认识不够深刻,以及平时所做的练习都是老师给定的表,自己只是做简单的查询,删除,更新工作,所以给了我一个很大的误区:数据库系统只是一个很简单的系统,它只会做简单的工作。在老师说做数据库设计师,我觉得就是一个简单的事情。但是我错了,在这次实习中我遇到了很多的问题,比如:对于我的题目《医药销售管理系统》,在对现实的抽象上我遇到了较多的问题,我觉得自己可以做的业务一经老师的指导才知道看似简单的问题其实是那么的复杂。

二.我深刻的感受到了数据库设计是环环嵌套的,只有做好了需求分析,有了好的数据流图,才会使后期的工作顺利的展开,否则就会在折回来接着做需求分析,所以我们要花大量的时间去做需求分析。

在此次课程设计中我按时完成了数据库设计的要求。同时经过这次课程设计我知道了做任何事都要事先考虑好所有可能发生的事情,然后做好相应的准备。

附录: Sql

语句

create database YYJXC --表

create table Supplier(

Supnumber varchar(10) primary key, Supname varchar(30) not null, Supadress varchar(40) not null, Supphone varchar(20))

create table Goods(

Gname varchar(30) primary key, Gkind varchar(20), Gtype varchar(20),

Gprice float not null, Gshelf date)

create table Employer(

Empnumber varchar(10) primary key, Empname varchar(10), Empkind varchar(10))

create table Hourse(

Hounumber varchar(10) primary key, Houkind varchar(10), Houaddr varchar(20))

create table Customer(

Cusnumber varchar(10) primary key, Cusname varchar(10) not null,

Cussex varchar(2) check(Cussex in('男', '女')), Cusphone varchar(20))

create table Buylist(

Buynumber varchar(10) primary key, Supnumber varchar(10), Gname varchar(30),

Empnumber varchar(10), Buyliang int not null, Buydate date,

foreign key (Supnumber) references Supplier(Supnumber), foreign key (Gname) references Goods(Gname),

foreign key (Empnumber) references Employer(Empnumber))

create table Sendlist(

Sendnumber varchar(10) primary key, Supnumber varchar(10), Gname varchar(30),

Empnumber varchar(10), Sendliang int not null, Senddate date,

foreign key (Supnumber) references Supplier(Supnumber), foreign key (Gname) references Goods(Gname),

foreign key (Empnumber) references Employer(Empnumber))

create table Sbacklist(

Sbacknumber varchar(10) primary key, Supnumber varchar(10),

Gname varchar(30),

Empnumber varchar(10), Sbackling int not null, Sbackreas varchar(30),

foreign key (Supnumber) references Supplier(Supnumber), foreign key (Gname) references Goods(Gname),

foreign key (Empnumber) references Employer(Empnumber))

create table Dyaolist(

Dynumber varchar(10) primary key, Gname varchar(30), Cusmumber varchar(10), Empnumber varchar(10), Dyliang int not null, Dydate date,

foreign key (Cusmumber) references Customer(Cusnumber), foreign key (Gname) references Goods(Gname),

foreign key (Empnumber) references Employer(Empnumber))

create table Salelist(

Salenumber varchar(10) primary key, Gname varchar(30), Cusmumber varchar(10), Empnumber varchar(10), Saleliang int not null, Saledate date,

foreign key (Cusmumber) references Customer(Cusnumber), foreign key (Gname) references Goods(Gname),

foreign key (Empnumber) references Employer(Empnumber))

create table Cbacklist(

Cbacknumber varchar(10) primary key, Gname varchar(30), Cusnumber varchar(10), Empnumber varchar(10), Cbackliang int not null, Cbackreas varchar(30),

foreign key (Cusnumber) references Customer(Cusnumber), foreign key (Gname) references Goods(Gname),

foreign key (Empnumber) references Employer(Empnumber))

create table Inlist(

Innumer varchar(10) primary key, Gname varchar(30),

Hounnumber varchar(10), Empnumber varchar(10), Inliang int not null, Indate date,

foreign key (Hounnumber) references Hourse(Hounumber), foreign key (Gname) references Goods(Gname),

foreign key (Empnumber) references Employer(Empnumber))

create table Outlist(

Outnumber varchar(10) primary key, Gname varchar(30),

Hounnumber varchar(10), Empnumber varchar(10), Outliang int not null, Outdate date,

foreign key (Hounnumber) references Hourse(Hounumber), foreign key (Gname) references Goods(Gname),

foreign key (Empnumber) references Employer(Empnumber))

create table Lostlist(

Lostnumber varchar(10) primary key, Gname varchar(30),

Hounnumber varchar(10), Empnumber varchar(10), Lostliang int not null, Lostreas varchar(30),

foreign key (Hounnumber) references Hourse(Hounumber), foreign key (Gname) references Goods(Gname),

foreign key (Empnumber) references Employer(Empnumber))

create table Panclist(

Pancnumber varchar(10) primary key, Gname varchar(30),

Hounnumber varchar(10), Empnumber varchar(10), Pancliang int not null,

foreign key (Hounnumber) references Hourse(Hounumber), foreign key (Gname) references Goods(Gname),

foreign key (Empnumber) references Employer(Empnumber))

--视图

create view Vi_supplier as

select *

from Supplier

create view Vi_goods as

select * from Goods

create view Vi_sale as

select Gname,Saleliang from Salelist

create view Vi_baosun as

select Gname,Lostliang from Lostlist

create view Vi_pancun as

select Gname,Pancliang from Panclist

--索引

create nonclustered index In_Supname on Supplier(SupName) --触发器

--限制删除C-02客户的退货记录 create trigger tri_C02 on Cbacklist

instead of delete as begin if exists( select *

from deleted

where Cusnumber='C-02' )

print '删除记录' end --测试 delete

from Cbacklist

where Cusnumber='C-02'

--限制某一药品入库量不小于400 create trigger tri_Acc on Inlist

instead of insert,update as declare

@Gname char(30), @Inliang int select

@Gname=Gname, @Inliang=Inliang from inserted if @Inliang<400

print '入库量小于400' --测试 insert into Inlist

values('I-25','牛黄解毒片','H-01','E-16',300,'2011-4-15')

--限制更新的药品价格不小于1元,小于1元的改为1元 create trigger tri_gprice on Goods

instead of insert,update as

declare

@Gname varchar(30), @Gprice float select

@Gname=Gname, @Gprice=Gprice from inserted if

@Gprice<1 update Goods set Gprice=1

where Gname=@Gname

--测试

insert into Goods

values('三黄片','处方药','普通片',0.5,'2012-9-1')

--保质期到2010年的不允许插入 create trigger tri_gshelf

触发器验证:

触发器验证(tri_C02)

触发器验证(tri_Acc)

触发器验证(tri_gprice)

触发器验证(tri_gshelf)

触发器验证(tri_buy)

本文来源:https://www.bwwdw.com/article/yl77.html

Top