链表数据结构 实现通讯录管理系统

基于JAVA语言 链表数据结构 实现通讯录管理系统

问题描述:

该设计采用菜单作为应用程序的主要界面,用控制语句来改变程序执行的顺序,控制语句是实现结构化程序设计的基础。该设计的任务是利用一个简单实用的菜单,通过菜单单项进行选择,实现和完成通讯录管理中常用的几个不同的功能。

【任务要求】
菜单内容:
(0)通讯录链表的建立
(1)通讯者结点的插入
(2)通讯者结点的查询
(3)通讯者结点的删除
(4)通讯录链表的输出
(5)退出管理系统
设计要求:
使用0-5来选择菜单项,其他输入则不起作用。

实现代码:

import java.util.Scanner;
public class Node {
    public class Friend{
        public Friend next;
        private  String Name;
       private String Tel;
       private String Email;
       private String BornAdd;
    public Friend(){}
    public Friend(String Name,String Tel,String Email,String BornAdd){
        this.Name=Name;
        this.Tel=Tel;
        this.Email=Email;
        this.BornAdd=BornAdd;
    }
    public String getName(){
        return Name;
    }
    public void setName(String Name){
        this.Name=Name;
    }
    public void setTel(String Tel){
        this.Tel=Tel;

    }
    public String getTel(){
       return Tel;
    }
        public void setEmail(String Email){
            this.Email=Email;}
        public String getEmail(){
            return Email;}
        public void setBornAdd(String BornAdd){
            this.BornAdd=BornAdd;}
        public String getBornAdd(){
            return BornAdd;}
        public void message(String Name,String Tel,String Email,String BornAdd){
            this.Name=Name;
            this.Tel=Tel;
            this.Email=Email;
            this.BornAdd=BornAdd;}
            public String toString(){
        return this.Name+"\t"+this.Tel+"\t"+this.Email+"\t"+this.BornAdd;

        }
        }
private int size;
    private Friend head;
    {
        this.size=0;
        this.head=null;

    }
  public void insertHead(Friend s) {
      if (this.size == 0)
      {this.head=s;
      }
      else{s.next=this.head;
          this.head=s;
      }
      this.size++;
  }
  public boolean delete(String Name){
        Friend front=this.head;
        if(Name.equals(front.getName())){
            this.head=this.head.next;
            this.size--;
            return true;

        }
        while(!Name.equals(front.next.getName())){
            front=front.next;
        }
        if(front.next!=null){
            front.next=front.next.next;
            this.size--;
            return true;


        }
        return false;
  }
  public Friend select(String Name){
        Friend front=this.head;
        if(Name.equals(front.getName())){
            Friend s=new Friend(Name,front.getTel(),front.getEmail(),front.getBornAdd());
            return s;
        }
        while (front.next!=null){
            front=front.next;
            if(Name.equals(front.getName())){
                Friend s=new Friend(Name,front.getTel(),front.getEmail(),front.getBornAdd());
                return s;
            }
        }
        return null;
  }
  public void display(){
        System.out.println("姓名\t手机号\t邮箱地址\t家庭住址");
        Friend front=this.head;
        while (front!=null&&front.getName()!=null){
           System.out.println(front.toString()) ;
           front=front.next;
      }
        if(this.head==null||this.head.getName()==null){
            System.out.println("无相关信息");
        }
  }
  public static void main(String[] args) {
      Node sm = new Node();
      Scanner in = new Scanner(System.in);
      boolean open = true;
      while (open) {
          printMenu();
          System.out.println("请输入菜单序号进行操作");
          int menu = -1;
          try {
              menu = in.nextInt();
          } catch (Exception e) {
              in = new Scanner(System.in);
          }
          switch (menu) {
              case 0: {
                  System.out.println("创建成功");
              }
              break;
              case 1: {
                  System.out.println("请输入姓名");
                  String Name1 = in.next();

                  System.out.println("手机号,邮箱地址,家庭地址(空格结束,回车确认插入)");
                  try {
                      String Tel = in.next();
                      String Email = in.next();
                      String BornAdd = in.next();
                      Friend news = sm.new Friend(Name1, Tel, Email, BornAdd);
                      sm.insertHead(news);
                  } catch (Exception e) {
                      System.out.println("输入信息有误");
                      in = new Scanner(System.in);
                  }
                  break;
              }
              case 2: {
                  System.out.println("请输入要查询联系人的姓名");
                  String Name2 = in.next();
                  Friend selectS = sm.select(Name2);
                  System.out.println("姓名\t手机号\t邮箱地址\t家庭地址");
                  if (selectS == null) {

                  } else {
                      System.out.println(selectS.toString());
                  }
              }
              break;
              case 3: {
                  System.out.println("请输入要删除联系人的姓名");
                  String Name3 = in.next();
                  if (sm.delete(Name3)) {
                      System.out.println("删除成功");
                  } else {
                      System.out.println("删除失败");
                  }
                  sm.display();
              }
              break;
              case 4: {
                  sm.display();
              }
              break;
              case 5: {
                  System.out.println("系统已退出");
                  System.exit(0);
                  break;
              }
              default:
                  System.out.println("输入错误");
          }
      }
      in.close();
  }
  public static  void printMenu(){
      System.out.println("通讯录管理系统");
      System.out.println("*****************");
      System.out.println("* 0----创建链表   *");
      System.out.println("* 1----插入联系人 *");
      System.out.println("* 2----查找联系人 *");
      System.out.println("* 3----删除联系人 *");
      System.out.println("* 4----输出通讯录 *");
      System.out.println("* 5----退出系统   *");
      System.out.println("*****************");
  }}

第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 
   第二个模块——Menu()的功能是:显示提示选单。 
   第三个模块——Quit()的功能是:退出选单。 
   第四个模块——Create()的功能是:创建新的数据记录。 
   第五个模块——Add()的功能是:增加新的数据记录,并返回选单。 
   第六个模块——Find()的功能是:按要求查询相关的信息,如果找到了,则显示该信息,如果未找到,则提示文件中没有该信息,并返回选单。 
   第七个模块——Alter()[的功能是:修改某条记录的信息,如果未找到要修改的记录,则提示系统中无此记录,并返回选单。 
   第八个模块——Delete()的功能是:删除某条记录,如果未找到要删除的记录,则提示通讯录中没有,并返回选单。 
   第九个模块——List()的功能是:显示所有记录。 一、用链表或者顺序表实现以下系统,完成线性表的建立(至少包括10个结点),以及线性表中信息(结点)的插入、查找、删除、修改、输出等操作,具体的模块要求见上方的“总的模块要求”。建议用“文件”存储数据。 1.通讯录管理系统的设计与实现 (1)通讯者信息包括:编号(char num[10])、姓名(char name[10])、性别(char sex[10])、电话(char phone[20]) (2)除了总的模块要求外,还需统计通讯录中男性人数及女性人数,并求出通讯录中的第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 
   第二个模块——Menu()的功能是:显示提示选单。 
   第三个模块——Quit()的功能是:退出选单。 
   第四个模块——Create()的功能是:创建新的数据记录。 
   第五个模块——Add()的功能是:增加新的数据记录,并返回选单。 
   第六个模块——Find()的功能是:按要求查询相关的信息,如果找到了,则显示该信息,如果未找到,则提示文件中没有该信息,并返回选单。 
   第七个模块——Alter()[的功能是:修改某条记录的信息,如果未找到要修改的记录,则提示系统中无此记录,并返回选单。 
   第八个模块——Delete()的功能是:删除某条记录,如果未找到要删除的记录,则提示通讯录中没有,并返回选单。 
   第九个模块——List()的功能是:显示所有记录。 一、用链表或者顺序表实现以下系统,完成线性表的建立(至少包括10个结点),以及线性表中信息(结点)的插入、查找、删除、修改、输出等操作,具体的模块要求见上方的“总的模块要求”。建议用“文件”存储数据。 1.通讯录管理系统的设计与实现 (1)通讯者信息包括:编号(char num[10])、姓名(char name[10])、性别(char sex[10])、电话(char phone[20]) (2)除了总的模块要求外,还需统计通讯录中男性人数及女性人数,并求出通讯录中的男女比例。 男女比例。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_树先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值