JAVA基础开发案例--管家记账

从今天起,我们来运用JAVA基础加数据库mysql开发一个管家记账功能。它具有查看所有记录,多条件查询,编辑,添加,删除等功能。

前期准备:

开发工具:eclipse

jar包:

JAVA基础开发案例--管家记账_第1张图片

第一个数据库池连接组件

第二个是封装并简化了JDBC操作

第三个是io流操作,可忽视

第四个dbcp连接池操作依赖于该包

第五个是mysql驱动(最基础的原始操作)

开始前,要先建包,把不同的功能层放在不同包中,包截图如下:

JAVA基础开发案例--管家记账_第2张图片

功能说明如下:

JAVA基础开发案例--管家记账_第3张图片


正式开始,

首先我们先定义一个工具类连接池放在tools包里,以后连接数据库直接从这里调用方法。

package com.fei.gj.tools;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;

public class JDBCUtils {
	private static BasicDataSource data = new BasicDataSource();
//	静态代码块设置必要参数
	static {
		data.setDriverClassName("com.mysql.jdbc.Driver");
		data.setUrl("jdbc:mysql://localhost/test");
		data.setUsername("root");
		data.setPassword("root");
		data.setInitialSize(20);
	}
//	方法
	public static DataSource getConnection() {
		return data;
	}

}

然后是domain包里创建ZhangWu类,如下:

package com.fei.gj.domain;

public class ZhangWu {
	private int id;
	private String flname;
	private double money;
	private String createtime ;
	private String dest;
//	构造器
	public ZhangWu(int id, String flname, double money, String createtime, String dest) {
		this.id = id;
		this.flname = flname;
		this.money = money;
		this.createtime = createtime;
		this.dest = dest;
	}
	public ZhangWu() {
	
	}
	
//	重写toString()方法
@Override
	public String toString() {
		return "Zhangwu [id=" + id + ", flname=" + flname + ", money=" + money + ", createtime=" + createtime
				+ ", dest=" + dest + "]";
	}

//	get() set()方法
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	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 getCreatetime() {
		return createtime;
	}
	public void setCreatetime(String createtime) {
		this.createtime = createtime;
	}
	public String getDest() {
		return dest;
	}
	public void setDest(String dest) {
		this.dest = dest;
	}
	

	
	

}

然后是app包里放我们的主函数:如下

package com.fei.gj.app;

import com.fei.gj.view.ViewMain;

public class AppMain {
	public static void main(String[] args) {
		ViewMain v = new ViewMain();
		v.run();
		
	}

}

这里的run()函数就是我们的视图层主要的方法。

我们看下视图层的run()方法:

package com.fei.gj.view;
/*
 * 视图层,显示与把数据传递给controller层
 */

import java.util.List;
import java.util.Scanner;

import org.apache.commons.dbutils.handlers.ScalarHandler;

import com.fei.gj.controller.ZhangWuController;
import com.fei.gj.domain.ZhangWu;

public class ViewMain {
	private  ZhangWuController controller = new ZhangWuController();
	
	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:
				selectMethod();
				break;
			case 5:
				System.exit(0);
				break;
			}
		}		
		
	}
//	查询方法
	public void selectMethod() {
		System.out.println("请选择查询方式:1,查询所有     2,条件查询");
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		switch(a) {
		case 1:
			selectAll();
			break;
		case 2:
			selectto();
			break;
		}
	}
//条件查询
	private  void selectto() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要查询的开始日期:");
		String startDate = sc.next();
		System.out.println("请输入结束日期:");
		String endDate = sc.next();
//		条件查询
		List list = controller.selectTo( startDate, endDate);
//		空格是为了方便格式
		System.out.println("ID\t账务类别\t   花费     \t      时间\t   \t  详细说明\t");
		for(ZhangWu z:list) {
			System.out.println(z.getId()+"\t "+z.getFlname()+"\t "+z.getMoney()+"\t "+z.getCreatetime()+"\t "+z.getDest());
		}
		
	}
//查询所有
	private  void selectAll() {
		List list = controller.selectAll();
//		空格是为了方便格式
		System.out.println("ID\t账务类别\t   花费     \t      时间\t   \t  详细说明\t");
		for(ZhangWu z:list) {
			System.out.println(z.getId()+"\t "+z.getFlname()+"\t "+z.getMoney()+"\t "+z.getCreatetime()+"\t "+z.getDest());
		}
	}
//添加账务
	private void addZhangWu() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入账务类别");
		String flname = sc.next();
		System.out.println("请输入花费金额");
		double money = sc.nextDouble();
		System.out.println("请输入时间");
		String createtime = sc.next();
		System.out.println("请输入花费详细描述");
		String dest = sc.next();
		ZhangWu z = new ZhangWu(0,flname,money,createtime,dest);
		controller.addZhangWu(z);
		System.out.println("账务添加成功!");	
	}
	
	private void editZhangWu() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入ID号");
		int id = sc.nextInt();
		System.out.println("请输入新的账务类别");
		String flname = sc.next();
		System.out.println("请输入新的花费金额");
		double money = sc.nextDouble();
		System.out.println("请输入新的时间");
		String createtime = sc.next();
		System.out.println("请输入新的花费详细描述");
		String dest = sc.next();
		ZhangWu z = new ZhangWu(id,flname,money,createtime,dest);
		controller.editZhangWu(z);
		System.out.println("账务编辑成功!");
		
	}

	private void deleteZhangWu() {
		selectAll();
		Scanner sc = new Scanner(System.in);
		System.out.println("你选择删除功能,请选择要删除的ID号");
		int id = sc.nextInt();
		controller.delectZhangWu(id);
		System.out.println("删除成功");
		
	}
	
	
}

未完,待续


你可能感兴趣的:(JAVA,JAVA基础,管家记账程序)