1、软件工程专业数据库课程设计报告(2014/2015 学年 第一学期)学生姓名: xx 学生班级: 软件工程 122002 班学 生 学 号 : xx指导教师: xx2015 年 1 月 10 日计算机科学与技术学院课程设计任务书学号:xx课程设计名称 数据库课程设计课程设计题目 病人管理系统学生姓名 xx 专业班级 软件工程 122002 班课程设计任务内容建立一套功能较完善的病人管理信息系统,提高医院的服务效率和质量、树立医院的良好形象,使医院工作可以高效有序的运转,提高医院的经济效益,促进医院的发展,使医院在日益激烈的市场竞争中取胜。具体功能包括:病人基本信息模块:主要是病人在挂号时对病人
2、的姓名,性别,年龄等基本信息进行录入。病人病历信息模块:医生在对病人检查之后,将病人的病历信息录入,以便对病人的医疗信息有一个大概了解。也方便之后的治疗病人用药信息模块:对病人服用的药品种类以及数量作好记录,方便最后的医疗费用结算,也方便对病人用药信息的跟踪。病人病床信息模块:对病人的住院信息进行记录,从而方便对病人的查询以及病床的管理。病人手术信息模块:对病人的手术信息进行管理,记录病人的手术时间,主刀医师,所在手术室,从而方便医院的管理。指导教师:xx时 间: 年 月 日课程设计名称 数据库课程设计课程设计题目 医院病人管理系统学生姓名 xx 专业班级 软件工程1222002 班学号 xx
3、同组人指导教师 xx 设计成绩评价内容签 字:时 间: 年 月 日目 录第一章 系统概述 11.1 系统背景 11.2 系统目的及意义 1第二章 系统需求分析 22.1 用户需求 22.2 数据流图 32.3 数据字典 4第三章 概念模型和物理模型 53.1 功能模块图 .53.3 数据库概念模型(CDM)设计 .73.4 数据库物理模型(PDM)设计 7第四章 系统数据库对象设计 84.1 关系模型的设计 .84.2 基本表的创建 114.3 索引设计 .154.4 插入数据 154.5 视图设计 174.6 函数设计 184.7 触发器设计 184.8 存储过程设计 19第五章 个人总结
4、19参考文献 21附录 221 建表截图 222 建立索引截图 243 插入数据截图 254 建立视图截图 275 函数截图 .286 触发器截图 295.7 存储过程截图 301第一章 系统概述1.1 系统背景病人信息管理的信息流量大,手续较繁琐,在手工方式下,医护人员要做大量不必要的重复工作、效率低、准确性差、不方便管理,影响工作效率,造成了很多就诊病人得不到合理有效的快捷就诊服务,甚至影响医疗质量。为此,越来越多的医院加快了信息化建设的步伐。计算机在医院管理中应用的普及,利用计算机实现医院管理势在必行,医院管理系统能有效地优化服务和工作环境、使病人和医生情绪得以放松,为病人提供现代化的服
5、务,提高服务效率和质量、树立医院的良好形象,使医院工作可以高效有序的运转,提高医院的经济效益,促进医院的发展,使医院在日益激烈的市场竞争中取胜。本系统基本功能包括了医院在门诊,药房,手术,住院,收费和管理这几个方面,充分运用计算机技术、网络技术、数据库技术;采用灵活的模块化结构设计方法进行设计。本系统采用 SQL SERVER 2005 开发的数据库。 1.2 系统目的及意义本课程主要设计病人信息管理系统,通过需求分析,大致了解到医院的病人看病流程以及所要完成的工作内容,然后经过概念结构设计、逻辑结构设计、物理结构设计等过程,即数据库流程图的设计,E-R 图的设计,关系模式的完成,完整性分析以
6、及各种表的设计再使用 SQL 语句基本完成了病人管理系统的设计。从而达到省时省力的目的,提高医院的经济效益。2第 2 章 系统需求分析2.1 用户需求1.病人入院的看病流程病人在入院后,首先到挂号处进行挂号,填写自己的基本信息,挂号成功后去相应的科目找到主治医师,主治医师对其进行检查之后,开出药方,或者安排手术,然后填写病例单,填写病人病情信息。接下来,病人去交费处交纳医疗费用,取药或进行手术。最后,如果病人需要住院,医生安排其住院,给病人分配病房病床。当病人出院之后,医生对病人的住院信息进行更改。管理员可以对病人和医生信息进行维护,以及他们的权限进行管理。2.该系统需要管理的信息模块1.病人
7、基本信息:病人的编号,姓名,性别,年龄,身高,体重,血型,联系电话。2.病人病情信息:病人的编号,科目,所患病情,病史,主治医师。3.病人用药信息:病人编号、药品的名称,数量,单价,用药日期。5.病人手术信息:病人编号,主刀医生,手术室编号,手术时间。6.病人住院信息:病人编号,科目,病房号,病床号,入院日期,出院日期。7.病人医疗费用信息:病人编号,费用项目,金额,交纳日期。8.管理员信息:管理员编号,管理员姓名,管理员性别3.该系统的用户1. 用户一:病人,病人通过输入自己的名字和编号,便可以实现对自己的所有信息进行查询查看,但是只能查看与自己的相关信息,并且不能进行修改。32. 用户二:
8、医生,医生通过注册账号登陆之后,可以对病人的挂号信息,病情信息,病人手术信息,用药信息,挂号信息,基本信息,住院信息和医疗费用信息进行查询,增加,比如病人用药的变化,病情的转变,或者出院时医生可以对这些信息进行即时更新。3. 用户三:管理员,管理员通过账号登陆之后可以对病人和医生的权限以及信息进行管理。2.2 数据流图1.系统顶层数据流图图 2.2.1 顶层数据流图2.系统一级数据流图1 . 1挂号A病人基本信息B医生基本信息C病历信息D药品信息病人1 . 2就诊1 . 3开药1 . 4生成报表管理员医生1 . 5手术安排E手术信息1 . 6住院1 . 7出院F病床信息图 2.2.2 一级数据
9、流图42.3 数据字典 名字:录入列表别名:录入信息描述:信息管理员需要交给管理员录入病人的信息定义:录入列表=病人姓名+ 病人年龄+ 病症+主治医师+病房号+编号位置:保存到数据库名字:病人姓名别名:描述:标识信息列表中一个病人的关键域定义:病人姓名=2字符8位置:录入列表录入信息事务信息列表名字:主治医师别名:描述:病人医治主要负责的主治医师定义:主治医师=2字符8位置:录入列表录入信息名字:药品别名:药物描述:病人用于治疗所服用的药物定义:药品 = 2字符20位置:录入列表录入信息5名字:病例别名:病情描述:病人所患的疾病名称定义:病例 = 2字符20位置:录入列表录入信息名字:病床别名
10、:描述:病人在医院住院医治时居住的地方定义:病床 = 2字符20位置:录入列表录入信息名字:医疗费用别名:描述:病人在医院医治疾病所需要花销的金额定义:医疗费用 = 2字符20位置:录入列表录入信息第 3 章 概念模型和物理模型3.1 功能模块图医院病人管理系统病人信息模块手术信息模块药品信息模块医生信息模块管理员信息模块病房信息模块病历信息模块医疗费用信息模块63.2 系统 E-R 图病人医生手术药品病床医疗费用病例管理员管理1 nm编 号姓 名性 别性 别数 量名 称编 号服用nm单 价用 药 日期编 号姓 名年 龄电 话 科 目性 别患有1n编 号姓 名身 高年 龄性 别体 重血 型联
11、系 电话身 份 证号进行1n手 术 室编 号主 刀 医师手 术 名称手 术 时间科 目科 目所 患 疾病病 史主 治 医师编 号居住交纳1 n1M科 目病 房 号病 床 号名 称交 纳 日期入 院 日期 号出 院 日期金 额编 号图 2.2-1 E-R 图73.3 数据库概念模型(CDM)设计图 3.3 概念模型3.4 数据库物理模型(PDM)设计图 3.4 物理模型8第四章 系统数据库对象设计4.1 关系模型的设计表 4.1-1 病人基本信息表属性 字段类型 精度 可否为空 主码/外码 别名病人编号 characters 10 否 主码 Pno病人姓名 Variable characters
12、 20 否 Pname性别 Variable characters 5 否 Psex年龄 Integer 否 Page身高 Float 可以 Pheight体重 Float 可以 Pweight血型 Variable characters 2 可以 Pblood联系电话 Variable characters 20 否 Ptel身份证号 characters 18 否 Pid表 4.1-2 医生信息表属性 字段类型 精度 可否为空 主码/外码 别名医生编号 characters 10 否 主码 Dno姓名 Variable characters 20 否 Dname性别 Variable ch
13、aracters 2 否 Dsex联系电话 Variable characters 20 否 Dtel所属科目 Variable characters 20 否 Dsub9表 4.1-3 药品信息表属性 字段类型 精度 可否为空 主码/外码 别名药品编号 characters 10 否 主码 Mno名称 Variable characters 20 否 Mname单价 Float 否 Mprice药品数量 Integer 否 Mnub用药日期 Date 否 Mdate病人编号 characters 10 否 外码 Pno药品功效 Variable characters 20 否 Pfuc表 4
14、.1-4 病床信息表属性 字段类型 精度 可否为空 主码/外码 别名病房号 characters 10 否 BHono病床号 characters 10 否 主码 Bno入院日期 Date 否 Brudate出院日期 Date 否 Bchudate病人编号 characters 10 否 外码 Pno表 4.1-5 病例信息表属性 字段类型 精度 可否为空 主码/外码 别名科目 Variable characters 20 否 Diesub所患疾病 Variable characters 100 否 Diease病史 Variable characters 200 可以 Diehis医生编号
15、characters 10 否 外码 Dno10病人编号 characters 10 否 外码 Pno病例编号 characters 10 否 主码 Dieno表 4.1-7 手术信息表属性 字段类型 精度 可否为空 主码/外码 别名手术编号 characters 10 否 主码 Sno医生编号 characters 10 否 外码 Dno手术时间 Date2.建立医生姓名索引,可以根据医生姓名快速查询医生信息create index doctorname on doctor(Dno);3.建立药品名称索引,可以根据药品的名称实现对药品信息的快速查询create index medicinen
16、ame on medicine(Mname);4.建立手术室号索引,可以对手术室的使用情况有一个了解create index shoushuno on shoushu(Sno);4.4 插入数据1.插入病人基本信息INSERT INTO patient(Pno,Pname,Psex,Sage,Sheight,Sweight,Sblood,Stel,Sid)values(1,李二 ,男,67,176,68,A,13323232313,14231944949499267894);INSERT INTO patient(Pno,Pname,Psex,Page,Pheight,Pweight,Pblo
17、od,Ptel,Pid)values(2,刘艳 ,女,55,156,55,O,15653232387,13435319449576492344);INSERT INTO patient(Pno,Pname,Psex,Page,Pheight,Pweight,Pblood,Ptel,Pid)16values(3,张三 ,男,67,183,34,B,17897667230,15647345625554231x);2.插入医生信息insert into doctor(Dno,Dname,Dsex,Dtel,Dsub)values(1,xx,男,15823458178,齿科);insert into
18、doctor(Dno,Dname,Dsex,Dtel,Dsub)values(2,吴蓉 ,女,13245629857,妇产科);3.插入病历信息insert into disease(Dieno,Pno,Dno,Diesub,Diease,Diehis)values(1,2,2,妇产科,难产,无);4.插入病床信息insert into bed(Bno,Pno,Bhono,Brudate,Bchudate)values(1,2,1,2014/4/3 12:00,2014/5/6 12:00);5.插入手术信息insert into shoushu(Sno,Sname,Shono,Dno,Pno
19、,Stime)values(1,剖腹产 ,1,2,2,1997-11-12);insert into shoushu(Sno,Sname,Shono,Dno,Pno,Stime)values(2,坏牙切除 ,2,1,3,2014-4-3);6.插入药品信息insert into medicine(Mno,Pno,Mname,Mfuc,Mprice,Mnub,Mdate)values(1,2,止痛药,有效缓解疼痛,3,57,2014/4/15 12:00);7.插入费用项目信息insert into money(Fno,Pno,Fname,Fmoney,Fdate)17values(1,2,医药
20、费,235,2014/4/26 09:08);8.插入管理员信息insert into guanli(Gno,Dno,Pno,Gname,Gsex,Gage)values(1,2,2,赵总,男,47);4.5 视图设计1.建立 P_liao 病人医治信息视图,医生可以更加方便的了解病人情况create view P_liao(Pname, Psex, Bhono, Bno, Brudate, Bchudate, Diease, Diehis,Sname,Shono,Stime)as select Pname, Psex, Bhono, Bno, Brudate, Bchudate, Dieas
21、e, Diehis,Sname,Shono,Stimefrom patient, bed, disease,shoushuwhere patient.Pno = bed.Pno and bed.Pno = disease.Pno and disease.Pno = shoushu.Pno;2.建立 P_jiben 视图,病人可以对自己的一些用药以及缴费信息进行查 看,有一个基本了解。create view P_jiben(Pname, Dname, Dsex, Dtel, Mname, Mprice, Mnub,Fname, Fmoney)as select Pname, Dname, Dse
22、x, Dtel, Mname, Mprice, Mnub,Fname, Fmoneyfrom patient,doctor, medicine, moneys, shoushuwhere patient.Pno = medicine.Pno and medicine.Pno = moneys.Pno and shoushu.Pno = doctor.Pno and shoushu.Dno = doctor.Dno;183.建立 pbdguanli 视图,管理员可以对该医院的医生以及病人名单有一个系 统了解,便于管理。create view pbdguanli(Gno, Pno, Pname,
23、Ptel, Dno, Dname, Dtel)as select Gno, patient.Pno, Pname, Ptel, Dno, Dname, Dtelfrom guanli, patient, doctorwhere guanli.Pno= patient.Pno and guanli.Dno= doctor.Dno;4.6 函数设计1. count()函数用来统计病人和医生的总数select count(Pno) 病人总数 from patient;select count(Dno) 医生总数 from doctor;2. count()函数用来统计某一病房中的病人数select
24、count(Bno) 已住病床数, Bhono from P_liao group by Bhono;3.函数 M_shu 的作用是:根据病人的姓名和药品名字,确定该病人用了多少 该药品。create function M_shu(Pname char(10), Mname varchar(20) returns int as begindeclare number int ;select number = Mnub from P_jibenwhere Pname = Pname and Mname = Mname;return number;end4.7 触发器设计191.用于判断身份证输入
25、是否正确,如果位数不是十八位,会进行提示。create trigger tri_patient on patient after insert asbegindeclare idcard char(18);select idcard = Pid from inserted;If(LEN(idcard) 18)beginraisError(身份证号不是十八位, 16, 1);rollback tran;endend4.8 存储过程设计方便医生查询病人信息create proc show_patient(Pname varchar(10)as beginselect * from P_liao w
26、here Pname= Pnameend第五章 个人总结通过本次课程设计,我们更加深入的了解到了数据库设计的各种方法,了解到了需求分析的主要内容,以及概念结构设计、逻辑结构设计、物理结构设计中需要特别注意的地方,以及概念结构设计、逻辑结构设计、物理结构设计20之间的关系及设计方法,从而更好的理解课本知识,学以致用,在设计过程中叶遇到了各种各样的问题,如 PowerDesign 的第一次使用,还有存储过程以及自定义函数的创建都有点遗忘。在老师和同学们的帮助之下一点点解决掉了。让我对所学知识有了一个更加深刻而又清晰的认识。21参考文献1 王珊,萨师煊.数据库系统概论(第四版)M.北京:高等教育出版社,200622附录1 建表截图图 1.1 病人信息图 1.2 医生信息图 1.3 病例信息23图 1.4 药品信息图 1.5 病床信息图 1.6 交费信息24图 1.7 手术信息图 1.8 管理员信息2 建立索引截图25图 2.1 建立索引3 插入数据截图图 3.1 插入病床信息图 3.2 插入病历信息图 3.3 插入医生信息26图 3.4 插入管理员信息图 3.5 插入药品信息图 3.6 插入费用信息