我打算逐步将小鲨鱼记账本优化,这次没有用到数据库,等出到2.0版本再用

本次的核心是查找数据用了stream流(我的另一篇简单介绍了什么是Stream流)

用到的比较简单,用于对Java基础的巩固加深,下一次的2.0版正好再对数据库的知识进行复习

如果有机会出3.0就把学的前段一些知识再用上(...够呛了,我努力找找资源)

这是1.0版本的视频(讲的挺好的,我把源码分享给大家,源码是我自己打的哦)

每天1个java练习小项目,java7日项目思维养成_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Aq4y1W79E?p=3*这是账单对象:

package app;
//这是一个账单对象
//ID 类别 账户 类型 金额 时间 备注
//创建类一般流程 用private;
// 之后无参有参构造函数;
//用getter和setter
public class Object_Bill {private String name;//吃饭 娱乐private String account;private String type;private double total;private String time;private String desc;public Object_Bill() { //无参构造器}//有参构造器public Object_Bill(String name, double total, String account, String type, String time, String desc) {this.name = name;this.account = account;this.type = type;this.total = total;this.time = time;this.desc = desc;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getType() {return type;}public void setType(String type) {this.type = type;}public double getTotal() {return total;}public void setTotal(double total) {this.total = total;}public String getTime() {return time;}public void setTime(String time) {this.time = time;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}}

*这是主体: 

package app;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Project_01 {//创建一个集合来储存,数组static   List<Object_Bill> billsList=new ArrayList<>();//通过静态代码块来首先加载一些数据//只会实现一次,就算你创建了20个对象,只有第一个对象会执行//为了现实3;所以先用静态代码块static{billsList.add(new Object_Bill("吃饭支出",247,"交行","支出","2021-01-23","家庭聚会"));billsList.add(new Object_Bill("工资收入",23443,"现金","收入","2022-02-11","发工资"));billsList.add(new Object_Bill("服装支出",666,"微信","支出","2021-01-23","买衣服"));billsList.add(new Object_Bill("股票收入",8888,"交行","收入","2022-01-23","股票大涨"));billsList.add(new Object_Bill("礼金支出",888,"农行","支出","2022-1-01","给长辈买礼物"));}public static void main(String[] args) {menu();run();}public static void menu(){//1.首先显示主界面System.out.println("------小鲨鱼随手记--------");System.out.println("1.添加账务 2.删除账务 3.查询账务 4.退出系统");System.out.println("选择上述服务");}public static void run(){//之后获取输入的文字ScannerScanner sc=new Scanner(System.in);boolean flag=true;while(flag) {int num=sc.nextInt();switch (num) {case 1:System.out.println("你选择的是添加账务");add();break;case 2:System.out.println("你选择的是删除账务");delete();break;case 3:System.out.println("你选择的是查询账务");select();break;case 4:System.out.println("你选择的是退出系统");flag=false;//用标记退出系统,break退出Switch;while退出whilebreak;default:System.out.println("请重新输入");}}}public static void add(){//  public Object_Bill(String name, double total, String account, String type, String time, String desc)Scanner scs=new Scanner(System.in);Object_Bill bill =new Object_Bill();System.out.println("请输入支出收入类型:");bill.setType(scs.next());System.out.println("请输入类别:");bill.setName(scs.next());System.out.println("请输入账户:");bill.setAccount(scs.next());System.out.println("请输入金额:");bill.setTotal(scs.nextDouble());System.out.println("请输入时间:");bill.setTime(scs.next());System.out.println("请输入备注:");bill.setDesc(scs.next());billsList.add(bill);System.out.println("添加账务成功!");menu();}public static void delete(){Scanner sc=new Scanner(System.in);System.out.println("选择你要删除的序号数:");int   num =sc.nextInt();Object_Bill bill=billsList.get(num-1);billsList.remove(num-1);System.out.println("删除账务成功!删除的是:");System.out.println("ID\t\t类别\t\t\t账户\t\t类型\t\t金额\t\t\t时间\t\t\t\t备注");System.out.println(num+"\t\t"+bill.getName()+"\t\t\t"+bill.getTotal()+"\t\t"+bill.getAccount()+"\t\t"+bill.getType()+"\t\t\t"+bill.getTime()+"\t\t\t\t"+bill.getDesc());menu();}public static void select(){System.out.println("账务查询具体功能如下");System.out.println("1.查询所有 2.按照时间区间来查询 3.收入和支出的类型查询");System.out.println("选择上述服务类型");Scanner sc1=new Scanner(System.in);int num1=sc1.nextInt();switch (num1){case 1:selectAll();break;case 2:selectByDate();break;case 3:selectByType();break;}menu();}private static void selectAll(){printAll(billsList);}private static  void selectByDate() {//将字符串反向解析为时间SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");System.out.println("小鲨鱼--账务查询--收入和支出类型");Scanner scanner = new Scanner(System.in);System.out.println("输入开始时间");String start = scanner.next();System.out.println("输入结束时间");String end = scanner.next();//还是用stream流List<Object_Bill> billDate=  billsList.stream().filter(bills->{String time=bills.getTime();try {Date startDate= format.parse(start);//用try catch 抛出异常Date endDate=   format.parse(end);Date dateTime=format.parse(time);if (dateTime.before(endDate)&&dateTime.after(startDate)) {return true;}} catch (ParseException e) {e.printStackTrace();}return false;}).collect(Collectors.toList());printAll(billDate);}private  static  void selectByType(){System.out.println("小鲨鱼--账务查询--收入和支出类型");System.out.println("输入收入或者支出");Scanner scanner = new Scanner(System.in);String type = scanner.next();//Stream流(lamda表达式)//进行过滤//集合Stream
//         Stream<Object_Bill> stream=billsList.stream();
//         stream.filter(bills->{
//             String type1=bills.getType();
//             return type.equals(type1);//equals比较
//              });List<Object_Bill> billsList1=billsList.stream().filter(bills -> {String type1 = bills.getType();return type.equals(type1);})//equals比较.collect(Collectors.toList());//这是把流转换为集合printAll(billsList1);}public static void printAll(List<Object_Bill> billsList){System.out.println("ID\t\t类别\t\t\t账户\t\t类型\t\t金额\t\t\t时间\t\t\t\t备注");for (int i = 0; i <billsList.size() ; i++) {Object_Bill bill=billsList.get(i);System.out.println(i+1+"\t\t"+bill.getName()+"\t\t\t"+bill.getTotal()+"\t\t"+bill.getAccount()+"\t\t"+bill.getType()+"\t\t\t"+bill.getTime()+"\t\t\t\t"+bill.getDesc());}}}

初次模拟小鲨鱼记账本1.0相关推荐

  1. 基于微信小程序的小程序记账本APP源码

    运行环境: 微信平台或者微信开发者工具. 硬件环境: 微信开发者工具需要windows 7/8/10 2G内存以上(推荐4G,4G以上更好),手机环境安装微信APP即可 可以实现: 用户角色包含以下功 ...

  2. Android——一个简单的记账本APP

    一个简单的记账本APP 视频效果预览 添加账目记录 效果预览 添加账目记录实现 简述 实现 获取日期 字符串时间戳转Date Date转星期 获取时间 Switch控制显示和隐藏 更改Switch样式 ...

  3. 51Nod——T 1631 小鲨鱼在51nod小学

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1631 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 ...

  4. 区块链简而言之,就是一个分散式的记账本

    区块链简而言之,就是一个分散式的记账本,有着点对点交易查询,公正,透明,可追溯,不可篡改,去中心化的特点. 区块链在大类上被分为公共区块链(公链)区块链简而言之,就是一个分散式的记账本,有着点对点交易 ...

  5. 51nod 1631 小鲨鱼在51nod小学

    基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依靠算法方面的特长,在班里担任了许多职务. 每一 ...

  6. Java基础项目:小鲨鱼记账系统

    小鲨鱼记账管理系统 最近做的项目都是基础项目,今天刚开学报到,顺便敲了下. 这个项目比较简单,可以使用SpringMVC进行扩展.但是想扩展的大佬可以在做一个web的界面,使用前端框架Vuejs + ...

  7. 1631 小鲨鱼在51nod小学 暴力

    1631 小鲨鱼在51nod小学 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依 ...

  8. 小鲨鱼在51nod小学

    鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依靠算法方面的特长,在班里担任了许多职务. 每一个职务都有一个起始时间A和结束时间B,意为小鲨鱼在[A, B]时间内,担任了某职务( ...

  9. 51nod 1631 小鲨鱼在51nod小学 【线段树--】

    1631 小鲨鱼在51nod小学 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依靠算法方面的 ...

最新文章

  1. Datawhale组队学习周报(第035周)
  2. C标准库 limits.h
  3. 基本数据类型和引用数据类型作为参数时候的问题
  4. 第12个双11,天猫的“造新”运动
  5. linux下执行shell脚本文件,Linux下使用shell脚本自动执行脚本文件
  6. 读取linux的运行状态,Linux下安装使用sar工具来获取系统运行状态
  7. jitpack第三方依赖库使用
  8. php框架进入命令行,swoole为何要用命令行来启动_PHP开发框架教程
  9. POJ NOI MATH-7656 李白的酒
  10. 鼠标左键长按功能的实现
  11. 统一项目管理平台(UMPlatForm.NET) - 5.1 数据字典管理模块
  12. 课设(房屋出租系统)
  13. 笔记本显示器仅计算机,笔记本可以当屏幕用 笔记本屏幕当显示器用
  14. 网络安全----数字签名与数字证书
  15. 关于ROS+Gazebo通过cmd_vel或键盘控制节点发布速度消息时,仿真小车运动速度相反问题
  16. 【Excel】Excel学习笔记 -- 通配符的使用与定位条件
  17. 气传导耳机是不是智商税?气传导耳机靠谱吗?
  18. 2005路网 2008路网 2009路网 2010路网 2011路网 2012路网 2013路网 2014路网 2015路网2016路网 2017路网 2018路网 2019路网下载与分析
  19. 正信光电新三板挂牌上市
  20. 网站安全检测之用户密码找回网站漏洞的安全分析与利用

热门文章

  1. 全球及中国铁路空气弹簧行业研究及十四五规划分析报告(2022)
  2. java线程知识总结
  3. java设计模式之—OO面向对象思维 Object Oriented(农场一头小母牛,每年生头小母牛,母牛5岁产母牛,20年上多少牛?)
  4. 最高检发布破坏计算机信息系统案等六大指导性案例
  5. 码农晋升为技术管理者后,痛并快乐着的纠结内心
  6. Cisco Firepower 9300 Series FTD Software 7.2.0 ASA Software 9.18.1
  7. 计算机应用基础形成性考核册答案win7,《计算机应用基础》形成性考核册答案...
  8. 【抓包工具】实战:WireShark 捕获过滤器的超全使用教程
  9. 发邮件窗体【支持编辑邮件模板,使用wse多线程上传附件及发邮件(带附件)】以及在服务器端自动发邮件...
  10. Android Studio实现外卖订餐系统