包含登录、注册、记账、每日账单查看、每月报表、添加记账类型这些功能。数据存储采用的是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. vue element序号翻页连续排序

    type="index" :index="indexMethod" // 序号翻页连续排序 indexMethod(index) { return (this. ...

  2. 通过path在windows下临时修改python和pip路径 以便于配置环境只对当前命令行窗口生效

    配置前 在cmd命令行下输入新env的路径 path=D:\Miniconda2\envs\openmmlab\openmmlab;D:\Miniconda2\envs\openmmlab\openm ...

  3. HarmonyOS 设备管理开发:USB 服务开发指导

      基本概念 USB服务是应用访问底层的一种设备抽象概念.开发者根据提供的USB API,可以获取设备列表.控制设备访问权限.以及与连接的设备进行数据传输.控制命令传输等. 运作机制 USB服务系统包 ...

  4. Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件-Nacos 、Sentinel等

    概述 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用服务的必需组件. 方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发 ...

  5. IIS 加载32dll失败

    前言 遇到一个这样的问题,因为在一个项目中是32位的,至于为什么是32位的呢,因为调用的都是老库,32位的,部署到iis出现错误如下: Server Error in '/' Application. ...

  6. vue3.0 中文文档(暂时)地址

    https://v3.cn.vuejs.org/ https://vue-docs-next-zh-cn.netlify.app/guide/installation.html#vue-devtool ...

  7. 阿里云数据库开源重磅发布:PolarDB HTAP的功能特性和关键技术

    简介:在3月2日的阿里云开源 PolarDB 企业级架构发布会上,阿里云 PolarDB 内核技术专家严华带来了主题为<PolarDB HTAP详解>的精彩演讲.在PolarDB存储计算分 ...

  8. 如何用Netty写一个高性能的分布式服务框架?

    简介: Netty 是一个致力于创建高性能网络应用程序的成熟的 IO 框架.相比较与直接使用底层的 Java IO API,不需要先成为网络专家就可以基于 Netty 去构建复杂的网络应用.业界常见的 ...

  9. [FAQ] FinalCutPro 视频背景加模糊效果

    1. 时间轴右上方,找到 倒数第二个 "显示或隐藏效果浏览器",里面有一个 "模糊" 效果: 2. "模糊"效果中的 "高斯曲线& ...

  10. [FE] 被动检测 iframe 加载 src 成功失败的一种思路和方式 (Vue)

    思路:设置定时器一个,n 秒后设置 404 或其它,此时给 iframe 的 onload 事件设置回调函数,加载完成则取消定时器. 示例: data () { return { handler: n ...