版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第C語(yǔ)言實(shí)現(xiàn)靜態(tài)存儲(chǔ)通訊錄的示例代碼頭文件定義了一個(gè)結(jié)構(gòu)體存放個(gè)人信息PeoInfo,但是我們這個(gè)通訊錄是有人數(shù)限制的,需要存一個(gè)人數(shù)進(jìn)去,那于是乎又設(shè)計(jì)了一個(gè)結(jié)構(gòu)體Contact存放個(gè)人信息和已經(jīng)存了多少人的統(tǒng)計(jì)數(shù)sz。
//主函數(shù)
intmain()
intinput=0;
Contactcon;
InitContact(con);
menu();
printf("請(qǐng)選擇
scanf("%d",input);
switch(input)
case1:
AddContact(con);
break;
case2:
DelContact(con);
break;
case3:
SearchContact(con);
break;
case4:
ModifyContact(con);
break;
case5:
ShowContact(con);
break;
case6:
SortContact(con);
break;
case0:
break;
default:
break;
}while(input);
return0;
}
以上必須要重申一下,函數(shù)和變量的命名方式我比較推薦駝峰法,最好不要用拼音和英文的縮寫,更不要都是小寫或者都是大寫,作為一個(gè)合格的程序員要養(yǎng)成良好的編碼習(xí)慣。define的變量最好全是大寫,但是每個(gè)單詞都要用_隔開(kāi),例如:#defineMAX_SEX5。
增加個(gè)人信息
voidAddContact(Contact*pc)//這里重點(diǎn)說(shuō)一下,一定要確定好接收的是結(jié)構(gòu)體指針變量,形參和實(shí)參要多多復(fù)習(xí)。
if(pc-sz==MAX)//頭文件中定義了MAX是100,不要忘記結(jié)合頭文件
printf("已經(jīng)滿了\n");
return;
else
printf("請(qǐng)輸入名字;》\n");
scanf("%s",pc-data[pc-sz].name);//這里我們要剖析一下,請(qǐng)看下面注釋
printf("請(qǐng)輸入性別:》\n");
scanf("%s",pc-data[pc-sz].sex);
printf("請(qǐng)輸入年齡:》\n");
scanf("%d",(pc-data[pc-sz].age));
printf("請(qǐng)輸入電話:》\n");
scanf("%s",pc-data[pc-sz].tele);
printf("請(qǐng)輸入地址:》\n");
scanf("%s",pc-data[pc-sz].addr);
pc-sz++;
printf("成功增加聯(lián)系人\n");
}
注釋:
因?yàn)槲覀儌鞯氖墙Y(jié)構(gòu)體指針pc結(jié)構(gòu)體指針引用數(shù)據(jù)要用剪頭-,之后引用到的數(shù)據(jù)data是結(jié)構(gòu)體數(shù)組需要添加下標(biāo)[pc-sz]就是它的下標(biāo),其中的pc-sz也是結(jié)構(gòu)體指針引用總個(gè)數(shù)sz的方式,最后已經(jīng)引用過(guò)的data里面的內(nèi)容要進(jìn)行引用需要用.這個(gè)符號(hào)引用(就是普通結(jié)構(gòu)體的引用)。
提醒:
在這里還要再說(shuō)一下關(guān)于ifelse中大括號(hào)的注意事項(xiàng),一定要縮進(jìn)和對(duì)齊,這還是一個(gè)程序員的基本功。另外還要提一下,else只會(huì)和最近的if結(jié)合,如果怕迷糊,請(qǐng)一定要在if結(jié)束后做大括號(hào){}。
顯示所有聯(lián)系人的信息
想要驗(yàn)證我們是不是真的添加了信息,那我們直接把他展示出來(lái)就好了,那順便把顯示所有聯(lián)系人函數(shù)也做出來(lái)。
//顯示所有聯(lián)系人
voidShowContact(Contact*pc)
inti=0;
for(i=0;ipc-i++)
printf("%d:姓名:%-10s性別:%-5s年齡:%-5d電話:%-12s地址:%-30s\n",
pc-sz,
pc-data[i].name,
pc-data[i].sex,
pc-data[i].age,
pc-data[i].tele,
pc-data[i].addr);
???????}
}
刪除個(gè)人信息
刪除個(gè)人信息之前需要先查到這個(gè)人,于是設(shè)計(jì)了一個(gè)搜索姓名函數(shù),根據(jù)搜索到的結(jié)果找到該聯(lián)系人的位置,再刪除。其實(shí)是這個(gè)搜索姓名函數(shù)是至關(guān)重要的,最后的查找、修改個(gè)人信息也要用到。
//搜索姓名函數(shù)
intFindByName(Contact*pc,charname[])
inti=0;
for(i=0;ipc-i++)
if(0==strcmp(pc-data[i].name,name))
returni;
return-1;
//刪除個(gè)人信息函數(shù)
voidDelContact(Contact*pc)
intret=0;
charname[MAX_NAME];
printf("請(qǐng)輸入要?jiǎng)h除的名字:》");
scanf("%s",name);
//查找以下是否存在
ret=FindByName(pc,name);
if(ret==-1)
printf("刪除的人不存在\n");
else
//del
intj=0;
for(j=ret;jpc-sz-1;j++)
pc-data[j]=pc-data[j+1];
pc-sz--;
printf("成功刪除!\n");
}
查找個(gè)人信息
//搜索個(gè)人信息
voidSearchContact(Contact*pc)
charname[MAX_NAME];
printf("請(qǐng)輸入要查找的姓名:》");
scanf("%s",name);
intret=FindByName(pc,name);
if(ret==-1)
printf("輸入的是個(gè)球~\n");
else
inti=ret;
printf("姓名:%-10s性別:%-5s年齡:%-5d電話:%-12s地址:%-30s\n",
pc-data[i].name,
pc-data[i].sex,
pc-data[i].age,
pc-data[i].tele,
pc-data[i].addr);
???????}
更改個(gè)人信息
//修改個(gè)人信息
voidModifyContact(Contact*pc)
charname[MAX_NAME];
printf("請(qǐng)輸入要修改的的名字:》");
scanf("%s",name);
intret=FindByName(pc,name);
if(ret==-1)
printf("輸入的是個(gè)球~\n");
else
printf("請(qǐng)輸入名字;》\n");
scanf("%s",pc-data[ret].name);
printf("請(qǐng)輸入性別:》\n");
scanf("%s",pc-data[ret].sex);
printf("請(qǐng)輸入年齡:》\n");
scanf("%d",(pc-data[ret].age));
printf("請(qǐng)輸入電話:》\n");
scanf("%s",pc-data[ret].tele);
printf("請(qǐng)輸入地址:》\n");
scanf("%s",pc-data[ret].addr);
printf("成功修改聯(lián)系人\n");
}
這里有一個(gè)不足之處就是要更改就必須全部更改,不能只改一項(xiàng)信息,隨后會(huì)更新升級(jí)。
對(duì)聯(lián)系人信息進(jìn)行排序
//按年齡排序
intCompareOld(constvoid*st1,constvoid*st2)
return(((PeoInfo*)st1)-age-((PeoInfo*)st2)-age);
//按姓名排序
intCompareName(constvoid*st1,constvoid*st2)
returnstrcmp(((PeoInfo*)st1)-name,((PeoInfo*)st2)-name);
//排序信息
voidSortContact(Contact*pc)
qsort(pc-data,pc-sz,sizeof(PeoInfo),CompareName);//這里就按姓名排序
這里的排序比較簡(jiǎn)單,用到了qsort函數(shù),如果對(duì)qsort函數(shù)有疑問(wèn),那之后會(huì)做一個(gè)針對(duì)排序的博客詳細(xì)講解。只需要記得qsort不管數(shù)組是什么類型都可以進(jìn)行排序(字符串,字符,數(shù)組等)。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026云南臨滄市桑嘎藝術(shù)學(xué)校教師招聘9人筆試備考試題及答案解析
- 2026年教電工知識(shí)試題及答案參考
- 2026年湖南交通職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫(kù)附答案
- 2026年安徽工貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性考試模擬測(cè)試卷附答案
- 2026年廣州城建職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)及答案1套
- 2026年山西藥科職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫(kù)附答案
- 2026年江蘇商貿(mào)職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)及答案1套
- 2026年湖南三一工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試模擬測(cè)試卷附答案
- 2026年廣東嶺南職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試模擬測(cè)試卷附答案
- 2026福建福州市倉(cāng)山區(qū)文化旅游投資集團(tuán)有限公司副總經(jīng)理崗位(職業(yè)經(jīng)理人)招聘1人筆試模擬試題及答案解析
- 預(yù)制混凝土構(gòu)件質(zhì)量控制
- 德佑房屋買賣合同
- 健康管理方案設(shè)計(jì)案例分析
- 2024高考英語(yǔ)應(yīng)用文寫作真題手把手:2023全國(guó)乙卷素材
- 玻璃加工公司管理制度
- 七年級(jí)數(shù)學(xué)一元一次方程應(yīng)用題復(fù)習(xí)題及答案
- 儲(chǔ)能電站檢修規(guī)程
- 離婚冷靜期制度的構(gòu)建與完善
- 外掛鋼樓梯專項(xiàng)施工方案
- 企業(yè)盡職調(diào)查內(nèi)容提綱-中英文對(duì)照
- GB/T 18997.1-2020鋁塑復(fù)合壓力管第1部分:鋁管搭接焊式鋁塑管
評(píng)論
0/150
提交評(píng)論