包含登录、注册、记账、每日账单查看、每月报表、添加记账类型这些功能。数据存储采用的是txt文档+xml文档。程序是一个控制台程序,用IntelliJ IDEA+jdk8开发。涉及到的知识有List集合、文件读写、xml文件和对象互转、还有在List的查询中使用lamda表达式。这是我复习javase,熟悉开发工具的练手项目。
主要想总结的地方是 List集合中使用lamda表达式和xml和对象的互转。
 
1、List集合中使用lamda表达式。
Optional<String> co = listAll.stream().filter(item -> item.contains(temp)).findFirst();
if (co.isPresent()) { billType = co.get();
Optional<BillItem> obi = listItems.stream().filter(item -> item.getName().contains(temp)).findFirst(); if (obi.isPresent()) {
existItem = obi.get();
}
}
2.com.thoughtworks.xstream的使用。
这里主要想说说 xml带属性和子节点是集合的时候如何使用转换器转换。
package com.ll.bm;

import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import java.util.*; public class BillDateConvert implements Converter { @Override
public void marshal(Object o, HierarchicalStreamWriter writer, MarshallingContext mContext) { BillDate bd = (BillDate) o; writer.addAttribute("time", bd.getTime()); List<BillItem>listItems=bd.getListItems(); for (BillItem bi:listItems){ writer.startNode("BillItem");
mContext.convertAnother(bi,new BillItemConvert()); writer.endNode(); }
} @Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext unContext) {
BillDate bd = new BillDate();
bd.setTime(reader.getAttribute("time"));
List<BillItem> list = new ArrayList<BillItem>();
while (reader.hasMoreChildren()) {
reader.moveDown(); Object o = unContext.convertAnother(bd, BillItem.class, new BillItemConvert());
BillItem od = (BillItem) o;
list.add(od);
reader.moveUp(); }
bd.setAnimalList(list);
// Object o= unContext.convertAnother(bd,bd.getListItems().getClass(),new BillItemConvert());
return bd;
} @Override
public boolean canConvert(Class aClass) {
return aClass.equals(BillDate.class);
}
}
<Bill>
<BillDate time="2020-10-27">
<BillItem name="1|购物" val="5.0"/>
<BillItem name="2|餐饮" val="13.0"/>
<BillItem name="6|交通" val="9.0"/>
</BillDate>
</Bill>

代码下载

javase记账本管理程序

java练习项目——记账本的更多相关文章

  1. Java后台+数据库+Java web前端——记账本

    下面是本人实现的网页版(设计思路见上一篇https://www.cnblogs.com/sengzhao666/p/10445984.html) 代码如下: 运行截图: 首页: 创建: 账本删除:(先 ...

  2. Java web 开发填坑记 2 -如何正确的创建一个Java Web 项目

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72566261 本文出自[赵彦军的博客] Java web 开发填坑记 1-如何正确 ...

  3. 记自己的第一个完整的java web项目

    我是从asp.net平台转到java平台的.基于asp.net平台开发网站的快速便捷性,工作几年来大小网站多少也写了6.7个.但是转到java后,因为是在一家大公司,而且做的功能也比较单一,局限于此, ...

  4. 安卓开发实战-记账本APP(四)

    今天实现的内容有:添加账本信息,个人头像的切换,密码的修改,退出登录. 添加账本信息有三个功能: ①记一笔支出项目 ②记一笔收入项目 ③清空所有项目 在此期间遇到的困难有:Activity与Fragm ...

  5. 安卓开发实战-记账本APP(六)

    记账本APP开发---终结篇 昨天的动态数字录屏奉上:在抖音上拍了一个(ps:欢迎点赞) https://v.douyin.com/poEjmG/ 今天将图表的内容进行了制作,我用的是MPChart的 ...

  6. 进度1_家庭记账本App

    今天完成了昨天的初步构想,详细介绍见上一篇博客,具体项目结构和案例如下: MainActivity.java: package com.example.familybooks; import andr ...

  7. java web项目由http转换成https遇到的各种坑

    java web项目由http转换成https遇到的各种坑 这篇文章写给自己在经历项目由http转换成https遇到的各种坑所做的一份笔记,留给以后自己看,或者和开发的朋友也刚好遇到和我一样的问题的朋 ...

  8. Eclipse上进行java web项目的打包

    以下是一个基于maven搭建的Spring Boot项目的目录结构 版权声明:本文为博主原创文章,未经博主允许不得转载. 原文地址: https://www.cnblogs.com/poterliu/ ...

  9. Android开发实战——记账本(2)

    开发日志(2)——Bean目录以及数据库 首先编写一些自己生成的数据进行测试,看一下能否显示在模拟器上.那前提就是先写出bean目录,这和之前学的Javaweb步骤差不多.bean目录有三个变量事件. ...

  10. JAVA WEB项目中各种路径的获取

    JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报  分类: JAVA开发(41)  1.可以在s ...

随机推荐

  1. Ubuntu部署Django二:项目上传及测试

    首先将我们开发好的工程代码上传到服务器(Ubuntu)   用命令启动,然后进去浏览器检查,看看是否能正常启动 python3 manage.py runserver   如果 settings.py ...

  2. 详解Java Chassis 3与Spring Cloud的互操作

    本文分享自华为云社区<Java Chassis 3技术解密:与Spring Cloud的互操作>,作者: liubao68. Java Chassis 3一个很重要的设计原则:利用架构的韧 ...

  3. 无监督多视角行人检测 Unsupervised Multi-view Pedestrian Detection

    无监督多视角行人检测 Unsupervised Multi-view Pedestrian Detection 论文url:https://arxiv.org/abs/2305.12457 论文简述 ...

  4. 把vim配置成顺手的python轻量级IDE(一)

    把vim配置成顺手的python轻量级IDE(一) 地球的外星人君 Linux云计算和Python推动市场提升的学习研究者. 分享一篇文章,正好最近正在折腾VIM,原文在把vim配置成顺手的pytho ...

  5. CENTOS 6.4 编译安装APACHE PHP MYSQL ZEND【转载未测试】

    CENTOS 6.4 编译安装APACHE PHP MYSQL ZEND 由 cache 发布于 WWW 2013-07-21 [ 5560 ] 次浏览 [ 0 ] 条评论 标签: LAMP 搞网站跑 ...

  6. 力扣203(java&python)-移除链表元素(简单)

    题目: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 . 示例1: 输入:head = [1,2,6,3,4 ...

  7. EMR on ACK 全新发布,助力企业高效构建大数据平台

    ​简介: 阿里云 EMR on ACK 为用户提供了全新的构建大数据平台的方式,用户可以将开源大数据服务部署在阿里云容器服务(ACK)上.利用 ACK 在服务部署和对高性能可伸缩的容器应用管理的能力优 ...

  8. [FAQ] FinalCutPro 事件如何支持多个时间线

    左侧是建立的事件,右侧是默认的项目(也就是时间线上的剪辑项目). 如果需要这个事件里再弄一个时间线(比如剪辑另一个版本),左侧的事件上右击新建项目: 另一个项目,在这上面可以继续时间线的创作,等于是选 ...

  9. [K8s] Kubernetes 集群部署管理方式对比, kops, kubeadm, kubespray

    kops 是官方出的 Kubernetes Operations,生产级 K8s 的安装.升级和管理. 可以看做是适用于集群的 kubectl,kops 可帮助您从命令行创建,销毁,升级和维护生产级, ...

  10. 2019-10-31-VisualStudio-断点调试详解

    title author date CreateTime categories VisualStudio 断点调试详解 lindexi 2019-10-31 8:56:7 +0800 2019-06- ...