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

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

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

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

查询联系人功能

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

        /// <summary>
        /// 查询联系人
        /// </summary>
        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

        /// <summary>
        /// 删除已有联系人
        /// </summary>
        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
    {
        /// <summary>
        /// 联系人姓名
        /// </summary>
        public string Name{ set; get; }
        /// <summary>
        /// 联系人性别
        /// </summary>
        public string Sex { set; get; }
        /// <summary>
        /// 电话号码
        /// </summary>
        public string PhoneNumber { set; get; }
        /// <summary>
        /// 联系地址
        /// </summary>
        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时就一直循环
        }

        /// <summary>
        /// 用于显示在界面上的菜单选项
        /// </summary>
        static void Menu()
        {
            Console.WriteLine("=========功能菜单=========");
            Console.WriteLine("按0显示联系人");
            Console.WriteLine("按1添加联系人");
            Console.WriteLine("按2查找联系人");
            Console.WriteLine("按3修改联系人");
            Console.WriteLine("按4删除联系人");
            Console.WriteLine("输入exit退出程序");
        }

        /// <summary>
        /// 显示现有联系人
        /// </summary>
        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("");
        }

        /// <summary>
        /// 添加联系人
        /// </summary>
        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;
                }
            }

        }

        /// <summary>
        /// 查询联系人
        /// </summary>
        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("");//为了显示好看间隔一行
        }

        /// <summary>
        /// 修改联系人
        /// </summary>
        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("");//为了显示好看间隔一行
        }

        /// <summary>
        /// 删除已有联系人
        /// </summary>
        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("");//为了显示好看间隔一行
        }
    }
}

通讯录全功能源码下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JavaScript是一种流行的脚本语言,常用于开发网页应用。要实现一个伪王者荣耀游戏源码,我们需要运用JavaScript的基本语法和一些Web开发技术。 首先,我们需要创建一个HTML页面,用于展示游戏的界面和玩家的操作。可以使用HTML的canvas元素来绘制游戏场景和角色。通过JavaScript,我们可以使用canvas的API对场景和角色进行控制和绘制。 其次,我们需要设计游戏的角色和规则。伪王者荣耀源码中可能涉及到英雄的选择、技能的释放、游戏得分等方面。我们可以使用JavaScript的面向对象编程来创建角色类和技能类,并定义相应的属性和方法。通过监听玩家的操作事件,我们可以实现角色的移动、技能的释放等效果。 另外,我们需要处理游戏的逻辑和交互。通过JavaScript,我们可以实现游戏的循环,不断更新游戏的状态和检测碰撞。可以使用定时器和循环来控制游戏的进行,并通过监听键盘事件或者鼠标事件来响应玩家的操作。 最后,我们需要美化游戏的界面和优化性能。可以使用CSS来设置页面元素的样式和布局,使游戏界面更加美观。通过优化JavaScript代码,可以提高游戏的性能和流畅度。 总之,实现伪王者荣耀的游戏源码涉及到HTML、JavaScript和CSS等技术的综合运用。通过合理的设计和编程,我们可以实现一个基于Web的伪王者荣耀游戏,提供给玩家一个与真实游戏相似的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

凯杨1319

您的打赏是我持续创作的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值