01項目訓練目標
* A: 項目訓練目標
* a: 項目目標
* 綜合運用前面所學習的知識點
* 熟練View層、Service層、Dao層之間的方法相互調用操做、
* 熟練dbutils操做數據庫表完成增刪改查
* 瞭解公司項目開發的流程,充分的掌握項目需求分析、設計與功能的代碼實現。提升同窗們獨立分析需求與功能實現的能力。
02項目中的功能模塊
* A: 項目中的功能模塊
* a: 五大模塊
* 查詢帳務
* 多條件組合查詢帳務
* 添加帳務
* 編輯帳務
* 刪除帳務
03技術的選擇和相關jar包
* A: 技術的選擇和相關jar包
* a: apache的commons組件:
* commons-dbutils-1.4.jar:封裝並簡化了JDBC;
* commons-dbcp-1.4.jar:apache commons提供的數據庫鏈接池組件,命名爲DBCP;
* b: commons.pool-1.3.jar:DBCP鏈接池依賴該jar包;
* mysql-connector-java-5.1.28-bin.jar:MySQL的JDBC驅動包,用JDBC鏈接MySQL數據庫必須使用該JAR包。
04項目中的工具類
* A: 項目中的工具類
* a: 工具類的介紹
* 每一個項目中都會有不少個工具類,不要求每一個工具類對能獨立寫出來,可是要會使用工具類
* JDBCUtils:用來建立數據庫鏈接池對象
05數據表的設計
* A: 數據表的設計
* a: 數據表的設計(詳見:day34_source/表關係.JPG)
* 表與表之間是有關係的
* 主表和從表的關係
* 主表中的主鍵做爲從表中的外鍵
06建立數據庫數據表寫入測試數據
* A: 建立數據庫數據表寫入測試數據
* a: 建立數據庫數據表
/*
建立管家婆的數據庫
名字 gjp
*/
CREATE DATABASE gjp;
USE gjp;
/*
建立數據表,表名帳務
字段,列
主鍵
分類名稱 可變字符
金額 double
帳戶 可變字符 (支付,收入方法)
建立日期 date
帳務描述 可變字符
*/
CREATE TABLE gjp_zhangwu(
-- 主鍵
zwid INT PRIMARY KEY AUTO_INCREMENT,
-- 分類名稱
flname VARCHAR(200),
-- 金額
money DOUBLE,
-- 帳戶
zhanghu VARCHAR(100),
-- 建立日期
createtime DATE,
-- 帳務描述
description VARCHAR(1000)
);
SELECT * FROM gjp_zhangwu;
* b: 寫入數據
-- 寫入測試的數據
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','又開資');
07項目中的分層設計
* A: 項目中的分層設計
* a: 各層功能介紹
* view層做用: 視圖層,即項目中的界面
* controller層做用: 控制層, 獲取界面上的數據,爲界面設置數據; 將要實現的功能交給業務層處理
* service層做用: 業務層, 功能的實現, 與controller控制層和數據訪問層DAO交互, 將對數據庫的操做交給DAO數據訪問層來處理
* dao層做用: 數據訪問層, 用來操做數據庫表的數據
* db數據庫: 這裏指MySQL
* domain 實體包: 存放JavaBean
* tools工具包:存放項目中使用到的工具類
* test 測試包: 存放項目功能測試的代碼
08建立項目_分層_導入jar包
* A: 建立項目_分層_導入jar包
* a: 建立工程包
* cn.itcast.gjp.app: 存放main方法類;
* cn.itcast.gjp.domain: 存放JavaBean;
* cn.itcast.gjp.view: 存放界面,及表現層類;
* cn.itcast.gjp.service: 存放業務層類;
* cn.itcast.gjp.dao: 存放數據訪問層類;
* cn.itcast.gjp.tools:存放工具類
* b: 導入jar包
* 在項目根路徑下創建文件夾lib
* 導入如下jar包
* mysql-connector-java-5.1.37-bin.jar:數據庫驅動
* commons-dbutils-1.6.jar:提供QueryRunner類方便進行增刪改查操做
* commons-dbcp-1.4.jar:
* commons-pool-1.5.6.jar:提供高效的數據庫鏈接池技術
* 拷貝以上jar包,選定拷貝的jar包/右鍵/Build Path/Add to Build Path
09建立domain包中的類
* A: 建立domain包中的類
* a: 案例代碼
public class ZhangWu {
private int zwid;
private String flname;
private double money;
private String zhanghu;
private String createtime;
private String description;
//注意生成空參構造、有參構造、set和get方法、toString方法等
}
10建立JDBCUtils工具類
* A:建立JDBCUtils工具類
* a: 案例代碼
public class JDBCUtils{
//建立BasicDataSource對象
private static BasicDataSource datasource = new BasicDataSource();
//靜態代碼塊,實現必要參數設置
static{
datasource.setDriverClassName("com.mysql.jdbc.Driver");
datasource.setUrl("jdbc:mysql://localhost:3306/gjp");
datasource.setUsername("root");
datasource.setPassword("123");
datasource.setMaxActive(10);
datasource.setMaxIdle(5);
datasource.setMinIdle(2);
datasource.setInitialSize(10);
}
public static DataSource getDataSource(){
return datasource;
}
}
11建立其餘包中的類
* A: 建立其餘包中的類
* a: cn.itcast.gjp.dao包中建立ZhangWuDao類
/*
* 實現對數據表 gjp_zhangwu 數據增刪改查操做
* dbuils工具類完成,類成員建立QueryRunner對象,指定數據源
*/
public class ZhangWuDao {
private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
}
* b: cn.itcast.gjp.service包中建立ZhangWuService類
/*
* 業務層類
* 接收上一層,控制層controller的數據
* 通過計算,傳遞給dao層,操做數據庫
* 調用dao層中的類,類成員位置,建立Dao類的對象
*/
public class ZhangWuService {
private ZhangWuDao dao = new ZhangWuDao();
}
* c: cn.itcast.gjp.controller包中創建ZhangWuController類
/*
* 控制器層
* 接收視圖層的數據,數據傳遞給service層
* 成員位置,建立service對象
*/
public class ZhangWuController {
private ZhangWuService service = new ZhangWuService();
}
* d: cn.itcast.gjp.view包中創建MainView類
/*
* 試圖層,用戶看到和操做的界面
* 數據傳遞給controller層實現
* 成員位置,建立controller對象
*/
public class MainView {
private ZhangWuController controller = new ZhangWuController();
}
* e: cn.itcast.gjp.app包中創建MainApp類
/*
* 主程序類,做用,開啓軟件程序
*/
public class MainApp {
public static void main(String[] args) {
new MainView().run();
}
}
12實現用戶的界面菜單
* A: 實現用戶的界面菜單
* a: 案例核心代碼
* cn.itcast.gjp.view包中創建MainView類中添加run方法
/*
* 實現界面效果
* 接收用戶的輸入
* 根據數據,調用不一樣的功能方法
*/
public void run(){
//建立Scanner類對象,反覆鍵盤輸入
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("---------------管家婆家庭記帳軟件---------------");
System.out.println("1.添加帳務 2.編輯帳務 3.刪除帳務 4.查詢帳務 5.退出系統");
System.out.println("請輸入要操做的功能序號[1-5]:");
//接收用戶的菜單選擇
int choose = sc.nextInt();
//對選擇的菜單判斷,調用不一樣的功能
switch(choose){
case 1:
// 選擇添加帳務,調用添加帳務的方法
break;
case 2:
// 選擇的編輯帳務,調用編輯帳務方法
break;
case 3:
// 選擇的刪除帳務,調用刪除帳務方法
break;
case 4:
// 選擇的是查詢帳務,調用查詢方法
//selectZhangWu();
break;
case 5:
System.exit(0);
break;
}
}
}
13實現查詢的界面菜單
* A: 實現查詢的界面菜單
* a: 案例核心代碼
* cn.itcast.gjp.view包中創建MainView類中添加selectZhangWu方法、selectAll方法、select方法
/*
* 定義方法 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:
//選的條件查詢,調用帶有查詢條件的方法
select();
break;
}
}
/*
* 定義方法,實現查詢全部的帳務數據
*/
public void selectAll(){
}
/*
* 定義方法,實現條件查詢帳務數據
* 提供用戶的輸入日期,開始日期結束日期
* 就2個日期,傳遞到controller層
* 調用controller的方法,傳遞2個日期參數
* 獲取到controller查詢的結果集,打印出來
*/
public void select(){
}
14實現查詢全部帳務的控制,業務層的實現
* A: 實現查詢全部帳務的控制,業務層的實現
* a: 案例核心代碼
* a: cn.itcast.gjp.dao包中建立ZhangWuDao類
/*
* 實現對數據表 gjp_zhangwu 數據增刪改查操做
* dbuils工具類完成,類成員建立QueryRunner對象,指定數據源
*/
public class ZhangWuDao {
private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
/*
* 定義方法,查詢數據庫,獲取全部的帳務數據
* 方法,由業務層調用
* 結果集,將全部的帳務數據,存儲到Bean對象中,存儲到集合中
*/
public List<ZhangWu> selectAll(){
return null;
}
}
* b: cn.itcast.gjp.service包中建立ZhangWuService類
/*
* 業務層類
* 接收上一層,控制層controller的數據
* 通過計算,傳遞給dao層,操做數據庫
* 調用dao層中的類,類成員位置,建立Dao類的對象
*/
public class ZhangWuService {
private ZhangWuDao dao = new ZhangWuDao();
/*
* 定義方法,實現查詢全部的帳務數據
* 此方法,由控制層調用, 去調用dao層的方法
* 返回存儲ZhangWu對象的List集合
*/
public List<ZhangWu> selectAll(){
return dao.selectAll();
}
}
* c: cn.itcast.gjp.controller包中創建ZhangWuController類
/*
* 控制器層
* 接收視圖層的數據,數據傳遞給service層
* 成員位置,建立service對象
*/
public class ZhangWuController {
private ZhangWuService service = new ZhangWuService();
/*
* 控制層類定義方法,實現查詢全部的帳務數據
* 方法由試圖層調用,方法調用service層
*/
public List<ZhangWu> selectAll(){
return service.selectAll();
}
}
15實現查詢全部帳務的dao層的實現
* A: 實現查詢全部帳務的dao層的實現
* a: 案例核心代碼
* a: cn.itcast.gjp.dao包中建立ZhangWuDao類selectAll方法
/*
* 實現對數據表 gjp_zhangwu 數據增刪改查操做
* dbuils工具類完成,類成員建立QueryRunner對象,指定數據源
*/
public class ZhangWuDao {
private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
/*
* 定義方法,查詢數據庫,獲取全部的帳務數據
* 方法,由業務層調用
* 結果集,將全部的帳務數據,存儲到Bean對象中,存儲到集合中
*/
public List<ZhangWu> selectAll(){
try{
//查詢帳務數據的SQL語句
String sql = "SELECT * FROM gjp_zhangwu";
//調用qr對象的方法,query方法,結果集BeanListHandler
List<ZhangWu> list = qr.query(sql, new BeanListHandler<>(ZhangWu.class));
return list;
}catch(SQLException ex){
System.out.println(ex);
throw new RuntimeException("查詢全部帳務失敗");
}
}
}
16實現查詢全部帳務的view層的實現
* A: 實現查詢全部帳務的view層的實現
* a: 案例核心代碼
* cn.itcast.gjp.view包中創建MainView類selectAll方法
/*
* 定義方法,實現查詢全部的帳務數據
*/
public void selectAll(){
//調用控制層中的方法,查詢全部的帳務數據
List<ZhangWu> list = controller.selectAll();
//輸出表頭
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());
}
}
17實現條件查詢帳務的菜單實現
* A: 實現條件查詢帳務的菜單實現
* a: 案例核心代碼
* cn.itcast.gjp.view包中創建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層的方法,傳遞日期,獲取查詢結果集
}
18實現條件查詢帳務的控制層,業務層實現
* A: 實現條件查詢帳務的控制層,業務層實現
* a: 案例核心代碼
* a: cn.itcast.gjp.dao包中建立ZhangWuDao類
/*
* 實現對數據表 gjp_zhangwu 數據增刪改查操做
* dbuils工具類完成,類成員建立QueryRunner對象,指定數據源
*/
public class ZhangWuDao {
private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
/*
* 定義方法,查詢數據庫,帶有條件去查詢帳務表
* 由業務層調用,查詢結果集存儲到Bean對象,存儲到List集合
* 調用者傳遞2個日期字符串
*/
public List<ZhangWu> select(String startDate,String endDate){
return null;
}
}
* b: cn.itcast.gjp.service包中建立ZhangWuService類
/*
* 業務層類
* 接收上一層,控制層controller的數據
* 通過計算,傳遞給dao層,操做數據庫
* 調用dao層中的類,類成員位置,建立Dao類的對象
*/
public class ZhangWuService {
private ZhangWuDao dao = new ZhangWuDao();
/*
* 定義方法,實現條件查詢帳務
* 方法由控制層調用,傳遞2個日期字符串
* 調用dao層的方法,傳遞2個日期字符串
* 獲取到查詢結果集
*/
public List<ZhangWu> select(String startDate,String endDate){
return dao.select(startDate, endDate);
}
}
* c: cn.itcast.gjp.controller包中創建ZhangWuController類
/*
* 控制器層
* 接收視圖層的數據,數據傳遞給service層
* 成員位置,建立service對象
*/
public class ZhangWuController {
private ZhangWuService service = new ZhangWuService();
/*
* 定義方法,實現條件查詢帳務
* 方法由試圖層調用,傳遞兩個日期的字符串
* 調用service層的方法,傳遞兩個日期字符串,獲取結果集
* 結果集返回給試圖
*/
public List<ZhangWu> select(String startDate,String endDate){
return service.select(startDate, endDate);
}
}
19實現條件查詢帳務的dao層實現
* A: 實現條件查詢帳務的dao層實現
* a: 案例核心代碼
* a: cn.itcast.gjp.dao包中建立ZhangWuDao類select方法
/*
* 實現對數據表 gjp_zhangwu 數據增刪改查操做
* dbuils工具類完成,類成員建立QueryRunner對象,指定數據源
*/
public class ZhangWuDao {
private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
/*
* 定義方法,查詢數據庫,帶有條件去查詢帳務表
* 由業務層調用,查詢結果集存儲到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("條件查詢失敗");
}
}
}
20實現條件查詢帳務的view層實現
* A: 實現條件查詢帳務的view層實現
* a: 案例核心代碼
* cn.itcast.gjp.view包中創建MainView類selectAll方法優化、抽取print方法、select方法
/*
* 定義方法,實現查詢全部的帳務數據
*/
public void selectAll(){
//調用控制層中的方法,查詢全部的帳務數據
List<ZhangWu> list = controller.selectAll();
if(list.size()!=0)
print(list);
else
System.out.println("沒有查詢到數據");
}
/*
* 定義方法,實現條件查詢帳務數據
* 提供用戶的輸入日期,開始日期結束日期
* 就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);
else
System.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());
}
}
21添加帳務功能分析
* A: 添加帳務功能分析
* a: 編寫MainView類中addZhangWu方法
* 鍵盤輸入新添加的帳務信息
* 調用ZhangWuService類中addZhangWu方法,用來指定帳務的添加
* 添加完畢後,使用輸出語句,提示「添加帳務成功!」
* b: 編寫ZhangWuService類中addZhangWu方法
* 調用ZhangWuDao類中addZhangWu方法,用來指定帳務的添加
* c: 編寫ZhangWuDao類中addZhangWu方法
* 經過QueryRunner對象,調用update方法更新數據庫表gjp_zhangwu,完成指定帳務添加到數據庫表中
22添加帳務功能菜單和輸入功能實現
* A: 添加帳務功能菜單和輸入功能實現
* a: 案例核心代碼
* cn.itcast.gjp.view包中創建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層的方法,傳遞參數,實現數據添加
}
23添加帳務功能控制層,業務層實現
* A: 添加帳務功能控制層,業務層實現
* a: 案例核心代碼
* cn.itcast.gjp.controller包中的ZhangWuController類addZhangWu方法
/*
* 定義方法,實現帳務添加功能
* 由視圖層調用,傳遞參數(傳遞過來的參數不能是5個數據,傳遞的是一個ZhangWu類型的對象)
* 本方法調用service層的方法,傳遞ZhangWu對象,獲取到添加後的結果集(添加成功影響的行數,int)
*
*/
public void addZhangWu(ZhangWu zw) {
service.addZhangWu(zw);
}
* cn.itcast.gjp.service包中的ZhangWuService類addZhangWu方法
/*
* 定義方法,實現添加帳務
* 是由控制層調用,傳遞ZhangWu對象
*/
public void addZhangWu(ZhangWu zw) {
dao.addZhangWu(zw);
}
* cn.itcast.gjp.dao包中的ZhangWuDao類addZhangWu方法
/*
* 定義方法,實現添加帳務功能
* 由業務層調用,傳遞ZhangWu對象
* 將ZhangWu對象中的數據,添加到數據庫
*/
public void addZhangWu(ZhangWu zw) {
}
24添加帳務功能dao層實現
* A: 添加帳務功能dao層實現
* a: 案例核心代碼
* cn.itcast.gjp.dao包中的ZhangWuDao類的addZhangWu方法
public void addZhangWu(ZhangWu zw) {
try{
//拼接添加數據的sql
String sql = "INSERT INTO gjp_zhangwu (flname,money,zhanghu,createtime,description) VALUES(?,?,?,?,?)";
//建立對象數組,到處5個佔位符的實際參數
//實際參數來源是傳遞過來的對象ZhangWu
Object[] params = {zw.getFlname(),zw.getMoney(),zw.getZhanghu(),zw.getCreatetime(),zw.getDescription()};
//調用qr對象中的方法update執行添加
qr.update(sql, params);
}catch(SQLException ex) {
System.out.println(ex);
throw new RuntimeException("帳務添加失敗");
}
}
25添加帳務功能view層實現
* A: 添加帳務功能view層實現
* a: 案例核心代碼
* cn.itcast.gjp.view包中創建MainView類addZhangWu方法
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("恭喜添加帳務成功");
}
26編輯帳務功能分析
* A: 編輯帳務功能分析
* a: 編寫MainView類中editZhangWu方法
* 鍵盤輸入要編輯的帳務信息ID號
* 鍵盤輸入要修改的帳務信息內容
* 調用ZhangWuService類中editZhangWu方法,用來將指定的帳務信息進行更新
* 更新完畢後,使用輸出語句,提示 「編輯帳務成功!」
* b: 編寫ZhangWuService類中editZhangWu方法
* 調用ZhangWuDao類中editZhangWu方法,用來將指定的帳務信息進行更新
* c: 編寫ZhangWuDao類中editZhangWu方法
* 經過QueryRunner對象,調用update方法更新數據庫表gjp_zhangwu,完成數據庫表中指定帳務更新操做
27編輯帳務功能功能以前實現查詢全部
* A: 編輯帳務功能功能以前實現查詢全部
* a: 案例核心代碼
* cn.itcast.gjp.view包中創建MainView類editZhangWu方法
public void editZhangWu() {
//調用查詢全部帳務數據的功能,顯示出來
//看到全部數據,從中選擇一項,進行修改
selectAll();
System.out.println("選擇的是編輯功能,請輸入數據");
}
28編輯帳務功能菜單實現
* A: 編輯帳務功能菜單實現
* a: 案例核心代碼
* cn.itcast.gjp.view包中創建MainView類editZhangWu方法
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層中的方法,實現編輯帳務
}
29編輯帳務功能控制層,業務層實現
* A: 編輯帳務功能控制層,業務層實現
* a: 案例核心代碼
* cn.itcast.gjp.controller包中的ZhangWuController類editZhangWu方法
/*
* 定義方法,實現編輯帳務功能
* 由視圖層調用,傳遞參數,也是ZhangWu對象
* 調用service層的方法,也是ZhangWu對象
*/
public void editZhangWu(ZhangWu zw) {
service.editZhangWu(zw);
}
* cn.itcast.gjp.service包中的ZhangWuService類editZhangWu方法
/*
* 定義方法,實現編輯帳務
* 由控制層調用,傳遞ZhangWu對象
* 調用dao層的方法,傳遞ZhangWu對象
*/
public void editZhangWu(ZhangWu zw) {
dao.editZhangWu(zw);
}
* cn.itcast.gjp.dao包中的ZhangWuDao類editZhangWu方法
public void editZhangWu(ZhangWu zw) {
// TODO Auto-generated method stub
}
30編輯帳務功能dao層實現
* A:編輯帳務功能dao層實現
* a: 案例核心代碼
* cn.itcast.gjp.dao包中的ZhangWuDao類editZhangWu方法
/*
* 定義方法,實現編輯功能
* 由業務層調用,傳遞ZhangWu對象
* 將對象中的數據,更新到數據表
*/
public void editZhangWu(ZhangWu zw) {
try {
//更新數據的SQL
String sql = "UPDATE 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執行更新
qr.update(sql, params);
} catch (SQLException ex) {
System.out.println(ex);
throw new RuntimeException("編輯帳務失敗");
}
}
31編輯帳務功能view層實現
* A: 編輯帳務功能view層實現
* a: 案例核心代碼
* cn.itcast.gjp.view包中創建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("帳務編輯成功");
}
32刪除帳務功能分析
* A: 刪除帳務功能分析
* a: 編寫MainView類中deleteZhangWu方法
* 鍵盤輸入要刪除的帳務信息ID號
* 調用ZhangWuService類中deleteZhangWu方法,用來將指定的帳務信息刪除
* 刪除完畢後,使用輸出語句,提示 「刪除帳務成功!」
* b: 編寫ZhangWuService類中deleteZhangWu方法
* 調用ZhangWuDao類中deleteZhangWu方法,用來將指定的帳務信息刪除
* c: 編寫ZhangWuDao類中deleteZhangWu方法
* 經過QueryRunner對象,調用update方法更新數據庫表gjp_zhangwu,完成數據庫表中指定帳務刪除操做
33刪除帳務功能菜單實現
* A: 刪除帳務功能菜單實現
* a: 案例核心代碼
* cn.itcast.gjp.view包中創建MainView類deleteZhangWu方法
/*
* 定義方法,實現帳務刪除
* 實現思想:
* 接收用戶的輸入,輸入一個主鍵數據
* 調用控制層方法,傳遞一個主鍵
*/
public void deleteZhangWu() {
//調用查詢全部帳務數據的功能,顯示出來
//看到全部數據,從中選擇一項,進行修改
selectAll();
System.out.println("選擇的是刪除功能,請輸入序號便可");
int zwid = new Scanner(System.in).nextInt();
//調用控制層方法,傳遞主鍵id便可
}
34刪除帳務功能控制層,業務層實現
* A: 刪除帳務功能控制層,業務層實現
* a: 案例核心代碼
* cn.itcast.gjp.controller包中的ZhangWuController類deleteZhangWu方法
/*
* 定義方法,實現刪除功能
* 視圖層調用,傳遞int類型主鍵
* 調用service層方法,傳遞int主鍵
*/
public void deleteZhangWu(int zwid) {
service.deleteZhangWu(zwid);
}
* cn.itcast.gjp.service包中的ZhangWuService類deleteZhangWu方法
/*
* 定義方法,實現刪除帳務功能
* 由控制層調用,傳遞主鍵id
* 調用dao層方法,傳遞主鍵id
*/
public void deleteZhangWu(int zwid) {
dao.deleteZhangWu(zwid);
}
* cn.itcast.gjp.dao包中的ZhangWuDao類deleteZhangWu方法
public void deleteZhangWu(int zwid) {
}
35刪除帳務功能dao實現
* A: 刪除帳務功能dao實現
* a: 案例核心代碼
* cn.itcast.gjp.dao包中的ZhangWuDao類deleteZhangWu方法
/*
* 定義方法,實現刪除業務
* 業務層調用,傳遞主鍵id
*/
public void deleteZhangWu(int zwid) {
try {
//拼寫刪除數據SQL
String sql = "DELETE FROM gjp_zhangwu WHERE zwid=?";
qr.update(sql, zwid);
} catch (SQLException ex) {
System.out.println(ex);
throw new RuntimeException("刪除帳務失敗");
}
}
36刪除帳務功能view層實現
* A: 刪除帳務功能view層實現
* a: 案例核心代碼
* cn.itcast.gjp.view包中創建MainView類editZhangWu方法
/*
* 定義方法,實現帳務刪除
* 實現思想:
* 接收用戶的輸入,輸入一個主鍵數據
* 調用控制層方法,傳遞一個主鍵
*/
public void deleteZhangWu() {
//調用查詢全部帳務數據的功能,顯示出來
//看到全部數據,從中選擇一項,進行修改
selectAll();
System.out.println("選擇的是刪除功能,請輸入序號便可");
int zwid = new Scanner(System.in).nextInt();
//調用控制層方法,傳遞主鍵id便可
controller.deleteZhangWu(zwid);
System.out.println("刪除帳務成功");
37總結
* 把今天的知識點總結一遍。