




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
中南大學C語言程序設計實踐報告題 目 通訊錄程序設計 學生姓名 指導教師 學 院 專業(yè)班級 完成時間 一、 任務描述 通訊錄程序設計 設計一個實用的小型通訊錄程序,具有添加,查詢和刪除功能。由姓名,籍貫,電話號碼1,電話號碼2,電子郵箱組成,姓名可以由字符和數字混合編碼。電話號碼可由字符和數字組成。實現功能: (1)系統以菜單方式工作 (2)信息錄入功能 (3)信息瀏覽功能 (4)信息查詢功能 (5)信息修改功能 (6)系統退出功能二、算法描述設計一個實用的的小型通訊錄程序必須具備系統以菜單方式工作、信息錄入、信息瀏覽、信息查詢、信息修改、系統退出功能,那么就需要這樣的函數來實現。因此,我需要自定義這樣的函數來解決問題,當然還會調用庫函數。在定義函數的過程中會用到選擇結構、循環(huán)結構等基本語句,以及對結構體數組的定義等。三、程序設計 /*頭文件(.h)*/ #include stdio.h /*I/O函數*/ #include stdlib.h /*標準庫函數*/ #include string.h/*字符串函數*/ #include ctype.h /*字符操作函數*/ #define M 50 /*定義常數表示記錄數*/ typedef struct /*定義數據結構*/ char NAME20; /*姓名*/ char EMAIL30; /*郵箱*/ char TELE110; /*電話*/ char TELE210; /*電話*/ char HOMETOWN30; /*籍貫*/ DATA;/*以下是函數原型*/ 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) ; /*查找函數*/ int menu_select(); /*主菜單函數*/ /*主函數開始*/ main() int i; DATA dM; /*定義結構體數組*/ int length; /*保存記錄長度*/ system(cls); for(;)/*無限循環(huán)*/ switch(menu_select() /*調用主菜單函數,返回值整數作開關語句的條件*/ 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則程序結束*/ /*菜單函數,函數返回值為整數,代表所選的菜單項*/ * *n); printf( * 1. 錄入聯系人數據 5.按姓名查找 *n); printf( * *n); printf( * 2. 添加聯系人數據 6.快速查找 *n); printf(* *n); printf( * 3. 刪除聯系人數據 7.修改聯系人數據 *n); printf( * *n); printf( * 4. 顯示全部聯系人 8.退出系統 *n); printf( * *n); printf(* *n); printf( *n); do printf(n 請輸入您的選項(18):); /*提示輸入選項*/ scanf(%s,s); /*輸入選擇項*/ c=atoi(s); /*將輸入的字符串轉化為整型數*/ while(c8); /*選擇項不在17之間重輸*/ return c; /*返回選擇項,主程序根據該數調用相應的函數*/ /*輸入記錄,形參為結構體數組,函數值返回類型為整型表示記錄長度*/ int enter(DATA t) int i,n; system(cls); printf(n 請輸入需錄入數據的個數: ); /*提示信息*/ scanf(%d,&n); /*輸入記錄數*/ printf(n 請輸入數據: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; /*返回記錄條數*/ /*顯示記錄,參數為記錄數組和記錄條數*/ 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) /*如果整數i值大于n-1,說明沒找到*/ printf(n 未查找到該記錄! n); else print(ti); /*找到,調用顯示函數顯示記錄*/ /*顯示指定的一條記錄*/ 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); /*查找函數,參數為記錄數組和記錄條數以及姓名s */ int find(DATA t,int n,char *s) int i; for(i=0;in-1) /*如果整數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;/*刪除函數,參數為記錄數組和記錄條數*/ int deleter(DATA t,int n) char s20; /*要刪除記錄的姓名*/ int ch=0; int i,j; printf( 請輸入刪除聯系人姓名: ); /*提示信息*/ scanf(%s,s);/*輸入姓名*/ i=find(t,n,s); /*調用find函數*/ if(in-1) /*如果in-1超過了數組的長度*/ printf( n 未找到要刪除的記錄!n); /*顯示沒找到要刪除的記錄*/ else print(ti); /*調用輸出函數顯示該條記錄信息*/ printf( 確認是否刪除該聯系人(10)n); /*確認是否要刪除*/ printf( 請輸入你的選項:); scanf(%d,&ch); /*輸入一個整數0或1*/ if(ch=1) /*如果確認刪除整數為1*/ for(j=i+1;j=i;j-) /*從最后一個結點開始向后移動一條*/ strcpy(tj+1.NAME,tj.NAME); /*將前記錄的姓名復制到后一條*/ strcpy(tj+1.EMAIL,tj.EMAIL); /*將前記錄的郵箱復制到后一條*/ strcpy(tj+1.TELE1,tj.TELE1); /*將前記錄的電話復制到后一條*/ strcpy(tj+1.TELE2,tj.TELE2); /*將前記錄的電話復制到后一條*/ strcpy(tj+1.HOMETOWN,tj.HOMETOWN); /*將前記錄的籍貫復制到后一條*/ strcpy(ti.NAME,temp.NAME); /*將新插入記錄的姓名復制到第i個位置*/ strcpy(ti.EMAIL,temp.EMAIL); /*將新插入記錄的郵箱復制到第i個位置*/ strcpy(ti.TELE1,temp.TELE1); /*將新插入記錄的電話復制到第i個位置*/ strcpy(ti.TELE1,temp.TELE2); /*將新插入記錄的電話復制到第i個位置*/ strcpy(ti.HOMETOWN,temp.HOMETOWN); /*將新插記錄的籍貫復制到第i個位置*/ n+; /*記錄數加1*/ return n; /*返回記錄數*/ /*快速查找,參數為結構體數組和記錄數*/ void qseek(DATA t,int n) char s20; int l,r,m; printf( 請輸入需快速查找的聯系人姓名:); /*提示輸入*/ scanf(%s,s); /*輸入待查找的姓名*/ l=0;r=n-1; /*設置左邊界與右邊界的初值*/ while(l=r) /*當左邊界=右邊界時*/ m=(l+r)/2; /*計算中間位置*/ if(strcmp(tm.NAME,s)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【天水】2025年甘肅天水師范學院考核招聘高層次人才52人(第二期)筆試歷年典型考題及考點剖析附帶答案詳解
- 【哈爾濱】2025年黑龍江哈爾濱市阿城區(qū)教育系統所屬事業(yè)單位招聘高層次人才32名筆試歷年典型考題及考點剖析附帶答案詳解
- 折蘑菇教學課件
- 圖文處理教學課件
- 文庫發(fā)布:兒童肺炎
- 變阻器參賽教學課件
- 整體護理病歷課件
- 時政熱點的多角度分析
- 中文在機場教學課件
- 【襄陽】2025年湖北襄陽宜城市引進事業(yè)單位急需緊缺人才50人筆試歷年典型考題及考點剖析附帶答案詳解
- 人教版(2023版)初中語文九年級上冊全冊同步練習+單元綜合訓練+專項訓練+期中期未測試合集(含答案)【可編輯可打印】
- 電磁兼容中抗擾度試驗教學課件
- 中國郵政儲蓄銀行理財考試真題模擬匯編(共719題)
- 醫(yī)務科崗前培訓
- 市政雨污水管道清污清淤工程地下有限空間作業(yè)專項方案2020年10月10
- GB/T 8685-2008紡織品維護標簽規(guī)范符號法
- 醫(yī)療器械行業(yè)市場部人員崗位職責
- 旅行社導游帶團操作流程
- 部編版小學道德與法治三年級下冊期末質量檢測試卷【含答案】5套
- 怎樣當好一名師長
- DB21T 3354-2020 遼寧省綠色建筑設計標準
評論
0/150
提交評論