基于Java+SQL Server2008开发的(WinForm)个人财物管理系统【100010036】

news2024/11/29 14:55:17

一、需求分析

个人财务管理系统是智能化简单化个人管理的重要的组成部分。并且随着计算机技术的飞速发展,计算机在管理方面应用的旁及,利用计算机来实现个人财务管理势在必行。本文首先介绍了个人财务管理系统的开发目的,其次对个人财务管理系统的需求分析做了详细的描述。接着,又对系统数据库设计和功能结构的划分做了详细论述。然后又对个人财务管理系统的实现做了详尽的说明。在报告的最后给出了项目的测试结果以及结果分析。

本系统是对个人的收支情况做一个简单的管理,其中宝库哦个人信息管理以及收支信息管理。 其中,个人信息管理包括用户对自己的信息进行增删查改的一些操作,同样,收支信息管理包括用户对收支情况的信息进行增删查改的管理

(一) 系统业务需求

该系统具体需求应该有用户登录模块,用户修改信息模块,用户修改信息模块,收支查询模块,收支删除模块,收支添加模块,收支修改模块。

(二)系统技术目标

该系统的目标主要是能对个人信息以及收支信息进行较快的增删查改,同时也能对收支信息进行各种方式的查询。

(三)系统的具体需求

根据以上对系统的任务和目标的分析,系统的具体需求如下:

个人信息:用户名(唯一),密码,姓名,性别,出生日期,工作,身份证号,电话号码

收支信息:收支编号(唯一),收支日期,收支方式,收支项目,收入金额,支出金额,,总金额。

二、软件功能结构分析

由需求分析可知,软件的功能应包括:个人信息管理,收支信息管理。其中,个人信息应包括,个人信息的增删查该,登录时候验证功能。收支信息管理应包括对对收支信息的各种方式查询,以及对收支信息的增加,修改以及删除功能。当然,每个用户应对应其各自的收支信息。

(一)个人信息功能

在登录界面用户输入用户名以及密码,如果用户与密码都输入正确则可以登录进系统,如果其中任何一项与数据库中的数据不匹配则要求重新输入。当用户没有账户时候,可以点击登录界面的注册按钮注册。成功进入系统后,可以进行个人信息的查询以及修改。

具体流程图如下:

在这里插入图片描述

(二)收支管理功能

用户登录成功后进入主界面后可以选择查询方式,全部查询:查询用户所有收入支出的信息;收入查询:查询用户收入信息;支出查询:查询用户支出信息;按日期查询:查询用户当天的收入支出信息。用户也可以对收入支出信息进行修改和删除以及添加。

具体流程图如下:

在这里插入图片描述

三、数据库设计

经过以上的需求的分析以及系统功能的分析,需要建立出该系统数据库的各种模型,为建立一个好的,完善的数据库做准备。

(一)概念模型

由于该系统涉及的较少,只涉及到用户以及财务管理,所以设计比较简单。一个用户可以有多条收支记录,所以用户表与收支表是一对多的关系。通过PowerDesigner工具设计出的概念数据模型如下:

在这里插入图片描述

其对应的E-R模型如下图:

在这里插入图片描述

(二)逻辑模型

1.联系转换

一个用户可以有多条记录,而一条记录只能对应一个用户,所以用户与记录之间是一对多的关系。

2.其逻辑结构设计如下:

个人信息(用户名,密码,姓名,性别,出生日期,工作,身份证号,电话号码)

收支信息(收支编号,收支日期,收支方式,收支项目,收入金额,支出金额,总金额)

3.关系模式

个人信息(用户名,密码,姓名,性别,出生日期,工作,身份证号,电话号码)

收支信息(收支编号,收支日期,收支方式,收支项目,收入金额,支出金额,总金额)

(三)物理模型

通过PowerDesigner中的概念模型生成物理模型如下:

在这里插入图片描述

(四) 表结构设计

1.用户表:
在这里插入图片描述

  1. 收支信息表
    在这里插入图片描述

四、软件代码设计

本系统是对个人财政的管理,下面给出具体的功能模块以及代码实现。

(一)功能模块

1.登录界面模块

在这里插入图片描述

说明:

(1)该界面为登录界面,如果没有账户,则可以点击注册按钮注册。

(2)当用户输入的用户名或者密码输入错误时,会提示用户名或者密码输入错误。

(3)当点击登录时,如果用户名以及密码都正确则会提示登录成功,并跳转到主界面。

2.用户注册模块

在这里插入图片描述

说明:

(1)该界面为用户注册模块

(2)用户填入信息,其中用户名唯一,当用户名重复时会提示“用户名已存在,请重新输入”

3.主界面模块

在这里插入图片描述

说明:

(1)该界面为用户主信息界面

(2)用户可以有多种查询方式:全部查询(查询全部收支信息)、收入查询(只查询收入信息)、支出管理(只查询支出信息)、日期查询(查询当天收支信息)

(3)显示用户所有的收入总计、支出总计以及收入支出总计

4.个人信息显示模块

在这里插入图片描述

说明:

(1)该界面为用户显示模块

(2)用户如果不想使用该系统可以注销掉自己的账户

5.个人信息修改模块

说明:

(1)修改界面与个人信息查询界面在同一模块

(2)用户名不能修改

6.收支信息插入模块

说明:

(1)该界面为添加收支信息界面

(2)当点击主界面的插入按钮时候,会跳转到该界面

(3)收支编号不能重复

在这里插入图片描述

7.收支信息修改界面

在这里插入图片描述

说明:

(1)该界面为收支信息修改界面

(2)当点击主界面中的修改按钮时(必须选中一行),跳转到该界面

(3)收支编号不能修改

8.收支信息删除界面

说明:

(1)该功能与在主界面上

(2)选中一行,然后点击删除,即可提示删除成功

(二)代码实现

1.登录界面主要功能实现(Login.java)

 jb1.addActionListener(new ActionListener() {//登陆按钮
            public void actionPerformed(ActionEvent e) {
                jLabel5.setVisible(false);
                String ad = jf1.getText();
                String pass = jf2.getText();
                int i=0;
                String sc = "select userName,passWord from admin where userName='"+ad+"'";
                try {
                    ResultSet rs = st.executeQuery(sc);
                    while (rs.next()) {
                        i++;
                        String userName = rs.getString("userName");
                        System.out.println(userName+"sdgdfgdf");
                        String password = rs.getString("passWord");
                        if (!ad.equals(userName)||userName.equals("")) {
                            jLabel5.setVisible(true);
                        } else if (!pass.equals(password)) {
                            jLabel6.setVisible(true);
                        } else {
                            JOptionPane.showMessageDialog(null, "登陆成功!");
                            Show show = new Show();
                            show.s=jf1.getText();
                            show.setVisible(true);
                            setVisible(false);
                        }
                    }
                    System.out.println(i+"sdfd");
                } catch (SQLException ex) {
                    Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
                }
                if(i==0){
                    jLabel5.setVisible(true);
                }
            }
        });

说明:该代码实现了登录界面的登录、判断用户名与密码输入是否正确。当用户名或者密码输入错误的时候会提示用户名或者密码错误。同时还添加了一个注册按钮让没有账户的用户注册账户。

2.用户注册功能实现(UserInsert.java)

 jb1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    String s1 = jf1.getText();//y用户名
                    String s2 = jf2.getText();//姓名
                    String s12 = jf7.getText();//密码
                    String s3 = (String) jcb.getSelectedItem();//性别
                    String s5 = jf4.getText();//职业
                    String s6 = jf5.getText();//身份证号码
                    String s7 = jf6.getText();//电话号码
                    String s8 = (String) jcb1.getSelectedItem();
                    String s9 = (String) jcb2.getSelectedItem();
                    String s10 = (String) jcb3.getSelectedItem();
                    String s11 = s8 + "-" + s9 + "-" + s10;//出生日期
                    ResultSet rs;
                    String str ="select userName from admin where userName='"+s1+"'";
                    rs = st.executeQuery(str);
                    int i=0;
                    while (rs.next()) {
                        i++;
                    }
                    if (i == 0) {
                        if (s6.length() != 18 || s7.length() != 11) {
                            if (s6.length() != 18) {
                                jLabel5.setVisible(true);
                            }
                            if (s7.length() != 11) {
                                jLabel14.setVisible(true);
                            }
                        } else {
                            String sql = "insert into admin Values ('" + s1 + "','" + s12 + "','" + s2 + "','" + s3 + "','" + s11 + "','" + s7 + "','" + s5 + "','" + s6 + "')";
                            st.executeUpdate(sql);
                            JOptionPane.showMessageDialog(null, "注册成功");
                            setVisible(false);
                        }
                    }
                    else{
                        jLabel15.setVisible(true);
                    }                       
                } catch (SQLException ex) {
                    Logger.getLogger(UserInsert.class.getName()).log(Level.SEVERE, null, ex);     
                }
            }
        });

说明:该代码实现了个人信息的注册,其中用户名唯一,重复会给出提示“用户名已存在”,并且判断身份证与电话号码填写的格式是否正确。

3.主界面模块

注:(函数内部具体代码会在附件给出,此出不给出具体具体实现代码)

(1)全部查询实现函数(Show.java)

jb1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
           .......
           .......
        }
 });

(2)收入查询实现函数(Show.java)

jb2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
           .......
           .......
        }
 });

(3)支出查询实现函数(Show.java)

b3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
           .......
           .......
        }
 });

(4)日期查询实现函数(Show.java)

4.个人信息查询功能模块(Show.java)

jb4.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
           .......
           .......
        }
 });

5.个人信息修改功能模块(User.java)

jb2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
           .......
           .......
        }
 });

6.个人信息删除功能模块(User.java)

Jb3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
           .......
           .......
        }
 });

7.收支信息插入功能模块(UserInsert.java)

jb1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
           .......
           .......
        }
 });

8.收支信息添加功能模块(Insert.java)

jb1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
           .......
           .......
        }
 });

9.收支信息删除功能模块(show.java)

Jb7.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
           .......
           .......
        }
 });

五、总结

通过该课程设计,我认识到软件设计是基于需求分析和可行性分析的基础上的,软件设计阶段需要合理的分析需求分析中的细节部分的实现,既要考虑到关键处代码的可实现性,又要考虑到开发过程中遇到的问题。刚开始觉得该 项目建立的数据库比较简单,没有认真进行需求分析,所有导致后面举步维艰。后来重新进行需求分析,一步一步来,最终完成了该课程设计。软件设计是把需求分析中的问题抽象化,又要把抽象化了的需求形象的从预期的实现中体现出来。 本小组的个人财务管理系统系统的设计实现了预期的功能,对个人消费进行记录,个人的收入进行统计,对个人收支进行汇总并给出相应的理财提示信息。在这次的个人财务管理系统设计中将理论知识应用到实际中使得对理论知识的理解有了更进一步的理解,如果仅仅只是运用理论知识,是远远不够的。必须理论联系实际,才能很好的将各门课程学好,并用于实际案例中。

这次设计使我的编程水平提高了一大步。由于这次设计涉及到数据库,我的学到了不少编程工具与数据库连接的知识,对数据库的操作有了进一步的了解。这次设计对我的综合能力是一次很好的锻炼,自己的能力和知识还很有限。所以今后我的学习道路还是很漫长的。

附件:部分程序代码清单

(1)数据库连接

public void initializeDB() {
        String url = "jdbc:sqlserver://localhost:1433; DatabaseName=MyMoney";
        String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        String user = "sa";
        String pwd = "zq7108392";
        try {
            Class.forName(driver);//加载驱动
            System.out.println("驱动加载成功");
        } catch (ClassNotFoundException event) {
            System.out.print("无法创建驱动程式实体!");
        }
        try {
            con = DriverManager.getConnection(url, user, pwd);
            System.out.println("引入数据库成功");
            st = con.createStatement();

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

(2)Show.java

public void setDay(JComboBox year, JComboBox month, JComboBox day) {
        int y = Integer.parseInt(year.getSelectedItem().toString());
        int m = Integer.parseInt(month.getSelectedItem().toString());
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, y);
        c.set(Calendar.MONTH, m - 1);
        int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);
        day.setModel(new DefaultComboBoxModel(getModel(1, days)));
    }

    public String[] getModel(int start, int end) {
        String[] m = new String[end - start + 1];
        for (int i = 0; i < m.length; i++) {
            m[i] = String.valueOf(i + start);
        }
        return m;
}
private void jbox1ItemStateChanged(java.awt.event.ItemEvent evt) {                                       
        // TODO add your handling code here:
        setDay(jbox1, jbox2, jbox3);
    }                                      

    private void jbox2ItemStateChanged(java.awt.event.ItemEvent evt) {                                       
        // TODO add your handling code here:
        setDay(jbox1, jbox2, jbox3);
    } 
public void init() {
        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                int isTrue = JOptionPane.showConfirmDialog(null, "确定退出?", "退出", JOptionPane.YES_NO_OPTION);
                if (isTrue == JOptionPane.YES_NO_OPTION) {
                    System.exit(0);
                }

            }
        });
        jb1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                ResultSet rs;
//                ResultSetMetaData rsmd;
                String[] data = new String[7];
                int numT;
                double sum = 0;
                double sum1 = 0;
                double sum2 = 0;
                DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
                numT = model.getRowCount();//获取当前已有行数
                while (numT > 0) {//如果是全体刷新表格需要移除之前的所有数据行
                    model.removeRow(0);
                    numT--;
                }
                try {
                    String sql = "select incomeID,date,type,project,inMoney,outMoney,sumMoney from MyMoney where userName='" + s + "'";
                    rs = st.executeQuery(sql);
                    while (rs.next()) {
                        data[0] = rs.getString(1).trim();
                        data[1] = rs.getString(2).trim();
                        data[2] = rs.getString(3).trim();
                        data[3] = rs.getString(4).trim();
                        data[4] = rs.getString(5).trim();
                        data[5] = rs.getString(6).trim();
                        data[6] = rs.getString(7).trim();
                        model.addRow(data);
                        sum = sum + Double.parseDouble(data[4].trim());
                        sum1 = sum1 + Double.parseDouble(data[5].trim());
                        sum2 = sum2 + Double.parseDouble(data[6].trim());
                    }
                    jf1.setText(sum + " ");
                    jf2.setText(sum1 + " ");
                    jf3.setText(sum2 + " ");
                } catch (Exception e1) {
                    e1.printStackTrace();
                } finally {
                    //jdbchelper.close();
                }
                jTable1.setModel(model);
            }
        });
        jb2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ResultSet rs;
                ResultSetMetaData rsmd;
                String[] data = new String[7];
                int numT;
                DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
                numT = model.getRowCount();//获取当前已有行数
                while (numT > 0) {//如果是全体刷新表格需要移除之前的所有数据行
                    model.removeRow(0);
                    numT--;
                }
                try {
                    String sql = "select incomeID,date,type,project,inMoney,outMoney,sumMoney from MyMoney where type='收入' and  userName='" + s + "'";
                    rs = st.executeQuery(sql);
                    while (rs.next()) {
                        data[0] = rs.getString(1).trim();
                        data[1] = rs.getString(2).trim();
                        data[2] = rs.getString(3).trim();
                        data[3] = rs.getString(4).trim();
                        data[4] = rs.getString(5).trim();
                        data[5] = rs.getString(6).trim();
                        data[6] = rs.getString(7).trim();
                        model.addRow(data);
                    }
                } catch (Exception e1) {
                    e1.printStackTrace();
                } finally {
                }
                jTable1.setModel(model);
            }
        });
        jb3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ResultSet rs;
                ResultSetMetaData rsmd;
                String[] data = new String[7];
                int numT;
                DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
                numT = model.getRowCount();//获取当前已有行数
                while (numT > 0) {//如果是全体刷新表格需要移除之前的所有数据行
                    model.removeRow(0);
                    numT--;
                }
                try {
                    String sql = "select incomeID,date,type,project,inMoney,outMoney,sumMoney from MyMoney where type='支出'and  userName='" + s + "'";
                    rs = st.executeQuery(sql);
                    while (rs.next()) {
                        data[0] = rs.getString(1).trim();
                        data[1] = rs.getString(2).trim();
                        data[2] = rs.getString(3).trim();
                        data[3] = rs.getString(4).trim();
                        data[4] = rs.getString(5).trim();
                        data[5] = rs.getString(6).trim();
                        data[6] = rs.getString(7).trim();
                        model.addRow(data);
                    }
                } catch (Exception e1) {
                    e1.printStackTrace();
                } finally {
                    //jdbchelper.close();
                }
                jTable1.setModel(model);
            }
        });
        jb4.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s1 = (String) jbox1.getSelectedItem();
                String s2 = (String) jbox2.getSelectedItem();
                String s3 = (String) jbox3.getSelectedItem();
                String s4 = s1 + "-" + s2 + "-" + s3;
                ResultSet rs;
                String[] data = new String[7];
                int numT;
                DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
                numT = model.getRowCount();//获取当前已有行数
                while (numT > 0) {//如果是全体刷新表格需要移除之前的所有数据行
                    model.removeRow(0);
                    numT--;
                }
                try {
                    String sql = "select incomeID,date,type,project,inMoney,outMoney,sumMoney from MyMoney where date='" + s4 + "' and  userName='" + s + "'";
                    rs = st.executeQuery(sql);
                    while (rs.next()) {
                        data[0] = rs.getString(1).trim();
                        data[1] = rs.getString(2).trim();
                        data[2] = rs.getString(3).trim();
                        data[3] = rs.getString(4).trim();
                        data[4] = rs.getString(5).trim();
                        data[5] = rs.getString(6).trim();
                        data[6] = rs.getString(7).trim();
                        model.addRow(data);
                    }
                } catch (Exception e1) {
                    e1.printStackTrace();
                } finally {
                }
                jTable1.setModel(model);
            }
        });
        jb5.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int isTrue = JOptionPane.showConfirmDialog(null, "确定返回登录界面?", "退出", JOptionPane.YES_NO_OPTION);
                if (isTrue == JOptionPane.YES_NO_OPTION) {
                    Login login = new Login();
                    login.setVisible(true);
                    setVisible(false);
                }
            }
        });
        jb6.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int row = jTable1.getSelectedRow();
                if (row == -1) {
                    JOptionPane.showMessageDialog(null, "请在表中选择一行!");
                } else {
                    Update up = new Update();
                    JTextField[] jtf = up.returnJTF();
                    JComboBox[] jcb = up.returnJBOX();
                    jtf[0].setText(jTable1.getValueAt(row, 2).toString());
                    jtf[1].setText(jTable1.getValueAt(row, 3).toString());
                    jtf[2].setText(jTable1.getValueAt(row, 4).toString());
                    jtf[3].setText(jTable1.getValueAt(row, 5).toString());
                    jtf[4].setText(jTable1.getValueAt(row, 6).toString());
                    jtf[5].setText(jTable1.getValueAt(row, 0).toString());
                    jcb[0].setSelectedItem(jTable1.getValueAt(row, 3).toString());
                    String birthday = jTable1.getValueAt(row, 1).toString();
                    up.setVisible(true);
                    String year = birthday.substring(0, 4);
                    String month = birthday.substring(5, 7);
                    String day = birthday.substring(8, 10);
                    jcb[0].setSelectedItem(year);
                    jcb[1].setSelectedItem(month);
                    jcb[2].setSelectedItem(day);
                }
            }
        });
        jb7.addActionListener(new ActionListener() {//删除功能
            public void actionPerformed(ActionEvent e) {
                int row = jTable1.getSelectedRow();
                if (row == -1) {
                    JOptionPane.showMessageDialog(null, "请在表中选择一行!");
                } else {
                    try {
                        String s = jTable1.getValueAt(row, 0).toString();
                        String str = "delete from MyMoney where incomeID='" + s + "'";
                        st.executeUpdate(str);
                        JOptionPane.showMessageDialog(null, "删除成功");
                    } catch (SQLException ex) {
                        Logger.getLogger(Show.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }
        });
        jb8.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Insert insert = new Insert();
                insert.s = s;
                insert.setVisible(true);
            }
        });
        jb9.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    User user = new User();
                    JTextField[] jtf = user.returnJTF();
                    JComboBox[] jcb = user.returnJBOX();
                    user.setVisible(true);
                    ResultSet rs;
                    String str = "select * from admin where userName='" + s + "'";
                    rs = st.executeQuery(str);
                    while (rs.next()) {
                        String s1 = rs.getString("userName");
                        String s2 = rs.getString("password");
                        String s3 = rs.getString("name");
                        String s4 = rs.getString("sex");
                        String s5 = rs.getString("brithday");
                        String s6 = rs.getString("tel");
                        String s7 = rs.getString("job");
                        String s8 = rs.getString("identify");
                        jtf[0].setText(s1);//用户名
                        jtf[5].setText(s2);//密码
                        jtf[1].setText(s3);//姓名
                        jcb[3].setSelectedItem(s4);//性别
                        //生日
                        String year = s5.substring(0, 4);
                        String month = s5.substring(5, 7);
                        String day = s5.substring(8, 10);
                        jcb[0].setSelectedItem(year);
                        jcb[1].setSelectedItem(month);
                        jcb[2].setSelectedItem(day);
                        
                        jtf[2].setText(s7);//职业
                        jtf[3].setText(s8);//身份证号码
                        jtf[4].setText(s6);//电话号码
                    }

                } catch (SQLException ex) {
                    Logger.getLogger(Show.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
    }

(3)Insert.java

public void init() {
        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                int isTrue = JOptionPane.showConfirmDialog(null, "确定退出?", "退出", JOptionPane.YES_NO_OPTION);
                if (isTrue == JOptionPane.YES_NO_OPTION) {
                    System.exit(0);
                }
            }
        });
        jb1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    String s1 = (String) jbox1.getSelectedItem();//年
                    String s2 = (String) jbox2.getSelectedItem();//月
                    String s3 = (String) jbox3.getSelectedItem();//日
                    String s4 = s1 + "-" + s2 + "-" + s3;//合体
                    String s5 = jf1.getText();//收支类型
                    String s6 = jf2.getText();//收支项目
                    String s7 = jf3.getText();//收入数目
                    String s8 = jf4.getText();//支付数目
                    String s9 = jf5.getText();//总计数目
                    String s0 = jf6.getText();//收支编号
                    ResultSet rs;
                    String sql ="select incomeID from MyMoney where incomeID='"+s0+"'";
                    rs = st.executeQuery(sql);
                    int i=0;
                    while (rs.next()) {
                        i++;
                    }
                    if (i == 0) {
                        String str = "insert into MyMoney VALUES('" + s0 + "','" + s + "','" + s4 + "','" + s5 + "','" + s6 + "','" + s7 + "','" + s8 + "','" + s9 + "')";
                        st.executeUpdate(str);
                        JOptionPane.showMessageDialog(null, "插入成功");
                        setVisible(false);
                    }
                    else {
                        jLabel11.setVisible(true);
                        //JOptionPane.showMessageDialog(null, "编号重复,请重新输入");
                    }
                } catch (SQLException ex) {
                    Logger.getLogger(Insert.class.getName()).log(Level.SEVERE, null, ex);
                }
                
            }
        });
    }

(4)Update.java

public JTextField[] returnJTF() {
        JTextField[] jtf = new JTextField[6];
        jtf[0] = jf1;
        jtf[1] = jf2;
        jtf[2] = jf3;
        jtf[3] = jf4;
        jtf[4] = jf5;
        jtf[5] = jf6;
        return jtf;
    }

    public JComboBox[] returnJBOX() {
        JComboBox[] jbox = new JComboBox[3];
        jbox[0] = jbox1;
        jbox[1] = jbox2;
        jbox[2] = jbox3;
        return jbox;
    }
    public void init() {
        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                int isTrue = JOptionPane.showConfirmDialog(null, "确定退出?", "退出", JOptionPane.YES_NO_OPTION);
                if (isTrue == JOptionPane.YES_NO_OPTION) {
                    System.exit(0);
                }
                
            }
        });
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                dispose();
            }
        });
        jb2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int isTrue = JOptionPane.showConfirmDialog(null, "确定返回?", "退出", JOptionPane.YES_NO_OPTION);
                if (isTrue == JOptionPane.YES_NO_OPTION) {

                    setVisible(false);
                }
            }
        });
        jb1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    String s1 = (String) jbox1.getSelectedItem();
                    String s2 = (String) jbox2.getSelectedItem();
                    String s3 = (String) jbox3.getSelectedItem();
                    String s4 = s1 + "-" + s2 + "-" + s3;
                    String s5 = jf1.getText();
                    String s6 = jf2.getText();
                    String s7 = jf3.getText();
                    String s8 = jf4.getText();
                    String s9 = jf5.getText();
                    String s0 = jf6.getText();
                    String str = "update MyMoney set date='" + s4 + "' ,type='" + s5 + "' , project='" + s6 + "' , inMoney='" + s7 + "' , outMoney='" + s8 + "' , sumMoney='" + s9 + "' where incomeID='" + s0 + "';";
                    st.executeUpdate(str);
                    JOptionPane.showMessageDialog(null, "修改成功");
                    setVisible(false);

                } catch (SQLException ex) {
                    Logger.getLogger(Update.class.getName()).log(Level.SEVERE, null, ex);
                }
                
            }
        });
        jb2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int isTrue = JOptionPane.showConfirmDialog(null, "确定返回?", "退出", JOptionPane.YES_NO_OPTION);
                if (isTrue == JOptionPane.YES_NO_OPTION) {
                   
                    setVisible(false);
                }
            }
        });
    }

     public void setDay(JComboBox year,JComboBox month,JComboBox day){
        int y=Integer.parseInt(year.getSelectedItem().toString());
        int m=Integer.parseInt(month.getSelectedItem().toString());
        Calendar c=Calendar.getInstance();
        c.set(Calendar.YEAR,y);c.set(Calendar.MONTH,m-1);
        int days=c.getActualMaximum(Calendar.DAY_OF_MONTH);
        day.setModel(new DefaultComboBoxModel(getModel(1, days)));
    }
    public String[] getModel(int start, int end) {
		String[] m = new String[end - start + 1];
		for (int i = 0; i < m.length; i++) {
			m[i] = String.valueOf(i + start);
		}
		return m;
	}

(5)User.java

Public void init() {
        jb1.addactionlistener(new actionlistener() {
            public void actionperformed(actionevent e) {
                int istrue = joptionpane.showconfirmdialog(null, "确定返回?", "退出", joptionpane.yes_no_option);
                if (istrue == joptionpane.yes_no_option) {
                    setvisible(false);
                }
            }
        });
        jb2.addactionlistener(new actionlistener() {
            public void actionperformed(actionevent e) {
                try {
                    string s1 = (string) jcombobox1.getselecteditem();
                    string s2 = (string) jcombobox2.getselecteditem();
                    string s3 = (string) jcombobox3.getselecteditem();
                    string s4 = s1 + "-" + s2 + "-" + s3;//出生日期
                    string s5 = jf1.gettext();//用户名
                    string s6 = jf2.gettext();//姓名
                    string s7 = jf3.gettext();//密码
                    string s8 = jf4.gettext();//职业
                    string s9 = jf5.gettext();//身份证号码
                    string s0 = jf6.gettext();//电话号码
                    string s11 = (string) jcb.getselecteditem();
                    string str = "update admin set password='" + s7 + "',name='" + s6 + "',sex='" + s11 + "',brithday='" + s4 + "',tel='" + s0 + "',job='" + s8 + "',identify='" + s9 + "' where username='" + s5 + "'";
                    st.executeupdate(str);
                    joptionpane.showmessagedialog(null, "修改成功");
                    setvisible(false);
                } catch (sqlexception ex) {
                    logger.getlogger(user.class.getname()).log(level.severe, null, ex);
                }
            }
        });
        jb3.addactionlistener(new actionlistener() {
            public void actionperformed(actionevent e) {
                try {
                    string s=jf1.gettext();
                    string str1 = "delete from mymoney where username='" + s + "'";
                    string str = "delete from admin where username='"+s+"'";
                    st.executeupdate(str1);
                    st.executeupdate(str);
                    joptionpane.showmessagedialog(null, "删除成功");
                    setvisible(false);
                    show.setvisible(false);
                    login login=new login();
                    login.setvisible(true);
                } catch (sqlexception ex) {
                    logger.getlogger(user.class.getname()).log(level.severe, null, ex);
                }

            }
        });
    }

(6)UserInsert.java

 public void init() {
        jb1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    String s1 = jf1.getText();//y用户名
                    String s2 = jf2.getText();//姓名
                    String s12 = jf7.getText();//密码
                    String s3 = (String) jcb.getSelectedItem();//性别
                    String s5 = jf4.getText();//职业
                    String s6 = jf5.getText();//身份证号码
                    String s7 = jf6.getText();//电话号码
                    String s8 = (String) jcb1.getSelectedItem();
                    String s9 = (String) jcb2.getSelectedItem();
                    String s10 = (String) jcb3.getSelectedItem();
                    String s11 = s8 + "-" + s9 + "-" + s10;//出生日期
                    ResultSet rs;
                    String str ="select userName from admin where userName='"+s1+"'";
                    rs = st.executeQuery(str);
                    int i=0;
                    while (rs.next()) {
                        i++;
                    }
                    if (i == 0) {
                        if (s6.length() != 18 || s7.length() != 11) {
                            if (s6.length() != 18) {
                                jLabel5.setVisible(true);
                            }
                            if (s7.length() != 11) {
                                jLabel14.setVisible(true);
                            }
                        } else {
                            String sql = "insert into admin Values ('" + s1 + "','" + s12 + "','" + s2 + "','" + s3 + "','" + s11 + "','" + s7 + "','" + s5 + "','" + s6 + "')";
                            st.executeUpdate(sql);
                            JOptionPane.showMessageDialog(null, "注册成功");
                            setVisible(false);
                        }
                    }
                    else{
                        jLabel15.setVisible(true);
                    }
                                         
                } catch (SQLException ex) {
                    Logger.getLogger(UserInsert.class.getName()).log(Level.SEVERE, null, ex);
                    
                }
            }
        });
    }

♻️ 资源

在这里插入图片描述

大小: 781KB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87248383

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年12月中国数据库排行榜:OceanBase立足创新登榜首,华为腾讯排名上升树雄心

不经一番寒彻骨&#xff0c;怎得梅花扑鼻香。 2022年12月的 墨天轮中国数据库流行度排行榜 火热出炉&#xff0c;本月共有249个数据库参与排名&#xff0c;相比上月新增3个数据库。本月排行榜前十用一句话可以概括为&#xff1a;榜单前十一片红&#xff0c;TODO 格局重洗牌&…

[附源码]Python计算机毕业设计SSM基于web技术的米其林轮胎管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

SpringBoot中使用Spring-Retry重试框架 - 第454篇

悟纤&#xff1a;最近我看到自己之前的try/catch、while代码进行请求的重试&#xff0c;看着很不舒服。 师傅&#xff1a;确实了&#xff0c;为师以前也是写出过这样的一堆难看的代码。 悟纤&#xff1a;那师傅这个事情有解吗&#xff1f; ​师傅&#xff1a;徒儿&#xff0c;…

博客网页制作基础大二dw作业 web课程设计网页制作 个人网页设计与实现 我的个人博客网页开发

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

2022全年度平板电视十大热门品牌销量榜单

随着社会的发展&#xff0c;近年来&#xff0c;平板电视成为了彩电转型升级的新方向。随着我国传统彩电进入存量竞争阶段&#xff0c;平板电视已成为我国彩电行业结构调整和转型升级的主要方向。 根据鲸参谋数据统计&#xff0c;今年京东平台平板电视的年度累计销量达到1300多万…

< 在element-ui中: 使用el-tree + el-table组件,联动请求用户数据表格组件 (基础版,后续可能更新) >

文章目录&#x1f449; 前言&#x1f449; 一、效果演示&#x1f449; 二、原理&#x1f449; 三、实现代码往期内容 &#x1f4a8;&#x1f449; 前言 在 Vue elementUi 开发中&#xff0c;实现通过树状组织机构&#xff0c;点击查询用户信息联动效果&#xff01; 组件较为简…

MySQL数据库学习(6)

一、MySQL索引简介 索引是一种特殊的数据库结构&#xff0c;由数据表中的一列或多列组合而成&#xff0c;可以用来快速查询数据表中有某一特定值的记录。 通过索引&#xff0c;查询数据时不用读完记录的所有信息&#xff0c;而只是查询索引列。不然的话&#xff0c;数据库系统将…

强化学习_06_pytorch-doubleDQN实践(Pendulum-v1)

环境描述 环境是倒立摆&#xff08;Inverted Pendulum&#xff09;&#xff0c;该环境下有一个处于随机位置的倒立摆。环境的状态包括倒立摆角度的正弦值&#xff0c;余弦值&#xff0c;角速度&#xff1b;动作为对倒立摆施加的力矩(action Box(-2.0, 2.0, (1,), float32))。…

windows11安装cuda+cudnn

安装Nvidia显卡驱动 如需安装显卡驱动&#xff0c;在官方驱动下载网站找到自己的显卡型号对应的驱动下载并安装:官方驱动 | NVIDIA 安装CUDA 前言 windows10 版本安装 CUDA &#xff0c;首先需要下载两个安装包 CUDA toolkit&#xff08;toolkit就是指工具包&#xff09;cu…

Qt扫盲-QLineEdit理论总结

QLineEdit理论总结1. 简述2. 输入模式3. 输入限制4. 文本操作槽函数3. 信号4. 快捷键5. 外观1. 简述 QLineEdit 是一个有用的编辑功能类&#xff0c;主要是处理输入和编辑单行纯文本 &#xff0c;主要是单行哦&#xff0c;就用来输入简单&#xff0c;短小的字符串。内部其实已…

极客时间Kafka - 09 Kafka Java Consumer 多线程开发实例

文章目录1. Kafka Java Consumer 设计原理2. 多线程方案3. 代码实现4. 问题思考目前&#xff0c;计算机的硬件条件已经大大改善&#xff0c;即使是在普通的笔记本电脑上&#xff0c;多核都已经是标配了&#xff0c;更不用说专业的服务器了。如果跑在强劲服务器机器上的应用程序…

JSP ssh科研管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh科研管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myec…

Core Scheduling

Core Scheduling要解决什么问题&#xff1f; core scheduling是v5.14中新增的功能&#xff0c;下图是内核数据结构为该功能所添加的字段。 为什么有core scheduling呢&#xff1f;因为当开启超线程(HyperThreading)时&#xff0c;一个物理核就变成了两个逻辑核&#xff0c;但&…

postgres 源码解析43 元组的插入流程详解 heap_insert

本文讲解postgres中元组的插入流程&#xff0c;深入了解其实现原理。同时此过程涉及元组xmin/xmax与标识位的设置细节&#xff0c;与事务的可见性部分密切相关相关&#xff0c;借此复习一下。 heappage结构 执行流程框架图 heap_prepare_insert 该函数执行内容较为简单&#…

课设项目之——教学辅助系统(学生考试监考系统)

在考试场中为学生监考十分枯燥&#xff0c;因此&#xff0c;建立一个可靠的作弊检测系统来识别学生是否存在作弊行为。 使用一个名为 Yolo3 的训练模型和一个名为 coco 的数据集&#xff0c;我们测试了考场中学生的书籍和手机&#xff0c;并将他们标记为作弊者。 使用haarcasc…

如何将dxf或dwg等CAD文件与卫星影像地图叠加进行绘图设计?

引言&#xff1a; 在测绘、电力、水利、规划或道路设计等GIS相关行业中&#xff0c;通常会用AutoCAD进行矢量地图数据的绘制&#xff0c;而这些地图数据通常又是建立在投影平面坐标的基础上进行绘制的。 为了确保地图数据的准确性与精度的要求&#xff0c;这些地图数据经常会…

将一个乱序数组变为有序数组的最少交换次数

给定一个包含1-n的数列&#xff0c;通过交换任意两个元素给数列重新排序。求最少需要多少次交换&#xff0c;能把数组排成按1-n递增的顺序 总之就是将这个位置应该出现的元素和这个位置现在的元素交换位置 代码实现&#xff1a; 核心&#xff1a;记住一点&#xff0c;hashmap用…

【debug】时序预测的结果都是一个趋势

时序预测的结果都是一个趋势现象原因solutionother solutions现象 预测的是一个序列。 在测试集中随机取20个来看&#xff0c;所有的预测序列都是一个趋势&#xff0c;但是大小有所区别。 举例图片 原因 目前来看是数据的问题&#xff0c;应该是样本不均衡&#xff0c;某一…

简单个人网页制作 个人介绍网页模板 静态HTML留言表单页面网站模板 大学生个人主页网页

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

[ Linux ] 一篇带你理解Linux下线程概念

目录 1.Linux线程的概念 1.1什么是线程 1.1.1如何验证一个进程内有多个线程&#xff1f; 1.2线程的优点 1.3线程的缺点 1.4 线程异常 1.5 线程用途 2.Linux进程与线程 2.1进程和线程 2.2 进程和线程的关系 2.3如何看待之前学习的单进程&#xff1f; 1.Linux线程的概…