1、数据库系统原理课程设计报告琼州学院电子信息工程学院数据库系统原理课程设计报告项目名称:医院门诊收费系统设计专业:网络工程年级:2009级姓名:林振达学号:09240063指导老师:陈作聪2011年9月摘要随着科学的不断进步,计算机应用已经遍布整个社会的每个角落。目前社会正处于健保发展方兴未艾的时代,各医疗院所莫不兢兢业业地改善本身的体制或管理方式,所以应越来越严格的规范;在此背景下,本文论述了医院管理系统(重点论述门诊收费子系统)的设计实现。通过对各种数据库管理系统的模型分析,结合医院门诊的实际需求,采用C/S(客户端/服务器)模式,说明了
2、医院管理系统的开发过程及各种技术细节。本系统是适应时代发展的需要,提高管理的效率而开发设计的。医院管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。因此本人结合医院门诊收费系统的要求,对MSSQLServer2000数据库管理系统、SQL语言原理将对数据库应用系统开发医院门诊收费系统进行了简明的介绍,并分析了开发医院管理系统所应进行的工作;对数据库的设计和SQL语言的使用进行了系统分析,为深入理解数据库应用打下了基础;学习了具体
3、的开发工具Delphi7.0,对其数据库组件,SQL语言在Delphi中的应用等数据库编程关键技术进行了系统的介绍;除此还分析了医院管理系统的应用需求,按照数据库设计理论一步一步地给出了系统需求说明书、局部ER图、全局ER图、系统关系模式,子模式,利用MSSQServer2000建立了数据库;进行了具体的程序设计,具体划分了三类用户的操作权限,设计了了三个操作界面。实现了数据库表的浏览,记录的添加、删除和修改,报表的生成,实现了多数据库表的连接操作,实现了多条件查询和模糊查询,并灵活实现了对不可更新查询结果集的更新操作,实现了主从表操作,实现了密码维护功能,医院信息系统(HIS)是一套通
4、用性很强的商业软件。本人负责的门诊划价子系统是针对一般医院的业务处理而开发的,主要用于门诊部的划价和信息生成。关键字:HIS,软件工程,模块化数据库,SQL语言,数据库组件目录1引言12.需求分析阶段22.1引言22.2需求分析阶段的目标与任务22.2.1处理对象22.2.2处理功能及要求32.2.3.安全性和完整性要求32.3需求分析阶段成果33概念设计阶段93.1引言93.2任务与目标103.3阶段结果104逻辑设计阶段124.1逻辑设计的任务和目标124.2数据组织124.2.1将E-R图转换为关系模型124.2.2模型优化134.2.3数据库模式定义134.2.4用
5、户子模式定义154.3数据处理165物理设计阶段175.1物理设计阶段的目标与任务175.2数据存储方面175.3系统功能模块175.3.1读者基本信息的查询和更新模块175.3.2图书基本信息的查询和更新模块186数据库实施阶段196.1建立数据库、数据表、视图、索引196.1.1建立数据库196.1.2建立数据表196.1.3建立视图216.1.4建立索引216.1.5建立触发器226.2数据入库226.3创建各个功能的存储过程227系统调试和测试238设计心得239存在的问题及建议23致谢25参考文献25附录1数据查看和存储过程功能的验证29附录2所有的SQL运行语句3
6、4附录3系统的运行界面37I数据库系统原理课程设计报告1引言随着科学技术的高速发展,计算机软件的需求量大幅度提升,各种专业的特殊管理、应用软件已被提上了议案,当然,与此同时,计算机软件开发越来越专业化,对设计人员的综合素质和专业知识的要求越来越高,任务也是越来越重。信息产业作为当今社会做前端的技术性行业,其科技含量是最高的;作为一个计算机专业的大学生,特别是面对我们国家现在紧缺高水平、高素质的软件人员,我们也清醒的认识到掌握好专业知识的重要性,更清楚了自己肩上的责任。本次设计的主题是:基于C/S结构的医院门诊收费系统。本系统提供给医院门诊收费用户一个综合、全面的办公环境和工具,同时实现了大量
7、数据信息和文档以及多媒体信息快速、有效、准确地获取、管理和传递。因此本系统是提高工作效率、规范医院门诊办公制度、方便领导决策的重要工具。本软件主要完成门诊划价收费功能,按照软件工程的思想来完成这一设计过程,历经三个多月,在指导教师认真耐心的指导下,系统已经初步完成。由于是初次完成比较正规的且有规模的软件设计,所以难免出现一些错误和漏洞,恳请各位老师和同学批评指正。在本次设计期间,指导教师、师长们给了我们很大的鼓励和支持,在我们有困难的时候给予了我们无私的关心和帮助,在这里表示深深的感谢!同时,也向评阅论文和参加论文答辩的老师们表示衷心的感谢!2.需求分析阶段2.1引言一所医院的主要构成分为
8、两个部分,一是门诊部门,二是住院部门,医院的所有日常工作都是围绕着这两大部门进行的。门诊部门和住院部门各下设若干科室,如门诊部门下设口腔科、内科、外科、皮肤科等,住院部门下设内科、外科、骨科等,二者下设的部分科室是交叉的,各科室都有相应的医生、护士,完成所承担的医疗工作,医生又有主治医师、副主任医师、普通医师或教授、副教授、其他之分。为了支持这两大部门的工作,医院还设置了药库、中心药房、门诊药房、制剂室、设备科、财务科、后勤仓库、门诊收费处、门诊挂号处、问讯处、住院处、检验科室、检查科室、血库、病案室、手术室,以及为医院的日常管理而设置的行政部门等。其中,药库负责药品的贮存、发放和采购;中心药
11、别,年龄,是否有婚姻管理员信息:用户名,密码2.2.2处理功能及要求系统提供待开门诊处方以及各种检查检验申请单实时划价、输入、查询、修改功能。另外还提供候诊病人就医分配;按科室、人员等条件统计单据;检索病人就诊历史等可选功能。它将病人历次门诊的所有临床医疗信息通过计算机管理,并为后继系统提供划价信息,是全面实现门诊信息化管理的必备前端系统之一。门诊系统联系物流、财务、医疗的主要信息是病人信息与处方信息。考虑到目前医院情况,门诊系统主要完成处方信息的电子化,以及和医院药房、财务系统联网。由于医生工作站的推广困难,处方信息的录入,通过划价子系统进行。2.2.3.安全性和完整性要求1)安全性要求
13、内容见第二部分,由手工完成的工作主要有对原始数据的录入;不能由计算机生成的,各种数据的更新,包括数据变化后的修改,数据的增加,失效数据或无用数据的删除等;以及系统的日常维护。2.3.3医院的基本业务流程图病人病区医嘱住院药房检查检验手术过程信息管理信息押金信息病人基本信息病人费用基本信息诊断押金日结信息基本医疗收入基本类在院收入收费日结信息病历首页费用病人费用收据院科费用核算医疗保险费用药品收入构成设备帐入会计凭证月末在院结算凭证制作凭证制作收取押金入院登记医嘱输入与划价2.3.4图书管理系统数据字典(a)数据项:表1.1数据项列表数据项编号数据项名数据项含义与其它数据项的关
15、数据结构列表数据结构编号数据结构名数据结构含义属性DS-1NUM流水号NotnullDS-2医疗号NotnullDS-3NAME姓名NullDS-4ITEM科室NullDS-5医疗类别NullDS-6DATA日期NullDS-7PRICE挂号费NullDS-8病历Null2.3.5处理逻辑描述表1.3处理逻辑列表处理编号处理功能处理过程PR-1医院门诊部门收费时的系统医生、病人管理模块、收费、药品管理模块3概念设计阶段3.1引言本次设计开发的医院门诊收费信息系统是一套完整的医院信息系统的一部分,整个系统应既可以面向大中型医院又可针对中小型医院的专用应用系统。它几乎覆盖了医院主要
16、管理职能和患者在医院就诊的各主要环节。我们的HIS专用应用系统不简单地是一套计算机管理应用软件,最重要的是它符合中国实际情况,参照了现行医改政策,结合国内与国际先进的医院管理经验,将医院的管理思想、医院各部门的业务经验以及当今计算机科学技术的完美统一起来的体现。3.2任务与目标(1)选择中层数据流为切入点,通常选择实际系统中的子系统;(2)设计分E-R图,即各子模块的E-R图;(3)生成初步E-R图,通过合并方法,做到各子系统实体、属性、联系统一;(4)生成全局E-R图,通过消除冲突等方面。3.3阶段结果(1)根据不同的对象,从第3层数据流程图入手,分别画出各分ER图:病人挂号病人
17、出院病人按处方配药病人看病病人交费取药病人住院病人交预交款挂号模块医生诊断病情模块门诊挂号操作1:挂号2:输入挂号信息3:挂号流水号4:看病毒5:药方6:药方交费划价收费取药模块7:输入药方信息8:药品明细单,收费发票9:取药4逻辑设计阶段4.1逻辑设计的任务和目标以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。具体内容包括数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)
18、两大任务。4.2数据组织4.2.1将E-R图转换为关系模型实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况:一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。三个或三个以上实体间的一个多元联系
19、可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合具有相同码的关系模式可合并。4.2.2模型优化关系模式Doctor,BaseType,Items,Medicine,Patient不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF.4.2.3数据库模式定义表2.1BaseType表列名数据类型可否为空说明IDCharnotnull编号TypeIdCharnotnullTypeNameCharnotnull科室名表2.2doctor表列名数据类型可否为空说明IDCharnotnull编号N
20、ameCharnotnull姓名SexCharnotnull性别AgeCharnotnull年龄DeptIdCharnotnullTitleChar表2.3Medicine表列名数据类型可否为空说明MedIDCharnotnull药品编号MedNameCharnotnull药品姓名TypeidCharsalepriceCharnotnull卖价unitidCharnotnullbuypriceChar买价totleChar总计表2.4patient表列名数据类型可否为空说明IDCharnotnull编号NAMECharnotnull病人名字IDnumCharsexCh
21、ar性别ageCharnotnull年龄marry婚姻表2.5item表列名数据类型可否为空说明ItemIDCharnotnullITemNameCharnotnullTotalCharnotnullUnitidCharnotnullBuypriceCharnotnullsaleprice表2.6User表列名数据类型可否为空说明UsernameCharnotnullPWDCharnotnullUser_TypeCharnotnull4.2.4用户子模式定义表2.1BaseType表试图列名数据类型可否为空说明IDCharnotnull编号TypeIdCharnot
22、nullTypeNameCharnotnull科室名表2.2doctor表试图列名数据类型可否为空说明IDCharnotnull编号NameCharnotnull姓名SexCharnotnull性别AgeCharnotnull年龄DeptIdCharnotnullTitleChar表2.3Medicine表试图列名数据类型可否为空说明MedIDCharnotnull药品编号MedNameCharnotnull药品姓名TypeidCharsalepriceCharnotnull卖价unitidCharnotnullbuypriceChar买价totleChar总计表2
23、.4patient表试图列名数据类型可否为空说明IDCharnotnull编号NAMECharnotnull病人名字IDnumCharsexChar性别ageCharnotnull年龄marry婚姻表2.5item表试图列名数据类型可否为空说明ItemIDCharnotnullITemNameCharnotnullTotalCharnotnullUnitidCharnotnullBuypriceCharnotnullsaleprice表2.6User表试图列名数据类型可否为空说明UsernameCharnotnullPWDCharnotnullUser_TypeCha
25、EATETABLEBaseType(IdintPRIMARYKEYIDENTITY,TypeIdtinyint,TypeNamevarchar(30))GO(2)Doctor表的建立:USEHospitalGOCREATETABLEDoctor(IdintIDENTITYPRIMARYKEY,Namevarchar(50)NOTNULL,Sexvarchar(2)NOTNULL,Ageint,DeptIdint,Titlevarchar(50);GO(3)Items表的建立:USEHospitalGOCREATETABLE
26、Items(ItemIdintIDENTITYPRIMARYKEY,ItemNamevarchar(50)NOTNULL,Totalint,UnitIdint,BuyPricefloat,SalePricefloat)GO(4)Medicine表的建立:USEHospitalGOCREATETABLEMedicine(MedIdintIDENTITYPRIMARYKEY,MedNamevarchar(50),TypeIdint,UnitIdint,BuyPricefloat,-进货价格,计算利润用SalePricefl
27、oat,-售出价格Totalfloat,Flagtinyint-中西药标记,0-中药;1-西药)(5)Registration表的建立:USEHospitalGOCREATETABLERegistration(RegIdintPRIMARYKEY,PatIdint,-患者DocIdint,-医生名称RegDatevarchar(20),-日期UserNamevarchar(20)-用户名)GO(6)Users表的建立:USEHospitalGOCREATETABLEUsers(UserNamevarchar(40)PRIMARYK
28、EY,Pwdvarchar(40)NOTNULL,User_TypetinyintNOTNULL)GOINSERTINTOUsersValues(Admin,888888,1)GO6.1.3建立视图(1)用于查询PayList视图定义如下:USEHospitalGOCREATEVIEWPayList_vASSELECTp.PayId,p.RegId,r.DocId,r.RegDate,m.MedName,b.TypeName,p.Price,m.Total,p.PNum,p.Price*p.PNumASPSum,m.BuyPrice,
29、(p.Price-m.BuyPrice)*p.PNumASPEarnFROMPayItemsp,Medicinem,BaseTypeb,RegistrationrWHEREp.ItemId=m.MedIdANDm.UnitId=b.IdANDp.RegId=r.RegIdANDp.PType=1UNIONSELECTp.PayId,p.RegId,r.DocId,r.RegDate,i.ItemName,b.TypeName,p.Price,i.Total,p.PNum,p.Price*p.PNumASPSum,i.B
30、uyPrice,(p.Price-i.BuyPrice)*p.PNumASPEarnFROMPayItemsp,Itemsi,BaseTypeb,RegistrationrWHEREp.ItemId=i.ItemIdANDi.UnitId=b.IdANDp.RegId=r.RegIdANDp.PType=2GO(2)用于ReportDoctor查询的视图定义如下:USEHospitalGOCREATEVIEWReportDoctor_vASSELECTd.NameAS医生姓名,b.TypeNameAS科室名称,d.Tit
31、leAS职务,p.RegDateAS月份,(CASEWHENp.PNum=0THENp.PNumELSE0END)AS销售数量,(CASEWHENp.PSum=0THENp.PSumELSE0END)AS销售总额,(CASEWHENp.PEarn=0THENp.PEarnELSE0END)AS纯利润FROMBaseTypeb,Doctord,(SELECTDocId,LEFT(RegDate,7)ASRegDate,SUM(PNum)ASPNum,SUM(PSum)ASPSum,S
32、UM(PEarn)ASPEarnFROMPayList_vGROUPBYDocId,LEFT(RegDate,7)pWHEREb.TypeId=1ANDd.DeptId=b.IdANDd.Id=p.DocIdGO(3)用于显示ReportItems的视图定义如下:USEHospitalGOCREATEVIEWReportItems_vASSELECTi.ItemIdAS药品编号,i.ItemNameAS药品名称,b.TypeNameAS单位,i.BuyPriceAS成本价格,i.SalePriceAS销售价格,i.T
33、otalAS库存数量,p.RegDateAS销售日期,(CASEWHENp.PNum=0THENp.PNumELSE0END)AS销售数量,(CASEWHENp.PNum=0THENp.PSumELSE0END)AS销售总额,(CASEWHENp.PNum=0THEN(p.PSum-i.BuyPrice*p.PNum)ELSE0END)AS纯利润FROMItemsi,BaseTypeb,(SELECTps.ItemId,ps.RegId,LEFT(r.RegDate,7)ASRegDa
34、te,SUM(ps.PNum)ASPNum,SUM(ps.Price*ps.PNum)ASPSumFROMPayItemsps,RegistrationrWHEREps.PType=2ANDps.RegId=r.RegIdGROUPBYps.ItemId,ps.RegId,LEFT(r.RegDate,7)pWHEREi.ItemId=p.ItemIdANDi.UnitId=b.IdGO(4)用于ReportMedicine的视图定义如下:USEHospitalGOCREATEVIEWReportMedicine_vAS
35、SELECTm.MedIdAS药品编号,m.MedNameAS药品名称,(CASEWHENm.Flag=1THEN中药ELSE西药END)AS类别,b1.TypeNameAS分类,b.TypeNameAS单位,m.BuyPriceAS进货价格,m.SalePriceAS销售价格,m.TotalAS库存数量,p.RegDateAS销售日期,(CASEWHENp.PNum=0THENp.PNumELSE0END)AS销售数量,(CASEWHENp.PNum=0THENp.PSumELSE
36、0END)AS销售总额,(CASEWHENp.PNum=0THEN(p.PSum-m.BuyPrice*p.PNum)ELSE0END)AS纯利润FROMMedicinem,BaseTypeb,BaseTypeb1,(SELECTps.ItemId,ps.RegId,LEFT(r.RegDate,7)ASRegDate,SUM(ps.PNum)ASPNum,SUM(ps.Price*ps.PNum)ASPSumFROMPayItemsps,RegistrationrWHEREps.PType=1
37、ANDps.RegId=r.RegIdGROUPBYps.ItemId,ps.RegId,LEFT(r.RegDate,7)pWHEREm.MedId=p.ItemIdANDm.UnitId=b.IdANDm.TypeId=b1.Id6.1.4建立索引6.1.5建立触发器1当删除Reader表中某一读者基本信息时,触发Borrow表,删除相应的记录UseHosptialgocreatetriggerDoctor_deleteonDoctorfordeleteasdeleteNamefromdeletedwhereName.ID=de