快递包裹配送管理
需求描述
构建一个快递包裹配送管理系统,完成以下操作:
- 记录每个快递包裹的信息,包括包裹编号、收件人姓名、收件地址和是否已配送。
- 可以添加新的快递包裹到系统中。
- 标记某个包裹为已配送状态。
- 统计所有已配送和未配送的包裹数量。
- 展示所有未配送的包裹信息。
数据描述
- 快递包裹信息用 Package 类表示,包含包裹编号(String 类型)、收件人姓名(String 类型)、收件地址(String 类型)和是否已配送(boolean 类型)。
- 所有快递包裹信息存储在一个 List<Package> 集合中。
测试数据描述
包裹编号 | 收件人姓名 | 收件地址 | 是否已配送 |
P001 | 张三 | 北京市朝阳区 XX 路 XX 号 | false |
P002 | 李四 | 上海市浦东新区 XX 路 XX 号 | false |
P003 | 王五 | 广州市天河区 XX 路 XX 号 | true |
附加需求
将张三元素添加进XML中
Package类
public class Package {private String no;private String name;private String address;private boolean isSend;public Package() {}public Package(String no, String name, String address, boolean isSend) {this.no=no;this.name=name;this.address=address;this.isSend=isSend;}public String getNo() {return no;}public void setNo(String no) {this.no=no;}public String getName() {return name;}public void setName(String name) {this.name=name;}public String getAddress() {return address;}public void setAddress(String address) {this.address=address;}public Boolean isSend() {return isSend;}public void setSend(boolean send) {isSend=send;}@Overridepublic String toString() {return "包裹编号:"+getNo()+",收件人姓名:"+getName()+",收件地址:"+getAddress()+"是否配送:"+(isSend ? "已配送": "未配送");}
}
PackageList类
import java.util.ArrayList;
import java.util.List;public class PackageList {private List<Package> packages;public PackageList() {this.packages = new ArrayList<>();}public List<Package> getPackages() {return packages;}public void setPackages(List<Package> packages) {this.packages=packages;}public void addPackage(Package p){packages.add(p);}public void packageIsSend(Package p){for (Package aPackage : packages) {if (aPackage.equals(p)){aPackage.setSend(true);}}}public void sendCount(){int send =0;int notSend = 0;for (Package aPackage : packages) {if (aPackage.isSend() == true){send++;}else {notSend++;}}System.out.println("已配送包裹数量:"+send);System.out.println("未配送包裹数量:"+notSend);}public void notSendInfo(){for (Package aPackage : packages) {if (aPackage.isSend() == false){System.out.println(aPackage);}}}public void show(){for (Package aPackage : packages) {System.out.println(aPackage);}}
}
Test:
public class Test {public static void main(String[] args) {Package p1 = new Package("P001","张三","北京市朝阳区 XX 路 XX 号",false);Package p2 = new Package("P001","李四","上海市浦东新区 XX 路 XX 号",false);Package p3 = new Package("P001","王五","广州市天河区 XX 路 XX 号",true);PackageList packageList = new PackageList();packageList.addPackage(p1);packageList.addPackage(p2);packageList.addPackage(p3);packageList.show();System.out.println("====================");packageList.packageIsSend(p1);packageList.show();System.out.println("====================");packageList.notSendInfo();System.out.println("====================");packageList.sendCount();System.out.println("====================");}
}
运行结果:
创建XML文件格式:
<?xml version="1.0" encoding="UTF-8"?>
<PackageInfo><SFpackage name="" no=""><address>xxxxxx</address><sendState>xxxx</sendState></SFpackage>
</PackageInfo>
dom4jPackage类
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;import java.io.FileWriter;
import java.io.IOException;public class dom4jPackage {private Document doc;/*** 加载文件转换成dom4j的文档对象*/public void loadDocument() throws DocumentException {//读取xml文件的对象SAXReader saxReader = new SAXReader();//读取文件, 将读取的内容转换成document对象doc = saxReader.read("src/classTest/Package.xml");}public void addPackageInfo() throws IOException {//创建xml格式的Output对象OutputFormat outputFormat = new OutputFormat();//创建文件写入的对象FileWriter fileWriter = new FileWriter("src/classTest/Package.xml");//将文件写入的格式转换为xml格式XMLWriter xmlWriter = new XMLWriter(fileWriter,outputFormat);//写入文件docxmlWriter.write(doc);//关闭流xmlWriter.close();fileWriter.close();}/*** 添加xml文件中存储的数据*/public void addPackage(Package p) throws IOException {//获取根节点Element root = doc.getRootElement();//添加子元素和子元素的属性Element SFpackageElement = root.addElement("SFpackage");SFpackageElement.addAttribute("name",p.getName());SFpackageElement.addAttribute("id",p.getNo());//添加子元素的元素<address>、<sendState>和<address>、<sendState>元素内的文本信息Element addressElement = SFpackageElement.addElement("address");addressElement.setText(p.getAddress());Element sendStateElement = SFpackageElement.addElement("sendState");sendStateElement.setText(p.isSend().toString());//调用写入方法addPackageInfo();}}
Test-PackageXML
import org.dom4j.DocumentException;import java.io.IOException;public class TestPackageXml {public static void main(String[] args) throws DocumentException, IOException {Package p1 = new Package("P001","张三","北京市朝阳区 XX 路 XX 号",false);dom4jPackage dom4jPackage = new dom4jPackage();dom4jPackage.loadDocument();dom4jPackage.addPackage(p1);dom4jPackage.addPackageInfo();}
}
运行结果: