我们一起做的通讯录在上一篇的文章中已经可以动态添加联系人了,但是还不能根据动态添加的联系人进行查询、修改和删除。
今天我们就一起把剩下的功能全部都实现了,因为有了之前写添加的经验,我们接下来写查询、修改和删除联系人时就会很容易了,因为基本上都是使用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("");//为了显示好看间隔一行
}
}
}