当前位置: 首页 > news >正文

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

一、需求分析

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

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

(一) 系统业务需求

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

(二)系统技术目标

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

(三)系统的具体需求

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

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

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

二、软件功能结构分析

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

(一)个人信息功能

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

具体流程图如下:

(二)收支管理功能

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

具体流程图如下:

三、数据库设计

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

(一)概念模型

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

相关文章:

  • Python编码系列—Python备忘录模式:掌握对象状态保存与恢复技术
  • HTTP请求中GET与POST方法的核心区别与用途解析
  • VMware下的ubuntu显示文字太小的自适应显示调整
  • 力扣题解2286
  • 【高分系列卫星简介——高分五号卫星(GF-5)】
  • Jenkins入门:从搭建到部署第一个Springboot项目(踩坑记录)
  • 【NodeJS】npm、yarn、pnpm当前项目设置国内镜像源
  • 【算法】分治:归并排序之LCR 170.交易逆序对的总数(hard)
  • linux脚本工具
  • 【Godot4.3】简单物理模拟之圆粒子碰撞检测
  • 【Java】虚拟机(JVM)内存模型全解析
  • RM服务器研究(一)
  • SpringBoot3.X配置OAuth
  • vLLM (6) - Scheduler BlockSpaceManager
  • 数据结构:栈 及其应用
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 11111111
  • centos安装java运行环境jdk+tomcat
  • download使用浅析
  • Fastjson的基本使用方法大全
  • HTTP中GET与POST的区别 99%的错误认识
  • Redux 中间件分析
  • 力扣(LeetCode)965
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 如何设计一个微型分布式架构?
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 试着探索高并发下的系统架构面貌
  • 一个SAP顾问在美国的这些年
  • 用quicker-worker.js轻松跑一个大数据遍历
  • Android开发者必备:推荐一款助力开发的开源APP
  • 第二十章:异步和文件I/O.(二十三)
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • $.ajax()
  • (¥1011)-(一千零一拾一元整)输出
  • (1)Nginx简介和安装教程
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (8)STL算法之替换
  • (CPU/GPU)粒子继承贴图颜色发射
  • (八)c52学习之旅-中断实验
  • (二十三)Flask之高频面试点
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (新)网络工程师考点串讲与真题详解
  • (转)iOS字体
  • ..回顾17,展望18
  • .net mvc 获取url中controller和action
  • .Net Winform开发笔记(一)
  • .NET多线程执行函数
  • .net和jar包windows服务部署
  • .net开发日常笔记(持续更新)
  • .NET上SQLite的连接
  • @Builder注释导致@RequestBody的前端json反序列化失败,HTTP400
  • @SpringBootApplication 注解
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [AIGC] 如何建立和优化你的工作流?