C++實(shí)現(xiàn)簡(jiǎn)易的通訊錄管理系統(tǒng)
本文實(shí)例為大家分享了C++實(shí)現(xiàn)簡(jiǎn)易通訊錄管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
1. 效果圖
2. 需要的知識(shí)
C++基礎(chǔ)知識(shí)(包括變量,運(yùn)算符,順序,分支,循環(huán))
數(shù)組
函數(shù)
指針
結(jié)構(gòu)體
3. 源碼
#include <iostream> using namespace std; #define MAX 1000 ?//最大聯(lián)系人個(gè)數(shù)? struct Person { ?? ?string name; ?? ?string sex; ?? ?int age; ?? ?string tell; ?? ?string addr; }; struct Books { ?? ?struct Person per[MAX]; ?? ?int N;//通訊錄人數(shù) }; //函數(shù)聲明 void initBooks(Books *books); void showMenu(); void addPerson(Books *books); void showPerson(Books *books); int ?findPerson(Books *books,string name); void findPerson(Books *books); void deletePerson(Books *books); void modifyPerson(Books *books); void clearPerson(Books *books); //初始化通訊錄,向其中加入聯(lián)系人 void initBooks(Books *books) { ?? ?books->per[books->N].name = "張三"; ?? ?books->per[books->N].sex = "男"; ?? ?books->per[books->N].age = 22; ?? ?books->per[books->N].tell = "123456789"; ?? ?books->per[books->N].addr = "成都"; ?? ?books->N++; ?? ?books->per[books->N].name = "李四"; ?? ?books->per[books->N].sex = "男"; ?? ?books->per[books->N].age = 23; ?? ?books->per[books->N].tell = "123456789"; ?? ?books->per[books->N].addr = "深圳"; ?? ?books->N++; ?? ?books->per[books->N].name = "王五"; ?? ?books->per[books->N].sex = "男"; ?? ?books->per[books->N].age = 25; ?? ?books->per[books->N].tell = "123456789"; ?? ?books->per[books->N].addr = "北京"; ?? ?books->N++; } //菜單 void showMenu() { ?? ?system("color a"); ?? ?cout<<"------------"<<endl; ?? ?cout<<"1.添加聯(lián)系人"<<endl; ?? ?cout<<"2.顯示聯(lián)系人"<<endl; ?? ?cout<<"3.刪除聯(lián)系人"<<endl; ?? ?cout<<"4.查找聯(lián)系人"<<endl; ?? ?cout<<"5.修改聯(lián)系人"<<endl; ?? ?cout<<"6.清空聯(lián)系人"<<endl; ?? ?cout<<"0.退出?? ? ? "<<endl; ?? ?cout<<"------------"<<endl; } //添加 void addPerson(Books *books) { ?? ?if(books->N == MAX) { ?? ??? ?cout<<"通訊錄已滿(mǎn),無(wú)法添加\n"; ?? ??? ?return; ?? ?} else { ?? ??? ?string name; ?? ??? ?string sex; ?? ??? ?int age; ?? ??? ?string tell; ?? ??? ?string addr; ?? ??? ?cout<<"請(qǐng)輸入姓名,性別,年齡,電話(huà)以及地址:"; ?? ??? ?cin>>name>>sex>>age>>tell>>addr; ?? ??? ?books->per[books->N].name = name; ?? ??? ?books->per[books->N].sex = sex; ?? ??? ?books->per[books->N].age = age; ?? ??? ?books->per[books->N].tell = tell; ?? ??? ?books->per[books->N].addr = addr; ?? ??? ?books->N++; ?? ??? ?cout<<"添加成功\n"; ?? ?} } //輸出 void showPerson(Books *books) { ?? ?if(books->N == 0) { ?? ??? ?cout<<"當(dāng)前記錄為空\(chéng)n"; ?? ?} else { ?? ??? ?cout<<"姓名\t性別\t年齡\t電話(huà)\t\t地址\n"; ?? ??? ?for(int i=0; i<books->N; i++) { ?? ??? ??? ?cout<<books->per[i].name<<"\t" ?? ??? ??? ? ? ?<<books->per[i].sex<<"\t" ?? ??? ??? ? ? ?<<books->per[i].age<<"\t" ?? ??? ??? ? ? ?<<books->per[i].tell<<"\t" ?? ??? ??? ? ? ?<<books->per[i].addr<<"\n"; ?? ??? ?} ?? ?} } //查詢(xún)并返回是否存在 int findPerson(Books *books,string name) { ?? ?for(int i=0; i<books->N; i++) { ?? ??? ?if(books->per[i].name== name) { ?? ??? ??? ?return i; ?? ??? ?} ?? ?} ?? ?return -1; } //查詢(xún)并輸出 void findPerson(Books *books) { ?? ?cout<<"請(qǐng)輸入你要查找的聯(lián)系人的姓名:"; ?? ?string name; ?? ?cin>>name; ?? ?int ret = findPerson(books,name); ?? ?if(ret!=-1) { ?? ??? ?cout<<books->per[ret].name<<"\t" ?? ??? ? ? ?<<books->per[ret].sex<<"\t" ?? ??? ? ? ?<<books->per[ret].age<<"\t" ?? ??? ? ? ?<<books->per[ret].tell<<"\t" ?? ??? ? ? ?<<books->per[ret].addr<<"\n"; ?? ?} else { ?? ??? ?cout<<"查無(wú)此人\n"; ?? ?} } //刪除 void deletePerson(Books *books) { ?? ?cout<<"請(qǐng)輸入你要?jiǎng)h除的聯(lián)系人的姓名:"; ?? ?string name; ?? ?cin>>name; ?? ?int ret = findPerson(books, name); ?? ?if(ret!=-1) { ?? ??? ?for(int i=ret; i<books->N; i++) { ?? ??? ??? ?if(books->per[i].name== name) { ?? ??? ??? ??? ?books->per[i] = books->per[i+1]; ?? ??? ??? ?} ?? ??? ?} ?? ??? ?books->N--; ?? ?} else { ?? ??? ?cout<<"查無(wú)此人\n"; ?? ?} } //修改 void modifyPerson(Books *books) { ?? ?cout<<"請(qǐng)輸入你要修改的聯(lián)系人的姓名:"; ?? ?string name; ?? ?cin>>name; ?? ?int ret = findPerson(books, name); ?? ?if(ret!=-1) { ?? ??? ?string name; ?? ??? ?string sex; ?? ??? ?int age; ?? ??? ?string tell; ?? ??? ?string addr; ?? ??? ?cout<<"請(qǐng)輸入姓名,性別,年齡,電話(huà)以及地址:"; ?? ??? ?cin>>name>>sex>>age>>tell>>addr; ?? ??? ?books->per[ret].name = name; ?? ??? ?books->per[ret].sex = sex; ?? ??? ?books->per[ret].age = age; ?? ??? ?books->per[ret].tell = tell; ?? ??? ?books->per[ret].addr = addr; ?? ??? ?cout<<"修改成功\n"; ?? ?} else { ?? ??? ?cout<<"查無(wú)此人,是否選擇新增(Y/N):\n"; ?? ??? ?char flag; ?? ??? ?cin>>flag; ?? ??? ?if(flag=='Y') { ?? ??? ??? ?addPerson(books); ?? ??? ?} ?? ?} } //清空 void clearPerson(Books *books) { ?? ?books->N = 0; ?? ?cout<<"通訊錄已清空\(chéng)n"; } int main(int argc, char** argv) { ?? ?showMenu(); ?? ?Books books; ?? ?books.N = 0; ?? ?initBooks(&books); ?? ?showPerson(&books); ?? ?while(true) { ?? ??? ?showMenu(); ?? ??? ?cout<<"請(qǐng)輸入功能前的序號(hào):\n"; ?? ??? ?int select=0; ?? ??? ?cin>>select; ?? ??? ?switch(select) { ?? ??? ??? ?case 1: ?? ??? ??? ??? ?addPerson(&books); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 2: ?? ??? ??? ??? ?showPerson(&books); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 3: ?? ??? ??? ??? ?deletePerson(&books); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 4: ?? ??? ??? ??? ?findPerson(&books); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 5: ?? ??? ??? ??? ?modifyPerson(&books); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 6: ?? ??? ??? ??? ?clearPerson(&books); ?? ??? ??? ??? ?break; ?? ??? ??? ?case 0: ?? ??? ??? ??? ?cout<<"歡迎下次使用\n"; ?? ??? ??? ??? ?exit(0); ?? ??? ??? ?default: ?? ??? ??? ??? ?break; ?? ??? ?} ?? ?} ?? ?return 0; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C++實(shí)現(xiàn)簡(jiǎn)易通訊錄管理系統(tǒng)
- C++實(shí)現(xiàn)簡(jiǎn)單版通訊錄管理系統(tǒng)
- C++實(shí)現(xiàn)簡(jiǎn)單的通訊錄管理系統(tǒng)
- 利用C++實(shí)現(xiàn)通訊錄管理系統(tǒng)的完整代碼
- C++實(shí)現(xiàn)完整功能的通訊錄管理系統(tǒng)詳解
- C++實(shí)現(xiàn)簡(jiǎn)單通訊錄管理系統(tǒng)
- C++ 實(shí)現(xiàn)的通訊錄管理系統(tǒng)詳解
- C++鏈表實(shí)現(xiàn)通訊錄管理系統(tǒng)
- C++實(shí)現(xiàn)通訊錄管理系統(tǒng)
相關(guān)文章
c語(yǔ)言中如何修改文件中間的幾個(gè)字節(jié)
工作中碰到一個(gè)問(wèn)題,如何只修改文件中間的幾個(gè)字節(jié),而其他的內(nèi)容不變。這個(gè)問(wèn)題看似簡(jiǎn)單,但是很多人估計(jì)都不知道怎么做。我開(kāi)始seek到文件的特定的位置,然后寫(xiě)文件,但是使用的文件打開(kāi)模式不對(duì),文件不是被清空,就是被截?cái)啵_(dá)不到效果2020-10-10c++中struct和class的區(qū)別小結(jié)
在C++中,class和struct都是用于定義自定義數(shù)據(jù)類(lèi)型的關(guān)鍵字,本文主要介紹了c++中struct和class的區(qū)別小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08詳解C++?OpenCV實(shí)現(xiàn)圖像拼接的原理及方法
本文以實(shí)現(xiàn)圖像拼接為目標(biāo),把分割開(kāi)的圖像進(jìn)行拼接還原,核心的內(nèi)容包括:OpenCV圖像拼接相關(guān)原理以及OpenCV圖像拼接案例的實(shí)現(xiàn),感興趣的可以了解一下2022-07-07C語(yǔ)言開(kāi)發(fā)實(shí)現(xiàn)井字棋及電腦落子優(yōu)化示例詳解
以前上課經(jīng)常和同桌玩起井字棋,那么我們就當(dāng)我們回憶童年,現(xiàn)在也用C語(yǔ)言來(lái)實(shí)現(xiàn)井字棋,本次代碼相對(duì)于初階的井字棋,在電腦下棋代碼部分做了優(yōu)化,使得電腦更加具有威脅2021-11-11