基于java 的医院排号管理系统设计与实现

news2024/9/21 23:11:45

博主介绍:专注于Java .net  php phython  小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作

☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

  1.  总体设计
    1.  基本设计概念和处理流程

系统使用面向对象方法进行分析和设计,在MYSQL数据库上实现数据操作。使用面向对象的JAVA作为开发语言,Windows XP Professional为开发平台,系统基本流程是:用户登录—〉主界面—〉选择进行各项管理的Web页。

    1.  软件结构设计

经过需求分析阶段的工作,针对医院排号管理系统所要实现的目标,将系统分为了六部分:

1. 病人管理:病人可以自己注册,管理员可以注册的病人,进行数据维护。

2. 大夫管理:添加大夫信息,对大夫可以进行数据管理。

 3. 大夫日程管理:添加单位,修改及删除单位信息。

4. 病人预约:病人登录系统可以对医院的大夫进行诊治时间预约。

5. 诊治病人:对于申请预约的病人,可以填写诊治病例。

6. 查看病例:查看已经诊治的病例。

    1.  系统模块设计

根据医院排号管理系统的软件结构设计,对系统总体结构进行了设计,如图4-1所示:

 图3-1 系统总体结构图

    1.  数据库设计

首先通过MYSQL创建一个名为“hospital”的数据库,然后在其中创建“管理员表”、“日程表”、“预约信息表”、“大夫信息表”、“病人信息表”、“病志信息表”六个表。

1. 名称:管理员表(见表3-1)

表3-1管理员表

字段名称

类型

主键

说明

id

int

Yes

用户id

username

vachar

No

用户名

password

vachar

No

密码

Email

vachar

No

所属系院

name

vachar

No

电子邮箱

phone

vachar

No

手机号

2. 名称:日程表(见表3-2)

表3-2 日程表

字段名称

类型

主键

说明

Did

int

Yes

信息号

suna

tinyint

No

周日上午

Sunb

tinyint

No

周日下午

Mona

Tinyint

No

周一上午

Monb

Tinyint

No

周一下午

Tuea

Tinyint

No

周二上午

Tueb

Tinyint

No

周二下午

Wena

Tinyint

No

周三上午

Wenb

Tinyint

No

周三下午

Thua

Tinyint

No

周四上午

Thub

Tinyint

No

周四下午

Fria

Tinyint

No

周五上午

Frib

Tinyint

No

周五下午

Sata

Tinyint

No

周六上午

Satb

Tinyint

No

周六下午

3. 名称:预约表(见表3-3)

                             表3-3 预约表

字段名称

类型

主键

说明

Did

int

Yes

信息号

suna

tinyint

No

周日上午

Sunb

tinyint

No

周日下午

Mona

Tinyint

No

周一上午

Monb

Tinyint

No

周一下午

Tuea

Tinyint

No

周二上午

Tueb

Tinyint

No

周二下午

Wena

Tinyint

No

周三上午

Wenb

Tinyint

No

周三下午

Thua

Tinyint

No

周四上午

Thub

Tinyint

No

周四下午

Fria

Tinyint

No

周五上午

Frib

Tinyint

No

周五下午

Sata

Tinyint

No

周六上午

Satb

Tinyint

No

周六下午

字段名称

类型

主键

说明

4. 名称:大夫信息表(见表3-4)

表3-4 大夫信息表

字段名称

类型

说明

主键

Did

int

部门id

Yes

Name

vachar

姓名

no

Password

Varchar

密码

No

Age

Tinyint

年龄

No

Sex

Tinyint

性别

No

Level

Varchar

级别

No

Section

Varchar

科室

No

Phone

Varchar

电话

No

5. 名称:病人信息表(见表3-5)

表3-5病人信息表

字段名称

类型

说明

主键

Did

int

部门id

Yes

Name

vachar

姓名

no

Password

Varchar

密码

No

Age

Tinyint

年龄

No

Sex

Tinyint

性别

No

Level

Varchar

级别

No

Section

Varchar

科室

No

Phone

Varchar

电话

No

6. 名称:病例信息表(见表3-6)

表3-6病例信息表

字段名称

类型

主键

说明

hid

int

Yes

Id

Doctor

vachar

No

医生

description

vachar

No

描述

diagnose

vachar

No

处方

patient

vachar

No

病人

rx

vachar

No

历史

finished

vachar

No

完成状态

FDATE

vachar

No

时间

  1. 系统的详细设计与实现

根据JSP应用的开发过程,按照以下步骤进行了医院排号管理系统的设计。

    1.  管理员登录模块的实现

操作员登录界面:模块所要完成的是管理员的登录,一般用户是不能进入系进行统管理的。

对于界面而言,管理员只要输入自己的姓名和密码,很方便的登录就可以了。界面如图4-1所示。

图4-1 操作员登录界面

登录界面的主要代码如下:

<%

String _login="";

Patient p=(Patient)session.getAttribute("patient");

if(p!=null)

_login="已登录";

if(request.getParameter("login")!=null){

String username=request.getParameter("username");

String password=request.getParameter("password");

try{

p=new Patient(username);

int l=p.login(password);

System.out.println(p.getPID());

switch(l){

case 1:

_login="登录成功";

session.setAttribute("patient",p);

response.sendRedirect("../default.jsp");

break;

case 2:

_login="密码错";

break;

case -1:

_login="数据库异常";

break;

default:

_login="一般异常";

}

}

catch(InvalidUserException iue){

_login="非法用户名";

}

}

%> }

    1. 跳转页面的实现

在医院排号管理系统中,实现跳转功能的界面,分别是主页、添加车辆页、添加用户页、添加院系页等。由于它们的实现功能的方法相同,左侧页面菜单树实现页面菜单加载,主要的文件,patient.inc。

主页界面:主页面是工作人员选择管理内容,使工作人员转向其他页面进行数据管理操作界面设计如图4-2所示。

图4-2 主页界面

根据界面跳转设计用include方法把其他页面菜单引到页面上,实现功能的主要代码查询界面代码如下:

<%@ page contentType="text/html; charset=gbk"%>

<td width="167" height="290" valign="top" bgcolor="8FBEE8">

<div align="center">

<br>

<p><a href="/hospital/default.jsp">返回首页</a></p>

<br>

<p><a href="/hospital/patient/login.jsp">登录(患者用户)</a></p>

<p><a href="/hospital/patient/register.jsp">注册</a></p>

<%if(session.getAttribute("patient")!=null){%>

<p><a href="/hospital/patient/getDoctorInfo.jsp">查询医生信息</a></p>

<p><a href="/hospital/patient/getDoctorInfo.jsp">预约</a></p>

<p><a href="/hospital/patient/getAppointmentInfo.jsp">查询预约信息</a></p>

<p><a href="/hospital/patient/getAppointmentInfo.jsp">取消预约</a></p>

<p><a href="/hospital/patient/getCurrentDoctorInfo.jsp">查询主治医生信息</a></p>

<p><a href="/hospital/patient/getHistory.jsp">查询病历</a></p>

<p><a href="/hospital/patient/logout.jsp">注销</a></p>

<%}%>

<br>

<p><a href="/hospital/doctor/main.jsp">医生用户</a></p>

<p><a href="/hospital/admin/main.jsp">管理员用户</a></p>

<br>

</div>

</td>

预约代码:

<%@ page contentType="text/html; charset=gbk"%><%@ include file = "../include/ccs.inc" %>

<%@ page import="hospital.db.dboperation.*" %>

<%@ page import="hospital.db.*" %>

<%@ page import="java.sql.*" %>

<html>

<head>

<title>医院门诊预约系统-医生预约信息</title>

<meta http-equiv="Content-Type" content="text/html; charset=gbk"></head>

<%

String did=request.getParameter("did");

String _doctorInfo="";

ResultSet rs=null;

Patient patient=(Patient)session.getAttribute("patient");

try{

if(patient==null)

patient=new Patient(Patient.ANONYMOUS);

int a=patient.getDoctorAppointmentInfo(did);

if(a==1){

_doctorInfo="查询成功";

rs=patient.getResultSet();

}

else if(a==-1)

_doctorInfo="数据库异常";

else if(a==0)

_doctorInfo="一般异常";

else

_doctorInfo="DID不存在";

}

catch(InvalidUserException iue){

_doctorInfo="非法用户名";

}

%>

<body bgcolor="#FFFFFF">

<table width="770" height="423" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#000000">

<tr>

<td height="421" bgcolor="#FFFFFF"><%@ include file = "../include/head.inc" %>

<table width="770" height="290" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<%@ include file = "../include/patient.inc" %>

<td width="603" align="center" valign="top">

<table width="100%" height="85%" border="0" cellpadding="3" cellspacing="1" bgcolor="#666666">

<tr>

<td width="100%" height="257" align="center" valign="top" bgcolor="E3EDFF">

<br>

<p align="left"><%=_doctorInfo%> 单击“当前可预约数量”进行预约</p>

<%if(rs!=null && rs.next()){%>

<table width="100%"  border="0" cellspacing="0" cellpadding="0">

<tr>

<th></th>

<th>周日上午</th>

<th>周日下午</th>

<th>周一上午</th>

<th>周一下午</th>

<th>周二上午</th>

<th>周二下午</th>

<th>周三上午</th>

<th>周三下午</th>

<th>周四上午</th>

<th>周四下午</th>

<th>周五上午</th>

<th>周五下午</th>

<th>周六上午</th>

<th>周六下午</th>

</tr>

<tr align="center">

<td>当前可预约数</td>

<%for(int i=2;i<16;i++){

int day=i/2-1;

int ap=i%2;

out.print("<td><a href=\"makeAppointment.jsp?did="+did+"&day="+day+"&ap="+ap+"\">"+rs.getInt(i)+"</a></td>");

}%>

</tr>

<tr align="center">

<td>最大可预约数</td>

<%for(int i=17;i<31;i++)

out.print("<td>"+rs.getInt(i)+"</td>");%>

</tr>

</table>

<%}%>

</td>

</tr>

</table>

</td>

</tr>

</table></td>

</tr>

</table>

</body>

</html>

<%

if(patient!=null)

patient.closeConnection();

%>

    1. 人员注册功能的实现

医院排号管理系统对于病人信息需要做大量的病人自己录入工作,用户自行录入基本信息,用户名,密码,姓名,性别,年龄,联系地址,联系电话,因此在这里我详细叙述一下车辆管理操作界面的详细设计。

注册用户信息操作界面:登录系统没有账号的病人,可以申请账号,将存入的病人信息添加进数据库。根据我的界面设计,注册操作的界面如下页图4-3所示。

图4-3添加自行车操作界面

根据我对添加自行车操作界面的功能设计和界面设计,实现功能的主要代码如下:

String _register="";

Patient p=(Patient)session.getAttribute("patient");

if(request.getParameter("reg")!=null){

String username=request.getParameter("username");

String password=request.getParameter("password");

int age=Integer.parseInt(request.getParameter("age"));

int sex=Integer.parseInt(request.getParameter("sex"));

String address=request.getParameter("address");

String phone=request.getParameter("phone");

String name=request.getParameter("name");

try{

p=new Patient(Patient.ANONYMOUS);

int r=p.addPatient(username,name,password,age,sex,address,phone);

if(r==1)

_register="注册成功";

else if(r==-2)

_register="用户名已存在";

else if(r==-1)

_register="数据库异常";

else

_register="一般异常";

}

catch(InvalidUserException iue){

_register="非法用户名";

}

finally{

if(p!=null)

p.closeConnection();

}

}}

    1.  查询医生功能的实现

医院排号管理系统的信息管理中,查询、预约大夫功能是非常重要的,使用这个功能可以根据客户的需求尽快查找到合适的大夫,查看大夫的信息,并可以直接提交预约信息。

查询时需要连接数据库,根据查询条件进行查询。下面将对信息查询页的详细设计进行具体的叙述。

医生查询的界面:它的使用具有较大的伸缩性,可以简单、快速的使用,使病人对医院的主要医生有一个了解,也可以直接预约医生给自己诊治。

医生查询的界面如图4-4所示。

图4-4医生、预约查询

根据设计的页面功能,使用以上对象,实现代码如下:

<%@ page contentType="text/html; charset=gbk"%><%@ include file = "../include/ccs.inc" %>

<%@ page import="hospital.db.dboperation.*" %>

<%@ page import="hospital.db.*" %>

<%@ page import="java.sql.*" %>

<html>

<head>

<title>医院门诊预约系统-医生信息</title>

<%

String _getDoctorInfo="";

String orderBy="";

ResultSet rs=null;

Patient p=null;

try{

orderBy=request.getParameter("orderby");

p=new Patient(Patient.ANONYMOUS);

int g=p.getDoctorInfo(orderBy);

if(g==1){

_getDoctorInfo="查询成功";

rs=p.getResultSet();

}

else if(g==-1)

_getDoctorInfo="数据库异常";

else

_getDoctorInfo="一般异常";

}

catch(InvalidUserException iue){

_getDoctorInfo="非法用户名";

}

%>

<meta http-equiv="Content-Type" content="text/html; charset=gbk"></head>

<body bgcolor="#FFFFFF">

<table width="770" height="423" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#000000">

<tr>

<td height="421" bgcolor="#FFFFFF"><%@ include file = "../include/head.inc" %>

<table width="770" height="290" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<%@ include file = "../include/patient.inc" %>

<td width="603" align="center" valign="top">

<table width="100%" height="85%" border="0" cellpadding="3" cellspacing="1" bgcolor="#666666">

<tr>

<td width="100%" height="257" align="center" valign="top" bgcolor="E3EDFF">

<br>

<p align="left"><strong>单击医生姓名查询医生预约信息</strong></p>

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<th>姓名</th>

<th>年龄</th>

<th>性别</th>

<th>职称</th>

<th>科室</th>

<th>特长</th>

<th>联系电话</th>

</tr>

<%while(rs.next()){%>

<tr align="center">

<td><a href="getDoctorAppointmentInfo.jsp?did=<%=rs.getString("DID")%>" >

<%=Util.decode(rs.getString("Name"))%></a></td>

<td><%=rs.getInt("Age")%></td>

<td><%if(rs.getInt("Sex")==1){out.println("女");}else{

out.println("女");

}%></td>

<td><%=Util.decode(rs.getString("Level"))%></td>

<td><%=Util.decode(rs.getString("Section"))%></td>

<td><%=Util.decode(rs.getString("Specialism"))%></td>

<td><%=rs.getString("Phone")%></td>

</tr>

<%}%>

</table>

</td>

</tr>

</table>

</td>

</tr>

</table></td>

</tr>

</table>

</body>

</html>

<%

if(p!=null)

p.closeConnection();

%>}


大家点赞、收藏、关注、评论啦  其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2141846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1863. 找出所有子集的异或总和再求和

目录 一&#xff1a;题目&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a; 一&#xff1a;题目&#xff1a; 一个数组的 异或总和 定义为数组中所有元素按位 XOR 的结果&#xff1b;如果数组为 空 &#xff0c;则异或总和为 0 。 例如&#x…

C++--类的实例化

一、实例化的概念 用类类型在屋里内存中创建对象的过程&#xff0c;称为类实例化出对象 类是对对象进行一种抽象描述&#xff0c;是一个模型一样的东西&#xff0c;限定了类有哪些成员变量&#xff0c;这些成员变量只是声明&#xff0c;没有分配空间&#xff0c;用类实例化出…

【C++前后缀分解 动态规划】2100. 适合野炊的日子|1702

本文涉及知道点 C前后缀分解 C动态规划 LeetCode2100. 适合野炊的日子 你和朋友们准备去野炊。给你一个下标从 0 开始的整数数组 security &#xff0c;其中 security[i] 是第 i 天的建议出行指数。日子从 0 开始编号。同时给你一个整数 time 。 如果第 i 天满足以下所有条件…

2024最新版MySQL详细学习教程

MySQL数据库提供了很多函数包括&#xff1a; 数学函数&#xff1b;字符串函数&#xff1b;日期和时间函数&#xff1b;条件判断函数&#xff1b;系统信息函数&#xff1b;加密函数&#xff1b;格式化函数&#xff1b; 一、数学函数 数学函数主要用于处理数字&#xff0c;包括…

基于paddleocr的批量图片缩放识别

说明 在进行ocr文字识别的时候&#xff0c;有时候我们需要使用批量测试的功能&#xff0c;但是有些图片会识别失败或者个别根本识别不出来&#xff0c;这时候我们可以通过对原图片进行缩放&#xff0c;提高图像的分辨率&#xff0c;然后再次识别&#xff0c;这样可以大大提高图…

Vue学习记录之一(介绍及脚手架的使用)

一、背景知识介绍 1、构建工具介绍 Vite, Webpack,Rollup, Parce 构建工具优点缺点Vite- 快速启动&#xff0c;秒级热更新&#xff0c;更快的构建速度&#xff0c;更好的开发体验&#xff1b;- 支持 Vue3 和 ES modules 的原生特性&#xff0c;轻松实现按需加载。- 对于单页…

项目实现:云备份②(文件操作、Json等工具类的实现)

云备份 前言文件操作实用工具类设计文件属性的获取文件的读写操作文件压缩与解压缩的实现文件目录操作 Json 实用工具类设计编译优化 前言 如果有老铁不知道当前项目实现的功能是什么的话&#xff0c;可以先移步这篇文章内容&#xff1a; 云备份项目的介绍 其中介绍了云备份项…

【吊打面试官系列-MySQL面试题】简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别?

大家好&#xff0c;我是锋哥。今天分享关于【简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别&#xff1f; MyISAM&#xff1a; 不支持事务&#xff0c;但是每次查…

跳出大厂圈子——普通程序员如何开启逆袭之路

时间&#xff1a;2024年09月16日 作者&#xff1a;小蒋聊技术 邮箱&#xff1a;wei_wei10163.com 微信&#xff1a;wei_wei10 音频&#xff1a;喜马拉雅 大家好&#xff0c;欢迎来到“小蒋聊技术”&#xff01;今天咱们聊点特别现实的事儿——普通程序员的出路。互联网时代…

化学实验室器具识别系统源码分享

化学实验室器具识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comput…

android设置实现广告倒计时功能

文章目录 CountDownTimer基本使用增加基础BaseActivity增加固定活动 在Android中&#xff0c;CountDownTimer 是一个用于计时的类&#xff0c;它允许你在指定的时间段内执行某些操作。通常用于倒计时功能&#xff0c;例如显示一个倒计时进度条或者在倒计时结束后执行某个动作。…

采用qt做一个命令行终端

qt做一个类似系统命令行终端的工具&#xff0c;方便集成到自己的软件里使用&#xff0c;这样能保证软件的整体性&#xff0c;而且是真正的做到和系统命令行终端一样的交互方式&#xff0c;而不是单独搞个编辑框的方式输入命令&#xff08;大部分博客都是做成这个样子&#xff0…

不善言辞的程序员适合做项目经理吗?

项目经理的角色需要承担多重任务&#xff0c;包括团队协调、资源调配、风险管理、沟通与汇报等。因此&#xff0c;很多人认为项目经理需要较强的沟通能力和外向性格。然而&#xff0c;不善言辞的程序员是否适合这一职位&#xff0c;实际上取决于多个因素。以下从不同角度进行分…

程序设计题(25-32)

第二十五题 题目 请编写函数fun&#xff0c;其功能是:在一个含有11个四位数的数组中&#xff0c;统计出这些数的奇数、偶数个数&#xff0c;然后计算出个数多的那些数的算数平均值并由函数返回&#xff0c;个数通过yy传回。 例如&#xff0c;若11个数据为:1101, 1202, 1303,…

AI+RPA 实战揭秘:DrissionPage 助力 CSDN 热榜数据抓取与 AI 结合

在前一篇文章《AIRPA&#xff1a;开启智能自动化新时代》 发布之后&#xff0c;今天我们将以实战的方式深入介绍数据分析中的RPA究竟是怎样抓取数据的&#xff0c;以及它与 AI 又是如何紧密结合的。首先&#xff0c;让我们来认识一个重要的工具包 ——DrissionPage。 一、Dris…

【例题】lanqiao301 实现基数排序

输入输出样例 输入 6 7 1 4 8 5 2输出 1 2 4 5 7 8解题思路 翻译&#xff1a;就是从个位到十位、……比较大小。 代码 nint(input()) alist(map(int,input().split())) a.sort() print( .join(map(str,a)))

Linux: network: delay and burst

最近遇到一个false-network的问题&#xff0c;抓到的网络包的特征是&#xff0c;有十几秒的延迟&#xff0c;然后来了一个burst。这个现象说明这个包肯定是缓存在了一个地方&#xff0c;但是具体是什么地方&#xff0c;就需要抓包确定。 这次的缓存的地方是虚拟机内部。由于一…

【刷题】Day5--数字在升序数组中出现的次数

Hi! 今日份刷题~ 数字在升序数组中出现的次数_牛客题霸_牛客网 我感觉题目简单&#xff0c;我的解答也很简单&#xff0c;二分法遗忘&#xff0c;有时间复习一下尝试新的解法。 /*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的…

轻松上手Cursor,体验丝滑编程

最近Cursor大火。 作为一名程序员&#xff0c;理应接触接触&#xff0c;了解了解。 好吧&#xff01;这一了解&#xff0c;我直接用Cursor替换了用了好几年的vscode了。 下面我把体验Cursor的过程总结了一下。你看看。 Cursor是啥 Cursor是一款革命性的AI驱动代码编辑器&a…

rocky Linux 9.4系统配置zabbix监控MySQL主从复制状态与配置钉钉告警

MySQL主从复制原理&#xff1a; 1. 主从复制的基本概念 主服务器&#xff08;Master&#xff09;&#xff1a;负责处理所有的写操作&#xff08;INSERT、UPDATE、DELETE&#xff09;&#xff0c;并将这些操作记录到二进制日志&#xff08;binary log&#xff09;中。 从服务器…