java+swing+jdbc 个人记账管理系统(GUI)

个人记账管理系统的主要功能如下:

(1)用户信息管理:用户信息管理需要实现新用户注册,用户登录,用户个人信息修改,密码修改四个基本功能。
(2)记账管理:记账管理需要实现收支记录的增删改查。支出信息(支出金额,支出使用的账户,支出消费的类别,支出发生日期,备注),收入信息(收入增加的账户,收入的来源科目,收入发生日期,备注)。需要注意的是:记账科目之间要实现收支平衡,支出科目增长(减少)的金额即资产账户余额减少(增长)的金额。例如,支出食物-蔬菜10元,使用账户饭卡里的余额,则支出食物-蔬菜类别金额增10,饭卡余额减10。记账过程中需调用已添加的资产账户和科目类别。
(3)账户管理:账户管理需要实现用户可对个人账户增删改查。用户需要在系统中添加新的个人账户,个人账户可以是暂时余额为零。用户可以对以后不再使用的账户进行清理,对添加有误的账户进行修改,查询已添加所有账户的功能。已添加的账户可以在记账功能,账志报表功能中被调用。
(4)科目管理:科目管理需要实现用户可对科目类别进行增删改查操作。用户需要根据个人需求在系统内添加自定义科目,科目可以分为两级,一级是大类科目,二级是小类科目,大类科目包含小类科目。用户可以对添加错误或以后不再使用的科目进行删除或修改操作,用户可查询所有已添加的科目,并可以在记账中通过下拉框选择使用科目。
(5)账志报表管理:账志报表管理需要实现用户需要对已记录的账目信息进行查询,编辑、添加等操作功能。用户需要在系统中选择查询某一时间点或时间段的记账信息,其中信息要包括账户、收入、支出、科目类别,也可以对账表历史记录进行修改。
(6)系统退出功能。

运行图


部分代码

代码比较多,如需要全部代码和数据库内容,请+vx:Bonne_nuit_6
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.util.ArrayList;/**登录界面*/
public class login extends JFrame implements ActionListener {JLabel welcome = new JLabel("欢迎使用个人记账管理系统");JLabel user, password;JTextField username;JPasswordField passwordField;JButton loginButton;JButton button;CardLayout cardLayout = new CardLayout();JPanel card;JPanel cardPanel, cardPanel2, cardPanel3, cardPanel4;JTabbedPane jTabbedPane, jTabbedPane2;Users users;//Font font = new Font("宋体", Font.BOLD | Font.ITALIC, 20);public login() {init();}private void init() {welcome.setFont(new Font("方正舒体", Font.ITALIC, 30));setTitle("个人记账管理系统");setLayout(new BorderLayout());user = new JLabel("用户名");password = new JLabel("密码");button = new JButton("注册");card = new JPanel(cardLayout);JPanel panel1 = new JPanel(new BorderLayout());username = new JTextField();passwordField = new JPasswordField();loginButton = new JButton("Login!");loginButton.addActionListener(this);JPanel titlepanel = new JPanel(new FlowLayout());//标题面板JPanel loginpanel = new JPanel();//登录面板loginpanel.setLayout(null);welcome.setBounds(250, 100, 400, 40);user.setBounds(340, 170, 50, 20);password.setBounds(340, 210, 50, 20);username.setBounds(390, 170, 120, 20);passwordField.setBounds(390, 210, 120, 20);loginButton.setBounds(340, 250, 80, 25);button.setBounds(430, 250, 80, 25);loginpanel.add(welcome);loginpanel.add(user);loginpanel.add(password);loginpanel.add(username);loginpanel.add(passwordField);loginpanel.add(loginButton);loginpanel.add(button);panel1.add(titlepanel, BorderLayout.NORTH);panel1.add(loginpanel, BorderLayout.CENTER);//panel1.add(loginButton, BorderLayout.SOUTH);card.add(panel1, "login");//card.add(cardPanel, "info");add(card);setBounds(300, 100, 900, 600);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);button.addActionListener(new ActionListener() {        //为重置按钮添加监听事件//同时清空name、password的数据public void actionPerformed(ActionEvent arg0) {// TODO 自动生成方法存根new zhuce();}});}public static void main(String[] args) {new login();}@Overridepublic void actionPerformed(ActionEvent e) {boolean flag = false;//用来标志用户是否正确if (e.getSource() == loginButton) {ArrayList<Users> list = new CheckUsers().getUsers();//获得所有用户信息for (int i = 0; i < list.size(); i++) {//遍历所有用户信息,以此来判断输入的信息是否正确users = list.get(i);String passwordStr = new String(passwordField.getPassword());if (username.getText().equals(users.getName()) && passwordStr.equals(users.getPassword())) {//type=users.getType();//System.out.println("登录人员类别"+type);JOptionPane.showMessageDialog(null, "欢迎(用户)" + username.getText() + "登录", "记账系统", JOptionPane.PLAIN_MESSAGE);//当输入的信息正确时,就开始加载选项卡界面,并把选项卡界面加入到卡片布局器中Cookm cookm=new Cookm(users);CooUsers cooUsers=new CooUsers(users);Coozj coozj=new Coozj(users);Coozh coozh=new Coozh(users);Coozzbb coozzbb=new Coozzbb(users);Coozzbbs coozzbbs=new Coozzbbs(users);cardPanel = new JPanel();cardPanel2 = new JPanel();cardPanel3 = new JPanel();cardPanel4 = new JPanel();jTabbedPane = new JTabbedPane(JTabbedPane.TOP);jTabbedPane.add("用户信息管理", cooUsers);jTabbedPane.add("记账管理", coozj);jTabbedPane.add("账户管理", coozh);jTabbedPane.add("科目管理",cookm);jTabbedPane.add("账志报表管理",coozzbb);jTabbedPane.add("账志报表时间段查询",coozzbbs);cardPanel.add(jTabbedPane);card.add(cardPanel, "info");cardLayout.show(card, "info");//输入信息正确就显示操作界面,否则重新输入正确信息flag = true;break;//如果信息正确就退出遍历,提高效率}}if (!flag) {//信息不正确,重新输入JOptionPane.showMessageDialog(null, "请输入正确的用户名或密码", "警告", JOptionPane.WARNING_MESSAGE);username.setText("");passwordField.setText("");}}}/**连接到SQL server*/public static class GetConnection {private Connection con=null;public Connection GetConnection(){String URL="jdbc:mysql://localhost:3306/jizhang?&useSSL=false&serverTimezone=UTC";//数据库位置String USER="root";String KEY="root";try {Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动,连接数据库,con= DriverManager.getConnection(URL, USER, KEY);} catch (Exception e) {// TODO 自动生成的 catch 块e.printStackTrace();}return con;}}public static class Users {private String name;private String password;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}public static class zhuce extends JFrame {Connection connection = new GetConnection().GetConnection();JLabel Uname, Upassword, Utype, SP;JTextField UnameText, UpasswordText, UtypeText;JButton seek, add, delete, edit;public zhuce() {setLayout(null);//整个采用流动式布局   很好的适应了表格带来的影响setBounds(300, 100, 900, 600);Uname = new JLabel("用户:");UnameText = new JTextField(10);Upassword = new JLabel("密码:");UpasswordText = new JTextField(10);add = new JButton("注册");add(Uname);add(UnameText);add(Upassword);add(UpasswordText);add(add);Uname.setBounds(340, 170, 50, 20);Upassword.setBounds(340, 210, 50, 20);UnameText.setBounds(390, 170, 120, 20);UpasswordText.setBounds(390, 210, 120, 20);add.setBounds(340, 250, 80, 25);setVisible(true);add.addActionListener(e -> {try {PreparedStatement statement = connection.prepareStatement("insert into Users values(?,?)");statement.setString(1, UnameText.getText());statement.setString(2, UpasswordText.getText());//statement.setString(3, UtypeText.getText());/*statement.setString(4, AtimeText.getText());statement.setString(5, AreasonText.getText());*/statement.executeUpdate();} catch (SQLException e1) {e1.printStackTrace();}JOptionPane.showMessageDialog(this, "注册成功");});}}public static class CheckUsers {GetConnection getConnection=new GetConnection();Connection connection=getConnection.GetConnection();public ArrayList<Users> getUsers(){ArrayList<Users>list = new ArrayList<>();try {PreparedStatement state=connection.prepareStatement("select *from Users");ResultSet res=state.executeQuery();while(res.next()){Users user = new Users();user.setName(res.getString(1));user.setPassword(res.getString(2));list.add(user);}} catch (Exception e) {e.printStackTrace();// TODO: handle exception}return list;}}

看完不妨点个赞 :)

java swing jdbc个人记账管理系统的设计与实现(GUI)相关推荐

  1. JAVA Swing + Jdbc 实现宿舍管理系统

    课程设计目的 该系统为学生宿舍管理系统,鉴于学校规模的不断扩大,学生数量的增加导致宿舍数量不断增加,学校也逐渐认识到宿舍的卫生和安全的重要性,为避免学校使用人力,时间对大量的宿舍进行检查,本系统站在学 ...

  2. Java课程设计-基于Java Swing的学生信息管理系统-版本二

    Java课程设计-基于Java Swing的学生信息管理系统-版本二 1.介绍 2.相关技术 3. 代码仓库 4.所需环境 5.安装教程 6.运行截图 7.相关博客 1.介绍 设计一个简单学生个人信息 ...

  3. Android记账系统可行性分析,毕业设计论文-基于安卓的大学生记账管理系统的设计与实现.doc...

    毕业设计论文-基于安卓的大学生记账管理系统的设计与实现 毕 业 设 计 中文题目基于安卓的大学生记账管理系统的设计与Design and Implementation of theCollege St ...

  4. 基于java的CRM客户关系管理系统的设计与实现

    本科毕业设计(论文) 题 目: 基于java的CRM客户关系管理系统的设计与实现 专题题目: 说 明 请按以下顺序编排: 封面 任务书 开题报告 中外文摘要及关键词 目录 正文 附录(可选) 参考文献 ...

  5. 基于java基于Web的人事管理系统的设计与实现计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java基于Web的人事管理系统的设计与实现计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java基于Web的人事管理系统的设计与实现计算机毕业设计源码+系统+lw文档+my ...

  6. Java+Swing+Mysql实现停车场管理系统

    Java+Swing+Mysql实现停车场管理系统 一.系统介绍 1.系统功能 2.环境配置 3.数据库表 4.工程截图 二.系统展示 1.登录页 2.用户-主页 3.用户-信息管理-计费标准 4.用 ...

  7. 基于Java的联赛综合信息管理系统的设计与实现

    技术:Java.JSP等 摘要: 伴随着科学技术一日千里的革新,各种先进技术像是雨后春笋般冒了出来,给我们的生活带来了翻天覆地的巨变,而其中的佼佼者便是计算机技术.计算机技术的飞速发展,使各行各业在计 ...

  8. 汽车租赁系统java基于数据库_基于数据库和JAVA的网上汽车租赁管理系统的设计(MySQL)...

    基于数据库和JAVA的网上汽车租赁管理系统的设计(MySQL)(论文11000字,程序代码,MySQL数据库) 摘要:本文用JAVA编程语言为主体,用JDBC连接MySQL数据库来设计和实现这个系统. ...

  9. java 雅思_基于JAVA的雅思考试管理系统的设计与实现(SSH,MySQL)(含录像)

    基于JAVA的雅思考试管理系统的设计与实现(SSH,MySQL)(含录像)(任务书,毕业论文12000字,程序代码,MySQL数据库) 本文分析了基于JAVA的雅思考试管理系统的设计与实现技术,结合实 ...

最新文章

  1. Extjs4 常用布局总结
  2. Python 技术篇-用PIL库修改图片透明度实例演示,改变png图片色道为RGBA、RGB
  3. php redis decr_对于高并发的问题你知道怎么处理吗?php接口如何处理并发问题
  4. winform TreeView 节点选择
  5. centeros7安装mysql - 风中追风_lonely - 博客园
  6. react学习(31)----react父传子
  7. ffmpeg 分辨率 压缩_Ffmpeg 视频压缩的几个关键参数
  8. 【Django 2021年最新版教程28】前端模板中 时间日期星期格式化
  9. 计算机0812是学硕还是专硕,的计算机是专硕还是学硕
  10. Overleaf 指南:30 分钟 LaTeX 入门
  11. 5-6月份线上可靠性、软件测试、信息安全培训
  12. 大数据和小数据有什么区别?
  13. Java8中关于LocalDateTime转换方法总结
  14. php设计一个盒子类代码_PHP白盒审计工具RIPS源码简析
  15. sql字符串和数字转换
  16. Allegro Cadence 视频教程+信号完整性
  17. air dots 配对_Redmi AirDots可以作为iphone的合格伴侣吗?
  18. qt中如何模拟按钮点击_Qt 实现按钮点击切换按钮图片
  19. oracle批量清除会话,oracle快速彻底清理kill会话
  20. 中间件漏洞(Apache篇)

热门文章

  1. 织网模板html5,织网的文言文
  2. 玻璃幕墙施工资质要求
  3. error C2664: 'LONG CTabCtrl::InsertItem(int,TCITEMW *)' : cannot convert parameter 2 from 'char *' t
  4. win7硬件要求_win7系统如何开启显卡硬件加速 win7系统开启显卡硬件加速方法【详解】...
  5. 转载:长期不变的FTP账号
  6. VC2010中显示行号
  7. 【附源码】计算机毕业设计java中药城药材销售管理系统设计与实现
  8. 【附源码】计算机毕业设计SSM商场VIP管理系统
  9. 探花交友_第5章_圈子、小视频功能实现
  10. 第二届南京六合创业大赛参赛流程|创成汇