基于JAVA和SQL SERVER数据库实现的个人财务管理系统

Cynicism

发布日期: 2018-10-25 21:36:27 浏览量: 4261
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、需求分析

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

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

1.1 系统业务需求

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

1.2 系统技术目标

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

1.3 系统的具体需求

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

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

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

二、软件功能结构分析

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

2.1 个人信息功能

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

具体流程图如下:

2.2 收支管理功能

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

具体流程图如下:

三、数据库设计

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

3.1 概念模型

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

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

3.2 逻辑模型

联系转换

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

其逻辑结构设计如下

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

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

关系模式

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

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

3.3 物理模型

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

3.4 表结构设计

用户表

收支信息表

四、软件代码设计

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

4.1 功能模块

登录界面模块

说明:

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

  • 当用户输入的用户名或者密码输入错误时,会提示用户名或者密码输入错误

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

用户注册模块

说明:

  • 该界面为用户注册模块

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

主界面模块

说明:

该界面为用户主信息界面

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

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

个人信息显示模块

说明:

  • 该界面为用户显示模块

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

个人信息修改模块

说明:

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

  • 用户名不能修改

收支信息插入模块

说明:

  • 该界面为添加收支信息界面

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

  • 收支编号不能重复

收支信息修改界面

说明:

  • 该界面为收支信息修改界面

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

  • 收支编号不能修改

收支信息删除界面

说明:

  • 该功能与在主界面上

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

4.2 代码实现

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

  1. jb1.addActionListener(new ActionListener() {//登陆按钮
  2. public void actionPerformed(ActionEvent e) {
  3. jLabel5.setVisible(false);
  4. String ad = jf1.getText();
  5. String pass = jf2.getText();
  6. int i=0;
  7. String sc = "select userName,passWord from admin where userName='"+ad+"'";
  8. try {
  9. ResultSet rs = st.executeQuery(sc);
  10. while (rs.next()) {
  11. i++;
  12. String userName = rs.getString("userName");
  13. System.out.println(userName+"sdgdfgdf");
  14. String password = rs.getString("passWord");
  15. if (!ad.equals(userName)||userName.equals("")) {
  16. jLabel5.setVisible(true);
  17. } else if (!pass.equals(password)) {
  18. jLabel6.setVisible(true);
  19. } else {
  20. JOptionPane.showMessageDialog(null, "登陆成功!");
  21. Show show = new Show();
  22. show.s=jf1.getText();
  23. show.setVisible(true);
  24. setVisible(false);
  25. }
  26. }
  27. System.out.println(i+"sdfd");
  28. } catch (SQLException ex) {
  29. Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);
  30. }
  31. if(i==0){
  32. jLabel5.setVisible(true);
  33. }
  34. }
  35. });

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

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

  1. jb1.addActionListener(new ActionListener() {
  2. public void actionPerformed(ActionEvent e) {
  3. try {
  4. String s1 = jf1.getText();//y用户名
  5. String s2 = jf2.getText();//姓名
  6. String s12 = jf7.getText();//密码
  7. String s3 = (String) jcb.getSelectedItem();//性别
  8. String s5 = jf4.getText();//职业
  9. String s6 = jf5.getText();//身份证号码
  10. String s7 = jf6.getText();//电话号码
  11. String s8 = (String) jcb1.getSelectedItem();
  12. String s9 = (String) jcb2.getSelectedItem();
  13. String s10 = (String) jcb3.getSelectedItem();
  14. String s11 = s8 + "-" + s9 + "-" + s10;//出生日期
  15. ResultSet rs;
  16. String str ="select userName from admin where userName='"+s1+"'";
  17. rs = st.executeQuery(str);
  18. int i=0;
  19. while (rs.next()) {
  20. i++;
  21. }
  22. if (i == 0) {
  23. if (s6.length() != 18 || s7.length() != 11) {
  24. if (s6.length() != 18) {
  25. jLabel5.setVisible(true);
  26. }
  27. if (s7.length() != 11) {
  28. jLabel14.setVisible(true);
  29. }
  30. } else {
  31. String sql = "insert into admin Values ('" + s1 + "','" + s12 + "','" + s2 + "','" + s3 + "','" + s11 + "','" + s7 + "','" + s5 + "','" + s6 + "')";
  32. st.executeUpdate(sql);
  33. JOptionPane.showMessageDialog(null, "注册成功");
  34. setVisible(false);
  35. }
  36. }
  37. else{
  38. jLabel15.setVisible(true);
  39. }
  40. } catch (SQLException ex) {
  41. Logger.getLogger(UserInsert.class.getName()).log(Level.SEVERE, null, ex);
  42. }
  43. }
  44. });

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

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

  1. jb1.addActionListener(new ActionListener() {
  2. public void actionPerformed(ActionEvent e) {
  3. .......
  4. .......
  5. }
  6. });

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

  1. jb2.addActionListener(new ActionListener() {
  2. public void actionPerformed(ActionEvent e) {
  3. .......
  4. .......
  5. }
  6. });

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

  1. jb3.addActionListener(new ActionListener() {
  2. public void actionPerformed(ActionEvent e) {
  3. .......
  4. .......
  5. }
  6. });

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

  1. jb4.addActionListener(new ActionListener() {
  2. public void actionPerformed(ActionEvent e) {
  3. .......
  4. .......
  5. }
  6. });

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

  1. jb9.addActionListener(new ActionListener() {
  2. public void actionPerformed(ActionEvent e) {
  3. .......
  4. .......
  5. }
  6. });

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

  1. jb2.addActionListener(new ActionListener() {
  2. public void actionPerformed(ActionEvent e) {
  3. .......
  4. .......
  5. }
  6. });

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

  1. Jb3.addActionListener(new ActionListener() {
  2. public void actionPerformed(ActionEvent e) {
  3. .......
  4. .......
  5. }
  6. });

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

  1. jb1.addActionListener(new ActionListener() {
  2. public void actionPerformed(ActionEvent e) {
  3. .......
  4. .......
  5. }
  6. });

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

  1. jb1.addActionListener(new ActionListener() {
  2. public void actionPerformed(ActionEvent e) {
  3. .......
  4. .......
  5. }
  6. });

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

  1. Jb7.addActionListener(new ActionListener() {
  2. public void actionPerformed(ActionEvent e) {
  3. .......
  4. .......
  5. }
  6. });

五、总结

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

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

上传的附件 cloud_download 基于JAVA和SQL SERVER数据库实现的个人财务管理系统.7z ( 457.37kb, 573次下载 )
error_outline 下载需要15点积分

keyboard_arrow_left上一篇 : 基于huffman哈夫曼树实现的文件压缩和解压 基于QT的网络五子棋游戏程序的设计与实现 : 下一篇keyboard_arrow_right



mahmutjan
2019-06-16 00:09:52
基于JAVA和SQL SERVER数据库实现的个人财务管理系统 这个软件下载的是别的东西了
虾米
2020-05-09 17:43:27
用eclipse和sqlserver就能打开 两个需要连一下
20200528
2020-06-02 20:19:03
那个s是什么,几乎每个查询都有 userName =‘ ”+s+“’,我知道这语句是用来匹配相应用户账号的,便于分用户查询,但是s又没有内容,只是一开始的String s声明好了而已,这匹配了什么。
sober
2020-09-09 09:28:43
很有精神!
ii
2020-09-29 19:15:43
数据库脚本执行成功后,在左边栏里数据库文件下怎么没有见新的数据库出现
ii
2020-09-29 19:17:35
数据库脚本执行成功后,在左边栏里数据库文件下怎么没有见新的数据库出现 项目怎么导入不进去eclipse

发送私信

白色衣服的背影

5
文章数
4
评论数
eject