日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

15管家婆小项目

發(fā)布時間:2025/7/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 15管家婆小项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1項目介紹

1.1項目目標

本項目為JAVAEE基礎班綜合項目,包含了若干個知識點,達到將基礎班所學知識綜合使用,提高了我們對項目的理解與知識點的運用。

熟練View層、Service層、Dao層之間的方法相互調用操作、

熟練dbutils操作數據庫表完成增刪改查

通過本項目,讓我們了解公司項目開發(fā)的流程,充分的掌握項目需求分析、設計與功能的代碼實現。提高同學們獨立分析需求與功能實現的能力。

1.2項目功能介紹

  • 查詢賬務
  • 多條件組合查詢賬務
  • 添加賬務
  • 編輯賬務
  • 刪除賬務

2.項目環(huán)境搭建

2.1技術選型和jar包介紹

每個項目都要使用一些已經成熟的技術,它們通常是由一些專業(yè)組織或團隊所提供的開源免費技術。在今后的學習過程中,我們會逐漸對這些專業(yè)組織有所了解。本項目中使用的技術如下:

  • apache的commons組件:
    • commons-dbutils-1.4.jar:封裝并簡化了JDBC;
    • commons-dbcp-1.4.jar:apache commons提供的數據庫連接池組件,命名為DBCP;
    • commons.pool-1.3.jar:DBCP連接池依賴該jar包;
  • mysql-connector-java-5.1.28-bin.jar:MySQL的JDBC驅動包,用JDBC連接MySQL數據庫必須使用該JAR包。

2.2工具類介紹

JDBCUtils:用來創(chuàng)建數據庫連接池對象;

package cn.jxufe.java.chapter12.demo02;import javax.sql.DataSource;import org.apache.commons.dbcp.BasicDataSource;/** 使用DBCP實現數據庫的連接池* 連接池配置,自定義類,* 最基本四項完整* 對于數據庫連接池其他配置,自定義*/public class JDBCUtils {// 創(chuàng)建出BasicDataSource類對象private static BasicDataSource datasource = new BasicDataSource();// 靜態(tài)代碼塊,對象BasicDataSource對象中的配置,自定義static {// 數據庫連接信息,必須的datasource.setDriverClassName("com.mysql.jdbc.Driver");datasource.setUrl("jdbc:mysql://localhost:3306/gjp");datasource.setUsername("root");datasource.setPassword("123456");// 對象連接池中的連接數量配置,可選的datasource.setInitialSize(10);// 初始化的連接數datasource.setMaxActive(8);// 最大連接數量datasource.setMaxIdle(5);// 最大空閑數datasource.setMinIdle(1);// 最小空閑 }// 定義靜態(tài)方法,返回BasicDataSource類的對象public static DataSource getDataSource() {return datasource;}}

2.3數據表創(chuàng)建

對一個項目而言,表設計是非常重要的,因為應用程序中所有的操作都是基于數據庫表而進行的,所以我們第一步就是創(chuàng)建數據庫表。

  • 創(chuàng)建數據庫
CREATE DATABASE gjp;
  • 創(chuàng)建數據庫表
/*創(chuàng)建管家婆的數據庫名字 gjp */ CREATE DATABASE gjp;USE gjp;/*創(chuàng)建數據表,表名賬務字段,列主鍵分類名稱 可變字符金額 double賬戶 可變字符 (支付,收入方法)創(chuàng)建日期 date賬務描述 可變字符 */ CREATE TABLE gjp_zhangwu(zwid INT PRIMARY KEY AUTO_INCREMENT,flname VARCHAR(200),money DOUBLE,zhanghu VARCHAR(100),createtime DATE,description VARCHAR(1000) );-- 寫入測試的數據 INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (1,'吃飯支出',247,'交通銀行','2016-03-02','家庭聚餐'); INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (2,'工資收入',12345,'現金','2016-03-15','開工資了'); INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (3,'服裝支出',1998,'現金','2016-04-02','買衣服'); INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (4,'吃飯支出',325,'現金','2016-06-18','朋友聚餐'); INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (5,'股票收入',8000,'工商銀行','2016-10-28','股票大漲'); INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (6,'股票收入',5000,'工商銀行','2016-10-28','股票又大漲'); INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (7,'工資收入',5000,'交通銀行','2016-10-28','又開工資了'); INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (8,'禮金支出',5000,'現金','2016-10-28','朋友結婚'); INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (9,'其他支出',1560,'現金','2016-10-29','丟錢了'); INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (10,'交通支出',2300,'交通銀行','2016-10-29','油價還在漲啊'); INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (11,'吃飯支出',1000,'工商銀行','2016-10-29','又吃飯'); INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (12,'工資收入',1000,'現金','2016-10-30','開資'); INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (13,'交通支出',2000,'現金','2016-10-30','機票好貴'); INSERT INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (14,'工資收入',5000,'現金','2016-10-30','又開資');SELECT * FROM gjp_zhangwu

2.4項目分層(分包)的作用

程序為什么要分包分層?

以顧客去飯店吃飯案例分析一下:

小飯店: 一個服務員搞定(接待顧客\點菜\炒菜)

大飯店:

  • 迎賓員(是否有預定\ 詢問吃中餐還是西餐或者燒烤等\ 幾位用餐 \ 領路到指定的包間\ 找點菜員為顧客點菜 )
  • 點菜員(記錄顧客點餐內容\ 記錄是否有忌口等問題\ 找廚師為顧客炒菜)
  • 廚師(按照顧客菜肴清單,進行炒菜)

通過案例發(fā)現,當程序規(guī)模小的時候,可以一個人全部完成;但程序規(guī)模大的時候,一個人難以完成,這時,要采用多人合作的方式來完成程序開發(fā)。

???????? 多人合作方式將會碰到工作任務分配問題,這時我們會想,每個人負責完成項目的一塊內容就可以了。那么,這一塊塊內容的劃分,就需要我們采用分層(分包)的方式完成了。

  • view層作用: 視圖層,即項目中的界面
  • controller層作用: 控制層, 獲取界面上的數據,為界面設置數據; 將要實現的功能交給業(yè)務層處理
  • service層作用: 業(yè)務層, 功能的實現, 與controller控制層和數據訪問層DAO交互, 將對數據庫的操作交給DAO數據訪問層來處理
  • dao層作用: 數據訪問層, 用來操作數據庫表的數據
  • db數據庫: 這里指MySQL
  • domain 實體包: 存放JavaBean
  • tools工具包:存放項目中使用到的工具類
  • test 測試包: 存放項目功能測試的代碼

?

2.5?工程創(chuàng)建及包管理

  • 使用Eclipse創(chuàng)建Java工程,命名為gjp
  • 創(chuàng)建工程包
    • cn.itcast.gjp.app: 存放main方法類;
    • cn.itcast.gjp.domain: 存放JavaBean;
    • cn.itcast.gjp.view: 存放界面,及表現層類;
    • cn.itcast.gjp.service: 存放業(yè)務層類;
    • cn.itcast.gjp.dao: 存放數據訪問層類;
    • cn.itcast.gjp.tools:存放工具類
  • 創(chuàng)建lib文件夾,用來存儲使用的jar包
  • 3.功能模塊

    3.1相關類創(chuàng)建

    完成本項目中類的創(chuàng)建,無需在類中添加代碼。

  • 復制已編寫好的工具類JDBCUtils.java 到 tools包中;
  • 復制jar包mysql-connector-java-5.1.28-bin.jar?、commons-dbutils-1.4.jar?、commons-dbcp-1.4.jar?、commons-pool-1.3.jar,到lib文件夾中,通過Build Path操作,添加到classPath路徑中,提供給JDBCUtils使用;
  • 在app包中,創(chuàng)建類MainApp.java,編寫main主方法,用來完成本項目的啟動
  • 在domain包中,創(chuàng)建類ZhangWu.java,它是用來封裝賬務信息的JavaBean。
  • 在dao包中,創(chuàng)建類ZhangWuDao.java,給ZhangWuDao類添加一個成員變量QueryRunner對象,因為我們使用dbutils來操作數據庫。
  • 在service包中,創(chuàng)建類ZhangWuService.java,給ZhangWuService類添加一個類型為ZhangWuDao的成員變量,因為service依賴dao。
  • 在view包中,創(chuàng)建類MainView.java,給MainView類添加一個類型為ZhangWuService的成員變量,因為本項目中view依賴service。
  • 編寫app包中MainApp.java

    package cn.jxufe.gjp.app; /** 主程序類,作用,開啟軟件程序*/ public class MainApp {public static void main(String[] args) {// TODO Auto-generated method stub }}

    ?

    編寫domain包中ZhangWu.java

    package cn.jxufe.gjp.domain;public class ZhangWu {}

    ?

    編寫Dao包中ZhangWuDao.java

    package cn.jxufe.gjp.dao;import org.apache.commons.dbutils.QueryRunner;import cn.jxufe.gjp.tools.JDBCUtils;/** 賬務數據層類* 實現對數據表gjp_zhangwu 數據增刪改查操作 * 使用dbutils工具類完成,類成員創(chuàng)建QueryRunner對象,指定數據源*/ public class ZhangWuDao {private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); }

    ?

    編寫Service包,ZhangWuService.java

    package cn.jxufe.gjp.service; /** 業(yè)務層類* 接收上一層,控制層controller的數據* 經過計算,傳遞給dao層,操作數據庫* 調用dao層中的類,類成員位置,創(chuàng)建Dao類的對象*/import cn.jxufe.gjp.dao.ZhangWuDao;public class ZhangWuService {private ZhangWuDao dao = new ZhangWuDao(); }

    ?

    編寫controller包,ZhangWuController.java

    package cn.jxufe.gjp.controller; /** 控制器層* 接收視圖層的數據,將數據傳遞給service層* 成員位置創(chuàng)建service對象*/import cn.jxufe.gjp.service.ZhangWuService;public class ZhangWuController {private ZhangWuService service = new ZhangWuService(); }

    ?

    編寫view包,MainView.java

    package cn.jxufe.gjp.view; /** 視圖層,用戶控制和操作的界面* 數據傳遞給controller層實現* 成員位置,創(chuàng)建一個controller對象*/import cn.jxufe.gjp.controller.ZhangWuController;public class MainView {private ZhangWuController controller = new ZhangWuController(); }

    3.2賬務JavaBean

    JavaBean是指的是Java中的類,該類中的成員變量與數據庫表中的字段相對應(變量名對應數據庫表字段名、變量數據類型對應數據庫表字段類型),并提供空參數構造方法、set、get方法。

    package cn.jxufe.gjp.domain;public class ZhangWu {private int zwid;private String flname;private double money;private String zhanghu;private String createtime;private String description;public ZhangWu() {// TODO Auto-generated constructor stub }public ZhangWu(int zwid, String flname, double money, String zhanghu, String createtime, String description) {this.zwid = zwid;this.flname = flname;this.money = money;this.zhanghu = zhanghu;this.createtime = createtime;this.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) {this.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;}@Overridepublic String toString() {return "ZhangWu [zwid=" + zwid + ", flname=" + flname + ", money=" + money + ", zhanghu=" + zhanghu+ ", createtime=" + createtime + ", description=" + description + "]";}}

    3.3功能界面菜單

    ?

    界面菜單的完成,是項目編寫的第一步。

    我們通過輸出語句,完成界面菜單的輸出,之后再根據輸入的功能序號,進行對應功能的調用執(zhí)行。

  • 功能實現步驟
    • 編寫MainView類run方法
      • 完成功能界面菜單顯示
      • 接收鍵盤輸入的功能選項
      • 根據選項值,調用對應的功能方法
    • 編寫MainApp類的main主方法
      • 調用MainView類中run方法,實現將程序執(zhí)行起來,顯示功能界面菜單。

      2.功能實現代碼

    package cn.jxufe.gjp.view; /** 視圖層,用戶控制和操作的界面* 數據傳遞給controller層實現* 成員位置,創(chuàng)建一個controller對象*/import java.util.Scanner;import cn.jxufe.gjp.controller.ZhangWuController;public class MainView {private ZhangWuController controller = new ZhangWuController();/** 實現界面效果* 接收用戶的輸入* 根據輸入調用不同的功能方法*/public void run() {// 創(chuàng)建Scanner對象,可以反復的鍵盤輸入Scanner scanner = new Scanner(System.in);while (true) {System.out.println("---------------管家婆家庭記賬軟件---------------");System.out.println("1.添加賬務 2.編輯賬務 3.刪除賬務 4.查詢賬務 5.退出系統");System.out.println("請輸入要操作的功能序號[1-5]:");// 接收用戶的菜單選擇int choose = scanner.nextInt();// 對選擇的菜單判斷,調用不同的功能switch (choose) {// 選擇添加賬務,調用添加賬務的方法case 1:break;// 選擇的編輯賬務,調用編輯賬務方法case 2:break;// 選擇的刪除賬務,調用刪除賬務方法case 3:break;// 選擇的是查詢賬務,調用查詢方法case 4:break;//退出系統case 5:System.out.println("再見");System.exit(0);default:System.out.println("輸入錯誤,請重新輸入");;}}} }

    3.4查詢所有賬務

    1.功能實現步驟

    • 編寫MainView類中selectZhangWu方法
      • 通過輸出語句,顯示出要查詢賬務的方式
      • 接收鍵盤的輸入項,調用對應的方法(1.查詢所有 2.按條件查詢)
    • 編寫MainView類中selectAll查詢所有賬務方法
      • 調用ZhangWuContrler類selectAll方法,返回包含所有賬務數據的List<ZhangWu>集合
      • 調用MainView類中print方法,實現控制臺顯示所有賬務數據
    • 編寫MainView類中print方法
      • 使用輸出語句,打印出賬務表的表頭名稱
      • 遍歷賬務集合,將每個賬務信息輸出打印
    • 編寫ZhangWuController類中selectAll方法
      • 調用ZhangWuService類中selectAll方法,返回包含所有賬務數據的List<ZhangWu>集合
    • 編寫ZhangWuService類中selectAll方法
      • 調用ZhangWuDao類中selectAll方法,返回包含所有賬務數據的List<ZhangWu>集合
    • 編寫ZhangWuDao類中selectAll()方法
      • 通過QueryRunner對象,調用query方法查詢數據庫表gjp_zhangwu,返回包含所有賬務數據的List<ZhangWu>集合

    2.功能實現代碼

    • 編寫MainView類中selectZhangWu方法
    /** 定義方法 selectZhangWu()* 顯示查詢的方式 1 所有查詢 2 條件查詢* 接收用戶的選擇*/public void selectZhangWu() {System.out.println("1. 查詢所有 2. 條件查詢");Scanner sc = new Scanner(System.in);int selectChooser = sc.nextInt();// 判斷根據用戶的選擇,調用不同的功能switch (selectChooser) {case 1:// 選擇的查詢所有,調用查詢所有的方法 selectAll();break;case 2:// 選的條件查詢,調用帶有查詢條件的方法break;}}

    ?

    • 編寫MainView類中selectAll方法
    /** 定義方法,實現查詢所有的賬務數據*/public void selectAll() {List<ZhangWu> list = controller.selectAll();if (list.size() != 0)print(list);elseSystem.out.println("沒有查詢到數據");}// 輸出賬務數據方法,接收List集合,遍歷集合,輸出表格private void print(List<ZhangWu> list) {// 輸出表頭System.out.println("ID\t\t類別\t\t賬戶\t\t金額\t\t時間\t\t說明");// 遍歷集合,結果輸出控制臺for (ZhangWu zw : list) {System.out.println(zw.getZwid() + "\t\t" + zw.getFlname() + "\t\t" + zw.getZhanghu() + "\t\t"+ zw.getMoney() + "\t\t" + zw.getCreatetime() + "\t" + zw.getDescription());}}

    ?

    • 編寫ZhangWuController類中selectAll方法
    /** 控制層類定義方法,實現查詢所有的賬務數據* 方法由試圖層調用,方法調用service層*/public List<ZhangWu> selectAll() {return service.selectAll();}

    ?

    • 編寫ZhangWuService類中selectAll方法
    /** 定義方法,實現查詢所有的賬務數據* 此方法,由控制層調用, 去調用dao層的方法* 返回存儲ZhangWu對象的List集合*/public List<ZhangWu> selectAll() {return dao.selectAll();}

    ?

    • 編寫ZhangWuDao類中selectAll()方法
    /** 定義方法,查詢數據庫,獲取所有的賬務數據* 方法,由業(yè)務層調用* 結果集,將所有的賬務數據,存儲到Bean對象中,存儲到集合中*/public List<ZhangWu> selectAll() {try {// 查詢賬務數據的SQL語句String sql = "SELECT * FROM gjp_zhangwu";// 調用qr對象的方法,query方法,結果集BeanListHandlerList<ZhangWu> list = qr.query(sql, new BeanListHandler<>(ZhangWu.class));return list;} catch (SQLException e) {// TODO Auto-generated catch block System.out.println(e);throw new RuntimeException();}}

    3.5多條件查詢賬務

    1)功能分析

    • 編寫MainView類中select方法
      • 通過鍵盤輸入查詢日期的范圍
      • 調用ZhangWuController類中select方法,返回查詢日期范圍內的賬務信息集合List<ZhangWu>
      • 調用MainView類中的print方法,將賬務信息集合中的內容顯示在控制臺中
    • 編寫ZhangWuController類中select方法
      • 編寫ZhangWuController類中select方法
      • 調用ZhangWuService類中select方法,返回查詢日期范圍內的賬務信息集合List<ZhangWu>
    • 編寫ZhangWuService類中select方法
      • 調用ZhangWuDao 類中select方法,返回查詢日期范圍內的賬務信息集合List<ZhangWu>
    • 編寫ZhangWuDao類中select方法
      • 通過QueryRunner對象,調用query方法查詢數據庫表gjp_zhangwu,返回包含查詢日期范圍內的賬務數據List<ZhangWu>集合

    2)功能實現步驟

    1. 編寫MainView類中select方法

    /** 定義方法,實現條件查詢賬務數據* 提供用戶的輸入日期,開始日期結束日期* 就2個日期,傳遞到controller層* 調用controller的方法,傳遞2個日期參數* 獲取到controller查詢的結果集,打印出來*/public void select() {System.out.println("選擇條件查詢,輸入日期格式XXXX-XX-XX");Scanner sc = new Scanner(System.in);System.out.print("請輸入開始日期:");String startDate = sc.nextLine();System.out.print("請輸入結果日期:");String endDate = sc.nextLine();// 調用controller層的方法,傳遞日期,獲取查詢結果集List<ZhangWu> list = controller.select(startDate, endDate);if (list.size() != 0)print(list);elseSystem.out.println("沒有查詢到數據");}

    ?

    2. 編寫ZhuangWuController類中select方法

    /** 定義方法,實現條件查詢賬務* 方法由試圖層調用,傳遞兩個日期的字符串* 調用service層的方法,傳遞兩個日期字符串,獲取結果集* 結果集返回給試圖*/public List<ZhangWu> select(String startDate, String endDate) {return service.select(startDate, endDate);}

    ?

    3.編寫ZhangWuService類中select方法

    /** 定義方法,實現條件查詢賬務* 方法由控制層調用,傳遞2個日期字符串* 調用dao層的方法,傳遞2個日期字符串* 獲取到查詢結果集*/public List<ZhangWu> select(String startDate, String endDate) {return dao.select(startDate, endDate);}

    ?

    4. 編寫ZhangWuDao類中select方法

    /** 定義方法,查詢數據庫,帶有條件去查詢賬務表* 由業(yè)務層調用,查詢結果集存儲到Bean對象,存儲到List集合* 調用者傳遞2個日期字符串*/public List<ZhangWu> select(String startDate, String endDate) {try {// 拼寫條件查詢的SQL語句String sql = "SELECT * FROM gjp_zhangwu WHERE createtime BETWEEN ? AND ?";// 定義對象數組,存儲?占位符Object[] params = { startDate, endDate };// 調用qr對象的方法query查詢數據表,獲取結果集return qr.query(sql, new BeanListHandler<>(ZhangWu.class), params);} catch (SQLException ex) {System.out.println(ex);throw new RuntimeException("條件查詢失敗");}}

    3.6添加賬務

    1)功能分析

    編寫MainView類中addZhangWu方法

    • 鍵盤輸入新添加的賬務信息
    • 調用ZhangWuController類中addZhangWu方法,用來指定賬務的添加
    • 添加完畢后,使用輸出語句,提示“添加賬務成功!”

    編寫ZhangWuController類中addZhangWu方法

    • 調用ZhangWuService類中addZhangWu方法,用來指定賬務的添加

    編寫ZhangWuService類中addZhangWu方法

    • 調用ZhangWuDao類中addZhangWu方法,用來指定賬務的添加

    ?編寫ZhangWuDao類中addZhangWu方法

    • 通過QueryRunner對象,調用update方法更新數據庫表gjp_zhangwu,完成指定賬務添加到數據庫表中

    2)功能實現步驟

    1. 編寫MainView類中addZhangWu方法

    /** 定義方法addZhangWu* 添加賬務的方法,用戶在界面中選擇菜單1的時候調用、* 實現思想:* 接收鍵盤輸入,5項輸入,調用controller層方法*/public void addZhangWu() {System.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("輸入日期:格式XXXX-XX-xx");String createtime = sc.next();System.out.println("輸入具體描述");String description = sc.next();// 將接收到的數據,調用controller層的方法,傳遞參數,實現數據添加// 將用戶輸入的所有參數,封裝成ZhangWu對象ZhangWu zw = new ZhangWu(0, flname, money, zhanghu, createtime, description);controller.addZhangWu(zw);System.out.println("恭喜添加賬務成功");}

    ?

    2. 編寫ZhangWuController類中addZhangWu方法

    /** 定義方法,實現賬務添加功能* 由視圖層調用,傳遞參數(傳遞過來的參數不能是5個數據,傳遞的是一個ZhangWu類型的對象)* 本方法調用service層的方法,傳遞ZhangWu對象,獲取到添加后的結果集(添加成功影響的行數,int)*/public void addZhangWu(ZhangWu zw) {service.addZhangWu(zw);}

    ?

    3.編寫ZhangWuService類中addZhangWu方法

    /** 定義方法,實現添加賬務* 是由控制層調用,傳遞ZhangWu對象*/public void addZhangWu(ZhangWu zw) {dao.addZhangWu(zw);}

    ?

    4.編寫ZhangWuDao類中addZhangWu方法

    /** 定義方法,實現添加賬務功能* 由業(yè)務層調用,傳遞ZhangWu對象* 將ZhangWu對象中的數據,添加到數據庫*/public void addZhangWu(ZhangWu zw) {try {// 拼接添加數據的sqlString sql = "INSERT INTO gjp_zhangwu (flname,money,zhanghu,createtime,description) VALUES(?,?,?,?,?)";// 創(chuàng)建對象數組,處處5個占位符的實際參數// 實際參數來源是傳遞過來的對象ZhangWuObject[] params = { zw.getFlname(), zw.getMoney(), zw.getZhanghu(), zw.getCreatetime(),zw.getDescription() };// 調用qr對象中的方法update執(zhí)行添加 qr.update(sql, params);} catch (SQLException ex) {System.out.println(ex);throw new RuntimeException("賬務添加失敗");}}

    ?

    3.7編輯賬務

    1)功能分析

    • 編寫MainView類中editZhangWu方法
      • 鍵盤輸入要編輯的賬務信息ID號
      • 鍵盤輸入要修改的賬務信息內容
      • 調用ZhangWuController類中editZhangWu方法,用來將指定的賬務信息進行更新
      • 更新完畢后,使用輸出語句,提示 “編輯賬務成功!”
    • 編寫ZhangWuController類中editZhangWu方法
      • 調用ZhangWuService類中ZhangWuService方法,用來將指定的賬務信息進行更新

    ?

    • 編寫ZhangWuService類中editZhangWu方法
      • 調用ZhangWuDao類中editZhangWu方法,用來將指定的賬務信息進行更新

    ?

    • 編寫ZhangWuDao類中editZhangWu方法
      • 通過QueryRunner對象,調用update方法更新數據庫表gjp_zhangwu,完成數據庫表中指定賬務更新操作

    2)功能實現步驟

    1. 編寫MainView類中editZhangWu方法

    /** 定義方法,實現對賬務的編輯功能* 實現思想:* 接收用戶的輸入的信息* 封裝成ZhangWu對象* 調用控制層的方法,傳遞ZhangWu對象,實現編輯* */public void editZhangWu() {// 調用查詢所有賬務數據的功能,顯示出來// 看到所有數據,從中選擇一項,進行修改 selectAll();System.out.println("選擇的是編輯功能,請輸入數據");Scanner sc = new Scanner(System.in);System.out.print("請輸入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("輸入日期:格式XXXX-XX-xx");String createtime = sc.next();System.out.println("輸入具體描述");String description = sc.next();// 將用戶輸入的數據,封裝到ZhangWu對象中// 用戶輸入的ID,必須封裝到到對象中ZhangWu zw = new ZhangWu(zwid, flname, money, zhanghu, createtime, description);// 調用controller層中的方法,實現編輯賬務 controller.editZhangWu(zw);System.out.println("賬務編輯成功");}

    ?

    2. 編寫ZhuangWuController類中editZhangWu方法

    /** 定義方法,實現編輯賬務功能* 由視圖層調用,傳遞參數,也是ZhangWu對象* 調用service層的方法,也是ZhangWu對象*/public void editZhangWu(ZhangWu zw) {service.editZhangWu(zw);}

    ?

    ?

    3.編寫ZhangWuService類中editZhangWu方法

    /** 定義方法,實現編輯賬務* 由控制層調用,傳遞ZhangWu對象* 調用dao層的方法,傳遞ZhangWu對象*/public void editZhangWu(ZhangWu zw) {dao.editZhangWu(zw);} }

    ?

    4.編寫ZhangWuDao類中editZhangWu方法

    /** 定義方法,實現編輯功能* 由業(yè)務層調用,傳遞ZhangWu對象* 將對象中的數據,更新到數據表*/public void editZhangWu(ZhangWu zw) {try {// 更新數據的SQLString sql = "UPDATE gjp_zhangwu SET flname=?,money=?,zhanghu=?,createtime=?,description=? WHERE zwid=?";// 定義對象數組,封裝所有數據Object[] params = { zw.getFlname(), zw.getMoney(), zw.getZhanghu(), zw.getCreatetime(), zw.getDescription(),zw.getZwid() };// 調用qr對象方法update執(zhí)行更新 qr.update(sql, params);} catch (SQLException ex) {System.out.println(ex);throw new RuntimeException("編輯賬務失敗");}}

    3.8.刪除賬務

    ?

    1)功能分析

    • 編寫MainView類中deleteZhangWu方法
      • 鍵盤輸入要刪除的賬務信息ID號
      • 調用ZhangWuService類中deleteZhangWu方法,用來將指定的賬務信息刪除
      • 刪除完畢后,使用輸出語句,提示 “刪除賬務成功!”
    • 編寫ZhangWuController類中deleteZhangWu方法
      • 調用ZhangWuService類中deleteZhangWu方法,用來將指定的賬務信息刪除
    • 編寫ZhangWuService類中deleteZhangWu方法
      • 調用ZhangWuDao類中deleteZhangWu方法,用來將指定的賬務信息刪除
    • 編寫ZhangWuDao類中deleteZhangWu方法
      • 通過QueryRunner對象,調用update方法更新數據庫表gjp_zhangwu,完成數據庫表中指定賬務刪除操作

    2)功能實現步驟

    1. 編寫MainView類中deleteZhangWu方法

    /** 定義方法,實現賬務刪除* 實現思想:* 接收用戶的輸入,輸入一個主鍵數據* 調用控制層方法,傳遞一個主鍵*/public void deleteZhangWu() {//調用查詢所有賬務數據的功能,顯示出來//看到所有數據,從中選擇一項,進行修改 selectAll();System.out.println("選擇的是刪除功能,請輸入序號即可");int zwid = new Scanner(System.in).nextInt();//調用控制層方法,傳遞主鍵id即可 controller.deleteZhangWu(zwid);System.out.println("刪除賬務成功");}

    ?

    2.編寫ZhangWuController類中deleteZhangWu方法

    /** 定義方法,實現刪除功能* 視圖層調用,傳遞int類型主鍵* 調用service層方法,傳遞int主鍵*/public void deleteZhangWu(int zwid) {service.deleteZhangWu(zwid);}

    ?

    3.編寫ZhangWuService類中deleteZhangWu方法

    /** 定義方法,實現刪除賬務功能* 由控制層調用,傳遞主鍵id* 調用dao層方法,傳遞主鍵id*/public void deleteZhangWu(int zwid) {dao.deleteZhangWu(zwid);}

    ?

    4.編寫ZhangWuDao類中deleteZhangWu方法

    /** 定義方法,實現刪除業(yè)務* 業(yè)務層調用,傳遞主鍵id*/public void deleteZhangWu(int zwid) {try {// 拼寫刪除數據SQLString sql = "DELETE FROM gjp_zhangwu WHERE zwid=?";qr.update(sql, zwid);} catch (SQLException ex) {System.out.println(ex);throw new RuntimeException("刪除賬務失敗");}}

    ?

    轉載于:https://www.cnblogs.com/xinmomoyan/p/11061272.html

    總結

    以上是生活随笔為你收集整理的15管家婆小项目的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。