管家婆项目详细代码-Java基础班终于结束

项目内容就不详细介绍了,主要锻炼数据库增删改查,及项目逻辑调用。
代码有点多,按照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;

感谢黑马!!!,感谢这位不知道姓名的老师。去就业班了…
基础班完结

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章