數(shù)據(jù)結(jié)構(gòu)課程設(shè)計通訊錄、電話號碼查詢系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計通訊錄、電話號碼查詢系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計通訊錄、電話號碼查詢系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計通訊錄、電話號碼查詢系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計通訊錄、電話號碼查詢系統(tǒng)_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計報告

統(tǒng)

學(xué)院保):

班級:

學(xué)生姓名:學(xué)號.

指導(dǎo)教師:_______________

2012年12月17日到2013年1月2日

一、課程設(shè)計概述:

本次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計共完成兩個題:電話號碼查詢系統(tǒng)、通訊錄。

使用語言:C

編譯環(huán)境:VC6.0

二、課程設(shè)計題目一

[實驗內(nèi)容]

電話號碼查詢系統(tǒng)

[問題描述]

設(shè)計散列表實現(xiàn)電話號碼查找系統(tǒng)。

[需求分析]

(1)設(shè)每個記錄有下列數(shù)據(jù)項:電話號碼、用戶名、地址;

(2)從鍵盤輸入各記錄,分別以電話號碼和用戶名為關(guān)鍵字建立散列表;

(3)采用一定的方法解決沖突;

(4)查找并顯示給定電話號碼的記錄;

(5)查找并顯示給定用戶名的記錄。

整個系統(tǒng)必須滿足系統(tǒng)功能要求;設(shè)計不同的散列函數(shù),比較沖突率;在散列函數(shù)確定

的前提下,嘗試各種不同類型處理沖突的方法,考察平均查找長度的變化。

[概要設(shè)計]

voidgetin(Record*a)//鍵盤輸入聯(lián)系人的信息

voidShowlnformation(Record*a)//顯示輸入的用戶信息

Statuscollision(intp,int&c)//沖突處理函數(shù),采用二次探測再散列法解決沖突

voidCreateHash(HashTable*H1Record*a)//建表若哈希地址沖突,進(jìn)行沖突處理

voidSearchHash(HashTable*H,int&c)//在通訊錄里查找關(guān)鍵字

voidSave()〃保存

voidmain_menu()

[存儲結(jié)構(gòu)]

typedefstruct{〃記錄

NAname;

NAtel;

NAadd;

}Record;

typedefstruct{//哈希表

Record*elemLHASHSIZE];〃數(shù)據(jù)元素存儲基址

intcount;〃當(dāng)前數(shù)據(jù)元素個數(shù)

intsize;〃當(dāng)前容量

JHashTable;

[流程圖]

voidmain_menu()

voidgetinvoidvoidvoidStatus

ShowlnformationCreateHashSearchHashcollision

[詳細(xì)設(shè)計]

#include<iostream>//cout,cin語句的頭文件#include<stdlib.h>〃清屏函數(shù)頭文件:使用

#include<string>〃字符串頭文件csl時調(diào)用system

#include<stdio.h>

#include<fstream>

#defineMAXSIZE100〃電話薄記錄的數(shù)量

#defineMAX_SIZE50//用戶名、電話號碼、地址的最大長度

#defineHASHSIZE400//定義表長

#defineSUCCESS1〃查找

#defineUNSUCCESS-1

#defineLENsizeof(HashTable)//哈希表的長度

usingnamespacestd;

typedefintStatus;//typedef用來定義類型的別名。此處用status作為int別名,目的表達(dá)int

變量是一個狀態(tài)變量。

typedefcharNA[MAX_SIZE];//NA作為char的另!J名

typedefstruct{〃自定義一個記錄用戶名、電話號碼、聯(lián)系地址的結(jié)構(gòu)體的別名

record

NAn

ame,tel,add,way;}Record;

Recorda[HASHSIZE];

typedefstruct{儆列表

Record*elem[HASHSIZE];〃數(shù)據(jù)元素存儲地址

intcount;〃數(shù)據(jù)元素個數(shù)

intsize;〃容量

JHashTable;

Statuseq(NAx,NAy)

{〃關(guān)鍵字比較,相等返回SUCCESS;否則返回UNSUCCESS

Nstrcmp(x,y)==0)〃2個字符串的大小比較s仁s2?strcmp(s1,s2)==0;s1>s2,

strcmp(s1Ss2)==1;s1<s2,strcmp(s1,s2)==-1;

returnSUCCESS;

else

returnUNSUCCESS;

StatusNUM_BER;〃記錄的個數(shù)

voidgetin(Record*a){//鍵盤輸入聯(lián)系人的信息,Record*調(diào)用Record函數(shù):a是參數(shù)

coutvv”請輸入要添加的聯(lián)系人的個數(shù):\nM;cin?NUM_BER;

inti;for(i=0;i<NUM_BER;i++){

coutvv”請輸入第"vvi+1vv”個記錄的用戶名:\n";cin?a[i].name;

coutvv”請輸入第”vvi+1vv”個記錄的電話號碼:\nn;cin?a[i].tel;

coutvv”請輸入第”vvi+1vv”個記錄的地址:\n";cin?a[i].add;

}}voidShowlnformation(Record*a)〃顯示輸入的用戶信息

(

inti;

for(i=O;i<NUM_BER;i++)

cout?"\nM"vvi+1vv”個用戶信息:\n姓名:"vva[i].namevv”\n電話號碼:

w?a[i].tel?An聯(lián)系地址:"?a[i].add?^n............\n";

}

longfold(NAs)//人名的折疊處理:將關(guān)鍵字分割成位數(shù)相同的幾部分,最后一部分位數(shù)可以不同,

然后取這幾部分的疊加和(去除進(jìn)位)作為散列地址

(

char*p;

longsum=0;

NAss;

strcpy(ss,s);〃復(fù)制字符串,不改變原字符串的大小寫

strupr(ss);//將字符串ss轉(zhuǎn)換為大寫形式

P=ss;

while(*p!='\0')

sum+=*p++;

returnsum;

}

intHashi(NAstr){//哈希函數(shù)

longn;

intm;

n=fold(str);//先將用戶名進(jìn)行折疊處理

m=n%HASHSIZE;//折疊處理后的數(shù),用除留余數(shù)法構(gòu)造哈希函數(shù)

returnm;〃并返回模值

intHash2(NAstr){//哈希函數(shù)

longn;

intm;

n=atoi(str);//把字符串轉(zhuǎn)換成整型數(shù).m=n%HASHSIZE;//用除留余數(shù)法構(gòu)造哈希函數(shù)

returnm;〃并返回模值

Statuscollision(intp,int&c){//沖突處理函數(shù),采用二次探測再散列法解決沖突

inti,q;

i=c/2+1;

while(i<HASHSIZE){

if(c%2==0){

C++;

q=(p+i*i)%HASHSIZE;

if(q>=0)returnq;

elsei=c/2+1;

)

else{

q=(p-i*i)%HASHSIZE;

C++;

if(q>=0)returnq;

elsei=c/2+1;

}

}

returnUNSUCCESS;

}

intsearchHash(HashTable*&H,NAkey,int&p,int&cJntway)

if(way==1){p=Hash1(key);

while(H->elem[p]!=NULL&&!eq(key,H->elem[p]->name))〃若哈希地址沖突,進(jìn)行沖突

處理

collision(p,++c);if(eq(key,H->elem[p]->name))return1;

elsereturn0;

}

else

(

p=Hash2(key);

while(H->elem[p]!=NULL&&!eq(key,H->elem[p]->tel))//若哈希地址沖突,進(jìn)

行沖突處理

collision(p,++c);

if(eq(key,H->elem[p]->tel))

return1;

else

return0;

)

//建表,若哈希地址沖突,進(jìn)行沖突處理voidCreateHash(HashTable*H,Record*a)

cout?"\n======建立散列表=======

cout?"\n(1).以姓名建立散列表(再散列法解決沖突)

cout?"\n⑵.以電話號碼建立散歹!J表(再散歹U法解決沖突)

J

cout?H\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

COUtw”請輸入選擇:";

intnum,i,p=-1,c;

cin?num;

for(i=0;i<NUM_BER;i++){

c=0;

if(num==1){

p=Hash1(a[i].name);

while(H->elem[p]!=NULL&&!eq(a[i].name,H->elem[p]->name))〃若哈希地址沖突?進(jìn)行

沖突處理

collision(p,++c);

)

else{

p=Hash2(a[i].tel);

while(H->elem[p]!=NULL&&!eq(a[i].tel,H->elem[p]->tel))//若哈希地址沖突,進(jìn)行沖突

處理

collision(p,++c);

)

H->elem[p]=a+i;//求得哈希地址,將信息存入

H->count++;

coutvv"第“vvi+1vv”個記錄沖突次數(shù)為"vvcvv”。\n”;〃需要顯示沖突次數(shù)時輸出

)

cout?"\n建表完成!\n此哈希表容量為ZvHASHSIZEvv”,當(dāng)前表內(nèi)存儲的記錄個數(shù)為

,,?H->count?".\n,';

)

〃查找用戶名和電話號碼的記錄;

voidSearchHash(HashTable*H,int&c){//在通訊錄里查找關(guān)鍵字,若查找成功,顯示信息

//c用來記錄沖突次數(shù),查找成功時顯示沖突次數(shù)

NAtype;

intp;

cout?'*\n======查找并顯示用戶信息記錄=======

coutvv'n⑴.查找并顯示給定用戶名的記錄

cout?"\n⑵.查找并顯示給定電話號碼的記錄

J

cout?"\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆";

coutvv”請輸入選擇:"intnum;

cin?num;

switch(num){

case1:

coutvv'n請輸入要查找的用戶名:\n”;cin?type;

searchHash(H,type,p,c,1);

if(eq(type,H->elem[p]->name)==1){

coukv'n查找成功!以下是您需要要查找的信息:\n\n";

coutvv"姓名:"?H->elem[p]->name?^n電話號碼:"?H->elem[p]->tel?"\n

聯(lián)系地址:"vvH->elem[p]->addvv"\rT;

)

else

cout?"\n對不起,該用戶不存在\n";

break;

case2:

cout?"\n請輸人要查找電話號碼:\nM;cin?type;

searchHash(H,type,p,c,2);

if(eq(type,H->elem[p]->tel)==1){cout?n\n查找成功!以下是您需要要查找的信息:

\n\n";

cout?H姓名:"vvH-elemlpJ,namevvQn電話號碼:M?H->elem[p]->tel?"\n聯(lián)系地

址:"vvH?>elem[p]->addvv'*\rr;

}

else

cout?H\n對不起,該用戶不存在\n";

break;

default:cout?"輸入錯誤,請重新輸入

voidSave(){〃保存

ifstreamin;

ofstreamout;out.open("123.txt'*);

printf("\n保存成功!");

for(inti=0;i<NUM_BER;i++){

out?"姓名:"vva[i].namevv"\n電話號碼:"vva[i].telvv”\n聯(lián)系地址

"?a[i].add?"\n";

)

return;

}

voidmain_menu()

(

intc,flag=1;////定義一個布爾型變量flag并初始化為真(true)HashTable*H;

H=(HashTable*)malloc(LEN);

for(inti=O;i<HASHSIZE;i++)

H->elem[i]=NULL;

H->size=HASHSIZE;H->count=0;

while(1){//while使電話查詢系統(tǒng)執(zhí)行后返回主菜單的界面system("cls");

cout?*'\n======V(A3。/歡迎使用電話號碼查找系統(tǒng)=======

coutvv'M(1).添加用戶信息";

coutvv'M(2).讀取所有用戶信息";

cout?n\n(3).建立散列表(再散列法解決沖突)”;

cout?^n(4).查找并顯示給定用戶的記錄";

coutvv'n(5).保存

cout?,r\n(6).退出

cout?An提示:進(jìn)行4操作前請先進(jìn)行3操作.否則無法查找成功!";

cout?,r\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆";

cout?^n\n請選擇:

intnum;

cin?num;

switch(num){

case1:

getin(a);

system("pause");

break;

case2:

Showlnformation(a);

system("pause");

break;

case3:

CreateHash(H,a);/*建立散列表7

system("pauseM);

break;

case4:

c=0;

SearchHash(H,c);

system("pause");

break;

case5:

Save();

system("pause");

break;

case6:

return;

break;

default:

cout?"輸入錯誤,請重新輸入

cout?"\n";

intmain(intargc,char*argv[])

main_menu();

〃執(zhí)行結(jié)束后清屏,顯示主菜單

return0;

}[調(diào)試分析]

問題一:

現(xiàn)象:每次執(zhí)行后,系統(tǒng)界面不自動清屏?

原因:執(zhí)行每個選項后,沒有清屏操作的代碼。解決辦法:將CLS放到switch函數(shù)體

后面,執(zhí)行選項后,執(zhí)行清屏操作

問題二:

現(xiàn)象:進(jìn)行查找的時候,總是查找失?。。?!

原因:查找前沒有建立散列表。解決辦法:先建立散列表,再查找。

[運行結(jié)果及分析]

c**C:\Docu>entsandSettings\Ad>inistrator\LocalSettings\Te*p\Rar$DIaO...日日X

uL3/迎使3

21取

31.文

4].找

.保

.存

51退

.&

61田

5一

☆'

清選擇:2

渤個

戶信

用:

屯O8

聯(lián)18

S重

請按任意鍵繼續(xù)..?

搜狗拼音半:zJ

K*C:\DocuaentsandSettingsVAdainistrator\LocalSettings\TeBp\Rar$DIaO...□|x

一感

信息

2矍

3班

4用

5存

6出

-患

.卷找成功,

☆☆☆介

☆'☆☆☆

詵擇3

I?以姓名iijft列

2一以電話年碼挈隹立..................

☆☆右☆☆石■

☆☆☆☆☆$☆☆☆☆☆☆笫1_個記錄沖突次數(shù)為0

建表完成?

魁爵IT?當(dāng)前表內(nèi)甸記錄俾汕

狗拼音半:

*C:\Docu>entsandSettings\Ad>inistrator\LocalSettings\TeBp\Rar$DIaO..

1:

5.保存

6).退出

提不:進(jìn)行4操作前請先進(jìn)行3操作?否則無法查找成功?

請選擇:4

(-一--

——

■顯H

內(nèi)

查§

☆☆白

。-請輸入選擇汽

\j

/2

VI

/3

\(

\/4

/

XI5

6

/:是

性選才仝:5

保存成功?請按任意鍵繼續(xù)???

搜狗拼音半:

品*C:ADocuMentsandSettingsV\d>inistrator\LocalSettings\Teii!p\Rar$DIaO...|

_____________)一覆加用力佶息—

一覆卓所有甩戶信息

羲立羲4羸|列出%立散列解決口[41一查找并顯示給定用戶的記錄

(6)

提$進(jìn)仃4操作前狀進(jìn)行3操作.否則土法直找成功!召壽召☆合

客玄玄矗金☆☆岳☆渥☆金承

請選擇;6

|PressNnykeytocontinue

I搜狗拼音半:

課程設(shè)計題目二

[實驗內(nèi)容]

通訊錄

[問題描述]

管理通訊信息,包含姓名(name)、出生日期(birthday)、城市(city)、職業(yè)

(profession)、電話(tel)、00號(qq)等°

[需求分析]

1'輸入信息。

2、顯示信息。

3、分別以姓名、城市、出生日期、電話或QQ作為關(guān)鍵字查找。

4、刪除信息。

5、存盤,將數(shù)據(jù)保存在文件phonefile中,以便下次可以繼續(xù)上述工作。

測試數(shù)據(jù):自己設(shè)計,不少于30人。

[概要設(shè)計]

voidTeleNumber::ReadFile(istream&in)〃從文件依次將標(biāo)準(zhǔn)輸入流中的數(shù)據(jù)讀入到變

量name,….中

voidTeleNumber::input()〃信息數(shù)據(jù)輸入

voidTeleNumber::display()//調(diào)用telenumber中的display函數(shù)輸出信息

voidTeleMessage::Remove()〃刪除

voidTeleMessage::Show()int

main()

[存儲結(jié)構(gòu)]

此程序的存儲結(jié)構(gòu)是單鏈表

voidTeleMessage::lnsert()〃插入

IEnd-^innutn:〃尾指針指向input,從單鏈表尾部插入信息

End=End->Next;coutvvendlvv”插人〃尾節(jié)點指向下一個節(jié)點

成功"vvendl;

[流程圖]

intmain()

voidTeleNumbe匚:input()voidTeleMessage::Remove()void

TeleMessage::Show()

[詳細(xì)設(shè)計]

#includeviostream>〃對標(biāo)準(zhǔn)輸入輸出文件的操作,后面有命名空間,不能用viostream.h>?

否則出錯

#include<fstream>//是對文件操作

#include<string>

#include<stdlib.h>

usingnamespacestd;

intnum;

structTeleNumber〃用struct結(jié)構(gòu)體來存放不同類型的數(shù)據(jù)*函數(shù)

(

charname[20];〃姓名,字符必須注明長度

intphoneNumber;//電話號碼

intbirthday;〃出生日期

charcity[30];〃城市

TeleNumber*Next;

voidReadFile(istream&in);//

voidinput();〃信息輸入的函數(shù)

voiddisplay;〃信息輸出的函數(shù)

};

voidTeleNumber::ReadFile(istream&in)〃從文件依次將標(biāo)準(zhǔn)輸入流中的數(shù)據(jù)讀人到變量

name,…?中

{in?name?phoneNumber?birthday?city;

)

voidTeleNumber::input()//信息數(shù)據(jù)輸入

{coutvv”請輸入姓名"vvendl;

End->Next=newTeleNumber;〃尾節(jié)點指向下一個數(shù)據(jù)節(jié)點,開辟一個新的節(jié)點

cin?name;

coutvv”請輸入電話號碼"vvendl;

cin?phoneNumber;

coutvv”請輸入出生日期“wendl;

cin?birthday;

coutvv”請輸入城市"vvendl;

cin?city;

)

voidTeleNumber::display()〃調(diào)用telenumber中的display函數(shù)輸出信息

{cout?M姓名:',?name?*\t,?H固定號碼:'*?phoneNumber?'\f?M出生日

期:"vvbirthdayvv'\t'vv"城市:M?city?endl;

classTeleMessage//建造一個類,表示信息功能的類

{public:

TeleMessage();//構(gòu)造數(shù)據(jù)結(jié)構(gòu)

-TeleMessage();void〃析構(gòu)函數(shù),用來釋放單鏈表

Save();〃數(shù)據(jù)保存到文件

TeleNumber*Search(char*);//定義一個查找數(shù)據(jù)的指針

voidlnsert();voidRemove();〃插入函數(shù)的定義在后面,這里要先聲明

voidChange();voidShow();//刪除

private:〃更改

//顯示

TeleNumber*End,*Head;

ifstreamin;

〃定義結(jié)構(gòu)體的頭尾指針

ofstreamout;

〃定義從文件中讀入數(shù)據(jù)

};TeleMessage::TeleMessage()

〃定義將數(shù)據(jù)寫到文件中

{Head=newTeleNumber;

〃定義信息類中的信息函數(shù)

Head->Next=newTeleNumber;

//頭插法建立單鏈表

End=Head->Next;//head指向一個新分配的節(jié)點

指向下一個節(jié)點,直到指向尾節(jié)點〃對結(jié)構(gòu)體遍歷,頭節(jié)點指針依次

in.open(MTeleNumber.text'*);

)〃使屏幕暫停,而不是直接閃過〃打開外存文件,讀人數(shù)據(jù)

TeleMessage::-TeleMessage()

〃釋放單鏈表

{TeleNumber*temp;

〃定義一個數(shù)據(jù)指針temp

while(Head->Next!=End)

〃當(dāng)頭節(jié)點指向的下一個指針不是尾節(jié)點

{temp=Head->Next;

〃數(shù)據(jù)指針指向頭節(jié)點指向的下一個節(jié)點

Head=Head->Next;delete

〃頭結(jié)點依次指向頭結(jié)點的下一個節(jié)點

temp;

〃刪除數(shù)據(jù)指針指向的節(jié)點數(shù)據(jù)

deleteHead,End;

//刪除頭尾指針

voidTeleMessage::Save()

{out.openCTeleNumber.txt");數(shù)據(jù)寫入外存文件中

for(TeleNumber//保存文件

*p=Head->Next;p!=End;p=p->Next)〃建止外停文i牛TeleNumber.txt'把

out?p->name?"\t"?p->phoneNumber?"\t"?p->birthday?"\t"?p->city?endl;//將數(shù)據(jù)存至!1夕卜

存文件里

out.close();〃定義一個數(shù)據(jù)指針p,使p依次指向頭結(jié)點指向的下一個指針,直到p指

向尾節(jié)點,依次寫入每個節(jié)點的信息

cout?"保存成功!"<<endl;

voidTeleMessage::lnsert()〃插入

{End->input();〃尾指針指向input,從單鏈表尾部插入

信息

End?>Next=newTeleNumber;〃尾節(jié)點指向下一個數(shù)據(jù)節(jié)點,開辟一個新的節(jié)點

八、、

End=End->Next;〃尾節(jié)點指向下一個節(jié)點coutvvendkv”插入成功M?endl;

voidTeleMessage::Remove()//刪除

{charname[20];

TeleNumber*p=newTeleNumber,*temp=NULL;//定義一個數(shù)據(jù)指針,指向新的數(shù)據(jù)?定義一個

數(shù)據(jù)指針temp,指向空函數(shù)

coutvv”請輸入要刪除人的姓名:M?endl;cin?name;

if((p=Search(name)))〃如果找到了要刪除的節(jié)點

{if(Head->Next==p){

Head->Next=p->Next;//利用頭指針,將要刪除的數(shù)據(jù)拉出來,這個是經(jīng)過找很多人寫出來的。

首先非常感謝百度知友和校友

?

temp=p;〃使指針temp指向p指向的要刪除的節(jié)點

p=p->Next;//摘鏈:使p指向p指向的下一個節(jié)點的下一個節(jié)點

deletetemp;//刪除temp指向的節(jié)點

cout?"刪除成功!"?endl;

I

else

{coukv”沒有找至!!r?endl;

?

TeleNumber*TeleMessage::Search(char*name)〃定義信息類中查找函數(shù)指針

{for(TeleNumber*p=Head->Next;p!=End;p=p->Next)〃定義一個數(shù)據(jù)指針p指向頭節(jié)點指向的下一個

節(jié)點,頭節(jié)點沒有數(shù)據(jù),數(shù)據(jù)從頭節(jié)點的下一個節(jié)點開始存儲,P進(jìn)行遍歷

操作,直到指向尾節(jié)點

if(!strcmp(p->name,name))//strcmp作用是倆個變量相減,如果p所指向的name和要查找

的name相同,則strcmp值為0,非1

{p->display();

returnp;

else

cout?M查無此人"?endl;

return0;systemrcis");

voidTeleMessage::Show()

{for(TeleNumber*p=Head->Next;p!=End;p=p->Next)

p->display();

?

intmain()

{boolflag=true;〃定義一個布爾型變量flag并初始化為真(true),只認(rèn)識真(true)和假(false),

1和0,也就是成立和不成立的簡單判斷。

TeleMessagetele;

charname[20];

while(flag)〃如果flag為真

system(MclsH);

coutvv',=:=====通訊錄====="vvendl;

coutvv”1.增加信息Mvvendl;

coutvv”2.顯示信息Mvvendl;

coutvv”3.查找號碼Mvvendl;

coutvv"4.刪除信息"vvendl;

coutvv"5.保存信息nvvendl;

coutvv',6.退出系統(tǒng)Mvvendl;

cout?M-----------------------------------------------------M?endl;

coutvv”請選擇:";cin?num;

switch(num)

{case1:tele.lnsert();break;

case2:tele.Show();break;

case3:coutvv”請輸入姓名"vvendl;

cin?name;

tele.Search(name);break;

case4:tele.Remove();break;

case5:tele.Save();break;

case6:coutvv”謝謝使用!Mvvendl/eturn0;break;//return0表示退出系統(tǒng)default:

coutvv”輸入錯誤,請重新輸入r;coutvvM\nM;

?

system("pause");

}}

[調(diào)試分析]

問題一:

現(xiàn)象:執(zhí)行查找時,運行出錯。

原因:定義查找時,出錯了,經(jīng)過調(diào)試if語句,運行成功

問題二:

現(xiàn)象:按0,系統(tǒng)不退出

原因:輸入0后,系統(tǒng)執(zhí)行的是break>而不是return0.

問題三:

現(xiàn)象:刪除操作時,系統(tǒng)顯示倆排相同的信息

原因:定義刪除函數(shù)時,一個for,一個if導(dǎo)致刪除執(zhí)行了倆次。解決辦法是for消掉

[運行結(jié)果及分析]

^^D:\36詬盤'作業(yè)'歙據(jù)結(jié)構(gòu)作業(yè)\Deb“\通訊錄?=??del

1增加信息

2顯示信息

3箕碼

4S

信息

氟退出系統(tǒng)

清輸入電話號碼

]]一

嘴輸入紙市

品-D:\360云盤'作業(yè)數(shù)振結(jié)構(gòu)作業(yè)XDebugA通訊錄.eie.E°I

?

Y

J:■S同22城中:也

:f-C■"B2閱城市:=q

c<.D:\360云盤'作業(yè)'數(shù)據(jù)結(jié)構(gòu)作業(yè)\Debug\通訊錄.exe-I°l

西

Fl值f

1加

2顯^M

不o

l碼

3找p

^息

4%g

5息

退

統(tǒng)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論