欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

医院门诊管理系统数据库课程设计报告论文

  • 资源ID:67878283       资源大小:375KB        全文页数:32页
  • 资源格式: DOC        下载积分:28积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要28积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

医院门诊管理系统数据库课程设计报告论文

.信息工程学院数据库课程设计论文题 目:医院门诊管理系统数据库设计学 号:2012013324专业班级:软件工程121班姓 名:X桐指导老师:蔚继承完成日期:2014年06月20日. v.医院门诊管理系统数据库设计X桐(信息工程学院软件工程12级1班)摘 要:随着社会的进步和人类生产生活水平的提高,国内现有的医院不论从规模上还是服务质量上都实现了显著增长。显然,如果医院门诊仍采用人工管理的方式显然无法应对庞大的病患需求。如今,科学与发展已成为时代的主题。在中国软件行业日益进步的今天,我们可以利用这些资源来帮助减轻医生和病人的负担,让病人能够尽快就医。一个高质量的医院门诊管理系统,能提高医院的社会效益与经济效益。本文采用结构化分析和设计方法,运用数据流程图和E-R图等工具对小型医院门诊管理系统数据库进行分析和设计,实现登记挂号、诊断治疗、收费挂号等医院门诊的基本业务。关键字:医院门诊管理;数据库设计;医院. v.目 录1 需求分析11.1数据流程图11.2数据字典41.2.1数据项41.2.2数据结构51.2.3数据流61.2.4.处理逻辑61.2.5.数据存储72数据库结构设计72.1 概念设计72.1.1 分E-R图建立72.1.2 全局/整体E-R图82.2 逻辑设计92.2.1 建立关系模式102.2.2 关系模式规X化处理102.2.3 用户子模式建立112.2.4 关系模式逻辑结构定义113数据库物理设计134数据库实施与测试134.1 SQL Server 2008数据库实施与测试134.1.1 数据库及数据库对象建立134.1.2 数据入库214.1.3 数据库测试234.2 Oracle数据库实施与测试304.2.1 数据库及数据库对象建立304.2.2 数据入库414.2.3 数据库测试435 总结49. v.随着社会不断的进步,医院等基础服务机构,早已成为了人们生活必不可少的一部分,在很大程度上方便了人们的生活。为了在更大程度上满足病患的需求,许多医院的规模进一步扩大,管理也进一步改善。逐步走向医疗服务和管理的成熟化。而方便有效的管理手段已经成为了所有管理部门管理的有力工具。传统的人工管理手段在高速发展的今天,已经不再体现其优势,繁复和大量的手工记录和计算给管理带来了更多的重复工作,如果能将复杂的各类管理过程封装在一个操作中,执行每个管理步骤时使用相对应的功能,那就能给管理者带来更大的便捷。数据库设计的目标就是为用户和各种应用系统提供一个信息基础设施和高效的运行环境。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已经进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对医院门诊信息进行管理,具有比手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大等。这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理的重要条件。针对典型的管理系统,以医院门诊管理为载体,设计医院门诊管理系统。以满足门诊管理者对各类数据的管理,以现代化的思维模式去经营维护。1 需求分析需求分析阶段就是分析用户的需求,是数据库设计的起点。医院门诊管理的主要目标是通过医院门诊的整个服务流程的管理和控制及对库存数据有效的统计和分析,以保证管理的畅通,使决策人员及早发现问题,采取相应措施,调整管理方式。同时,通过数据分析,可以获得当前社会的病患需求,也便于管理人员不断进行管理的优化和提高管理水平。通过查询资料和分析当前的医院门诊部服务状况,明确病患的需求而进行设计。并完成业务流程图和数据流程图。进一步创建数据字典,完成数据结构和数据处理功能模块。1.1数据流程图数据流程图反映的是医院门诊管理工作过程的数据去向和流向。通过数据流程图,抽象现实世界的数据到医院门诊管理的物理模型。再根据这个物理模型要抽象出信息流,将物理模型转化成逻辑模型,反映信息在系统中的流动、处理和存储情况,在整个过程中,所得到的数据流程图可如下图1-1至图1-5所示,分为顶层数据流图、第一层数据流图和第二层数据流图。图1-1 顶层数据流程图图1-2 第一层数据流程图图1-3 第二层数据流程图(挂号收费)图1-4 第二层数据流程图(诊断)图1-5 第二层数据流程图(取药)1.2数据字典数据字典是体统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。数据字典在数据库设计中占有很重要的地位。数据字典通常包括数据项、数据结构、数据流、数据存储、处理逻辑5个部分。数据项是不可再分的数据单位。数据结构反映了数据之间的组合关系。数据流是数据结构在系统内传输的路径。数据存储是数据结构停留或保存的地方也是数据流的来源和去向之一。处理逻辑一般用判定表或判定树来描述。数据字典是需要描述处理过程的说明性信息。本文中包括35个数据项,8个数据结构,11个数据流,6个处理逻辑,8个数据存储。1.2.1数据项数据项编号数据项名数据项含义与其他数据项关系类型长度取值X围DI01-1Pno病人编号主键varchar20DI01-2Pname病人XXvarchar20not nullDI01-3Psex性别varchar20DI01-4Page年龄int0-150DI01-5Dno医生号外键varchar20DI02-1Dno医生号主键varchar20DI02-2Dname医生XXvarchar20not nullDI02-3Dtitle职称varchar20DI02-4Dtelvarchar20DI02-5Dp_no科室编号外键varchar20DI03-1Dp_no科室编号主键varchar20DI03-2Dp_name科室名称varchar20not nullDI03-3Dp_tell联系方式varchar20DI04-1Mno药品编号主键varchar20DI04-2Mname药品名称varchar20not nullDI04-3Mprice药品价格floatDI04-4Mquantity药品库存余量intDI05-1Rno挂号单号主键varchar20DI05-2Rdate挂号日期dateDI05-3Bno收费单号外键varchar20DI05-4Pno病人编号外键varchar20DI05-5Dno医生编号外键varchar20DI05-6Rway挂号方式varchar20DI06-1Bno收费单号主键varchar20DI06-2Bdate日期dateDI06-3Bmoney金额floatDI06-4Bway收费方式varchar20DI07-1Pr_no处方号主键varchar20DI07-2Pr_date日期dateDI07-3Mno药品编号外键varchar20DI07-4Bno收费单号外键varchar20DI08-1Dno医生号主键、外键varchar20DI08-2Pno病人编号主键、外键varchar20DI08-3Iname病名varchar20DI08-4Pr_no处方号外键varchar201.2.2数据结构数据结构编号数据结构名数据结构含义组成DS-1Doctor医生Dno,Dname,Dtitle,Ddept,DtelDS-2Patient病人Pno,Pname,Psex,Page,DnoDS-3Medicine药品Mno,Mname,Mprice,MquantityDS-4Department科室Dp_no,Dp_name,Dp_telDS-5Register挂号单Rno,Rway,Rdate,Pno,BnoDS-6Bill收费单Bno,Bdate,Bmoney,BwayDS-7Prescription处方Pr_no,Pr_date,Mno,BnoDS-8Diagnose诊断结果Dno,Pno,Iname,Pr_no1.2.3数据流数据流编号数据流名称简述数据流来源数据流去向数据流组成数据流量高峰流量F1挂号请求病人来到医院对所需的治疗或者看病项目的挂号病人挂号处理病人信息、分配医师每日1000人每日5000人F2挂号单处理病人的挂号,由病人信息生成挂号单挂号处理病人病人、医生、挂号单编号每日1000次每日5000次F3缴费对于各项医疗必须费用进行缴费病人收费处理收费信息每日1000次每日5000次F4收费凭证病人缴费后获取收费凭证以备后续使用收费处理病人收费信息、详细记录每日1000次每日5000次F5看病病人到相关科室进行初诊病人初诊处理病人信息、初诊信息每日1000人每日5000人F6处方、病例医师对病人开处方、填写病例确诊处理病人病人、处方信息、病例信息每日1000次每日5000次F7取药病人到药房领取相关药品病人取药处理病人、药品信息每日1000次每日5000次F8药物药房工作人员依照处方把相关药品交给病人取药处理病人病人、药品每日1000次每日5000次F9挂号项目挂号系统针对病人的挂号项目为其分配医师挂号处理分配医师处理病人信息、分配医师、科室每日1000次每日5000次F10医师信息系统调用相关医师信息返回分配医师处理挂号处理医生每日1000次每日5000次F11诊断信息将诊断信息整理汇总,最后确诊诊断处理确诊病人、治疗记录每日1000次每日5000次1.2.4.处理逻辑处理逻辑处理逻辑名称简述输入的数据流处理输出的数据流处理频率P1.1挂号对病人挂号请求的处理病人信息分配医师挂号单每人1次P1.2收费收费内容和标准收费内容收取费用收费记录每人1次P1.3分配医师根据挂号记录分配医师医生记录分配医师医生信息每人1次P2.1诊断医生对病情进行诊断诊断请求初步诊断初诊信息每人1次P2.2确诊完成诊断,确诊诊断信息确诊诊断结果每人1次P3.1取药取药处方取药药物信息每人1次1.2.5.数据存储数据存储编号数据存储名称简述数据存储组成相关的处理S1挂号记录用于记录病人的挂号信息病人信息、医生P1.1,P2.1,P3.1S2收费记录用于记录收费信息收费信息P1.2,P2.2,P3.2,P3.3S3值班医生记录记录医生的值班安排医生值班安排P3.1S4诊断记录记录病人的诊断过程诊断过程P2.3,P3.1S5药物记录用于记录药物价格剩余量等药物信息P3.2S6收费款项用于记录收费情况收费信息P1.2S7收费标准用于统一收费的标准收费款项标准P1.2S8处方用于记录医生对病人开出的处方处方P3.22数据库结构设计数据库的结构设计主要包括概念设计和逻辑设计两个部分。2.1 概念设计概念设计阶段的任务是将需求分析得到的用户需求抽象为信息结构(概念模型)的过程。要能充分的反应事物与事物之间的联系,是对现实世界的一个真实模型。在需求分析阶段得到的应用需求首先抽象为信息世界的结构才能更好的用某一DBMS实现这些需求。E-R模型是概念模型的有力工具。逐一设计分E-R图,再将所有的分E-R图综合成系统的总E-R图。2.1.1 分E-R图建立图2-2 分ER图分E-R图的建立依据于数据流图的建立。以下可从第二层数据流图分别建立分E-R图。详见图2-1至2-3。图2-1 分ER图2.诊断分ER图图2-3 分ER图2.1.2 全局/整体E-R图根据上述列出的分E-R图,消除其中存在的冲突、冗余,建立全局E-R图(详见图2-4),并列出所有实体和联系属性的属性E-R图(详见图2-5)图2-4 总ER图图2-5 属性ER图2.2 逻辑设计逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。根据DBMS产品以及不同系统的限制,设计逻辑结构时一般有以下三个步骤:首先将概念结构转换为一般的关系、网状、层次模型;将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换;最后对数据模型进行优化。医院门诊管理系统的设计采用关系模型。E-R图转化为关系模型实际上就是要将实体型、实体的属性和实体型之间的联系转换为关系模式。一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体型间的联系有以下不同的情况:(1)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。(2)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系没模式,则与联系向连的各实体的码以及联系本身的属性均转换为关系的属性。(3)一个m:n联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系的码的一部分。2.2.1 建立关系模式医院门诊管理系统涉及到的关系主要有:病人和医生为n:1(多对一)的关系,将其之间的联系与n端实体合并。病人和挂号单的关系为1:1(一对一),将其之间的联系与任意一端实体合并。科室和医生为1:n(一对多)的关系,将其之间的联系与n端实体合并。医生和诊断结果的关系为1:n(一对多)的关系,也将其之间的联系与n端实体合并。诊断结果和处方单的关系为1:1(一对一),将其之间的联系与任意一端实体合并。处方单、收费单和药品之间的联系为三元的关系,将它们之间的联系转换为独立的关系模式。具体的转换如下所示(主键加下划线,外键斜体加粗):病人(病人编号,病人XX,性别,年龄,医生号)医生(医生号,医生XX,职称,科室号)药品(药品编号,药品名称,单价,数量)处方(处方号,日期,药品编号,收费单号)收费单(收费单号,日期,金额,收费方式)诊断结果(医生号,病人编号,病名,处方号)挂号单(挂号单号,挂号方式,日期,病人编号,收费单号)科室(科室号,科室名称,联系方式)2.2.2 关系模式规X化处理关系数据库中的关系必须满足一定的规X化要求,对于不同的规X化程度可用X式来衡量。X式是符合某一种级别的关系模式的集合,是衡量关系模式规X化程度的标准,达到的关系才是规X化的。一个低一级X式的关系模式,通过模式分解可以转换为若干个高一级X式的关系模式的集合。在本系统中,所有建立的关系模式都符合三X式。2.2.3 用户子模式建立根据需求分析,研究建立满足不同需求的用户子模式,各个子模式的建立在更大程度上方便数据操作。用户子模式的定义如下:收费细则视图(病人号,收费单号,日期,金额,收费方式)病人-药品视图(病人号,药品编号)诊断结果视图(病人号,病人XX,病名)医生病人视图(医生号,医生XX,病人XX)科室医生视图(医生号,医生XX,科室名称)病人挂号视图(病人号,病人XX,挂号单号,挂号日期,挂号方式)2.2.4 关系模式逻辑结构定义表2-6病人关系模式属性名含义数据类型长度是否为主属性是否为外键约束条件Pno病人编号varchar20是Pname病人XXvarchar20not nullPsex性别varchar20Page年龄int0-150Dno医生号varchar20是表2-7医生关系模式属性名含义数据类型长度是否为主属性是否为外键约束条件Dno医生号varchar20是Dname医生XXvarchar20not nullDtitle职称varchar20Ddept科室号varchar20是Dtelvarchar20表2-8药品关系模式属性名含义数据类型长度是否为主属性是否为外键约束条件Mno药品编号varchar20是Mname药品名称varchar20not nullMprice单价floatMquantity数量int表2-9处方单关系模式属性名含义数据类型长度是否为主属性是否为外键约束条件Pr_no处方号varchar20是Pr_date日期dateMno药品编号varchar20是Bno收费单号varchar20是表2-10收费单关系模式属性名含义数据类型长度是否为主属性是否为外键约束条件Bno收费单号varchar20是Bdate日期dateBmoney金额float20Bway收费方式varchar20表2-11诊断结果关系模式属性名含义数据类型长度是否为主属性是否为外键约束条件Dno医生号varchar20是是Pname病人XXvarchar20是是Iname病名Pr_no处方号varchar20是表2-12挂号单关系模式属性名含义数据类型长度是否为主属性是否为外键约束条件Rno挂号单号varchar20是Rway挂号方式varchar20Rdate日期datePname病人XXvarchar20是Bno收费单号varchar20是表2-13科室关系模式属性名含义数据类型长度是否为主属性是否为外键约束条件Dp_no科室号varchar20是Dp_name科室名称varchar20not nullDp_tel联系方式varchar203数据库物理设计主要包括数据库在物理设备上的存储结构与存取方法就是数据库的物理结构,它依赖于选定的数据库管理系统。为一个给定的逻辑数据模型选取一个最合适的应用环境的物理结构的过程,就是数据库的物理设计。这一阶段主要的任务是确定数据库的物理结构,并不断的进行优化处理,主要建立索引、触发器、存储过程。索引名称索引类型用途idx_bno唯一、非聚集按bno属性列升序排列unique_pname唯一、非聚集实现唯一性约束unique_mname唯一、非聚集实现唯一性约束4数据库实施与测试主要包括数据库实施和测试两个部分。(下面分别写出SQL Server 2008和Oracle的实施测试过程)4.1 SQL Server 2008数据库实施与测试4.1.1 数据库及数据库对象建立本系统建立名为Hospital的数据库。数据库对象分为基本表、视图、索引、触发器、存储过程等。下面分别列出相关代码。1.基本表create table Department (Dp_no varchar(20) primary key, Dp_name varchar(20) not null, Dp_tel varchar(20) ) create table Doctor (Dno varchar(20) primary key, Dname varchar(20) not null, Dtitle varchar(20), Dp_no varchar(20) references Department(Dp_no), Dtel varchar(20) )create table Patient(Pno varchar(20) primary key, Pname varchar(20), Psex varchar(20), Page int check(Page>=0 and Page<=150), Dno varchar(20) references Doctor(Dno) create table Medicine (Mno varchar(20) primary key, Mname varchar(20) not null, Mprice float, Mquantity int ) create table Bill (Bno varchar(20) primary key, Bdate date, Bmoney float, Bway varchar(20) ) create table Prescription (Pr_no varchar(20) primary key, Pr_date date, Mno varchar(20) references Medicine(Mno), Bno varchar(20) references Bill(Bno) ) create table Diagnose (Dno varchar(20) references Doctor(Dno), Pno varchar(20) references Patient(Pno), Iname varchar(20), Pr_no varchar(20) references Prescription(Pr_no), primary key(Dno,Pno) ) create table Register (Rno varchar(20) primary key, Rway varchar(20), Rdate date, Pno varchar(20) references Patient(Pno), Bno varchar(20) references Bill(Bno) )2.视图(1)收费细则视图(BillDetail)create view BillDetailasselect distinct Diagnose.pno,Bill.Bno,Bdate,Bmoney,Bwayfrom Prescription,Bill,Diagnose,Registerwhere Register.pno=Diagnose.pno and (Diagnose.Pr_no=Prescription.Pr_no and Prescription.bno=Bill.bno or Register.bno=Bill.bno)(2)病人-药品视图(Patient_Med)create view Patient_Medasselect Pno,Mnamefrom Medicine,Prescription,Diagnosewhere Medicine.Mno=Prescription.mno and Diagnose.Pr_no=Prescription.Pr_no(3)诊断结果视图(Patient_Diag)create view Patient_Diagasselect Patient.pno,pname,inamefrom Patient,Diagnosewhere Diagnose.Pno=Patient.pno(4)医生病人视图(Docter_Patient)create view Docter_Patientasselect Doctor.dno,dname,pnamefrom Patient,Doctorwhere Patient.dno=Doctor.dno(5)科室医生视图(Dept_Doctor)create view Dept_Doctorasselect dno,dname,Dp_namefrom Doctor,Departmentwhere Department.Dp_no=Doctor.Dp_no(6)病人挂号视图(Patient_Register)create view Patient_Registerasselect Patient.pno,pname,rno,rway,rdatefrom Patient,Registerwhere Register.pno=Patient.pno3.索引create unique index unique_mname on Medicine(Mname)create unique index unique_pname on Patient(pname)create index idx_bno on Bill(bno asc)4.存储过程(1)当有患者通过不同的方式挂号时,要在Register新增一条挂号信息,同时在Patient表添加一个病人记录,在Bill表中添加一条挂号收费记录create proc addpatientRno varchar(20),Rway varchar(20),Pno varchar(20),Bno varchar(20),Pname varchar(20),Psex varchar(20),Page int,Dno varchar(20),Bmoney floatasinsert into Patientvalues(Pno,Pname,Psex,Page,Dno)insert into Billvalues(Bno,GETDATE(),Bmoney,'挂号收费')insert into Registervalues(Rno,Rway,GETDATE(),Pno,Bno)(2)一个患者确诊完毕,向Diagnose新增一条诊断结果记录,同时在Prescription表添加一条处方记录,并更新Bill表中相应收费信息create proc addDiagnoseDno varchar(20),Pno varchar(20),Iname varchar(20),Pr_no varchar(20),Mno varchar(20),Bno varchar(20),Bmoney floatasinsert into Billvalues(Bno,GETDATE(),Bmoney,'药品收费')insert into Prescriptionvalues(Pr_no,GETDATE(),Mno,Bno)insert into Diagnosevalues(Dno,Pno,Iname,Pr_no)(4)插入一条药品信息create proc MedicineInsertmno varchar(20),mname varchar(20),mprice float,mquantity intasinsert into Medicinevalues(Mno,Mname,Mprice,Mquantity)(4)修改某一科室的create proc change_teldp_no varchar(20),Dp_tel varchar(20)asupdate Departmentset dp_tel=Dp_telwhere Dp_no=dp_no(5)修改某一药品剩余量create proc change_medmno varchar(20),mquantity intasupdate Medicineset mquantity=mquantitywhere mno=mno(6)在Dept_Doctor查询医院门诊部各个科室的医生人数create proc Dept_Docasselect Dp_name,COUNT(dno) as rsfrom Dept_Doctorgroup by Dp_name(7)在Docter_Patient查询某一病人的主治医生信息create proc p_doctorpname varchar(20)asselect *from Doctorwhere Dno =(select Dno from Docter_Patient where pname=pname)(8)在Docter_Patient查询某一医生主治的全部病人信息create proc D_Patientdno varchar(20)asselect pno,pname,psex,pagefrom Patientwhere pname in(select pname from Docter_Patient where dno=dno)(9)在Patient_Diag查询患感冒的病人XXcreate proc Diag_passelect pnamefrom Patient_Diagwhere iname='感冒'(10)在Patient_Diag查询某一病人的诊断结果create proc p_Diagpno varchar(20)asselect inamefrom Patient_Diagwhere pno=pno(11)在Patient_Med查询某病人购买的药品create proc p_Medpno varchar(20)asselect mnamefrom Patient_Medwhere pno=pno(12)在BillDetail查询某病人购买的药品总价create proc medpaypno varchar(20)asselect Bway,bmoneyfrom BillDetailwhere pno=pno and Bway='药品收费'(13)在BillDetail查询某一病人的收费总和(=挂号+取药)create proc paypno varchar(20)asselect sum(bmoney) as totalfrom BillDetailwhere pno=pno group by pno(14)在Patient_Register查询某病人的挂号方式create proc reg_waypno varchar(20)asselect rway from Patient_Registerwhere pno=pno 5.触发器当向处方表(Prescription)中添加元组时,同步对表Medicine的级联更新。(药品数量-1)create trigger t1 on Prescriptionafter insert,updateas declare pr_no varchar(20),mno varchar(20)declare c2 cursor for select pr_no,mno from inserted open c2 fetch next from c2 into pr_no,mnowhile(fetch_status=0)beginupdate Medicineset mquantity=mquantity-1where mno=mnofetch next from c2 into pr_no,mnoendclose c2deallocate c24.1.2 数据入库Patient表Register表Department表Doctor表Medicine表Prescription表Diagnose表Bill表4.1.3 数据库测试1.视图病人-药品视图(Patient_Med)收费细则视图(BillDetail)诊断结果视图(Patient_Diag)医生病人视图(Docter_Patient)科室医生视图(Dept_Doctor)病人挂号视图(Patient_Register)2.验证存储过程(1)当有患者通过不同的方式挂号时,要在Register新增一条挂号信息,同时在Patient表添加一个病人记录,在Bill表中添加一条挂号收费记录(2)一个患者确诊完毕,向Diagnose新增一条诊断结果记录,同时在Prescription表添加一条处方记录,并更新Bill表中相应收费信息(3)插入一条药品信息(4)修改某一科室的(5)修改某一药品剩余量(6)在Dept_Doctor查询医院门诊部各个科室的医生人数(7)在Docter_Patient查询某一病人的主治医生信息(8)在Docter_Patient查询某一医生主治的全部病人信息(9)在Patient_Diag查询患感冒的病人XX(10)在Patient_Diag查询某一病人的诊断结果(11)在Patient_Med查询某病人购买的药品(12)在BillDetail查询某病人购买的药品总价(13)在BillDetail查询某一病人的收费总和(=挂号+取药)(14)在Patient_Register查询某病人的挂号方式3.验证触发器(见存储过程2的验证)4.2 Oracle数据库实施与测试4.2.1 数据库及数据库对象建立本系统建立名为Hospital的数据库。数据库对象分为基本表、视图、存储过程等。下面分别列出相关代码。1.基本表create table Department (Dp_no varchar(20) primary key, Dp_name varchar(20) not null, Dp_tel varchar(20) ) create table Doctor (Dno varchar(20) primary key, Dname varchar(20) not null, Dtitle varchar(20), Dp_no varchar(20) references Department(Dp_no), Dtel varchar(20) )create table Patient(Pno varchar(20) primary key, Pname varchar(20), Psex varchar(20), Page int check(Page>=0 and Page<=150), Dno varchar(20) references Doctor(Dno) create table Medicine (Mno varchar(20) primary key, Mname varchar(20) not null, Mprice float, Mquantity int ) create table Bill (Bno varchar(20) primary key, Bdate date, Bmoney float, Bway varchar(20) ) create table Prescription (Pr_no varchar(20) primary key, Pr_date date, Mno varchar(20) references Medicine(Mno), Bno varchar(20) references Bill(Bno) ) create table Diagnose (Dno varchar(20) references Doctor(Dno), Pno varchar(20) references Patient(Pno), Iname varchar(20), Pr_no varchar(20) references Prescription(Pr_no), primary key(Dno,Pno) ) create table Register (Rno varchar(20) primary key, Rway varchar(20), Rdate date, Pno varchar(20) references Patient(Pno), Bno varchar(20) references Bill(Bno) )2.视图(1)收费细则视图(BillDetail)create view BillDetailasselect distinct Diagnose.pno,Bill.Bno,Bdate,Bmoney,Bwayfrom Prescription,Bill,Diagnose,Registerwhere Register.pno=Diagnose.pno and (Diagnose.Pr_no=Prescription.Pr_no and Prescription.bno=Bill.bno or Register.bno=Bill.bno)(2)病人-药品视图(Patient_Med)create view Patient_Medasselect Pno,Mnamefrom Medicine,Prescription,Diagnosewhere Medicine.Mno=Prescription.mno and Diagnose.Pr_no=Prescription.Pr_no(3)诊断结果视图(Patient_Diag)create view Patient_Diagasselect Patient.pno,pname,inamefrom Patient,Diagnosewhere Diagnose.Pno=Patient.pno(4)医生病人视图(Docter_Patient)create view Docter_Patientasselect Doctor.dno,dname,pnamefrom Patient,Doctorwhere Patient.dno=Doctor.dno(5)科室医生视图(Dept_Doctor)create view Dept_Doctorasselect dno,dname,Dp_namefrom Doctor,Departmentwhere Department.Dp_no=Doctor.Dp_no(6)病人挂号视图(Patient_Register)create view Patient_Registerasselect Patient.pno,pname,rno,rway,rdatefrom Patient,Registerwhere Register.pno=Patient.pno3.存储过程(1)当有患者通过不同的方式挂号时,要在Register新增一条挂号信息,同时在Patient表添加一个病人记录,在Bill表中添加一条挂号收费记录create or replace procedure addpatient(v_Rno varchar,v_Rway varchar,v_Pno varchar,v_Bno varchar,v_Pname varchar,v_Psex varchar,v_Page int,v_Dno varchar,v_Bmoney float)isbegin insert into Patient values(v_Pno,v_Pname,v_Psex,v_Page,v_Dno); insert into Bill values(v_Bno,sysdate(),v_Bmoney,'挂号收费'); insert into Register values(v_Rno,v_Rway,sysdate(),v_Pno,v_Bno);end addpatient;beginaddpatient('R021','预约','P021','B042','X三','男',18,'D014',21);end;(2)插入一条药品信息create or replace procedure MedicineInsert(mno varchar,mname varchar,mprice float,mquantity int)isbegin insert into Medicine values(Mno,Mname,Mprice,Mquantity);end MedicineInsert;beginMedicineInsert('M043','克拉霉素胶囊(桑美)',9.8,200);end;(3)修改某一科室的create or replace procedure change_tel(v_dp_no varchar,v_Dp_tel varchar) isbegin update Department set dp_tel=v_Dp_tel where Dp_no=v_dp_no; mit;end change_tel;begin change_tel('Dp011','87051621');end;(4)修改某一药品剩余量create or replace procedure change_med(v_mno varchar, v_mquantity int) isbegin update Medicine set mquantity=v_mquantity where mno=v_mno; mit;end change_med;beginchange_med('M024',150);end;(5)在Dept_Doctor查询医院门诊部各个科室的医生人数create or replace procedure Dept_Doc(Dp_name out varchar,rs out number) iscursor c1 is select Dp_name,COUNT(dno) as rs from Dept_Doctor group by Dp_name;begin open c1; loop fetch c1 into Dp_name,rs; exit when c1%notfound; dbms_output.put_line(Dp_name|' '|rs); end loop; close c1; end Dept_Doc;declarea varchar(20);b number;beginDept_Doc(a,b);end;(6)在Docter_Patient查询某一病人的主治医生信息create or replace procedure p_doctor(v_pname varchar,v_dno out varchar,v_dname out varchar,v_dtitle out

注意事项

本文(医院门诊管理系统数据库课程设计报告论文)为本站会员(ph****6)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!