基于JDBC的账务管理系统(一)

简介: 基于JDBC的账务管理系统

一、项目介绍

1.1 项目目标

本项目为JAVAEE基础和数据库的综合项目,包含了若干个知识点,达到将从基础班到现在所学的知识综合使用,提高了我们对项目的理解与知识点的运用。
熟练View层、Service层、Dao层之间的方法相互调用操作
熟练使用工具类操作数据库表完成增删改查以及登录的功能
通过本项目,让我们了解公司项目开发的流程,充分的掌握项目需求分析、设计与功能的代码实现。提高同学们独立分析需求与功能实现的能力。

二、项目环境搭建

2.1 数据准备

/*
  创建账务管理的数据库
*/
CREATE DATABASE account CHARACTER SET utf8;
USE account;
/*
 用户表
 字段:
  用户id
  用户名 username
  密码 password
*/
CREATE TABLE ac_user(
  id INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(20),
  password VARCHAR(20),
  isManager int -- 1.管理员;0:普通用户;
);
INSERT ac_user(username,password,isManager)
values('admin','admin',1),
('user','user',0)
/*
  创建数据表,表名账务
  字段,列
  主键
  分类名称  可变字符
  金额  double
  支付方式  可变字符 (支付,收入方法)
  创建日期 date
  账务描述 可变字符
*/
CREATE TABLE ac_account(   
   id INT PRIMARY KEY AUTO_INCREMENT, -- 主键   
   sortname VARCHAR(200),-- 分类名称      
   money decimal(10,2),-- 金额   
   type VARCHAR(100),-- 支付方式   
   createtime DATE,-- 创建日期   
   desp  VARCHAR(1000)-- 账务描述
);
SELECT * FROM ac_account;
-- 写入测试的数据
INSERT  INTO ac_account(id,sortname,money,type,createtime,desp) VALUES (1,'吃饭支出',247,'交通银行','2016-03-02','家庭聚餐');
INSERT  INTO ac_account(id,sortname,money,type,createtime,desp) VALUES (2,'工资收入',12345,'现金','2016-03-15','开工资了');
INSERT  INTO ac_account(id,sortname,money,type,createtime,desp) VALUES (3,'服装支出',1998,'现金','2016-04-02','买衣服');
INSERT  INTO ac_account(id,sortname,money,type,createtime,desp) VALUES (4,'吃饭支出',325,'现金','2016-06-18','朋友聚餐');
INSERT  INTO ac_account(id,sortname,money,type,createtime,desp) VALUES (5,'股票收入',8000,'工商银行','2016-10-28','股票大涨');

2.2 技术选型

每个项目都要使用一些已经成熟的技术,它们通常是由一些专业组织或团队所提供的开源免费技术。在今后的学习过程中,我们会逐渐对这些专业组织有所了解。本项目中使用的技术如下:
  • DruidDruid数据连接池依赖该jar包
  • druid-1.0.9.jar
  • 数据库驱动MySQL的JDBC驱动包,用JDBC连接MySQL数据库必须使用该JAR包。
  • mysql-connector-java-5.1.37-bin.jar
    2.3 JDBC工具类
    每个项目都会用到一些工具类,本项目也不例外。JDBC工具类之前也讲过,在这里就不在详细描述!
package cn.yh.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
/**
 * druid的通用类;
 * 1.导入jar和配置文件;
 * 2.创建一个通用类,static,读取文件;
 * 3.工厂来获取?连接池--->连接;
 */
public class DruidUtil {
    //成员变量
    static DataSource ds=null;
    static Connection conn=null;
    static PreparedStatement pst=null;
    static ResultSet rs=null;
    static {
        try {
            InputStream fis = DruidUtil.class.getClassLoader().getResourceAsStream("druid.properties");
            //FileInputStream fis=new FileInputStream("src/db.properties");
            Properties prop=new Properties();
            prop.load(fis);
            //通过工厂,来获取连接池对象ds
             ds= DruidDataSourceFactory.createDataSource(prop);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //获取连接:DriverManager
    public static Connection getConnection(){
        try {
            conn= ds.getConnection();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return conn;
    }
    //3.通用的增删改,easy;注意理解思想:可变参;由于也不清楚,具体的类型,所以,写Object; ... :可变参;
    //可变参:本质是数组;注意:当没有参数的时候,可以直接写update(sql,null),update(sql);
    public static int update(String sql,Object ... params){
        int result=0;
        //3.2 获取预编译语句对象;
        try {
            conn=getConnection(); //从本类来调用一下;
            System.out.println(conn);
            pst = conn.prepareStatement(sql);
            //针对?赋值;
            if(params!=null){
                for (int i = 0; i < params.length; i++) {
                    pst.setObject(i+1,params[i]);
                }
            }
            result=pst.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            close(null,pst,conn);
        }
        return result;
    }
    //4.通用封装查询
    //5.通用封装等;
    //6.
    public static void close(ResultSet r, Statement s, Connection c){
        if (c!=null){
            try {
                c.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (r!=null){
            try {
                r.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (s!=null){
            try {
                s.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

2.4 项目分层(分包)

项目分层,分包好处是方便管理,各自负责各自的功能,也方便我们找错改问题!

  • view层作用: 视图层,即项目中的界面
  • controller层作用: 控制层, 获取界面上的数据,为界面设置数据; 将要实现的功能交给业务层处理
  • service层作用(可省略): 业务层, 功能的实现, 与controller控制层和数据访问层DAO交互, 将对数据库的操作交给DAO数据访问层来处理
  • dao层作用: 数据访问层, 用来操作数据库表的数据
  • entity 实体包: 存放JavaBean
  • util工具包:存放项目中使用到的工具类
  • test 测试包: 存放项目功能测试的代码
    2.5 工程创建

    三、相关类编写

3.1 相关类创建

主界面类:

public class TestUtil {
    @Test
    public void test01(){
        MainView mv=new MainView();
        mv.login();
    }
}


基于JDBC的账务管理系统(二)https://developer.aliyun.com/article/1433677

目录
相关文章
|
6月前
|
Java 数据库 数据安全/隐私保护
基于JavaSE+JDBC使用控制台操作的简易购物系统【源码+数据库】
基于JavaSE+JDBC使用控制台操作的简易购物系统【源码+数据库】
|
6月前
|
机器学习/深度学习 算法 前端开发
基于JDBC的账务管理系统(三)
基于JDBC的账务管理系统
31 0
|
6月前
|
Java 数据库连接
基于JDBC的账务管理系统(二)
基于JDBC的账务管理系统
49 0
|
6月前
|
前端开发 Java BI
Servlet+Jsp+JDBC实现房屋租赁管理系统(源码+数据库+论文+系统详细配置指导+ppt)
Servlet+Jsp+JDBC实现房屋租赁管理系统(源码+数据库+论文+系统详细配置指导+ppt)
|
Java 关系型数据库 MySQL
JSP在线客户服务支持管理系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 在线客户服务支持管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
77 0
|
Java 关系型数据库 MySQL
JSP 科研管理系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 科研管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。系统主要采用B/S模式开发。
58 0
|
Java 关系型数据库 MySQL
JSP实践教学平台系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 实践教学平台系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,数据库文件名是jspskcsjpt.sql,系统名称kcsjpt,使用java语言开发系统主要采用B/S模式开发。
73 0
|
1月前
|
Java 关系型数据库 MySQL
mysql5.7 jdbc驱动
遵循上述步骤,即可在Java项目中高效地集成MySQL 5.7 JDBC驱动,实现数据库的访问与管理。
128 1
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
86 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
37 0