通信录 (使用Map映射写,并使用Properties 持久化完成)
软件功能:实现一个软件的地址本,地址本中保存多个联系人的信息(名字,电话,电子邮
件,住址),可以在地址本中增加一个联系人,通过名字删除联系人,通过名字查找联系人
实现步骤:本软件需要三个类
1)联系人信息类
属性:名字,电话,电子邮件,住址
方法:设置名字,设置地址,取得名字,取得地址 ,设置邮件,取得邮件,设置电话,取得电话
2)地址本类
属性:用来保存联系人信息的 集合
方法:增加联系人信息,通过名字删除联系人信息,通过名字查找联系人信息
3)主函数 类
循环提示 1)展示地址2)增加地址 并持久化3)删除地址 4)查找地址 0)退出系统
import java.io.IOException;
import java.util.Scanner;
/*
* 3)主函数 类
循环提示
1)展示地址
2)增加地址
3)删除地址
4)查找地址
0)退出系统
*/
public class ContactTest {
public static void main(String[] args) throws IOException {
AddressBook addressBook = new AddressBook();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("1)展示地址2)增加地址并持久化 3)删除地址 4)查找地址 0)退出系统");
int t = scanner.nextInt();
switch (t) {
case 1:
System.out.println("展示信息");
System.out.println(addressBook.show());
break;
case 2:
System.out.println("添加信息并持久化");
System.out.println("请输入姓名");
String insertName = scanner.next();
System.out.println("请输入电话");
String insertPhone = scanner.next();
System.out.println("请输入邮箱");
String insertEmail = scanner.next();
System.out.println("请输入地址");
String insertAddress = scanner.next();
ContactInfo contactInfo = new ContactInfo(insertPhone, insertEmail, insertAddress);
addressBook.insert(insertName, contactInfo);
System.out.println("持久化文件" + addressBook.showProperties());
break;
case 3:
System.out.println("请输入要删除的姓名");
String nameDelect = scanner.next();
addressBook.delect(nameDelect);
break;
case 4:
System.out.println("请输入要查找的名字");
String nameSelect = scanner.next();
System.out.println(nameSelect + "的信息" + addressBook.select(nameSelect));
break;
case 0:
System.out.println("退出");
System.exit(0);
scanner.close();
}
}
}
}
/*联系人信息类
属性:名字,电话,电子邮件,住址
方法:设置名字,设置地址,取得名字,取得地址 ,设置邮件,取得邮件,设置电话,取得电话*/
public class ContactInfo {
private String name;
private String phone;
private String email;
private String address;
public ContactInfo() {
super();
}
public ContactInfo(String phone, String email, String address) {
super();
this.phone = phone;
this.email = email;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return " [phone=" + phone + ", email=" + email + ", address=" + address + "]";
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
/*
* 2)地址本类
属性:用来保存联系人信息的 集合
方法:增加联系人信息,通过名字删除联系人信息,通过名字查找联系人信息
*/
public class AddressBook {
Map<String, ContactInfo> map = new HashMap<String, ContactInfo>();
ContactInfo contactInfo = new ContactInfo();
public Map<String, ContactInfo> show() throws IOException {
return map;
}
public Map<String, ContactInfo> insert(String string, ContactInfo contactInfo) throws IOException {
// 持久化,生成文件
outProperties(string, contactInfo);
// 放进map映射内
map.put(string, contactInfo);
Set<String> set = map.keySet();
for (String name : set) {
if (string.equals(name)) {
System.out.println("添加成功");
}
}
return map;
}
public Map<String, ContactInfo> delect(String string) {
map.remove(string);
Set<String> set = map.keySet();
for (String name : set) {
if (!string.equals(name)) {
System.out.println("删除成功");
}
}
return map;
}
public ContactInfo select(String string) {
ContactInfo contact = map.get(string);
return contact;
}
Properties properties = new Properties();
public Properties outProperties(String string, ContactInfo contactInfo) throws IOException {
// 使用properties生成文件持久化
properties.setProperty(string, contactInfo.toString());
// 定义一个输出流
OutputStream outputStream = new FileOutputStream(new File("F:/0330作业"));
// 通过store方法将properties文件写出到磁盘
properties.store(outputStream, "生成文件");
return properties;
}
public Properties showProperties() throws IOException {
// 读回文件
// 定义一个空的properties
InputStream inputStream = new FileInputStream(new File("F:/0330作业"));
// load方法从输入流中读取属性列表
properties.load(inputStream);
return properties;
}
}