电话本系统-初级版本

Java面向对象:电话本系统-初级版本

【写在前面】:针对于刚刚接触当前知识的小白,大神绕道~
题目:
电话本系统
电话本系统设计共可以保存200个联系人,可以使用数组实现。
实现功能:
请输入要选择的功能:

  1. 新增一个联系人
  2. 查找指定的联系人
  3. 查找所有的联系人
  4. 修改联系人信息
  5. 删除联系人信息
  6. 退出系统
    功能要求:
    1、新增一个联系人,联系人的编号,姓名,性别,年龄,手机号,身份证号由用户从控制台录入
    2、按照姓名查找符合条件的所有的联系人(有可能有联系人同名情况,如果同名,全部列出)
    3、查询所有的联系人
    4、选择一个联系人修改信息
    5、可以把无效的联系人删除

题目考察点:
面向对象思想、数组使用、equals()方法的重写、toString()方法重写等

思路概要:

1.创建联系人类,封装属性,提供公有的get、set方法
2.根据题目要求创建联系人数组。
3.创建联系人操作类,用于对象的增删改查等。

注意点:

1.对联系人的增删改查要验证是否存在(已存在则不能再次添加,使用身份证号作为其唯一标识;删除、修改时联系人不存在则不可进行操作),因为是对联系人的值进行比较,所以在自定义类型(Linkman)中重写equals()。
2.重写toString()以达到按既定的输出格式输出内容。
package xx
/**
 * 联系人类
 * @author w
 * @version 
 * @since
 */
public class Linkman {
	//联系人的编号,姓名,性别,年龄,手机号,身份证号
	/**
	 * 编号
	 */
	private int id;
	/**
	 * 姓名
	 */
	private String name;
	/**
	 * 性别
	 */
	private String sex;
	/**
	 * 年龄
	 */
	private int age;
	/**
	 * 手机号
	 */
	private String phone;
	/**
	 * 身份证号
	 */
	private String pId;
	
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getpId() {
		return pId;
	}
	public void setpId(String pId) {
		this.pId = pId;
	}
	//重写toString,以便将对象以想要的方式输出
	@Override
	public String toString() {
		return id +"\t"+ name +"\t"+ sex +"\t"+ age +"\t"+ phone +"\t"+ pId;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + id;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result + ((pId == null) ? 0 : pId.hashCode());
		result = prime * result + ((phone == null) ? 0 : phone.hashCode());
		result = prime * result + ((sex == null) ? 0 : sex.hashCode());
		return result;
	}
	//重写以便将对象进行比值
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Linkman other = (Linkman) obj;
		if (age != other.age)
			return false;
		if (id != other.id)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (pId == null) {
			if (other.pId != null)
				return false;
		} else if (!pId.equals(other.pId))
			return false;
		if (phone == null) {
			if (other.phone != null)
				return false;
		} else if (!phone.equals(other.phone))
			return false;
		if (sex == null) {
			if (other.sex != null)
				return false;
		} else if (!sex.equals(other.sex))
			return false;
		return true;
	}
}
package xx

import java.util.Scanner;

/**
 * 联系人操作类
 * 
 * @author 
 * @version 
 * @since
 */
public class LinkmanManager {
	/**
	 * 首页菜单方法
	 * 
	 * @param linkmans
	 *            联系人参数
	 */
	public void showMenu(Linkman[] linkmans) {
		System.out.println("************************************");
		System.out.println("请输入要选择的功能:");
		System.out.println("1. 新增一个联系人");
		System.out.println("2. 查找指定的联系人");
		System.out.println("3. 查找所有的联系人");
		System.out.println("4. 修改联系人信息");
		System.out.println("5. 删除联系人信息");
		System.out.println("6. 退出系统");
		System.out.println("************************************");
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入您的选择号码<1-6>:");
		int choice1 = scan.nextInt();
		switch (choice1) {
		case 1:
			addLinkman(linkmans);
			break;
		case 2:
			searchByName(linkmans);
			break;
		case 3:
			searchAll(linkmans);
			break;
		case 4:
			modifyLinkman(linkmans);
			break;
		case 5:
			delLinkman(linkmans);
			break;
		case 6:
			// 调用退出系统方法
			System.out.println("谢谢使用~");
			System.exit(0);
			break;
		default:
			System.out.println("输入有误,请重新选择<1-6>");
			break;
		}
		// 除了退出系统 其它情况下操作完,都返回主菜单
		if (choice1 != 6) {
			showMenu(linkmans);
		}
	}

	/**
	 * 新增联系人方法
	 */
	public void addLinkman(Linkman[] linkmans) {
		// 联系人要求从键盘接收
		Scanner scan = new Scanner(System.in);
		// 创建一个对象来接收属性值
		Linkman man1 = new Linkman();
		// 接收属性值
		System.out.println("请输入联系人的编号:");
		man1.setId(scan.nextInt());
		System.out.println("请输入联系人姓名:");
		man1.setName(scan.next());
		System.out.println("输入联系人性别:");
		man1.setSex(scan.next());
		System.out.println("输入联系人年龄:");
		man1.setAge(scan.nextInt());
		System.out.println("请输入联系人的手机号");
		man1.setPhone(scan.next());
		System.out.println("请输入联系人的身份证号:");
		man1.setpId(scan.next());

		// 根据信息判断数据是否合法
		boolean flag = false;// 标记是否录入数据重复 默认不重复
		for (int i = 0; i < linkmans.length; i++) {
			if (linkmans[i] != null && linkmans[i].equals(man1)) {
				flag = true;// 身份证重复,存在重复的人
				break;
			}
		}
		if (flag) {// 存在重复的人
			System.out.println("联系人已存在,是否继续添加联系人?(y表示继续,其他表示不继续):");
			String choice2 = scan.next();
			if (choice2.equals("y")) {// 选择y则继续添加
				addLinkman(linkmans);//重新开始添加
			}
		} else {// 数据不重复则保存新增的联系人
			for (int i = 0; i < linkmans.length; i++) {
				if (linkmans[i] == null) {// 将数据存在空位置上
					linkmans[i] = man1;
					System.out.println("添加联系人成功");
					break;
				}
			}
		}
	}
	
	/**
	 * 查找指定联系人方法
	 */
	public void searchByName(Linkman[] linkmans){
		//遍历输出数组非空位置的元素,即联系人(如不限制非空则会报空指针异常)
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入要查询的姓名:");
		String name = scan.next();
		//标记是否存在要找的人
		boolean flag = false; 
		System.out.println("编号\t姓名\t性别\t年龄\t手机号\t身份证号");
		for (int i = 0; i < linkmans.length; i++) {
			if (linkmans[i]!=null&&linkmans[i].getName().equals(name)) {
				System.out.println(linkmans[i].toString());
				flag = true;
			}
			
		}
		if (flag==false) {
			System.out.println("查无此人~");
		}
		
	}
	
	/**
	 * 查找所有联系人方法
	 */
	public void searchAll(Linkman[] linkmans){
		//遍历输出数组非空位置的元素,即联系人(如不限制非空则会报空指针异常)
		System.out.println("编号\t姓名\t性别\t年龄\t手机号\t身份证号");
		for (int i = 0; i < linkmans.length; i++) {
			if (linkmans[i]!=null) {
				System.out.println(linkmans[i].toString());
			}
		}
	}
	
	/**
	 * 修改修改联系人方法
	 */
	public void modifyLinkman(Linkman[] linkmans) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入要修改的联系人的身份证号:");
		String pId = scan.next();
		//遍历判断非空元素是否有需要修改的联系人
		boolean flag = false;
		for (int i = 0; i < linkmans.length; i++) {
			if (linkmans[i]!=null&&linkmans[i].getpId().equals(pId)) {
				System.out.println("请输入新的编号");
				linkmans[i].setId(scan.nextInt());
				System.out.println("请输入新的姓名");
				linkmans[i].setName(scan.next());
				System.out.println("请输入新的性别");
				linkmans[i].setSex(scan.next());
				System.out.println("请输入新的手机号");
				linkmans[i].setPhone(scan.next());
				System.out.println("修改成功~");
				flag = true;
			}
		}
		if (flag == false) {
			System.out.println("该联系人不存在~");
		}
		
	}
	
	/**
	 * 删除联系人方法
	 */
	public void delLinkman(Linkman[] linkmans) {
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入要删除的联系人的姓名:");
		String name = scan.next();
		//遍历判断非空元素是否有可删除的联系人
		boolean flag = false;
		for (int i = 0; i < linkmans.length; i++) {
			if (linkmans[i]!=null&&linkmans[i].getName().equals(name)) {
				linkmans[i] = null;
				flag = true;
				System.out.println("删除成功 !");
			}
		}
		if (flag == false) {
			System.out.println("该联系人不存在~");
		}
	}
}
package xx
/**
 * 电话本系统测试类
 * @author 
 * @version 
 * @since
 */
public class Test {

	public static void main(String[] args) {
		//创建联系人数组 
		Linkman[] linkmans = new Linkman[200];
		//电话本操作对象
		LinkmanManager m = new LinkmanManager();
		//对象调方法
		m.showMenu(linkmans);
	}

}

测试结果:

************************************
请输入要选择的功能:
1. 新增一个联系人
2. 查找指定的联系人
3. 查找所有的联系人
4. 修改联系人信息
5. 删除联系人信息
6. 退出系统
************************************
请输入您的选择号码<1-6>1
请输入联系人的编号:
01
请输入联系人姓名:
zhangsan
输入联系人性别:
man
输入联系人年龄:
18
请输入联系人的手机号
13366778787
请输入联系人的身份证号:
123456789000000001
添加联系人成功
************************************
请输入要选择的功能:
1. 新增一个联系人
2. 查找指定的联系人
3. 查找所有的联系人
4. 修改联系人信息
5. 删除联系人信息
6. 退出系统
************************************
请输入您的选择号码<1-6>1
请输入联系人的编号:
02
请输入联系人姓名:
lisi
输入联系人性别:
women
输入联系人年龄:
22
请输入联系人的手机号
13377778888
请输入联系人的身份证号:
123456789000000002
添加联系人成功
************************************
请输入要选择的功能:
1. 新增一个联系人
2. 查找指定的联系人
3. 查找所有的联系人
4. 修改联系人信息
5. 删除联系人信息
6. 退出系统
************************************
请输入您的选择号码<1-6>1
请输入联系人的编号:
03
请输入联系人姓名:
zhangsan
输入联系人性别:
women
输入联系人年龄:
26
请输入联系人的手机号
13366667777
请输入联系人的身份证号:
123456789000000003
添加联系人成功
************************************
请输入要选择的功能:
1. 新增一个联系人
2. 查找指定的联系人
3. 查找所有的联系人
4. 修改联系人信息
5. 删除联系人信息
6. 退出系统
************************************
请输入您的选择号码<1-6>2
请输入要查询的姓名:
zhangsan
编号	姓名	性别	年龄	手机号	身份证号
1	zhangsan	man	18	13366778787	123456789000000001
3	zhangsan	women	26	13366667777	123456789000000003
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值