通讯录

面向对象程序设计之课程设计

文章目录

  • 通讯录
    • 面向对象程序设计之课程设计
    • 第一版源码
    • 第二版源码
    • 第三版源码
    • 源码下载

通讯录: 1. 实现记录联系人名字, 电话, 地址和邮箱的功能 2. 增删改查联系人的信息 3. 能导入导出 txt文件到该通讯录中

功能 :
①添加联系人
②删除联系人
③修改联系人
④搜索联系人
⑤打印联系人
⑥导出通讯录到文件
⑦从文件读入数据并打印通讯录列表
⑧贴心提醒 (特别)

第一版源码

package address_list2;import java.util.*;
import java.text.*;
import java.io.*;//联系人类
class Linkman {private String name;//姓名private String[] phone;//电话private String address;//地址private String email;//电子邮箱    Linkman(String name, String[] phone, String address, String email){this.name = name; this.phone = phone;this.address = address;this.email = email;}//含参构造方法Linkman(){phone=new String[10];}//无参数构造方法String  getName()//获取姓名{return name;}void setName(String name)//修改姓名{this.name=name;}String[]  getPhone()//获取电话{return phone;}void setPhone(String[] phone)//修改电话{this.phone=phone;}String  getAddress()//获取地址{return address;}void setAddress(String address)//修改地址{this.address = address;}String  getEmail()//获取电子邮箱{return email;}void setEmail(String email)//修改电子邮箱{this.email=email;}}//管理联系人类
class ManageLinkman{Linkman[] l = new Linkman[1500];Scanner input = new Scanner(System.in);ManageLinkman() {for(int i=0;i<l.length;i++){if(l[i]==null)l[i]=new Linkman();}}Linkman[] list(Linkman x){ //联系人列表for(int i=0;i<l.length;i++){if(l[i].getName()==null){l[i] = x;break;}}return l;}void addLinkman(){//添加实现Linkman l1=new Linkman();boolean f=false;System.out.println("姓名:");String name=input.next();for(int i=0;i<l.length&&l[i].getName()!=null;i++){if(l[i].getName().equals(name))f=true;}if(f) {System.out.println("添加失败,该联系人已存在!");}else{l1.setName(name);String[] phone=new String[10];for(int i=0;i<10;i++){System.out.println("电话号码"+(i+1)+":");phone[i]=input.next();System.out.print("是否还要添加其他号码:1.是 0.否");String x =input.next();if(x.equals("1"))System.out.println("请继续!");else if(x.equals("0")){break;}else{System.out.println("指令错误,已退出!");break;}}l1.setPhone(phone);System.out.println("地址:");String address=input.next();l1.setAddress(address);System.out.println("电子邮箱:");String email=input.next();l1.setEmail(email);list(l1);System.out.println("添加成功!");}}int nameFind(String name) {//按姓名查找实现int i;boolean f=false;for(i=0;i<l.length&&l[i].getName()!=null;i++){if(l[i].getName().equals(name)){f=true;break;}}if(f) {return i;}else {return -1;}}void phoneFind(String phone) {//按号码查找实现int i;boolean f=false;String[] num=new String[10];for(i=0;i<l.length;i++){System.arraycopy(l[i].getPhone(), 0, num, 0, 10);for(int j=0;j<10&&num[j]!=null;j++){ if(num[j].equals(phone)){f=true;break;}}if(f) {printLinkman(i);}else{System.out.println("对不起,通讯录中没有此联系人!");System.out.println("是否添加为新联系人:1.YES 2.NO");String x=input.next();if(x.equals("1"))addLinkman();}   }}void addressFind(String address) {//按地址查找实现int i;boolean f=false;for(i=0;i<l.length&&l[i].getAddress()!=null;i++){if(l[i].getAddress().equals(address)){f=true;break;}}if(f) {printLinkman(i);}else {System.out.println("对不起,没有找到哦!肯定是你输错了!");}}void  emailFind(String email) {//按电子邮箱查找实现int i;boolean f=false;for(i=0;i<l.length&&l[i].getEmail()!=null;i++){if(l[i].getEmail().equals(email)){f=true;break;}}if(f) {printLinkman(i);}else {System.out.println("对不起,没有找到哦!肯定是你输错了!");}}void del(int i){//删除实现if(i==-1){System.out.println("对不起,通讯录中没有此联系人!");System.out.println("是否添加为新联系人:1.YES 2.NO");String x=input.next();if(x.equals("1"))addLinkman();}else {System.out.println("请选择你要删除的内容:");System.out.println("1.该联系人 2.号码 3.地址 4.电子邮箱 ");String x=input.next();switch(x){case "1":{ System.out.println("已删除联系人"+l[i].getName()+"!");l[i].setName(" ");String[] phone=new String[10];System.arraycopy(l[i].getPhone(),0, phone,0, 10);for(int j=0;j<phone.length&&phone[j]!=null;j++){phone[j]=" ";}l[i].setPhone(phone);l[i].setAddress(" ");l[i].setEmail(" ");}break;case "2":{String[] phone=new String[10];System.arraycopy(l[i].getPhone(),0, phone,0, 10);for(int j=0;j<phone.length&&phone[j]!=null;j++){System.out.print("是否要删除号码:"+phone[j]+" 1.是 0.否");String c =input.next();if(c.equals("1")){   System.out.println("号码"+phone[j]+"已删除!");phone[j]=" ";System.out.println("1.继续 2.退出");String b1 =input.next();if(b1.equals("2"))break;}elsecontinue;      }l[i].setPhone(phone);};break;case "3":{ System.out.println("地址已删除!");l[i].setAddress(" ");}break;case "4":{ System.out.println("电子邮箱已删除!");l[i].setEmail(" ");}break;default:System.out.println("输入错误!");}}}void printLinkman(int i){//打印实现if(i==-1){System.out.println("对不起,通讯录中没有此联系人!");System.out.println("是否添加为新联系人:1.YES 2.NO");String x=input.next();if(x.equals("1"))addLinkman();}  else{System.out.println("已为你找到该联系人!");System.out.println("姓名:"+l[i].getName());String[] num=new String[10];System.arraycopy(l[i].getPhone(), 0, num, 0, 10);for(int j=0;j<10&&num[j]!=null;j++){ System.out.println("电话"+(j+1)+":"+num[j]);}System.out.println("地址:"+l[i].getAddress());System.out.println("电子邮箱:"+l[i].getEmail());}}void updata(int i){//修改实现if(i==-1) {System.out.println("对不起,通讯录中没有此联系人!");System.out.println("是否添加为新联系人:1.YES 2.NO");String x=input.next();if(x.equals("1"))addLinkman();}else{System.out.println("请选择你要更新的内容:");System.out.println("1.姓名 2.号码 3.地址 4.电子邮箱");int x=input.nextInt();switch(x) {case 1:{System.out.println("输入你要更新的姓名:");String name=input.next();l[i].setName(name);}break;case 2:{String[] phone=new String[10];System.arraycopy(l[i].getPhone(),0, phone,0, 10);for(int j=0;j<phone.length;j++) {if(phone[j].equals(" ")) {continue;}System.out.println("是否要更新号码:"+phone[j]+" 1.是 0.否");String b =input.next();if(b.equals("1")) {System.out.println("请输入你要更新的号码:");phone[j]=input.next();System.out.print("原号码已更新为:"+phone[j]);System.out.println("1.继续 2.退出");String b1 =input.next();if(b1.equals("2"))break;}else {continue;}}l[i].setPhone(phone);}break;case 3:{System.out.println("输入你要更新的地址:");String address = input.next();System.out.print("你已修改地址"+l[i].getAddress()+"为");l[i].setAddress(address);System.out.println(l[i].getAddress());}break;case 4:{System.out.println("输入你要更新的电子邮箱:");String email=input.next();System.out.print("你已修改电子邮箱:"+l[i].getEmail()+"为");l[i].setEmail(email);System.out.print(l[i].getEmail());}break;default:System.out.println("输入错误!");}}}void printFile(){//写入文件实现try {BufferedWriter output=new BufferedWriter(new FileWriter("通讯录"));for(int i=0;i<l.length&&l[i].getName()!=null;i++) {if(l[i].getName().equals(" "))continue;else{output.write("姓名:"+l[i].getName()+" ");String[] num=new String[10];System.arraycopy(l[i].getPhone(), 0, num, 0, 10);for(int j=0;j<10&&num[j]!=null;j++) {output.write("电话"+(j+1)+":"+num[j]+" ");}output.write("地址:"+l[i].getAddress()+" ");output.write("电子邮箱"+l[i].getEmail()+" ");output.write("\n"); }}  output.close();System.out.println("文件创建成功!");System.out.println("向文件导入数据成功");}catch(IOException e) {}}void readFile(){//从文件读入数据实现String[] str=new String[1000];try {BufferedReader input=new BufferedReader(new FileReader("通讯录"));int i=0;while((str[i]=input.readLine())!=null){System.out.println(str[i]);if(str[i].equals(""))break;}input.close();}catch(IOException e) {}System.out.println("文件数据全部读取完毕!");}}public class Test{//测试类Scanner input=new Scanner(System.in);ManageLinkman m=new ManageLinkman();public void add(){//添加执行System.out.println("开始添加联系人......");m.addLinkman();}public void find(){//查找执行System.out.println("请选择你的查找方式:");System.out.println(" 1.按姓名 2.按号码 3.按工作地址 4.按通讯地址 5.按电子邮箱 6.按生日 7.按备注");String x=input.next();switch(x){case "1":{System.out.println("输入你要查找联系人的姓名:");String name=input.next();m.printLinkman(m.nameFind(name));}break;case "2":{System.out.println("输入你要查找联系人的号码:");String phone=input.next();m.phoneFind(phone);}break;case "3":{System.out.println("输入你要查找联系人的地址:");String address = input.next();m.addressFind(address);}break;case "4":{System.out.println("输入你要查找联系人的电子邮箱:");String email=input.next();m.emailFind(email);}break;default:System.out.println("输入错误!");}}public void del(){//删除执行System.out.println("输入你要删除联系人的姓名:");String name=input.next();m.del(m.nameFind(name));}public void up() {//修改执行System.out.println("输入你要修改联系人的姓名:");String name=input.next();m.updata((m.nameFind(name)));}public void cout(){//打印执行System.out.println("输入你要打印联系人的姓名:");String name=input.next();m.printLinkman(m.nameFind(name));System.out.println("打印完毕!");}public void pFile()throws java.io.IOException{//写入文件执行m.printFile();}public void rFile(){//从文件读入数据执行System.out.println("正在为你读入数据......");m.readFile();}public void cool (){//显示当前时间和贴心提醒SimpleDateFormat s=new SimpleDateFormat();SimpleDateFormat s1=new SimpleDateFormat("HH");s.applyPattern("yyy-MM-dd HH:mm:ss a");Date date=new Date();String h=s1.format(date);int x=Integer.parseInt(h);System.out.println("现在时间:"+s.format(date));if(x==23||x==0||x==1||x==2||x==3||x==4||x==5||x==6)System.out.println("该睡觉了!晚安,好梦!");  else if(x>=7&&x<=11)System.out.println("一日之计在于晨!加油吧!");else if(x==12)System.out.println("在忙也要记得吃饭哦!");else if(x==13)System.out.println("该睡午觉了!午安!");else if(x>=14&&x<=17)System.out.println("下午也要加油啊!不要荒废每一天!");else if(x==18||x==19)System.out.println("该吃晚饭了!");else if(x>=20&&x<23)System.out.println("忙了一天了!是时候给自己放会儿假了!");}public void Menu()throws java.io.IOException {//菜单do {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("                7.从文件读入数据并打印通讯录列表          ");System.out.println("                8.贴心提醒 (特别)                        ");System.out.println("请输入指令数字进行操作:                                  ");String key = input.next();switch (key) {case "1":add();break;case "2":del();break;case "3":up();break;case "4":find();break;case "5":cout();break;case "6":pFile();break;case "7":rFile();break;case "8":cool();break;default:System.out.println("输入错误!");continue;}break;}while(true);}public static void main(String[] args)throws java.io.IOException{Test t = new Test();while(true){t.Menu();}}
}

输出结果:

-----------------欢迎使用通讯录管理系统!----------------- 1.添加联系人                             2.删除联系人                             3.修改联系人                             4.搜索联系人                             5.打印联系人                             6.导出通讯录到文件                       7.从文件读入数据并打印通讯录列表          8.贴心提醒 (特别)

第二版源码

增加退出功能

将读写文件改为txt文件, 方便直接用记事本打开

package address_list2;import java.util.*;
import java.text.*;
import java.io.*;//联系人类
class Linkman {private String name;//姓名private String[] phone;//电话private String address;//地址private String email;//电子邮箱    Linkman(String name, String[] phone, String address, String email){this.name = name; this.phone = phone;this.address = address;this.email = email;}//含参构造方法Linkman(){phone=new String[10];}//无参数构造方法String  getName()//获取姓名{return name;}void setName(String name)//修改姓名{this.name=name;}String[]  getPhone()//获取电话{return phone;}void setPhone(String[] phone)//修改电话{this.phone=phone;}String  getAddress()//获取地址{return address;}void setAddress(String address)//修改地址{this.address = address;}String  getEmail()//获取电子邮箱{return email;}void setEmail(String email)//修改电子邮箱{this.email=email;}}//管理联系人类
class ManageLinkman{Linkman[] l = new Linkman[1500];Scanner input = new Scanner(System.in);ManageLinkman() {for(int i=0;i<l.length;i++){if(l[i]==null)l[i]=new Linkman();}}Linkman[] list(Linkman x){ //联系人列表for(int i=0;i<l.length;i++){if(l[i].getName()==null){l[i] = x;break;}}return l;}void addLinkman(){//添加实现Linkman l1=new Linkman();boolean f=false;System.out.println("姓名:");String name=input.next();for(int i=0;i<l.length&&l[i].getName()!=null;i++){if(l[i].getName().equals(name))f=true;}if(f) {System.out.println("添加失败,该联系人已存在!");}else{l1.setName(name);String[] phone=new String[10];for(int i=0;i<10;i++){System.out.println("电话号码"+(i+1)+":");phone[i]=input.next();System.out.print("是否还要添加其他号码:1.是 0.否");String x =input.next();if(x.equals("1"))System.out.println("请继续!");else if(x.equals("0")){break;}else{System.out.println("指令错误,已退出!");break;}}l1.setPhone(phone);System.out.println("地址:");String address=input.next();l1.setAddress(address);System.out.println("电子邮箱:");String email=input.next();l1.setEmail(email);list(l1);System.out.println("添加成功!");}}int nameFind(String name) {//按姓名查找实现int i;boolean f=false;for(i=0;i<l.length&&l[i].getName()!=null;i++){if(l[i].getName().equals(name)){f=true;break;}}if(f) {return i;}else {return -1;}}void phoneFind(String phone) {//按号码查找实现int i;boolean f=false;String[] num=new String[10];for(i=0;i<l.length;i++){System.arraycopy(l[i].getPhone(), 0, num, 0, 10);for(int j=0;j<10&&num[j]!=null;j++){ if(num[j].equals(phone)){f=true;break;}}if(f) {printLinkman(i);}else{System.out.println("对不起,通讯录中没有此联系人!");System.out.println("是否添加为新联系人:1.YES 2.NO");String x=input.next();if(x.equals("1"))addLinkman();}   }}void addressFind(String address) {//按地址查找实现int i;boolean f=false;for(i=0;i<l.length&&l[i].getAddress()!=null;i++){if(l[i].getAddress().equals(address)){f=true;break;}}if(f) {printLinkman(i);}else {System.out.println("对不起,没有找到哦!肯定是你输错了!");}}void  emailFind(String email) {//按电子邮箱查找实现int i;boolean f=false;for(i=0;i<l.length&&l[i].getEmail()!=null;i++){if(l[i].getEmail().equals(email)){f=true;break;}}if(f) {printLinkman(i);}else {System.out.println("对不起,没有找到哦!肯定是你输错了!");}}void del(int i){//删除实现if(i==-1){System.out.println("对不起,通讯录中没有此联系人!");System.out.println("是否添加为新联系人:1.YES 2.NO");String x=input.next();if(x.equals("1"))addLinkman();}else {System.out.println("请选择你要删除的内容:");System.out.println("1.该联系人 2.号码 3.地址 4.电子邮箱 ");String x=input.next();switch(x){case "1":{ System.out.println("已删除联系人"+l[i].getName()+"!");l[i].setName(" ");String[] phone=new String[10];System.arraycopy(l[i].getPhone(),0, phone,0, 10);for(int j=0;j<phone.length&&phone[j]!=null;j++){phone[j]=" ";}l[i].setPhone(phone);l[i].setAddress(" ");l[i].setEmail(" ");}break;case "2":{String[] phone=new String[10];System.arraycopy(l[i].getPhone(),0, phone,0, 10);for(int j=0;j<phone.length&&phone[j]!=null;j++){System.out.print("是否要删除号码:"+phone[j]+" 1.是 0.否");String c =input.next();if(c.equals("1")){   System.out.println("号码"+phone[j]+"已删除!");phone[j]=" ";System.out.println("1.继续 2.退出");String b1 =input.next();if(b1.equals("2"))break;}elsecontinue;      }l[i].setPhone(phone);};break;case "3":{ System.out.println("地址已删除!");l[i].setAddress(" ");}break;case "4":{ System.out.println("电子邮箱已删除!");l[i].setEmail(" ");}break;default:System.out.println("输入错误!");}}}void printLinkman(int i){//打印实现if(i==-1){System.out.println("对不起,通讯录中没有此联系人!");System.out.println("是否添加为新联系人:1.YES 2.NO");String x=input.next();if(x.equals("1"))addLinkman();}  else{System.out.println("已为你找到该联系人!");System.out.println("姓名:"+l[i].getName());String[] num=new String[10];System.arraycopy(l[i].getPhone(), 0, num, 0, 10);for(int j=0;j<10&&num[j]!=null;j++){ System.out.println("电话"+(j+1)+":"+num[j]);}System.out.println("地址:"+l[i].getAddress());System.out.println("电子邮箱:"+l[i].getEmail());}}void updata(int i){//修改实现if(i==-1) {System.out.println("对不起,通讯录中没有此联系人!");System.out.println("是否添加为新联系人:1.YES 2.NO");String x=input.next();if(x.equals("1"))addLinkman();}else{System.out.println("请选择你要更新的内容:");System.out.println("1.姓名 2.号码 3.地址 4.电子邮箱");int x=input.nextInt();switch(x) {case 1:{System.out.println("输入你要更新的姓名:");String name=input.next();l[i].setName(name);}break;case 2:{String[] phone=new String[10];System.arraycopy(l[i].getPhone(),0, phone,0, 10);for(int j=0;j<phone.length;j++) {if(phone[j].equals(" ")) {continue;}System.out.println("是否要更新号码:"+phone[j]+" 1.是 0.否");String b =input.next();if(b.equals("1")) {System.out.println("请输入你要更新的号码:");phone[j]=input.next();System.out.print("原号码已更新为:"+phone[j]);System.out.println("1.继续 2.退出");String b1 =input.next();if(b1.equals("2"))break;}else {continue;}}l[i].setPhone(phone);}break;case 3:{System.out.println("输入你要更新的地址:");String address = input.next();System.out.print("你已修改地址"+l[i].getAddress()+"为");l[i].setAddress(address);System.out.println(l[i].getAddress());}break;case 4:{System.out.println("输入你要更新的电子邮箱:");String email=input.next();System.out.print("你已修改电子邮箱:"+l[i].getEmail()+"为");l[i].setEmail(email);System.out.print(l[i].getEmail());}break;default:System.out.println("输入错误!");}}}void printFile(){//写入文件实现try {BufferedWriter output=new BufferedWriter(new FileWriter("通讯录.txt"));for(int i=0;i<l.length&&l[i].getName()!=null;i++) {if(l[i].getName().equals(" "))continue;else{output.write("姓名:"+l[i].getName()+" ");String[] num=new String[10];System.arraycopy(l[i].getPhone(), 0, num, 0, 10);for(int j=0;j<10&&num[j]!=null;j++) {output.write("电话"+(j+1)+":"+num[j]+" ");}output.write("地址:"+l[i].getAddress()+" ");output.write("电子邮箱"+l[i].getEmail()+" ");output.write("\n"); }}output.close();System.out.println("文件创建成功!");System.out.println("向文件导入数据成功");}catch(IOException e) {System.out.println("文件创建失败!");System.out.println("向文件导入数据失败");}}void readFile(){//从文件读入数据实现String[] str=new String[1000];try {BufferedReader input=new BufferedReader(new FileReader("通讯录.txt"));int i=0;while((str[i]=input.readLine())!=null){System.out.println(str[i]);if(str[i].equals(""))break;}input.close();}catch(IOException e) {System.out.println("文件数据读取失败!");}System.out.println("文件数据全部读取完毕!");}}public class Test{//测试类Scanner input=new Scanner(System.in);ManageLinkman m=new ManageLinkman();boolean f = true;public void add(){//添加执行System.out.println("开始添加联系人......");m.addLinkman();}public void find(){//查找执行System.out.println("请选择你的查找方式:");System.out.println(" 1.按姓名 2.按号码 3.按工作地址 4.按通讯地址 5.按电子邮箱 6.按生日 7.按备注");String x=input.next();switch(x){case "1":{System.out.println("输入你要查找联系人的姓名:");String name=input.next();m.printLinkman(m.nameFind(name));}break;case "2":{System.out.println("输入你要查找联系人的号码:");String phone=input.next();m.phoneFind(phone);}break;case "3":{System.out.println("输入你要查找联系人的地址:");String address = input.next();m.addressFind(address);}break;case "4":{System.out.println("输入你要查找联系人的电子邮箱:");String email=input.next();m.emailFind(email);}break;default:System.out.println("输入错误!");}}public void del(){//删除执行System.out.println("输入你要删除联系人的姓名:");String name=input.next();m.del(m.nameFind(name));}public void up() {//修改执行System.out.println("输入你要修改联系人的姓名:");String name=input.next();m.updata((m.nameFind(name)));}public void cout(){//打印执行System.out.println("输入你要打印联系人的姓名:");String name=input.next();m.printLinkman(m.nameFind(name));System.out.println("打印完毕!");}public void pFile()throws java.io.IOException{//写入文件执行m.printFile();}public void rFile(){//从文件读入数据执行System.out.println("正在为你读入数据......");m.readFile();}public void cool (){//显示当前时间和贴心提醒SimpleDateFormat s = new SimpleDateFormat();SimpleDateFormat s1 = new SimpleDateFormat("HH");s.applyPattern("yyy-MM-dd HH:mm:ss a");Date date=new Date();String h=s1.format(date);int x=Integer.parseInt(h);System.out.println("现在时间:"+s.format(date));if(x==23||(0<x&&x<6))System.out.println("该睡觉了!晚安,好梦!");    else if(x>=7&&x<=11)System.out.println("一日之计在于晨!加油吧!");else if(x==12)System.out.println("在忙也要记得吃饭哦!");else if(x==13)System.out.println("该睡午觉了, 午安!");else if(x>=14&&x<=17)System.out.println("下午也要加油啊, 不要荒废每一天!");else if(x==18||x==19)System.out.println("该吃晚饭了!");else if(x>=20&&x<23)System.out.println("忙了一天了, 是时候给自己放会儿假了!");}public void Menu()throws java.io.IOException {//菜单do {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("                7.从文件读入数据并打印通讯录列表          ");System.out.println("                8.贴心提醒 (特别)                        ");System.out.println("                9.退出                                   ");System.out.println("请输入指令数字进行操作:                                  ");String key = input.next();switch (key) {case "1":add();break;case "2":del();break;case "3":up();break;case "4":find();break;case "5":cout();break;case "6":pFile();break;case "7":rFile();break;case "8":cool();break;case "9":System.out.println("退出成功!");f = false;break;default:System.out.println("输入错误!");continue;}break;}while(f);}public static void main(String[] args)throws java.io.IOException{boolean f = true;Test t = new Test();while(f){t.Menu();if(t.f == false) f = false;  }}
}

输出结果:

-----------------欢迎使用通讯录管理系统!----------------- 1.添加联系人                             2.删除联系人                             3.修改联系人                             4.搜索联系人                             5.打印联系人                             6.导出通讯录到文件                       7.从文件读入数据并打印通讯录列表          8.贴心提醒 (特别)                        9.退出
请输入指令数字进行操作:
9
退出成功!

第三版源码

在第二版的基础上进行将代码分成多个文件, 每个类为一个java文件

  • Linkman.java 文件
package address_list;public class Linkman {private String name;//姓名private String[] phone;//电话private String address;//地址private String email;//电子邮箱 Linkman(String name, String[] phone, String address, String email){this.name = name; this.phone = phone;this.address = address;this.email = email;}//含参构造方法Linkman(){phone=new String[10];}//无参数构造方法String  getName()//获取姓名{return name;}void setName(String name)//修改姓名{this.name=name;}String[]  getPhone()//获取电话{return phone;}void setPhone(String[] phone)//修改电话{this.phone=phone;}String  getAddress()//获取地址{return address;}void setAddress(String address)//修改地址{this.address = address;}String  getEmail()//获取电子邮箱{return email;}void setEmail(String email)//修改电子邮箱{this.email=email;}
}
  • ManageLinkman.java文件
package address_list;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;public class ManageLinkman {Linkman[] l = new Linkman[1500];Scanner input = new Scanner(System.in);ManageLinkman() {for(int i=0;i<l.length;i++){if(l[i]==null)l[i]=new Linkman();}}Linkman[] list(Linkman x){ //联系人列表for(int i=0;i<l.length;i++){if(l[i].getName()==null){l[i] = x;break;}}return l;}void addLinkman(){//添加实现Linkman l1=new Linkman();boolean f=false;System.out.println("姓名:");String name=input.next();for(int i=0;i<l.length&&l[i].getName()!=null;i++){if(l[i].getName().equals(name))f=true;}if(f) {System.out.println("添加失败,该联系人已存在!");}else{l1.setName(name);String[] phone=new String[10];for(int i=0;i<10;i++){System.out.println("电话号码"+(i+1)+":");phone[i]=input.next();System.out.print("是否还要添加其他号码:1.是 0.否");String x =input.next();if(x.equals("1"))System.out.println("请继续!");else if(x.equals("0")){break;}else{System.out.println("指令错误,已退出!");break;}}l1.setPhone(phone);System.out.println("地址:");String address=input.next();l1.setAddress(address);System.out.println("电子邮箱:");String email=input.next();l1.setEmail(email);list(l1);System.out.println("添加成功!");}}int nameFind(String name) {//按姓名查找实现int i;boolean f=false;for(i=0;i<l.length&&l[i].getName()!=null;i++){if(l[i].getName().equals(name)){f=true;break;}}if(f) {return i;}else {return -1;}}void phoneFind(String phone) {//按号码查找实现int i;boolean f=false;String[] num=new String[10];for(i=0;i<l.length;i++){System.arraycopy(l[i].getPhone(), 0, num, 0, 10);for(int j=0;j<10&&num[j]!=null;j++){ if(num[j].equals(phone)){f=true;break;}}if(f) {printLinkman(i);}else{System.out.println("对不起,通讯录中没有此联系人!");System.out.println("是否添加为新联系人:1.YES 2.NO");String x=input.next();if(x.equals("1"))addLinkman();}  }}void addressFind(String address) {//按地址查找实现int i;boolean f=false;for(i=0;i<l.length&&l[i].getAddress()!=null;i++){if(l[i].getAddress().equals(address)){f=true;break;}}if(f) {printLinkman(i);}else {System.out.println("对不起,没有找到哦!肯定是你输错了!");}}void  emailFind(String email) {//按电子邮箱查找实现int i;boolean f=false;for(i=0;i<l.length&&l[i].getEmail()!=null;i++){if(l[i].getEmail().equals(email)){f=true;break;}}if(f) {printLinkman(i);}else {System.out.println("对不起,没有找到哦!肯定是你输错了!");}}void del(int i){//删除实现if(i==-1){System.out.println("对不起,通讯录中没有此联系人!");System.out.println("是否添加为新联系人:1.YES 2.NO");String x=input.next();if(x.equals("1"))addLinkman();}else {System.out.println("请选择你要删除的内容:");System.out.println("1.该联系人 2.号码 3.地址 4.电子邮箱 ");String x=input.next();switch(x){case "1":{ System.out.println("已删除联系人"+l[i].getName()+"!");l[i].setName(" ");String[] phone=new String[10];System.arraycopy(l[i].getPhone(),0, phone,0, 10);for(int j=0;j<phone.length&&phone[j]!=null;j++){phone[j]=" ";}l[i].setPhone(phone);l[i].setAddress(" ");l[i].setEmail(" ");}break;case "2":{String[] phone=new String[10];System.arraycopy(l[i].getPhone(),0, phone,0, 10);for(int j=0;j<phone.length&&phone[j]!=null;j++){System.out.print("是否要删除号码:"+phone[j]+" 1.是 0.否");String c =input.next();if(c.equals("1")){   System.out.println("号码"+phone[j]+"已删除!");phone[j]=" ";System.out.println("1.继续 2.退出");String b1 =input.next();if(b1.equals("2"))break;}elsecontinue;      }l[i].setPhone(phone);};break;case "3":{ System.out.println("地址已删除!");l[i].setAddress(" ");}break;case "4":{ System.out.println("电子邮箱已删除!");l[i].setEmail(" ");}break;default:System.out.println("输入错误!");}}}void printLinkman(int i){//打印实现if(i==-1){System.out.println("对不起,通讯录中没有此联系人!");System.out.println("是否添加为新联系人:1.YES 2.NO");String x=input.next();if(x.equals("1"))addLinkman();}  else{System.out.println("已为你找到该联系人!");System.out.println("姓名:"+l[i].getName());String[] num=new String[10];System.arraycopy(l[i].getPhone(), 0, num, 0, 10);for(int j=0;j<10&&num[j]!=null;j++){ System.out.println("电话"+(j+1)+":"+num[j]);}System.out.println("地址:"+l[i].getAddress());System.out.println("电子邮箱:"+l[i].getEmail());}}void updata(int i){//修改实现if(i==-1) {System.out.println("对不起,通讯录中没有此联系人!");System.out.println("是否添加为新联系人:1.YES 2.NO");String x=input.next();if(x.equals("1"))addLinkman();}else{System.out.println("请选择你要更新的内容:");System.out.println("1.姓名 2.号码 3.地址 4.电子邮箱");int x=input.nextInt();switch(x) {case 1:{System.out.println("输入你要更新的姓名:");String name=input.next();l[i].setName(name);}break;case 2:{String[] phone=new String[10];System.arraycopy(l[i].getPhone(),0, phone,0, 10);for(int j=0;j<phone.length;j++) {if(phone[j].equals(" ")) {continue;}System.out.println("是否要更新号码:"+phone[j]+" 1.是 0.否");String b =input.next();if(b.equals("1")) {System.out.println("请输入你要更新的号码:");phone[j]=input.next();System.out.print("原号码已更新为:"+phone[j]);System.out.println("1.继续 2.退出");String b1 =input.next();if(b1.equals("2"))break;}else {continue;}}l[i].setPhone(phone);}break;case 3:{System.out.println("输入你要更新的地址:");String address = input.next();System.out.print("你已修改地址"+l[i].getAddress()+"为");l[i].setAddress(address);System.out.println(l[i].getAddress());}break;case 4:{System.out.println("输入你要更新的电子邮箱:");String email=input.next();System.out.print("你已修改电子邮箱:"+l[i].getEmail()+"为");l[i].setEmail(email);System.out.print(l[i].getEmail());}break;default:System.out.println("输入错误!");}}}void printFile(){//写入文件实现try {BufferedWriter output=new BufferedWriter(new FileWriter("通讯录.txt"));for(int i=0;i<l.length&&l[i].getName()!=null;i++) {if(l[i].getName().equals(" "))continue;else{output.write("姓名:"+l[i].getName()+" ");String[] num=new String[10];System.arraycopy(l[i].getPhone(), 0, num, 0, 10);for(int j=0;j<10&&num[j]!=null;j++) {output.write("电话"+(j+1)+":"+num[j]+" ");}output.write("地址:"+l[i].getAddress()+" ");output.write("电子邮箱"+l[i].getEmail()+" ");output.write("\n"); }}output.close();System.out.println("文件创建成功!");System.out.println("向文件导入数据成功");}catch(IOException e) {System.out.println("文件创建失败!");System.out.println("向文件导入数据失败");}}void readFile(){//从文件读入数据实现String[] str=new String[1000];try {BufferedReader input=new BufferedReader(new FileReader("通讯录.txt"));int i=0;while((str[i]=input.readLine())!=null){System.out.println(str[i]);if(str[i].equals(""))break;}input.close();}catch(IOException e) {System.out.println("文件数据读取失败!");}System.out.println("文件数据全部读取完毕!");}}
  • Test.java文件
package address_list;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;public class Test {Scanner input=new Scanner(System.in);ManageLinkman m=new ManageLinkman();boolean f = true;public void add(){//添加执行System.out.println("开始添加联系人......");m.addLinkman();}public void find(){//查找执行System.out.println("请选择你的查找方式:");System.out.println(" 1.按姓名 2.按号码 3.按工作地址 4.按通讯地址 5.按电子邮箱 6.按生日 7.按备注");String x=input.next();switch(x){case "1":{System.out.println("输入你要查找联系人的姓名:");String name=input.next();m.printLinkman(m.nameFind(name));}break;case "2":{System.out.println("输入你要查找联系人的号码:");String phone=input.next();m.phoneFind(phone);}break;case "3":{System.out.println("输入你要查找联系人的地址:");String address = input.next();m.addressFind(address);}break;case "4":{System.out.println("输入你要查找联系人的电子邮箱:");String email=input.next();m.emailFind(email);}break;default:System.out.println("输入错误!");}}public void del(){//删除执行System.out.println("输入你要删除联系人的姓名:");String name=input.next();m.del(m.nameFind(name));}public void up() {//修改执行System.out.println("输入你要修改联系人的姓名:");String name=input.next();m.updata((m.nameFind(name)));}public void cout(){//打印执行System.out.println("输入你要打印联系人的姓名:");String name=input.next();m.printLinkman(m.nameFind(name));System.out.println("打印完毕!");}public void pFile()throws java.io.IOException{//写入文件执行m.printFile();}public void rFile(){//从文件读入数据执行System.out.println("正在为你读入数据......");m.readFile();}public void cool (){//显示当前时间和贴心提醒SimpleDateFormat s = new SimpleDateFormat();SimpleDateFormat s1 = new SimpleDateFormat("HH");s.applyPattern("yyy-MM-dd HH:mm:ss a");Date date=new Date();String h=s1.format(date);int x=Integer.parseInt(h);System.out.println("现在时间:"+s.format(date));if(x==23||(0<x&&x<6))System.out.println("该睡觉了!晚安,好梦!");   else if(x>=7&&x<=11)System.out.println("一日之计在于晨!加油吧!");else if(x==12)System.out.println("在忙也要记得吃饭哦!");else if(x==13)System.out.println("该睡午觉了, 午安!");else if(x>=14&&x<=17)System.out.println("下午也要加油啊, 不要荒废每一天!");else if(x==18||x==19)System.out.println("该吃晚饭了!");else if(x>=20&&x<23)System.out.println("忙了一天了, 是时候给自己放会儿假了!");}public void Menu()throws java.io.IOException {//菜单System.out.println("正在导入文件-------");do {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("                7.从文件读入数据并打印通讯录列表          ");System.out.println("                8.贴心提醒 (特别)                        ");System.out.println("                9.退出                                   ");System.out.println("请输入指令数字进行操作:                                  ");String key = input.next();switch (key) {case "1":add();break;case "2":del();break;case "3":up();break;case "4":find();break;case "5":cout();break;case "6":pFile();break;case "7":rFile();break;case "8":cool();break;case "9":System.out.println("退出成功!");f = false;break;default:System.out.println("输入错误!");continue;}break;}while(f);}public static void main(String[] args)throws java.io.IOException{boolean f = true;Test t = new Test();while(f){t.Menu();if(t.f == false) f = false;    }}
}

运行结果:

测试:

正在导入文件-------
-----------------欢迎使用通讯录管理系统!----------------- 1.添加联系人                             2.删除联系人                             3.修改联系人                             4.搜索联系人                             5.打印联系人                             6.导出通讯录到文件                       7.从文件读入数据并打印通讯录列表          8.贴心提醒 (特别)                        9.退出
请输入指令数字进行操作:
8
现在时间:2021-01-01 22:40:45 下午
忙了一天了, 是时候给自己放会儿假了!
正在导入文件-------
-----------------欢迎使用通讯录管理系统!----------------- 1.添加联系人                             2.删除联系人                             3.修改联系人                             4.搜索联系人                             5.打印联系人                             6.导出通讯录到文件                       7.从文件读入数据并打印通讯录列表          8.贴心提醒 (特别)                        9.退出
请输入指令数字进行操作:
9
退出成功!

以上代码都是在Eclipse上运行的
上述内容仅供学习参考; 欢迎各位大佬纠错, 改进

源码下载

第三版源码 : 源码打包下载

通讯录——java课程设计相关推荐

  1. java课设通讯录制作,JAVA课程设计--个人通讯录管理系统

    JAVA课程设计--个人通讯录管理系统 JAVAJAVA 课程设计课程设计 课题个人通讯录管理系统课题个人通讯录管理系统 课程名称 java 课程设计 院 系 计算机科学与技术学院 班 级 09 计本 ...

  2. 网络编程——基于TCP协议的通讯录【课程设计】

    网络编程--基于TCP协议的通讯录[课程设计] 本文目录 网络编程--基于TCP协议的通讯录[课程设计] 一.设计题目和要求 设计目标: 课程设计系统组成及模块功能: 二.设计内容 服务端 客户端 S ...

  3. JAVA课程设计——“小羊吃蓝莓”小游戏

    JAVA课程设计--"小羊吃蓝莓"小游戏 1. 团队课程设计博客链接 http://www.cnblogs.com/HXY071/p/7061216.html 2. 个人负责模块或 ...

  4. Java课程设计基于ssm的微信小程序

    Java课程设计, 基于ssm的微信小程序 后端涉及技术spring.mysql等 效果查看请扫一扫 喜欢可以点赞哟

  5. ATM柜员机JAVA课程设计_ATM柜员机学年论文设计(Java课程设计)

    内容简介: ATM柜员机学年论文设计(Java课程设计),共23页,4599字,附源程序. 一. 程序介绍3 二. 开发环境搭建3 1. MyEclipse 5.5.1 GA安装3 2. MyEcli ...

  6. java中国象棋网络对弈,java课程设计---中国象棋对弈系统

    java课程设计---中国象棋对弈系统 1 目目 录录 摘要 1 关键字 1 正文 2 1.程序设计说明. 2 1.1 程序的设计及实现 2 1.1.1搜索引擎的实现(engine包) . 2 1.1 ...

  7. 计算器小程序java课程设计,java课程设计----计算器小程序报告.doc

    java课程设计----计算器小程序报告.doc #####学院JAVA语言课程设计报告小程序计算器系统管理班级:#######姓名:#####指导老师:###时间:2012年6月25日至6月29日2 ...

  8. ATM柜员机JAVA课程设计_JAVA课程设计报告银行ATM机系统.doc

    JAVA课程设计报告银行ATM机系统 Java课程设计报告 题 目 银行ATM机系统 所在院系 软件学院 学生姓名 金磊 专 业 R机械+软件 班 级 R机械094 学 号 2011年 7 月 15日 ...

  9. java课程设计 考试系统,java课程设计考试系统.

    java课程设计考试系统.Tag内容描述: 1.目 录 第一章第一章 引言引言 3 1 1目的 3 1 2名词解释 3 1 3参考资料 3 1 4文档结构 3 第第 2 章章远景远景 4 2 1项目概 ...

最新文章

  1. Phpcms V9手机门户设置教程:怎么用PC V9做手机网站
  2. Android事件分发机制解析
  3. 网站基于文本搜索的实现
  4. Windows:系统环境变量配置提示系统环境变量太大的问题三种解决方案亲测可用
  5. 中国福建省动漫产业建设开发现状及未来策略规划调研报告2021-2027年
  6. docker内手动安装python环境
  7. 深入理解linux系统的目录结构
  8. NOI 2004 郁闷的出纳员
  9. 【vue开发问题-解决方法】(九)使用element upload自定义接口上传文件,input多文件上传
  10. python java go 区别 一句话概括
  11. html代码表白_作为一个程序员,表白都要玩出花样
  12. python列表解析的底层详解
  13. 莫让“专业对口”俘虏了你
  14. Office2016装Mathtype找不到WLL
  15. 行业集中度数据(2000-2020年 )
  16. linux glog使用
  17. Worthington脱氧核糖核酸及相关研究工具
  18. 感冒鼻塞头痛的原因是什么?
  19. 成都做java_成都嵌入式开发和成都Java开发哪个工资高,前景好?
  20. [贪心算法]Leetcode738. 单调递增的数字

热门文章

  1. 用java实现输入一行字符,分别统计出其中中文汉字、英文字母、空格、数字和其它字符的个数
  2. 毕业后的档案问题——详细流程
  3. 毒液蛋白质相互作用分析
  4. Wav ,flac,mp3,ogg 等的区别
  5. 泰勒公式求极限c语言switch,C语言利用泰勒公式构造求SIN(X),求大触帮看我的代码哪里有问题...
  6. YTU oj 3631 树的高度
  7. C#mdi 建立多窗口
  8. 如何去掉超链接下划线小集锦
  9. 高斯分布的性质(含代码)
  10. 工业通讯桥接器——用于PLC、数控、注塑机等设备数据采集