医院门诊收费系统的设计与实现

更新时间:2023-03-11 11:26:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

SQL SERVER数据库技术 课程设计报告

题目: 医院门诊收费系统的设计与实现

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

目 录

第1章 课程设计目的与要求 .................................................. 1

1.1程序设计目的 ........................................................ 1 1.2课程设计环境 ........................................................ 1 1.3主要参考资料 ........................................................ 1 1.4课程设计内容及要求 .................................................. 1 第2章 课程设计内容 ........................................................ 2

2.1数据库设计 .......................................................... 2

2.1.1 需求分析 ...................................................... 2 2.1.2 概念设计 ...................................................... 2 2.1.3 逻辑设计 ...................................................... 5 2.1.4 物理设计 ...................................................... 7 2.2 程序设计 ............................................................ 8

2.2.1 概要设计 ...................................................... 8 2.2.2 程序实现 ..................................................... 10

第3章 课程设计总结 ........................................................ 16 参考文献 ................................................................... 17

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

第1章 课程设计目的与要求

1.1程序设计目的

数据库管理系统是数据库技术实现的核心软件,是实现数据库系统开发的关键。数据库专业学生必须熟练掌握该软件的管理及应用,主要目的是:

1. 了解当前典型的数据库管理系统的特点。 2. 掌握数据库管理系统的基本应用方法。

3. 掌握在数据库管理系统的管理数据库的日常管理。

1.2课程设计环境

1. 软件学院机房

2. Windows2000server系统 3. SQL sever 企业版

1.3主要参考资料

1. 2. 3. 4.

数据库应用开发技术

SQL Sever 2000完全实战 数据库系统概论

Power Builder 9.0完全实战

1.4课程设计内容及要求

一、内容

1. 要求根据数据库原理,按照数据库系统设计的步骤和规范,完成各阶段的设计内容。 2. 需求分析具体实际,数据流图、数据字典、关系模型要正确规范。 3. 在SQL Sever 2000上实现设计的数据库模块。 4. 对应用程序进行概要设计。

5. 用Power Builder 实现简单的调用。

二、要求

课程设计过程中,要严格遵守课程设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出课程设计报告。

1

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

第2章 课程设计内容

2.1数据库设计

2.1.1 需求分析

需求分析就是描述系统的需求,通过定义系统中的关键类来建立模型。分析的根本目的是开发者和提出需求的人之间建立一种理解和沟通的机制,因此,医院门诊收费系统的需求分析也应该是开发人员和用户一起完成的。需求分析的第一步是描述门诊收费系统的功能,既定义用例,以此确定系统的功能需求。

需求分析是通过详细调查现实世界要处理的对象,充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定系统的功能。系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。

2.1.2 概念设计

用户信息E-R图:

用户号 密码 用户权限 用户 药品库存E-R 图:

仓库名 药品号 库存量 库存号 备注 药品存库 药品入库E-R图:

2

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

入库号 药品号 入库量 入库日期 药品入库 药品有效期 药品进货商 进货单价 批发单价 药品进货商E-R图:

商品进货商 进货商号 email 进货商名 进货商地址 电话号

患者信息E-R 图:

患者名 地址 患者号 挂号编号 患者信息 联系电话 药品资料E-R图:

3

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

药品名 规格 整量单位 散量单位 入库单位 费用归类 出库单位 药品资料 有效期 批发价 编号 上限 整散比 分类 下限

所收金额 划价收费E-R图:

收费员 收费日期 划价号 划价收费 药品号 划价员 划价日期 患者编号 药品价格 划价金额 药品书量

挂号类型 门诊挂号E-R图:

编号 挂号时间 患者姓名 门诊挂号 挂号费 性别 年龄 挂号科室 医生

4

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

2.1.3逻辑设计

在这个数据库管理系统中要建立的数据表分别如下:

表2.1门诊挂号表

门诊挂号表 clinicReg 主键:clinicRegID 列名(中文) 列名(英文) 数据类型 宽度 是否为空 编号 clinicRegID varchar 15 No 病人编号 patientID varchar 15 Yes 姓名 Name varchar 30 Yes 性别 Sex varchar 2 Yes 挂号科室 clinicDep varchar 30 Yes 费用类型 feeType varchar 30 Yes 挂号类型 clinicType varchar 30 Yes 挂号费用 clinicFee decimal (12,2) Yes 医生 Dr varchar 30 Yes 时间 DataTime datatime 8 Yes 是否已划价 PriceYN varchar 2 Yes 表2.2医生表

医生表 ys 主键:ysid 列名(中文) 列名(英文) 医生号 ysid 医生名 ysmc 科室 ks

表2.3患者信息表

患者信息表 patientInfo 主键:编号 列名(中文) 列名(英文) 数据类型 编号 patientID varchar 姓名 Name varchar 性别 Sex varchar 年龄 Age int 民族 Nation varchar 费用类型 FeeType varchar 电话 Tel varchar 拼音码 PYM varchar

表2.4划价收费表

划价收费表 PriceDetail 主键:PriceDetailID 列名(中文) 列名(英文) 数据类型 宽度 是否为空 编号 PriceDetailID int No 划价编号 PriceID varchar 15 Yes 药品编号 MedID varchar 15 Yes 单价 Medprice numeric (12, 2) Yes 数量 NUM numeric (12, 2) Yes 金额 TolPrice numeric (12, 2) Yes

5

宽度 15 30 2 20 20 15 5 是否为空 No Yes Yes Yes Yes Yes Yes Yes 数据类型 varchar varchar varchar 宽度 3 10 20 是否为空 No Yes Yes 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

表2.5用户表

用户表 UserInfo 主键:userID 列名(中文) 列名(英文) 数据类型 用户编号 userID varchar 用户名 userName varchar 用户密码 userPassWord varchar 权限 userRight varchar

表2.6药品资料

药品资料 MedInfo 主键:MedID 列名(中文) 列名(英文) 数据类型 宽度 是否为空 编号 MedID varchar 15 No 名称 Name varchar 15 Yes 规格 gg varchar 20 Yes 整量单位 zlPrice varchar 50 Yes 散量单位 slPrice varchar 50 Yes (12, 入库单价 rkPrice numeric 2) Yes 续表2.6 (12, 出库单价 ckPrice numeric 2) Yes (12, 批发价 pfPrice numeric 2) Yes (12, 整散比 zsb numeric 2) Yes 分类 Kind varchar 10 Yes 费用归类 feeType varchar 10 Yes 拼音码 PYM varchar 10 Yes 有效期 life varchar 20 Yes 上限 upNum varchar 10 Yes 下限 downNum varchar 10 Yes

表2.7门诊收费项目

宽度 10 10 10 50 是否为空 No Yes Yes Yes 门诊收费项目 ClinicalChargeItem 主键:sfID 列名(中文) 列名(英文) 数据类型 编号 名称 拼音码 费用 费用分类 病种分类 备注

宽度 20 20 20 (12, 2) 20 20 100 是否为空 sfID sfName sfPYM fee FeeType SickType note varchar varchar varchar numeric varchar varchar varchar No Yes Yes Yes Yes Yes Yes 6

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

2.1.4 物理设计

表2.8门诊挂号表

表2.9医生表

表3.0患者信息表

表3.1划价收费表

表3.2用户表

7

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

表3.3药品资料

表3.4门诊收费项目

2.2 程序设计

2.2.1 概要设计

在医院门诊收费系统中,门诊收费系统的设计分为8个模块,分别是用户,药品存库,药品入库,商品进货商,患者信息,药品资料,划价收费和门诊挂号。

8

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

系统功能模块设计:

医院门诊收费系统的设计与实现用户 药品存库 药品入库 商品进货商 患者信息 药品资料 划价收费 门诊挂号 系统功能描述:

本医院门诊收费系统主要实现9个功能,如下所述: 1.基本资料

用户对系统的一些基本资料进行增加、删除、修改及查询操作。基本资料包括:单位设置、规格设置、进货商设置、生产厂商设置、科室设置、医生设置。

2.检疗项目

用户对医院的检疗项目的内容进行随时更新,查询。 3.门诊挂号

门诊挂号的主要功能是门诊挂号、门诊划价、整理患者信息表和挂号查询。 4.药房管理

药房管理包括:药品入库管理、药品基本信息管理和门诊发药功能。对药品信息、入库信息及发药信息综合查询。

5.收费管理

对挂号患者就诊及购买药品收费,对收费项目和收费信息综合查询并及时更新。 6.用户管理

只有系统管理员才能有这个权限,用于设置此系统的用户、密码及其权限。 7.用户帮助

用户帮助的基本功能是给予用户基本的提示。 8.用户登录

9

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

为了系统安全,只有拥有权限的用户才可以利用此系统。所以在登录到系统主界面之前要通过登录系统来验证用户身份。

9.退出系统

退出界面,结束程序。

2.2.2 程序实现

登录窗体设计:

用户登录功能的实现

用户登录窗体显示时,用户可以输入用户名和密码,系统此时连接数据库“医院门诊收费系统”中的UserInfo表来校验输入用户,如果是系统管理员就可以进入主界面所拥有的所以的功能,如果是一般的用户则没有用户管理功能。如果输入的用户名或密码无法和数据库中对应则提示错误。为了引用项目医院门诊收费系统中数据层DataLevel和业务规则层BussinessRule 中的类和方法,在程序开始添加引用语句如下: using 门诊收费系统.DataLevel; using 门诊收费系统.BussinessRule;

在User类声明变量代码中添加私有string型变量usersort来记录登录用户类型,系统管理员是system,普通用户是user。代码如下:

private string usersort;

为了方便调用登录类并方便返回用户类别,可以创建一个公用函数GetUserSort,代码如下:

public string GetUserSort() {

10

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

return usersort; }

然后,为单击登录界面的“确定”按钮发出的事件添加代码如下: private void btnLog_Click(object sender, System.EventArgs e) {

string userid =txtUserName.Text.Trim(); string userpassword =txtPassWord.Text.Trim(); usersort=门诊收费系统.

BussinessRule.UserCheck.UserSortCheck(userid,userpassword); if(userid ==\{ MessageBox.Show(\请输入用户名和密码\} else{

if(userid ==\{

MessageBox.Show(\请输入用户名\}

else if (userpassword ==\{

MessageBox.Show(\请输入密码\}

else if(usersort==\{

this.Close(); } else {

MessageBox.Show(\用户名和密码不相符\}}}

从上段代码中可以看出,调用了业务规则层BussinessRule 里面的UserCheck类的

11

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

UserSortCheck静态方法来处理用户输入用户名和密码返回的用户类别。当是合法用户时则关闭登录窗口,否则请重新输入。本系统从建模是的MVC构架到代码都利用的层来规范和有效管理各个类。把UserSortCheck函数写到业务规则层里面的UserCheck 类中,在用户登录界面代码中只要一行代码就可以实现对UserCheck类的调用,代码简洁,而且各个层次、各个类代码都不长,易于维护扩充,同时分工更加清晰明确。 下面是UserCheck类的代码: using System; using System.Data;

using System.Data.SqlClient; using 门诊收费系统.DataLevel; namespace 门诊收费系统.BussinessRule {

public class UserCheck {

public static string UserSortCheck(string username,string userpassword) {

string txtSql;

string usersort=\

SqlConnection conn1 = new SqlConnection(门诊收费系统. DataLevel.Login.Connection); txtSql=\

SqlCommand checkuser=new SqlCommand(txtSql,conn1); Try {

conn1.Open();

sqlreader=checkuser.ExecuteReader(); while(sqlreader.Read())

{if((sqlreader[0].ToString().Trim()==username)&&(sqlreader[2].ToString().Trim()==userpassword)) {

12

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

usersort=sqlreader[3].ToString().Trim(); break; }}}

catch(Exception e) {

Console.WriteLine(e.ToString()); }

conn1.Close(); return usersort; }}}

从上述代码中可以看出,因为程序中要用到SqlConnection和SqlCommand等和数据库相关的类,所以首先为程序代码添加了System.Data和System.Data.SqlClient两个类库。然后在UserCheck类中创建了公用静态函数UserSortCheck来返回用户类别。在创建SqlConnection对象时利用了数据层DataLevel中的DatabaseConnection中connection静态公用属性。这就是本系统使用的第二种数据库连接方法,底层、具体和简洁。

上面是登录界面的介绍。

13

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

门诊挂号功能是本系统的核心功能之一,门诊挂号功能部分代码如下: using System;

using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data;

using System.Data.SqlClient; namespace 门诊收费系统 {

public class ClinicReg : System.Windows.Forms.Form {

private string regID,infoID; //保存门诊挂号编号和病人信息库编号 public ClinicReg() {

InitializeComponent(); }

private void ClinicReg_Load(object sender, System.EventArgs e) {

//生成新编号

this.regID=this.CreateNewID(\编号) 最大编号 from clinicReg\this.infoID=this.CreateNewID(\编号) 最大编号 from patientInfo\}

if(e.Button.ToolTipText==\保存\{

if(this.CheckNotNull()==false) { return;

14

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

}

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) {

15

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

第3章 课程设计总结

通过设计,基本上实现了工资管理系统的预计功能,并且还增加了一些新的功能和一些新的改进。

在本次设计中,我学到了很多知识,在技术方面,进一步掌握了PowerBuilder的各种编程方法及技巧,包括ADO与数据库的连接技术和datapicker、Toolbar等控件的使用方法。从而对PowerBuilder等面向对象编程语言的使用方法有了进一步的了解。同时,由于本软件使用的是SQL Server 2000数据库进行开发的。对它的使用环境和方法都有了进一步的了解。在非技术方面,得到了很多有关软件开发上的宝贵经验,了解到在软件开发过程,我们不仅需要具备扎实的专业知识,还需要具备团体合作精神,同时要能够快速掌握新的知识并能运用到实际编程中去。在软件开发过程中,要具备周密严谨的开发思想。

在以后的学习生活中,要不断学习新的知识,提高专业技能,以适应社会软件业的不断发展。

16

辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)

参考文献

[1] 郑阿齐,刘启芬等. SQL Server2000实用教程.北京:电子工业出版社, 2002:30-45 [2] 刘超,张莉编著.可视化面向对象建模技术.北京:北京航空航天大学出版社,2001:15-55 [3] 张海藩..软件工程(第四版).北京:清华大学出版社,2003:15-60

[4] 张奇,李律松,卫建伟等编著. 数据库项目案例导航.北京:清华大学出版社,2005:45-58 [5] 萨师煊,王珊.数据库系统概论(第三版).北京:高等教育出版社,2000:20-64 [6] 张海藩..软件工程(第四版).北京:清华大学出版社,2003:15-60 [7] [美]佩佐尔特. SQL Server程序设计.北京:机械工业出版社,2004:40-80 [8] 杨宏伟,李晶等. SQL Server程序员开发手册.北京:科学出版社, 2006:45-58 [9] 刘浩,陈曙东主编. SQL Server编程实例与技巧.北京:清华大学出版社,2002:56-71

17

本文来源:https://www.bwwdw.com/article/o2ww.html

Top