引言
这是很久之前的一个练习题,非常简单。网站里没什么内容,所以发上来充充数。
代码
import java.io.*;
import java.util.*;
public class Main {
static Set<Person> list = new TreeSet<Person>();// 通讯录,保证姓名无重复
static Scanner in = new Scanner(System.in);
public static void main(String[] args) {
while (true) {
System.out.println("\t\t\t简易通讯录");
System.out.println("\t\t1\t\t\t添加个人信息");
System.out.println("\t\t2\t\t\t删除个人信息");
System.out.println("\t\t3\t\t\t修改个人信息");
System.out.println("\t\t4\t\t\t查找个人信息");
System.out.println("\t\t5\t\t\t保存通讯录到文件");
System.out.println("\t\t6\t\t\t查看当前所有人的信息");
System.out.println("\t\t0\t\t\t退出程序");
int i = -1;
while (i < 0 || i > 6)
i = in.nextInt();
switch (i) {
case 1:
addPerson();
break;
case 2:
delPerson();
break;
case 3:
modPerson();
break;
case 4:
findPerson();
break;
case 5:
WriteToFile();
break;
case 6:
Show();
break;
case 0:
System.exit(0);
break;
}
}
}
// 添加人员信息
public static void addPerson() {
String name;// 姓名
String phone;// 电话号码
String email;// 邮箱
String address;// 地址
Person h;
System.out.print("请输入姓名:");
name = in.next();
while (findName(name) != null) {
System.out.println("该人物已存在,请重新输入姓名!");
System.out.print("请输入姓名:");
name = in.next();
}
h = new Person(name);
while (true) {
System.out.print("请输入电话号码(0表示结束):");
phone = in.next();
if (phone.equals("0"))
break;
h.addPhoneNum(phone);
}
System.out.print("请输入电子邮箱:");
email = in.next();
h.setEmail(email);
System.out.print("请输入住址:");
address = in.next();
h.setAddress(address);
list.add(h);
System.out.println("成功添加!");
}
// 删除人员信息
public static void delPerson() {
Person h;
String name;
System.out.print("请输入要删除的姓名:");
name = in.next();
h = findName(name);
if (h == null)
System.out.println("该姓名不存在!");
else {
list.remove(h);
System.out.println("成功删除!");
}
}
// 修改人员信息
public static void modPerson() {
String name;// 姓名
String phone;// 电话号码
String email;// 邮箱
String address;// 地址
Person h;
System.out.print("请输入要进行修改的姓名:");
name = in.next();
h = findName(name);
if (h == null)
System.out.println("该姓名不存在!");
else {
System.out.println("个人信息如下:");
System.out.println(h);
System.out.print("删除某个电话号码请输入1:");
if (in.nextInt() == 1) {
System.out.print("请输入要删除的电话号码:");
phone = in.next();
if (h.getPhoneNum().remove(phone))
System.out.println("成功删除!");
else
System.out.println("不存在该号码!");
}
System.out.print("请输入新的电话号码(输入0表示不添加):");
phone = in.next();
if (!phone.equals("0")) {
h.addPhoneNum(phone);
}
System.out.print("请输入新的电子邮箱(输入0表示不修改):");
email = in.next();
if (!email.equals("0")) {
h.setEmail(email);
}
System.out.print("请输入新的住址(输入0表示不修改):");
address = in.next();
if (!address.equals("0")) {
h.setEmail(address);
}
}
}
// 查找人员信息
public static void findPerson() {
String name;
Person h;
System.out.print("请输入要查找的姓名:");
name = in.next();
h = findName(name);
if (h == null)
System.out.println("该姓名不存在!");
else {
System.out.println("个人信息如下:");
System.out.println(h);
}
}
// 将通讯录写入txt文件
public static void WriteToFile() {
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("out.txt"));
for (Person h : list) {
bw.write(h.toString() + "\n");
}
bw.close();
System.out.println("成功写入文件:out.txt");
} catch (IOException e) {
System.out.println("写入文件失败!");
}
}
// 按姓名查找
public static Person findName(String name) {
for (Person h : list) {
if (h.getName().equals(name))
return h;
if (h.getName().compareTo(name) > 0)// list是按照姓名从小到大排序的,这时就可以断定查无此人了
return null;
}
return null;
}
// 按电话查找
public static Person findPhone(String phone) {
for (Person h : list) {
if (h.getPhoneNum().indexOf(phone) != -1)
return h;
}
return null;
}
// 显示当前所有人的信息
public static void Show() {
for (Person h : list) {
System.out.println(h);
}
}
}
class Person implements Comparable<Person> {
private String name;// 姓名
private ArrayList<String> phoneNum = new ArrayList<String>();// 电话号码
private String email;// 邮箱
private String address;// 地址
// 构造函数
public Person(String name) {
super();
this.name = name;
}
// 构造函数
public Person() {
super();
}
// 添加电话号码
public void addPhoneNum(String s) {
phoneNum.add(s);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ArrayList<String> getPhoneNum() {
return phoneNum;
}
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 int compareTo(Person o) {
return name.compareTo(o.name);
}
@Override
public String toString() {
return "Person [name=" + name + ", phoneNum=" + phoneNum + ", email=" + email + ", address=" + address + "]";
}
}