c語(yǔ)言程序設(shè)計(jì)實(shí)踐報(bào)告.docx_第1頁(yè)
c語(yǔ)言程序設(shè)計(jì)實(shí)踐報(bào)告.docx_第2頁(yè)
c語(yǔ)言程序設(shè)計(jì)實(shí)踐報(bào)告.docx_第3頁(yè)
c語(yǔ)言程序設(shè)計(jì)實(shí)踐報(bào)告.docx_第4頁(yè)
c語(yǔ)言程序設(shè)計(jì)實(shí)踐報(bào)告.docx_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

中南大學(xué)C語(yǔ)言程序設(shè)計(jì)實(shí)踐報(bào)告題 目 通訊錄程序設(shè)計(jì) 學(xué)生姓名 指導(dǎo)教師 學(xué) 院 專(zhuān)業(yè)班級(jí) 完成時(shí)間 一、 任務(wù)描述 通訊錄程序設(shè)計(jì) 設(shè)計(jì)一個(gè)實(shí)用的小型通訊錄程序,具有添加,查詢(xún)和刪除功能。由姓名,籍貫,電話號(hào)碼1,電話號(hào)碼2,電子郵箱組成,姓名可以由字符和數(shù)字混合編碼。電話號(hào)碼可由字符和數(shù)字組成。實(shí)現(xiàn)功能: (1)系統(tǒng)以菜單方式工作 (2)信息錄入功能 (3)信息瀏覽功能 (4)信息查詢(xún)功能 (5)信息修改功能 (6)系統(tǒng)退出功能二、算法描述設(shè)計(jì)一個(gè)實(shí)用的的小型通訊錄程序必須具備系統(tǒng)以菜單方式工作、信息錄入、信息瀏覽、信息查詢(xún)、信息修改、系統(tǒng)退出功能,那么就需要這樣的函數(shù)來(lái)實(shí)現(xiàn)。因此,我需要自定義這樣的函數(shù)來(lái)解決問(wèn)題,當(dāng)然還會(huì)調(diào)用庫(kù)函數(shù)。在定義函數(shù)的過(guò)程中會(huì)用到選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等基本語(yǔ)句,以及對(duì)結(jié)構(gòu)體數(shù)組的定義等。三、程序設(shè)計(jì) /*頭文件(.h)*/ #include stdio.h /*I/O函數(shù)*/ #include stdlib.h /*標(biāo)準(zhǔn)庫(kù)函數(shù)*/ #include string.h/*字符串函數(shù)*/ #include ctype.h /*字符操作函數(shù)*/ #define M 50 /*定義常數(shù)表示記錄數(shù)*/ typedef struct /*定義數(shù)據(jù)結(jié)構(gòu)*/ char NAME20; /*姓名*/ char EMAIL30; /*郵箱*/ char TELE110; /*電話*/ char TELE210; /*電話*/ char HOMETOWN30; /*籍貫*/ DATA;/*以下是函數(shù)原型*/ int enter(DATA t); /*輸入記錄*/int add(DATA t,int n); /*添加記錄*/int change(DATA t,int n); /*修改記錄*/ int deleter(DATA t,int n); /*刪除記錄*/ void list(DATA t,int n); /*顯示記錄*/ void search(DATA t,int n); /*按姓名查找顯示記錄*/ void qseek(DATA t,int n); /*快速查找記錄*/ void print(DATA temp); /*顯示單條記錄*/ int find(DATA t,int n,char *s) ; /*查找函數(shù)*/ int menu_select(); /*主菜單函數(shù)*/ /*主函數(shù)開(kāi)始*/ main() int i; DATA dM; /*定義結(jié)構(gòu)體數(shù)組*/ int length; /*保存記錄長(zhǎng)度*/ system(cls); for(;)/*無(wú)限循環(huán)*/ switch(menu_select() /*調(diào)用主菜單函數(shù),返回值整數(shù)作開(kāi)關(guān)語(yǔ)句的條件*/ case 1:length=enter(d);break;/*輸入記錄*/ case 2:length=add(d,length); break; /*添加記錄*/ case 3:length=deleter(d,length);break; /*刪除記錄*/ case 4:list(d,length);break; /*顯示全部記錄*/ case 5:search(d,length);break; /*查找記錄*/ case 6:qseek(d,length);break; /*快速查找記錄*/ case 7:length=change(d,length);break; case 8:exit(0); /*如返回值為8則程序結(jié)束*/ /*菜單函數(shù),函數(shù)返回值為整數(shù),代表所選的菜單項(xiàng)*/ * *n); printf( * 1. 錄入聯(lián)系人數(shù)據(jù) 5.按姓名查找 *n); printf( * *n); printf( * 2. 添加聯(lián)系人數(shù)據(jù) 6.快速查找 *n); printf(* *n); printf( * 3. 刪除聯(lián)系人數(shù)據(jù) 7.修改聯(lián)系人數(shù)據(jù) *n); printf( * *n); printf( * 4. 顯示全部聯(lián)系人 8.退出系統(tǒng) *n); printf( * *n); printf(* *n); printf( *n); do printf(n 請(qǐng)輸入您的選項(xiàng)(18):); /*提示輸入選項(xiàng)*/ scanf(%s,s); /*輸入選擇項(xiàng)*/ c=atoi(s); /*將輸入的字符串轉(zhuǎn)化為整型數(shù)*/ while(c8); /*選擇項(xiàng)不在17之間重輸*/ return c; /*返回選擇項(xiàng),主程序根據(jù)該數(shù)調(diào)用相應(yīng)的函數(shù)*/ /*輸入記錄,形參為結(jié)構(gòu)體數(shù)組,函數(shù)值返回類(lèi)型為整型表示記錄長(zhǎng)度*/ int enter(DATA t) int i,n; system(cls); printf(n 請(qǐng)輸入需錄入數(shù)據(jù)的個(gè)數(shù): ); /*提示信息*/ scanf(%d,&n); /*輸入記錄數(shù)*/ printf(n 請(qǐng)輸入數(shù)據(jù):n); /*提示輸入記錄*/ printf(n 姓名 郵箱 電話號(hào)碼1 電話號(hào)碼2 籍貫 n); printf(*-*-*-*-*-*n); for(i=0;in;i+) scanf(%s%s%s%s%s,ti.NAME,ti.EMAIL,ti.TELE1,ti.TELE2,ti.HOMETOWN); /*輸入記錄*/ printf(*-*n); return n; /*返回記錄條數(shù)*/ /*顯示記錄,參數(shù)為記錄數(shù)組和記錄條數(shù)*/ void list(DATA t,int n) int i; system(cls); printf(nn *DATA*n); printf( 姓名 郵箱 電話號(hào)碼1 電話號(hào)碼2 籍貫n); printf( -n); for(i=0;in-1) /*如果整數(shù)i值大于n-1,說(shuō)明沒(méi)找到*/ printf(n 未查找到該記錄! n); else print(ti); /*找到,調(diào)用顯示函數(shù)顯示記錄*/ /*顯示指定的一條記錄*/ void print(DATA temp) system(cls); printf(*n); printf(姓名 郵箱 電話號(hào)碼1 電話號(hào)碼2 籍貫 n); printf(-n); printf(%-20s%-30s%-10s%-10s%-30sn,temp.NAME,temp.EMAIL,temp.TELE1,temp.TELE2,temp.HOMETOWN); printf(*end*n); /*查找函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)以及姓名s */ int find(DATA t,int n,char *s) int i; for(i=0;in-1) /*如果整數(shù)i值大于n-1,說(shuō)明沒(méi)找到*/ printf(n 未查找到該記錄! n); else print(ti); printf( n); printf( 1代表修改姓名!n); printf( 2代表修改郵箱! n); printf( 3代表修改電話號(hào)碼1! n); printf( 4代表修改電話號(hào)碼2! n); printf( 5代表修改籍貫! n); printf( n); do printf(n 請(qǐng)輸入您的選項(xiàng)(15):); /*提示輸入選項(xiàng)*/ scanf(%d,&c); switch(c) case 1:strcpy(stu.NAME,ti.NAME);scanf(%s,ti.NAME);printf(修改成功!n);break; case 2:strcpy(stu.EMAIL,ti.EMAIL);scanf(%s,ti.EMAIL);printf(修改成功!n);break; case 3:strcpy(stu.TELE1,ti.TELE1);scanf(%s,ti.TELE1);printf(修改成功! n);break; case 4:strcpy(stu.TELE2,ti.TELE2);scanf(%s,ti.TELE2);printf(修改成功!n);break; case 5:strcpy(stu.HOMETOWN,ti.HOMETOWN);scanf(%s,&ti.HOMETOWN);printf(修改成功!n);break; while(c5); /*選擇項(xiàng)不在15之間重輸*/ return n;/*刪除函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)*/ int deleter(DATA t,int n) char s20; /*要?jiǎng)h除記錄的姓名*/ int ch=0; int i,j; printf( 請(qǐng)輸入刪除聯(lián)系人姓名: ); /*提示信息*/ scanf(%s,s);/*輸入姓名*/ i=find(t,n,s); /*調(diào)用find函數(shù)*/ if(in-1) /*如果in-1超過(guò)了數(shù)組的長(zhǎng)度*/ printf( n 未找到要?jiǎng)h除的記錄!n); /*顯示沒(méi)找到要?jiǎng)h除的記錄*/ else print(ti); /*調(diào)用輸出函數(shù)顯示該條記錄信息*/ printf( 確認(rèn)是否刪除該聯(lián)系人(10)n); /*確認(rèn)是否要?jiǎng)h除*/ printf( 請(qǐng)輸入你的選項(xiàng):); scanf(%d,&ch); /*輸入一個(gè)整數(shù)0或1*/ if(ch=1) /*如果確認(rèn)刪除整數(shù)為1*/ for(j=i+1;j=i;j-) /*從最后一個(gè)結(jié)點(diǎn)開(kāi)始向后移動(dòng)一條*/ strcpy(tj+1.NAME,tj.NAME); /*將前記錄的姓名復(fù)制到后一條*/ strcpy(tj+1.EMAIL,tj.EMAIL); /*將前記錄的郵箱復(fù)制到后一條*/ strcpy(tj+1.TELE1,tj.TELE1); /*將前記錄的電話復(fù)制到后一條*/ strcpy(tj+1.TELE2,tj.TELE2); /*將前記錄的電話復(fù)制到后一條*/ strcpy(tj+1.HOMETOWN,tj.HOMETOWN); /*將前記錄的籍貫復(fù)制到后一條*/ strcpy(ti.NAME,temp.NAME); /*將新插入記錄的姓名復(fù)制到第i個(gè)位置*/ strcpy(ti.EMAIL,temp.EMAIL); /*將新插入記錄的郵箱復(fù)制到第i個(gè)位置*/ strcpy(ti.TELE1,temp.TELE1); /*將新插入記錄的電話復(fù)制到第i個(gè)位置*/ strcpy(ti.TELE1,temp.TELE2); /*將新插入記錄的電話復(fù)制到第i個(gè)位置*/ strcpy(ti.HOMETOWN,temp.HOMETOWN); /*將新插記錄的籍貫復(fù)制到第i個(gè)位置*/ n+; /*記錄數(shù)加1*/ return n; /*返回記錄數(shù)*/ /*快速查找,參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/ void qseek(DATA t,int n) char s20; int l,r,m; printf( 請(qǐng)輸入需快速查找的聯(lián)系人姓名:); /*提示輸入*/ scanf(%s,s); /*輸入待查找的姓名*/ l=0;r=n-1; /*設(shè)置左邊界與右邊界的初值*/ while(l=r) /*當(dāng)左邊界=右邊界時(shí)*/ m=(l+r)/2; /*計(jì)算中間位置*/ if(strcmp(tm.NAME,s)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論