c語言程序設(shè)計實踐報告.docx_第1頁
c語言程序設(shè)計實踐報告.docx_第2頁
c語言程序設(shè)計實踐報告.docx_第3頁
c語言程序設(shè)計實踐報告.docx_第4頁
c語言程序設(shè)計實踐報告.docx_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

溫馨提示

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

最新文檔

評論

0/150

提交評論