admin管理员组文章数量:1530246
Java语言程序设计 :医院简易挂号管理系统 Java实验
1、课程设计目的
医院预约挂号管理系统是每一个医疗机构管理平常挂号业务流程不可或缺的一个管理信息系统,它的存在解决了病人挂号难、看病难等问题,所以医院预约挂号管理系统应该能够为每一个需要看病的患者提供充足的信息和快捷的查询手段,大大的方便了求医困难的广大人民群众。医院预约挂号管理是现代化医院的核心环节之一,它在整个医院管理中占有越来越重要的地位。从前,医院预约与查询管理都非常的耗时耗力,同时由于采用手工操作,查询和统计的方式各不相同,不可避免造成一些错记漏记的错误。
因此,开发这样一套医院预约挂号管理软件成为很有必要的事情,对于我们这些即将毕业的计算机专业学生来说,也是一次将专业知识应用于现实的很有意义的实践活动。实践课程设计是实践性教学环节之一,是计算机科学与技术专业课程的辅助教学课程。通过课程设计,将所学的程序设计语言、数据结构、数据库、软件工程等课程内容相融合,实现了医疗挂号功能的网页代码,提高学生在项目开发过程中的动手能力和技术运用能力,锻炼学生实际解决问题的能力,掌握软件项目开发的一般过程。
2、课程设计正文
2.1背景及意义
主要描述:随着经济、社会和科技的快速发展,计算机在不同的领域均有所涉猎。人们使用计算机进行现代化的企业管理成为主要趋势,并把它当做企业日常工作中日益重要的角色。近年来,国家对医疗保障制度推陈出新,人们的生活水平有了很大的改善,并且对自身身体健康日益重视,但“看病难”依然是一大难题。在传统的医院管理中,存在着门诊挂号人数较多,排队消耗时间长,效率低,专家号数量较少,存在黄牛现象,对社会造成一定的影响,不仅存在费时、低效、差错率高等问题,还存在医生、护士、管理者不能充分发挥自己的才能等问题。基于以上情况,为了快速地为患者提供挂号渠道、医生更高效地为患者服务、降低医院管理的成本、削减人力物力的浪费,亟需开发医疗挂号系统来适应人们的需求。
医院挂号系统利用计算机技术和流行的互联网+技术共享医院信息,如医院的科室种类,医师力量,专家门诊等信息,系统数据库负责保存这些信息,并为授权人员提供相关权限,便于患者更好挂号就医。
基于javaWeb医疗管理系统的开发与实现是以Java Web技术为基础;开发工具 SpringToolSuit4为载体;MySQL为数据库的一个医疗管理系统。该系统通过计算机相应的操作来完成患者医疗挂号的功能。该系统界面操作简单,清晰明了,极大地提高了医院处理业务地速度,减少因人为出现的错误。该医疗挂号系统通过键盘输入,链接数据库,进行登录、预约对应医生与就诊时间,最终完成挂号的功能。
2.2研究内容
要实现较好的网站设计,首先这个网站必须具有良好的稳定性和较高的安全性,简洁明了易操作,对开发的后期来说要易于维护;对网站首页的设计要有基本的菜单导航设计来引导患者的正确操作,方便患者的使用。对于医院的信息设计部分;经过对不同科室的医生信息进行细致的分类方便用户对照自己的症状合理,正确的来挂号,防止患者对信息理解错误挂号错误的现象发生,进而让用户能作出正确选择;用户通过查看医生信息,选择专家,选择挂号日期;填写个人信息、预约治疗医生,选择治疗时间等信息成功的实现网上预约挂号。
2.3开发环境及开发工具简介
为了实现医疗挂号系统的功能,则系统总共分为三个大模块,登陆、医生、病人等。有三个界面,三个controller,一个main界面。系统启动后第一个启动的界面是登陆界面,对编辑框进行非空检查,用户选择身份并点击确认以后,信息和数据库信息进行匹配,匹配成功后,即可登录。如果,信息不匹配,则进行提示所输入的密码或账号错误,继续等待用户输入,直至登陆成功。程序需要安装tomcat服务器,并且在Hbuilderx、Sqlyog和java(Springtoolsuite)的开发平台完成相关操作。
2.3.1HBuilderX介绍
HBuilderX,H是HTML的首字母,Builder是构造者,X是HBuilder的下一代版本。我们也简称HX。HX是轻如编辑器、强如IDE的合体版本。
1、轻巧:仅10余M的绿色发行包(不含插件)
2、极速:不管是启动速度、大文档打开速度、编码提示,都极速响应
3、C++的架构性能远超Java或Electron架构
4、小程序支持:国外开发工具没有对中国的小程序开发优化,HX可小程序、快应用等项目,为国人提供更高效工具。
2.3.2 MySql数据库介绍、SQLyog介绍
MySQL数据库作为一种开源的关系型数据库,在目前是使用最广泛,最受欢迎的一种数据库,MySQL是由MySQL AB公司进行开发的但是后来最后被Sun公司收购了,目前已经成为了IBM的一个项目。
MySQL的发展已经很健壮、成熟,SQL数据库。通过维护一个线程池,MySQL可以提供高并发、稳定可靠的数据存储和查询服务。在世界范围内,各大互联网公司有着非常广泛的使用。
MySQL在开发人员眼中就像是一种数据库管理系统的角色。MySQL数据库可以对所有的东西结构化,我们可以认为它是一种数据的结构化的集合。可以访问,也可以更新数据到数据库,或对访问,对于已经修改过的数据还可以再次修改保存等,MySQL服务器可以用来对即将要使用的数据进行全面的处理。计算机对于我们来说本来就是用来处理数据的对象,所以数据库管理系统MySQL数据库的实现是计算机不可或缺的组成部分。
SQLyog是连接数据库的第三方工具,易于操作,轻松方便管理数据库。
SQLyog是一个易于使用的、快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库。
SQLyog功能:
1、快速备份和恢复数据;
2、支持客户端挑选、过滤数据;
3、批量执行很大的SQL脚本文件;
4、以直观的表格界面建立或编辑数据表;
5、以直观的表格界面编辑数据;
6、进行索引管理;
7、创建或删除数据库;
8、操纵数据库的各种权限:库、表、字段;
9、支持对数据表的各种高级属性的修改。
2.3.3 Springtoolsuite介绍
Spring Tools4是一个集成了STS(Spring Tool Suite)插件的Eclipse, 所以下载安装Spring Tools4之后就不需要再使用Eclipse。
Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。Spring为企业级Java开发提供了一种相对简单的方法,通过控制反转IOC和面向切面编程AOP,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。
SpringBoot的特点
①、基于Spring的开发提供更快的入门体验
②、开箱即用,没有代码生成,也无需XML配置。也支持修改默认配置
③、提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等
2.4 系统功能设计
医疗挂号系统主要是有登录、主菜单门诊预约挂号界面、子菜单预约挂号须知、进行挂号预约、最终确定预约信息、完成预约挂号五大模块组成。
(1)登录模块,主要包括登录界面、用户输入、编辑框判断非空、跳转对应界面等功能。则设计了系统登录界面,包括用户名、密码,然后对登录进来的用户在数据库中验证,判断是否登录成功。
(2)主菜单门诊预约挂号界面
(3)子菜单预约挂号须知:用于提醒用户进行预约操作的说明
(4)进行挂号预约:从键盘输入,合理选择主治医师以及预约时间
(5)最终确定预约信息:不管是从键盘动态输入还是数据库中已有的系统用户,包括治疗用户的添加、删除、修改、查询,修改用户的登录密码,新添加的用户从而可以登录系统。
(6)完成预约挂号:完成以上操作后可以查看完整挂号信息。
图1 医疗挂号系统总体流程图
2.5预约挂号功能的设计与实现
在com.guahao.system.controller包中定义了GuahaoController类、LoginController类、OrderListController类;在com.guahao.system.dao包中定义了BaseDao类 、OrderDao类、UserDao类;在com.guahao.system.pojo包中定义了Order类。使用HBuiderX平台,增加可视化界面,在guahao.html中先进入window主页面,选择登录,填写用户名和密码,在tb_user中查找到账户和密码,选择登录,完成后跳转到挂号界面,此时可通过鼠标点击或输入所治疗的医生姓名和挂号时间完成预约功能。
2.5.1登录功能设计与实现
病人预约流程图,首先启动预约主界面,输入对应的账号和密码,账号和密码在数据库中对登录进来的用户在数据库中验证,判断是否登录成功。首先在HBuiderx中构建guahao.html 文件,增加登录界面在GuahahoController.java中响应用户请求,决定使用对应的视图,在浏览器中通过 HTTP 协议与 web 服务器交换信息根据需要准备对应的数据用来显示。
图2病人预约流程图
2.5.2预约挂号功能设计与实现
完成第一个登陆界面后,进入病人预约挂号系统,在三个子页面中依次浏览完成相关操作,在User.system.dao DAO 将数据库操作都封装起来。提供面向对象的数据访问接口。从而达到完全感觉不到数据库表的存在,分工明确,这符合单一职能原则,降低了藕合性,提高了可复用性。
图3 完成挂号流程图
2.6 项目挂号功能模块测试
2.6.1 用户登录功能测试
用户进入登陆界面,输入账号和密码,若与数据库中数据一致,即可以成功登录,进入主菜单页面。若不一致,则需要重新输入正确的账号和密码。
2.6.2 预约挂号功能测试
医疗挂号系统拥有预约挂号须知,进行挂号预约的功能,选择预约医生姓名以及就诊时间的功能,门诊预约挂号系统主菜单如图所示。
2.7集成测试
门诊预约挂号系统,最终测试结果如下,从数据库获取静态数据获取挂号信息也可以从键盘动态获取数据完成挂号并返回数据。
3、课程设计总结
课程设计其实就是简单的毕业设计,经过这次课设,给予我们实践的机会使我积累了必须的经验,为以后的学习打了基础,也为毕业设计铺平了道路。经过这次的课程设计,具体的收获与体会如下:
一、经过课程设计,培养了我耐心、仔细、谨慎的工作态度。这次课程设计的资料最多的是编写代码和页面设计。在页面设计中,具体的尺寸数据的选定以及合理的布图都要有细致的规划,这是最考验一个人的耐心与严谨态度的过程,仅有这样才能使绘制的页面简图更准确、更美观。
二、使我学会了很多东西,包括书本上的理论知识及书本上学不到的知识。
经过课程设计,使我加深了对所学理论知识的理解与巩固,并能将课本上的纯理论应用到进一步加深了对知识的认识。同时,也有助于对其他知识的理解。此刻,我不但对Java这门课有了更深入的理解,并且更加了解页面前端的设计思想。
三、经过这次课程设计,使我更充分认识了团队合作的重要性。由于这次课设是以小组为单位,每个人都有分工。所以在进行分析的过程中每个成员都要保证自我运行数据的准确,查找资料时都要有耐心,这样才能确保小组顺利完成任务。在这次课设过程中,我们小小组成员之间都互帮互助、共同思考,相互查漏补缺,互相给予信心,这样得以保证高速、高效率的完成任务,充分体现了团队精神。
代码如下:
一、HTML中的:
1、guahao.html
HBuiderX界面如下:
运行界面如图:
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>医疗挂号系统</title>
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
</head>
<body>
<!--头部块-->
<div
style="height: 40px; margin-left: 610px; margin-top: 20px; line-height: 1.1;">欢迎使用医疗挂号系统</div>
<!--中部块-->
<div style="height: 600px; background-image: url(images/dating.jpg);">
<div
style="width: 490px; height: 290px; background-color: white; margin-left: 36%; float: left; margin-top: 130px; font-size: 24px;">
<div
style="color: black; margin-left: 30%; font-size: 65px; margin-left: 20%;">登录界面</div>
<div style="margin-left: 30%; height: 40px; margin-top: 5%;">
<input type="text" placeholder="编号:"
style="font-size: 30px; margin-left: -18%;" id="username" />
</div>
<div
style="margin-left: 30%; height: 40px; margin-top: 5%; font-size: 30px;">
<input type="password" placeholder="密码:"
style="font-size: 30px; margin-left: -18%;" id="pwd" />
</div>
<div style="margin-left: 31%; height: auto;">
<input type="button" value="登录"
style="font-size: 41px; line-height: 1.3; letter-spacing: 0.6em;"
onclick="clickLogin()" />
</div>
</div>
</div>
<!--脚部块-->
<div style="background-color: white">a</div>
</body>
<script type="text/javascript">
function clickLogin() {
var username = $("#username").val();
var pwd = $("#pwd").val();
$.ajax({
type : "get",
url : "login.do",
data : {
"username" : username,
"pwd" : pwd
},
success : function(res) {
if (res == "OK") {
window.location.href = "index.html";
} else {
alert("用户名密码错误");
}
}
});
}
</script>
</html>
2、 index.html
运行界面图:
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>医疗挂号系统</title>
</head>
<body>
<div style="width: 1500px;background-color: lightyellow;">
<h1 style="color: black;margin-left:480px;">门诊挂号预约</h1>
</div>
<div style="height: 700px;">
<div style="display: inline-block; height: 700px; width: 150px; background-color: lightyellow; float:left">
<div onclick="changeInner('Hint.html')" style="width: 100%; height: 60px; float: left; color: black; font-size:20px; ">
>网上预约挂号须知
</div>
<div onclick="changeInner('addorder.html')" style="width: 100%; height: 60px; float: left; color: black; font-size: 20px;">
>完成挂号预约
</div>
<div onclick="changeInner('list.html')" style="width: 100%; height: 60px; float: left; color: black; font-size: 20px;">
>确定预约信息
</div>
</div>
<div >
<iframe id="inner" style="width:1200px; height:700px"></iframe>
</div>
</div>
</body>
<script>
function changeInner(target) {
var inner = document.getElementById("inner");
inner.setAttribute("src",target);
}
</script>
</html>
3、Hint.html
运行界面图:
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div style="width: 100%; height: 60px;">
<h4>
1.就诊时请携带医保卡/本院诊疗卡/电子诊疗卡/身份证。<br>
2.预约患者在预约当日按约定时间提前15-30分钟(产科患者需提前30分钟)到达预约科室或自助机上取号,超过30分钟未取号视为爽约1次。<br>
3.预约患者请按预约时段内签到顺序就诊,因故需取消预约,需在预约就诊日期零点前取消(可自行在本院公众号/官网/致电88776310取消)不计入爽约。累计3次爽约者,取消1个月内预约资格。所有预约患者爽约数据在每年度3月和9月的1号凌晨清零重新计算。<br>
4.网上预约号源一般提前一周放号,部分专家开放了中长期预约可提前3个月进行预约,所有号源于就诊前一小时截止预约。<br>
5.如预约医生因特殊原因当日不能出诊时,医院会有短信或微信提醒通知,请预约者留意预约时填写准确的联系方式。<br>
6.预约就诊当日签到后如预约医师因手术、紧急会诊等不可抗因素突然短暂离开岗位不能按时就诊时,请留意分诊护士的分诊指引,及时了解就诊等候信息。<br>
7.如果有相关疑问,可于工作日08:00-12:00,14:00-17:00拨打0760-88776310咨询。<br>
</h4>
</body>
</html>
``
4、addorder.html
运行界面图:
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
</head>
<body>
<div >
<h1>挂号</h1>
</div>
<div>
<table>
<tbody>
<tr><td>医生:</td> <td><input type="text" id="doctor" /></td></tr>
<tr><td>就医人:</td> <td><input type="text" id="patient" /></td></tr>
<tr><td>时间:</td> <td><input type="text" id="time" /></td></tr>
</tbody>
</table>
<input type="button" value="挂号" onclick="addOrder()">
</div>
</body>
<script type="text/javascript">
function addOrder() {
var doctor = $("#doctor").val();
var patient= $("#patient").val();
var time= $("#time").val();
$.ajax({
type:"get",
url:"guahao.do",
data: {"doctor":doctor, "patient":patient, "time":time},
success:function(res) {
if(res == "ok") {
window.location.href="list.html";
}
}
})
}
</script>
</html>
5、list.html
运行界面图:
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
</head>
<body>
<div style="width: 100%; height: 60px;">
<h1>挂号列表</h1>
</div>
<div style=" width: 100%; height: 600px;">
<table style="width: 80%; margin-left: 5%;">
<thead style="width: 100%;">
<tr style="background-color: azure;">
<td>编号</td>
<td>医生姓名</td>
<td>就医人</td>
<td>就诊时间</td>
</tr>
</thead>
<tbody id="content">
</tbody>
</table>
</div>
</body>
<script type="text/javascript">
$.ajax({
type:"get",
url:"list.do",
success: function(res) {
var dat = $.parseJSON(res);
var c = $("#content");
var content = "";
for(var i = 0; i < dat.length; i++) {
content += "<tr>"
+"<td>"+dat[i].id+"</td>"
+"<td>"+dat[i].doctor+"</td>"
+"<td>"+dat[i].patient+"</td>"
+"<td>"+dat[i].time+"</td>"
+"</tr>";
}
c.html(content);
}
})
</script>
</html>
二、Java代码在Springtoolsuite中的:
整体预览如下图
①com.guahao.system.controller 包中的
1、GuahaoController.java
package com.guahao.system.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.guahao.system.dao.OrderDao;
@WebServlet("/guahao.do")
public class GuahaoController extends HttpServlet {
OrderDao dao = new OrderDao();
@Override
protected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException {
String doctor = req.getParameter("doctor");
String patient = req.getParameter("patient");
String time=req.getParameter("time");
dao.addOrder(doctor, patient, time);
resp.getWriter().print("OK");
}
}
/*
* Controller控制器,是MVC中的部分C,控制器主要负责功能处理部分:
1、收集、验证请求参数并绑定到命令对象;
2、将命令对象交给业务对象,由业务对象处理并返回模型数据;
3、返回ModelAndView(Model部分是业务对象返回的模型数据,视图部分为逻辑视图名。
* */
2、LoginController.java
package com.guahao.system.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.guahao.system.dao.UserDao;
@WebServlet("/login.do")
public class LoginController extends HttpServlet{
UserDao dao=new UserDao();
@Override
protected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException {
String username=req.getParameter("username");
String pwd=req.getParameter("pwd");
boolean flag=dao.getUser(username,pwd);
if(flag) {
resp.getWriter().print("OK");
}else{
resp.getWriter().print("error");
}
}
}
3、OrderListController.java
package com.guahao.system.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
import com.guahao.system.dao.OrderDao;
import com.guahao.system.pojo.Order;
@WebServlet("/list.do")
public class OrderListController extends HttpServlet {
OrderDao dao =new OrderDao();
@Override
protected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException {
resp.setContentType("text/html; charset=UTF8");
List<Order> list=dao.getList();
resp.getWriter().print(JSON.toJSONString(list));
}
}
②com.guahao.system.dao包中的
1、BaseDao.java
package com.guahao.system.dao;
//DAO 将数据库操作都封装起来。
//提供面向对象的数据访问接口。
// 降低了代码的藕合性,提高了代码扩展性和系统的可移植性。
public class BaseDao {
static {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2、OrderDao.java
package com.guahao.system.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.guahao.system.pojo.Order;
public class OrderDao extends BaseDao {
public boolean addOrder(String doctor, String patient, String time) {
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_guahao?serverTimezone=UTC",
"root", "123456");//强调这里数据库的密码是自己安装时设置的
PreparedStatement ps = conn.prepareStatement("insert into tb_order(doctor, patient, time) value (?,?,?)");
ps.setString(1, doctor);
ps.setString(2, patient);
ps.setString(3, time);
ps.executeUpdate();
return true;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
public List<Order> getList() {
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_guahao?serverTimezone=UTC",
"root", "123456");
PreparedStatement ps = conn.prepareStatement("select * from tb_order");
ResultSet rs = ps.executeQuery();
List<Order> list = new ArrayList<>();
while (rs.next()) {
Order o = new Order();
o.setId(rs.getInt("id"));
o.setDoctor(rs.getString("doctor"));
o.setPatient(rs.getString("patient"));
o.setTime(rs.getString("time"));
list.add(o);
}
return list;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
3、UserDao.java
package com.guahao.system.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao extends BaseDao{
public boolean getUser(String username,String pwd) {
//连接数据库
try {
Connection conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/db_guahao?serverTimezone=UTC", "root", "123456");
//预编译SQL语句
String sql ="select * from tb_user where username=? and pwd=?";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, pwd);
//执行SQL语句,并获得结果
System.out.println(username);
System.out.println(pwd);
ResultSet rs=ps.executeQuery();
while(rs.next()){
return true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
}
③com.guahao.system.pojo 包中的
1、Order.java
package com.guahao.system.pojo;
public class Order {
private int id;
private String doctor;
private String patient;
private String time;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDoctor() {
return doctor;
}
public void setDoctor(String doctor) {
this.doctor = doctor;
}
public String getPatient() {
return patient;
}
public void setPatient(String patient) {
this.patient = patient;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
三、数据库的部分
1、
2、
版权声明:本文标题:Java语言程序设计 :医院简易挂号管理系统 Java实验 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1726597835a1077033.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论