《医院门诊收费系统的设计与实现(共19页).doc》由会员分享,可在线阅读,更多相关《医院门诊收费系统的设计与实现(共19页).doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上SQL SERVER数据库技术 课程设计报告题目: 医院门诊收费系统的设计与实现 专心-专注-专业目 录第1章 课程设计目的与要求1.1程序设计目的数据库管理系统是数据库技术实现的核心软件,是实现数据库系统开发的关键。数据库专业学生必须熟练掌握该软件的管理及应用,主要目的是:1. 了解当前典型的数据库管理系统的特点。2. 掌握数据库管理系统的基本应用方法。3. 掌握在数据库管理系统的管理数据库的日常管理。1.2课程设计环境1. 软件学院机房2. Windows2000server系统3. SQL sever 企业版1.3主要参考资料1. 数据库应用开发技术2. SQL
2、 Sever 2000完全实战3. 数据库系统概论4. Power Builder 9.0完全实战1.4课程设计内容及要求一、内容1. 要求根据数据库原理,按照数据库系统设计的步骤和规范,完成各阶段的设计内容。2. 需求分析具体实际,数据流图、数据字典、关系模型要正确规范。3. 在SQL Sever 2000上实现设计的数据库模块。4. 对应用程序进行概要设计。5. 用Power Builder 实现简单的调用。二、要求课程设计过程中,要严格遵守课程设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出课程设计报告。第2章 课程设计内容2.1数据库设计2.1.1 需求分析需求
3、分析就是描述系统的需求,通过定义系统中的关键类来建立模型。分析的根本目的是开发者和提出需求的人之间建立一种理解和沟通的机制,因此,医院门诊收费系统的需求分析也应该是开发人员和用户一起完成的。需求分析的第一步是描述门诊收费系统的功能,既定义用例,以此确定系统的功能需求。需求分析是通过详细调查现实世界要处理的对象,充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定系统的功能。系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。2.1.2 概念设计用户用户信息E-R图:密码用户号用户权限药品库存E-R 图:药品存库库存号备注仓库名库存量药品号
4、药品入库E-R图:入库量入库号药品号批发单价药品进货商进货单价药品入库药品有效期入库日期药品进货商E-R图:进货商号进货商名电话号进货商地址email商品进货商患者信息E-R 图: 患者信息挂号编号患者号患者名联系电话地址药品资料E-R图:药品资料编号药品名规格整量单位散量单位入库单位出库单位批发价整散比分类费用归类有效期上限下限划价收费E-R图:划价收费划价号药品号患者编号划价金额药品书量药品价格划价日期划价员所收金额收费日期收费员门诊挂号E-R图:门诊挂号编号患者姓名性别年龄挂号科室医生挂号费挂号类型挂号时间2.1.3逻辑设计在这个数据库管理系统中要建立的数据表分别如下:表2.1门诊挂号表
5、门诊挂号表 clinicReg 主键:clinicRegID列名(中文)列名(英文)数据类型宽度是否为空编号clinicRegIDvarchar15No病人编号patientIDvarchar15Yes姓名Namevarchar30Yes性别Sexvarchar2Yes挂号科室clinicDepvarchar30Yes费用类型feeTypevarchar30Yes挂号类型clinicTypevarchar30Yes挂号费用clinicFeedecimal(12,2)Yes医生Drvarchar30Yes时间DataTimedatatime8Yes是否已划价PriceYNvarchar2Yes表
6、2.2医生表医生表 ys 主键:ysid列名(中文)列名(英文)数据类型宽度是否为空医生号ysidvarchar3No医生名ysmcvarchar10Yes科室ksvarchar20Yes表2.3患者信息表患者信息表 patientInfo 主键:编号列名(中文)列名(英文)数据类型宽度是否为空编号patientIDvarchar15No姓名Namevarchar30Yes性别Sexvarchar2Yes年龄AgeintYes民族Nationvarchar20Yes费用类型FeeTypevarchar20Yes电话Telvarchar15Yes拼音码PYMvarchar5Yes表2.4划价收费
7、表划价收费表 PriceDetail 主键:PriceDetailID列名(中文)列名(英文)数据类型宽度是否为空编号PriceDetailIDintNo划价编号PriceIDvarchar15Yes药品编号MedIDvarchar15Yes单价Medpricenumeric(12, 2)Yes数量NUMnumeric(12, 2)Yes金额TolPricenumeric(12, 2)Yes表2.5用户表用户表 UserInfo 主键:userID列名(中文)列名(英文)数据类型宽度是否为空用户编号userIDvarchar10No用户名userNamevarchar10Yes用户密码user
8、PassWordvarchar10Yes权限userRightvarchar50Yes表2.6药品资料药品资料 MedInfo 主键:MedID列名(中文)列名(英文)数据类型宽度是否为空编号MedIDvarchar15No名称Namevarchar15Yes规格ggvarchar20Yes整量单位zlPricevarchar50Yes散量单位slPricevarchar50Yes入库单价rkPricenumeric(12, 2)Yes 续表2.6出库单价ckPricenumeric(12, 2)Yes批发价pfPricenumeric(12, 2)Yes整散比zsbnumeric(12, 2
9、)Yes分类Kindvarchar10Yes费用归类feeTypevarchar10Yes拼音码PYMvarchar10Yes有效期lifevarchar20Yes上限upNumvarchar10Yes下限downNumvarchar10Yes表2.7门诊收费项目门诊收费项目 ClinicalChargeItem 主键:sfID列名(中文)列名(英文)数据类型宽度是否为空编号sfIDvarchar20No名称sfNamevarchar20Yes拼音码sfPYMvarchar20Yes费用feenumeric(12, 2)Yes费用分类FeeTypevarchar20Yes病种分类SickTyp
10、evarchar20Yes备注notevarchar100Yes2.1.4 物理设计表2.8门诊挂号表表2.9医生表表3.0患者信息表表3.1划价收费表表3.2用户表表3.3药品资料表3.4门诊收费项目2.2 程序设计2.2.1 概要设计在医院门诊收费系统中,门诊收费系统的设计分为8个模块,分别是用户,药品存库,药品入库,商品进货商,患者信息,药品资料,划价收费和门诊挂号。系统功能模块设计:医院门诊收费系统的设计与实现用户药品存库药品入库商品进货商患者信息药品资料划价收费门诊挂号系统功能描述:本医院门诊收费系统主要实现9个功能,如下所述:1.基本资料用户对系统的一些基本资料进行增加、删除、修改
11、及查询操作。基本资料包括:单位设置、规格设置、进货商设置、生产厂商设置、科室设置、医生设置。2.检疗项目用户对医院的检疗项目的内容进行随时更新,查询。3.门诊挂号门诊挂号的主要功能是门诊挂号、门诊划价、整理患者信息表和挂号查询。4.药房管理药房管理包括:药品入库管理、药品基本信息管理和门诊发药功能。对药品信息、入库信息及发药信息综合查询。5.收费管理对挂号患者就诊及购买药品收费,对收费项目和收费信息综合查询并及时更新。6.用户管理只有系统管理员才能有这个权限,用于设置此系统的用户、密码及其权限。7.用户帮助用户帮助的基本功能是给予用户基本的提示。8.用户登录为了系统安全,只有拥有权限的用户才可
12、以利用此系统。所以在登录到系统主界面之前要通过登录系统来验证用户身份。9.退出系统退出界面,结束程序。2.2.2 程序实现登录窗体设计:用户登录功能的实现用户登录窗体显示时,用户可以输入用户名和密码,系统此时连接数据库“医院门诊收费系统”中的UserInfo表来校验输入用户,如果是系统管理员就可以进入主界面所拥有的所以的功能,如果是一般的用户则没有用户管理功能。如果输入的用户名或密码无法和数据库中对应则提示错误。为了引用项目医院门诊收费系统中数据层DataLevel和业务规则层BussinessRule 中的类和方法,在程序开始添加引用语句如下:using 门诊收费系统.DataLevel;u
13、sing 门诊收费系统.BussinessRule;在User类声明变量代码中添加私有string型变量usersort来记录登录用户类型,系统管理员是system,普通用户是user。代码如下:private string usersort;为了方便调用登录类并方便返回用户类别,可以创建一个公用函数GetUserSort,代码如下:public string GetUserSort()return usersort;然后,为单击登录界面的“确定”按钮发出的事件添加代码如下:private void btnLog_Click(object sender, System.EventArgs e)
14、string userid =txtUserName.Text.Trim();string userpassword =txtPassWord.Text.Trim();usersort=门诊收费系统. BussinessRule.UserCheck.UserSortCheck(userid,userpassword);if(userid =& userpassword =) MessageBox.Show(请输入用户名和密码);elseif(userid =)MessageBox.Show(请输入用户名);else if (userpassword =)MessageBox.Show(请输入密
15、码);else if(usersort=system|usersort=user)this.Close();elseMessageBox.Show(用户名和密码不相符);从上段代码中可以看出,调用了业务规则层BussinessRule 里面的UserCheck类的UserSortCheck静态方法来处理用户输入用户名和密码返回的用户类别。当是合法用户时则关闭登录窗口,否则请重新输入。本系统从建模是的MVC构架到代码都利用的层来规范和有效管理各个类。把UserSortCheck函数写到业务规则层里面的UserCheck类中,在用户登录界面代码中只要一行代码就可以实现对UserCheck类的调用,
16、代码简洁,而且各个层次、各个类代码都不长,易于维护扩充,同时分工更加清晰明确。下面是UserCheck类的代码:using System;using System.Data;using System.Data.SqlClient;using 门诊收费系统.DataLevel;namespace 门诊收费系统.BussinessRulepublic class UserCheckpublic static string UserSortCheck(string username,string userpassword) string txtSql;string usersort=nobody;S
17、qlConnection conn1 = new SqlConnection(门诊收费系统. DataLevel.Login.Connection);txtSql=SELECT * FROM UserInfo;SqlCommand checkuser=new SqlCommand(txtSql,conn1);Tryconn1.Open();sqlreader=checkuser.ExecuteReader();while(sqlreader.Read()if(sqlreader0.ToString().Trim()=username)&(sqlreader2.ToString().Trim()
18、=userpassword)usersort=sqlreader3.ToString().Trim();break;catch(Exception e)Console.WriteLine(e.ToString();conn1.Close();return usersort; 从上述代码中可以看出,因为程序中要用到SqlConnection和SqlCommand等和数据库相关的类,所以首先为程序代码添加了System.Data和System.Data.SqlClient两个类库。然后在UserCheck类中创建了公用静态函数UserSortCheck来返回用户类别。在创建SqlConnectio
19、n对象时利用了数据层DataLevel中的DatabaseConnection中connection静态公用属性。这就是本系统使用的第二种数据库连接方法,底层、具体和简洁。上面是登录界面的介绍。门诊挂号功能是本系统的核心功能之一,门诊挂号功能部分代码如下:using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Data.SqlClient;namespace 门诊
20、收费系统public class ClinicReg : System.Windows.Forms.Formprivate string regID,infoID; /保存门诊挂号编号和病人信息库编号public ClinicReg()InitializeComponent();private void ClinicReg_Load(object sender, System.EventArgs e)/生成新编号this.regID=this.CreateNewID(select max(编号) 最大编号 from clinicReg);this.infoID=this.CreateNewID
21、(select max(编号) 最大编号 from patientInfo);if(e.Button.ToolTipText=保存)if(this.CheckNotNull()=false)return;this.SaveReg();this.clearInfo();if(e.Button.ToolTipText=取消)this.clearInfo();if(e.Button.ToolTipText=退出)this.Close();private void cmb6_DropDown(object sender, System.EventArgs e)第3章 课程设计总结通过设计,基本上实现了
22、工资管理系统的预计功能,并且还增加了一些新的功能和一些新的改进。在本次设计中,我学到了很多知识,在技术方面,进一步掌握了PowerBuilder的各种编程方法及技巧,包括ADO与数据库的连接技术和datapicker、Toolbar等控件的使用方法。从而对PowerBuilder等面向对象编程语言的使用方法有了进一步的了解。同时,由于本软件使用的是SQL Server 2000数据库进行开发的。对它的使用环境和方法都有了进一步的了解。在非技术方面,得到了很多有关软件开发上的宝贵经验,了解到在软件开发过程,我们不仅需要具备扎实的专业知识,还需要具备团体合作精神,同时要能够快速掌握新的知识并能运用
23、到实际编程中去。在软件开发过程中,要具备周密严谨的开发思想。在以后的学习生活中,要不断学习新的知识,提高专业技能,以适应社会软件业的不断发展。参考文献1 郑阿齐,刘启芬等. SQL Server2000实用教程.北京:电子工业出版社, 2002:30-452 刘超,张莉编著.可视化面向对象建模技术.北京:北京航空航天大学出版社,2001:15-553 张海藩.软件工程(第四版).北京:清华大学出版社,2003:15-604 张奇,李律松,卫建伟等编著. 数据库项目案例导航.北京:清华大学出版社,2005:45-585 萨师煊,王珊.数据库系统概论(第三版).北京:高等教育出版社,2000:20-646 张海藩.软件工程(第四版).北京:清华大学出版社,2003:15-607 美佩佐尔特. SQL Server程序设计.北京:机械工业出版社,2004:40-808 杨宏伟,李晶等. SQL Server程序员开发手册.北京:科学出版社, 2006:45-589 刘浩,陈曙东主编. SQL Server编程实例与技巧.北京:清华大学出版社,2002:56-71