1. 程式人生 > 實用技巧 >Codeforces Round #696 (Div. 2) 解題報告

Codeforces Round #696 (Div. 2) 解題報告

技術標籤:c++

功能

僅僅在記憶體上實現簡單的通訊錄,不涉及資料庫,程式終止資料不存

  1. 新增聯絡人
  2. 顯示聯絡人
  3. 刪除聯絡人
  4. 查詢聯絡人
  5. 修改聯絡人
  6. 清空聯絡人
  7. 退出通訊錄

主選單預覽圖

對應子函式

void showMenu()//顯示選單
void addPerson(Addressbooks *p)//新增聯絡人
void showPerson(Addressbooks* p)//顯示聯絡人
void deletePerson(Addressbooks* p)//刪除聯絡人
void findPerson(Addressbooks* p)//查詢聯絡人
void changePerson(Addressbooks* p)
//修改聯絡人 void cleanPerson(Addressbooks* p)//清空聯絡人

完整程式碼(一個cpp檔案就可以)

#include <iostream>
#include <string>

using namespace std;

#define MAX 500//聯絡人最大數量

//聯絡人結構體
struct Person
{
    string m_Name="";
    int m_Sex=0;
    int m_Age=0;
    string m_Phone="";
    string m_Addr=""
; }; //通訊錄結構體 struct Addressbooks { //通訊錄中儲存的聯絡人陣列 struct Person personArray[MAX]; //通訊錄中記錄的聯絡人個數 int m_Size; }; void showMenu() { cout << "|1、新增聯絡人|" << endl; cout << "|2、顯示聯絡人|" << endl; cout << "|3、刪除聯絡人|" <<
endl; cout << "|4、查詢聯絡人|" << endl; cout << "|5、修改聯絡人|" << endl; cout << "|6、清空聯絡人|" << endl; cout << "|0、退出通訊錄|" << endl; } void addPerson(Addressbooks *p) { if (p->m_Size >= MAX) { cout << "通訊錄已滿" << endl; return; } else { //新增具體聯絡人 //姓名 string name; cout << "請輸入姓名:" << endl; cin >> name; p->personArray[p->m_Size].m_Name=name; //性別 int sex; cout << "請輸入性別:" << endl; cout << "1--男,2--女" << endl; while (true) { cin >> sex; if (sex == 1 || sex == 2) { p->personArray[p->m_Size].m_Sex=sex; break; } else cout << "輸入有誤,清重新輸入" << endl; } //年齡 int age; cout << "請輸入年齡:" << endl; cin >> age; p->personArray[p->m_Size].m_Age=age; //電話 string phone; cout << "請輸入電話:" << endl; cin >> phone; p->personArray[p->m_Size].m_Phone=phone; //地址 string address; cout << "請輸入地址:" << endl; cin >> address; p->personArray[p->m_Size].m_Addr=address; p->m_Size++; system("cls"); cout << "新增成功" << endl; } } void showPerson(Addressbooks* p) { if (p->m_Size == 0) { system("cls"); cout << "列表為空,請新增聯絡人" << endl; } else { for (int i = 0; i < p->m_Size; i++) { cout << "姓名 " << p->personArray[i].m_Name << endl; cout << "性別 " << (p->personArray[i].m_Sex==1?"男":"女") << endl; cout << "年齡 " << p->personArray[i].m_Age << endl; cout << "電話 " << p->personArray[i].m_Phone << endl; cout << "地址 " << p->personArray[i].m_Addr << endl; } } system("pause"); system("cls"); } void deletePerson(Addressbooks* p) { string name; cout << "請輸入需要刪除的聯絡人姓名" << endl; cin >> name; for (int i = 0; i <= p->m_Size; i++) { if (name == p->personArray[i].m_Name) { for (int j = i; j < p->m_Size; j++) p->personArray[j] = p->personArray[j + 1]; cout << "刪除成功" << endl; p->m_Size--; break; } else { cout << "查無此人,請確認後再執行刪除操作" << endl; } } } void cleanPerson(Addressbooks* p) { int ifOrElse;//存放是否確定的變數值 cout << "確認清空聯絡人?" << endl; cout << "1--是,2--否" << endl; cin >> ifOrElse; if (ifOrElse == 1) p->m_Size = 0; system("pause"); system("cls"); } void changePerson(Addressbooks* p) { //具體聯絡人 if (p->m_Size == 0) { system("pause"); system("cls"); cout << "列表為空,請新增聯絡人" << endl; } else { int i = 0; string name; cout << "請輸入需要修改的姓名:" << endl; cin >> name; for (; i < p->m_Size; i++) { if (name == p->personArray[i].m_Name) { cout << "查詢成功" << endl; //姓名 cout << "請輸入姓名:" << endl; cin >> name; p->personArray[i].m_Name = name; //性別 int sex; cout << "請輸入性別:" << endl; cout << "1--男,2--女" << endl; while (true) { cin >> sex; if (sex == 1 || sex == 2) { p->personArray[i].m_Sex = sex; break; } else cout << "輸入有誤,清重新輸入" << endl; } //年齡 int age; cout << "請輸入年齡:" << endl; cin >> age; p->personArray[i].m_Age = age; //電話 string phone; cout << "請輸入電話:" << endl; cin >> phone; p->personArray[i].m_Phone = phone; //地址 string address; cout << "請輸入地址:" << endl; cin >> address; p->personArray[i].m_Addr = address; system("pause"); system("cls"); cout << "修改成功" << endl; break; } } if (i >= p->m_Size) { system("pause"); system("cls"); cout << "查無此人,請確認後再執行修改操作" << endl; } } } void findPerson(Addressbooks* p) { if (p->m_Size == 0) { system("cls"); cout << "列表為空,請新增聯絡人" << endl; } else { cout << "請輸入被查詢人姓名" << endl; string name; cin >> name; for (int i = 0; i < p->m_Size; i++) { if (name == p->personArray[i].m_Name) { cout << "姓名 " << p->personArray[i].m_Name << endl; cout << "性別 " << (p->personArray[i].m_Sex == 1 ? "男" : "女") << endl; cout << "年齡 " << p->personArray[i].m_Age << endl; cout << "電話 " << p->personArray[i].m_Phone << endl; cout << "地址 " << p->personArray[i].m_Addr << endl; break; } if(i>= p->m_Size) { cout << "查無此人,請重新確認後查詢" << endl; } } } system("pause"); system("cls"); } int main() { Addressbooks abs;//建立結構體變數 abs.m_Size = 0;//設定通訊錄初始數量 string name;//存放改刪的人名 int select = 0;//建立使用者選擇變數 while (1) { showMenu(); cin >> select; switch (select) { case 1://addPerson(&abs); break; case 2://顯示 showPerson(&abs); break; case 3://deletePerson(&abs); break; case 4://findPerson(&abs); break; case 5://changePerson(&abs); break; case 6://清空 cleanPerson(&abs); break; case 0://程式退出 cout << "歡迎下次使用!" << endl; system("pause"); return 0; default: break; } } }