【自学笔记】简单java电话本管理系统v2.0源码

虽然只是一个小小的练习,还是想把东西做到最优,目前都是用的自己学到的知识,大神勿喷,相对上个版本,这次将方法及设计逻辑优化,简化了代码,去掉了用不到的接口。更易阅读

import java.util.Scanner;
/**
*@Yq
*【电话本管理系统v2.0】修改,提取了3个方法,去掉了用不到的接口,修改了变量名,简化了代码,添加了部分说明
*1.添加	2.删除	3.修改	4.查询所有	5.根据姓名查询	6.退出,,
*/
/**
*电话本的数据存储类,用数组来存储各类数据,这里只定义了101个长度,最多存101个联系人
*/
class TelBook {
	static boolean i = true; // 主要用于执行整个系统的循环以及可用循环时
	String[] name = new String[100];
	String[] sex = new String[100];
	int[] age = new int[100];
	long[] tel = new long[100];
	long[] qq = new long[100];
	String[] location = new String[100];
}
/**
*电话本的操作类,添加,删除,修改,查询所有,名字查询,退出,操作类继承了数据类以便获取数据;
*/
class TellAllHandle extends TelBook {
//---------------------添加操作方法-----------------------------
	public void add() {
		int numAdd=0;
		for (int y=0 ; y < name.length;y++) {
			if (name[y]!=null) { //判断是否有数据,如果有,就将本次添加的数据添加到下一个角标,添加到不同位置避免覆盖
				numAdd++;
			}
		}
		addOrAlter(numAdd); // 调用添加操作方法
		printAll(numAdd);  // 调用打印信息方法
		System.out.println("\n"+"添加成功");
	}
//---------------------删除操作方法-----------------------------
	public void delete() { // 删除操作
		int numDelete = nameRead(0,0); // 调用名字查询方法,并且将返回的角标值赋,加以判断
		if (name[numDelete] != null) {
			System.out.println("确定要删除吗?【1(是),0(否)】"+"\n"+"输入选项:");
			Scanner input = new Scanner(System.in);
			int ifDelete = input.nextInt();
			switch (ifDelete) {
				case 1: //如果输入为1,则将查询到的对应数据全部设置为空或0,表示为删除
					System.out.println("\n"+"正在删除:"+"["+name[numDelete]+"]"+"的所有信息");
					name[numDelete] = null;
					sex[numDelete] = null;
					age[numDelete] = 0;
					tel[numDelete] = 0L;
					qq[numDelete] = 0L;
					location[numDelete] = null;
					System.out.println("\n"+"删除成功");
				break;
				case 0:
					System.out.println("\n"+"您未作任何删除");
				break;
				default:
					System.out.println("\n"+"您的输入有误,请重新选择业务");
				break;
			}
		}
	}
//---------------------修改操作方法-----------------------------
	public void update() { // 修改操作
		int numUpdate = nameRead(0,0);
		if (name[numUpdate] != null) {
			System.out.println("\n"+"请重新输入信息:");
			addOrAlter(numUpdate);
			printAll(numUpdate);
			System.out.println("\n"+"修改成功");
		}
	}
//---------------------查询所有操作方法-----------------------------
	public void read() { // 查询所有
		int numR1 = 0;
		int numR2 = 0;
		while (numR1 < name.length-1) {
			if (name[numR1] != null) {
				printAll(numR1);
				numR2 = 0;
			}
			else {
				numR2 = 1;
			}
			numR1++;
		}
		if (numR2 != 0) {
			System.out.println("\n"+"以上为所有联系人,按 1 添加更多联系人");
		}
	}
//---------------------姓名查找操作方法-----------------------------
	public int nameRead(int numIf1,int numIf2) {
		System.out.print("\n"+"请输入需要查找/修改/删除的联系人姓名:");
		Scanner input = new Scanner(System.in);
		String inputName = input.next();
		while(numIf1 < name.length-1) { //防止未找到角标越界,-1
			if(inputName.equals(name[numIf1])) { //遍历数组,查找是否有和输入字符相同的元素,如果有,则打印这个对应角标的所有信息。以表示查找到了要删除的信息
				printAll(numIf1);
				numIf2 = 0;
				break; //如过找到了则直接结束本次循环
			}
			else { //如果都没有找到和输入相匹配的字符,则将值numIf2赋值为1
				numIf2 = 1;
			}
			numIf1++;
		}
		if (numIf2 != 0) { //为了不重复打印此语句,在循环外判断最后numIf2的值来达到提示未查找到
			System.out.println("\n"+"抱歉,查询错误,无该人信息");
		} return numIf1;
	}
//---------------------退出操作方法-----------------------------
	public void exit() {
		i = false; // 将MainInterface类mainSelect方法循环的条件i赋值为false,致循环结束,退出系统
	}
//----------------------添加或修改联系人输入方法--------------------
	public void addOrAlter(int in) {
		Scanner input = new Scanner(System.in);
		System.out.print("姓名:");
		name[in] = input.next();
		System.out.print("性别:");
		sex[in] = input.next();
		System.out.print("年龄:");
		age[in] = input.nextInt();
		System.out.print("电话:");
		tel[in] = input.nextLong();
		System.out.print("Q Q:");
		qq[in] = input.nextLong();
		System.out.print("地址:");
		location[in] = input.next();
	}
//----------------------打印联系人详情方法--------------------------
	public void printAll(int p) {
		System.out.println("\n"+"姓名:"+name[p]+","+"性别:"+sex[p]+","+"年龄:"+age[p]+","+"电话:"+tel[p]+","+"Q Q:"+qq[p]+","+"地址:"+location[p]);
	}
}
/**
*主界面所属类,完成主界面的初始化,选择业务,以及各个操作的方法调用
*/
class MainInterface {
//---------------------主界面加载与选择操作方法-----------------------------
	public void mainSelect() {
		System.out.println("-----------------------------电话本管理系统-----------------------------");
		System.out.println("\t"+"1.添加"+"\t"+"2.删除"+"\t"+"3.修改"+"\t"+"4.查询所有"+"\t"+"5.根据姓名查询"+"\t"+"6.退出");
		System.out.println("-----------------------------电话本管理系统-----------------------------");
		TellAllHandle T = new TellAllHandle(); //加载各项操作
		while(T.i){ //进行输入循环操作,利用i = true 完成,利用在解决完成一项任务后跳出,可保持系统持续运行,
			T.i = true;
			System.out.print("\n"+"【请键入1-6选择业务】:");
			Scanner input = new Scanner(System.in);
			int mainSelect = input.nextInt(); // 加载用户选择业务输入操作
				switch (mainSelect) {  // 用switch语句来选择执行指定操作
				case 1:
					System.out.println("---------------"+"添加电话本"+"---------------");
					T.add();
				break;
				case 2:
					System.out.println("---------------"+"删除电话本"+"---------------");
					T.delete();
				break;
				case 3:
					System.out.println("---------------"+"修改电话本"+"---------------");
					T.update();
				break;
				case 4:
					System.out.println("-------------"+"打印所有电话本"+"-------------");
					T.read();
				break;
				case 5:
					System.out.println("---------------"+"按姓名查询"+"---------------");
					T.nameRead(0,0);
				break;
				case 6:
					System.out.println("----------------"+"退出系统"+"----------------");
					T.exit();
					System.out.println("\n"+"谢谢使用,已退出系统");
				break;
				default:
					System.out.println("--------------"+"您的输入有误"+"--------------");
				break;
			}
		}
	}
}
public class TelBookMgnage {
	public static void main(String[] args) {
		MainInterface M = new MainInterface(); //加载主界面
		M.mainSelect(); //主界面选择输入操作
	}
}


  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现了以下要求说明的功能: 1.要求使用GUI,采用 Swing 技术数据存储采用文件系统(可以是文本 文件、xml 文件、vCard 文件或其他自定义格式文件,但不能是 Excel 文件)。不 使用数据库。 2. 通讯录中每个项目包括: ( 1)基本信息:姓名、手机号码、电子邮箱、生日、所属组、备注、像片。 ( 2)工作单位:国家、省份、城市、地址、工作单位、所属部门、职位、 邮编、电话、传真 ( 3)网络信息:个人主页、即时通信工具及号码、备用邮箱 ( 4)家庭资料:国家、省份、城市、地址、邮编、电话 3 .通讯录数据的录入功能:输入并存储新的通讯录数据,输入时如果有同 名或同电话号码时,应该给出提示。 4 .通讯录数据的查询功能: ( 1)默认列出所有条目。 ( 2)模糊查询,可以按:姓名、电话号码、手机、姓名的汉语拼音的声母 或全拼查询。支持模糊查询即输入部分数据后,可以查询出符合条件的全部条目。 如:输入“张”,列出所有名字中有“张”的条目;输入“ 2645”列出电话中有 该 4个数字的所有条目;输入“xl ”,列出声母为该 2 个字母的所有条目 ( 3)指定分组后,列出某分组的所有条目 说明:查询结果如果有多个条目,应按照姓名排序,并使用姓或姓的第一 个汉语拼音的字母分类。 5 .删除和修改功能:查询到一个条目后,可以删除该条目或修改条目内容。 6 .通信录内容的导入和导出功能。要求能够以CSV 格式和 vCard 格式导入 和导出通讯录的全部内容。并能够与主流手机或其他通讯录软件交换数据。 7 .通讯录显示设置,可以设置在显示查询结果时,一个条目可以显示或不 显示哪些内容。 注意:本系统实现了读取和保存csv文件,同时csv文件中只保存了图片的路径。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值