基于Java+SQL Server2008开发的(CS界面)个人财物管理系统

news2024/11/18 11:43:58

一、需求分析

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

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

(一) 系统业务需求

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

(二)系统技术目标

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

(三)系统的具体需求

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

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

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

二、软件功能结构分析

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

(一)个人信息功能

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

具体流程图如下:

(二)收支管理功能

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

具体流程图如下:

三、数据库设计

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

(一)概念模型

由于该系统涉及的较少,只涉及到用户以及财务管理,所以设计比较简单。一个用户可以有多条收支记录,所以用户表与收支表是一对多的关系。通过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);
                    
                }
            }
        });
    }

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

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

相关文章

【C语言】指针篇 | 万字笔记

写在前面 在学习C语言过程&#xff0c;总有一个要点难点离不开&#xff0c;那就是大名鼎鼎的C语言指针&#xff0c;也是应为有指针的存在&#xff0c;使得C语言一直长盛不衰。因此不才把指针所学的所有功力都转换成这个笔记。希望对您有帮助&#x1f970;&#x1f970; 学习指…

【STM32开发环境搭建】-1-Keil(MDK) 5.27软件安装和注册教程

目录 1 安装前装备工作 2 安装KEIL(MDK-ARM) 5.27软件 3 注册KEIL(MDK-ARM) 5.27软件&#xff0c;获取License许可证 4 手动安装STM32F0&#xff0c;STM32F1&#xff0c;STM32F4&#xff0c;STM32F7&#xff0c;STM32H7的支持包 4.1 下载STM32的支持包 4.2 安装STM32的支…

JavaScript 中变量命名的最佳实践

全篇大概1500 字&#xff08;含代码&#xff09;&#xff0c;建议阅读时间5分钟。 1. 避免使用 var 关键字&#xff1a;过时的产物 在现代 JavaScript 中&#xff0c;我们通常避免使用 var&#xff0c;而是选择 let 和 const&#xff0c;它们提供更可预测和块范围的行为&#x…

C++初阶:STL详解(七)——list的模拟实现

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C&#xff1a;由浅入深篇 小新的主页&#xff1a;编程版小新-CSDN博客 前言&#xff1a; 我们前面已经了解到了lis…

helm3 部署项目应用示例

一、用到的插件 1、存储卷-日志外挂&#xff1a; 存储类自己提前建 2、env变量-存储nacos信息 二、新建项目 # helm create test-gateway 三、修改values.yaml ## 删除内容 # Additional volumes on the output Deployment definition. volumes: [] # - name: foo # se…

助力智能作物植株统计分析,基于YOLOv7全系列【tiny/l/x】参数模型开发构建田间作物场景下智能精准小麦麦穗检测识别计数系统

农业实验研究的一些场景下&#xff0c;尝尝有对指定视野区域内作物植株数量进行便捷化智能自动化统计计数的需求&#xff0c;诸如&#xff1a;棉花植株统计、小麦植株统计、水稻植株统计等等&#xff0c;这些农业实验场景下&#xff0c;单纯依靠人工数数的方式来进行植株计数是…

SpringBoot--yml配置文件的时间/大小的单位转换

原文网址&#xff1a;SpringBoot--yml配置文件的时间/大小的单位转换_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍SpringBoot的yml&#xff08;properties&#xff09;配置文件的时间/大小的单位转换。 概述 SpringBoot可以将yml中的配置绑定到一个Java类的字段&#x…

论文笔记——Graph Bottlenecked Social Recommendation

文章地址 代码地址 1.1简介 随着社交网络的出现&#xff0c;社交推荐已经成为个性化服务的重要技术。最近&#xff0c;基于图的社交推荐通过捕捉高阶社交影响显示出了有希望的结果。大多数基于图的社交推荐的经验研究直接将观察到的社交网络纳入公式&#xff0c;并基于社交同…

【注册/登录安全分析报告:孔夫子旧书网】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

香港科技大学数据建模MSc(DDM)硕士学位项目25/26招生宣讲会-西安专场

香港科技大学数据建模MSc(DDM)硕士学位项目25/26招生宣讲会-西安专场 &#x1f559;时间&#xff1a;2024 年10 月12日&#xff08;周六&#xff09; 16:00 &#x1f3e0;地点&#xff1a; 西安交大南洋大酒店(交通大学青龙寺店) 行政会议室 &#x1f9d1;‍&#x1f393;嘉宾…

0基础学习PyTorch——GPU上训练和推理

大纲 创建设备训练推理总结 在《Windows Subsystem for Linux——支持cuda能力》一文中&#xff0c;我们让开发环境支持cuda能力。现在我们要基于《0基础学习PyTorch——时尚分类&#xff08;Fashion MNIST&#xff09;训练和推理》&#xff0c;将代码修改成支持cuda的训练和推…

[sql-03] 求阅读至少两章的人数

准备数据 CREATE TABLE book_read (bookid varchar(150) NOT NULL COMMENT 书籍ID,username varchar(150) DEFAULT NULL COMMENT 用户名,seq varchar(150) comment 章节ID ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT 用户阅读表insert into book_read values(《太子日子》…

MindSearch 部署到Github Codespace 和 Hugging Face Space

和原有的CPU版本相比区别是把internstudio换成了github codespace。 教程是https://github.com/InternLM/Tutorial/blob/camp3/docs/L2/MindSearch/readme_github.md 复现步骤&#xff1a; 根据教材安装环境和创建硅基流动 API 然后启动前后端 然后按照教材部署到 Huggi…

安宝特案例 | 某知名日系汽车制造厂,借助AR实现智慧化转型

案例介绍 在全球制造业加速数字化的背景下&#xff0c;工厂的生产管理与设备维护效率愈发重要。 某知名日系汽车制造厂当前面临着设备的实时监控、故障维护&#xff0c;以及跨地域的管理协作等挑战&#xff0c;由于场地分散和突发状况的不可预知性&#xff0c;传统方式已无法…

计算机的错误计算(一百零六)

摘要 探讨含有变元负的整数次方的多项式的计算精度问题。 计算机的错误计算&#xff08;一百零五&#xff09;给出了一个传统多项式的错误计算案例&#xff1b;本节探讨含有变元负的整数次方的多项式的计算精度问题。 例1. 已知 计算 若在Python下计算&#xff0c;则有&…

猎板PCB大讲堂:PCB谐振效应及其对设计的影响

在PCB设计中&#xff0c;谐振效应是一个不可忽视的问题&#xff0c;它可能导致信号完整性问题、电源分配系统&#xff08;PDS&#xff09;工作异常&#xff0c;甚至成为EMI辐射源。以下是关于PCB谐振效应的一些详细信息&#xff1a; 1. 谐振产生的原因&#xff1a; - PCB中…

d2l | 目标检测数据集:RuntimeError: No such operator image::read_file

目录 1 存在的问题2 可能的解决方案3 最终的解决方案3.1 方案一&#xff08;我已弃用&#xff09;3.2 方案二&#xff08;基于方案一&#xff09;3.3 方案三&#xff08;基于方案一&#xff09; 1 存在的问题 李沐老师提供的读取香蕉数据集的函数如下&#xff1a; def…

Ubuntu系统设置bond双网卡

这里我的服务器是Ubuntu 22.04.3 LTS,是高阶版本,设置网卡需要通过netplan 根据你的Ubuntu版本(如使用Netplan或/etc/network/interfaces),选择相应的配置方法。 我这边以root用户登录进服务器,就不需要普通用户每次在命令前添加sudo 1.通常/etc/netplan下配置文件名形…

IDEA开发SpringBoot项目基础入门教程。包括Spring Boot简介、IDEA创建相关工程及工程结构介绍、书写配置文件、Bean对象管理等内容

文章目录 0. 关于本文1. 概述1.1 Spring简介1.2 Spring Boot简介1.3 传统的开发方式1.3.1 简述1.3.2 缺点 1.4 Spring Boot的优点 2. 创建一个简单的Spring Boot应用程序2.1 在IDEA创建项目2.2 pom配置文件内容2.3 启动类2.4 创建Controller 3. 从Maven工程创建Spring Boot工程…

数据结构~二叉搜索树

文章目录 一、二叉搜索树的概念二、二叉搜索树的结构二叉搜索树的性能分析二叉搜索树的插入二叉搜索树的查找二叉搜索树的删除 三、二叉搜索树key和key/value使用场景四、二叉搜索树的练习将二叉搜索树就地转化为已排序的双向循环链表从前序与中序遍历序列构造二叉树二叉树的前…