zoukankan      html  css  js  c++  java
  • java练习项目——记账本

    包含登录、注册、记账、每日账单查看、每月报表、添加记账类型这些功能。数据存储采用的是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记账本管理程序
  • 相关阅读:
    J2EE开发工作中遇到的异常问题及解决方法总结
    报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost
    配置JAVA的环境变量
    win7系统下ping不是内部或外部命令
    【pyhon】理想论坛单帖爬虫取得信息存入MySql数据库
    【Python】安装Python的mysql模块
    【Python】爬取理想论坛单帖爬虫
    挖一口井最好的时间除了十年前就是现在
    【Python】http.client库的用法
    【pyhon】nvshens按目录图片批量下载爬虫1.00(多线程版)
  • 原文地址:https://www.cnblogs.com/HelloQLQ/p/13904220.html
Copyright © 2011-2022 走看看