数据库课程设计报告[1].doc_第1页
数据库课程设计报告[1].doc_第2页
数据库课程设计报告[1].doc_第3页
数据库课程设计报告[1].doc_第4页
数据库课程设计报告[1].doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库课程设计报告姓 名:吴森,张幂,马苗专 业:计算机科学与技术班 级:计算机0705学 号:U200714815,U200714833,U200714837指导教师:吴恒山分 数教师签名 2010 年9月9日目录一、 概述1.1 项目背景31.2 课程设计目的31.3 题目名称31.4 开发环境4二、 需求分析2.1 基本要求 42.2 实现的方法 4三、数据库设计3.1 概念模型设计53.2 逻辑数据库设计83.3 规范化理论的应用93.4 数据库的物理设计9四、软件功能设计4.1 系统功能分析124.2 系统功能模块设计13五、部分程序代码及说明5.1 主窗口的设计145.2 用户登录界面155.3 挂号管理设计185.4 科室财务状况设计22六、设计心得24一、概述1.1 项目背景医院信息管理系统是医院事务管理的一个重要内容,随着时代的进步,医院的规模和管理也越来越好,越来越规格化。如何管理好医院系统,包括病人注册,登录,挂号,查看医院的各种公开信息,医生查看病人病情,给病人治病,住院管理等,对于医院各个科室的财务状况进行管理。同时,对于系统管理员,可以进行用户管理,包括用户创建,删除,权限设置等。管理好医院内部各种物质的信息,对医院来说是很重要的,这也是医院管理中的一个大问题。在这种情况下,一个可以规范化,自动化的医院管理系统对于医院来说显得至关重要。最初的医院管理,都是靠人力完成,在医院规模比较小的时候,人力可以很好完成,但随着规模的增大,医院数量越来越多,这种管理的压力也越来越大,各种弊端显示出来。网络的到来给这带来了很大的便利,病人可以通过网上预约医生,医生可以根据预约单看到预约的名单,进行看病等,给医院的管理带来很大便利。这些管理,给医院带来很大的好处。 1.2课程设计目的1. 熟悉大型数据库管理系统的结构与组成;2. 熟悉数据库应用系统的设计方法和开发过程;3. 掌握一种大型数据库管理系统(DM6、ORACLE或SQL SERVER)的应用技术和开发工具的使用;4. 熟悉数据库设计工具的使用;5. 熟悉数据库安全的相关知识和技术;6. 熟悉数据库系统的管理和维护。 1.3题目及要求题目:医院管理系统采用B/S或C/S模式实现一个医院管理系统。完成药品、诊疗、医师、病人、病房等信息的管理。要求:1)提供面向公众的导医和收费标准明细查询的功能;2)挂号、收费、诊疗人员等具有不同的查询和修改权限;3)按照看病的基本流程(例如:预约挂号门诊检查复诊住院治疗出院结算)进行信息管理;4)提供病人收费汇总清单,提供各种药品或检查项目使用情况汇总;5)提供医院各部门财务报表及医院整体财务报表,并且分日明细表和月、年汇总表。 1.4 开发环境 1)、操作系统:windows XP 2)、数据库系统:Microsoft SQL Server 2000企业版 3)、开发工具:Visual C+,用MFC编程二、需求分析2.1 基本要求 按照题目的要求,要实现的基本功能有以下几条:1)提供面向公众的导医和收费标准明细查询的功能;2)医生、病人、管理员等具有不同的查询和修改权限;3)按照看病的基本流程(例如:预约挂号看病住院治疗出院结算)进行信息管理;4)提供病人收费汇总清单,提供各种药品或检查项目使用情况汇总;5)提供医院各部门财务报表及医院整体财务报表,并且分日明细表和月、年汇总表。2.2 实现方法1、按照要求,实现不同权限的登录,总共分为三个权限管理员:具有创建和删除用户,此外,还有更改用户权限的功能; 管理医院各科室的财务情况医生: 具有进行病人挂号管理,查询病史,治病,开处方,入院,出院等管理功能病人: 具有查看医院公共首页,收费标准等管理;具有预约医生的权限,查看自己病史的权限 2、对外,有公共查询系统,具有查看医院药品价格,医疗设备价格,医生的基本信息等功能,给用户一个了解医院大致情况的接口。公众不需要登录系统,就可以进行相应的查询,使得系统的使用更合理化、人性化。三、数据库设计3.1 概念模型设计用户名密码权限当前用户用户信息身份证号姓名性别年龄病人病史信息病史药品编号药品名药剂单位进价药品存放信息售价库存药品规格生成日期有效期身份证号姓名预约号预约信息挂号编号病人编号性别挂号科室挂号信息医生编号划价编号挂号编号医生姓名划价时间划价信息药品名药品量服用方法划价编号科室挂号编号医生编号药品价格信息划价时间收费时间划价员编号是否收费收费员编号划价金额是否发药发药时间发药员编号编号财政部门信息收费时间部门进价售价利润床位号是否空病人号床位使用信息编号病人号收费时间医院收费信息住院天数病床号是否收费病因编号药品名价格公众查询信息医生病人收费员划价看病开药方缴费住院床位使用挂号员预约员预约挂号3.2 逻辑数据库设计针对医院管理信息系统的需求,通过对看病流程的分析,设计如下面的数据项和数据结构:用户信息表,包括的数据项有:(用户名、密码、权限、当前用户);病人病史记录表,包括的数据项有:(身份证号、姓名、性别、年龄、病史);其中,外码: 姓名,必需为用户表中的用户药品存放记录,包括的数据项有:(药品编号、药品名、药剂单位、进价、售价、药品规格、生成日期、有效期、库存);预约表,包括的数据项有:(身份证号、姓名、预约号);其中,外码: 姓名,必需为用户表中的用户挂号表,包括的数据项有:(挂号编号、病人编号、性别、挂号科室、医生编号);其中,外码: 病人编号划价表,包括的数据项有:(划价编号、挂号编号、医生姓名、划价时间、药品名、药品量、服用方法);其中,外码: 挂号编号药品价格表,包括的数据项有:(划价编号、科室、挂号编号、医生编号、划价时间、划价员编号、是否收费、收费员编号、收费时间、划价金额、是否发药、发药时间、发药员编号);其中,外码:划价员编号,发药员编号财政部门表,包括的数据项有:(编号、部门、进价、售价、利润、收费时间);床位使用表,包括的数据项有:(床位号、是否空、病人号);其中,外码:病人号医院收费表,包括的数据项有:(编号、病人号、收费、时间、住院天数、床位号、病因、是否收费);其中,外码:病因公众查询表,包括的数据项有:(编号、药品名、价格);3.3 规范化理论的应用 在以上的逻辑分析中,我们不难得出这些关系转化都在第三范式中。3.4 数据库的物理设计完成了数据库的逻辑设计之后,即可开始数据库的物理设计。基于以上数据库逻辑设计,考虑到程序设计的简易性及通用性,本物资管理信息系统采用的SQL Servier数据库,并在其下创建了11个数据表。用户表Users字段名数据类型长度与格式关键字用户名(name)文本15是密码(passward)文本6否权限(protrity)数字整型是当前用户(CurUser)布尔型布尔值否主码:用户名(name),权限(protrity)外码: 无病人病史记录表SickMan字段名数据类型长度与格式关键字身份证号(Number)文本15是姓名(Name1)文本6否性别(Sex)文本2否年龄(Age)数字整型否病史(SickHistory)文本100否主码:身份证号(Number)外码: 姓名(name),必需为用户表中的用户药品存放记录DrugsStorage字段名数据类型长度与格式关键字药品编号(Number)文本15是药品名(Name1)文本6否药剂单位(Spec)文本2否进价(InMoney)数字整型否售价(OutMoney)数字整型否药品规格(Class)文本10否生产日期(Data)文本15否有效期(UsefullLife)文本15否库存(Account)数字整型否主码:药品编号(Number),药品名(Name1)外码: 无预约表Orders字段名数据类型长度与格式关键字身份证号(Number)文本15是姓名(Name1)文本6否预约号(Num)文本6是主码:身份证号(Number),预约号(Num)外码: 姓名(name),必需为用户表中的用户挂号管理Register字段名数据类型长度与格式关键字挂号编号(Num)文本15是病人编号(SickNumber)文本6否性别(Sex)文本2否挂号科室(Department)文本10否医生编号(DoctorNumber)文本10否主码:挂号编号(Num)外码: 病人编号(SickNumber) 划价管理Prescription字段名数据类型长度与格式关键字划价编号(PreNum)文本10是挂号编号(RegisterNumber)文本10否医生姓名(DoctorNumber)文本10否划价时间(T_time)文本20否药品名(DrugsName)文本10是药品量(DrugsAcount)数字整型否服用方法(Method)文本50否主码:划价编号(PreNum),药品名(DrugsName)外码:挂号编号(RegisterNumber)药品价格表PriceTable字段名数据类型长度与格式关键字划价编号(Number)文本10是科室(Department)文本20否挂号编号(RegisterNumber)文本10否医生编号(DoctorNumber)文本10否划价时间(PriceTime)文本20否划价员编号(PriceNumber)文本10否是否收费(IsCharge)文本2否收费员编号(ChargeNum)文本10否收费时间(ChargeTime)文本20否划价金额(PriceMoney)数字整型否是否发药(IsDispen)文本2否发药时间(DispenTime)文本20否发药员编号(DispenNumber)文本10否主码:划价编号(Number)外码:划价员编号(PriceNumber),发药员编号(DispenNumber)财政部门表Financial字段名数据类型长度与格式关键字编号(Number)文本10是部门(Department)文本10否进价(Inmoney)数字整型否售价(Outmoney)数字整型否利润(Profit)数字整型否收费时间(NowTime)文本20否主码:编号(Number)外码: 无床位使用表BedUse字段名数据类型长度与格式关键字床位号(BedNumber)文本6是是否空(IsEmpty文本2否病人号(Num)文本6是主码:床位号(BedNumber),病人号(Num)外码:病人号(Num)医院收费表HospitalCharge字段名数据类型长度与格式关键字编号(Number)文本10是病人号(SickNumber)文本20否收费(Fees)数字整型否时间(InTime)文本10否住院天数(Days)数字整型否床位号(Bed)文本6否病因(SickCause)文本10否是否收费(IsCharge)文本2否主码:编号(Number)外码:病因(SickCause)公众查询系统Fees字段名数据类型长度与格式关键字编号(IllnessClass)文本10是药品名(IllnessName)文本10否价格(Price)数字整型否主码:编号(IllnessClass)外码: 无四、软件功能设计4.1 系统功能分析系统开发的总体设计任务就是实现医院管理系统的系统化,规范化和自动化。系统功能分析是在系统开发总体任务的基础上进行的,按照题目设计的要求,进行需求分析,本系统中需要的的主要功能有:1、 管理员:u 添加用户;u 删除用户;u 修改用户密码;u 科室财务状况统计;u 药品出入库信息统计;2、面向公众查询u 医院收费标准查询;u 就医流程;u 医生,科室信息查询;3、病人u 登录到系统;u 查自己的病史;u 进行预约和挂号管理;4、医生u 对病人进行诊断;u 进行划价管理;u 进行收费管理;u 进行药品出入仓库管理;u 病人住院管理和病床安排管理;4.2 系统功能模块设计医院管理系统面向公众管理员医生病人收费标准医院财务统计修改用户密码就医流程医生,科室信息删除用户诊断管理添加用户划价管理收费管理病人住院管理查询病史预约管理挂号管理五、部分程序代码及说明5.1 主窗口的设计 主窗口采用单文档模式,菜单中包括各种菜单项,包括就医导航,病人信息,医院,科室的财务状况。 不同级别的用户,具有不同的登录权限,病人,医生,管理员的对系统的管理具有不同的操作权限。病人只能查询医院的药物,医生信息,挂号;医生只能进行对病人看病,管理员可以对所有用户进行管理,包括增删用户,权限更改,还可以统计医院的整体财务状况。5.2 用户登录界面 登录界面中,包括用户登录类型,用户名,密码。系统从表users中寻找对应的UserName 和UserType,如果找到对应的用户,就进行设置CurUser为1,表示当前用户处在登录状态,其它的用户都出于未登陆状态,对应CurUser为0。以下为表users的内容:create table users(UserName char(6),-用户名UserPwd char(6),-用户密码 UserType int,-用户类型CurUser int,-是否为登录用户primary key(UserName,UserTpye);以上表中,UserType表示用户类型,是医生,病人,管理员三者中的一个,其中1表示管理员,2表示医生,3表示病人。在程序中,对应代码如下:void CDialogLoad:OnOK() UpdateData();/更新各个窗口内容if(m_name.IsEmpty()/账号内容为空,输出提示AfxMessageBox(请输入账号!);return ;if(m_passward.IsEmpty()/密码选项为空,输出出错提示AfxMessageBox(请输入密码!);return ;if(m_kinds.IsEmpty()/登录类型选项为空,输出出错提示AfxMessageBox(请输入登录类型!);return ;CString m_strSQL;m_strSQL.Format(select * from Users where UserName=%s;,m_name);/进行对应数据库内容查找的SQL语句Onrefresh(m_strSQL);/调用函数Onrefreshvoid CDialogLoad:Onrefresh(CString SQL)/函数OnrefreshCDatabase m_db;CRecordset* m_pRst;CString m_strSQL;int i=-1;if(m_db.IsOpen()m_db.Close();/如果数据库已经打开,先关闭m_db.OpenEx(DRIVER=SQL Server;Server=WIN-P4VIGAG0BAB;DATABASE=master;UID=sa;PWD=123456;);/在对应服务器上打开系统数据库m_strSQL=SQL;m_pRst=new CRecordset(&m_db);m_pRst-Open(CRecordset:dynaset,m_strSQL);/打开数据库,并执行m_pRst对应的SQL语句if(m_pRst-IsEOF()/判断是否有这个账号AfxMessageBox(没有这个账号!);return ;m_pRst-MoveFirst();CString str,str2;m_pRst-GetFieldValue(UserPwd,str2);/获得数据库中的密码m_pRst-GetFieldValue(UserType,str);/获得数据库中对应用户的权限if(m_passward!=str2)/密码不一致,输出出错提示 AfxMessageBox(输入密码错误,请核对!); return; if(!strcmp(m_kinds,str)/权限不一致,输出出错提示 AfxMessageBox(不存在该权限的帐户!); return;m_strSQL.Format(update Users set CurUser=1 where UserName=%s;,m_name);/进行用户状态更新的语句m_db.ExecuteSQL(m_strSQL);/这姓这条语句m_strSQL.Format(用户 %s 登录成功!;,m_name);AfxMessageBox(m_strSQL);/输出登录成功的提示m_pRst-Close();m_db.Close();/关闭现有打开的数据库CDialog:OnOK();5.3 挂号管理设计挂号管理,病人登录系统后,进行挂号,根据病人的病人编号,就可以进行挂号管理.对应的表Register如下:create table Register(Num char(10),-挂号编号SickNumber char(20),-病人编号Sex char(2),-性别Department char(20),-挂号部门RegisterClass char(10),-挂号类型DoctorNumber char(10),-医生姓名primary key(Num),foreign key(SickNumber) references Orders(Num);这个表的主码为挂号编号,病人进行挂号管理后,会自动生成一个挂号编号,来表示这个用户已经进行了挂号管理,挂号后,产生触发事件,对应医生的栏目中将增加病人的这条信息,提示有病人挂了这个医生的号。挂号管理界面有点复杂,对应的科室为系统中自动存储的科室,同样,医生也是这个科室对应的每个医生,因此病人只能挂某些具体医生的号,这样的设计也符合现实生活中的医院挂号管理系统。挂号管理对应代码如下:void CDialogRegMang:OnOK() UpdateData();/更新所有的输入窗口if(m_sickNumber.IsEmpty()/判断病人编号是否为空,是,输出错误提示AfxMessageBox(请输入完整);return ;CDatabase m_db;CRecordset* m_pRst;CString m_strSQL;if(m_db.IsOpen()/先关闭数据库m_db.Close();m_db.OpenEx(DRIVER=SQL Server;Server=WIN-P4VIGAG0BAB;DATABASE=master;UID=sa;PWD=123456;);/打开对应的数据库,采用SQL Server 作为服务器,密码为123456,账号为sam_strSQL.Format(select * from Orders where Num=%s;,m_sickNumber);/要执行的SQL语句m_pRst=new CRecordset(&m_db);m_pRst-Open(CRecordset:dynaset,m_strSQL);/执行这条语句if(m_pRst-IsEOF()/查询结果为空,输出没有预约的提示AfxMessageBox(没有预约);return ;m_pRst-Close();CString num;CTime time=CTime:GetCurrentTime(); CString str_hour,str_min,str_sec; int hour,min,sec;hour=time.GetHour();min=time.GetMinute();sec=time.GetSecond();/以下代码为系统自动生成用户的挂号编号,每个人的挂号编号都不一样if(hour10)str_hour.Format(0%d,hour);elsestr_hour.Format(%d,hour);if(min10)str_min.Format(0%d,min);elsestr_min.Format(%d,min);if(sec10)str_sec.Format(0%d,sec);elsestr_sec.Format(%d,sec);num.Format(%s%s%s,str_hour,str_min,str_sec); if(m_db.IsOpen()m_db.Close(); m_db.OpenEx(DRIVER=SQL Server;Server=WIN-P4VIGAG0BAB;DATABASE=master;UID=sa;PWD=123456;);/打开数据库m_strSQL.Format(insert into Register values(%s,%s,%s,%s,%s,%s);,num,m_sickNumber,m_sex,m_department,m_registerClass,m_doctorNumber);/触发器触发事件,将这条挂号记录插入到数据库,同时更新对应医生记录进行更新m_db.ExecuteSQL(m_strSQL);m_db.Close();CString result;result.Format(挂号成功,你的挂号编号为%s,num);/提示用户,告诉挂号编号AfxMessageBox(result);CDialog:OnOK();5.4 科室财务状况设计以上为统计医院和科室财务状况的界面,里面可以选择科室,查询的年份,季度,月份等各种记录。左侧窗口是用来查询单项记录,右侧窗口查询科室的总记录,即将左侧的所有金额加起来,进行总的统计。按照设计,当输入信息时,系统会自动查询该科室的信息,若没有输入科室内容,系统默认查找所有科室的财务信息,这样就间接实现了查找医院所有科室的财务状况的功能。除此之外,年份,季度,月份也是同样的道理。这样,通过单一的界面,就可以实现所有财务状况的统计和查询。对应的表Financial如下:create table Financial(Number char(10),-财务统计的编号Department char(10),-部门名称Inmoney int,-收入Outmoney int,-支出Profit int,-利润NowTime char(20),-财务统计时间primary key(Number)主码为财务统计编号);在程序设计中,对应的代码如下:void CDialogFinancialState:OnSearch() UpdateData();CString str_SQL,time1,time2;CUsers User;if(User.GetUser()!=1)/如果当前登录用户不是管理员,输出没有权限的提示MessageBox(对不起,您没有权限 !);return;if(m_department.IsEmpty()/为输入部门号,就统计所有部门的财务str_SQL=select * from Financial;elseif(m_year.IsEmpty()/没输入年份,就查询该部门所有时间的财务记录str_SQL.Format(select * from Financial where Department=%s;,m_department);elseif(m_month.IsEmpty()&m_quart.IsEmpty()/没有输入季度和月份,就进行这一年所有月份和季度的财务记录str_SQL.Format(select * from Financial where Department=%s and NowTime between %s and %d;,m_department,m_year,atoi(m_year)+1);else if(m_quart.IsEmpty()/如果没有输入月份,就进行这个季度所有月份记录的查询time1.Format(%s-%d-1,m_year,atoi(m_month);time2.Format(%s-%d-1,m_year,atoi(m_month)+1);str_SQL.Format(select

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论