接收对象数组_面向对象编程从小白到王者系列-通讯录终结篇(源码)

本文详细介绍了如何使用C#编写一个简单的通讯录程序,包括动态添加联系人、查询联系人信息、修改联系人信息以及删除联系人。通过for循环和if判断语句,实现对联系人数组的操作,如查找匹配的姓名、替换或删除指定联系人。此外,还展示了如何将这些功能整合到主程序中,让用户能够交互式地使用这些功能。
摘要由CSDN通过智能技术生成

我们一起做的通讯录在上一篇的文章中已经可以动态添加联系人了,但是还不能根据动态添加的联系人进行查询、修改和删除。

今天我们就一起把剩下的功能全部都实现了,因为有了之前写添加的经验,我们接下来写查询、修改和删除联系人时就会很容易了,因为基本上都是使用for循环语句配合if判断语句来实现的,所以你在写添加的时候只要理解了,学习这一篇文章就会很轻松。

先来看一下最终效果,源码在文章最后。

c3ff9ab71569084fc2e9d22cc7a833d0.gif

查询联系人功能

首先我们还是把实现查询的功能放在一个方法中,这里我给它起了一个叫:SelectPerson的名字。

        ///         /// 查询联系人        ///         static void SelectPerson()        {            Console.WriteLine("请输入你要查找的联系人的姓名");            string name = Console.ReadLine();//接收用户输入信息            ContactPerson person;//声明一个联系人对象,用于存储找到的联系人信息            //我们根据输入的姓名使用for循环语句来从数组中,一个一个的找                        for (int i = 0; i < peoples.Length; i++)            {                if (peoples[i] != null)//判断当前索引下ContactPerson对象是否已经有数据,如果不判断会报错                {                    /*如果发现数组中联系人的名字跟输入的人名一致                     * 程序就会执行if里面的语句并把找到的人显示出来                    */                    if (peoples[i].Name == name)                    {                        Console.WriteLine("");                        /*因为我们的peoples是ContactPerson这个类的对象数组                         * 所以里面存储的都是ContactPerson的对象。                         * 因此我们使用循环找到                         */                        person = peoples[i];                        Console.WriteLine("联系人:{0},性别:{1},电话:{2},地址:{3}", person.Name, person.Sex, person.PhoneNumber, person.Address);                    }                                    }                            }            Console.WriteLine("");//为了显示好看间隔一行        }

然后我们在程序入口主函数中调用这个查询方法就可以了,是不是很简单~!

注意:ContactPerson person;并没有使用new关键字进行创建对象,这里只是声明了一下,那么对象是什么时候有的呢?是在下面从数组中找到后把数组里的对象付给了person = peoples[i];后就创建对象了。

static void Main(string[] args)        {            bool Running = true;//用于记录当前系统运行状态,默认启动后自动保持运行。            string input;//声明用于接收用户输入信息的变量            string[,] contacts = new string[10, 10];            do            {                Menu();                input = Console.ReadLine();//接收用户输入信息                switch (input)                {                    case "1":                        AddPerson(); //添加联系人                        ShowPerson();//显示联系人                        break;                    case "2":                        SelectPerson();//查询添加的联系人                        break;                    case "3":                        //后续介绍如何修改                        Console.WriteLine("你学的很快,但是不要着急,我们下一篇一起完成修改功能");                        break;                    case "4":                        //后续介绍如何删除                        Console.WriteLine("你学的很快,但是不要着急,我们下一篇一起完成删除功能");                        break;                    case "exit":                        Running = false; //编程false后退出系统                        break;                    default:                        Console.WriteLine("请按照提示进行输入");                        break;                }            } while (Running); //Running=true时就一直循环        }

这样查询联系的功能就完成了。

修改联系人信息功能

修改联系人信息的功能其实是把查询和添加这两个功能综合一下,要修改某个联系信息就必须先找到这个联系,然后才能修改。

所以第一步就是先查找要修改的联系人,第二步再把新的联系人信息替换掉老的信息就可以了,在替换前要先提示用户把的联系人信息录入到程序里,这就是我们的添加过程。

我们还是同样的把修改联系人的功能放在一个方法中,给它起个名字叫:UpdatePerson

static void UpdatePerson()        {            /*第一步先根据输入找到要修改的联系人信息*/            Console.WriteLine("请输入你要修改的联系人的姓名");            string name = Console.ReadLine();//接收用户输入信息            ContactPerson person=new ContactPerson();//创建一个联系人对象,用于存储新的联系人信息            //我们根据输入的姓名使用for循环语句来从数组中,一个一个的找                        for (int i = 0; i < peoples.Length; i++)            {                if (peoples[i] != null)//判断当前索引下ContactPerson对象是否已经有数据,如果不判断会报错                {                    /*如果发现数组中联系人的名字跟输入的人名一致                     * 程序就会执行if里面的语句,添加联系人新信息的代码                    */                    if (peoples[i].Name == name)                    {                        /*开始接收我们输入的联系人新信息*/                        Console.WriteLine("请输入新的联系人的姓名");                        person.Name = Console.ReadLine();//将用户输入的信息存储到person的Name属性中                        Console.WriteLine("请输入新的联系人的性别");                        person.Sex = Console.ReadLine();                        Console.WriteLine("请输入新的联系人的电话");                        person.PhoneNumber = Console.ReadLine();                        Console.WriteLine("请输入新的联系人的地址");                        person.Address = Console.ReadLine();                        peoples[i] = person;//这样就把原有联系人的信息给替换掉了,这样我们就修改成功了                    }                }            }            Console.WriteLine("");//为了显示好看间隔一行        }

然后我们把UpdatePerson放到我们的程序启动主函数中。

删除现有联系人信息功能

想要删除现有联系人信息,思路也是先要从数组中找到要删除联系人的信息,然后把它清除掉就可以了。

我们编写删除时还是要把删除联系人这个功能的代码放在一起,然后给它起一个名字叫:DeletePerson

        ///         /// 删除已有联系人        ///         static void DeletePerson()        {            //首先我们要先找到要删除的联系人信息            Console.WriteLine("请输入你要删除的联系人的姓名");            string name = Console.ReadLine();//接收用户输入信息            //我们根据输入的姓名使用for循环语句来从数组中,一个一个的找                        for (int i = 0; i < peoples.Length; i++)            {                if (peoples[i] != null)//判断当前索引下ContactPerson对象是否已经有数据,如果不判断会报错                {                    /*如果发现数组中联系人的名字跟输入的人名一致                     * 程序就会执行if里面的语句,添加联系人新信息的代码                    */                    if (peoples[i].Name == name)                    {                        peoples[i] = null;//我们把改数组索引下的元素清楚掉,这样就把联系人信息给删除了                    }                }            }            Console.WriteLine("");//为了显示好看间隔一行        }

完整功能实现

联系人类

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace MailList{    public class ContactPerson    {        ///         /// 联系人姓名        ///         public string Name{ set; get; }        ///         /// 联系人性别        ///         public string Sex { set; get; }        ///         /// 电话号码        ///         public string PhoneNumber { set; get; }        ///         /// 联系地址        ///         public string Address { set; get; }    }}

主程序代码

/* using是应用命名空间的关键字, * using后面跟的就是被引用进来的命名空间*/using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;/* namespace是命名空间关键字, * MailList是我们创建时起的项目名称*/namespace MailList{    class Program //Program指的是类的名字    {        //创建一个用于存储联系人信息的数组,最多只能存储100个联系人        static ContactPerson[] peoples = new ContactPerson[100];        static void Main(string[] args)        {            bool Running = true;//用于记录当前系统运行状态,默认启动后自动保持运行。            string input;//声明用于接收用户输入信息的变量            string[,] contacts = new string[10, 10];            do            {                Menu();                input = Console.ReadLine();//接收用户输入信息                switch (input)                {                    case "0":                        ShowPerson();//显示联系人                        break;                    case "1":                        AddPerson(); //添加联系人                        ShowPerson();//显示联系人                        break;                    case "2":                        SelectPerson();                        break;                    case "3":                        UpdatePerson();//修改现有联系人信息                        break;                    case "4":                        DeletePerson();//删除现有联系人信息                        break;                    case "exit":                        Running = false; //编程false后退出系统                        break;                    default:                        Console.WriteLine("请按照提示进行输入");                        break;                }            } while (Running); //Running=true时就一直循环        }        ///         /// 用于显示在界面上的菜单选项        ///         static void Menu()        {            Console.WriteLine("=========功能菜单=========");            Console.WriteLine("按0显示联系人");            Console.WriteLine("按1添加联系人");            Console.WriteLine("按2查找联系人");            Console.WriteLine("按3修改联系人");            Console.WriteLine("按4删除联系人");            Console.WriteLine("输入exit退出程序");        }        ///         /// 显示现有联系人        ///         static void ShowPerson()        {            for (int i = 0; i < peoples.Length; i++)            {                ContactPerson contact = peoples[i];                /*由于我们是创建的数组长度是100个,不知道当前数组中实际存放了几个联系人                 * 所以需要在这里进行判断一下,只把已经存进去的联系人显示出来。                */                if (contact != null)                {                    Console.WriteLine("");                    Console.WriteLine("联系人:{0},性别:{1},电话:{2},地址:{3}", contact.Name, contact.Sex, contact.PhoneNumber, contact.Address);                                   }            }            Console.WriteLine("");        }        ///         /// 添加联系人        ///         static void AddPerson()        {            ContactPerson person = new ContactPerson();//使用new关键字创建一个联系人对象            Console.WriteLine("请输入你要添加的联系人的姓名");            person.Name = Console.ReadLine();//将用户输入的信息存储到person的Name属性中            Console.WriteLine("请输入你要添加的联系人的性别");            person.Sex = Console.ReadLine();            Console.WriteLine("请输入你要添加的联系人的电话");            person.PhoneNumber = Console.ReadLine();            Console.WriteLine("请输入你要添加的联系人的地址");            person.Address = Console.ReadLine();            for (int i = 0; i < peoples.Length; i++)            {                ContactPerson contact = peoples[i];                /*由于我们是创建的数组长度是100个,而我们每次只能同时输入一个联系人                 * 我们为了每次都把新入的联系人依次存放到数组里,而不覆盖其他的信息                 * 所以要在这里使用if进行判断当前索引下的数组元素有没有值,因为我们用的是                 * 自定义的类对象,所以需要判断一下对象是不是为null(空),如果是就证明当前                 * 索引中没有存任何数据,就把用户输入的信息存到里面                 */                if (contact == null)                {                    peoples[i] = person;                    Console.WriteLine("联系人已添加,当前有" + (i + 1) + "联系人");                    break;                }            }        }        ///         /// 查询联系人        ///         static void SelectPerson()        {            Console.WriteLine("请输入你要查找的联系人的姓名");            string name = Console.ReadLine();//接收用户输入信息            ContactPerson person;//声明一个联系人对象,用于存储找到的联系人信息            //我们根据输入的姓名使用for循环语句来从数组中,一个一个的找                        for (int i = 0; i < peoples.Length; i++)            {                if (peoples[i] != null)//判断当前索引下ContactPerson对象是否已经有数据,如果不判断会报错                {                    /*如果发现数组中联系人的名字跟输入的人名一致                     * 程序就会执行if里面的语句并把找到的人显示出来                    */                    if (peoples[i].Name == name)                    {                        Console.WriteLine("");                        /*因为我们的peoples是ContactPerson这个类的对象数组                         * 所以里面存储的都是ContactPerson的对象。                         * 因此我们使用循环找到                         */                        person = peoples[i];                        Console.WriteLine("联系人:{0},性别:{1},电话:{2},地址:{3}", person.Name, person.Sex, person.PhoneNumber, person.Address);                    }                                    }                            }            Console.WriteLine("");//为了显示好看间隔一行        }        ///         /// 修改联系人        ///         static void UpdatePerson()        {            /*第一步先根据输入找到要修改的联系人信息*/            Console.WriteLine("请输入你要修改的联系人的姓名");            string name = Console.ReadLine();//接收用户输入信息            ContactPerson person=new ContactPerson();//创建一个联系人对象,用于存储找到的联系人信息            //我们根据输入的姓名使用for循环语句来从数组中,一个一个的找                        for (int i = 0; i < peoples.Length; i++)            {                if (peoples[i] != null)//判断当前索引下ContactPerson对象是否已经有数据,如果不判断会报错                {                    /*如果发现数组中联系人的名字跟输入的人名一致                     * 程序就会执行if里面的语句,添加联系人新信息的代码                    */                    if (peoples[i].Name == name)                    {                        /*开始接收我们输入的联系人新信息*/                        Console.WriteLine("请输入新的联系人的姓名");                        person.Name = Console.ReadLine();//将用户输入的信息存储到person的Name属性中                        Console.WriteLine("请输入新的联系人的性别");                        person.Sex = Console.ReadLine();                        Console.WriteLine("请输入新的联系人的电话");                        person.PhoneNumber = Console.ReadLine();                        Console.WriteLine("请输入新的联系人的地址");                        person.Address = Console.ReadLine();                        peoples[i] = person;//这样就把原有联系人的信息给替换掉了,这样我们就修改成功了                    }                }            }            Console.WriteLine("");//为了显示好看间隔一行        }        ///         /// 删除已有联系人        ///         static void DeletePerson()        {            //首先我们要先找到要删除的联系人信息            Console.WriteLine("请输入你要删除的联系人的姓名");            string name = Console.ReadLine();//接收用户输入信息            //我们根据输入的姓名使用for循环语句来从数组中,一个一个的找                        for (int i = 0; i < peoples.Length; i++)            {                if (peoples[i] != null)//判断当前索引下ContactPerson对象是否已经有数据,如果不判断会报错                {                    /*如果发现数组中联系人的名字跟输入的人名一致                     * 程序就会执行if里面的语句,添加联系人新信息的代码                    */                    if (peoples[i].Name == name)                    {                        peoples[i] = null;//我们把改数组索引下的元素清楚掉,这样就把联系人信息给删除了                    }                }            }            Console.WriteLine("");//为了显示好看间隔一行        }    }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值