用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运行界面。