初次模拟小鲨鱼记账本1.0
我打算逐步将小鲨鱼记账本优化,这次没有用到数据库,等出到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相关推荐
- 基于微信小程序的小程序记账本APP源码
运行环境: 微信平台或者微信开发者工具. 硬件环境: 微信开发者工具需要windows 7/8/10 2G内存以上(推荐4G,4G以上更好),手机环境安装微信APP即可 可以实现: 用户角色包含以下功 ...
- Android——一个简单的记账本APP
一个简单的记账本APP 视频效果预览 添加账目记录 效果预览 添加账目记录实现 简述 实现 获取日期 字符串时间戳转Date Date转星期 获取时间 Switch控制显示和隐藏 更改Switch样式 ...
- 51Nod——T 1631 小鲨鱼在51nod小学
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1631 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 ...
- 区块链简而言之,就是一个分散式的记账本
区块链简而言之,就是一个分散式的记账本,有着点对点交易查询,公正,透明,可追溯,不可篡改,去中心化的特点. 区块链在大类上被分为公共区块链(公链)区块链简而言之,就是一个分散式的记账本,有着点对点交易 ...
- 51nod 1631 小鲨鱼在51nod小学
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依靠算法方面的特长,在班里担任了许多职务. 每一 ...
- Java基础项目:小鲨鱼记账系统
小鲨鱼记账管理系统 最近做的项目都是基础项目,今天刚开学报到,顺便敲了下. 这个项目比较简单,可以使用SpringMVC进行扩展.但是想扩展的大佬可以在做一个web的界面,使用前端框架Vuejs + ...
- 1631 小鲨鱼在51nod小学 暴力
1631 小鲨鱼在51nod小学 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依 ...
- 小鲨鱼在51nod小学
鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依靠算法方面的特长,在班里担任了许多职务. 每一个职务都有一个起始时间A和结束时间B,意为小鲨鱼在[A, B]时间内,担任了某职务( ...
- 51nod 1631 小鲨鱼在51nod小学 【线段树--】
1631 小鲨鱼在51nod小学 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 鲨鱼巨巨2.0(以下简称小鲨鱼)以优异的成绩考入了51nod小学.并依靠算法方面的 ...
最新文章
- Datawhale组队学习周报(第035周)
- C标准库 limits.h
- 基本数据类型和引用数据类型作为参数时候的问题
- 第12个双11,天猫的“造新”运动
- linux下执行shell脚本文件,Linux下使用shell脚本自动执行脚本文件
- 读取linux的运行状态,Linux下安装使用sar工具来获取系统运行状态
- jitpack第三方依赖库使用
- php框架进入命令行,swoole为何要用命令行来启动_PHP开发框架教程
- POJ NOI MATH-7656 李白的酒
- 鼠标左键长按功能的实现
- 统一项目管理平台(UMPlatForm.NET) - 5.1 数据字典管理模块
- 课设(房屋出租系统)
- 笔记本显示器仅计算机,笔记本可以当屏幕用 笔记本屏幕当显示器用
- 网络安全----数字签名与数字证书
- 关于ROS+Gazebo通过cmd_vel或键盘控制节点发布速度消息时,仿真小车运动速度相反问题
- 【Excel】Excel学习笔记 -- 通配符的使用与定位条件
- 气传导耳机是不是智商税?气传导耳机靠谱吗?
- 2005路网 2008路网 2009路网 2010路网 2011路网 2012路网 2013路网 2014路网 2015路网2016路网 2017路网 2018路网 2019路网下载与分析
- 正信光电新三板挂牌上市
- 网站安全检测之用户密码找回网站漏洞的安全分析与利用
热门文章
- 全球及中国铁路空气弹簧行业研究及十四五规划分析报告(2022)
- java线程知识总结
- java设计模式之—OO面向对象思维 Object Oriented(农场一头小母牛,每年生头小母牛,母牛5岁产母牛,20年上多少牛?)
- 最高检发布破坏计算机信息系统案等六大指导性案例
- 码农晋升为技术管理者后,痛并快乐着的纠结内心
- Cisco Firepower 9300 Series FTD Software 7.2.0 ASA Software 9.18.1
- 计算机应用基础形成性考核册答案win7,《计算机应用基础》形成性考核册答案...
- 【抓包工具】实战:WireShark 捕获过滤器的超全使用教程
- 发邮件窗体【支持编辑邮件模板,使用wse多线程上传附件及发邮件(带附件)】以及在服务器端自动发邮件...
- Android Studio实现外卖订餐系统