一、需求分析
个人财务管理系统是智能化简单化个人管理的重要的组成部分。并且随着计算机技术的飞速发展,计算机在管理方面应用的旁及,利用计算机来实现个人财务管理势在必行。本文首先介绍了个人财务管理系统的开发目的,其次对个人财务管理系统的需求分析做了详细的描述。接着,又对系统数据库设计和功能结构的划分做了详细论述。然后又对个人财务管理系统的实现做了详尽的说明。在报告的最后给出了项目的测试结果以及结果分析。
本系统是对个人的收支情况做一个简单的管理,其中宝库哦个人信息管理以及收支信息管理。 其中,个人信息管理包括用户对自己的信息进行增删查改的一些操作,同样,收支信息管理包括用户对收支情况的信息进行增删查改的管理
(一) 系统业务需求
该系统具体需求应该有用户登录模块,用户修改信息模块,用户修改信息模块,收支查询模块,收支删除模块,收支添加模块,收支修改模块。
(二)系统技术目标
该系统的目标主要是能对个人信息以及收支信息进行较快的增删查改,同时也能对收支信息进行各种方式的查询。
(三)系统的具体需求
根据以上对系统的任务和目标的分析,系统的具体需求如下:
个人信息:用户名(唯一),密码,姓名,性别,出生日期,工作,身份证号,电话号码
收支信息:收支编号(唯一),收支日期,收支方式,收支项目,收入金额,支出金额,,总金额。
二、软件功能结构分析
由需求分析可知,软件的功能应包括:个人信息管理,收支信息管理。其中,个人信息应包括,个人信息的增删查该,登录时候验证功能。收支信息管理应包括对对收支信息的各种方式查询,以及对收支信息的增加,修改以及删除功能。当然,每个用户应对应其各自的收支信息。
(一)个人信息功能
在登录界面用户输入用户名以及密码,如果用户与密码都输入正确则可以登录进系统,如果其中任何一项与数据库中的数据不匹配则要求重新输入。当用户没有账户时候,可以点击登录界面的注册按钮注册。成功进入系统后,可以进行个人信息的查询以及修改。
具体流程图如下:
(二)收支管理功能
用户登录成功后进入主界面后可以选择查询方式,全部查询:查询用户所有收入支出的信息;收入查询:查询用户收入信息;支出查询:查询用户支出信息;按日期查询:查询用户当天的收入支出信息。用户也可以对收入支出信息进行修改和删除以及添加。
具体流程图如下:
三、数据库设计
经过以上的需求的分析以及系统功能的分析,需要建立出该系统数据库的各种模型,为建立一个好的,完善的数据库做准备。
(一)概念模型
由于该系统涉及的较少,只涉及到用户以及财务管理,所以设计比较简单。一个用户可以有多条收支记录,所以用户表与收支表是一对多的关系。通过PowerDesigner工具设计出的概念数据模型如下:
其对应的E-R模型如下图:
(二)逻辑模型
1.联系转换
一个用户可以有多条记录,而一条记录只能对应一个用户,所以用户与记录之间是一对多的关系。
2.其逻辑结构设计如下:
个人信息(用户名,密码,姓名,性别,出生日期,工作,身份证号,电话号码)
收支信息(收支编号,收支日期,收支方式,收支项目,收入金额,支出金额,总金额)
3.关系模式
个人信息(用户名,密码,姓名,性别,出生日期,工作,身份证号,电话号码)
收支信息(收支编号,收支日期,收支方式,收支项目,收入金额,支出金额,总金额)
(三)物理模型
通过PowerDesigner中的概念模型生成物理模型如下:
(四) 表结构设计
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