资源描述
《数据库系统原理》课程设计任务书
1、题目:某医院信息管理系统(药品库存、收费、医生病人等)
l 实现药品类型及药品信息的管理;
l 实现药品的入库、出库管理;
l 实现科室、医生、病人的管理;
l 实现处方的登记管理;
l 实现收费管理;
l 创建触发器,当药品入库、出库时自动修改库存;
l 创建存储过程统计某段时间内,各科室的就诊人数和输入情况;
l 创建视图查询各种药品的库存总数;
l 建立数据库相关表之间的参照完整性约束。
2、需求分析
2.1需求分析
(1)信息要求:医院信息管理系统涉及医生信息、病人信息、药品信息、收费表信息、科室管理等多种数据信息。
(2)功能要求:医院信息管理系统用户管理只有管理员,负责日常医院管理工作,比如药品的入库信息录入,修改医生信息,删除,添加等操作。医院信息管理系统具有以下功能:
医生信息管理:包括医生信息的录入、修改、删除等功能。
病人信息管理:包括病人信息的录入、查询等功能。
科室信息管理:包括科室信息的录入、修改、删除等功能。
药品信息管理:包括药品信息的录入、修改、删除等功能。
药品库存管理:包括药品库存信息的录入、修改、查询等功能。
处方表管理:包括医生开的处方表的录入、查询等功能。
配药单管理:包括病人药品信息的录入、查询等功能。
收费员信息管理:包括收费员信息的录入、修改、删除等功能。
药品类型管理:包括药品类型信息的录入、修改、删除等功能。
药品种类管理:包括药品种类的录入、修改、删除等功能。
2.2系统功能结构
根据题目的要求可以将医院信息管理系统分为以下功能:
医院信息管理系统
医生信息管理
病人信息管理
科室信息管理
收费员信息管理
药品信息管理
处方信息管理
药品库存管理
配药单管理
药品种类
管理
药品类型
管理
2.3数据流程图
2.3.1医生信息流程图
系统管理人员
医生信息查询
医生信息删除
医生信息修改
医生信息录入
医生信息表
查询信息
修改信息
录入信息
删除信息
2.3.2病人信息流程图
系统管理人员
病人信息查询
病人信息更新
病人信息录入
病人信息表
查询信息
更新信息
录入信息
2.3.3科室信息流程图
系统管理人员
科室信息查询
科室信息删除
科室信息修改
科室信息录入
科室信息表
查询信息
修改信息
录入信息
删除信息
2.3.4药品信息流程图
系统管理人员
药品信息查询
药品信息删除
药品信息修改
药品信息录入
药品信息表
查询信息
修改信息
录入信息
删除信息
2.3.5药品库存流程图
系统管理人员
药品库存查询
药品库存删除
药品库存修改
药品库存录入
药品库存表
查询信息
修改信息
录入信息
删除信息
2.3.6处方表流程图
系统管理人员
处方查询
处方表
查询信息
2.3.7配药单流程图
系统管理人员
配药单查询
药品信息录入
配药单
查询信息
录入信息
2.3.8收费员信息流程图
系统管理人员
收费员查询
收费员信息录入
收费员信息表
查询信息
录入信息
收费员信息删除查询
删除信息
2.3.9药品类型流程图
系统管理人员
药品类型查询
药品类型删除
药品类型修改
药品类型录入
药品类型表信息
查询信息
修改信息
录入信息
删除信息
2.3.10药品种类流程图
系统管理人员
药品种类查询
药品种类删除
药品种类修改
药品类型录入
药品种类表信息
查询信息
修改信息
录入信药品种类息
删除信息
3、概念结构设计
3.1局部E-R图
3.1.1医生信息管理局部E-R图
医生
电话
年龄
性别
姓名
科室编号
医生编号
3.1.2病人信息管理局部E-R图
病人
姓名
科室编号
电话
年龄
医治时间
病人编号
性别
身份证号码
缴费时间
3.1.3科室信息管理局部E-R图
科室
科室位置
科室名称
科室编号
3.1.4药品信息管理局部E-R图
药品
备注
有效期
生产地点
治疗功效
药品编号
生产日期
库存数量
3.1.5药品库存管理局部E-R图
药品库存
入库单价
库存数量
名称
出库单价
药品编号
3.1.6处方表管理局部E-R图
处方表
病人编号
处方时间
收费员编号
医生编号
药品数量
处方编号
3.1.7配药单管理局部E-R图
配药单
病人编号
收费金额
药品编号
收费员编号
收费时间
配药编号
3.1.8收费员信息管理局部E-R图
收费员
姓名
收费员编号
2.3.9药品类型局部E-R图
药品种类
配药数量
药品编号
名称
2.3.10药品种类局部E-R图
药品类型
库存位置
类型编号
类型名
3.2全局的E-R图
库存位置
医生
电话
年龄
性别
姓名
科室编号
医生编号
属于
科室
科室名称
科室位置
科室编号
1
m
病人
姓名
科室编号
电话
年龄
医治时间
病人编号
性别
身份证号码
缴费时间
处方表
病人编号
处方时间
收费员编号
医生编号
药品数量
配药单
病人编号
收费金额
药品编号
收费员编号
收费时间
领取处方
m
1
开处方
医治
1
m
1
1
领取配药单
1
1
收费员
姓名
收费员编号
药品库存
入库单价
库存数量
名称
出库单价
药品编号
药品信息
备注
有效期
生产地点
治疗功效
药品编号
生产日期
库存数量
药品类型
药品编号
类型名
纳费
包括1
m
1
1
m
查看
1
m
查看库存
m
1
配药
1
1
属于
m
1
药品种类
配药数量
药品编号
名称
1
包括2
1
配药编号
处方编号
3.4数据字典
3.4.1医生信息表共有6段:医生编号、姓名、性别、年龄、电话
科室编号,如下表:
医生信息表
字段名
数据类型
是否可以为空
主键
外键
医生编号
char(5)
不可为空
是
姓名
varchar(5)
性别
char(2)
年龄
varchar(3)
电话
char(11)
科室编号
char(10)
性别只能是‘男’或‘女’
电话只能是11位数字,且第一个数字为1
3.4.2病人信息表共有10字段:病人编号、病人姓名、病人性别、病人年龄、病人电话、科室编号、身份证号码、科室编号、医治时间、备注、纳费时间。如下表:
病人信息表
字段名
数据类型
是否可以为空
主键
外键
病人编号
char(10)
不可为空
是
病人姓名
varchar(6)
病人性别
variable (2)
病人年龄
varchar(10)
病人电话
char(11)
身份证号码
char(18)
科室编号
char(10)
是
医治时间
atetime
备注
varchar(20)
纳费时间
datetime
3.4.3科室信息表共有3字段:科室编号、科室名称、科室位置。如下表:
科室信息表
字段名
数据类型
是否可以为空
主键
外键
科室编号
char(10)
不可为空
是
科室名称
varchar(10)
科室位置
varchar(20)
3.4.4药品信息表共有8字段:药品编号、收费员编号、生产地点、生产日期、有效期、治疗功效、库存数量、备注。如下表:
药品信息表
字段名
数据类型
是否可以为空
主键
外键
药品编号
char(20)
不可为空
是
收费员编号
char(10)
是
生产地点
varchar(20)
生产日期
datetime
有效期
datetime
治疗功效
varchar(20)
库存数量
varchar(10)
备注
varchar(20)
3.4.5药品库存表共有6字段:药品编号、收费员编号、名称、库存数量、入库单价、出库单价。如下表:
药品库存表
字段名
数据类型
是否可以为空
主键
外键
药品编号
char(20)
不可为空
是
收费员编号
char(10)
是
名称
varchar(10)
库存数量
varchar(10)
入库单价
varchar(12)
出库单价
varchar(12)
3.4.6处方表共5字段:医生编号、病人编号、药品数量、药品编号、处方时间。如下表:
处方表
字段名
数据类型
是否可以为空
主键
外键
医生编号
char(5)
不可为空
是
病人编号
char(10)
不可为空
是
药品数量
varchar(10)
药品编号
char(20)
是
处方时间
varchar(10)
3.4.7配药单表共5字段:收费员编号、病人编号、药品编号、收费金额、收费时间。如下表:
配药单表
字段名
数据类型
是否可以为空
主键
外键
收费员编号
char(10)
不可为空
是
病人编号
char(10)
不可为空
是
药品编号
char(20)
是
收费金额
money
收费时间
datetime
3.4.8收费员信息表共有2字段:收费员编号、收费员姓名。如下表:
收费员信息表
字段名
数据类型
是否可以为空
主键
外键
收费员编号
char(10)
不可为空
是
收费员姓名
varchar(10)
3.4.9药品种类表共有3字段:药品编号、名称、配药数量。如下表:
药品种类表
字段名
数据类型
是否可以为空
主键
外键
药品编号
char(20)
不可为空
是
名称
varchar(10)
配药数量
varchar(10)
3.4.10药品种类表共有3字段:药品编号、名称、配药数量。如下表:
收费员信息表
字段名
数据类型
是否可以为空
主键
外键
药品编号
char(10)
不可为空
是
类型名
varchar(10)
库存位置
varchar (20)
4、逻辑结构设计
在这个阶段里,该系统的目标就是把基本的E-R图转换成关系数据模型。通过转换,得到的所需的数据表如下,
1.医生信息表(医生编号、科室编号、姓名、性别、年龄、电话)
2.病人信息表(病人编号、收费员编号、医生编号、配药单编号、科室编号、病人姓名、病人性别、病人年龄、病人电话、身份证号码、医治时间、备注、纳费时间)
3.科室信息表(科室编号、科室名称、科室位置)
4.药品信息表(药品编号、类型编号、名称、生产地点、生产日期、有效期、治疗功效、库存数量、备注)
5.药品库存表(药品编号、名称、库存数量、入库单价、出库单价)
6.处方表(处方编号、医生编号、病人编号、药品数量、药品编号、处方时间)
7.配药单表(配药单、收费员编号、病人编号、药品编号、收费金额、收费时间)
8.收费员信息(收费员编号、收费员姓名)
9.药品类型: (药品编号、类型名、库存位置)
10.药品种类:(药品编号、配药单编号、处方编号、名称、配药数量)
5、物理结构
这个阶段的任务就是根据逻辑结构设计选取一个最合适应用要求的物理结构的过程,就是数据库的物理结构设计:
5.1创建触发器,当药品入库、出库时自动修改库存
create trigger export_medicine on 药品种类表 for insert
as
begin
declare @t int,@num int,@num1 int
set @t=(select inserted.药品编号 from inserted)
select @num=药品名称表.配药数量
from 药品名称表
select @num1=药品库存表.库存数量
from 药品库存表
if(@num1>=@num)
begin
select @num1=@num1-@num
from 药品名称表,药品库存表
where 药品名称表.药品编号=药品库存表.药品编号 and 药品名称表.药品编号=@t
end
else
begin
print'配药数量已超过库存数量!'
rollback transaction
end
update 药品库存
set 库存数量=@num1
where 药品编号=@t;
end
5.2创建存储过程统计某段时间内,各科室的就诊人数和输入情况
create procedure num_count
@time1 datetime,@time2 datetime
as
begin
select 科室信息表.科室编号,科室信息表.科室名称,count(病人信息表.病人编号) as 病人人数,@time1 开始时间,@time2 结束时间
from 科室,病人
where 科室信息表.科室编号=病人信息表.科室编号 and 医治时间>=@time1 and 医治时间<=@time2
group by 科室信息表.科室编号,科室信息表.科室名称
end
5.3创建视图查询各种药品的库存总数
create view 药品库存总数
as
select 库存数量
from 药品库存表
5.4建立完整性约束
alter table 病人信息表
add
constraint check_病人性别 check (病人性别 in ('男','女')),
constraint check_病人电话 check (病人电话 like ('1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')),
constraint check_身份证号码 check (身份证号码 like ('[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))
go
alter table 医生信息表
add
constraint check_性别 check (性别 in ('男','女')),
constraint check_电话 check(电话 like ('1[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))
go
展开阅读全文