import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import com.week4.wenday.Exercisers;
import com.week4.wenday.Records;
public class TestRecords {
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
Map> er = new HashMap(); // 存储联系人及聊天记录
System.out.println("欢迎进入联系人系统!");
while (true) {
System.out.println("选项:1、查看所联系人信息t2、添加练习人t3、发送信息t4、查看通话记录t5、退出联系人系统");
switch (input.nextInt()) {
case 1:
finds(er.keySet()); // 传入所聊天人的个人信息
break;
case 2:
addPhon(er); // 传入储存对象,向对象中添加号码
break;
case 3:
dial(er); // 传入储存对象,掉用对象互相发信息
break;
case 4:
findInfos(er); // 传入储存对象,获取聊天信息
break;
case 5:
System.exit(0); // 退出系统
default:
System.out.println("操作错误!");
break;
}
}
}
// 传入储存对象,获取聊天信息
private static void findInfos(Map> er) {
System.out.print("选择联系人:");
String name = input.next();
Exercisers e = findName(er.keySet(), name); // 通过姓名找联系人对象
if (e == null)
System.out.println("没有该联系人!");
else {
List listInfo = er.get(e); // 获取聊天记录
if (listInfo.isEmpty())
System.out.println("没有通话记录!");
else {
System.out.println("有" + listInfo.size() + "条通话记录:");
for (Records r : listInfo) // 遍历聊天记录
System.out.println(r);
}
}
}
// 传入储存对象,掉用对象互相发信息
private static void dial(Map> er) {
System.out.print("选择联系人:");
String name = input.next(), content;
Set ers = er.keySet();
Exercisers e1 = findName(ers, name); // 通过姓名找联系人对象
if (e1 == null) // 查看对象是否存在
System.out.println("没有该联系人!");
else {
System.out.print("拨打号码:");
String phone = input.next();
Exercisers e2 = findPhone(ers, phone); // 通过电话号码找联系人对象
if (e2 == null) // 查看对象是否存在
System.out.println("你拨打的号码不存在!");
else {
System.out.print("连接成功!开始谈话(输入N通话结束):");
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); // 格式化时间
boolean flag = false; // 两个状态表说话与回话
while (!(content = input.next()).equals("N")) { // 聊天过程
if (flag) {
flag = false;
content = e2.getName() + ": " + content; // 回话者内容
} else {
flag = true;
content = e1.getName() + ": " + content; // 说话者内容
}
er.get(e1).add(new Records(name, formatter.format(new Date()), content)); // 打电话人添加聊天记录
er.get(e2).add(new Records(name, formatter.format(new Date()), content)); // 接电话人添加聊天记录
}
}
}
}
// 传入储存对象,向对象中添加号码
private static void addPhon(Map> er) {
System.out.print("输入联系人姓名、电话号码和地址:");
String name = input.next(), phon = input.next(); // 输入姓名和号码
Exercisers e = findName(er.keySet(), name); // 通过姓名获取联系人对象
if (e == null) { // 未找到对象
String addr = input.next(); // 输入地址
Exercisers exercisers = new Exercisers(name, new ArrayList(), addr); // 实例化(创建)对象
exercisers.getTetelPhon().add(phon); // 向对象中添加号码
er.put(exercisers, new ArrayList()); // 将对象存储到HashMap中
} else { // 找到对象
List oldP = e.getTetelPhon();
if (oldP.toString().contains(phon)) // 查看号码是否已存在
System.out.println("号码已存在!");
else
oldP.add(phon);
}
}
private static Exercisers findName(Set set, String name) {
for (Exercisers e : set)
if (e.getName().equals(name))
return e;
return null;
}
private static Exercisers findPhone(Set set, String phone) {
for (Exercisers e : set)
if (e.getTetelPhon().toString().contains(phone))
return e;
return null;
}
// 传入所聊天人的个人信息
private static void finds(Set set) {
if (set.isEmpty())
System.out.println("没有联系记录!");
else {
System.out.println("姓名t地址t电话号码");
for (Exercisers e : set) // 遍历联系人
System.out.println(e);
}
}
}
联系人类,储存联系人信息
import java.util.Arrays;
import java.util.List;
public class Exercisers {
private String name; //联系人姓名
private List tetelPhon; //联系人电话号码
private String address; //联系人地址
public Exercisers() {}
public Exercisers(String name, List tetelPhon, String address) {
super();
this.name = name;
this.tetelPhon = tetelPhon;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List getTetelPhon() {
return tetelPhon;
}
public void setTetelPhon(List tetelPhon) {
this.tetelPhon = tetelPhon;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return name + "t" + address + "t" + tetelPhon;
}
}
信息类,记录每条聊天信息
import java.util.Arrays;
public class Records {
private String tetelPhon;
private String time;
private String info;
public Records() {}
public Records(String tetelPhon, String time, String info) {
super();
this.tetelPhon = tetelPhon; //打电话人的名字或号码
this.time = time; //聊天的时间点
this.info = info; //聊天的内容
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return tetelPhon + "打的电话 t时间:" + time + "t 内容:" + info;
}
}
测试结果
结束语:简单的操作系统,有更简单的方法欢迎指导。要复杂化,欢迎在评论区讨论。转载请指明出处。



