*家庭软件记账项目

*(简单的小项目)
基本功能:
1.查询
1.1查询所有
1.2多条件查询
1.2.1模糊查询(根据姓名)
1.2.2根据日期查询
2.添加
3.修改
4.删除
项目:

程序的主入口

package com.gjp.app;
/** 程序主入口* */
import com.gjp.view.MainView;public class MainApp {public static void main(String[] args) {new MainView().run();}}

view层

package com.gjp.view;import java.util.List;
import java.util.Scanner;import com.gjp.account.Account;
import com.gjp.controller.AccountController;public class MainView {Scanner sc = new Scanner(System.in);AccountController controller = new AccountController();public void run(){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://bSystem.out.println("查询");selectAccount();break;case 2://System.out.println("添加");insertAccount();break;case 3://System.out.println("修改");editAccount();break;case 4://System.out.println("删除");deleteAccount();break;case 5:System.out.println("退出系统");System.exit(0);break;default:System.out.println("你输入的序号不正确,请重新输入【1-5】的序号!");break;}}}//删除private void deleteAccount() {//在删除之前,先查询所有selectAll();//在删除之前,要找到删除的那条记录(根据ID找)System.out.println("你选择的是删除功能,请输入需要删除的ID:");int zwid = sc.nextInt();Account ac = controller.selectById(zwid);if(ac != null){System.out.println(ac);int i = controller.delete(zwid);if(i > 0){System.out.println("删除成功!");selectAll();}else{System.out.println("删除失败!");}}else{System.out.println("删除的记录不存在!");}}//修改private void editAccount() {//在修改之前,先查询所有selectAll();//在修改之前,要找到修改的那条记录(根据ID找)System.out.println("你选择的是修改功能,请输入需要修改的ID:");int zwid = sc.nextInt();Account account = controller.selectById(zwid);System.out.println(account);if(account != null){System.out.println("请按要求修改以下内容:");System.out.println("请修改消费名称:");String flname = sc.next();System.out.println("请修改消费金额:");double money = sc.nextDouble();System.out.println("请修改支付方式:");String zhanghu = sc.next();System.out.println("请修改消费日期:");String createtime = sc.next();System.out.println("请修改消费说明:");String description = sc.next();Account ac = new Account(zwid, flname, money, zhanghu, createtime, description);int i = controller.edit(ac);if(i > 0){System.out.println("修改成功!");selectAll();}else{System.out.println("修改失败!");}}else{System.out.println("修改的记录不存在!");}}//添加private void insertAccount() {System.out.println("你选择的是添加功能,请按要求添加以下内容:");System.out.println("请添加消费名称:");String flname = sc.next();System.out.println("请添加消费金额:");double money = sc.nextDouble();System.out.println("请添加支付方式:");String zhanghu = sc.next();System.out.println("请添加消费日期:");String createtime = sc.next();System.out.println("请添加消费说明:");String description = sc.next();Account ac = new Account(0, flname, money, zhanghu, createtime, description);int i = controller.insert(ac);if(i > 0){System.out.println("添加成功!");selectAll();}else{System.out.println("添加失败!");}}//查询private void selectAccount() {System.out.println("请选择你需要的查询【1-2】:1.查询所有    2.多条件查询");int choose = sc.nextInt();switch (choose) {case 1://System.out.println("查询所有");selectAll();break;case 2://System.out.println("多条件查询");selectDouble();break;default:System.out.println("你选择的查询不存在,请重新输入【1-2】!");break;}}//多条件查询private void selectDouble() {System.out.println("请选择需要查询的功能【1-2】:1.模糊查询    2.根据日期查询");int choose = sc.nextInt();switch (choose) {case 1://System.out.println("模糊查询");select();break;case 2://System.out.println("根据日期查询");selectDate();break;default:break;}}//根据日期查询private void selectDate() {System.out.println("请输入消费的开始时间:");String startDate = sc.next();System.out.println("请输入消费的截止时间:");String endDate = sc.next();List<Account> list = controller.selectDate(startDate,endDate);if(list != null & list.size() != 0){for (Account ac : list) {System.out.println(ac.getZwid()+"\t\t"+ac.getFlname()+"\t\t"+ac.getMoney()+"\t\t"+ac.getZhanghu()+"\t\t"+ac.getCreatetime()+"\t\t"+ac.getDescription());}}else{System.out.println("查询的记录不存在!");}}//根据姓名模糊查询private void select() {System.out.println("根据姓名模糊查询:");String name = sc.next();List<Account> list = controller.select(name);//把查询所有的数据打印出来print(list);}//查询所有private void selectAll() {List<Account> list = controller.selectAll();//把查询所有的数据打印出来print(list);}//打印查询到的数据private void print(List<Account> list) {if(list.size() != 0 && list != null){System.out.println("ID\t\t消费记录\t\t消费金额\t\t支付方式\t\t消费日期\t\t\t消费说明");for (Account ac : list) {System.out.println(ac.getZwid()+"\t\t"+ac.getFlname()+"\t\t"+ac.getMoney()+"\t\t"+ac.getZhanghu()+"\t\t"+ac.getCreatetime()+"\t\t"+ac.getDescription());}}else{System.out.println("没有查询到数据!");}}}

controller层

package com.gjp.controller;import java.util.List;import com.gjp.account.Account;
import com.gjp.service.AccountService;
import com.gjp.service.impl.AccountServiceImpl;public class AccountController {AccountService service = new AccountServiceImpl();//查询所有public List<Account> selectAll() {return service.selectAll();}//模糊查询public List<Account> select(String name) {return service.select(name);}//添加public int insert(Account ac) {return service.insert(ac);}//根据ID查询public Account selectById(int zwid) {return service.selectById(zwid);}//修改public int edit(Account ac) {return service.edit(ac);}//删除public int delete(int zwid) {return service.delete(zwid);}//根据日期查询public List<Account> selectDate(String startDate, String endDate) {return service.selectDate(startDate,endDate);}}

service层(接口)

package com.gjp.service;import java.util.List;import com.gjp.account.Account;public interface AccountService {//查询所有List<Account> selectAll();//模糊查询List<Account> select(String name);//添加int insert(Account ac);//修改int edit(Account ac);//根据ID查询Account selectById(int zwid);//删除int delete(int zwid);//根据日期查询List<Account> selectDate(String startDate, String endDate);}

实现service层的接口

package com.gjp.service.impl;import java.util.List;import com.gjp.account.Account;
import com.gjp.dao.AccountDao;
import com.gjp.dao.impl.AccountDaoImpl;
import com.gjp.service.AccountService;
import com.gjp.tools.JDBCUtil;public class AccountServiceImpl implements AccountService{AccountDao dao = new AccountDaoImpl();//查询所有@Overridepublic List<Account> selectAll() {return dao.selectAll();}//模糊查询@Overridepublic List<Account> select(String name) {return dao.select(name);}//添加@Overridepublic int insert(Account ac) {return dao.insert(ac);}//根据ID查询@Overridepublic Account selectById(int zwid) {return dao.selectById(zwid);}//修改@Overridepublic int edit(Account ac) {return dao.edit(ac);}//删除@Overridepublic int delete(int zwid) {return dao.delete(zwid);}//根据日期查询@Overridepublic List<Account> selectDate(String startDate, String endDate) {return dao.selectDate(startDate,endDate);}}

dao层

package com.gjp.dao;import java.util.List;import com.gjp.account.Account;public interface AccountDao {//查询所有List<Account> selectAll();//模糊查询List<Account> select(String name);//添加int insert(Account ac);//根据ID查询Account selectById(int zwid);//修改int edit(Account ac);//删除int delete(int zwid);//根据日期查询List<Account> selectDate(String startDate, String endDate);}

实现dao层的接口

package com.gjp.dao.impl;import java.sql.SQLException;
import java.util.List;import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;import com.gjp.account.Account;
import com.gjp.dao.AccountDao;
import com.gjp.tools.JDBCUtil;public class AccountDaoImpl implements AccountDao{QueryRunner qr = new QueryRunner(JDBCUtil.getdDataSource());//查询所有@Overridepublic List<Account> selectAll() {try {String sql = "select * from account";List<Account> list = qr.query(sql, new BeanListHandler<Account>(Account.class));return list;} catch (SQLException e) {e.printStackTrace();return null;}}//模糊查询@Overridepublic List<Account> select(String name) {try {String sql = "select * from account where flname like ?";return qr.query(sql,new BeanListHandler<Account>(Account.class) ,"%"+name+"%");} catch (SQLException e) {e.printStackTrace();}return null;}//添加@Overridepublic int insert(Account ac) {try {String sql  = "insert into account values(null,?,?,?,?,?)";Object[] params = {ac.getFlname(),ac.getMoney(),ac.getZhanghu(),ac.getCreatetime(),ac.getDescription()};return qr.update(sql, params);} catch (SQLException e) {e.printStackTrace();return 0;}}//修改@Overridepublic int edit(Account ac) {try {String sql = "update account set flname = ?,money = ?,zhanghu = ?,createtime = ?,description = ? where zwid = ?";Object[] params = {ac.getFlname(),ac.getMoney(),ac.getZhanghu(),ac.getCreatetime(),ac.getDescription(),ac.getZwid()};return qr.update(sql, params);} catch (SQLException e) {e.printStackTrace();return 0;}}//根据ID查询@Overridepublic Account selectById(int zwid) {try {String sql = "select * from account where zwid = ?";return qr.query(sql, new BeanHandler<Account>(Account.class), zwid);} catch (SQLException e) {e.printStackTrace();return null;}}//删除@Overridepublic int delete(int zwid) {try {String sql = "delete from account where zwid = ?";return qr.update(sql, zwid);} catch (SQLException e) {e.printStackTrace();return 0;}}//根据日期查询@Overridepublic List<Account> selectDate(String startDate, String endDate) {try {String sql = "select * from account where createtime between ? and ?";Object[] params = {startDate,endDate};return qr.query(sql, new BeanListHandler<Account>(Account.class), params);} catch (SQLException e) {e.printStackTrace();return null;}}}

管家婆数据库


日常消费软件记账项目相关推荐

  1. 基于Android个人日常消费理财_财务软件app

    日常消费财务小管家是一款适用于android系统的手机应用软件,主要功能有: 这些是老师给的主要功能 1.自动统计消费金额,可以生成当年.当月.当日消费明细账单,供用户查看,用户也可随时查看当前消费明 ...

  2. 计算机毕业设计Android个人日常消费理财_财务软件

    日常消费财务小管家是一款适用于android系统的手机应用软件,主要功能有: 这些是老师给的主要功能 1.自动统计消费金额,可以生成当年.当月.当日消费明细账单,供用户查看,用户也可随时查看当前消费明 ...

  3. 软件开发项目的风险管理 (转)

    原作者:李艺兰 软件开发项目的风险管理 众所周知,软件开发过程可分为:需求分析.设计.编码.测试.安装及维护等几个过程(在RUP方法中:业务建模.需求.分析设计.实施.测试.部署),实际上一个完整的软 ...

  4. 软件外包项目中的进度管理

    案例 A公司是一家美资软件公司在华办事机构,其主要的目标是开拓中国市场.服务中国客户,做一些本地化和客户化的工作.它的主要软件产品是由总部在硅谷的软件开发基地完成,然后由世界各地的分公司或办事机构进行 ...

  5. 在一个软件开发项目中进行实际日程安排的十二点提示(转)

    Laura Rose , QE Manager, Rational<?XML:NAMESPACE PREFIX = O /> <?XML:NAMESPACE PREFIX = ST1 ...

  6. Java小项目——家庭记账项目

    学习Java已经过了半个月左右了,所学的知识已经能够写一些小程序或者小项目,虽然它可能没有那么高级,但是也能检验你之前所学的全部内容.所以今天就与大家分享一下我的小项目经验. 一.需求说明 该软件能够 ...

  7. 一个开发周期为6个月的中小型软件开发项目成本预算大致表

    一个开发周期为6个月的中小型软件开发项目成本预算大致表 从Excel粘贴过来,有些变形,请谅解一下. 表格中未包含 管理费用.公司的办公场地费用.税费等,软件的开发成本还是很高 的,能有效控制开发成本 ...

  8. 软件开发项目的风险管理

    月27日参加了项目管理联盟组织的'北京项目管理爱好者聚会',我被易风邀请做了一个主题演讲,其实不是什么演讲,只是结合理论谈了自己的一些想法和工作中遇到过的经验教训,更主要的目的是给大家出一个讨论和交流 ...

  9. 软件开发项目中进行实际日程安排

    转自:http://www.ibm.com/developerworks/cn/rational/rationaledge/content/sep05/rose/ 你是否有足够的能力领导一个软件开发项 ...

  10. 在一个软件开发项目中进行实际日程安排的十二点提示

    Laura Rose , QE Manager, Rational 2005 年 10 月 19 日 来自 Rational Edge:软件开发团队依赖于严谨的计划日程安排.但除了使用基本的日程安排工 ...

最新文章

  1. 视频会议老走神?试试VR会议的真·沉浸式体验!HTC、IEEE纷纷试水,云开会也能拥抱、自拍...
  2. JUC里面的相关分类|| java并发编程中,关于锁的实现方式有两种synchronized ,Lock || Lock——ReentrantLock||AQS(抽象队列同步器)
  3. html调用applet
  4. Join的加强版CountDownLatch
  5. JavaScript debugger time out and defer.resolve
  6. [20150828]插入commit scn到记录.txt
  7. 2021年中国微粉磨料市场趋势报告、技术动态创新及2027年市场预测
  8. hive常见的建表方式有哪些?各自的使用场景是?
  9. 趋势杀毒文件服务器版10用户,趋势杀毒软件(OSCE 10.0)服务器端备份与恢复
  10. 在Windows下使用Tortoise Git时,提示认证失败的解决办法
  11. 以后有面试官问你「密码学」,你就把这篇文章扔给他
  12. 西藏计算机一级,西藏计算机等级考试级别
  13. 模拟IIC读取SHT30温湿度传感器数据
  14. 盒马鲜生真的是新零售吗?
  15. 程序员学c语言吗,为什么程序员要学C语言
  16. 面试题:什么是野指针?产生野指针的原因?
  17. Qt中根据pc屏幕分辨率按比例修改窗口的大小
  18. 武汉云数时代网络科技有限公司网店代运营托管优势?
  19. 链表OJ2——倒数第K个结点-分割链表,回文链表,相交链表,环形链表和随机指针链表深拷贝问题
  20. 外网如何访问本地项目

热门文章

  1. css 元素上下居中
  2. 路由器mac地址克隆
  3. CISSP考试回忆录 | 考试契机、曲折备考、考试现场回顾
  4. 打印机怎么连接电脑使用
  5. 基于HTML5的电子病历编辑方法及系统与流程
  6. 【机器学习】十三、一文看懂Bagging和随机森林算法原理
  7. 区分 Linux 的硬链接与软链接
  8. C++第三方库HPSocket数据的发送与接收
  9. JAVA_将数字转换成大写的中文数字
  10. 毕业论文系列-公式编号-等号对齐及编号