1、数据库课程设计报告校园医务室系统数据库课程设计报告 -校园医务室服务系统 学院:软件学院 专业:软件工程专业 班级:XX级X班 姓名:XXX 学号:XXXXXXXXXXX 任课教师: 实验教师: 一、系统开发平台题目:校园医务室服务系统 数据库:Microsoft Sql Server 2000开发工具: Eclips NetBeans 5.5 操作系统: Microsoft Window XP Home Edition二、数据库规划2.1 任务陈述校园医务室服务系统的目的是为了通过收集和存储指定对象的信息数据,及控制相关人员对以上数据的操作,辅助校医务室工作人员完成对基本医疗信息的管理工作,
2、并在必要的时候向更高管理层提供所需要的财务等信息。另外该系统还具有对医疗保险和过敏药物两种特定信息的管理功能。2.2 任务目标控制(添加,更新,删除)有关学生信息控制(添加,更新,删除)有关医生信息控制(添加,更新,删除)有关药物信息控制(添加,更新,删除)有关库存信息添加,查询有关医疗记录信息添加,查询有关过敏药物信息添加,查询有关处方信息查询,统计有关学生信息查询,统计有关医生信息查询,统计有关药物信息查询,统计有关药房信息对药房库存信息提供报表对有关医疗记录信息提供报表对有关过敏药物信息提供报表对校医务室财务信息提供报表自动计算相关费用,核对药物信息三、系统定义3.1 系统边界3.2 用
3、户视图 用户视图功能需求学生用户列出该用户的学生基本信息列出指定敏感药物的详细信息列出指定医疗记录的详细信息输出该用户医疗记录信息输出该用户过敏药物信息医生用户列出该用户的基本信息列出指定学生的基本信息列出指定学生的过敏药物信息列出指定学生的医疗记录信息列出选定药物的详细信息自动计算相关费用自动核对药物信息更新库存信息录入新处方信息录入新库存信息录入新医疗记录信息录入新过敏药物信息输出指定药房库存信息输出指定学生的医疗记录信息输出指定学生的过敏药物信息管理用户列出指定药物信息列出指定药房信息列出指定学生信息列出指定医生信息列出指定医疗记录信息录入新药物信息录入新药房信息录入新学生信息录入新医生
4、信息删除选定学生信息删除选定医生信息更新库存信息更新学生信息输出指定学生信息输出指定医生信息输出指定药房库存信息四、需求分析4.1 用户需求说明4.1.1 数据需求(1)学生用户视图:基本信息: 学号,姓名,性别,年龄,班级,学院,专业,联系电话。过敏药物信息: 编号,名称,型号,发现日期,诊断医师医疗记录信息: 时间,处方编号,自费费用,医保费用,诊断医师学号唯一,可决定多条过敏药物信息和医疗记录信息。处方编号唯一,每条过敏记录由编号和学号唯一确定。学生只可以对以上信息进行查询,不可以进行修改。(2)医生用户视图:医生信息: 编号,姓名,性别,年龄,所在药房编号学生信息: 学号,姓名,性别,
5、年龄,班级,学院,专业,联系电话药物信息: 编号,名称,型号,价格,库存量,医保比例,注意事项处方信息: 编号,药房编号,时间,治疗方案,自费费用,医保费用过敏药物信息: 编号,学号,名称,型号,诊断医师医疗记录信息: 时间,处方编号,总费用,诊断医师学号及各编号唯一;每条治疗方案中包含多条处方信息。值班医生可对处方信息,医疗记录信息进行更新和查询,但只可查询基本信息,学生信息和药物信息。(3)管理用户视图:药物信息: 编号,名称,型号,价格,库存量,医保比例,注意事项学生信息: 学号,姓名,性别,年龄,班级,学院,专业,联系电话处方信息: 编号,药房编号,时间,治疗方案,自费费用,医保费用医
6、生信息: 编号,姓名,性别,年龄,所在药房编号药房信息: 药房编号,药物编号,现库存量过敏药物信息: 编号,学号,名称,型号,诊断医师医疗记录信息: 时间,处方编号,总费用,诊断医师各编号唯一;每条医疗记录可包含多个处方编号;药方信息中,相同药物编号可对应多条药房信息。每条值班信息由医生编号,药房编号和时间唯一确定。校医院管理者可对药物信息和药房信息进行更新和查询,但只可查询医疗记录信息。4.1.2 事务需求(1)学生用户视图:数据查询:列出该用户的学生基本信息列出选定敏感药物的详细信息列出选定医疗记录的详细信息数据输出:输出该用户医疗记录信息输出该用户过敏药物信息(2)医生用户视图:数据查询
7、:列出该用户的基本信息列出指定学生的基本信息列出指定学生的过敏药物信息列出指定学生的医疗记录信息列出选定药物的详细信息数据录入:录入新处方信息录入新库存信息录入新医疗记录信息录入新过敏药物信息更新库存信息数据输出:输出该用户医疗记录信息输出该用户过敏药物信息输出指定药房库存信息输出指定学生的医疗记录信息输出指定学生的过敏药物信息其它事务:自动计算相关费用自动核对药物信息(3)管理用户视图:数据查询:列出指定药物信息列出指定药房信息列出指定学生信息列出指定医生信息列出指定医疗记录信息数据录入:录入新药物信息录入新药房信息录入新学生信息录入新医生信息数据输出:输出指定学生信息输出指定医生信息输出指
8、定药房库存信息数据更新/删除:删除选定学生信息删除选定医生信息更新药房库存信息更新学生信息4.2 系统需求说明4.2.1软件环境软件环境需要支持Window操作系统,及SQL Server商业数据库4.2.2硬件环境Petium(R) 4 CPU 1.80GHz 1.82 GHz, 504MB内存4.2.3初始数据库大小大约有学生20名,医生5名,管理用户3名;药物目录共包含40种药物,药房4处;其它记录信息为0。4.2.4数据库增长速度学生为每一年添加1000名左右,同时删除1000名左右;医生及其他信息增长速度不定。4.2.5记录查找的类型和平均数量查找医疗记录的情况大约每天20次查找学生
9、信息的情况大约每天10次查找药物记录的情况大约每天30次查找过敏药物记录的情况大约每天10次查找药房信息记录的情况大约每月1次4.2.6性能单个记录查询时间少于1秒,高峰期少于5秒多个记录查询时间少于5秒,高峰期少于10秒更新/保存记录时间少于1秒,高峰期少于5秒4.2.7安全性每个用户在进入系统时都必须有口令保护;每个用户分配特定的用户视图所应有的访问权限;不同用户根据其事先定义的角色不同进入不同的用户视图界面。五、数据库逻辑设计5.1 ER图5.2 数据字典 5.2.1实体和联系属性学生student:学号SNo,姓名SName,性别SSex,年龄SAge,班级Grade,学院Colleg
10、e,专业Major,联系电话Phone,密码Password ;医生doctor :编号DNo,姓名DName,性别DSex,年龄DAge,所在药房Room, 密码Password ;药品medicine:编号MNo,名称MName,型号MStyle,价格MPrice,注意事项MTip医保比例selfPercent药房Pharmacy: 编号PHNo,位置PHName医疗记录Record:编号RNo,处方编号PNo,时间RDate,自付费用SelfPrice,医保费用FreePrice,学号SNo,诊断医师编号DNo处方Prescription: 编号PNo,时间PDate,学号SNo,诊断医
11、师编号DNo库存量StoreAmount:药物编号MNo,药房编号PHNo,现库存量过敏药物Allergy: 药物编号MNo,学号SNo,处方编号PNo5.2.2属性描述实体属性类型及大小空student学号SNCHAR(8)否姓名SNamevarchar(16)性别SSexCHAR(2)年龄SAgeint班级Gradevarchar(20)学院Collegevarchar(20)专业Majorvarchar(20)联系电话Phone varchar(15)密码Passwordvarchar(8)doctor编号DNoCHAR(8)否姓名DNamevarchar(16)性别DSexCHAR(2
12、)年龄DAgeint所在药房RoomCHAR(4)密码Passwordvarchar(8)medicine编号MNoCHAR(8)否名称MNamevarchar(30)型号MStyleMStyle CHAR(20)价格MPriceint医保比例selfPercentintPrescription编号PNoCHAR(8)否时间PDatedatetime否学号SNoCHAR(8)诊断医师编号DNoCHAR(8)Record编号RNoCHAR(8)否处方PNoCHAR(8)否时间Datedatetime自费费用SelfPriceint医保费用FreePriceint学生SNoCHAR(8)医生DNo
13、CHAR(8)Allergy药物MNoCHAR(8)否学生SNoCHAR(8)否处方PNoCHAR(8)StoreAmount药物MNoCHAR(8)否药房PHNoCHAR(8)否现库存量Amountint5.3 关系表六、数据库物理设计6.1 索引使用查询分析器运行:USE HostipalDBCC SHOWCONTIG WITH TABLERESULTS, ALL_INDEXES可以得到Hostipal数据库中全部索引的相关信息,其中用户所建表的部分信息如下:ObjectNameIndexNameIDAverageFreeBytesLogicalFragementationAllergyP
14、K_Allergy_060DEAE817964.00.0storeAmountPK_storeAmount17690.00.0storeAmountph_key47830.00.0PDetailPK_PDetail17935.00.0RecordPK_Record_023D5A0417706.0100.0Recordpno_key87970.00.0medicinePK_medicine_7A9C383C14712.0100.0studentPK_student_76CBA75817719.0100.0doctorPK_doctor_78B3EFCA17844.0100.0pharmacyPK
15、_pharmacy18021.0100.0prescriptionPK_prescription_7E6CC92017823.00.0在全部索引中除每张表的主键索引外还包括另外两个单独建立的索引:(1)storeAmount 中的ph_key索引:在查询某种药品的库存量多为针对某以药房查询,而且在添加库存是也是按照药房批量更新添加,因此建立了此索引;(2)Record 中的pno_key索引:虽然每一医疗记录都有自己的编号,但大多数情况下是对具体的处方信息进行查询,而且一条有自费和医保费用构成的财务记录也是由处方编号而定的,所以建立了此索引。6.2 视图Hostipal数据库中主要建立了以下两
16、个视图:CREATE VIEW dbo.AllergyDetial ASSELECT dbo.Allergy.MNo, dbo.Allergy.SNo, dbo.Allergy.PNo, dbo.medicine.MName, dbo.medicine.MStyle, dbo.medicine.MTip, dbo.student.SName, dbo.prescription.PDate, dbo.doctor.DNo, dbo.doctor.DNameFROM dbo.Allergy INNER JOIN dbo.medicine ON dbo.Allergy.MNo = dbo.medic
17、ine.MNo INNER JOIN dbo.student ON dbo.Allergy.SNo = dbo.student.SNo INNER JOIN dbo.prescription ON dbo.Allergy.PNo = dbo.prescription.PNo AND dbo.student.SNo = dbo.prescription.SNo INNER JOIN dbo.doctor ON dbo.prescription.DNo = dbo.doctor.DNoCREATE VIEW dbo.PreDetail ASSELECT dbo.prescription.PNo,
18、dbo.prescription.PDate, dbo.prescription.SNo, dbo.prescription.DNo, dbo.Record.RNo, dbo.Record.SelfPrice, dbo.Record.FreePrice, dbo.medicine.MName, dbo.medicine.MStyle, dbo.medicine.MPrice, dbo.medicine.selfPercent, dbo.student.SName, dbo.doctor.DNameFROM dbo.prescription INNER JOIN dbo.Record ON db
19、o.prescription.PNo = dbo.Record.PNo INNER JOIN dbo.student ON dbo.prescription.SNo = dbo.student.SNo AND dbo.Record.SNo = dbo.student.SNo INNER JOIN dbo.doctor ON dbo.prescription.DNo = dbo.doctor.DNo AND dbo.Record.DNo = dbo.doctor.DNo CROSS JOIN dbo.medicine建立以上视图主要是因为:(1)基于以上视图实现复杂查询,以避免书写频繁执行连接操
20、作;(2)以上视图所包含的表的数据关系到许多用户,视图可以隐藏基本表;可以禁止所有用户访问数据库表,而要求医生等用户只能通过视图操作数据;(3)在一定程度上保护高级语言应用程序不受某些数据库结构修改的影响。6.3 安全机制6.3.1系统安全为学生和医生用户在数据库中存储登录口令,登录时必须经验证一致才可进入系统;由于管理员用户有频繁的插入删除操作且该类用户数量有限,所以为每一个管理员用户在数据库中建立单独的登录名和用户名,并为他们指定已建立的Manager角色(具有表student,doctor,medicine,storeAmount的全部权限)。在管理员登录时,其密码由SQLSever实现
21、验证,由于SQLSever的登录密码是经加密保存的,所以具有较高的安全性。6.3.2数据安全在该系统中,任何有关删除或添加数据的操作都需要二次确认才可以在数据库中真正执行。通过高级语言应用程序的限制,不同的用户只能查询修改其有权访问的数据。七、应用程序设计7.1 功能模块7.1.1计算功能(1) 统计具有指定属性的群体所含个体的总量;(2) 医疗费用中医保金额和自费金额的自动计算和区分;(3) 过敏药物的判定及其与治疗药物的冲突选择。7.1.2存储功能存储有关对象的具体信息及学生与处方,处方与医生,医生与药房,药房与药品的关系,并能方便快速地实现对以上信息的删除增加等操作。7.1.3输入及输出
22、功能输入的限定信息等数据经处理后,可以在显示器上按事先定义的格式显示,特别是在就诊过程中可以跟踪当前状态(挂号,诊疗,结算,取药)。另外还能通过指定设备存储账单等报表,以便打印或长期保存。7.1.4交互功能本系统具有仿Windows窗口交互界面,会在工作人员进行输入等操作时给予必要的提示,或者在操作发生错误时给予必要的提示和帮助。另外在医生用户的最终结算操作中具有自动计算找零的仿收银台功能。7.2 界面设计7.2.1登录界面7.2.2管理员用户界面(1)查询药物(2)报表生成的报表:(3)添加库存(3)添加新药(4)医生管理(5)学生管理(6)财务管理7.2.3医生用户界面(1)挂号(2)新处
23、方部分提示信息: (3)医疗信息(4)结算 最终打印的账单:7.2.4学生用户界面(1)基本信息(2)敏感药物(3)医疗记录7.3 事务设计7.3.1 Datetime类型数据查询时间是对于医疗记录是很重要的属性,本系统的数据库在存储时间时使用的是其提供的Datetime类型,这样就可以通过调用函数DATEDIFF,方便的查询某一时间点或某一时间段的指定信息。以下是以学生查询自己某一时间段的医疗记录的实例:if(!todate.trim().equals(YYY-MM-DD)&!fromdate.trim().equals(YY-MM-DD) RSTemp=RSTemp+ and DATEDI
24、FF(dd,record.Rdate,+fromdate +)=0;.studentDemo.open(sa, );String sql3=select Record.RNo,Record.PNo,RDate,PDetail.MNo, Record.SelfPrice,Record.FreePrice,PDetail.PDetail + from Record,prescription,PDetail + where Record.PNo=Prescription.PNo +RSTemp + and PDetail.PNo=Prescription.PNo and record.SNo=+th
25、is.SId;ResultSet RecordSearchResult=studentDemo.executeQuery(sql3);RecordSearchResult.next();7.3.2医保信息处理随着医疗保险改革的不断深入,对于在校学生医保信息的管理也越来越受到各方的重视。怎样有效的掌握和利用医疗保险信息,以及实现个人医疗信息档案的信息化、规范化和集成化,实现计算机的智能化管理,提高相关工作人员的工作效率成为了需要解决的重要问题。对于医保信息的利用是本系统的特色之一,主要包括根据药品分类自动生成医保比例和根据医保比例计算自费金额两部分内容。前者已在文件录入中有所体现,后者则可以在医
26、生开处方时提供方便。(1)以下是医生在结算费用时的界面:(2)高级程序代码中的关键部分如下:/获取价格和医保比例并转化为可计算数据类型String PHMPrice=vector5.elementAt(3).toString().trim();float price=Float.parseFloat(PHMPrice); String PHMTip=vector5.elementAt(4).toString().trim();String PHMPercent=vector5.elementAt(5).toString().trim();float percent=Float.parseFlo
27、at(PHMPercent);float self=(price*(100-percent)/100; /计算自费单价和医保单价vector7.add(+self);float a=Float.parseFloat(selfall); /结算int num=Integer.parseInt(vector7.elementAt(3).toString().trim()vector0.add(+a*num);sellAll=sellAll+a*num;7.3.3数据批量录入由于在数据库构建初期以及每年新学生信息录入时,有大量格式一致的数据需要录入,所以本系统提供了文件录入功能。现以添加药物信息为例
28、,分析文件录入功能:(1)药物分类信息是从政府网站下载的Excel文件中转化而得,各属性具体数据后的特殊符号是为方便高级程序分析而后期添加的,具体录入文件实例如下:(2)在高级程序中,主要是由文件读取,按行分析,构造SQL,向数据库中添加四步操作实现文件录入功能。部分编程代码如下:public void AddMed(String inform) /按行分析从文件中读取的一行信息并加入数据库中 int a=0,b=0; a=inform.indexOf(#);/分析得药品名称 tryif(a=-1)System.out.println(this line no name);/本行无信息 elsename = inform.substring(0, a); b=inform.indexOf($);/分析得规格 if(b=-1) System.out.println(there is no type. ); elsetype = inform.substring(a+1, b).trim(); . . a=inform.indexOf(类);/分析得类别 if(a=-1) System.out.println(there is no lei. ); elselei = inform.substring(b+1, a).trim(); if(lei.equals(甲
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1