基础编程题目集 —— 7-34 通讯录的录入与显示*

本文介绍了一个通讯录管理系统的实现,通过面向对象的方法,使用Person类封装个人基本信息,并利用PersonDao类对Person对象数组进行操作,实现了记录的录入与查询功能。

1 题目要求

通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。

输入格式:
输入在第一行给出正整数N(≤10);随后N行,每行按照格式姓名 生日 性别 固话 手机给出一条记录。其中姓名是不超过10个字符、不包含空格的非空字符串;生日按yyyy/mm/dd的格式给出年月日;性别用M表示“男”、F表示“女”;固话和手机均为不超过15位的连续数字,前面有可能出现+。

在通讯录记录输入完成后,最后一行给出正整数K,并且随后给出K个整数,表示要查询的记录编号(从0到N−1顺序编号)。数字间以空格分隔。

输出格式:
对每一条要查询的记录编号,在一行中按照姓名 固话 手机 性别 生日的格式输出该记录。若要查询的记录不存在,则输出Not Found。

2 样例

输入样例:
3
Chris 1984/03/10 F +86181779452 13707010007
LaoLao 1967/11/30 F 057187951100 +8618618623333
QiaoLin 1980/01/01 M 84172333 10086
2 1 7

输出样例:
LaoLao 057187951100 +8618618623333 F 1967/11/30
Not Found

3 分析

(1)面向对象编程,
使用Person封装个人信息,将属性私有,对外提供访问和操作属性的方法。
使用PersonDao 对Person 对象数组进行操作

在这里插入图片描述
类图,使用ProcessOn 绘制
2) 需要注意的是,输出的属性顺序与输入的顺序不一致。

4 代码

import java.util.*;
class Person
{
	private String name;
	private String birthday;
	private String gender;
	private String phone;
	private String mobile;
	Person(String name,String birthday,String gender,String phone,String mobile)
	{
		this.name=name;
		this.birthday=birthday;
		this.gender=gender;
		this.phone=phone;
		this.mobile=mobile;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getBirthday() {
		return birthday;
	}
	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone=phone;
	}
	public String getMobile() {
		return mobile;
	}
	public void setMobile(String mobile) {
		this.mobile=mobile;
	}	
}
class PersonDao
{
	public void find(Person []ps,int index)
	{
		int findFlag=0;
		for(int i=0;i<ps.length;i++)
		{
			if(i==index)
			{
				findFlag=1;
				System.out.println(ps[i].getName()+" "+ps[i].getPhone()+" "+ps[i].getMobile()+" "+ps[i].getGender()+" "+ps[i].getBirthday());
				break;
      		}
		}
		if(findFlag==0)
			System.out.println("Not Found");
	}
}
class Main
{
	public static void main(String []args)
	{
		Scanner sc=new Scanner(System.in);
		int num=sc.nextInt();
		Person []ps=new Person[num];
		PersonDao dao=new PersonDao();
		String name=new String();
		String birthday=new String();
		String gender=new String();
		String phone=new String();
		String mobile=new String();
		//输入 联系人信息
		for(int i=0;i<num;i++)
		{
			name=sc.next();
			birthday=sc.next();
			gender=sc.next();
			phone=sc.next();
			mobile=sc.next();
			Person p=new Person(name,birthday,gender,phone,mobile);
			ps[i]=p;
		}
		//输入查询人数
		int count=sc.nextInt();
		int []indices=new int[count];
		for(int i=0;i<count;i++)
		{
			indices[i]=sc.nextInt();
		}
		for(int i=0;i<count;i++){
			dao.find(ps,indices[i]);
		}
	}
}

5 总结

(1)类图 链接: 类图的类型和绘制.
(2)Scanner 的next() nextInt() nextLine()函数

个人通信录记录了同学(包含一起上学的学校名称)、同事(包含共事的单位名称)、朋友(包含认识的地点)、亲戚(包含称呼)等本人有关人员的数据。 要求: (1)提供录入个人信息、修改个人信息(姓名出生日期除外)、删除个人信息等编辑功能 (2)提供按姓名查询个人信息的功能 (3)提供查找在5天之内过生日的人员信息,以便发出祝贺电话或 E_mail (4)按照姓名或出生日期排序,显示输出 (5)统计在给定月份出生的人数,并显示输出 (6)能列出全体人员的姓名、出生日期、电话email地址 (7)能分别列出同学、同事、朋友、亲戚的所有信息 (8)用菜单形式提供程序的各种功能的选择 提示: (1)将同学、同事、朋友亲戚的信息分别存入通信录文件 AddressBook1.txt ,AddressBook2.txt,AddressBook3.txtAddressBook4.txt中。文件中除了包含每人的姓名、出生日期、电话 Email地址等信息外,对同学还要包含一起上学的学校名称,对同事还要包含共事的单位名称,对朋友还要包含认识的地点,对亲戚包含称呼。其中姓名用汉语拼音或英文表示。 (2)在查出的5天内过生日的人员信息中,要包括该日期是星期几的信息。例如:3月21日(星期四) 哥哥:张晓阳 Tel: 39380285, Email:zxy@163.com (3)能够自动生成祝贺生日的电子邮件的文本文件,文件由被祝贺人姓名祝贺词等组成。其内容为: 被祝贺人姓名: 祝生日快乐,健康幸福。 祝贺人姓名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值