源码下载  http://www.byamd.xyz/hui-zong-1/

一、需求分析

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

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

(一) 系统业务需求

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

(二)系统技术目标

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

(三)系统的具体需求

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

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

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

二、软件功能结构分析

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

(一)个人信息功能

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

具体流程图如下:

(二)收支管理功能

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

具体流程图如下:

三、数据库设计

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

(一)概念模型

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

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

(二)逻辑模型

  1. 联系转换

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

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

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

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

  1. 关系模式

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

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

(三)物理模型

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

表结构设计

1.用户表:

  1. 收支信息表

四、软件代码设计

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

(一)功能模块

1.登录界面模块

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

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

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

  1. 用户注册模块

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

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

  1. 主界面模块

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

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

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

  1. 个人信息显示模块

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

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

  1. 个人信息修改模块

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

(2)用户名不能修改

  1. 收支信息插入模块

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

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

(3)收支编号不能重复

  1. 收支信息修改界面

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

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

(3)收支编号不能修改

  1. 收支信息删除界面

说明:(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);

}

}

});

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

  1. 用户注册功能实现(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);

}

}

});

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

  1. 主界面模块

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

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

jb1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

}

});

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

jb2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

}

});

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

jb3.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

}

});

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

jb4.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

}

});

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

jb9.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

}

});

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

jb2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

}

});

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

Jb3.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

}

});

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

jb1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

}

});

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

jb1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

}

});

  1. 收支信息删除功能模块(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();

}

}

  1. 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);

}

}

});

}

  1. 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);

}

}

});

}

  1. 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;

}

  1. 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);

}

}

});

}

  1. 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);

}

}

});

}

基于JAVA和SQL SERVER数据库实现个人财务管理系统相关推荐

  1. 基于Java的SQL Server数据库加解密系统设计与实现

    目 录 摘 要 1 ABSTRACT 2 第1章 绪论 3 1.1 数据库加解密系统开发背景 3 1.2 国内外现状 3 1.3 本文的主要工作 4 1.4 论文的组织结构 4 第2章 数据库加密的基 ...

  2. 基于JAVA和SQL SERVER数据库实现的医院病房信息管理系统

    1 系统设计 1.1 设计目标 医院病房管理系统是一种以窗体界面为基础的多功能平台,本系统最根本的目的是让使用者与数据库能够通过系统达到交互,以此来进行医院病房的管理等相关操作.管理员可以通过该平台对 ...

  3. 基于java和Sql Server数据库的停车场管理系统

    一.实验内容: 实现停车场管理系统,应用于车辆的出.入管理. 二.功能要求: 包括车辆进出管理与系统管理等功能模块,可根据车辆停放时间及收费标准自动收费.用户需要事先办理停车卡并充值,停车卡分优惠卡和 ...

  4. [源码和文档分享]基于JAVA和SQL SERVER数据库实现的个人财务管理系统

    一.需求分析 个人财务管理系统是智能化简单化个人管理的重要的组成部分.并且随着计算机技术的飞速发展,计算机在管理方面应用的旁及,利用计算机来实现个人财务管理势在必行.本文首先介绍了个人财务管理系统的开 ...

  5. 【java毕业设计】基于java+Eclipse +SQL Server的工厂进销存管理系统设计与实现(毕业论文+程序源码)——工厂进销存管理系统

    基于java+Eclipse +SQL Server的工厂进销存管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Eclipse +SQL Server的工厂进销存管理系统 ...

  6. java sql进销存_[内附完整源码和文档] 基于Java和Sql Server 2008的陶瓷工厂进销存管理系统...

    摘 要 时代在进步,我们的生产生活方式当然也要相对应的做出改变了.在今天这样一个信息化的时代,计算机软件已经广泛的被用于日常的办公,仓库的库存管理,企业的人员以及资产管理,文字的编辑处理,电子表格的广 ...

  7. java和sql网上书店系统_网上书店管理系统(java。SQL Server数据库)

    [实例简介] 网上书店管理系统(java.SQL Server数据库) [实例截图] [核心代码] 网上书店系统(1) └── 网上书店系统 └── Store ├── bookDB │   ├── ...

  8. 通过Java连接Sql Server数据库

    1.下载JDBC JDBC是Java DateBase Connectivity的简写,翻译过来就是java连接数据库,或者更通俗地说就是java语言操作数据库.JDBC的本质其实是官方定义的一套操作 ...

  9. 用Java向SQL Server数据库中插入float数据报错An error occurred while converting the Float value to JDBC data type

    作者:翁松秀 用Java向SQL Server数据库中插入float数据报错 用Java向SQL Server数据库中插入float数据报错 报错信息: 报错原因: 解决方案: 报错信息: An er ...

最新文章

  1. OMG:为什么用了索引,查询还是慢?
  2. BAD SLAM | 直接法实时BA+RGBD基准数据集(CVPR2019)
  3. 【深度学习】协同优化器和结构化知识蒸馏
  4. 11月24日struts培训日记
  5. Blazor 0.5.0 升级及新特性介绍
  6. java读取word文档内容_合并多个Word文档内容,还在复制粘贴就out了,同事五秒轻松搞定...
  7. JavaScript学习(七十二)—严格模式
  8. mysql基础-数据库连接、创建、删除、选择等基本操作详解(一)
  9. html小作业--新闻栏目
  10. SIGKDD2021 | 淘宝搜索向量化召回实践
  11. git报错:remote: error: hook declined to update refs/heads/master
  12. win8.1兼容matlab吗,Win8.1 安装 Matlab2012a
  13. “毒液” 高危漏洞背后的技术较量
  14. 企业微信hook接口,朋友圈功能开发教程,逆向开发,企业微信营销开发
  15. #includelt;和#include
  16. android新闻客户端(有源码)
  17. 【科创人】悦跑圈CTO钱荣明:创业成瘾,识人为先
  18. 掌财社:Python 机器学习工具包SKlearn的安装与使用
  19. 广西免考职称英语计算机,广西职称英语免考条件及免试人群
  20. FFmpeg介绍及了解常用指令(●----●)

热门文章

  1. AutoCAD二次开发(C#)完成后,如何实现CAD启动时自动加载dll(不必输入netload)?
  2. ENVI裁剪遥感图像问题
  3. canal没有监听到mysql,缓存不能同步
  4. JavaSE day6——面向对象
  5. 小猫爪:AWR294x学习笔记01-AWR294x之MCAN
  6. 男人必进(女生就不要进了)
  7. Vj程序设计作业H7
  8. ORA-65096 公用用户名或角色无效
  9. php保留一位小数_php保留小数点后两位的几种方法
  10. 2021-2027全球及中国潮牌鞋行业研究及十四五规划分析报告