1. 程式人生 > >醫療保險管理系統設計 Java

醫療保險管理系統設計 Java

說明:所有原始碼已上傳到筆者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(); } } }