java通讯录

2 篇文章 0 订阅

要求

一、实现通讯录类(姓名、性别和电话号码),并为每个属性设置 set和get方法;

二、从通讯录的文本文件“record.txt”中读取数据放到通讯录类实例化的对象中,并合理组织存储结果方便查找。其文件样例如下,文件第一行为通讯录中人员的个数n,从第二行到第n+1行是n个通讯录; 每个通讯录占1行,每行依次为人员姓名、性别和电话号码,每个属性间以空格隔开。

3

张三 男 123456

李四 女 654321

张三 男 654321

三、.从文本文件“query.txt”,查询指定列的数据,样例如下,只有1行,第1个数据是指查询的数据在“record.txt”对应的列数,第二个数据是查询的关键词。

1 张三

四、将查询到的结果输出到“result.txt”文件中,根据前面的“record.txt”和“query.txt”的样例,“result.txt”输出样例如下,注意将查到所有的结果都输出。

张三 男 123456

张三 男 654321

代码实现

1. Addressbook.java

package addressBook;
import java.util.ArrayList;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.Scanner;

//一、实现通讯录类(姓名、性别和电话号码),并为每个属性设置 set和get方法
public class Addressbook {
	public static ArrayList<Person>addressbook = new ArrayList<Person>();
	public static int n;	//通讯录中人员的个数n
	
		

	public static void main(String[] args) {
		Scanner sin = null;
		PrintWriter pw = null;
		try {
			//二、从通讯录的文本文件“record.txt”中读取数据放到通讯录类实例化的对象中,并合理组织存储结果方便查找。
			sin = new Scanner(new FileReader("E:\\study\\homework\\sophomore\\second_semester\\"
					+ "java\\addressBook\\src\\addressBook\\record.txt"));
			n = sin.nextInt();
			sin.nextLine();
			System.out.println(n);
			Person pr = new Person();
			while(sin.hasNextLine()) {
				System.out.println("_____________________________________________________________________");
				System.out.println("读取了以下信息:");
				System.out.println(pr.set(sin.nextLine()));
				addressbook.add(pr);
			}
			sin.close();
			
			//三、.从文本文件“query.txt”,查询指定列的数据,
			System.out.println("\n---------------从文本文件“query.txt”,查询指定列的数据---------------");
			sin = new Scanner(new FileReader("E:\\study\\homework\\sophomore\\second_semester\\"
					+ "java\\addressBook\\src\\addressBook\\query.txt"));
			int col = sin.nextInt();
			System.out.println("查询的数据在“record.txt”对应的列数: " + col);
			String key = sin.next();
			System.out.println("查询的关键词: " + key);
			sin.close();
			//查询
			sin = new Scanner(new FileReader("E:\\study\\homework\\sophomore\\second_semester\\"
					+ "java\\addressBook\\src\\addressBook\\record.txt"));
			sin.nextLine();
			
			pw = new PrintWriter("E:\\study\\homework\\sophomore\\second_semester\\java\\addressBook"
					+ "\\src\\addressBook\\result.txt");
			while(sin.hasNextLine()) {
				// 用临时Person变量pr存储读取的一行数据
				pr.set(sin.nextLine());
				//四、将查询到的结果输出到“result.txt”文件中,
				if(pr.has(col, key)) {
					pw.println(pr.get());
					System.out.println("写入result.txt了:" + pr.get());
				}
			}
			
			sin.close();
			pw.close();
			
			
			
			
		} catch(FileNotFoundException e) {
			e.printStackTrace();
		} finally {
			if(sin != null) sin.close();
			if(pw != null)	pw.close();
		}
		
	}

}

2. Person.java

package addressBook;

public class Person {
	public String name;
	public String gender;
	public String teleNum;
	
	//为每个属性设置 set和get方法;
	public String set(String s) {
		String ss[] = s.split("\\s+");
		name = ss[0];
		gender = ss[1];
		teleNum = ss[2];
		
		return (name + ' ' + gender + ' ' + teleNum);
	}
	
	public String get() {
		return (name + ' ' + gender + ' ' + teleNum);
	}
	
	// 查看该关键字是否在当前person的信息中
	public boolean has(int col, String key) {
		if(col == 1) {
//			System.out.println("检查第1列");
//			System.out.println(name + " 是否 = " + key);
			if(key.equals(name))	{
//				System.out.println("**等于**");
				return true;
			}
		} else if(col == 2) {
			if(key.equals(gender)) {
				return true;
			}
		} else {
			if(key.equals(teleNum)) {
				return true;
			}
		}
		return false;
	}
	
	
}

结果

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值