面向物件程式設計從小白到王者系列-通訊錄終結篇(原始碼)

我們一起做的通訊錄在上一篇的文章中已經可以動態新增聯絡人了,但是還不能根據動態新增的聯絡人進行查詢、修改和刪除。

今天我們就一起把剩下的功能全部都實現了,因為有了之前寫新增的經驗,我們接下來寫查詢、修改和刪除聯絡人時就會很容易了,因為基本上都是使用for迴圈語句配合if判斷語句來實現的,所以你在寫新增的時候只要理解了,學習這一篇文章就會很輕鬆。

先來看一下最終效果,原始碼在文章最後。

面向物件程式設計從小白到王者系列-通訊錄終結篇(原始碼)

查詢聯絡人功能

首先我們還是把實現查詢的功能放在一個方法中,這裡我給它起了一個叫:

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(“”);//為了顯示好看間隔一行 } }}