通訊簿管理(順序表的應(yīng)用)-C++程序_第1頁
通訊簿管理(順序表的應(yīng)用)-C++程序_第2頁
通訊簿管理(順序表的應(yīng)用)-C++程序_第3頁
通訊簿管理(順序表的應(yīng)用)-C++程序_第4頁
通訊簿管理(順序表的應(yīng)用)-C++程序_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、.PAGE :.;3 通訊簿管理順序表的運用【問題描畫】通訊簿是一個線性表,可以存儲一定數(shù)量的聯(lián)絡(luò)人記錄,提供查找、插入、刪除和修正等操作。通訊簿的特點是以查找為主要操作,要求快速查找到指定對象的位置,故宜采器具有隨機訪問功能的順序表。【數(shù)據(jù)構(gòu)造】運用順序表SeqList建立通訊簿。作為表項的聯(lián)絡(luò)人記錄,至少應(yīng)包括以下屬性: 序號,姓名,與本人關(guān)系,號碼其中序號具有獨一性。序號和姓名可作為查找的主要關(guān)鍵字。與本人關(guān)系可枚舉為“親人、“朋友和“同事,主要作用是為聯(lián)絡(luò)人分組,并作為次要關(guān)鍵字。將上述聯(lián)絡(luò)人記錄定義為一個構(gòu)造struct,在主程序中建立模板類順序表SeqList的對象時用該構(gòu)造實例化

2、表結(jié)點的類型。【主要功能】程序應(yīng)為用戶提供操作選擇界面,必要的操作包括:查找某人號碼,添加新記錄,修正記錄,刪除記錄,打印親人清單、朋友清單或同事清單以及退出等。另外,為初始化方便,原始數(shù)據(jù)可存儲在磁盤文件中?!局饕a】#include#includestatic n=1;enum RelationFriend,Relative,colleague;templatestruct People char Number10;/編號 char PNumber12;/號碼 char name20;/姓名 int m;/關(guān)系 People( int &ite) m=ite; People(int &p

3、1,char Name,char P, char item) for(int i=0;i20;i+) namei=Namei; for(int j=0;j11;j+) PNumberj=Pj; for(int k=0;k10;k+) Numberk=itemk; m=p1; ;templateclass SeqListprotected: People *data; int maxSize; int last; void reSize(int newSize);public: SeqList()data=new People; SeqList(T& x)data=new People(x);

4、People *getdata()return data; bool input(); void output(); void tianjia(); void chaxun(); void showall(); void remove(); void xiugai(); void showfriend(); void showrelative(); void showcolleague();template bool SeqList:input() static l;coutdatal.Number; ;coutdatal.PNumber;coutdatal.m;l

5、+;n+;return true;bool deng(char p1,char p2)bool flag=1;for(int i=0;p1i!=0|p2i!=0;i+)if(p1i!=p2i)return flag=0;return flag;template void SeqList:tianjia()this-input();cout信息已保管好!endl;template void SeqList:chaxun()char pr20;cout請輸入您要查找的姓名或號碼:pr;bool flag=1;for(int li=0;lin-1;li+)if(deng(pr,

6、)|deng(pr,datali.PNumber)cout#datali.Numbert姓名:t號碼:;for(int k=0;datali.PNumberk!=0;k+)coutdatali.PNumberk;coutt;switch(datali.m)case 0:cout朋友tendl;break;case 1:cout親人tendl;break;case 2:cout同事tendl;break;default: cout關(guān)系設(shè)置錯誤!;break; flag=0;if(flag) cout查找失?。ndl;void inface() cout endl; cou

7、ttt endl tt * endl tt 通 迅 錄 endl tt * endl tt 1. 添加新聯(lián)絡(luò)人. 6. 顯示同事信息. endl tt endl tt 2. 刪除聯(lián)絡(luò)人. 7. 修正信息. endl tt endl tt 3. 顯示一切聯(lián)絡(luò)人. 8.查詢聯(lián)絡(luò)人. endl tt endl tt 4.顯示親人信息. endltt 按其他退出 endltt 5.顯示朋友信息. endltt endl tt endl endl;template void SeqList:showall()cout一切人的信息如下:endl;for(int lm=0;lmn-1;lm+)cout#da

8、talm.Numbert姓名:t號碼:;for(int k=0;datalm.PNumberk!=0;k+)coutdatalm.PNumberk;coutt;switch(datalm.m)case 0:cout朋友tendl;break;case 1:cout親人tendl;break;case 2:cout同事tendl;break;default: cout關(guān)系設(shè)置錯誤!;break;template void SeqList:showfriend()cout朋友的信息如下:endl;for(int lm=0;lmn-1;lm+)if(datalm.m=0)cou

9、t#datalm.Numbert姓名:t號碼:;for(int k=0;datalm.PNumberk!=0;k+)coutdatalm.PNumberk;coutt;switch(datalm.m)case 0:cout朋友tendl;break;case 1:cout親人tendl;break;case 2:cout同事tendl;break;default: cout關(guān)系設(shè)置錯誤!;break;template void SeqList:showrelative()cout親人的信息如下:endl;for(int lmm=0;lmmn-1;lmm+)if(datal

10、mm.m=1)cout#datalmm.Numbert姓名:t號碼:;for(int k=0;datalmm.PNumberk!=0;k+)coutdatalmm.PNumberk;coutt;switch(datalmm.m)case 0:cout朋友tendl;break;case 1:cout親人tendl;break;case 2:cout同事tendl;break;default: cout關(guān)系設(shè)置錯誤!;break;template void SeqList:showcolleague()cout同事的信息如下:endl;for(int lmp=0;lmpn

11、-1;lmp+)if(datalmp.m=2)cout#datalmp.Numbert姓名:t號碼:;for(int k=0;datalmp.PNumberk!=0;k+)coutdatalmp.PNumberk;coutt;switch(datalmp.m)case 0:cout朋友tendl;break;case 1:cout親人tendl;break;case 2:cout同事tendl;break;default: cout關(guān)系設(shè)置錯誤!;break;template void SeqList:xiugai()char ptk20;coutptk;bool fl

12、ag=1;for(int lp=0;lpn-1;lp+)if(deng(ptk,)|deng(ptk,datalp.PNumber)coutdatalp.Number; ;coutdatalp.PNumber;coutdatalp.m;flag=0;if(flag) cout您要修正的人不存在!endl;template void SeqList:remove()char ptr20;coutptr;bool flag=1;for(int lr=0;lrn-1;lr+)if(deng(ptr,)|deng(ptr,dat

13、alr.PNumber)strcpy(datalr.Number,datan-2.Number); strcpy(,);strcpy(datalr.PNumber,datan-2.PNumber);datalr.m=datan-2.m;n-;cout信息已刪除!endl; flag=0;if(flag) cout刪除失敗!endl; void main() bool flag1=0; inface(); int x=0; SeqList a(x); while (1) coutttmmm; switch (mmm) case 1: a.tianji

14、a();/添加聯(lián)絡(luò)人 break; case 2: a.remove();/刪除聯(lián)絡(luò)人 break; case 3: a.showall();/顯示一切聯(lián)絡(luò)人 break;case 4: a.showrelative();/顯示親人清單 break; case 5: a.showfriend();/顯示朋友清單 break;case 6: a.showcolleague();/顯示同事清單 break;case 7: a.xiugai();/修正信息 break; case 8: a.chaxun();/查詢聯(lián)絡(luò)人 break; case 0: cout endl 謝謝運用! endl end

15、l; flag1=1; break; default: break; if(flag1) break; 【實驗過程】 * 通 迅 錄 * 1. 添加新聯(lián)絡(luò)人. 6. 顯示同事信息. 2. 刪除聯(lián)絡(luò)人. 7. 修正信息. 3. 顯示一切聯(lián)絡(luò)人. 8.查詢聯(lián)絡(luò)人. 4.顯示親人信息. 按其他退出 5.顯示朋友信息. 選擇:1請輸入您要添加的人的姓名:kuang請輸入您要添加人的號碼輸入您要添加人與您的關(guān)系0為朋友,1為親人,2為同事:0信息已保管好!選擇:1請輸入您要添加的人的姓名:huqiong請輸入您要添加人的號碼輸入您要添加人與您的關(guān)系0為

16、朋友,1為親人,2為同事:1信息已保管好!選擇:3一切人的信息如下:#1姓名:kuang號碼友#2姓名:huqiong號碼人選擇:2請輸入您要刪除的姓名或號碼:kuang信息已刪除!選擇:3一切人的信息如下:#1姓名:huqiong號碼人選擇:8請輸入您要查找的姓名或號碼1姓名:huqiong號碼人選擇:0謝謝運用!Press any key to continue【實驗領(lǐng)會】再寫通訊錄時,開場遇到了很多問題,最主要的一個就是經(jīng)過順序表來存放一個人的信息,究竟是存放這個節(jié)點,還是存放這個節(jié)點的指針。再一個就是字符串的輸入,假設(shè)用cin.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論