初次模拟小鲨鱼记账本1.0

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

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

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

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

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

每天1个java练习小项目,java7日项目思维养成_哔哩哔哩_bilibiliicon-default.png?t=M0H8https://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());}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/18447.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【PPT】《使用ChatGPT一键制作带自动配图的PPT演讲稿》- 知识点目录

《使用ChatGPT一键制作带自动配图的PPT演讲稿》 1. 使用ChatGPT生成prompt 生成一个用于Tome制作《汽车诞生史》PPT的prompt为了制作《汽车诞生史》PPT&#xff0c;您可以考虑以下提示&#xff1a; 开场&#xff1a;引用一句关于汽车的名言或警句&#xff0c;如“汽车是现代生…

一看媲美chatgpt的ai工具站notion ai

介绍&#xff1a; Notion AI是一种人工智能技术&#xff0c;旨在通过自然语言处理、机器学习和深度学习等技术&#xff0c;帮助用户更高效地处理信息和完成任务。Notion AI可以帮助用户自动化一些常见的任务&#xff0c;例如自动分类文档、提取关键信息、生成摘要、自动回答问…

向ChatGPT开炮!谷歌打响全面反击战!官宣新模型比肩GPT-4!

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【Transformer】微信技术交流群 明敏 丰色 发自 凹非寺转载自&#xff1a;量子位&#xff08;QbitAI&#xff09; 万众瞩目&#xff0c;谷歌的反击来了。 现在&#xff0c;谷…

PaLM 2全面反超反超GPT-4,谷歌官宣AI重构搜索,朝着ChatGPT微软开炮

来源 | 量子位 | 公众号 QbitAI 万众瞩目&#xff0c;谷歌的反击来了。 现在&#xff0c;谷歌搜索终于要加入AI对话功能了&#xff0c;排队通道已经开放。 当然这还只是第一步。 大的还在后面&#xff1a; 全新大语言模型PaLM 2正式亮相&#xff0c;谷歌声称它在部分任务超…

chatgpt赋能python:Python数据清洗方法:从数据脏到数据干净

Python数据清洗方法&#xff1a;从数据脏到数据干净 数据清洗是数据科学家和分析师最重要的工作之一&#xff0c;因为在真正开始建立模型和产生洞察之前&#xff0c;必须先处理数据集。Python是一种非常流行的语言&#xff0c;特别擅长于数据处理和数据分析方面。在本文中&…

chatgpt赋能python:Python数据清洗:为何数据清洗很重要?

Python数据清洗&#xff1a;为何数据清洗很重要&#xff1f; 数据清洗是数据分析中最重要的部分之一&#xff0c;它涉及到从一堆无组织、无用或错误数据中提取有益信息的过程。随着数据量的不断增加&#xff0c;数据清洗变得越来越重要&#xff0c;因为令人困惑的数据会导致错…

chatgpt赋能python:Python数据的清洗

Python数据的清洗 Python是一种高级编程语言&#xff0c;被广泛用于数据分析和数据挖掘的领域。在这些任务中&#xff0c;数据清洗是非常重要的一部分。因为数据的质量直接影响到结果的准确性和可靠性。本文将介绍一些使用Python进行数据清洗的方法。 数据清洗的概念和意义 …

chatgpt赋能python:Python分隔:利用Python进行数据清洗的必备技能

Python分隔&#xff1a;利用Python进行数据清洗的必备技能 在数据处理过程中&#xff0c;数据分隔是一个非常常见的步骤&#xff0c;特别是在将数据导入数据库或将文本数据转换为表格数据时。Python是一种强大的数据处理工具&#xff0c;具有许多内置的分隔函数和库。在本文中…

chatgpt赋能python:数据清洗在Python中的实现及其意义

数据清洗在Python中的实现及其意义 数据清洗是数据科学和机器学习中非常关键的一步&#xff0c;因为数据通常是杂乱无章的&#xff0c;包括错误&#xff0c;缺失&#xff0c;重复&#xff0c;不一致等。这样的数据可能会对模型的预测产生负面影响&#xff0c;因此需要进行数据…

[创业之路-60] :从道德经63章和冰山模型,看创业中的守护,通透外部的人与事

道德经63章原文&#xff1a; 为无为&#xff0c;事无事&#xff0c;味无味。大小多少&#xff0c;报怨以德&#xff0c;图难于其易&#xff0c;为大于其细。天下难事&#xff0c;必作于易&#xff1b;天下大事&#xff0c;必作于细。是以圣人终不为大&#xff0c;故能成其大。夫…

《2023 HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face》阅读笔记

http:// https://github.com/microsoft/JARVIS. 1 Abstract and Introduction 借助大语言模型&#xff08;LLMS&#xff09;在语言理解生成推理等方面表现出的出色能力&#xff0c;考虑将其作为控制器来管理现有的各种AI模型&#xff0c;把语言作为通用接口。基于这一理念&a…

ChatGPT的4个不为人知却非常实用的小功能

重点介绍四个ChatGPT很实用的小功能。 一、停止生成 如果在ChatGPT输出内容的过程中&#xff0c;我们发现结果不是自己想要的&#xff0c;可以直接点击“Stop generating”按钮&#xff0c;这样它就会立即停止输出。 二、复制功能 在ChatGPT返回对话的右侧&#xff0c;有三个图…

程序员的小幽默:让你笑到肚子痛的搞笑动图

今天小编用动图的方式带大家了解程序员这个逗逼、可爱的群体。看动图时大家注意形象啊&#xff01; 1、程序员的生存状态 。 2、双核CPU的真相。 3、当年学C语言的过程。 4、测试环境一切ok&#xff0c;马上上线 5、调试bug 6、正在调试&#xff0c;突然内存溢出了 7、卧槽&am…

图文搞笑段子这么黑程序员真的好吗?

“男朋友写代码不理我,于是我悄悄改掉了web.xml的一个配置,他搞了两天都没调通,我告诉了他,] 结果他要和我分手,我很伤心,但他的朋友告诉我,他没砍死你才说明他真的爱你…” “楼主别tm编了,程序员哪来的女朋友!” “谁告诉你我是女的了。” 谁能给解答一下什么叫做面向对象编程…

程序员界的经典笑话,逗乐了

1&#xff0c;十年生死两茫茫&#xff0c;写程序&#xff0c;到天亮。千行代码&#xff0c;Bug何处藏。纵使上线又怎样&#xff0c;朝令改&#xff0c;夕断肠。领导每天新想法&#xff0c;天天改&#xff0c;日日忙。相顾无言&#xff0c;惟有泪千行。每晚灯火阑珊处&#xff0…

那些程序员才懂的笑话

1.什么是死锁&#xff1f; 面试官&#xff1a;解释一下什么叫做死锁&#xff0c;解释明白我们就会要你。 我&#xff1a;先发 offer&#xff0c;签完 offer 再解释。 2.java 和 JavaScript的关系 问 &#xff1a;java 和 JavaScript有什么关系&#xff1f; 答&#xff1a;跟…

迟早要笑死在ChatGPT的回复里!

ChatGPT就像一个长着AI脑袋的大嘴巴&#xff0c;既能给我们带来很多的知识和见解&#xff0c;同时也能够让我们捧腹大笑&#xff0c;比如&#xff1a; 再比如&#xff0c;假装自己是一条狗跟ChatGPT聊天&#xff01;&#xff01;&#xff01; 再比如&#xff1a;试着邀请ChatGP…

有关程序员的几个爆笑段子

1、栈和队列的区别是啥&#xff1f; 吃多了拉就是队列&#xff0c;吃多了吐就是栈。 2、世界上最遥远的距离不是生与死&#xff0c;而是你亲手制造的BUG就在你眼前&#xff0c;你却怎么都找不到她。 3、《C程序设计语言》比《C程序设计语言》厚了几倍。。。果然有了对象就麻烦很…

关于程序员的搞笑段子,内涵满满的!请允许我先笑5分钟

我是一个苦b的程序员&#xff0c;今晚加班到快通宵了&#xff0c;困得快睁不开眼了&#xff0c;女上司很关心&#xff0c;问我要不要吃宵夜。我没好气地说&#xff0c;宵夜就算了&#xff0c;能让我睡一觉就行了。女上司红着脸说了句讨厌啊&#xff0c;然后坐在我身边不动&…

今日大厂:ZEKU全员被裁,PayPal疑似停止加薪,贝恩“鼓励”员工休半年长假

大家好&#xff01;我是韩老师。 看来&#xff0c;这一波的寒气&#xff0c;远未散去。 来看看今天韩老师整理的大厂日报。 1. 半导体四小龙 ZEKU 全员被裁 昨天&#xff0c;OPPO旗下的zeku员工收到了今天办公场所关闭的通知&#xff0c;理由是IT升级&#xff0c;奇怪的理由让人…