简单通讯录管理系统(Java)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、题目:

    任务在之前的练习任务中,我们已经实现了通讯录的增删改查等基本功能,主要实现一个通讯录的菜单管理功能。

二、编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中实现通讯录菜单管理功能,具体要求如下:

  • 在 MenuPhone.java 中有 5 个选项,实现这几个选项的功能;

  • 获取键盘输入的值,如果为 1、2、3、4,分别调用 PhoneManage.java 的方法实现这四个功能,之后返回主菜单,也就是将通讯录信息管理页面的内容重新打印输出;

  • 如果为 5 ,退出程序,并输出:“退出成功!”;

  • 如果输入的是其它值时,输出:“选择错误!”,返回主菜单。

注意:PhoneMange 类并没有实例化 Scannner 对象,某些方法需要用到该对象的,请在调用该方法时传过去。

三、文件位置(路径)

提示:Text1为Java项目,step5为包

四、代码:

1.MenuPhone.java文件(主类)

package step5;
import java.util.Scanner;
//此类为整个通讯录的总控制,负责启动
public class MenuPhone {
 public static void main(String[] args) {
     User[] users = new User[50]; // 创建一个对象数组,用于存放所有的通讯录信息
     // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
     /********** Begin **********/
     Scanner sc = new Scanner(System.in);
     // 实例化 PhoneManage 对象
     PhoneManage phoneManage = new PhoneManage();
     while (true) { //创建一个循环用于重复执行此循环的操作
         System.out.println("通讯录信息管理页面");
         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("**********");
         System.out.println("请输入选择的操作:");
         // 获取键盘输入
         String str = sc.next();
         if ("1".equals(str)) {
             // 新增用户
             phoneManage.addPhone(users,sc);
         } else if ("2".equals(str)) {
             // 查询所有用户信息
             phoneManage.showPhone(users);
         } else if ("3".equals(str)) {
             // 删除用户信息
             phoneManage.deletePhone(users,sc);
         } else if ("4".equals(str)) {
             // 修改用户信息
             phoneManage.changePhone(users,sc);
         } else if ("5".equals(str)) {
             // 退出操作
             System.out.println("退出成功!");
             break;
         } else {
             System.out.println("选择错误!");
         }
     }
     /********** End **********/
 }
}

2.User.java(属性类)

package step5;
//请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
//定义 User 公开类
public class User {
 // 用户的两个私有属性:姓名、电话号码
 private String name; // 用户姓名
 private String tel; // 用户电话号码

 // 无参构造
 public User() {
 }
 // 有参构造
 public User(String name, String tel) {
     this.name = name;
     this.tel = tel;
 }

 // 设置和获取用户属性信息
 public String getName() {
     return name;
 }

 public void setName(String name) {
     this.name = name;
 }

 public String getTel() {
     return tel;
 }

 public void setTel(String tel) {
     this.tel = tel;
 }


}
/********** End **********/

3.PhoneManage.java(方法类)

package step5;

import java.util.Scanner;

public class PhoneManage {
    /**
     * 参数 users
     * 新增用户信息
     */
    public void addPhone(User[] users,Scanner sc) {
        // 将键盘输入的用户信息存入用户对象中
        System.out.println("请输入姓名:");
        String name = sc.next();
        System.out.println("请输入手机号:");
        String tel = sc.next();
        User u = new User(name,tel);
        // 将对象放入对象数组中
        for (int i = 0; i < users.length; i++) {
            if (users[i] == null) {
                users[i] = u;
                break;
            }
        }
    }



    /**
     * 参数 users
     * 查询通讯录列表
     */
    public void showPhone(User[] users){
        for (int i = 0; i < users.length; i++) {
            if (users[i] != null) {
                System.out.println(users[i].getName() + "\t" + users[i].getTel());
            }
        }
    }



    /**
     * 参数 users
     * 删除通讯录用户信息
     */
    public void deletePhone(User[] users,Scanner sc){
        // 获取键盘输入的用户名
        System.out.println("请输入姓名:");
        String delname = sc.next(); // 在控制台输入
        // 根据用户名查找该用户,最后将该用户从用户对象数组中删除
        for (int i = 0; i < users.length; i++) {
            User y = users[i]; // 把所有 users[i] 赋值给 y
            if (y != null && delname.equals(y.getName())) {
                users[i] = null;
                System.out.println("删除成功!");
                break;
            }
        }
    }


    public void changePhone(User[] users,Scanner sc) {
        // 获取要修改用户的名称
        System.out.println("请输入你要修改用户的名称:");
        String editname = sc.next();
        // 在用户对象数组中找到对应的用户信息
        for (User z : users) {
            if (z != null && editname.equals(z.getName())) {
                // 将该用户的电话修改为键盘输入的新电话号码
                System.out.println("请输入新电话:");
                z.setTel(sc.next());
                System.out.println("修改成功!");
                break;
            }
        }
    }

}

五、效果截图


 

 六、总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了通讯录的增删改查等基本功能,主要实现一个通讯录的菜单管理功能。

实现了以下要求说明的功能: 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文件中只保存了图片的路径。
对不起,作为AI语言模型,我不会唱歌,但是我可以为您提供一个简单通讯录管理系统java代码: import java.util.Scanner; public class ContactList { public static void main(String[] args) { Contact[] contacts = new Contact[10]; //创建一个包含10个联系人的数组 Scanner input = new Scanner(System.in); int choice; do { System.out.println("请选择操作:"); System.out.println("1.添加联系人"); System.out.println("2.查找联系人"); System.out.println("3.删除联系人"); System.out.println("4.显示所有联系人"); System.out.println("0.退出程序"); choice = input.nextInt(); switch(choice) { case 1: addContact(contacts); break; case 2: searchContact(contacts); break; case 3: deleteContact(contacts); break; case 4: displayContacts(contacts); break; case 0: System.out.println("程序已退出。"); break; default: System.out.println("输入错误,请重新输入。"); } } while(choice != 0); } //添加联系人 public static void addContact(Contact[] contacts) { Scanner input = new Scanner(System.in); System.out.println("请输入联系人姓名:"); String name = input.nextLine(); System.out.println("请输入联系人电话号码:"); String phone = input.nextLine(); System.out.println("请输入联系人电子邮件地址:"); String email = input.nextLine(); Contact contact = new Contact(name, phone, email); for(int i = 0; i < contacts.length; i++) { if(contacts[i] == null) { contacts[i] = contact; System.out.println("联系人已添加。"); break; } } } //查找联系人 public static void searchContact(Contact[] contacts) { Scanner input = new Scanner(System.in); System.out.println("请输入要查找的联系人姓名:"); String name = input.nextLine(); boolean found = false; for(int i = 0; i < contacts.length; i++) { if(contacts[i] != null && contacts[i].getName().equals(name)) { System.out.println(contacts[i]); found = true; break; } } if(!found) { System.out.println("未找到该联系人。"); } } //删除联系人 public static void deleteContact(Contact[] contacts) { Scanner input = new Scanner(System.in); System.out.println("请输入要删除的联系人姓名:"); String name = input.nextLine(); boolean deleted = false; for(int i = 0; i < contacts.length; i++) { if(contacts[i] != null && contacts[i].getName().equals(name)) { contacts[i] = null; System.out.println("联系人已删除。"); deleted = true; break; } } if(!deleted) { System.out.println("未找到该联系人。"); } } //显示所有联系人 public static void displayContacts(Contact[] contacts) { for(int i = 0; i < contacts.length; i++) { if(contacts[i] != null) { System.out.println(contacts[i]); } } } } class Contact { private String name; private String phone; private String email; public Contact(String name, String phone, String email) { this.name = name; this.phone = phone; this.email = email; } public String getName() { return name; } @Override public String toString() { return "姓名:" + name + ",电话号码:" + phone + ",电子邮件地址:" + email; } }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

酷酷滴Q

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

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

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

打赏作者

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

抵扣说明:

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

余额充值