java基础做简单的医院管理系统,附带课程设计说明书

最近做了一个简单的医院管理系统,查阅资料时发现,网上的很多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 系统分析

2.1 可行性分析

(1)经济可行性分析

开发需求较低,加上成熟的软硬件环境、目标系统并不是十分复杂和开发周期较短,人员经济支出有限。开发完成运行后,为使用者带来便利,为系统的进一步推广创造了条件,经济收益将远超过投资。从经济角度考虑,此系统开发可行。

(2)操作可行性分析

本系统采用界面可视化设计,实现用户与数据库的交互,界面简洁友好,操作方便。用户只需要对信息的增删改查操作熟知即可,不需要掌握数据库等相关知识。

(3)技术可行性分析

采用SQL server 2008作为数据库[2],MyEclipse 2017 CI 作为开发工具使用JDBC[3]进行数据库的连接,用Java Swing[4]语言进行窗体界面可视化创作。

2.2 需求分析

2.2.1用户需求

本系统最终用户为医院的管理人员,因此用户对系统的信息需求[5]可以分为以下几个方面:

(1)病人信息需求:系统应存储病人的姓名,性别,年龄,病因等信息,供相关人员的查询。能及时对病人的信息进行更新和统计。

(2)科室信息需求:系统应存储各科室的基本信息,供相关人员的查询。能及时对科室的信息进行更新和统计。

(3)医生信息需求:系统应存储各位主治医生的基本信息,供相关人员的查询。能及时对对医生的信息进行更新和统计。

2.2.2功能需求

医院信息管理系统主要是为优秀的医务人员提供辅助帮助。医院管理系统是管理医院科室、医生、病人信息的重要工具,医院信息管理涉及病人信息、医生信息、科室信息等多种数据进行增删改查等操作的管理。

2.2.3硬件需求

医院信息管理系统设计实施需要充足的硬件管理工作进行支持,一个高效、畅通、稳定的信息网络能够保障信息系统的安全运行,因此,医院信息管理系统在设计时不仅要满足用户需求,也应满足自身需求。要加强信息管理系统网络的管理工作,才能真正的实现医院信息管理系统的稳定运行。

2.2.4安全性需求

(1)医院信息管理系统应设置访问用户的标识以鉴别是否为合法用户,合法用户应使用账户,密码进行登录,而非合法用户禁止登录。保证用户身份不被盗用。

(2)医院信息管理系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容。

(3)医院信息管理系统应对不同用户设置不同权限,后台数据[6]只对管理人员授予权限。

2.2.5完整性需求

(1)保证各种病人、医生、科室信息记录的完整性,信息记录内容不能为空。

(2)保证各种病人、医生、科室数据之间相互联系的正确性。

(3)保证相同的数据在不同信息记录中的一致性。

系统设计

3.1数据库设计

3.1.1数据库概念设计

医院医生的实体属性,主要包括医生的医生编号,姓名,性别,年龄,科室号,职称。医生实体属性图如图3.1所示:

图3.1医生实体属性图

医院科室的实体属性,主要包括科室的科室号,科室名,科室地址,科室电话,科室主任;科室实体属性图如图3.2所示:

 

 

               图3.2科室信息实体属性图 

医院病人的实体属性图,主要包括病历号,姓名,性别,年龄,确诊结果,医生姓名,病房号,血型,科室号。病人信息实体属性图如图3.3所示:

图3.3病人实体属性图

3.1.2数据库逻辑结构设计

(1)关系模式

医生(医生编号、姓名、性别、年龄、职称、所属科室号)

病人(病历号、姓名、性别、年龄、病房号、医生姓名、血型、所属科室号、诊断)

科室(科室号、科室名、科室地址、科室电话、科室主任)

(2)数据库关系模式的优化

这样得到优化的关系模式:

病人(病历号、姓名、性别、年龄、病房号、医生姓名、血型、确诊结果、科室号

医生(医生编号、姓名、性别、年龄、职称、科室号

科室(科室号、科室名、科室地址、科室电话、科室主任)

3.1.3数据库物理结构设计

由于用户最终通过某一特定的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

外键

3.2页面设计

3.2.1登录页面设计

输入账号密码,选择管理员模式进入系统,点击登录按钮时,触发系统连接数据库事件,在数据库中查找账号和密码的数据,判断输入的账号和密码是否对应数据库中的数据,如果输入的账号密码不能对应到数据库中的账号和密码,弹出提示框显示“您输入的账号或密码不正确请重新输入!”。

3.2.2主页面设计

使用管理员身份进入系统主页面对系统进行管理,主页面分别设置了科室管理,医生管理,病人管理的入口,管理员可以根据需求进入对应的入口进行修改。

3.2.3科室页面设计

进入科室管理界面,在主键科室编号文本框中输入数据,点击查询后,触发连接数据库事件,并在数据库中进行查找操作,把在数据库中查找到的内容显示在科室管理界面对应的文本框中。任选一个除了主键以外的属性,对所选择的属性文本框进行更改,点击修改按钮即可更改成功,对应的数据库里面的数据也会改变[9]。点击删除按钮即可删除包含主键在内的整条数据,对应的数据库中的这条数据也会删除。在界面的各个文本框里输入符合规范的数据,点击添加按钮即可成功添加所输入的包含主键在内的整条数据。点击返回按钮即可返回主页面进行其他操作。

3.2.4医生页面设计

进入医生管理界面,在主键医生编号文本框中输入数据,点击查询后,触发连接数据库事件,并在数据库中进行查找操作,把在数据库中查找到的内容显示在医生管理界面对应的文本框中。任选一个除了主键以外的属性,对所选择的属性文本框进行更改,点击修改按钮即可更改成功,对应的数据库里面的数据也会改变。点击删除按钮即可删除包含主键在内的整条数据,对应的数据库中的这条数据也会删除。在界面的各个文本框里输入符合规范的数据,点击添加按钮即可成功添加所输入的包含主键在内的整条数据。点击返回按钮即可返回主页面进行其他操作。

3.2.5病人页面设计

进入病人管理界面,在主键病人号文本框中输入数据,点击查询后,触发连接数据库事件,并在数据库中进行查找操作,把在数据库中查找到的内容显示在病人管理界面对应的文本框中。任选一个除了主键以外的属性,对所选择的属性文本框进行更改,点击修改按钮即可更改成功,对应的数据库里面的数据也会改变。点击删除按钮即可删除包含主键在内的整条数据,对应的数据库中的这条数据也会删除。在界面的各个文本框里输入符合规范的数据,点击添加按钮即可成功添加所输入的包含主键在内的整条数据。点击返回按钮即可返回主页面进行其他操作。

4 系统实现

4.1登录页面

登录页面如图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所示:

图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所示:

图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所示:

图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所示:

 

图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("科室主任");

4.6科室管理

4.6.1查询操作

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"));

4.6.2删除操作

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);} } 

});

4.6.3更改操作

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();

4.6.4添加操作

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();

4.7连接数据库

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 系统测试

5.1登录测试

选择用户身份,输入用户账号密码,点击登录,进入用户主页面。

如下图5.1 图5.2所示:

图5.1 登录

 

图5.2 主页面

 

5.2查询测试

进入医生信息管理界面,输入用户编号点击查询。

如下图5.3所示:

图5.3 查询

5.3删除测试

进入病人信息管理界面,查询病人编号为21102的个人信息,将其删除。如下图5.4所示:

图5.4 删除

5.4更改测试

进入信息管理界面,查询医生编号为101001的个人信息,将其年龄更改为30岁。如下图5.5 图5.6所示:

图5.5 更改

 

图5.6 更改后

5.5添加测试

进入病人信息管理界面,添加病人信息。如下图5.7所示:

图5.7 添加 

 

6 系统总结

6.1设计总结

我这次课程设计的任务是建立一个医院门诊信息管理系统,它用到的开发工具是MyEclipse、SQL server[10]。医院门诊信息管理系统的基本功能:病人信息管理、医生信息管理、科室信息管理等信息的管理。通过编写代码实现对数据库的连接,进而实现对后台信息的管理。

在本次课程设计中,特色是:选择建立可视化页面给本次课程设计增加了闪光点。通过自学JFrame,从而建立一个个可视化的页面,在窗体中增加相关的控件,并对控件的布局、大小进行相应的设置,增加了窗体的美观性,并通过设置监听器等功能,进而就可以在相应的页面就可以简单实现对相关信息进行增删改查,从而增加了对系统的可操作性,便于人们对后台信息可视化进行管理。

 

 

  • 39
    点赞
  • 299
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
资源介绍 “基于jspm开发的图书管理系统”是一个精心设计的Java毕业设计项目,它充分利用了jspm(JavaScript Package Manager)的技术优势,构建了一个功能完善、界面友好的图书管理系统。该项目不仅是一个学习Java Web开发技术的优秀范例,也是一个可以直接用于实际场景的实用工具。 该系统实现了图书管理的基本功能,包括图书信息的录入、查询、修改和删除等。同时,为了方便用户的使用,系统还提供了用户管理、权限控制等辅助功能,确保系统的安全性和稳定性。在技术上,系统采用了先进的MVC架构,使得代码结构清晰、易于维护。 更令人欣喜的是,该系统附带了完整的源代码和详细的说明文档。源代码严格按照编码规范编写,注释详尽,方便读者理解和学习。说明文档则对系统的功能、技术选型、实现过程等进行了详细的介绍,为读者提供了全面的参考。 此外,该系统具有极高的可定制性和二次开发潜力。读者可以根据自己的需求,对系统进行修改和扩展,添加更多的功能或优化现有的功能。这使得该系统不仅适用于毕业设计,也适合作为实际项目的起点,为后续的开发工作打下坚实的基础。 总的来说,“基于jspm开发的图书管理系统”是一个功能丰富、易于学习、可定制性强的Java Web开发项目。无论是对于初学者还是有一定经验的开发者来说,都是一个值得学习和参考的优秀资源。
 《Java web医院分诊挂号管理系统》该项目采用技术jsp、SpringMVC、spring,hibernate,tomcat服务器、mysql数据库 开发工具eclipse,项目含有源码、论文、配套开发软件、软件安装教程、项目发布教程分诊管理主要实现患者信息录入,分诊,排队等功能。    具体实现以下功能:   1 患者查询功能:为了方便医生查找患者等信息,将所有患者信息按照需要进行分类。这样医生就能很方便的找到自己需要的信息。   2 添加功能:管理员可以通过填写表格的形式输入患者姓名,联系电话等相关信息。系统可以自动避免重复信息。   3 修改功能:管理员可以对数据库中的信息进行修改。系统能够通过管理员给出的条件查找出所要修改的信息,对修改后的信息进行保存,并自动查找是否是重复信息。   4 删除功能:管理员可以对数据进行删除操作。系统能够通过管理员给出的条件查找出要删除的信息,并提示是否确定删除,如果确定删除,则把相关信息从数据库中删除掉。   5 管理员查询功能:管理员可以通过条件选择查询所有信息,并进行排序。 课程目标:    1、学会各类开发软件安装、项目导入以及项目发布,含项目源码,需求文档,配套软件等    2、该项目主要功能完善,主要用于简历项目经验丰富,以及毕业设计或者二次开发    3、提供项目源码,设计文档、数据库sql文件以及所有配套软件,按照教程即可轻松实现项目安装部署  本课程为素材版,需要实战版代码讲解教程的同学可以点击如下链接:java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)https://edu.csdn.net/course/detail/25771java项目之oa办公管理系统(java毕业设计)https://edu.csdn.net/course/detail/23008java项目之hrm人事管理项目(java毕业设计)https://edu.csdn.net/course/detail/23007JavaWeb项目实战之点餐系统前台https://edu.csdn.net/course/detail/20543JavaWeb项目实战之点餐系统后台https://edu.csdn.net/course/detail/19572JavaWeb项目实战之宿舍管理系统https://edu.csdn.net/course/detail/26721JavaWeb项目实战之点餐系统全套(前台和后台)https://edu.csdn.net/course/detail/20610java项目实战之电子商城后台(java毕业设计SSM框架项目)https://edu.csdn.net/course/detail/25770java美妆商城项目|在线购书系统(java毕业设计项目ssm版)https://edu.csdn.net/course/detail/23989系统学习课程:JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10https://edu.csdn.net/course/detail/26941Java Web从入门到电商项目实战挑战万元高薪(javaweb教程)https://edu.csdn.net/course/detail/25976其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习
课程信息管理系统是一种用来方便学校、教育机构或组织管理和维护课程信息的软件系统。本课程设计旨在设计一个基于Java语言编写的课程信息管理系统,并提供相应的说明书。 1. 系统设计目标 本课程设计旨在实现以下目标: - 提供一个用户友好的界面,方便用户进行课程信息的管理和维护; - 支持教务人员对课程进行增、删、改、查等基本操作; - 支持学生对课程进行选课、退选操作; - 支持教务人员和学生的登录功能,保证系统的安全性和权限控制; - 提供数据持久化功能,保证数据安全和可靠性。 2. 系统模块 本课程设计的系统主要包括以下几个模块: - 用户管理模块:负责用户登录、注销和权限验证等功能; - 课程管理模块:负责课程的增删改查等操作; - 学生选课模块:负责学生选课和退选的相关功能; - 数据库模块:负责与数据库进行交互,实现数据的持久化存储。 3. 系统流程与功能 用户登录系统后,可以根据权限进行相应的操作。教务人员可以进行课程的增删改查,包括添加新课程、修改已有课程信息、删除不需要的课程以及查看课程列表。学生可以在选课时间内进行课程的选择和退选操作,系统会进行相应的判断和反馈。 4. 技术实现与工具 本课程设计主要使用Java语言进行开发,并配合使用各种开发框架和技术。常用的开发工具包括Eclipse、IntelliJ IDEA等,数据库可以使用MySQL或Oracle等。同时,需要使用Java的GUI库(如AWT、Swing等)实现系统的界面设计,确保用户友好性。 5. 总结 通过本课程设计,可以帮助学生更好地理解和掌握Java语言的应用,了解软件开发过程中的需求分析、系统设计和编码等。通过实践,提升学生的编程能力和解决问题的能力。这个课程设计可以作为Java课程的一个重要实践环节,对于学生的综合能力培养具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一道光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值