最近做了一个简单的医院管理系统,查阅资料时发现,网上的很多java语言做的语言管理系统项目过于庞大,代码过于繁杂,不适于初学者更好的理解,下面我把我做的简单的医院管理系统分享给大家。当然了大牛直接略过,此文仅使用于小白更好的理解java语言。
使用java语言链接SQLserver数据库,当然也可以链接MYSQL数据库,只需要修改一下driver和url就可以了。本文仅演示sqlserver链接数据库
首先需要在webroot--webinf--lib里面导入jar包,整个项目我已在上传文件创作栏里上传了,由于文章创作不能加入这个jar包,所以需要jar包的可以去我所上传的文件创作里面找。
如下图所示mssql-jdbc-8.4.1.jre8.jar就是sqlsever的jar包位置
下图是整个项目的所编写的类所在位置
下图是使用MyEclipse链接数据库的代码
package hospital;
import java.sql.*;
public class DBUtil {
// 连接
private Connection con = null;
public String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
public String url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=HospitalManager";
public String username = "sa";
public String password = "123456";
// 获取连接
public Connection getConnection() {
try {
Class.forName(driver);
con = DriverManager.getConnection(url, username, password);
System.out.println("连接成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println("获取连接失败:" + e.getMessage());
}
return con;
}
// 关闭连接
public void close() {
try {
if (con != null) {
con.close();
}
con = null;
System.out.println("数据库连接关闭");
} catch (Exception e) {
e.printStackTrace();
}
}
// 测试
public static void main(String[] args) {
DBUtil dbUtil = new DBUtil();
dbUtil.getConnection();
}
}
创建登录页面并实现从数据库中获取账号密码
package hospital;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class Login extends JFrame{
public static String userId;
public static String password;
int loginFlag = 0;
private static final long serialVersionUID = 1L;
DBUtil dbUtil = new DBUtil();
Connection con = dbUtil.getConnection();
JLabel accountJLabel=new JLabel("账号:");
// JLabel errorJLabel=new JLabel("用户名或密码输入错误,请重新输入!");
JLabel passwordJLabel=new JLabel("密码:");
public JRadioButton r1,r2,r3;
ImageIcon bg=new ImageIcon("WebRoot\\image\\doctor.jpg");
JLabel bgJLabel=new JLabel(bg);
JButton loginJButton=new JButton("登录");
JButton cancelJButton=new JButton("取消");
// private boolean flag;
static JTextField userIdJTextField = new JTextField();
static JPasswordField passwordJPasswordField = new JPasswordField();
public Login(String sTitle) {
super(sTitle);
this.setLayout(null);
// this.add(errorJLabel); // 添加控件
this.add(accountJLabel);
this.add(passwordJLabel);
this.add(loginJButton);
this.add(cancelJButton);
this.add(userIdJTextField);
this.add(passwordJPasswordField);
final JRadioButton r1 = new JRadioButton("管理员");
final JRadioButton r2 = new JRadioButton("收费员");
final JRadioButton r3 = new JRadioButton("医生");
ButtonGroup rg = new ButtonGroup();
this.add(r2);
rg.add(r2);
this.add(r3);
rg.add(r3);
this.add(r1);
rg.add(r1);
r1.setBounds(150, 180, 80, 30);
r2.setBounds(230, 180, 80, 30);
r3.setBounds(310, 180, 80, 30);
r1.setForeground(Color.RED);
r2.setForeground(Color.RED);
r3.setForeground(Color.RED);
r1.setFont(new Font("",3,15));
r2.setFont( new Font("",3,15));
r3.setFont(new Font("",3,15));
r1.setFocusPainted(false);
r2.setFocusPainted(false);
r3.setFocusPainted(false);
r3.setContentAreaFilled(false);
r1.setContentAreaFilled(false);
r2.setContentAreaFilled(false);
// errorJLabel.setBounds(100, 130, 200, 50);
// errorJLabel.setForeground(Color.black);
// errorJLabel.setVisible(false);
bgJLabel.setBounds(0, 0, 592, 350);
// 登录监听
loginJButton.addActionListener(new ActionListener() {
public boolean flag = false;
public void actionPerformed(ActionEvent e) {
// 管理员
if (r1.isSelected()) {
try {
String userIdText = userIdJTextField.getText().toString(); // 获取帐号文本框内容
String passwordText =String.valueOf(passwordJPasswordField.getPassword()); // 获取密码文本框内容
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from tb_User"); // 执行SQL语句,返回结果集
while (rs.next()) {
userId = rs.getString("UserID"); // 获取登录的用户编号,
password = rs.getString("UserPasswd"); // 获取数据库中的数据项的密码
if (userId.equals(userIdText) && password.equals(passwordText)) {// 判断数据库的用户编号以及密码是否与文本框的值相同
loginFlag = 1;
break;
}
}
// 登录成功
if (loginFlag == 1) {
JOptionPane.showMessageDialog(null, "登录成功");
new HomePage("管理员界面"); // 显示系统主界面
Login.this.setVisible(false);// 关闭登录按钮
// 登录失败
} else {
userIdJTextField.setText(""); // 错误的话则文本框内容设置为空,显示错误标签
passwordJPasswordField.setText("");
JOptionPane.showMessageDialog(null, "账号或密码不正确,请重新输入!");
}
} catch (SQLException e3) {
System.out.println(e3);
}
}
}
});
// 登录按钮添加功能事件
// 账号
accountJLabel.setBounds(150, 50, 100, 50);
accountJLabel.setFont(new Font("", 3, 25));
accountJLabel.setForeground(Color.RED);
// 密码
passwordJLabel.setBounds(150, 120, 100, 50);
passwordJLabel.setFont(new Font("", 3, 25));
passwordJLabel.setForeground(Color.red);
// 登录
loginJButton.setBounds(150, 220, 100, 40);
loginJButton.setBackground(Color.CYAN);
// 取消
cancelJButton.setBounds(280, 220, 100, 40);
cancelJButton.setBackground(Color.CYAN);
// 账号输入框
userIdJTextField.setBounds(250, 60, 150, 30);
// 密码输入框
passwordJPasswordField.setBounds(250, 120, 150, 30);
this.add(bgJLabel);
this.setVisible(true);
this.setSize(600, 350); // 设置窗口大小
this.setResizable(true); // 设置不可调整窗口大小
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[]) {
Login login = new Login("医院管理系统");
}
}
创建主页窗体
package hospital;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.enterprise.inject.New;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class HomePage extends JFrame{
private JLabel la1, la2;
private Font laFont = new Font("隶书", Font.BOLD, 60);
private Font btFont=new Font("宋体",Font.BOLD,25);
ImageIcon background = new ImageIcon("WebRoot\\image\\2051854.jpg");
JLabel bgJLabel = new JLabel(background);
JButton doctorJButton=new JButton("医生信息管理");
JButton patientJButton=new JButton("病人信息管理");
JButton wardJButton=new JButton("科室信息管理");
public HomePage() {}
public HomePage(String a){
super(a);
this.setLayout(null);
this.add(doctorJButton);
this.add(patientJButton);
this.add(wardJButton);
doctorJButton.setFont(btFont);
patientJButton.setFont(btFont);
wardJButton.setFont(btFont);
doctorJButton.setBounds(0, 0, 200, 200);
patientJButton.setBounds(0, 200, 200, 200);
wardJButton.setBounds(0, 400, 200, 200);
la1 = new JLabel("欢迎使用");
la2 = new JLabel("医院信息管理系统");
this.add(la1);
this.add(la2);
la1.setBounds(500, 100, 500, 100);
la1.setFont(laFont);
la2.setBounds(400,200, 600, 100);
la2.setFont(laFont);
this.add(bgJLabel);
bgJLabel.setBounds(0, 0, 1000, 600);
wardJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new department("科室管理界面");
HomePage.this.setVisible(false);
}
});
this.setTitle("主页面");
this.setResizable(true);
this.setVisible(true);
this.setSize(1000, 600);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
HomePage homePage=new HomePage("主页面1");
}
}
创建科室表窗体并实现简单的增删改查
package hospital;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.*;
import java.awt.*;
import java.sql.*;
import javax.swing.*;
import javax.swing.plaf.OptionPaneUI;
public class department extends JFrame{
private Font laFont=new Font("宋体", Font.BOLD, 25);
private Font btFont=new Font("宋体", Font.BOLD, 25);
DBUtil dbUtil = new DBUtil();
Connection con = dbUtil.getConnection();
JButton addJButton=new JButton("添加");
JButton deleteJButton=new JButton("删除");
JButton updateJButton=new JButton("修改");
JButton selectJButton=new JButton("查询");
JLabel denoJLabel=new JLabel("科室编号");
JLabel denameJLabel=new JLabel("科室姓名");
JLabel deaddrJLabel=new JLabel("科室地址");
JLabel dephoneJLabel=new JLabel("科室电话");
JLabel demasterJLabel=new JLabel("科室主任");
JTextField denoJTextField=new JTextField();
JTextField denameJTextField=new JTextField();
JTextField deaddrJTextField=new JTextField();
JTextField dephoneJTextField=new JTextField();
JTextField demasterJTextField=new JTextField();
public department(){}
public department(String b){
super(b);
this.setLayout(null);
this.setSize(1000,600);
this.setVisible(true);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(denoJLabel);
this.add(denoJTextField);
denoJLabel.setBounds(100, 50, 120,50 );
// denoJLabel.setBackground(Color.blue);
// denoJLabel.setOpaque(true);
denoJLabel.setFont(laFont);
denoJTextField.setBounds(220, 50, 200, 50);
this.add(denameJLabel);
denameJLabel.setBounds(100, 150, 120, 50);
denameJLabel.setFont(laFont);
this.add(denameJTextField);
denameJTextField.setBounds(220, 150, 200, 50);
this.add(deaddrJLabel);
deaddrJLabel.setBounds(550, 150, 120, 50);
deaddrJLabel.setFont(laFont);
// deaddrJLabel.setBackground( Color.red);
// deaddrJLabel.setOpaque(true);
this.add(deaddrJTextField);
deaddrJTextField.setBounds(670, 150, 200, 50);
this.add(dephoneJLabel);
dephoneJLabel.setBounds(100, 250, 120, 50);
dephoneJLabel.setFont(laFont);
this.add(dephoneJTextField);
dephoneJTextField.setBounds(220, 250, 200, 50);
this.add(demasterJLabel);
demasterJLabel.setBounds(550, 250, 200, 50);
demasterJLabel.setFont(laFont);
this.add(demasterJTextField);
demasterJTextField.setBounds(670, 250, 200, 50);
this.add(selectJButton);
selectJButton.setBounds(600, 50, 120, 50);
selectJButton.setFont(btFont);
this.add(addJButton);
addJButton.setBounds(200, 400, 120, 50);
addJButton.setFont(btFont);
this.add(deleteJButton);
deleteJButton.setBounds(400, 400, 120, 50);
deleteJButton.setFont(btFont);
this.add(updateJButton);
updateJButton.setBounds(600, 400, 120, 50);
updateJButton.setFont(btFont);
selectJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
String denojString=denoJTextField.getText().toString();
String s1="select * from Department where Deno=?";
PreparedStatement pStatement=con.prepareStatement(s1);
pStatement .setString(1, denojString);
ResultSet rSet=pStatement.executeQuery();
while (rSet.next()) {
denoJTextField.setText(rSet.getString("Deno"));
denameJTextField.setText(rSet.getString("Dename"));
deaddrJTextField.setText(rSet.getString("Deaddr"));
dephoneJTextField.setText(rSet.getString("Dephone"));
demasterJTextField.setText(rSet.getString("Demaster"));
}
} catch (Exception e2) {
// TODO: handle exception
}
}
});
deleteJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try {
String s1="delete from Department where Deno=?";
PreparedStatement ps=con.prepareStatement(s1);
String denoJText=denoJTextField.getText().toString();
ps.setString(1, denoJText);
ps.executeUpdate();
JOptionPane.showMessageDialog(null, "删除成功!");
}
catch (Exception e2) {
System.out.println(e2);
}
}
});
updateJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
String s1="update department set dename=?,deaddr=?,dephone=?,demaster=? where deno=?";
PreparedStatement pStatement=con.prepareStatement(s1);
String denoText=denoJTextField.getText().toString();
String deNameText=denameJTextField.getText().toString();
String deAddrText=deaddrJTextField.getText().toString();
String dePhoneText=dephoneJTextField.getText().toString();
String deMasterText=demasterJTextField.getText().toString();
pStatement.setString(1, deNameText);
pStatement.setString(2, deAddrText);
pStatement.setString(3, dePhoneText);
pStatement.setString(4, deMasterText);
pStatement.setString(5, denoText);
pStatement.executeUpdate();
JOptionPane.showMessageDialog(null, "更新成功!");
} catch (Exception e2) {
// TODO: handle exception
}
}
});
addJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try {
String s1="insert into department values(?,?,?,?,?)";
PreparedStatement pStatement=con.prepareStatement(s1);
String denoText=denoJTextField.getText().toString();
String deNameText=denameJTextField.getText().toString();
String deAdderText=deaddrJTextField.getText().toString();
String dePhoneText=dephoneJTextField.getText().toString();
String deMasterText=demasterJTextField.getText().toString();
pStatement.setString(1, denoText);
pStatement.setString(2, deNameText);
pStatement.setString(3, deAdderText);
pStatement.setString(4, dePhoneText);
pStatement.setString(5, deMasterText);
pStatement.executeUpdate();
JOptionPane.showMessageDialog(null, "插入成功!");
} catch (Exception e1) {
System.out.println(e1);
}
}
});
}
public static void main(String[] args) {
department departments=new department("科室管理界面");
}
}
科室窗体的增删改查已经实现,病人窗体和医生窗体可以根据以上代码,自行创作一下。
随着计算机技术的飞速发展,计算机在医院管理中应用的普及,利用计算机实现医院信息的管理势在必行,当前的医院管理系统通过面向对象语言进行实现。
医院信息管理系统是医院现代化管理的重要工具和手段,是医院深化改革、强化管理、提高效益、和谐发展的重要保障,对提高医疗质量、促进资源共享、扩展信息服务、支撑教学研究、提高医院竞争力等具有重要意义。
随着计算机逐渐在社会各个领域的广泛应用,大量繁杂的工作得以快速、高效的完成,使人们从繁重的劳动中解脱出来,提高了工作效率和工作质量。在计算机应用的众多领域中,管理信息系统占据着十分重要的地位,它使用系统的观点,以计算机科学和现代通信技术为基础,对某一组织或机构中有关管理的数据进行收集、处理,并输出有用信息,使大量的手工劳动自动完成,避免了因人工操作带来的各种错误。
医院管理系统是现代医院管理不可缺少的一部分,是适应现代医院要求,推动医院的信息管理走向科学化、规范化、高效化的必要条件。有利于现代医院需要高效的完成医院信息管理的日常业务。包括对医院科室、医生、病人信息进行增、删、改、查。并达到操作过程中的直观、方便、使用安全等要求。此外,医院信息管理系统还需要后台用户的管理功能,以及用户需求进行数据的添加、删除、修改等操作。为了方便医院信息管理需要,我们小组制作了医院信息管理系统[1]。
该医院信息管理系统可以应用在一个医院系统中全面的进行信息管理。支持在各个模块中信息的增加、删除、修改、查询等。系统以其系统性、全面性、使用的安全性和稳定性以及应用的广泛性为特点,极大地减轻了医院工作人员的工作强度,提高了医院信息管理工作的水平。总之,通过医院管理信息系统的实施,可以有效促进医院人员信息化的建设。
(1)经济可行性分析
开发需求较低,加上成熟的软硬件环境、目标系统并不是十分复杂和开发周期较短,人员经济支出有限。开发完成运行后,为使用者带来便利,为系统的进一步推广创造了条件,经济收益将远超过投资。从经济角度考虑,此系统开发可行。
(2)操作可行性分析
本系统采用界面可视化设计,实现用户与数据库的交互,界面简洁友好,操作方便。用户只需要对信息的增删改查操作熟知即可,不需要掌握数据库等相关知识。
(3)技术可行性分析
采用SQL server 2008作为数据库[2],MyEclipse 2017 CI 作为开发工具使用JDBC[3]进行数据库的连接,用Java Swing[4]语言进行窗体界面可视化创作。
本系统最终用户为医院的管理人员,因此用户对系统的信息需求[5]可以分为以下几个方面:
(1)病人信息需求:系统应存储病人的姓名,性别,年龄,病因等信息,供相关人员的查询。能及时对病人的信息进行更新和统计。
(2)科室信息需求:系统应存储各科室的基本信息,供相关人员的查询。能及时对科室的信息进行更新和统计。
(3)医生信息需求:系统应存储各位主治医生的基本信息,供相关人员的查询。能及时对对医生的信息进行更新和统计。
医院信息管理系统主要是为优秀的医务人员提供辅助帮助。医院管理系统是管理医院科室、医生、病人信息的重要工具,医院信息管理涉及病人信息、医生信息、科室信息等多种数据进行增删改查等操作的管理。
医院信息管理系统设计实施需要充足的硬件管理工作进行支持,一个高效、畅通、稳定的信息网络能够保障信息系统的安全运行,因此,医院信息管理系统在设计时不仅要满足用户需求,也应满足自身需求。要加强信息管理系统网络的管理工作,才能真正的实现医院信息管理系统的稳定运行。
(1)医院信息管理系统应设置访问用户的标识以鉴别是否为合法用户,合法用户应使用账户,密码进行登录,而非合法用户禁止登录。保证用户身份不被盗用。
(2)医院信息管理系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容。
(3)医院信息管理系统应对不同用户设置不同权限,后台数据[6]只对管理人员授予权限。
(1)保证各种病人、医生、科室信息记录的完整性,信息记录内容不能为空。
(2)保证各种病人、医生、科室数据之间相互联系的正确性。
(3)保证相同的数据在不同信息记录中的一致性。
医院医生的实体属性,主要包括医生的医生编号,姓名,性别,年龄,科室号,职称。医生实体属性图如图3.1所示:
图3.1医生实体属性图
医院科室的实体属性,主要包括科室的科室号,科室名,科室地址,科室电话,科室主任;科室实体属性图如图3.2所示:
图3.2科室信息实体属性图
医院病人的实体属性图,主要包括病历号,姓名,性别,年龄,确诊结果,医生姓名,病房号,血型,科室号。病人信息实体属性图如图3.3所示:
图3.3病人实体属性图
(1)关系模式
医生(医生编号、姓名、性别、年龄、职称、所属科室号)
病人(病历号、姓名、性别、年龄、病房号、医生姓名、血型、所属科室号、诊断)
科室(科室号、科室名、科室地址、科室电话、科室主任)
(2)数据库关系模式的优化
这样得到优化的关系模式:
病人(病历号、姓名、性别、年龄、病房号、医生姓名、血型、确诊结果、科室号)
医生(医生编号、姓名、性别、年龄、职称、科室号)
科室(科室号、科室名、科室地址、科室电话、科室主任)
由于用户最终通过某一特定的DBMS使用数据库,因此数据的物理结构设计必须结合具体的DBMS进行,主要包括选择数据库的存储结构和存取方法两个方面。数据库物理结构设计与特定的硬件环境、DBMS及实施环境密切相关,数据库的配置也是确定物理结构的重要内容,包括数据库空间的分配、日志文件大小、数据字典空间的确定以及相关参数的设置等。物理结构满足设计的需求,在时间和空间方面有很大的效率,可以进入数据库实施阶段,数据库的物理结构设计都需要经过反复测试、不断优化[7]。
通过优化后关系模式得出医生表:
表3.1医生基本信息表
列名 |
数据类型 |
字段大小 |
是否为空 |
备注 |
医生编号 |
CHAR |
6 |
NOT |
主键 |
姓名 |
VARCHAR |
20 |
NOT |
|
性别 |
CHAR |
2 |
NOT |
|
年龄 |
INT |
NOT |
||
职称 |
VARCHAR |
20 |
YES |
|
科室号 |
CHAR |
3 |
YES |
外键 |
通过优化后关系模式得出科室表:
表3.2科室基本信息表
列名 |
数据类型 |
字段大小 |
是否为空 |
备注 |
科室号 |
CHAR |
3 |
NOT |
主键 |
科室名 |
VARCHAR |
20 |
NOT |
|
科室地址 |
VARCHAR |
20 |
YES |
|
科室电话 |
VARCHAR |
10 |
YES |
|
科室主任 |
VARCHAR |
20 |
YES |
通过优化后关系模式得出病人表:
表3.3病人基本信息表
列名 |
数据类型 |
字段大小 |
是否为空 |
备注 |
病历号 |
CHAR |
5 |
NOT |
主键 |
姓名 |
VARCHAR |
20 |
NOT |
|
性别 |
CHAR |
2 |
NOT |
|
年龄 |
INT |
NOT |
||
病房号 |
CHAR |
3 |
YES |
|
医生姓名 |
VARCHAR |
20 |
YES |
|
血型 |
CHAR |
2 |
YES |
|
确诊结果 |
VARCHAR |
20 |
YES |
|
科室号 |
CHAR |
3 |
YES |
外键 |
输入账号密码,选择管理员模式进入系统,点击登录按钮时,触发系统连接数据库事件,在数据库中查找账号和密码的数据,判断输入的账号和密码是否对应数据库中的数据,如果输入的账号密码不能对应到数据库中的账号和密码,弹出提示框显示“您输入的账号或密码不正确请重新输入!”。
使用管理员身份进入系统主页面对系统进行管理,主页面分别设置了科室管理,医生管理,病人管理的入口,管理员可以根据需求进入对应的入口进行修改。
进入科室管理界面,在主键科室编号文本框中输入数据,点击查询后,触发连接数据库事件,并在数据库中进行查找操作,把在数据库中查找到的内容显示在科室管理界面对应的文本框中。任选一个除了主键以外的属性,对所选择的属性文本框进行更改,点击修改按钮即可更改成功,对应的数据库里面的数据也会改变[9]。点击删除按钮即可删除包含主键在内的整条数据,对应的数据库中的这条数据也会删除。在界面的各个文本框里输入符合规范的数据,点击添加按钮即可成功添加所输入的包含主键在内的整条数据。点击返回按钮即可返回主页面进行其他操作。
进入医生管理界面,在主键医生编号文本框中输入数据,点击查询后,触发连接数据库事件,并在数据库中进行查找操作,把在数据库中查找到的内容显示在医生管理界面对应的文本框中。任选一个除了主键以外的属性,对所选择的属性文本框进行更改,点击修改按钮即可更改成功,对应的数据库里面的数据也会改变。点击删除按钮即可删除包含主键在内的整条数据,对应的数据库中的这条数据也会删除。在界面的各个文本框里输入符合规范的数据,点击添加按钮即可成功添加所输入的包含主键在内的整条数据。点击返回按钮即可返回主页面进行其他操作。
进入病人管理界面,在主键病人号文本框中输入数据,点击查询后,触发连接数据库事件,并在数据库中进行查找操作,把在数据库中查找到的内容显示在病人管理界面对应的文本框中。任选一个除了主键以外的属性,对所选择的属性文本框进行更改,点击修改按钮即可更改成功,对应的数据库里面的数据也会改变。点击删除按钮即可删除包含主键在内的整条数据,对应的数据库中的这条数据也会删除。在界面的各个文本框里输入符合规范的数据,点击添加按钮即可成功添加所输入的包含主键在内的整条数据。点击返回按钮即可返回主页面进行其他操作。
登录页面如图4.1所示:
图4.1登录页面
String userIdText = userIdJTextField.getText().toString();
StringpasswordText=String.valueOf(passwordJPasswordField.getPassword()); Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from tb_User");
while (rs.next()) {userId = rs.getString("UserID");
password = rs.getString("UserPasswd");
if(userId.equals(userIdText)&&password.equals(passwordText)) {loginFlag = 1;break;} if (loginFlag == 1) {
JOptionPane.showMessageDialog(null, "登录成功");new HomePage("管理员界面"); }
主页面如图4.2所示:
图4.2主页面
public class HomePage extends JFrame{
private JLabel la1, la2;
private Font laFont = new Font("隶书", Font.BOLD, 60);
private Font btFont=new Font("宋体",Font.BOLD,25);
ImageIcon background = new ImageIcon("WebRoot\\image\\2051854.jpg");
JLabel bgJLabel = new JLabel(background);
JButton doctorJButton=new JButton("医生信息管理");
JButton patientJButton=new JButton("病人信息管理");
JButton wardJButton=new JButton("科室信息管理");
public HomePage() {}
public HomePage(String a){
super(a);
this.setLayout(null);
this.add(doctorJButton);
this.add(patientJButton);
this.add(wardJButton);
doctorJButton.setFont(btFont);
patientJButton.setFont(btFont);
wardJButton.setFont(btFont);
doctorJButton.setBounds(0, 0, 200, 200);
patientJButton.setBounds(0, 200, 200, 200);
wardJButton.setBounds(0, 400, 200, 200);
la1 = new JLabel("欢迎使用");
la2 = new JLabel("医院信息管理系统");
his.add(la1);
this.add(la2);
la1.setBounds(500, 100, 500, 100);
la1.setFont(laFont);
la2.setBounds(400,200, 600, 100);
la2.setFont(laFont);
this.add(bgJLabel);
bgJLabel.setBounds(0, 0, 1000, 600);
wardJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new department("科室管理界面");
HomePage.this.setVisible(false);
}
});
doctorJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new doctor("医生管理界面");
HomePage.this.setVisible(false);
}
});
patientJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new patient("病人管理界面");
HomePage.this.setVisible(false);
}
});
this.setTitle("主页面");
this.setResizable(true);
this.setVisible(true);
this.setSize(1000, 600);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
HomePage homePage=new HomePage("主页面1");
}
}
医生页面如图4.3所示:
图4.3医生页面
JButton addJButton=new JButton("添加");
JButton deleteJButton=new JButton("删除");
JButton updateJButton=new JButton("修改");
JButton selectJButton=new JButton("查询");
JButton returnJButton=new JButton("返回");
JLabel dnoJLabel=new JLabel("医生编号");
JLabel dnameJLabel=new JLabel("医生姓名");
JLabel dsexJLabel=new JLabel("医生性别");
JLabel dageJLabel=new JLabel("医生年龄");
JLabel dtitleJLabel=new JLabel("医生职称");
JLabel denoJLabel=new JLabel("科室号");
病人页面如图4.4所示:
图4.4病人页面
JLabel patientnoJLabel=new JLabel("病人号:");
JLabel patientnameJLabel=new JLabel("姓名:");
JLabel sexJLabel=new JLabel("性别:");
JLabel ageJLabel=new JLabel("年龄:");
JLabel bloodJLabel=new JLabel("血型:");
JLabel resultJLabel=new JLabel("诊断结果:");
JLabel departmentnoJLabel=new JLabel("科室号:");
JButton selectJButton=new JButton("查询");
JButton deleteJButton=new JButton("删除");
JButton updateJButton=new JButton("更新");
JButton addJButton=new JButton("增加");
JButton returnJButton=new JButton("返回");
科室页面如图4.5所示:
图4.5科室页面
JButton addJButton=new JButton("添加");
JButton deleteJButton=new JButton("删除");
JButton updateJButton=new JButton("修改");
JButton selectJButton=new JButton("查询");
JButton returnJButton=new JButton("返回");
JLabel denoJLabel=new JLabel("科室编号");
JLabel denameJLabel=new JLabel("科室姓名");
JLabel deaddrJLabel=new JLabel("科室地址");
JLabel dephoneJLabel=new JLabel("科室电话");
JLabel demasterJLabel=new JLabel("科室主任");
String denojString=denoJTextField.getText().toString();
String s1="select * from Department where Deno=?";
PreparedStatement pStatement=con.prepareStatement(s1);
pStatement .setString(1, denojString);
ResultSet rSet=pStatement.executeQuery();
denoJTextField.setText(rSet.getString("Deno"));
denameJTextField.setText(rSet.getString("Dename"));
deaddrJTextField.setText(rSet.getString("Deaddr"));
dephoneJTextField.setText(rSet.getString("Dephone"));
demasterJTextField.setText(rSet.getString("Demaster"));
deleteJButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {try {
String s1="delete from Department where Deno=?";
PreparedStatement ps=con.prepareStatement(s1);
String denoJText=denoJTextField.getText().toString();
ps.setString(1, denoJText);
ps.executeUpdate();
JOptionPane.showMessageDialog(null, "删除成功!");}
catch (Exception e2) {System.out.println(e2);} }
});
String s1="update department set dename=?,deaddr=?,dephone=?,demaster=? where deno=?";PreparedStatement pStatement=con.prepareStatement(s1);
String denoText=denoJTextField.getText().toString();
String deNameText=denameJTextField.getText().toString();
String deAddrText=deaddrJTextField.getText().toString();
String dePhoneText=dephoneJTextField.getText().toString();
String deMasterText=demasterJTextField.getText().toString();
pStatement.setString(1, deNameText);pStatement.setString(2, deAddrText);
pStatement.setString(3, dePhoneText);pStatement.setString(4, deMasterText);
pStatement.setString(5, denoText);pStatement.executeUpdate();
String s1="insert into department values(?,?,?,?,?)";
PreparedStatement pStatement=con.prepareStatement(s1);
String denoText=denoJTextField.getText().toString();
String deNameText=denameJTextField.getText().toString();
String deAdderText=deaddrJTextField.getText().toString();
String dePhoneText=dephoneJTextField.getText().toString();
String deMasterText=demasterJTextField.getText().toString();
pStatement.setString(1, denoText);pStatement.setString(2, deNameText);
pStatement.setString(3, deAdderText);pStatement.setString(4, dePhoneText);
pStatement.setString(5, deMasterText);pStatement.executeUpdate();
public String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
public String url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=HospitalManager";public String username = "sa"; public String password = "123456";
public Connection getConnection() {
try {Class.forName(driver);con = DriverManager.getConnection(url, username, password);System.out.println("连接成功");
} catch (Exception e) {
e.printStackTrace(); System.out.println("获取连接失败:" + e.getMessage());}
return con;}
选择用户身份,输入用户账号密码,点击登录,进入用户主页面。
如下图5.1 图5.2所示:
图5.1 登录
图5.2 主页面
进入医生信息管理界面,输入用户编号点击查询。
如下图5.3所示:
图5.3 查询
进入病人信息管理界面,查询病人编号为21102的个人信息,将其删除。如下图5.4所示:
图5.4 删除
进入信息管理界面,查询医生编号为101001的个人信息,将其年龄更改为30岁。如下图5.5 图5.6所示:
图5.5 更改
图5.6 更改后
进入病人信息管理界面,添加病人信息。如下图5.7所示:
图5.7 添加
我这次课程设计的任务是建立一个医院门诊信息管理系统,它用到的开发工具是MyEclipse、SQL server[10]。医院门诊信息管理系统的基本功能:病人信息管理、医生信息管理、科室信息管理等信息的管理。通过编写代码实现对数据库的连接,进而实现对后台信息的管理。
在本次课程设计中,特色是:选择建立可视化页面给本次课程设计增加了闪光点。通过自学JFrame,从而建立一个个可视化的页面,在窗体中增加相关的控件,并对控件的布局、大小进行相应的设置,增加了窗体的美观性,并通过设置监听器等功能,进而就可以在相应的页面就可以简单实现对相关信息进行增删改查,从而增加了对系统的可操作性,便于人们对后台信息可视化进行管理。