列表、文件综合例题

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();

	}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值