NO.1 通訊錄管理系統+源代碼(C++)

来源:https://www.cnblogs.com/ChenYuansong/archive/2022/08/07/16559322.html
-Advertisement-
Play Games

一、菜單 功能描述:顯示簡單的菜單,供用戶選擇操作 實現步驟:直接cout輸出 二、退出功能 功能描述:根據用戶不同的操作代碼選擇,進入不同的功能,我們使用switch分支結構進行搭建 實現步驟:用while(ture)迴圈包涵switch, case 0:時用return 0 ,退出迴圈,即退出通 ...


 

一、菜單

  功能描述:顯示簡單的菜單,供用戶選擇操作

  實現步驟:直接cout輸出

二、退出功能

  功能描述:根據用戶不同的操作代碼選擇,進入不同的功能,我們使用switch分支結構進行搭建

  實現步驟:用while(ture)迴圈包涵switch, case 0:時用return 0 ,退出迴圈,即退出通訊錄。

三、添加聯繫人

  功能描述:實現添加聯繫人功能,聯繫人上限為1000人,聯繫信息包括(姓名、性別、年齡、聯繫電話、家庭住址)

  實現步驟:

    • 設計聯繫人結構體
    • 設計通訊錄結構體
    • main函數中創建通訊錄
    • 封裝添加聯繫人函數

四、顯示聯繫人

  功能描述:顯示通信錄中所有人員信息

  實現步驟:判斷通訊錄中聯繫人是否為0,不為0則顯示聯繫人所有信息

五、刪除聯繫人

  功能描述:按照姓名刪除指定聯繫人

  實現步驟:封裝檢測聯繫人是否存在函數,封裝刪除聯繫人函數

六、查找聯繫人

  功能描述:按照姓名查找聯繫人

  實現步驟:判斷是否存在此人,存在則輸出信息

七、修改聯繫人

  功能描述:按照姓名重新修改聯繫人信息

  實現步驟:判斷是否存在此人,存在則進行修改操作

八、清空聯繫人

  功能描述:清空通訊錄中所有信息

  實現步驟:將通信錄中聯繫人數量標誌位置為0,做邏輯清空。

 

九、完整代碼:(vs coed 編寫)

  1 #include <iostream>
  2 #include <string>
  3 #define Max 1000
  4 using namespace std;
  5 
  6 //通訊錄菜單界面
  7 void ShowMenu(){
  8     cout << "**************************" << endl;
  9     cout << "通訊錄操作編號" << endl << endl;
 10     cout << "    1 :  " << "添加聯繫人" << endl;
 11     cout << "    2 :  " << "顯示聯繫人" << endl;
 12     cout << "    3 :  " << "刪除聯繫人" << endl;
 13     cout << "    4 :  " << "查找聯繫人" << endl;
 14     cout << "    5 :  " << "修改聯繫人" << endl;
 15     cout << "    6 :  " << "清空聯繫人" << endl;
 16     cout << "    0 :  " << "退出通訊錄" << endl;
 17     cout << "**************************" << endl;
 18 
 19 }
 20 
 21 //設計聯繫人結構體
 22 struct Person{
 23     //姓名
 24     string m_Name;
 25     //性別
 26     int m_Sex;
 27     //年齡
 28     int m_Age;
 29     //電話
 30     string m_Phone;
 31     //住址
 32     string m_Addr;  
 33 };
 34 
 35 //設計通訊錄結構體
 36 struct Addressbooks{
 37     //保存聯繫人的數組
 38     struct Person personArray[Max];
 39     //已保存聯繫人個數
 40     int m_Size;
 41 };
 42 
 43 //添加聯繫人函數
 44 void addPerson(Addressbooks *abc){
 45     if(abc->m_Size > 1000){
 46         cout << "通訊錄已滿,無法再添加!" << endl;
 47     }else{
 48         //姓名
 49         string name;
 50         cout << "請輸入姓名" << endl;
 51         cin >> name;
 52         abc->personArray[abc->m_Size].m_Name = name; 
 53 
 54         //性別
 55         cout << "請輸入性別:";
 56         cout << " 1--男" << "  ";
 57         cout << "2--女" << endl;
 58         int sex = 0;
 59         while(true){
 60             cin >> sex;
 61             if (sex == 1 || sex == 2)
 62             {
 63                 abc->personArray[abc->m_Size].m_Sex = sex;
 64                 break;
 65             }else{
 66                 cout << "輸入有誤,請重新輸入:" << endl;
 67             }
 68         }
 69 
 70         //年齡
 71         cout << "請輸入年齡:" << endl;
 72         int age;
 73         cin >> age;
 74         abc->personArray[abc->m_Size].m_Age = age;
 75 
 76         //聯繫電話
 77         cout << "請輸入聯繫電話:" << endl;
 78         string phone;
 79         cin >> phone;
 80         abc->personArray[abc->m_Size].m_Phone = phone;
 81 
 82         //家庭住址
 83         cout << "請輸入家庭住址:" << endl;
 84         string address;
 85         cin >> address;
 86         abc->personArray[abc->m_Size].m_Addr = address;
 87 
 88         //更新通訊錄人數
 89         abc->m_Size++;
 90 
 91         cout << "添加成功!" << endl;
 92         
 93         //mac系統下無法使用
 94         system("pause");//按任意鍵繼續
 95         system("cls");//清屏工作
 96 
 97     }
 98 }
 99 
100 //顯示聯繫人函數
101 void showPerson(Addressbooks *abc){
102     if(abc->m_Size == 0){
103         cout << "通訊錄中無聯繫人!" << endl;
104     }else{
105         for(int i = 0;i < abc->m_Size;i++){
106             cout << i+1 << ". ";//顯示聯繫人編號
107             cout << "姓名:" << abc->personArray[i].m_Name << "\t";
108             cout << "性別:" << (abc->personArray[i].m_Sex == 1 ? "":"")<< "\t";
109             cout << "年齡:" << abc->personArray[i].m_Age << "\t";
110             cout << "電話:" << abc->personArray[i].m_Phone << "\t  ";
111             cout << "家庭住址:" << abc->personArray[i].m_Addr << "\t" << endl;
112 
113         }
114     }
115 
116     system("pause");//按任意鍵繼續
117     system("cls");//清屏工作
118 }
119 
120 //檢測聯繫人是存在函數
121 int isExist(Addressbooks *abc,string name){
122     for(int i = 0;i<abc->m_Size;i++){
123         if(abc->personArray[i].m_Name == name){
124             return i;//找到了返回數組下標
125         }else{
126 
127         }
128     }
129     return -1;//未找到
130 }
131 
132 //刪除指定聯繫人函數
133 void deletePerson(Addressbooks *abc){
134     cout << "請輸入您要刪除的聯繫人" << endl;
135     string name;
136     cin >> name;
137     int ret = isExist(abc,name);//調用檢測聯繫人是否存在函數
138     if(ret != -1){
139         //查到此人,進行刪除
140         for(int i = ret;i<abc->m_Size;i++){
141             //數據前移覆蓋
142             abc->personArray[i] = abc->personArray[i+1];
143         }
144             abc->m_Size--;
145             cout << "刪除成功!" << endl;
146     }else{
147         cout << "查無此人!" << endl;
148     }
149     //清屏
150     system("pause");
151     system("cls");
152 }
153 
154 //查找指定聯繫人信息
155 void findPerson(Addressbooks *abc){
156     cout << "請輸入您要查找的聯繫人姓名:" << endl;
157     string name;
158     cin >> name;
159     //判斷聯繫人是否存在通訊錄中
160     int ret = isExist(abc,name);
161     if(ret != -1){
162          cout << "姓名:" << abc->personArray[ret].m_Name << "\t";
163          cout << "性別:" << (abc->personArray[ret].m_Sex == 1 ? "":"") << "\t\t";
164          cout << "年齡:" << abc->personArray[ret].m_Age << "\t";
165          cout << "電話:" << abc->personArray[ret].m_Phone << "\t   ";
166          cout << "家庭住址:" << abc->personArray[ret].m_Addr << "\t" << endl;
167     }else{
168         cout << "查無此人!" << endl;
169     }
170 
171     //清屏
172     system("pause");
173     system("cls");
174 }
175 
176 //修改指定聯繫人信息
177 void modifyPerson(Addressbooks *abc){
178     cout << "請輸入您要修改的聯繫人姓名:" << endl;
179     string name;
180     cin >> name;
181     int ret = isExist(abc,name);
182     if(ret != -1){//修改信息
183         //姓名
184         string name;
185         cout << "請輸入姓名" << endl;
186         cin >> name;
187         abc->personArray[ret].m_Name = name; 
188 
189         //性別
190         cout << "請輸入性別:";
191         cout << " 1--男" << "  ";
192         cout << "2--女" << endl;
193         int sex = 0;
194         while(true){
195             cin >> sex;
196             if (sex == 1 || sex == 2) 
197             {
198                 abc->personArray[ret].m_Sex = sex;
199                 break;
200             }else{
201                 cout << "輸入有誤,請重新輸入:" << endl;
202             }
203         }
204 
205         //年齡
206         cout << "請輸入年齡:" << endl;
207         int age;
208         cin >> age;
209         abc->personArray[ret].m_Age = age;
210 
211         //聯繫電話
212         cout << "請輸入聯繫電話:" << endl;
213         string phone;
214         cin >> phone;
215         abc->personArray[ret].m_Phone = phone;
216 
217         //家庭住址
218         cout << "請輸入家庭住址:" << endl;
219         string address;
220         cin >> address;
221         abc->personArray[ret].m_Addr = address;
222     }else{
223         cout << "查無此人!" << endl;
224     }
225     cout << "您修改成功!" << endl;
226     //清屏
227     system("pause");
228     system("cls");
229 }
230 
231 //清空所有聯繫人
232 void clearPerson(Addressbooks *abc){
233     cout << "您確定要清空所有聯繫人嗎?" << endl;
234     cout << "1--確定   " << "2--取消" << endl;
235     int a;
236     while (true){
237         cin >> a;
238         if(a == 1){
239             abc->m_Size = 0;
240             cout << "通訊錄已清空!" << endl;
241             system("pause");
242             system("cls");
243             break;
244         }else if(a == 2){
245             cout << "已取消清空通訊錄!" << endl;
246             break;
247         }else{
248             cout << "您的輸入有誤!" << "請選擇 1 or 2 輸入" << endl;
249         }   
250     } 
251 
252 }
253 
254 
255 
256 int main(){
257 
258     //創建通訊錄結構體變數
259     Addressbooks abc;
260 
261     //初始化通訊錄當前人員個數
262     abc.m_Size = 0;
263 
264     //用於保存用戶輸入
265     int select = 0;
266 
267     while(true){
268          //菜單調用
269         ShowMenu();
270 
271         //用戶選擇 
272         cin >> select;//用戶輸入
273         switch (select)
274             {
275             case 1://添加聯繫人
276                 addPerson(&abc);//調用添加聯繫人函數
277                 break;
278             case 2://顯示聯繫人
279                 showPerson(&abc);
280                 break;
281             case 3://刪除聯繫人 
282                 deletePerson(&abc);    
283                 break;
284             case 4://查找聯繫人
285                 findPerson(&abc);
286                 break;
287             case 5://修改聯繫人
288                 modifyPerson(&abc);
289                 break;
290             case 6://清空聯繫人
291                 clearPerson(&abc);
292                 break;
293             case 0://退出通訊錄
294                 cout << "歡迎下次使用。" << endl;
295                 return 0;
296                 break;
297             default:
298                 break;
299         }
300 
301     }
302     //清屏
303     system("pause");
304     return 0;
305 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • vue3-admin-template 項目地址:vue3-admin-template 能拿來直接開發項目,不需要考慮格式化配置、打包編譯優化等等,難道它不香嗎?~~ 此項目是集成vue3 + vite + Element-Plus + Pinia + vue-router的後臺管理系統的模板工程 ...
  • 1 配置全局組件 當一個組件使用頻率非常高的時候,可以考慮設置其為全局組件,方便其他地方調用。 案例 我這兒封裝一個Card組件想在任何地方去使用: <template> <div class="card"> <div class="card-header"> <div>主標題</div> <div ...
  • 前言 由於業務需求,需要有一個圖片標記功能,其實就是對圖片畫框畫線做標記,類似微信的圖片編輯 但是需要存下標記圖及其標記的具體數據,。功能其實很簡單,但剛開始的時候也是費了一些功夫的。我將原項目中該功能抽離出來單獨寫了一個demo,作為記錄,同時你們在開發過程中有類似需求的話也可以參考一下該思路,其 ...
  • 原文鏈接:20 多個好用的 Vue 組件庫 在本文中,將分享一些常見的 vue.js 組件。 Tables / Data Grids Vue Tables-2 地址:https://github.com/matfish2/vue-tables-2 Vue Tables 2 旨在為開發者提供一個功能齊 ...
  • HashMap概要 代碼如果沒有特定說明,為JDK 1.8 HashMap用來存放鍵值對,是Map介面的實現,是非線程安全的 可以存儲key和value為null的值,但key為null的節點只能有一個 哈希值的計算:在hashCode的基礎上添加擾動函數,使元素分佈更加隨機 哈希衝突:通過鏈表存儲 ...
  • 一、Apach POI處理Excel的方式: 傳統Excel操作或者解析都是利用Apach POI進行操作,POI中處理Excel有以下幾種方式: 1、HSSFWorkbook: HSSFWorkbook用來處理.xls尾碼的Excel,即適用於Excel2003以前(包括2003)的版本。因為其最 ...
  • 精華筆記: 什麼是類?什麼是對象? 現實生活中是由很多很多對象組成的,基於對象抽出了類 對象:軟體中真實存在的單個個體/東西 類:類型/類別,代表一類個體 類是對象的模板/模子,對象是類的具體的實例 類中可以包含: 對象的屬性/特征 成員變數 對象的行為/動作/功能 方法 一個類可以創建多個對象 如 ...
  • doc或docx(word)或image類型文件批量轉PDF腳本 1.實際生產環境中遇到文件展示只能適配PDF版本的文件,奈何一萬個文件有七千個都是word或者image類型的,由此搞個腳本批量轉換下上傳至OSS,為前端提供數據支撐。 2.環境準備,這裡使用的是aspose-words-18.6-j ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...