1、编写程序,完成一个简单的通讯录,实现客户信息的录入、查询,具体实现要求如下:(1)编写Person类,实现客户信息的处理:属性:姓名、电话号码方法:·构造方法,两个参数,设置属性的值。·属性的getter、setter访问器·重写从Object继承的toString方法,返回姓名,电话号码连接成的字符串;把程序代码的截图粘贴到答案框中。
class Person extends Object {
String name,mun;
public Person (String n,String m) {
name=n;mun=m;
}
public String getName() {
return name;
}
public String getMun() {
return mun;
}
public void setName(String n) {
name=n;
}
public void setMun(String m) {
mun=m;
}
public String toString() {
return (name+mun);
}
}
2、编写PhoneBook(电话本)类:属性:phoneList(Person类类型的ArrayList列表,存储多个Person信息)方法:·构造方法,无参,创建空列表·构造方法,1个参数n,创建列表,调用input方法输入并在列表中插入n个Person对象。·input():使用InputStreamReader、BufferedReader方法实现姓名、电话信息的输入,并创建一个Person对象,插入到phoneList中。·searchByName(String name):根据输入的姓名查询phoneList,返回找到的电话号码,否则返回null;·searchByPhone(String phone):根据输入的电话号码查询phoneList,返回找到的Person对象,否则返回null;·writeFile(String filename):遍历phoneList,调用每个Person的toString方法,获得姓名、电话串,输出到文本文件“phone.txt”中。·print():把phoneList中的所有信息输出。选做:·exportList(String filename):使用对象序列化方法,把phoneList输出到文件·importList(String filename):使用对象序列化方法,从文件中读取内容加载phoneList。· deleteByName(String name):根据输入的姓名查询phoneList,删除指定的Person对象,若删除成功返回true,否则返回false。
class PhoneBook{
ArrayList<Person> phonelist;
public PhoneBook() {
}
public PhoneBook(int n) {
phonelist=new ArrayList<Person>();
for(int i=0;i<n;i++) {
input(n);
}
}
public void input(int n) {
BufferedReader b=new BufferedReader(new InputStreamReader(System.in));
phonelist =new ArrayList<Person>();
for(int i=0;i<n;i++) {
try {
System.out.println("请输入姓名");
String a= b.readLine();
System.out.println("请输入电话号码");
String c =b.readLine();
phonelist.add(new Person(a,c));
}catch(IOException f) {
System.out.println(f);
}
}
}
public String searchByName(String n) {
int j=0;String f = null;
Person p =null;
for(int i=0;i<phonelist.size();i++) {
p=phonelist.get(i);
if(p.name.equals(n))
f=p.mun;
else
j++;
}
if(j==phonelist.size())
return null;
else
return f;
}
public String searchByPhone(String m) {
int j=0;String f = null;
Person p;
for(int i=0;i<phonelist.size();i++) {
p=phonelist.get(i);
if(p.mun.equals(m))
f=p.name;
else
j++;
}
if(j==phonelist.size())
return null;
else
return f;
}
public void writeFile(String filename) throws Exception {
FileWriter f = new FileWriter(filename);
Person p;
for(int i=0;i<phonelist.size();i++) {
p=phonelist.get(i);
f.write(p.toString());
}
f.close();
}
public void print() {
Person p;
for(int i=0;i<phonelist.size();i++) {
p=phonelist.get(i);
System.out.println("名字为:"+p.name+" 电话号码为:"+p.mun);
}
}
public boolean deleteByName(String n) {
for(int i=0;i<phonelist.size();i++) {
Person p=phonelist.get(i);
if(p.getName().equals(n)) {
phonelist.remove(i);
return true;
}
}
return false;
}
public void exportlist(String f) {
try {
ObjectOutputStream os=new ObjectOutputStream (new FileOutputStream(f));
os.writeObject(phonelist);
os.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
public void importList(String f) {
try {
ObjectInputStream oss=new ObjectInputStream (new FileInputStream(f));
phonelist =(ArrayList<Person>) oss.readObject();
oss.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}catch (ClassNotFoundException e) {
System.out.println(e.getMessage());
}
}
}
3、编写Demo类创建PhoneBook类对象并进行初始化,接着循环显示菜单:*************************** 1、录入信息;2、按姓名查询;3、按电话号码查询;4、写文件;5、输出信息;6、删除信息;7、导出列表;8、导入列表;0、退出********************************根据用户的选择调用相应的PhoneBook类的方法进行操作。
public class PhoneBookDemo {
public static void main(String[] args) throws Exception {
PhoneBook b=new PhoneBook();
int i;String n;
Scanner s=new Scanner(System.in);
do {
System.out.println("*******************菜单***************************");
System.out.println("1、录入信息; 2、按姓名查询; 3、按电话号码查询;");
System.out.println("4、写文件; 5、输出信息; 6、删除名字 ");
System.out.println("7、导出文件; 8、导入文件; 0、退出; ");
System.out.println("**************************************************");
System.out.println("请输入你的选择:");
i=s.nextInt();
switch(i) {
case 1:System.out.println("请输入要录入信息的数量:");int p=s.nextInt();
b.input(p);System.out.println("录入完成");break;
case 2:System.out.println("请输入查询的名字:");n=s.next();System.out.println(n+"的电话号码为:"+b.searchByName(n));break;
case 3:System.out.println("请输入查询的电话号码:");n=s.next();System.out.println("电话号码为:"+n+"的名字是"+b.searchByPhone(n));break;
case 4:System.out.println("请输入文件的名字:");n=s.next();b.writeFile(n);;break;
case 5:b.print();break;
case 6:System.out.println("请输入要删除的名字:");String name=s.next();boolean t=b.deleteByName(name);
if(t)System.out.println("删除成功!");else System.out.println("查找不到该名字,删除失败!");break;
case 7:b.exportlist("fix2.dat");System.out.println("文件导出成功");break;
case 8:b.importList("fix2.dat");System.out.println("文件导入成功");break;
case 0:System.out.println("已成功退出");break;
}
}while(i!=0);
s.close();
}
}