項目內容就不詳細介紹了,主要鍛鍊數據庫增刪改查,及項目邏輯調用。
代碼有點多,按照package順序,運行包–視圖包–服務包–數據庫操作包–工具包–事物對象包
以及SQL語句。
運行類
package cn.gjp.app;
import cn.gjp.view.MainView;
/*
* 運行管家婆的主方法
*/
public class MainApp {
public static void main(String[] args) {
new MainView().run();
}
}
視圖類
package cn.gjp.view;
import java.util.List;
import java.util.Scanner;
import cn.gjp.domain.ZhangWu;
import cn.gjp.service.ZhangWuService;
/*
* 依賴service
*/
public class MainView {
private ZhangWuService zws = new ZhangWuService();
/*
* 實現鍵盤輸入,選擇相應功能調用
*/
public void run(){
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:
//選擇添加賬務
addZhangWu();
break;
case 2:
//選擇編輯
editZhangWu();
break;
case 3:
//選擇刪除賬務
deleteZhangWu();
break;
case 4:
//選擇查詢賬務
selectZhangWu();
break;
case 5:
//退出系統
System.exit(0);
break;
}
}
}
/*
* 刪除賬務
*/
public void deleteZhangWu(){
ZhangWu zw = new ZhangWu();
Scanner sc = new Scanner(System.in);
System.out.println("請輸入要刪除的ID:");
zw.setZwid(sc.nextInt());
boolean b = new ZhangWuService().deleteZhangWu(zw);
if(b){
System.out.println("刪除成功!");
}
}
/*
* 編輯賬務
*/
public void editZhangWu(){
ZhangWu zw = new ZhangWu();
Scanner sc = new Scanner(System.in);
System.out.println("請輸入要編輯的ID:");
zw.setZwid(sc.nextInt());
System.out.println("請輸入類別:");
zw.setFlname(sc.next());
System.out.println("請輸入花費:");
zw.setMoney(sc.nextDouble());
System.out.println("請輸入賬戶:");
zw.setZhangHu(sc.next());
System.out.println("請輸入時間:");
zw.setCreatetime(sc.next());
System.out.println("請輸入說明:");
zw.setDescription(sc.next());
boolean b = new ZhangWuService().editZhangWu(zw);
if(b){
System.out.println("編輯成功!");
}
}
/*
* 添加賬務功能
*/
public void addZhangWu(){
ZhangWu zw = new ZhangWu();
Scanner sc = new Scanner(System.in);
System.out.println("請輸入類別:");
zw.setFlname(sc.next());
System.out.println("請輸入花費:");
zw.setMoney(sc.nextDouble());
System.out.println("請輸入賬戶:");
zw.setZhangHu(sc.next());
System.out.println("請輸入時間:");
zw.setCreatetime(sc.next());
System.out.println("請輸入說明:");
zw.setDescription(sc.next());
boolean b = new ZhangWuService().addZhangWu(zw);
if(b){
System.out.println("添加成功!");
}
}
/*
* 查詢賬務功能
*/
public void selectZhangWu(){
System.out.println("請輸入查詢方式 1:查詢所有 2:條件查詢");
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
switch(i){
case 1:
List<ZhangWu> list1 = new ZhangWuService().selectAll();
print(list1);
break;
case 2:
Scanner sc1 = new Scanner(System.in);
System.out.println("請輸入起始時間:");
String starttime = sc1.nextLine();
System.out.println("請輸入結束時間:");
String endtime = sc1.nextLine();
List<ZhangWu> list2 = new ZhangWuService().select(starttime,endtime);
print(list2);
break;
}
}
public void print(List<ZhangWu> list){
System.out.println("編號\t"+"名稱\t"+"花費\t"+"賬戶\t"+"時間\t"+"說明\t");
for (ZhangWu zw : list) {
System.out.println(zw.getZwid()+"\t"+zw.getFlname()+"\t"+zw.getMoney()+"\t"+zw.getZhangHu()+"\t"+zw.getCreatetime()+"\t"+zw.getDescription());
}
}
}
服務類
package cn.gjp.service;
import java.util.List;
import java.util.Scanner;
import cn.gjp.dao.ZhangWuDao;
import cn.gjp.domain.ZhangWu;
import cn.gjp.view.MainView;
/*
* 用於傳遞參數,依賴zhangwudao
*/
public class ZhangWuService {
private ZhangWuDao zwd = new ZhangWuDao();
/*
* 刪除賬務
*/
public boolean deleteZhangWu(ZhangWu zw){
return new ZhangWuDao().deleteZhangWu(zw);
}
/*
* 編輯賬務
*/
public boolean editZhangWu(ZhangWu zw){
return new ZhangWuDao().editZhangWu(zw);
}
/*
* 添加賬務
*/
public boolean addZhangWu(ZhangWu zw){
return new ZhangWuDao().addZhangWu(zw);
}
/*
* 查詢所有賬務信息,調用dao查詢數據庫
*/
public List<ZhangWu> selectAll(){
List<ZhangWu> list = new ZhangWuDao().selectAll();
return list;
}
/*
* 條件查詢賬務信息
*/
public List<ZhangWu> select(String starttime,String endtime){
List<ZhangWu> list = new ZhangWuDao().select(starttime,endtime);
return list;
}
}
操作數據庫類
package cn.gjp.dao;
import java.sql.SQLException;
import java.util.List;
import javax.management.RuntimeErrorException;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import cn.gjp.domain.ZhangWu;
import cn.gjp.tools.JDBCUtils;
/*
* 添加queryrunner對象,用來操作數據庫數據。
*/
public class ZhangWuDao {
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
/*
* 刪除賬務
*/
public boolean deleteZhangWu(ZhangWu zw){
String sql = "DELETE FROM gjp_zhangwu WHERE zwid=?";
try{
qr.update(sql,zw.getZwid());
return true;
}catch (SQLException sex){
System.out.println(sex);
throw new RuntimeException("刪除失敗");
}
}
/*
* 編輯賬務
*/
public boolean editZhangWu(ZhangWu zw){
String sql = "UPDATE gjp_zhangwu SET flname=?,money=?,zhangHu=?,createtime=?,description=? WHERE zwid = ?";
//String sql = "update gjp_zhangwu set flname=?, money=?,zhanghu=?,createtime=?,description=? where zwid=?";
Object[] parms = {zw.getFlname(),zw.getMoney(),zw.getZhangHu(),zw.getCreatetime(),zw.getDescription(),zw.getZwid()};
try{
qr.update(sql, parms);
return true;
}catch (SQLException sex){
System.out.println(sex);
throw new RuntimeException("編輯失敗");
}
}
/*
* 添加賬務
*/
public boolean addZhangWu(ZhangWu zw){
String sql = "insert into gjp_zhangwu(flname,money,zhangHu,createtime,description) values(?,?,?,?,?)";
Object[] parms = {zw.getFlname(),zw.getMoney(),zw.getZhangHu(),zw.getCreatetime(),zw.getDescription()};
try{
qr.update(sql, parms);
return true;
}catch (SQLException sex){
System.out.println(sex);
throw new RuntimeException("添加失敗");
}
}
/*
* 查詢所有賬務信息
*/
public List<ZhangWu> selectAll(){
try{
String sql = "SELECT * FROM gjp_zhangwu";
List<ZhangWu> list = qr.query(sql,new BeanListHandler<>(ZhangWu.class));
return list;
}catch (Exception e) {
System.out.println(e);
throw new RuntimeException("查詢失敗");
}
}
/*
* 條件查詢賬務信息
*/
public List<ZhangWu> select(String starttime,String endtime){
try{
String sql = "SELECT * FROM gjp_zhangwu WHERE createtime BETWEEN ? AND ?";
Object[] parms = {starttime,endtime};
List<ZhangWu> list = qr.query(sql,new BeanListHandler<>(ZhangWu.class),parms);
return list;
}catch (Exception e) {
System.out.println(e);
throw new RuntimeException("查詢失敗");
}
}
}
賬務數據類型類
package cn.gjp.domain;
/*
* 封裝數據庫中數據爲javabean類對象
*/
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) {
this.zwid = zwid;
this.flname = flname;
this.money = money;
this.zhangHu = zhangHu;
this.createtime = createtime;
this.description = description;
}
public ZhangWu(){}
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;
}
public String toString() {
return "ZhangWu [zwid=" + zwid + ", flname=" + flname + ", money="
+ money + ", zhangHu=" + zhangHu + ", createtime=" + createtime
+ ", description=" + description + "]";
}
}
數據庫連接工具類,注意我的數據庫連接端口號是3307,密碼是123456
package cn.gjp.tools;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
/*
* 數據庫連接工具類
* 連接池,dbcp
*/
public class JDBCUtils {
private static BasicDataSource datasource = new BasicDataSource();
//靜態代碼塊實現必要的參數設置
static{
datasource.setDriverClassName("com.mysql.jdbc.Driver");
datasource.setUrl("jdbc:mysql://localhost:3307/gjp");
datasource.setUsername("root");
datasource.setPassword("123456");
datasource.setMaxActive(10);
datasource.setMaxIdle(5);
datasource.setMinIdle(3);
datasource.setInitialSize(8);
}
public static DataSource getDataSource(){
return datasource;
}
}
SQL
CREATE DATABASE gjp;
USE gjp;
CREATE TABLE gjp_zhangwu(
zwid INT PRIMARY KEY AUTO_INCREMENT,
flname VARCHAR(200),
money DOUBLE,
zhangHu VARCHAR(200),
createtime DATE,
description VARCHAR(100)
);
-- insert into gjp_zhangwu(flname,money,zhanghu,createtime,description) values (,,,,)
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;
-- 條件查詢
SELECT * FROM gjp_zhangwu WHERE createtime BETWEEN 20160106 AND 20160808;
-- 添加賬務
INSERT INTO gjp_zhangwu (flname,money,zhangHu,createtime,description)
VALUES ('彩票支出',200,'現金','20200410','歐洲盃');
-- 編輯賬務
UPDATE gjp_zhangwu SET flname='dsf',money=250,zhangHu='asdf',createtime='21000809',description='safdgsadfg'
WHERE zwid = 15;
-- 刪除賬務
DELETE FROM gjp_zhangwu WHERE zwid=15;
感謝黑馬!!!,感謝這位不知道姓名的老師。去就業班了…
基礎班完結