功能描述
医院挂号系统主要用于实现医院的挂号,前台基本功能包括:用户注册、用户登录、医院查询、挂号、取消挂号、修改个人信息、退出等。
后台基本功能包括:系统管理员登录、医院管理、科室管理、公告管理、退出系统等。
本系统结构如下:
(1)前台功能:
用户注册:注册功能;
用户登录:登录功能;
医院查询:选择医院、科室查询该医院下的医生信息
挂号:选择医生后点击挂号,填写信息完成挂号
管理中心:点击管理中心可以修改个人信息、取消挂号
(2)系统管理员:
登录模块:实现管理员登录功能;
医院管理模块:实现医院的增加、删除功能;
科室管理模块:实现科室的增加、删除功能;
公告管理模块:实现公告的增加、删除功能;
退出系统模块:实现用户的退出功能;
一、摘要
互联网技术迅速的发展给我们的生活带来很大的方便,同时也让许多行业迅速的发展起来。互联网技术已走向科技发展的巅峰期,我们要做的就是合理的使用互联网技术让我们的各个行业得到更快速的发展。
就医疗领域来说,如今看病难已成为我们生活中的一大难题,传统的医院挂号中,我们需要用手动方式来处理信息,这种方式需要我们的医护工作人员和管理人员花费大量的时间来处理事务性信息,不仅劳动强度大,而且浪费时间。患者长时间的排队等候不仅延误了患者病情,而且不利于医院秩序的维护。所以在这里我的论文对医院挂号系统的设计和实现进行了详细的描述与设计,专为解决挂号难,排队时间长的问题,通过此网站患者可以快速方便的找到自己所需挂号的科室信息,并进行在线预约挂号。对于此网站,采用的是较为成熟的SSH框架,主要包括了业务逻辑层、数据持久层,表示层,模块层四个层次,这些层次可以帮助开发人员对搭建结构,维护系统,框架重用等,也可以给开发人员提供一个清晰、易懂,简洁明了的设计思路,SSH框架可复用性好、维护方便,使系统更加好用,同时让系统的实施和维护更加方便。对于数据库设计我们采用了MySql数据库,由MySQL的发展已经很健壮、成熟,而且具有很好的安全性,操作简单,成为了开发数据库设计的首选。
医院挂号系统主要角色有:患者和系统管理员;患者可以对医院信息的查询、对医生信息查询、登录注册、预约挂号、取消挂号、更改个人信息等;管理员可以登录系统,更新数据库内医院信息、医生信息、医院公告,也可对个人信息进行修改。网页设计了相关的导航,对新用户进行全面的引导,使得用户使用更加方便,对用户注册登录和管理员登录进行了分离,防止用户和管理员登录冲突,总体测试结果显示,网站设计基本符合用户需求,能够达到用户满意度。
二、需求分析与设计
2.1 可行性分析
在技术上医院挂号系统使用的java语言,java语言简单易学。开发平台用的是myeclipse和mysql数据库。数据库作为系统设计的核心技术也是很容易学习操作,在大学期间主修的是软件工程专业所以本系统开发实现在技术上是可行的。
经济上本系统无需安装任何软件,只要在可以访问Internet的环境下,在客户浏览器端输入网址即可访问,所以经济上是可行的。
法律上本系统使用的都是开源的代码,且不存在侵权等问题所以法律上是可行的。
2.2 需求分析
2.2.1 概述
需求分析是指通过开发者和用户的沟通来成系统应该做什么,并且评估出软件的资金使用和可能存在的风险,是整个系统实现的关键一步。
就本系统而言,文献[3]医院挂号系统有很大的用户需求,由于目前来看有很大一部分医院任然使用的是人工挂号的方式来排队挂号,给医院的就诊以及病人就医带来很大的困扰,由于需要人工处理以及长时间的排队,人员流通性和不确定性从而引发了就医的高峰和低谷,在高峰期人多导致医生脾气暴躁,就医时间短,不仔细等问题,甚至存在一些医生走关系的不良现象;而低谷时期排队的人少,导致专家无所事事,医院资源浪费等;通过医院挂号系统,我们可以很快地解决这些问题,可以减轻医护人员对信息管理的负担,同时减少了患者不必要的等待,以及时间的浪费,同时有利于医院治安管理提高医院的管理,提高医院的效益。
医院挂号系统是指患者可以通过访问网站的方式来预约看病的系统。其意义在于方便患者就医,提高医院医生资源的利用率,提高医疗服务水平等;他的使用将会给医疗界带来新的革命。对所有医院施行预约挂号系统服务后不仅患者进行就医咨询变得很是方便,而且对意愿来讲,能够合理的分配医院的医生资源且不浪费,从侧面看,极大的提升了医院的管理水平,还可以很大程度的提高医生工作效率,解决看病问题,便利民生问题的同时还带来了经济上的发展。
在我们国家也有很多医院已使用了在线挂号系统;文献[4]中说明,从使用情况分析,我们对系统的管理方面还存在很大的弊端,比如有个人或者团体通过此种方式来谋取暴力;导致,医院预约挂号系统服务没有的到正真的合理使用,这样没有给病人就诊带来方便、没有给医院带来方便,还被很多病人和医院管理者,医护人员反感抵制。
所以,对每一次系统的实施,我们需要办法一些相关的规章制度,约束这些不合理的使用现象。不仅要正确的让医院开展预约挂号系统的实施,而且要文明绿色的实行这些工作的计划;全面提高人们对预约挂号服务工作的认识、全面加强对预约挂号服务工作的管理计划、认真搞好相关组织工作的内容;一切都要坚持本方便群众就医,搞好医疗事业建设,合理的运用前沿技术来服务农民,发展社会。
2.2.2挂号用户
1、网上预约挂号
要实现较好的网站设计,首先这个网站必须具有良好的稳定性和较高的安全性,对开发的后期来说要易于维护;对网站首页的设计要有基本的菜单导航设计来引导新用户的正确操作,方便患者的使用。
对于医院的信息设计部分;经过对不同科室的信息进行细致的分类方便用户对照自己的症状合理,正确的来挂号;对不同医院的专家信息进行分类,专家情况信息介绍要详细全面,防止患者对信息理解错误挂号错误的现象发生,进而让用户能作出正确选择;用户通过查看专家信息,选择专家,选择挂号日期;实名填写个人信息、家庭住址、联系方式等信息成功的实现网上预约挂号。
(1)挂号示意图
(2)挂号方式
患者通过在浏览器端输入网址进入预约挂号系统的首页,查询医院医生信息,点击预约挂号,填写个人信息,实现网上成功预约之后,根据自己的预约信息去医院就诊。
2.2.3预约须知
对在线医院预约挂号系统的总体说明主要有一下几点:愉悦着要提前看网站对挂号者预约所注意事项、以及预约挂号人的权利和义务,权责声明、对于自己不清楚的地方要及时的查看系统使用帮助。
进入网上预约挂号的平台后,根据自己所在地区选择需要挂号的医院。进入医院网站首页,初次登陆系统预约的用户,需要先注册才能登陆系统进行操作挂号;如果是复诊输入用户名和密码,即可登陆系统。系统可以自动核对登陆者的信息,登陆成功后,可进入预约挂号程序。
需求分析种我们会发现,医院预约挂号系统中需要管理的信息主要有以下几种:
1.医生:姓名、性别、科别、擅长、年龄、就诊时间
2.挂号单:科别、挂号单号、编号、费用
3.病人:姓名、性别、年龄、联系方式、症状、挂号单号
对于单号的处理部分,一张挂号单只可以对应一个医生;一个医生可以有多张挂号单,但是日期时间不能冲突,一张单号也只能对应一个病人,一个病人在同一时间只可以预约一张单号、一个患者可以选择多个医生,一个医生可以看多个病人。
2.3 开发环境
医院挂号系统采用的是Myeclipse软件开发平台,mysql数据库以及SSH框架技术,开发环境为windows xp 系统用户无需安装任何软件,只需在浏览器端输入网址即可使用,使用非常方便,对开发人员的维护工作也很方便。
三、系统分析与设计
3.1 系统概述
系统设计是继需求分析之后的重要一步,目的是根据对用户的需求分析将其逻辑方案转换成物理方案。同时要注意系统设计的内外环境以及主观条件和客观条件,未来确保系统总体目标的实现,我们要考虑到经济,技术各方面的条件,来做出合理的技术方案,选择出合适的设计平台以及开发环境。系统设计要坚持阶段性开发原则对不同的阶段设计出不同的实现功能;其次要本着为客户服务的原则,尽可能的坚强客户使用的难度,同事要坚强管理人员的负担,尽量使用自动化的处理方式来处理数据,以及要具有良好的设计体验;对用户的需求变更要及时的处理,同时,最重要的是实现系统的可扩展性,减少各个模块的耦合性,使系统便于扩展与维护;系统设计中很多工作是有技术性的,再设计过程中要考虑到用户需求的变更,是系统设计完成的一个必要阶段。
3.2 系统功能
系统功能主要是实现患者在线预约挂号,对网站来讲,我们将其分为前台功能和后台功能两个模块。
系统前台功能图如下(图)3-1所示,我们又将前台功能细分为三大块功能,分别是:信息展示模块、系统应用模块、用户模块。
(1)信息展示:展示出专家的信息,医院信息等;
(2)系统使用:完成登录注册等功能;
(3)用户 :登录,查询、预约挂号等。
系统后台功能图如(图)3-2所示:
我们对后台模块功能分析如下:
(1)修改密码:用户、管理员对自己的个人密码进行修改操作;
(2)系统公告的管理:管理员来实现医院公告的管理;
(3)专家信息管理:对专家信息进行添加和删除等操作;
(4)注册用户管理:对用户的个人信息进行管理;
(5)医院信息管理:对医院的信息进行添加和删除等操作。
3.3用例图
3.3.1 会员用例图:
用户可以:在线注册会员,在线查询医生信息,在线预约挂号等。
3.4 流程图
用户可以在网站的主页看到信息查询的按钮并对想要查找的信息进行填写,然后根据查询结果进行预约挂号填写个人信息,同时如果不想预约,可以进行取消预约的操作。
管理员在系统首页的“系统管理员登录”出输入自己的账号和密码进行登录,然后进入管理员界面,可以对医院的信息以及医生的信息进行添加和删除操作;同时也可以管理用户的信息。
四、数据库分析
表说明
主要的数据表有db_guahao表,此表又包含t_gonggao系统公告,t_zhuanjia 专家信息,t_guahao医院信息;,t_yiyuan医院信息管理系统,t_use注册用户的信息;r,t_admin管理员信息;t_keshi科室信息表等。
4.1.2 表结构说明
(1)系统公告表:对医院公告的存储。
表4-1 系统公告表
字段名 数据类型 长度 主键否 描述
id int 4 是 自动编号
biaoti varchar 50 否 公告标题
neirong shijian 50 否 公告内容
shijian shijian 50 否 发布时间
(2)医生信息表:对医生信息进行存储。有姓名,年龄,类型,擅长等字段。
表4-2 医生信息表
字段名 数据类型 长度 主键否 描述
id int 4 自动编号
xingming varchar 4 是 姓名
xingbie varchar 50 否 性别
nianling int 4 否 年龄
Leixing varchar 50 否 类型
shanchang varchar 50 否 擅长
fujian varchar 50 否 照片
(3)挂号信息表:主要存储挂号人信息,挂号医院的信息,挂号时间等。
表4-3挂号信息表
字段名 数据类型 长度 主键否 描述
id int 4 是 自动编号
userId int 50 否 会员ID
zhuanjiaId int 50 否 专家ID
riqi varchar 50 否 挂号日期
jibing varchar 50 否 所患疾病
xingming varchar 50 真实姓名
lianxi varchar 50 联系方式
(4)医院信息表:对医院的信息进行存储,主要有医院的名称,医院地址,医
院联系电话等。
表4-4 医院信息表
字段名 数据类型 长度 主键否 描述
id int 4 是 自动编号
mingcheng varchar 50 否 医院名称
dizhi varchar 50 否 地址
dianhua varchar 50 否 联系方式
(5)用户信息表:主要存储用户的登录账户,账户密码,姓名,年龄等。
表4-5用户信息表
字段名 数据类型 长度 主键否 描述
user_id int 4 是 自动编号
user_name int 50 否 登录账号
user_pw varchar 50 否 登录密码
user_realname varchar 50 否 姓名
user_sex varchar 50 否 性别
user_address varchar 50 否 地址
user_tel varchar 50 否 联系电话
(6)管理员信息表:对管理员的个人信息进行存储,主要包括管理员账户,账户密码等。
表4-6 管理员信息表
字段名 数据类型 长度 主键否 描述
id int 4 是 自动编号
userName varchar 50 否 登录账号
userPw varchar 50 否 登录密码
五、系统的实现
5.1网站首页设计
网站设计的首页设计是至关重要。因为第一个映入用户眼睑的就是网站的首页,它的好坏直接影响了用户对网站的喜爱程度;在对首页设计上我们要内容丰富的同时又要有一定的色彩搭配以及上下呼应等特色,以下是本网站的首页:
5.2 网站引导设计
网站的导航视为了使用户使用更加方便灵活,能使网站有一个较好的用户体验,提高用户的满意度,他是网站的路标,可以提示用户如何操作,就像字典查询需要目录一样,网站设计也需要这样的“目录”,从而让用户更加明确的知道下一步该如何操作,以及自己所处的位置;网站导航主要可以通过文字导航、按钮导航、Flash导航等,本网站的导航设置如下图所示:
5.3医生信息模块
本网站的主要功能是患者挂号功能,刚进入网站用户需要对自己的病情进行分析以及查询相关的医生才能更准确的完成预约挂号,所以医生信息也是网站设计的一个重要元素,专家展示模块主要包括显示医生列表、显示医生详细信息两个部分。
患者点击相关的医院便会出现该医院的相应专家信息如图所示:
该页面的设计代码如下:
zhuanjiaAllByYiyuan:主要是通过数据库查询获取相关信息然后通过JSP页面传递给用户:
public String zhuanjiaAllByYiyuan()
{
String sql="from TZhuanjia where del='no' and yiyuanId="+yiyuanId;
List zhuanjiaList =zhuanjiaDAO.getHibernateTemplate().find(sql);
for(int i=0;i<zhuanjiaList.size();i++)
{
TZhuanjia zhuanjia=(TZhuanjia)zhuanjiaList.get(i);
zhuanjia.setKeshi(keshiDAO.findById(zhuanjia.getKeshiId()));
zhuanjia.setYiyuan(yiyuanDAO.findById(zhuanjia.getYiyuanId()));
}
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("zhuanjiaList", zhuanjiaList);
return ActionSupport.SUCCESS;
}
public String zhuanjiaDetailQian()
{
TZhuanjia zhuanjia=zhuanjiaDAO.findById(id);
zhuanjia.setKeshi(keshiDAO.findById(zhuanjia.getKeshiId()));
zhuanjia.setYiyuan(yiyuanDAO.findById(zhuanjia.getYiyuanId()));
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("zhuanjia", zhuanjia);
return ActionSupport.SUCCESS;
}
5.4 用户注册挂号模块
用户查看相应的医生信息后可以对自己喜欢的医生进行预约,点击预约挂号按钮后会出现挂号注册页面,如下图所示:
用户可以在相应的位置填写所患疾病,姓名,联系方式,和选择挂号日期来完成挂号。
5.5 管理员登录页面
管理员在网站里的主要作用是对患者挂号信息,医生信息,医院信息等进行管理,所以需要单独的来设计一个界面与用户区分开来,用户的登录界面在网站首页右侧,而管理员可以在网站首页下方找到管理员登录的图标,点击即可进入管理员登录的界面,登录界面中登录进入后才可以对网站信息进行修改管理等。管理员在网站的下方点击管理员登录按钮,输入自己的账号,密码进行校验后即可进入管理员登录界面,如下图所示:
对管理员进行校验的代码:
public String login(String userName,String userPw,int userType)
{
try
{
Thread.sleep(700);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
String result="no";
if(userType==0)//系统管理员登陆
{
String sql="from TAdmin where userName=? and userPw=?";
Object[] con={userName,userPw};
List adminList=adminDAO.getHibernateTemplate().find(sql,con);
if(adminList.size()==0)
{
result="no";
}
else
{
WebContext ctx = WebContextFactory.get();
HttpSession session=ctx.getSession();
TAdmin admin=(TAdmin)adminList.get(0);
session.setAttribute("userType", 0);
session.setAttribute("admin", admin);
result="yes";
}
}
return result;
}
校验成功后可进入管理员主页面如图所示:
管理员在这个页面能对自己密码修改,可以对医院的信息,医生信息,会员信息进行增加删除等,完成相应的操作后即可点击注销退出系统来退出管理员页面。
5.6 医生信息管理模块
医生信息管理是需要系统管理员来完成的,主要是让系统管理员对医生信息及时的更新,在上一步的页面中点击医生信息管理,即可实现对医生信息的添加,修改,删除等操作,界面如下图所示:
当点击左下方“添加医院按钮”时会出现如下界面:
医生信息处理模块的代码主要有:
zhuanjiaAction:
public String zhuanjiaAdd()
{
TZhuanjia zhuanjia=new TZhuanjia();
//zhuanjia.setId(0);]
zhuanjia.setYiyuanId(yiyuanId);
zhuanjia.setKeshiId(keshiId);
zhuanjia.setXingming(xingming);
zhuanjia.setXingbie(xingbie);
zhuanjia.setNianling(nianling);
zhuanjia.setShanchang(shanchang);
zhuanjia.setLeixing(leixing);
zhuanjia.setFujian(fujian);
zhuanjia.setDel("no");
zhuanjiaDAO.save(zhuanjia);
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("msg", "信息添加完毕");
return "msg";
}
public String zhuanjiaMana()
{
String sql="from TZhuanjia where del='no' order by yiyuanId,keshiId";
List zhuanjiaList =zhuanjiaDAO.getHibernateTemplate().find(sql);
for(int i=0;i<zhuanjiaList.size();i++)
{
TZhuanjia zhuanjia=(TZhuanjia)zhuanjiaList.get(i);
zhuanjia.setKeshi(keshiDAO.findById(zhuanjia.getKeshiId()));
zhuanjia.setYiyuan(yiyuanDAO.findById(zhuanjia.getYiyuanId()));
}
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("zhuanjiaList", zhuanjiaList);
return ActionSupport.SUCCESS;
}
public String zhuanjiaDel()
{
String sql="update TZhuanjia set del='yes' where id="+id;
zhuanjiaDAO.getHibernateTemplate().bulkUpdate(sql);
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("msg", "信息删除完毕");
return "msg";
}
六、联系与交流
q:969060742 完整代码、sql、报告、辅导视频