数据结构课程设计医院门诊收费系统的设计与实现Word文档下载推荐.docx
- 文档编号:21604387
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:19
- 大小:280.03KB
数据结构课程设计医院门诊收费系统的设计与实现Word文档下载推荐.docx
《数据结构课程设计医院门诊收费系统的设计与实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计医院门诊收费系统的设计与实现Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
4.PowerBuilder9.0完全实战
1.4课程设计内容及要求
一、内容
1.要求根据数据库原理,按照数据库系统设计的步骤和规范,完成各阶段的设计内容。
2.需求分析具体实际,数据流图、数据字典、关系模型要正确规范。
3.在SQLSever2000上实现设计的数据库模块。
4.对应用程序进行概要设计。
5.用PowerBuilder实现简单的调用。
二、要求
课程设计过程中,要严格遵守课程设计的时间安排,听从指导教师的指导。
正确地完成上述内容,规范完整地撰写出课程设计报告。
第2章课程设计内容
2.1数据库设计
2.1.1需求分析
需求分析就是描述系统的需求,通过定义系统中的关键类来建立模型。
分析的根本目的是开发者和提出需求的人之间建立一种理解和沟通的机制,因此,医院门诊收费系统的需求分析也应该是开发人员和用户一起完成的。
需求分析的第一步是描述门诊收费系统的功能,既定义用例,以此确定系统的功能需求。
需求分析是通过详细调查现实世界要处理的对象,充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定系统的功能。
系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。
2.1.2概念设计
用户信息E-R图:
药品库存E-R图:
药品入库E-R图:
药品进货商E-R图:
患者信息E-R图:
药品资料E-R图:
划价收费E-R图:
门诊挂号E-R图:
2.1.3逻辑设计
在这个数据库管理系统中要建立的数据表分别如下:
表2.1门诊挂号表
门诊挂号表clinicReg主键:
clinicRegID
列名(中文)
列名(英文)
数据类型
宽度
是否为空
编号
varchar
15
No
病人编号
patientID
Yes
姓名
Name
30
性别
Sex
2
挂号科室
clinicDep
费用类型
feeType
挂号类型
clinicType
挂号费用
clinicFee
decimal
(12,2)
医生
Dr
时间
DataTime
datatime
8
是否已划价
PriceYN
表2.2医生表
医生表ys主键:
ysid
医生号
3
医生名
ysmc
10
科室
ks
20
表2.3患者信息表
患者信息表patientInfo主键:
年龄
Age
int
民族
Nation
FeeType
电话
Tel
拼音码
PYM
5
表2.4划价收费表
划价收费表PriceDetail主键:
PriceDetailID
划价编号
PriceID
药品编号
MedID
单价
Medprice
numeric
(12,2)
数量
NUM
金额
TolPrice
表2.5用户表
用户表UserInfo主键:
userID
用户编号
用户名
userName
用户密码
userPassWord
权限
userRight
50
表2.6药品资料
药品资料MedInfo主键:
名称
规格
gg
整量单位
zlPrice
散量单位
slPrice
入库单价
rkPrice
续表2.6
出库单价
ckPrice
批发价
pfPrice
整散比
zsb
分类
Kind
费用归类
有效期
life
上限
upNum
下限
downNum
表2.7门诊收费项目
门诊收费项目ClinicalChargeItem主键:
sfID
sfName
sfPYM
费用
fee
费用分类
病种分类
SickType
备注
note
100
2.1.4物理设计
表2.8门诊挂号表
表2.9医生表
表3.0患者信息表
表3.1划价收费表
表3.2用户表
表3.3药品资料
表3.4门诊收费项目
2.2程序设计
2.2.1概要设计
在医院门诊收费系统中,门诊收费系统的设计分为8个模块,分别是用户,药品存库,药品入库,商品进货商,患者信息,药品资料,划价收费和门诊挂号。
系统功能模块设计:
系统功能描述:
本医院门诊收费系统主要实现9个功能,如下所述:
1.基本资料
用户对系统的一些基本资料进行增加、删除、修改及查询操作。
基本资料包括:
单位设置、规格设置、进货商设置、生产厂商设置、科室设置、医生设置。
2.检疗项目
用户对医院的检疗项目的内容进行随时更新,查询。
3.门诊挂号
门诊挂号的主要功能是门诊挂号、门诊划价、整理患者信息表和挂号查询。
4.药房管理
药房管理包括:
药品入库管理、药品基本信息管理和门诊发药功能。
对药品信息、入库信息及发药信息综合查询。
5.收费管理
对挂号患者就诊及购买药品收费,对收费项目和收费信息综合查询并及时更新。
6.用户管理
只有系统管理员才能有这个权限,用于设置此系统的用户、密码及其权限。
7.用户帮助
用户帮助的基本功能是给予用户基本的提示。
8.用户登录
为了系统安全,只有拥有权限的用户才可以利用此系统。
所以在登录到系统主界面之前要通过登录系统来验证用户身份。
9.退出系统
退出界面,结束程序。
2.2.2程序实现
登录窗体设计:
用户登录功能的实现
用户登录窗体显示时,用户可以输入用户名和密码,系统此时连接数据库“医院门诊收费系统”中的UserInfo表来校验输入用户,如果是系统管理员就可以进入主界面所拥有的所以的功能,如果是一般的用户则没有用户管理功能。
如果输入的用户名或密码无法和数据库中对应则提示错误。
为了引用项目医院门诊收费系统中数据层DataLevel和业务规则层BussinessRule中的类和方法,在程序开始添加引用语句如下:
using门诊收费系统.DataLevel;
using门诊收费系统.BussinessRule;
在User类声明变量代码中添加私有string型变量usersort来记录登录用户类型,系统管理员是system,普通用户是user。
代码如下:
privatestringusersort;
为了方便调用登录类并方便返回用户类别,可以创建一个公用函数GetUserSort,代码如下:
publicstringGetUserSort()
{
returnusersort;
}
然后,为单击登录界面的“确定”按钮发出的事件添加代码如下:
privatevoidbtnLog_Click(objectsender,System.EventArgse)
stringuserid=txtUserName.Text.Trim();
stringuserpassword=txtPassWord.Text.Trim();
usersort=门诊收费系统.BussinessRule.UserCheck.UserSortCheck(userid,userpassword);
if(userid=="
"
&
userpassword=="
)
{MessageBox.Show("
请输入用户名和密码"
);
else{
MessageBox.Show("
请输入用户名"
elseif(userpassword=="
请输入密码"
elseif(usersort=="
system"
|usersort=="
user"
this.Close();
}
else
用户名和密码不相符"
}}}
从上段代码中可以看出,调用了业务规则层BussinessRule里面的UserCheck类的UserSortCheck静态方法来处理用户输入用户名和密码返回的用户类别。
当是合法用户时则关闭登录窗口,否则请重新输入。
本系统从建模是的MVC构架到代码都利用的层来规范和有效管理各个类。
把UserSortCheck函数写到业务规则层里面的UserCheck
类中,在用户登录界面代码中只要一行代码就可以实现对UserCheck类的调用,代码简洁,而且各个层次、各个类代码都不长,易于维护扩充,同时分工更加清晰明确。
下面是UserCheck类的代码:
usingSystem;
usingSystem.Data;
usingSystem.Data.SqlClient;
namespace门诊收费系统.BussinessRule
publicclassUserCheck
publicstaticstringUserSortCheck(stringusername,stringuserpassword)
{
stringtxtSql;
stringusersort="
nobody"
;
SqlConnectionconn1=newSqlConnection(门诊收费系统.DataLevel.Login.Connection);
txtSql="
SELECT*FROM[UserInfo]"
SqlCommandcheckuser=newSqlCommand(txtSql,conn1);
Try
conn1.Open();
sqlreader=checkuser.ExecuteReader();
while(sqlreader.Read())
{if((sqlreader[0].ToString().Trim()==username)&
(sqlreader[2].ToString().Trim()==userpassword))
usersort=sqlreader[3].ToString().Trim();
break;
catch(Exceptione)
Console.WriteLine(e.ToString());
conn1.Close();
从上述代码中可以看出,因为程序中要用到SqlConnection和SqlCommand等和数据库相关的类,所以首先为程序代码添加了System.Data和System.Data.SqlClient两个类库。
然后在UserCheck类中创建了公用静态函数UserSortCheck来返回用户类别。
在创建SqlConnection对象时利用了数据层DataLevel中的DatabaseConnection中connection静态公用属性。
这就是本系统使用的第二种数据库连接方法,底层、具体和简洁。
上面是登录界面的介绍。
门诊挂号功能是本系统的核心功能之一,门诊挂号功能部分代码如下:
usingSystem.Drawing;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Windows.Forms;
namespace门诊收费系统
publicclassClinicReg:
System.Windows.Forms.Form
privatestringregID,infoID;
//保存门诊挂号编号和病人信息库编号
publicClinicReg()
InitializeComponent();
privatevoidClinicReg_Load(objectsender,System.EventArgse)
//生成新编号
this.regID=this.CreateNewID("
selectmax(编号)最大编号fromclinicReg"
this.infoID=this.CreateNewID("
selectmax(编号)最大编号frompatientInfo"
if(e.Button.ToolTipText=="
保存"
if(this.CheckNotNull()==false)
return;
this.SaveReg();
this.clearInfo();
取消"
退出"
privatevoidcmb6_DropDown(objectsender,System.EventArgse)
第3章课程设计总结
通过设计,基本上实现了工资管理系统的预计功能,并且还增加了一些新的功能和一些新的改进。
在本次设计中,我学到了很多知识,在技术方面,进一步掌握了PowerBuilder的各种编程方法及技巧,包括ADO与数据库的连接技术和datapicker、Toolbar等控件的使用方法。
从而对PowerBuilder等面向对象编程语言的使用方法有了进一步的了解。
同时,由于本软件使用的是SQLServer2000数据库进行开发的。
对它的使用环境和方法都有了进一步的了解。
在非技术方面,得到了很多有关软件开发上的宝贵经验,了解到在软件开发过程,我们不仅需要具备扎实的专业知识,还需要具备团体合作精神,同时要能够快速掌握新的知识并能运用到实际编程中去。
在软件开发过程中,要具备周密严谨的开发思想。
在以后的学习生活中,要不断学习新的知识,提高专业技能,以适应社会软件业的不断发展。
参考文献
[1]郑阿齐,刘启芬等.SQLServer2000实用教程.北京:
电子工业出版社,2002:
30-45
[2]刘超,张莉编著.可视化面向对象建模技术.北京:
北京航空航天大学出版社,2001:
15-55
[3]张海藩..软件工程(第四版).北京:
清华大学出版社,2003:
15-60
[4]张奇,李律松,卫建伟等编著.数据库项目案例导航.北京:
清华大学出版社,2005:
45-58
[5]萨师煊,王珊.数据库系统概论(第三版).北京:
高等教育出版社,2000:
20-64
[6]张海藩..软件工程(第四版).北京:
[7][美]佩佐尔特.SQLServer程序设计.北京:
机械工业出版社,2004:
40-80
[8]杨宏伟,李晶等.SQLServer程序员开发手册.北京:
科学出版社,2006:
[9]刘浩,陈曙东主编.SQLServer编程实例与技巧.北京:
清华大学出版社,2002:
56-71
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 医院 门诊 收费 系统 设计 实现