1.MainApp
package cn.itcast.gjp.app; import cn.itcast.gjp.view.MainView; public class MainApp { public static void main(String[] args){ new MainView().run(); } }2.MainView
package cn.itcast.gjp.view; import cn.itcast.gjp.controller.ZhangWuController; import cn.itcast.gjp.domain.ZhangWu; import sun.applet.Main; import java.util.List; import java.util.Scanner; /* 视图层,用户和操作的界面,控制台模拟 讲数据传递给controller层实现 成员位置,创建controller对象 */ public class MainView { private ZhangWuController controller = new ZhangWuController(); public void run(){ System.out.println("-----管家婆家庭记账软件-----"); System.out.println("1.添加账务 2.编辑账务 3.删除账务 4.查询账务 5.退出系统"); System.out.println("请输入要操作的功能序号[1-5]:"); Scanner scanner = new Scanner(System.in); int button = scanner.nextInt(); switch (button){ case 1: add(); break; case 2: edit(); break; case 3: delete(); break; case 4: selectZhangWu(); break; case 5: // end(); break; default: System.out.println("输入错误!"); } } 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(){ //调用控制层方法,查询所有的账务数据 List<ZhangWu> list = controller.selectAll(); System.out.println("ID\t类别\t金额\t账户\t时间\t说明"); for(ZhangWu zw:list){ System.out.println(zw.getZwid()+"\t"+ zw.getFlname()+"\t"+zw.getZhangwu()+"\t"+zw.getMoney()+"\t"+zw.getCreatetime()+ "\t"+zw.getDescription()); } } /* 定义方法,实现条件查询账务数据 提供用户的输入日期,开始日期和结束日期 2个日期参数传递到controller层 调用controller方法,传递2个日期参数 获取到controller查询结果,打印出来 */ public void select(){ Scanner scanner = new Scanner(System.in); System.out.println("请输入查询起始时间:"); String start = scanner.next(); System.out.println("请输入结束时间:"); String end = scanner.next(); List<ZhangWu> list = controller.select(start,end); for(ZhangWu zw:list){ System.out.println(zw.getZwid()+"\t"+ zw.getFlname()+"\t"+zw.getZhangwu()+"\t"+zw.getMoney()+"\t"+zw.getCreatetime()+ "\t"+zw.getDescription()); } } public void add(){ Scanner scanner = new Scanner(System.in); ZhangWu zw = new ZhangWu(); System.out.println("请输入类别:"); zw.setFlname(scanner.next()); System.out.println("请输入账户:"); zw.setZhangwu(scanner.next()); System.out.println("请输入金额:"); zw.setMoney(scanner.nextDouble()); System.out.println("请输入时间:"); zw.setCreatetime(scanner.next()); System.out.println("请输入说明:"); zw.setDescription(scanner.next()); if( controller.add(zw)) System.out.println("添加成功!"); } public void edit(){ Scanner scanner = new Scanner(System.in); ZhangWu zw = new ZhangWu(); System.out.println("请输入ID:"); zw.setZwid(scanner.nextInt()); System.out.println("请输入新类别:"); zw.setFlname(scanner.next()); System.out.println("请输入新账户:"); zw.setZhangwu(scanner.next()); System.out.println("请输入新金额:"); zw.setMoney(scanner.nextDouble()); System.out.println("请输入新时间:"); zw.setCreatetime(scanner.next()); System.out.println("请输入新说明:"); zw.setDescription(scanner.next()); if(controller.edit(zw)) System.out.println("编辑账务成功"); } public void delete(){ System.out.println("请输入要删除的ID:"); Scanner scanner = new Scanner(System.in); ZhangWu zw = new ZhangWu(); zw.setZwid(scanner.nextInt()); if(controller.delete(zw)) System.out.println("删除成功"); } }3.ZhangWuController
package cn.itcast.gjp.controller; import cn.itcast.gjp.domain.ZhangWu; import cn.itcast.gjp.service.ZhangWuSerivce; import java.util.List; /* 控制器层 接受视图层的数据,数据传递给Service层 成员位置,创建service对象 */ public class ZhangWuController { private ZhangWuSerivce serivce = new ZhangWuSerivce(); /* 控制层定义方法,实现查询所有的账务数据 方法由视图层调用,方法调用service层 */ public List<ZhangWu> selectAll(){ return serivce.selectAll(); } public List<ZhangWu> select(String start,String end){ return serivce.select(start,end); } public boolean add(ZhangWu zw){ return serivce.add(zw); } public boolean edit(ZhangWu zw){ if(serivce.edit(zw)) return true; else return false; } public boolean delete(ZhangWu zw){ if(serivce.delete(zw)) return true; else return false; } }4.ZhangWuService
package cn.itcast.gjp.service; import cn.itcast.gjp.dao.ZhangWuDao; import cn.itcast.gjp.domain.ZhangWu; import java.util.List; /* 业务层类:接受上一层控制层的数据,将这些数据进行计算,操作数据库,调用dao层类,类成员位置,创建dao类的对象 */ public class ZhangWuSerivce { private ZhangWuDao dao = new ZhangWuDao(); /* 定义方法,实现查询所有的账务数据 次方法,由控制层调用,去调用dao层的方法 */ public List<ZhangWu> selectAll(){ // List<ZhangWu> list = dao.selectAll(); return dao.selectAll(); } public List<ZhangWu> select(String start,String end){ // List<ZhangWu> list = dao.selectAll(); return dao.select(start,end); } public boolean add(ZhangWu zw){ if(dao.add(zw)) return true; else return false; } public boolean edit(ZhangWu zw){ if(dao.edit(zw)){ return true; } else return false; } public boolean delete(ZhangWu zw){ if(dao.delete(zw)) return true; else return false; } }5.ZhangWuDao
package cn.itcast.gjp.dao; import cn.itcast.gjp.domain.ZhangWu; import cn.itcast.gjp.tools.JDBCUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanListHandler; import java.sql.SQLException; import java.util.List; /* 实现对数据表账务表数据的增删改查操作 dbutils工具类完成,类成员QueryRunner对象,指定数据源 */ public class ZhangWuDao { private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource()); /* 定义方法,查询数据库,获取所有的账务数据 方法,由业务层调用 结果集,将所有的业务数据,存储到Bean对象中,存储到集合中 */ public List<ZhangWu> selectAll(){ String sql = "select * from gjp_zhangwu"; try { List<ZhangWu> list = qr.query(sql, new BeanListHandler<ZhangWu>(ZhangWu.class)); return list; } catch (SQLException ex){ ex.printStackTrace(); throw new RuntimeException("查询所有账务失败"); } } public List<ZhangWu> select(String start,String end){ String sql = "select * from gjp_zhangwu where createtime between ? and ?"; Object[] params ={start,end}; try { List<ZhangWu> list = qr.query(sql, new BeanListHandler<ZhangWu>(ZhangWu.class),params); return list; }catch (SQLException ex){ ex.printStackTrace(); throw new RuntimeException("条件查询失败"); } } public boolean add(ZhangWu zw){ String sql = "insert into gjp_zhangwu(flname,money,zhangwu,createtime,description)values(?,?,?,?,?)"; Object[] params ={zw.getFlname(),zw.getMoney(),zw.getZhangwu(),zw.getCreatetime(),zw.getDescription()}; try { qr.update(sql, params); return true; }catch (SQLException ex){ ex.printStackTrace(); throw new RuntimeException("添加数据失败"); } } public boolean edit(ZhangWu zw){ String sql = "update gjp_zhangwu set flname=?,money=?,zhangwu=?,createtime=?,description=? where zwid =? "; Object[] params={zw.getFlname(),zw.getMoney(),zw.getZhangwu(),zw.getCreatetime(),zw.getDescription(),zw.getZwid()}; try{ qr.update(sql,params); return true; }catch (SQLException ex){ ex.printStackTrace(); throw new RuntimeException("修改数据失败"); } } public boolean delete(ZhangWu zw){ String sql= "delete from gjp_zhangwu where zwid=?"; try{ qr.update(sql,zw.getZwid()); return true; }catch (SQLException ex){ ex.printStackTrace(); throw new RuntimeException(); } } }6.ZhangWu
package cn.itcast.gjp.domain; public class ZhangWu { private int zwid; private String flname; private double money; private String zhangwu; private String createtime; private String description; public ZhangWu(int zwid,String flname,double money,String zhangwu,String createtime,String description){ this.zwid = zwid; this.flname = flname; this.money=money; this.zhangwu = zhangwu; this.createtime=createtime; this.description =description; } public ZhangWu(){} public void setZwid(int zwid) { this.zwid = zwid; } public void setFlname(String flname) { this.flname = flname; } public void setMoney(double money) { this.money = money; } public void setZhangwu(String zhangwu) { this.zhangwu = zhangwu; } public void setCreatetime(String createtime) { this.createtime = createtime; } public void setDescription(String description) { this.description = description; } public int getZwid() { return zwid; } public String getFlname() { return flname; } public double getMoney() { return money; } public String getZhangwu() { return zhangwu; } public String getCreatetime() { return createtime; } public String getDescription() { return description; } public String toString(){ return "Zhangwu[zwid="+zwid+",flame="+flname+",money="+money+",zhangwu="+ zhangwu+",createtime="+createtime+",description"+description+"]"; } }
