编写FeiGe快递系统——用户和地址数据管理

该博客介绍了如何使用Java的序列化和反序列化技术来存储和读取客户信息。首先创建了CustomerDao类,通过序列化将Map对象写入文本文件,再通过反序列化读取数据。接着展示了Customer类和其父类Person的定义,Customer类包含客户ID和电话,并提供构建和修改对象的方法。最后创建了一个测试类进行写入和读取操作,验证了序列化和反序列化的功能。
摘要由CSDN通过智能技术生成

第一步:创建CostomerDao类


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Map;

//客户实现类
public class CustomerDao{
	//clients --客户
	private File clients = new File("C:\\Users\\54166\\Desktop\\clients.txt");
	/**
	 * 写--序列化
	 * Map<String 学号,Costomer 客户信息>
	 */
public void update(Map<String,Customer>data) {
	/**
	 * 1.创建序列化流对象
	 * FileoutputStream(File file,false)
	 * ObjectOutputStream(OutputStream out);
	 */
	try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(clients,false))) {
	/**
	 * 2.写入数据
	 *   把map集合写进去
	 */
		oos.writeObject(data);
	}catch(IOException e) {
		e.printStackTrace();
	}
}
public Map<String,Customer>query(){
	//map是一个接口,不能new对象
	Map<String,Customer> data = new HashMap<String,Customer>();
	//证明是空文件,没有内容
	if(clients.length() == 0) {
		return data;
	}
	/**
	 * 创建反序列化流
	 * new FileInputStream(File file)
	 * new ObjectInputStream(InputStream in)
	 */
	try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream(clients))){	
		//读取数据
		data = (Map<String,Customer>)ois.readObject();
	}catch(IOException e) {
		e.printStackTrace();
	}catch(ClassNotFoundException e) {
		e.printStackTrace();
	}
	return data;
  }
}

第二步:创建Customer类


import java.io.Serializable;

public class Customer extends Person {//继承Person类
	private String customerId;//id
	private String phone;//客户电话
	//无参构造器
	public Customer() {
		
	}
	//有参构造器
	public Customer(String customerId,String phone) {
		this.customerId = customerId;
		this.phone = phone;
	}
	//此方法返回客户对象
	public static Customer builder() {
		return new Customer();
	}
	//返回一个客户id修改过的客户对象
	public Customer customerId(String customerId) {
		this.customerId = customerId;
		return new Customer();
	}
	//返回一个客户电话修改过或者赋值过的客户对象
		public Customer phone(String phone) {
			this.phone = phone;
			return new Customer();
	}
		@Override
		public String toString() {
			return "用户信息 [编号 = "+this.customerId+",姓名="+getName()+",性别="+getSex()+",年龄="+getAge()+",手机号码="+this.phone+"]";
		}	
}

第三步:创建Person类


import java.io.Serializable;

public class Person implements Serializable{//实现Serializable接口
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String name;//名字
	private String sex;//性别
	private int age;//年龄
	private String pwd;//密码
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public void setAge(int age) {
		this.age = age;
	}

}

最后一步创建测试类


import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class CustmoerDaotest {
	public static void main(String[] args) {
		CustomerDao ct = new CustomerDao();
		//写
		Map<String,Customer>map = new HashMap<String,Customer>();
		Customer cust = new Customer("01","11111111111");
		cust.setName("张三");//姓名
		cust.setAge(18);//年龄
		cust.setSex("男");//性别
		map.put("1011",cust);
		ct.update(map);
		//读
		Map<String,Customer> du = ct.query();
		/**
		 * 数据存在了map里面我们遍历map就可以了
		 */
        Iterator<Entry<String,Customer>>iterator = du.entrySet().iterator();
        while(iterator.hasNext()) {
        	Entry<String,Customer>next = iterator.next();
        	//获取map的key
        	String key = next.getKey();
        	//获取map的value
        	Customer value = next.getValue();
        	System.out.println(key+"----"+value);
        }
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值