醫療保險管理系統設計 Java
阿新 • • 發佈:2018-11-01
說明:所有原始碼已上傳到筆者GitHub上,歡迎follow、star。感謝!!!
一、系統需求
應用面向物件技術分析一在職職工醫療保險管理系統,用來對職工的個人醫保帳戶進行管理,系統的需求為:
1. 每個職工有一個位數為12位的帳號唯一的醫保卡,有支付密碼,記錄該職工的帳上餘額。個人每月交納的保險金額為工資的2%,單位為個人每月交納的保險金額為工資的7%。每次就醫後可憑卡支付醫療費用,醫保卡可掛失、重發,但任何時候都只有一張卡有效。
2. 每個職工有一個16位的工資卡,有支付密碼,與職工的個人工資帳戶相關聯。每當有工資收入時計算繳納的醫保金額,並直接從工資賬戶扣除。單位支付部分設為同步自動支付,直接加入到保險金中。
3. 支付費率分為三類,分別是自費門診、普通門診與大病門診,普通門診就醫後支付醫療費用的70%,大病門診就醫後支付醫療費的80%,而自費門診為全部自費。
4. 系統要記錄每次交納醫療保險金的往來帳,並能以個人、單位進行查詢列印這些資訊。
5. 系統要記錄每次支付醫療保險金的往來帳,並能以個人、單位進行查詢列印這些資訊。系統不能透支。
6. 系統具有對醫保卡的管理功能,包括考慮入保和退保的處理、單位變更。
7. 醫院提供三類費率一覽表,即那種治療屬於那個支付費率。
8. 不考慮對個人工資和工資卡的管理、個人所屬單位的管理。
二、實現功能
我用Java語言實現的部分功能:(附系統介面截圖)
注:
1.時間倉促,系統介面做的比較簡單,望各位大神不吝賜教!
2.使用的資料庫為MySQL,具體建立SQL語句可到我的個人資源中下載。
3.下面只放了一個main類程式碼,如需全部程式碼可到我的個人資源中下載。
/**
* 這是一個主函式
*/
package com.mims;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.util.*;
import java.util.Date;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class main extends JFrame implements ActionListener{
//定義所需控制元件
JPanel jp1,jp2;
JLabel jl1;
JButton jb1,jb2,jb3,jb4,jb5;
JTable jt;
JScrollPane jsp;
JTextField jtf1,jtf2;
userModel um;
connDB cd;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Vector rowData,columnNames;//rowData存放行資料,columnNames存放列名
public static void main(String[] args) {
main m=new main();
}
//建構函式
public main(){
//上面佈局
jp1=new JPanel();
jtf1=new JTextField(10);
jb1=new JButton("查詢");
jb1.addActionListener(this);
jl1=new JLabel("請輸出名字");
jb5=new JButton("費率一覽表");
jb5.addActionListener(this);
jtf2=new JTextField("登入時間:"+df.format(new Date()));
jtf2.setBorder(new EmptyBorder(0,0,0,0));
jtf2.setBackground(null);
//把各個控制元件加到jp1
jp1.add(jl1);
jp1.add(jtf1);
jp1.add(jb1);
jp1.add(jb5);
jp1.add(jtf2);
//下面佈局
jp2=new JPanel();
jb2=new JButton("入保");
jb2.addActionListener(this);
jb3=new JButton("退保");
jb3.addActionListener(this);
jb4=new JButton("掛失");
jb4.addActionListener(this);
//把各個控制元件加到jp2
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
//中間佈局
//建立資料模型userModel物件
um=new userModel();
jt=new JTable(um);//初始化JTable
jsp=new JScrollPane(jt);//初始化jsp JScrollPane
this.add(jsp);//jsp加入到JFrame中
this.add(jp1,"North");//jp1加入到JFrame中
this.add(jp2,"South");//jp2加入到JFrame中
this.setSize(600, 400);//設定視窗大小
this.setTitle("職工醫保卡管理系統");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//關閉JFrame時關閉資源視窗
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//判斷是哪個按鈕被點選
if(e.getSource()==jb1){
String sql;
String name=this.jtf1.getText().trim();//獲取輸入框中輸入的姓名
if(name.equals("")){
sql="select * from user";
}else{
sql="select * from user where username='"+name+"'";
}
// String sql="select * from user where username='"+name+"'";
//建立新的資料模型類
um=new userModel(sql);
//更新JTable
jt.setModel(um);
}else if(e.getSource()==jb2){
userAdd us=new userAdd(this,"入保",true);
//建立新的資料模型類
um=new userModel();
//更新JTable
jt.setModel(um);
}else if(e.getSource()==jb3){
//getSelectedRow將返回使用者所點中的行,若沒有選擇則返回-1
int rowNum=this.jt.getSelectedRow();
if(rowNum==-1){
//彈出提示框
JOptionPane.showMessageDialog(this, "請選擇要退保職工!");
return;
}
String id=(String) um.getValueAt(rowNum, 0);
String sql="delete from user where userid='"+id+"'";
cd=new connDB();
cd.updExecute(sql);
um=new userModel();
//更新JTable
jt.setModel(um);
JOptionPane.showMessageDialog(this, "退保成功!");
return;
// System.out.println(id);
}else if(e.getSource()==jb4){
int rowNum=this.jt.getSelectedRow();
if(rowNum==-1){
JOptionPane.showMessageDialog(this, "請選擇要掛失職工!");
return;
}
String id=(String) um.getValueAt(rowNum, 0);
String sql="update user set state='掛失' where userid='"+id+"'";
cd=new connDB();
cd.updExecute(sql);
um=new userModel();
jt.setModel(um);
JOptionPane.showMessageDialog(this, "恭喜您!掛失成功!");
return;
}else if(e.getSource()==jb5){
PayRate pr=new PayRate();
pr.print();
}
}
}