简易通讯录

这篇博客分享了使用JAVA语言编写的初级通讯录程序,指出了因缺乏总体设计而导致的代码冗长问题。作者承诺后续会发布改进版,并强调此通讯录未采用JAVAFX进行界面设计。
摘要由CSDN通过智能技术生成

用JAVA语言编写初级的通讯录,没有对代码的总体设计,导致语句偏长

相对应的设计

Person
-name:String
-tell[]:long
-whereWork:String
-whereHome:String
-email:String
-birthday:String
-note:String
+Person()
+Person(-name:String,tell[]:long,whereWork:String,
whereHome:String,email:String,birthday:String,note:String)
+get……():object
+set……():object
+print_person():void

1.定义一个Person类的数组,并存入ArraysList列表中,并对其进行排序。
从文件中导入联系人的相关信息。
Grouping:实现在备注里注释下分组的组别,根据注释,进行分组,一共分为:Persent、friends,worker、其他.调用原输出函数,进行输出。

代码如下

package 通讯录;

package xdg;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

 class Person {
private String name;
private String tell;
private String whereWork;
private String whereHome;
private String email;
private String birthday;
private String note;
Person(String name,String tell,String whereWork,String whereHome,String email,String birthday,String note){
	this.name=name;
	this.tell=tell;
	this.whereWork=whereWork;
	this.whereHome=whereHome;
	this.email=email;
	this.birthday=birthday;
	this.note=note;
}
public void print_person(){
	System.out.println("姓名:"+getName()+"\n"+"电话:"+getTell()+"\n"+"工作:"+getWhereWork()+"\n"+"家庭地址:"+getWhereHome()+"\n"+"邮箱是:"+getEmail()+"\n"+"备注:"+getNote()+"\n");
}

public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getTell() {
	return tell;
}
public void setTell(String tell) {
	this.tell = tell;
}
public String getWhereWork() {
	return whereWork;
}
public void setWhereWork(String whereWork) {
	this.whereWork = whereWork;
}
public String getWhereHome() {
	return whereHome;
}
public void setWhereHome(String whereHome) {
	this.whereHome = whereHome;
}
public String getEmail() {
	return email;
}
public void setEmail(String email) {
	this.email = email;
}
public String getBirthday() {
	return birthday;
}
public void setBirthday(String birthday) {
	this.birthday = birthday;
}
public String getNote() {
	return note;
}
public void setNote(String note) {
	this.note = note;
}

static int len=0;
//static ArrayList<Person> initList() throws IOException {
//	ArrayList<Person> list=new ArrayList<>();
//    FileReader reader = new FileReader("G://A.txt");
//    BufferedReader br = new BufferedReader(reader);
//    String str;
//    while((str = br.readLine()) != null){//每次读取一行文本,判断是否到达文件尾
//        String[] splitStr = str.split(" ");
//        Person a = new Person(splitStr[0],splitStr[1], splitStr[2], splitStr[3],splitStr[4], splitStr[5],splitStr[6]);
//        list.add(a);  
//    }
//    len = list.size();
//    br.close();
//    return list;
//}
}
public class Main {
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
Scanner output=new Scanner(System.in);
Person a[]=new Person[100];
int order=1;
ArrayList<Person> list=new ArrayList<>();
int i=0;

try {
	File file=new File("C://A.txt");
    if(file.exists()){
    	Scanner out=new Scanner(file);
    	while(out.hasNext()){
    		Person a2=new Person(out.next(),out.next(),out.next(),out.next(),out.next(),out.next(),out.next());
    	       list.add(a2);        
    	}
    	i=list.size();
    }
    else{
    	file.createNewFile();
    	}
	} catch (IOException e) {
	  System.out.println("读取文件失败!");
	  e.printStackTrace();
	}

System.out.println("欢迎您!");
System.out.println("本通讯录有以下功能为您服务:1.查找、2.添加联系人、3.删除该联系人、4.编辑联系人信息、5.加入黑名单、6.查看所有人");
do{
	
	System.out.println("请输入您的选项:");
	String order1=output.next();
switch(order1){
case "1":{
	System.out.println("请输入所查找联系人:");
	String type=output.next();
	searchFor(list,type);
	break;
}
case "2":{	
	addPeople(a,list,i);
	i++;
	break;
}
case "3":{
	deletPeople(list);
	i--;
	break;
}
case "4":{
	System.out.println("请输入所要编辑人的姓名:");
	String c=output.next();
	reedit(list,c,i);
	break;
	
}
case "5":{
	System.out.println("请输入加入黑名单的名字");
	String name=output.next();
	blackList(name,"Y",list,i);break;
}
case "6":{
	grouping(list);
}
}
	}while(order!=0);
}

	
	
	//查找联系人case 1
public static boolean searchFor(ArrayList<Person> list,String b)throws NullPointerException{
	boolean T=false;
	System.out.println("");
	for(int i=0;i<list.size();i++){
		if(list.get(i).getName().equals(b)){
			System.out.println("查询到以下内容:");
			list.get(i).print_person();
			T=true;
		
		}
	}
	if(!T){
		System.out.println("查无此人!");
		
	}
	
	return T;
}
//Y表示查看黑名单,N表示不查看。case5
public static void blackList(String name,String b,ArrayList<Person> list,int i){
	ArrayList<Person> list1=new ArrayList<>();
	boolean T=false;
	for(int j=0;j<list.size();j++){
		if(list.get(j).getName().equals(name)){
			list1.add(list.get(j));
			list.remove(list.get(j));
			T=true;
			i--;
		}
	}
	if(!T){
		System.out.println("查无此人!");
	}
	if(b.equals("Y")){
		for(int j=0;j<list1.size();j++)
		System.out.println("姓名:"+list1.get(j).getName()+"\n"+"电话:"+list1.get(j).getTell());
	}
	
}
//添加联系人信息case2
public static Person[] addPeople(Person a[],ArrayList<Person> list,int i){
	Scanner in=new Scanner(System.in);
	System.out.println("请按提示输入联系人信息:");
	System.out.println("姓名:");
	String name=in.next();
	System.out.println("手机号码:");
	String c=in.next();
	System.out.println("公司:");
	String whereHome=in.next();	
	System.out.println("住宅:");
	String whereWork=in.next();
	System.out.println("邮箱:");
	String email=in.next();
	System.out.println("生日:");
	String birthday=in.next();
	System.out.println("备注:");
	String note=in.next();
	a[i]=new Person(name,c,whereHome,whereWork,email,birthday,note);
	 try{
         BufferedWriter writer = new BufferedWriter(new FileWriter(new File("D://A.txt"),true));
         writer.write("\n"+name+" "+c+" "+whereHome+" "+whereWork+" "+email+" "+birthday+" "+note);
         writer.close();
     }catch(Exception e){
         e.printStackTrace();
     }
list.add(a[i]);
return a;
}
//删除某人case3
public static void deletPeople(ArrayList<Person> list){
	Scanner in=new Scanner(System.in);
	System.out.println("请输入需要删除的人的姓名:");
	String c=in.next();
	boolean T=true;
	for(int j=0;j<list.size();j++){
		if(list.get(j).getName().equals(c)){
			list.remove(j);
			T=false;
			System.out.println("已删除!");
		try{
			File file=new File("D://A.txt");
	         if(file.exists()&&file.isFile()){
	        	 BufferedWriter writer = new BufferedWriter(new FileWriter(file,true));
	             file.delete();
			
//			 writer.write("\n"+list.get(0).getName()+" "+list.get(0).getTell()+" "+list.get(0).getWhereHome()+" "+list.get(0).getWhereWork()+" "+list.get(0).getEmail()+" "+list.get(0).getBirthday()+" "+list.get(0).getNote());
			for(int j1=0;j1<list.size();j1++){
	         writer.write("\n"+list.get(j1).getName()+" "+list.get(j1).getTell()+" "+list.get(j1).getWhereHome()+" "+list.get(j1).getWhereWork()+" "+list.get(j1).getEmail()+" "+list.get(j1).getBirthday()+" "+list.get(j1).getNote());
			} writer.close();
	     }}
			catch(Exception e){
	         e.printStackTrace();
	     }
		}
	}
	if(T){
		System.out.println("查无此人!");
	}
}
//修改个人信息case4
public static void reedit(ArrayList<Person> list,String name,int i){
	Scanner in=new Scanner(System.in);
	boolean T=true;
	for(int j=0;j<list.size();j++){
if(list.get(j).getName().equals(name)){
	T=false;
	System.out.println("请输入你需要修改的信息:(在后面标注改的项目名称:例如:李四-1,输入0表示结束)");
	System.out.println("指令:1.name,2.tell,3.whereWork,4.whereHome,5.email,6.birthday,7.note");
	while(in.hasNext()){
	String b=in.next();
	if(b.equals("0")){
		break;
	}
	String[] c=b.split("-");
	switch(c[1]){
	case "1":{
		list.get(j).setName(c[0]);
		System.out.println("已修改!(输入0表示结束)");
		break;
	}
	case "2":{
		list.get(j).setTell(c[0]);System.out.println("已修改!");break;
	}
	case "3":{
		list.get(j).setWhereWork(c[0]);System.out.println("已修改!");break;
	}
	case "4":{
		list.get(j).setWhereHome(c[0]);System.out.println("已修改!");break;
	}
	case "5":{
		list.get(j).setEmail(c[0]);System.out.println("已修改!");break;
	}
	case "6":{
		list.get(j).setBirthday(c[0]);System.out.println("已修改!");break;
	}
	case "7":{
		list.get(j).setNote(c[0]);System.out.println("已修改!");break;
	}
	}
}}
	}
	try{
		File file=new File("D://Atxt");
         if(file.exists()&&file.isFile()){
             file.delete();
		BufferedWriter writer = new BufferedWriter(new FileWriter(new File("D://A.txt"),true));
		 writer.write(list.get(0).getName()+" "+list.get(0).getTell()+" "+list.get(0).getWhereHome()+" "+list.get(0).getWhereWork()+" "+list.get(0).getEmail()+" "+list.get(0).getBirthday()+" "+list.get(0).getNote());
		for(int j1=1;j1<list.size();j1++){
         writer.write("\n"+list.get(j1).getName()+" "+list.get(j1).getTell()+" "+list.get(j1).getWhereHome()+" "+list.get(j1).getWhereWork()+" "+list.get(j1).getEmail()+" "+list.get(j1).getBirthday()+" "+list.get(j1).getNote());
		} writer.close();
     }}
		catch(Exception e){
         e.printStackTrace();
     }
	if(T){
		System.out.println("查无此人!");
	}

}
//case6
public static void allcan(ArrayList<Person> list,int i){
	
	if(i==0){
		System.out.println("无联系人!");
	}else{
		for(int j=0;j<list.size();j++){
			for(int k=0;k<j+1;k++){
			if(list.get(j).getName().charAt(0)<list.get(j).getName().charAt(0)){
				Person a=list.get(k);
				Person b=list.get(j);
				list.set(j, a);
				list.set(k, b);
			}
		}}
	for(int j=0;j<list.size();j++){
		list.get(j).print_person();
	}
}}

public static void grouping(ArrayList<Person> list){
	ArrayList<Person> list1=new ArrayList<Person>();//家人
	ArrayList<Person> list2=new ArrayList<Person>();//朋友
	ArrayList<Person> list3=new ArrayList<Person>();//同事
	ArrayList<Person> list4=new ArrayList<Person>();//其他
	for(int i=0;i<list.size();i++){
			if(list.get(i).getNote().toLowerCase().equals("Parent".toLowerCase())){
			list1.add(list.get(i));
		}
	else if(list.get(i).getNote().toLowerCase().equals("Friends".toLowerCase())){
			list2.add(list.get(i));
		}
else if(list.get(i).getNote().toLowerCase().equals("Worker".toLowerCase())){
			list3.add(list.get(i));
		}
else
	list4.add(list.get(i));
}
	System.out.println(list1.size());
	System.out.println("家人"+": ");
allcan(list1,list1.size());	
System.out.println("朋友"+": ");
allcan(list2,list2.size());	
System.out.println("同事"+": ");
allcan(list3,list3.size());	
System.out.println("其他"+": ");
allcan(list4,list4.size());	
}

有疑问可以问我,后来会有更新版
没有用到JAVAFX运行界面。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值