版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012829611/article/details/54428780
说明:所有源码已上传到笔者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();
}
}
}