package hospital.db.dboperation;
import java.sql.*;
import hospital.db.*;
import java.text.*;
/**
* 继承自DBOperation类,用以封装患者角色
*
* 作者:Fido Dido
*/
public class Patient
extends DBOperation{
public static final String NAME="Name";
public static final String SECTION="Section";
public static final String ANONYMOUS="anonymous";
private int PID;
/**
* 构造器
*
* 参数:
* id-用户名
*/
public Patient(String id)
throws InvalidUserException{
super(id);
}
/**
* 用户登录
*
* 参数:
* password-密码
*
* 返回值-操作结果:
* 1-操作成功
* 0-抛出一般异常
* -1-抛出数据库异常
* -2-登录失败
*/
public int login(String password){
conn=DBConnection.getConnection();
int res=0;
try{
strSQL="SELECT Username,Password,PID FROM patient WHERE Username='" + Util.encode(this.id) +
"' AND Password=password('" + Util.encode(password) + "')";
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(strSQL);
if(!rs.next())
throw new IllegalArgumentException("Password invalid.");
this.PID=rs.getInt("PID");
res=1;
}
catch(IllegalArgumentException iae){
Debug.log(Debug.getExceptionMsg(iae));
res= -2;
}
catch(SQLException sqle){
Debug.log(Debug.getExceptionMsg(sqle));
res= -1;
}
catch(Exception e){
res=0;
}
finally{
return res;
}
}
/**
* 用户注册
*
* 参数:
* username-用户名
* name-姓名
* password-密码
* age-年龄
* sex-性别
* address-联系地址
* phone-联系电话
*
* 返回值-操作结果:
* 1-操作成功
* 0-抛出一般异常
* -1-抛出数据库异常
* -2-帐户已存在
*/
public synchronized int addPatient(String username,String name,String password,int age,int sex,String address,
String phone){
int res=0;
conn=DBConnection.getConnection();
try{
strSQL="SELECT pid FROM patient WHERE patient.Username='" + username + "'";
stmt=conn.createStatement();
rs=stmt.executeQuery(strSQL);
if(rs.next())
throw new IllegalArgumentException("Patient Username '" + username + "' already existed.");
strSQL="INSERT INTO patient (Name,Username,Password,Age,Sex,Address,Phone) VALUES('" + name + "','" +
username + "',password('" + password + "')," + age + ",'" + sex + "','" + address + "','" + phone + "')";
stmt=conn.createStatement();
stmt.executeUpdate(strSQL);
res=1;
}
catch(SQLException sqle){
Debug.log(Debug.getExceptionMsg(sqle));
res= -1;
}
catch(IllegalArgumentException iae){
Debug.log(Debug.getExceptionMsg(iae));
res= -2;
}
catch(Exception e){
res=0;
}
finally{
return res;
}
}
/**
* 查询医生信息
*
* 参数:
* orderBy-结果集排序方式
*
* 返回值-操作结果:
* 1-操作成功
* 0-抛出一般异常
* -1-抛出数据库异常
*/
public int getDoctorInfo(String orderBy){
if(orderBy == null || orderBy.equals(""))
orderBy=Patient.NAME;
int res=0;
conn=DBConnection.getConnection();
strSQL="SELECT DID,Name,Age,Sex,Level,Section,Specialism,Phone FROM doctor ORDER BY " + orderBy;
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(strSQL);
result=rs;
res=1;
}
catch(SQLException sqle){
Debug.log(Debug.getExceptionMsg(sqle));
res= -1;
}
catch(Exception e){
res=0;
}
finally{
return res;
}
}
/**
* 获取主治医生信息
*
* 返回值-操作结果:
* 1-操作成功
* 0-抛出一般异常
* -1-抛出数据库异常
*/
public int getCurrentDoctorInfo(){
int res=0;
conn=DBConnection.getConnection();
strSQL="SELECT Name,Age,Sex,Level,Section,Specialism,Phone FROM doctor,history WHERE history.Patient=" +
this.PID + " AND Finished=0 AND doctor.DID=history.Doctor";
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(strSQL);
result=rs;
res=1;
}
catch(SQLException sqle){
Debug.log(Debug.getExceptionMsg(sqle));
res= -1;
}
catch(Exception e){
res=0;
}
finally{
return res;
}
}
/**
* 查询病历
*
* 返回值-操作结果:
* 1-操作结果
* 0-抛出一般异常
* -1-抛出数据库异常
*/
public int getHistory(){
int res=0;
conn=DBConnection.getConnection();
strSQL="SELECT * FROM history WHERE Patient=" + this.PID;
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(strSQL);
res=1;
result=rs;
}
catch(SQLException sqle){
res= -1;
Debug.log(Debug.getExceptionMsg(sqle));
}
catch(Exception e){
res=0;
}
finally{
return res;
}
}
/**
* 预约
*
* 参数:
* did-医生编号
* day-预约日(0为周日,1为周一……)
* ap-上下午(0为上午,1为下午)
*
* 返回值-操作结果:
* 1-操作成功
* 0-抛出一般异常
* -1-抛出数据库异常
* -2-已在相同时间预约相同医生
* -3-day或ap格式错
*/
public synchronized int makeAppointment(String did,int day,int ap){
int res=0;
conn=DBConnection.getConnection();
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String[] days={"SunA","SunP","MonA","MonP","TueA","TueP","WedA","WedP","ThuA","ThuP","FriA","FriP","SatA","SatP"};
int index=0,curpc=0;
try{
if(day < 0 || day > 6 || ap < 0 || ap > 1)
throw new NumberFormatException();
index=day * 2 + ap;
stmt=conn.createStatement();
strSQL=
"SELECT * FROM curappointment WHERE DID='" +
did + "'";
rs=stmt.executeQuery(strSQL);
if(!rs.next() || (curpc=rs.getInt(days[index])) == 0)
throw new NumberFormatException();
strSQL="SELECT Doctor FROM pinqueue WHERE Doctor='" + did + "' AND Patient=" + this.PID + " AND Day=" + day +
" AND AP=" + ap;
rs=stmt.executeQuery(strSQL);
if(rs.next())
throw new IllegalArgumentException();
conn.setAutoCommit(false);
stmt=conn.createStatement();
strSQL="INSERT INTO pinqueue (Patient,Doctor,Day,AP,Date) VALUES (" + this.PID + ",'" + did + "'," + day + "," +
ap + ",'" + dateFormat.format(new java.util.Date()) + "')";
stmt.addBatch(strSQL);
strSQL="UPDATE curappointment SET " + days[index] + "=" + (curpc - 1) + " WHERE DID='" + did + "'";
stmt.addBatch(strSQL);
stmt.executeBatch();
conn.commit();
res=1;
}
catch(NumberFormatException nfe){
res= -3;
}
catch(SQLException sqle){
conn.rollback();
res= -1;
Debug.log(Debug.getExceptionMsg(sqle));
}
catch(IllegalArgumentException iae){
res= -2;
}
catch(Exception e){
Debug.log(Debug.getExceptionMsg(e));
res=0;
}
finally{
return res;
}
}
/**
* 取消预约
*
* 参数:
* qid-预约编号
*
* 返回值-操作结果:
* 1-操作结果
* 0-抛出一般异常
* -1-抛出数据库异常
*/
public synchronized int cancleAppointment(int qid){
int res=0;
conn=DBConnection.getConnection();
String[] days={"SunA","SunP","MonA","MonP","TueA","TueP","WedA","WedP","ThuA","ThuP","FriA","FriP","SatA","SatP"};
int index,curpc,day,ap;
String did="";
try{
strSQL="SELECT * FROM pinqueue WHERE QID=" + qid;
stmt=conn.createStatement();
rs=stmt.executeQuery(strSQL);
if(!rs.next())
throw new SQLException("QID does not exist.");
day=rs.getInt("Day");
ap=rs.getInt("AP");
did=rs.getString("Doctor");
index=day * 2 + ap;
strSQL="SELECT * FROM curappointment WHERE DID='" + did + "'";
rs=stmt.executeQuery(strSQL);
rs.next();
curpc=rs.getInt(days[index]);
conn.setAutoCommit(false);
stmt=conn.createStatement();
strSQL="DELETE FROM pinqueue WHERE QID=" + qid;
stmt.addBatch(strSQL);
strSQL="UPDATE curappointment SET " + days[index] + "=" + (curpc + 1) + " WHERE DID='" + did + "'";
stmt.addBatch(strSQL);
stmt.executeBatch();
conn.commit();
res=1;
}
catch(SQLException sqle){
conn.rollback();
res= -1;
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
《医院管理系统的全面解析》 在当今信息化社会中,医院管理系统的建设对于提升医疗服务质量和效率具有至关重要的作用。"hospital2013.rar"是一个专为医院设计的综合性管理软件,旨在实现医院日常运营的数字化、智能化。这个系统涵盖了患者管理、病历管理等多个关键环节,确保了医疗服务流程的顺畅和数据的安全。 我们要理解医院管理的核心是患者管理。在"hospital2013"中,患者可以通过身份验证进行个人账户的操作,如预约挂号、查询预约信息、退约等。这些功能的实现,极大地简化了患者的就诊流程,减少了排队等待时间,提高了就医体验。同时,系统还支持患者查看自己的病历,方便他们随时了解自身健康状况,提升了医疗服务的透明度。 医生在该系统中的角色也不容忽视。通过系统,医生可以方便地查阅患者的个人信息和病历记录,有助于更准确地诊断病情并制定治疗方案。此外,医生还可以更新和修改病历,确保医疗信息的实时性和准确性。这种数字化的病历管理方式,避免了传统纸质病历易丢失或损坏的问题,同时也便于医生之间的信息交流和协作。 再者,管理员在系统中的职责主要是对医生账号进行管理。他们可以创建、修改和删除医生的账户,设定权限,确保每位医生只能访问与其工作相关的患者信息,从而保护了患者隐私,符合医疗行业的法规要求。同时,管理员也能监控整个系统的运行状态,及时发现和解决问题,保证系统的稳定运行。 在"hospital2013.rar"中,我们可以看到医院管理系统的全面性和深度。它不仅整合了患者服务、医生工作和后台管理的各项功能,而且注重数据安全与隐私保护,符合现代医院信息化建设的需求。通过这样的系统,医院能够提升服务质量,优化资源配置,更好地服务于广大患者,推动医疗行业的现代化发展。
资源推荐
资源详情
资源评论
收起资源包目录
hospital2013.rar (78个子文件)
hospital
log
2004-09-21.log 167B
2007-05-18.log 77B
2005-06-03.log 154B
2007-05-31.log 77B
2007-06-06.log 77B
2007-06-05.log 154B
2004-11-09.log 4KB
2007-06-02.log 77B
2004-11-06.log 5KB
2004-09-26.log 75B
2007-05-17.log 154B
2004-10-03.log 534B
2007-05-21.log 77B
2004-09-27.log 36B
2004-11-10.log 2KB
2004-09-23.log 212B
2007-05-16.log 848B
2004-11-08.log 77B
2004-09-24.log 75B
2007-06-04.log 77B
2007-05-23.log 77B
2004-10-02.log 75B
2004-11-07.log 2KB
admin
getDoctorInfo.jsp 2KB
addDoctor.jsp 3KB
main.jsp 943B
removeDoctor.jsp 2KB
login.jsp 2KB
logout.jsp 241B
images
LEFTBAR.GIF 2KB
TOPBAR.GIF 17KB
Thumbs.db 57KB
WEB-INF
web.xml 717B
classes
hospital
db
Util.class 1KB
dboperation
Admin.java 6KB
Patient.class 10KB
Doctor.class 9KB
DBOperation.java~1~ 1KB
Patient.java 10KB
DBOperation.java 1KB
Doctor.java 9KB
DBOperation.class 1KB
InvalidUserException.class 465B
InvalidUserException.java 284B
Admin.class 6KB
Debug.class 3KB
InitServlet.class 914B
DBConnection.class 1KB
lib
mysql-connector-java-3.0.8-stable-bin.jar 210KB
mm.mysql-2.0.4-bin.jar 107KB
jdbc-mysql.jar 65KB
jdom-b6.jar 77KB
include
admin.inc 762B
doctor.inc 979B
ccs.inc 283B
head.inc 688B
patient.inc 1KB
patient
getDoctorInfo.jsp 2KB
main.jsp 947B
getHistory.jsp 2KB
login.jsp 2KB
cancleAppointment.jsp 2KB
makeAppointment.jsp 2KB
register.jsp 3KB
getDoctorAppointmentInfo.jsp 3KB
logout.jsp 280B
getAppointmentInfo.jsp 2KB
getCurrentDoctorInfo.jsp 2KB
doctor
getPatientInQueue.jsp 2KB
main.jsp 945B
updatePassword.jsp 2KB
updateHistory.jsp 2KB
login.jsp 2KB
finishHistory.jsp 2KB
getPatientHistory.jsp 2KB
createHistory.jsp 2KB
logout.jsp 259B
default.jsp 2KB
共 78 条
- 1
资源评论
alvarocfc
- 粉丝: 126
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Python和Jenkins的增量代码分析系统.zip
- 【java毕业设计】银行排队叫号系统源码(ssm+mysql+说明文档).zip
- webdriver 64位 131.0.6778.69
- AboutView.vue
- 【java毕业设计】疫情防控系统源码(ssm+mysql+说明文档).zip
- jdk1.8版本,安装java环境中必须的
- 最全的Matlab经典教程下载PDF
- (源码)基于C++和OpenCV的激光雷达数据处理系统.zip
- 【java毕业设计】医院病历管理系统源码(ssm+mysql+说明文档+LW).zip
- (源码)基于Qt框架的Xbox控制器服务器系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功