基于javaJDBC技术的账务管理系统(思路+代码)
技術要點:
1.JDBC工具類的搭建
public class JDBCutils {private static BasicDataSource datasource = new BasicDataSource();static {datasource.setDriverClassName("com.mysql.cj.jdbc.Driver");datasource.setUrl("jdbc:mysql://localhost:3306/zb?serverTimezone=UTC");datasource.setUsername("root");datasource.setPassword("123456");datasource.setInitialSize(10);datasource.setMaxIdle(8);datasource.setMinIdle(3);}public static DataSource getdatasource() {return datasource;} }?
2.數據庫增刪改查四大功能熟練使用
3.數據IO流的掌握
4.確定幾個層級之間的關系與連通關系(如下圖所示)
步驟一:環境的搭建及數據庫的建立
需要用到的幾個包(commons-dbcp,commons-dbutils,commons-pool,mysql-connector-java)
需要在mysql中建立以個數據庫,同時建立一張表格來存儲用戶數據,表格屬性包括賬務名、賬務類別、金額、轉出賬戶、創建時間、具體描述。
步驟二:模塊的構建
按照上述圖需要搭建4個模塊,不同模塊有不同的分工,可以使得任務完成更加順暢,大的項目工程更加需要這種分包合作。
步驟三:javaBean
JavaBean是指的是Java中的類,該類中的成員變量與數據庫表中的字段相對應(變量名對應數據庫表字段名、變量數據類型對應數據庫表字段類型),并提供空參數構造方法、set、get方法。
此后我們在調用方法時的對象全部來自于這個javabean類對象,在本系統中構建的是ZhangWu對象,包含已經創建好的數據庫的所有屬性(步驟一所提及)都在這個類對象ZhangWu中。
public class ZhangWu {private int zwid;private String flname;private double money;private String ZhangHu;private String createtime;private String description;public ZhangWu(int zwid, String flname, double money, String zhangHu, String createtime, String description) {super();this.zwid = zwid;this.flname = flname;this.money = money;ZhangHu = zhangHu;this.createtime = createtime;this.description = description;}public ZhangWu() {}@Overridepublic String toString() {return "ZhangWu [zwid=" + zwid + ", flname=" + flname + ", money=" + money + ", ZhangHu=" + ZhangHu+ ", createtime=" + createtime + ", description=" + description + "]";}public int getZwid() {return zwid;}public void setZwid(int zwid) {this.zwid = zwid;}public String getFlname() {return flname;}public void setFlname(String flname) {this.flname = flname;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}public String getZhangHu() {return ZhangHu;}public void setZhangHu(String zhangHu) {ZhangHu = zhangHu;}public String getCreatetime() {return createtime;}public void setCreatetime(String createtime) {this.createtime = createtime;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}}步驟四:View視圖層搭建
主要用于搭建運行界面顯示,是與用戶進行交互的直接平臺。主要構建四大功能:添加賬務、編輯賬務、刪除賬務、查詢賬務,最后加上一個退出系統的功能。其中查詢賬務分成“查詢所有賬務”和“條件查詢”兩個功能。
最后視圖層需要與Controller控制層建立連接。
public class MainView {private static Controllerpart cont = new Controllerpart();public void run() {Scanner sc = new Scanner(System.in);while(true) {System.out.print("---------GJP賬務系統----------");System.out.println("1.添加賬務 2.編輯賬務 3.刪除賬務 4.查詢賬務 5.退出系統");System.out.println("請輸入需要操作的功能序號");int choose = sc.nextInt();switch(choose) {case 1:addZhangWu();break;case 2:eidtZhangWu();break;case 3:deleteZhangWu();break;case 4:selectZhangWu();break;case 5:System.exit(0);break;default:System.out.println("請重新輸入正確的序號");}?? ?}}private void deleteZhangWu() {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);System.out.println("請輸入需要刪除的賬務ID");cont.deleteZhangWu(sc.nextInt());System.out.println("刪除成功");}private void eidtZhangWu() {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);System.out.println("選擇需要修改的賬務ID");int zwid = sc.nextInt();System.out.println("輸入分類名稱");String flname = sc.next();System.out.println("請輸入金額");double money = sc.nextDouble();System.out.println("請輸入賬戶");String zhangHu = sc.next();System.out.println("請輸入時間");String createtime = sc.next();System.out.println("請輸入具體描述");String description = sc.next();ZhangWu zw = new ZhangWu(zwid, flname, money, zhangHu, createtime, description);cont.editZhangWu(zw);System.out.println("賬務更新成功");}private void addZhangWu() {// TODO Auto-generated method stubSystem.out.println("選擇添加的賬務,輸入如下內容");Scanner sc = new Scanner(System.in);System.out.println("輸入分類名稱");String flname = sc.next();System.out.println("請輸入金額");double money = sc.nextDouble();System.out.println("請輸入賬戶");String zhangHu = sc.next();System.out.println("請輸入時間");String createtime = sc.next();System.out.println("請輸入具體描述");String description = sc.next();ZhangWu zw = new ZhangWu(0, flname, money, zhangHu, createtime, description);cont.addZhangWu(zw);System.out.println("賬務添加成功");}public void selectZhangWu() {// TODO Auto-generated method stubSystem.out.println("1.查詢所有賬務 2.條件查詢");Scanner op = new Scanner(System.in);int choose = op.nextInt();switch(choose) {case 1:selectAll();break;case 2:select();break;}}public void select() {// TODO Auto-generated method stubSystem.out.println("選擇條件查詢,輸入日期格式:xxxx-xx-xx");Scanner sc = new Scanner(System.in);System.out.println("請輸入查詢的起始時間");String startDate = sc.nextLine();System.out.println("請輸入查詢的結束時間");String endDate = sc.nextLine();List<ZhangWu> list = cont.select(startDate, endDate);if(list.size()!=0)print(list);elseSystem.out.println("沒有查詢到需要的數據");}private void selectAll() {// TODO Auto-generated method stubList<ZhangWu> list = cont.selectAll();if(list.size()!=0)print(list);elseSystem.out.println("--------沒有查詢到需要的數據---------");}public void print(List<ZhangWu> list) {System.out.println("ID\t類別\t\t賬戶\t\t金額\t\t時間\t\t說明");for (ZhangWu zw : list) {System.out.println(zw.getZwid() + "\t" + zw.getFlname() + "\t\t"+ zw.getZhangHu() + "\t\t" + zw.getMoney() + "\t\t"+ zw.getCreatetime() + "\t" + zw.getDescription());}} }步驟五、六:Controller控制層搭建與Service服務層搭建
此處不做詳細處理,主要是在其中寫入控制層與服務層以及dao數據訪問層的連通函數(主要是前臺方法的重寫調用)。
public class Controllerpart {private static Servicepart ser = new Servicepart();public void editZhangWu(ZhangWu zw) {ser.editZhangWu(zw);}public List<ZhangWu> addZhangWu(ZhangWu zw){return ser.addZhangWu(zw);}public ?List<ZhangWu> select(String startDate,String endDate){return ser.select(startDate,endDate);}public ?List<ZhangWu> selectAll() {return ser.selectAll();}public void deleteZhangWu(int zwid) {// TODO Auto-generated method stubser.deleteZhangWu(zwid);} }?
public class Servicepart {private static Daopart dao = new Daopart();public List<ZhangWu> selectAll() {// TODO Auto-generated method stubreturn dao.selectAll();}public List<ZhangWu> select(String startDate, String endDate) {// TODO Auto-generated method stubreturn dao.select(startDate,endDate);}public List<ZhangWu> addZhangWu(ZhangWu zw) {// TODO Auto-generated method stubreturn dao.addZhangWu(zw);}public void editZhangWu(ZhangWu zw) {// TODO Auto-generated method stubdao.editZhangWu(zw);}public void deleteZhangWu(int zwid) {// TODO Auto-generated method stubdao.deleteZhangWu(zwid);}
??
步驟七:dao數據訪問層搭建
數據訪問層用于與數據庫連接,通過用戶反饋的操作來調用數據庫數據來完成操作。主要掌握數據庫語句的使用,以及jdbc QueryRunner類的使用。
QueryRunner.query用于查詢數據庫;QueryRunner.update用于修改更新數據庫
public class Daopart {private QueryRunner qr = new QueryRunner(JDBCutils.getdatasource());public List<ZhangWu> selectAll() {// TODO Auto-generated method stubtry {String sql = "select * from zbzhangwu";List<ZhangWu> list = qr.query(sql,new BeanListHandler<ZhangWu>(ZhangWu.class));return list;}catch(SQLException ex) {System.out.println(ex);throw new RuntimeException("查詢失敗");}}public List<ZhangWu> select(String startDate, String endDate) {// TODO Auto-generated method stubtry {String sql = "select * from zbzhangwu where createtime between ? and ?";Object[] params = {startDate,endDate};List<ZhangWu> list = qr.query(sql, new BeanListHandler<ZhangWu>(ZhangWu.class),params);return list;}catch(SQLException ex) {System.out.println(ex);throw new RuntimeException("查詢失敗");}}public List<ZhangWu> addZhangWu(ZhangWu zw) {// TODO Auto-generated method stubtry {String sql = "insert into zbzhangwu (flname,money,zhangHu,createtime,description)values(?,?,?,?,?)";Object[] params = {zw.getFlname(),zw.getMoney(),zw.getZhangHu(),zw.getCreatetime(),zw.getDescription()};qr.update(sql, params);return null;}catch(SQLException ex) {System.out.println(ex);throw new RuntimeException("賬務添加失敗");}}public void editZhangWu(ZhangWu zw) {// TODO Auto-generated method stubtry {String sql = "update zbzhangwu set flname=?,money=?,zhangHu=?,createtime=?,description=? where zwid=?";Object[] params = {zw.getFlname(),zw.getMoney(),zw.getZhangHu(),zw.getCreatetime(),zw.getDescription(),zw.getZwid()};qr.update(sql, params);}catch(SQLException ex) {System.out.println(ex);throw new RuntimeException("數據更新失敗");}}public void deleteZhangWu(int zwid) {// TODO Auto-generated method stubtry {String sql = "delete from zbzhangwu where zwid=?";qr.update(sql,zwid);}catch(SQLException ex) {System.out.println(ex);throw new RuntimeException("刪除操作失敗");}}}?
總結
以上是生活随笔為你收集整理的基于javaJDBC技术的账务管理系统(思路+代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB学习——数组类型
- 下一篇: 软件系统架构简介