医院门诊收费管理系统.doc_第1页
医院门诊收费管理系统.doc_第2页
医院门诊收费管理系统.doc_第3页
医院门诊收费管理系统.doc_第4页
医院门诊收费管理系统.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

基于C/S模式的医院门诊收费系统的设计摘要:本课题设计是采用C/S模式,用C+和SQL设计与编写的,在进行了详细的需求分析之后,确定数据库一共有8个表,程序一共有4个模块:系统设置、信息管理、收费管理、统计查询,包含12个功能。该设计能够成功通过编译并正常运行。设计过程中遇到不少问题,但通过多方努力,问题都逐一解决了。关键字:C/S,查询,管理Abstract: This subject is a c /s mode, with c+ and sql design and write, after the detailed requirements analysis, determine the database there are altogether eight tables, procedures there are altogether four modules:system settings、information management、charge management、statistical query,contains 12 functional.The design successfully through the compiler and normal operation, process met a lot of problems,but much effort,practical problems are solved.KeyWords:C/S,search,manage目 录1 相关技术分析41.1 选课背景41.2 方案论证42 系统需求分析52.1 业务特点及需求52.2 业务流程分析52.2.1系统流程图设计52.22 系统功能与结构63 数据库设计63.1 数据结构的设计63.1.1概念模型设计64 功能模块的设计74.1 应用程序的设计与实现74.1.1在工程中添加和注册数据库访问控件84.1.2添加数据库访问类94.2 为每个表创建对应的类104.3 设计系统主界面164.3.1系统主界面164.4 设计登录模块185 系统设置模块195.1系统管理模块195.1.1科室信息管理、药品类别管理、药品单位管理、用户管理195.2.信息管理模块195.2.1收费项目管理215.2.2门诊项目收费21参考文献21致 谢221 相关技术分析1.1 选课背景医院收费管理水平在很大程度上反映出医院的整体管理水平。过去传统的手工收费方式不仅速度慢,手续复杂,而且容易发生错误:漏收费、错收费的现象时有发生,而进行核算时既费时又费力,已不能适应医院现代化管理的需要 。建立医院门诊收费管理系统成为必然选择。该信息管理系统主要包括以下几个子系统 :系统管理功能模块、信息管理功能模块、收费管理功能模块、统计查询管理功能模块。通过医院信息管理系统运用,使各部门能共享、分析和统计医院各种信息,提高信息的处理速度和准确度,加快了信息流通的速度。解决了许多原来手工操作所造成影响工作效率的问题:例如划价、收费等的瓶颈问题,减轻了劳动强度、 提高了经济效益。并且该系统运用提高工作效率,加快了信息流通。这些都直接反映在收费系统上,主要体现在以下几个方面 : 1 划价收费一条龙。所有病人均可划价收费一次性完成。电脑同时完成计算、 人账 、打印出规范的发票,减少病人排队等候时间。全面提高了医院有关部门的工作效率。 2 药品管理实现了发药窗与库存管理一体化。杜绝了药品流动中的“ 跑 、 冒、 漓 、漏” 现象。 3 专用查询电脑输出信息使病人或亲友可方便地在多媒体工作站上获知医院科室分布、病区或病 房的具体位置及病人自己有关的治疗、健康、费用等信息。病人可以对自己的费用自由的查询。可增加病人对医院收费的信用度。 6 统计查询管理功能,可实时查询门诊部医疗收入、药品收入和其它收入情况。可实时查询门诊医疗支出、药品支出、管理费用,进行收支平衡分析、资产结构分析 。为实现增收节支 、提高经济效益提供辅助决策支持 。可实时查询药剂科室药品的进、 耗、 存情况和药品收入、支出情况。可查询门诊部物品、 卫生材料、低值易耗品及其它材料采购、领用 、库存和消耗数据以及固定资产 的分布和 占用情况 。总之医院信息管理系统在医院的运用,加强了医院经济管理 ,减少了漏洞: 提 高了医疗和药品划价收费的准确性;保证了药品及时调价,实现了药品及时准确 盘存核算、各项目的分类统计。其效率远远超过人工。1.2 方案论证医院门诊收费管理系统是由visual C+和SQL server 2000设计开发的。该系统采用C/S体系结构、关系数据库及面向对象方法设计,是一个典型的MIS。 另外,还采用了OLE DB接口技术,OLE DB的API不仅能够以统一的方式处理所有SQL数据源,也能处理非SQL数据源。它支持VC+应用程序;C/S模式将计算机分成两部分:客户机和服务器。用户在客户机通过应用程序向服务器发出请求,服务器响应后,按照请求进行相应的操作,并将数据返回到客户机,客户机对数据结果分析后,在将最终结果显示给用户。具有良好的横向可扩展性和纵向可扩展性;2 系统需求分析2.1 业务特点及需求门诊收费系统需要有以下4个功能模块:系统管理功能、信息管理功能、收费管理功能和统计查询功能。系统管理功能,主要业务为:对医院内部的科室名称、药品类别、药品单位进行设置以及对用户信息进行添加、修改、删除和查看等操作;信息管理功能,主要业务为:主要包括对药品信息、医生信息、患者信息进行添加、修改、删除和查看;收费管理功能,主要业务为:此模块主要包括收费项目管理和门诊收费管理,其中只需对收费项目进行添加、修改、删除和查看;统计查询管理,本模块用于对门诊收费信息进行统计和查询即销售信息统计查询。2.2 业务流程分析门诊收费业务流程 :输入门诊号,自动生成发票号 。录入门诊医师信息,如果科室与挂号处不一样 ,可在此输入科室号。然后,根据处方输入收费项目及数量 ,自动显示收费信息。2.2.1 系统流程图设计2.22 系统功能与结构3 数据库设计3.1 数据结构的设计数据结构的设计包括:概念模型设计、数据库逻辑模型设计、数据完整性约束条件、关系属性的设计。下面简略介绍概念模型设计。3.1.1 概念模型设计 根据系统需求分析,得出医院门诊收费管理系统数据库的信息模型,如图3.1所示。其中:User包括Username(用户名)、Pwd(密码)、User-Type(用户类型);Base包括Id(记录编号)、TypeId(类型编号)、TypeName(基本信息名称);Medicine包括MedId(药品编号)、MedName(药品名称)、CId(药品类别编号)、Unit(药品单位名称)、BuyPrice(进货价)、SalePrice(销售价)、Total(库存数量)、Flag(中西药标志);Doctor包括DoctId(医生编号)、DocName(医生姓名)、Sex(性别)、Age(年龄)、DeptId(科室编号)、Title(职务);Patient包括PatId(患者编号)、PatName(患者姓名)、IDNum(身份证号)、Sex(性别)、Age(年龄)、Merry(婚姻状况);Items包括ItemId(记录编号)、ItemName(项目名称)、Total(数量)、Unit(计量单位)、BuyPrice(进货价)、SalePrice(销售价);PayItems包括PayId(记录编号)、RegId(门诊登记编号)、ItemId(记录编号)、Pnum(收费项目数量)、Price(销售价格)、PType(类型)PayItems(收费项目明细表)Registration包括RegId(登记编号)、DoctId(医生编号)、PatId(患者编号)、RegData(登记日期)。User(合法用户)Base(基本表)Medicine(药品)1Items(收费项目)汇总11Doctor(医生)Registration(门诊收费登记)看病111Patient(患者)1图3.14 功能模块的设计前面我们已经建立了hospital数据库,进行了功能设计,接着要进行应用程序的设计与实现工作。应用程序通过C+的MFC窗口和ADO连接数据库实现。4.1 应用程序的设计与实现4.1.1 建立工程文件创建一个基于对话框的工程HospitalMan.dsp,默认的对话框为IDD_HOSPITALMAN_DIALOG。建立工程文件的方法如下: 打开Visual C+的用户界面,在系统菜单中选择“File”/”New”,打开创建工程窗口。可以看到,Visual C+支持多种不同类型的工程,要开发Windows应用程序,通常选择”MFC AppWizad(exe)”,它将利用MFC应用程序向导生成一个可执行的应用程序。如图4.1所示。图4.1 创建基于对话框的工程 在Project name编辑框中输入工程名”HospitalMan”,在Location编辑框中可以设置工程的路径,默认路径为:C:Program FilesMicrosoft Visual StudioMy Projects。然后点击“OK”按钮,打开MFC AppWizard,选择Dialog based基于对话框的应用程序,然后单击“Next”按钮,打开类信息窗口。单击”OK”按钮,开始创建工程。4.1.1 在工程中添加和注册数据库访问控件将ADO Data控件、DataGrid控件、DataCombo控件、DataList控件添加到工程中。在默认情况下,ADO Data控件等并不出现在Visual C+的控件工具栏中,需要用户手动添加。添加ADO Data控件的方法如下:在系统菜单栏中选择“Project”/”Add to Project”/”Components and Controls”,打开“Components and Controls Gallery”对话框,如图4.2所示。图4.2 “Components and Controls Gallery”对话框双击“Registered ActiveX Controls”目录,可以看到已经注册的ActiveX控件。双击“Microsoft ADO Data Control,version 6.0(OLEDB)”,将会弹出提示对话框,询问用户是否插入控件。单击“确定”按钮,打开“Confirm Classes”窗口。单击”OK”按钮,返回以上窗口,再单击“close”按钮,关闭窗口。可以看到,在控件工具栏中新增了一个按钮,这就是ADO Data控件。仿照以上步骤,添加、DataGrid控件、DataCombo控件、DataList控件添加到工程中。4.1.2 添加数据库访问类在工程中添加类ADOConn。在默认情况下,Visual C+不支持ADO对象。要在程序中使用ADO对象,需要使用#import命令将ADO库文件导入到工程中,代码如下:#import c:Program FilesCommon FilesSystemadomsado15.dll no_namespace rename(EOF,adoEOF) rename(BOF,adoBOF)在菜单中选择“Insert”/“New Class”,打开新建表对话框。在“Class type”组合框中选择Generic Class,类名为ADOConn,默认的类文件为ADOConn.cpp,如图4.3所示。图4.3 新建ADOCnn类设置完成后,单击“OK”按钮。单击“FileView”选项卡,可以在Source File目录下看到ADOConn.cpp,在Header Files目录下看到ADOConn.h。打开ADOConn.h文件,在其中添加代码,定义类ADOConn的成员变量和成员函数。在ADOConn.cpp中,添加OnInitADOConn()函数,以初始化OLE/COM库环境;添加GetRecordSet()函数,判断是否连接到数据库,如果没有,则调用OnInitADOConn建立连接;添加ExecuteSQL()函数,程序调用Connection对象的Execute方法执行SQL语句,不返回结果集。如果SQL语句执行成功,则返回true,否则返回false;添加ExitConnect()函数,关闭OLE/COM库,释放资源。4.2 为每个表创建对应的类类的成员变量对应表的列,类的成员函数是对成员变量和表得操作。在系统菜单中选择“Insert”/“New Class”,打开“New Class”窗口,选择“Generic Class”,然后输入类名,类的命名规则是大写字母“C”加上表名,例如表BaseType对应的类命名为CbaseType。(1)CBaseType类CbaseType类用来管理表BaseType的数据库操作,他的成员函数如表1.1所示。表1.1 CbaseType类的成员函数函数名具体说明BaseType()初始化成员变量int GetId()返回成员变量Id的值Int GetTypeId()返回成员变量TypeId的值Cstring GetTypeName()返回成员变量TypeName的值BOOL HaveTypeName(Cstring cTypeId)判断指定的类别中是否已经存在指定的名称中。参数Cstring cTypeId表示指定的类别的编号,成员变量TypeName中保存指定的名称Void SetId(int iId)设置成员变量Id的值,参数iId为要设置的值Void SetTypeId(int iTid)设置成员变量iTid的值,参数iTid为要设置的值Void SetTypeName(Cstring cTName)设置成员变量TypeName的值,参数TypeName为要设置的值Void sql_Delete(Cstring cId)删除指定的记录,参数cId表示要删除记录的编号Void sql_Insert()插入新的记录Void sql_Update(Cstring cId)修改指定的记录,参数cId表示要修改记录的编号(2)Cusers类Cusers用来管理表Users的数据库操作,他的成员函数如表1.2所示。表1.2 Cusers类的成员函数函数名具体说明Cusers()初始化成员变量Void GetData(Cstring cUserName)读取指定的记录。参数cUserName表示指定的用户名Cstring GetEmpName()返回成员变量EmpName的值Cstring GetPwb()返回成员变量Pwb的值Cstring GetUserName()返回成员变量UserName的值Int haveName(Cstring cUserName)判断指定的用户是否已经在数据库中。参数cUserName表示指定的用户名。Void SetEmpName(Cstring cEmpName)设置成员变量EmpName的值,参数cEmpName为要设置的值Void SetPwb(Cstring cPwb)设置成员变量Pwb的值,参数cPwb为要设置的值Void SetUserName(Cstring cUserName)设置成员变量UserName的值,参数cUserName为要设置的值Void sql_delete(Cstring cUserName)删除指定的用户记录,参数cUserName表示指定的用户名Void sql_insert()插入新的记录Void sql_update(Cstring cUserName)修改指定的记录,参数cUserName表示要修改记录的用户名(3)CMedicine类CMedicine用来管理表Medicine的数据库操作,他的成员函数如表1.3所示。表1.3 CMedicine类的成员函数函数名具体说明Cmedicine()初始化成员变量Float GetBuyPrice()返回成员变量BuyPrice的值Int GetFlag()返回成员变量Flag的值Int GetMedId()返回成员变量MedId的值Cstring GetMedName()返回成员变量MedName的值Float GetSalePrice()返回成员变量SalePrice的值Float GetTotal()返回成员变量Total的值Int GetTypeId()返回成员变量TypeId的值Int GetUnitId()返回成员变量UnitId的值Int HaveName(Cstring cName)判断指定的药品名称是否已经在数据库中。参数cName表示指定的药品名称。Void SetBuyPrice(float fBPric)设置成员变量BuyPric的值,参数fBPric为要设置的值Void SetFlag(int iFlag)设置成员变量Flag的值,参数iFlag为要设置的值Void SetMedId(int iMid)设置成员变量MedId的值,参数iMid为要设置的值Void SetMedName(Cstring cName)设置成员变量MedName的值,参数cName为要设置的值Void SetSalePrice(float fSPrc)设置成员变量SalePrice的值,参数fSPrc为要设置的值Void SetTotal(float fTotal)设置成员变量Total的值,参数fTotal为要设置的值Void SetTypeId(int iTId)设置成员变量TypeId的值,参数iTId为要设置的值Void SetUnitId(int iUId)设置成员变量UnitId的值,参数iUId为要设置的值Void sql_Delete(Cstring cId)删除指定的药品记录。参数cId表示要删除记录的编号Void sql_Insert()插入新的记录Void sql_Update(Cstring cId)修改指定的药品记录。参数cId表示要修改记录的编号(4)CDoctor类CDoctor用来管理表Doctor的数据库操作,他的成员函数如表1.4所示。表1.4 CDoctor类的成员函数函数名具体说明CDoctor()初始化成员变量Int GetAge()返回成员变量Age的值Int GetDeptId()返回成员变量DeptId的值Int GetId()返回成员变量Id的值Cstring GetName()返回成员变量Name的值Cstring GetSex()返回成员变量Sex的值Cstring GetTitle()返回成员变量Title的值Void SetAge(int iAge)设置成员变量Age的值,参数iAge为要设置的值Void SetDeptId(int iDId)设置成员变量DeptId的值,参数iDId为要设置的值Void SetId(int iId)设置成员变量Id的值,参iId为要设置的值Void SetName(Cstring cName)设置成员变量Name的值,参cName为要设置的值Void SetSex(Cstring cSex)设置成员变量Sex的值,参数cSex为要设置的值Void SetTitle(Cstring cTitle)设置成员变量Title的值,参数cTitle为要设置的值Void sql_Delete(Cstring cId)删除指定的医生记录。参数cId表示要删除记录的编号Void sql_insert()插入新的记录Void sql_Update(Cstring cId)修改指定的医生记录。参数cId表示要修改记录的编号(5)CPatient类CPatient用来管理表Patient的数据库操作,他的成员函数如表1.5所示。表1.5 CDoctor类的成员函数函数名具体说明Cpatient()初始化成员变量Int GetAge()返回成员变量Age的值Int GetId()返回成员变量Id的值Cstring GetIdNum()返回成员变量IdNum的值Cstring GetMarry()返回成员变量Marry的值Cstring GetName()返回成员变量Name的值Cstring GetSex()返回成员变量Sex的值Void SetAge(int iAge)设置成员变量Age的值,参数iAge为要设置的值Void SetId(int iId)设置成员变量Id的值,参数iId为要设置的值Void SetIdNum(Cstring cIdNum)设置成员变量IdNum的值,参数cIdNum为要设置的值Void SetMarry(Cstring cMarry)设置成员变量Marry的值,参数cMarry为要设置的值Void SetName(Cstring cName)设置成员变量Name的值,参数cName为要设置的值Void SetSex(Cstring cSex)设置成员变量Sex的值,参数cSex为要设置的值Void sql_Delete(Cstring cId)删除指定的病人记录。参数cId表示要删除记录的编号Void sql_Insert()插入新的记录Void sql_Update(Cstring cId)修改指定的病人记录。参数cId表示要修改记录的编号(6)CItems类CItem用来管理表Item的数据库操作,他的成员函数如表1.6所示。表1.6 CItems类的成员函数函数名具体说明Citems()初始化成员变量Float GetBuyPrice()返回成员变量BuyPrice的值Int GetItemId()返回成员变量ItemId的值Cstring GetItemName()返回成员变量ItemName的值Float GetSalePrice()返回成员变量SalePrice的值Int GetTotal()返回成员变量Total的值Int HaveName(Cstring cName)判断指定的收费项目名称是否已经在数据库中。参数cName表示指定的收费项目名称Void SetBuyPrice(float fBPrc)设置成员变量BuyPrice的值,参数fBPrc为要设置的值Void SetItemId(int iTId)设置成员变量ItemId的值,参数iTId为要设置的值Void SetItemName(Cstring cTName)设置成员变量ItemName的值,参数cTName为要设置的值Void SetSalePrice(float fSPrc)设置成员变量SalePrice的值,参数fSPrc为要设置的值Void SetTotal(int iTotal)设置成员变量Total的值,参数iTotal为要设置的值Void SetUnitId(int iUId)设置成员变量UnitId的值,参数iUId为要设置的值Void sql_Delete(Cstring cId)删除指定的收费项目记录。参数cId表示要删除记录的编号Void sql_Insert()插入新的记录Void sql_Update(Cstring cId)修改指定的收费项目记录。参数cId表示要修改记录的编号(7)CPayItems类CPayItems用来管理表PayItems的数据库操作,他的成员函数如表1.7所示。表1.7 CPayItems类的成员函数函数名具体说明CpayItems()初始化成员变量Int GetItemId()返回成员变量ItemId的值Int GetPayId()返回成员变量PayId的值Double GetPNum()返回成员变量PNum的值Float GetPrice()返回成员变量Price的值Double GetSum(Cstring cRegId)根据指定的门诊登记单编号返回此编号应收收费总和,参数cRegId表示指定的门诊登记单编号Int GetPType()返回成员变量PType的值Int GetRegId()返回成员变量RegId的值Void SetItemId(int iItemId)设置成员变量ItemId的值,参数iItemId为要设置的值Void SetPayId (int iPId)设置成员变量PayId的值,参数iPId为要设置的值Void SetRegId(int iRId)设置成员变量RegId的值,参数iRId为要设置的值Void SetPNum(double dPNum)设置成员变量PNum的值,参数dPNum为要设置的值Void SetPrice(float fPrc)设置成员变量Price的值,参数fPrc为要设置的值Void SetPType(int iPtype)设置成员变量PType的值,参数iPtype为要设置的值Void sql_Delete(Cstring cId)根据门诊登记单编号删除其中包含的所有记录Void sql_Insert()插入新的记录Void sql_Update(Cstring cId)修改指定的门诊登记单收费项目记录。参数cId表示要修改记录的编号(8)CRegistration类CRegistration用来管理表Registration的数据库操作,他的成员函数如表1.8所示。表1.8 CRegistration类的成员函数函数名具体说明Cregistration()初始化成员变量Int GetDocId()返回成员变量DocId的值Int GetMaxId()插入新纪录,并返回表中最大的编号Int GetPatId()返回成员变量PatId的值Int GetRegId()返回成员变量RegId的值Cstring GetRegData()返回成员变量RegData的值Cstring GetUserName()返回成员变量UserName的值Void SetDocId(int iDId)设置成员变量DocId的值,参数iDId为要设置的值Void SetPatId(int iPId)设置成员变量PatId的值,参数iPId为要设置的值Void SetRegId(int iRId)设置成员变量RegId的值,参数iRId为要设置的值Void SetRegData(Cstring cData)设置成员变量RegData的值,参数cData为要设置的值Void SetUserName(Cstring cName)设置成员变量UserName的值,参数cName为要设置的值Void sql_Delete(Cstring cId)删除指定的门诊登记记录。参数cId表示要删除记录的编号Void sql_Update(Cstring cId)修改指定的门诊登记记录。参数cId表示要修改记录的编号4.3 设计系统主界面4.3.1 系统主界面4.3.2 主要操作1默认的对话框IDD_HOSPITALMAN_DIALOG,参照表1.9设置主界面对话框的属性。 表1.9 设置主对话框的属性 对话框属性设置值具体说明Caption医院门诊收费系统对话框的标题条文本Minimize BoxFalse激活最小化按钮2添加背景图片: 单击“ResourceView”选项卡,右键单击”HospitalMan Resources”,选择“Import”菜单项,打开“Import Resource”窗口,选择目标图片hospital.bmp,将其添加到工程中。先添加的Bitmap资源ID值为ID_BITMAP1,如图4.4所示。图4.4 添加Bitmap资源 在对话框中添加一个Picture控件,右键单击Picture控件,选择Properties菜单项,打开属性窗口。在“Type”组合框中选择“Bitmap”,在”Image”组合框中选择IDB_BITMAP1,如图4.5所示。图4.5 添加图片3设置主界面得菜单单击“ResourceView”选项卡,右键单击”HospitalManResource”选择“Insert”菜单项,打开“Insert Resource”窗口。选择”Menu”,然后单击“New”按钮,在HopitalMan Resource目录下新增了一个Menu目录项,菜单ID为IDR_MENU1。双击此菜单,参照表1.10设置菜单项的属性。表1.10 菜单IDR_MENU1的属性标题ID属性系统设置科室名称IDR_DEPT药品类别IDR_TYPE药品单位IDR_UNIT用户管理IDR_USERS修改密码IDR_CHANGEPWD退出系统IDR_EXIT信息管理药品管理IDR_ASSETMAN医生管理IDR_DOCTOR患者管理IDR_PATIENT收费管理收费项目IDR_ITEM门诊收费IDR_ REG统计查询销售信息统计表IDR_REPORT1医生效益统计表IDR_REPORT2打开CLASSWIZARD窗口,为菜单项添加代码,详细内容看附页的代码。4.4 设计登录模块1当前用户的数据应该是全局有效的,在工程任何位置都可以访问它。添

温馨提示

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

评论

0/150

提交评论