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

下載本文檔

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

文檔簡介

1、手機通訊錄 管理系統(tǒng)一、設(shè)計題目的任務(wù)和內(nèi)容任務(wù) :本程序是非數(shù)值計算型算法設(shè)計,我設(shè)計出了通訊錄管理系統(tǒng)的基本功能,并設(shè)計了簡單的界面。本程 序主要考察對自定義函數(shù)的熟悉程度,本程序主要使用的是數(shù)組的相關(guān)操作,包括結(jié)構(gòu)體數(shù)組的輸入、輸出、 查找、刪除等。我設(shè)計的這個通訊錄系統(tǒng)也初步實現(xiàn)了人員信息的顯示、刪除、查找、修改、添加等必要的功 能。具體要求 : 建立通訊錄信息,信息包含、姓名、分類(1辦公類2、個人類3、商務(wù)類)、電話、電子郵箱等;將通訊錄保存在文件中; 查看功能:可按 1、辦公類 2、個人類 3、商務(wù)類分類查詢,當選中其中一類時,顯示出此類所有數(shù)據(jù)中的姓名和電話號碼。 增加功能:能

2、錄入新數(shù)據(jù)。當錄入重復姓名和電話號碼時,則提示數(shù)據(jù)錄入重復并取消錄入;當通訊錄中超過 15 條信息時,存儲空間已滿,不能錄入新數(shù)據(jù);錄入的新數(shù)據(jù)能按遞增的順序自動進行條目編號。 修改功能:選中某個人的姓名是,可對此人的相應(yīng)數(shù)據(jù)進行修改。 刪除功能:選中某個人的姓名是,可對此人的相應(yīng)數(shù)據(jù)進行刪除并自動調(diào)整后續(xù)條目編號。系統(tǒng)功能需求分析 :查詢:查詢通訊錄記錄添加:添加通訊錄記錄顯示:顯示通訊錄記錄刪除:刪除通訊錄記錄修改:修改通訊錄記錄二、總體設(shè)計思路本系統(tǒng)首先設(shè)計出了主函數(shù),然后根據(jù)去要實現(xiàn)的功能分別設(shè)計拉,顯示、刪除、查找、修改、添 加功能的子函數(shù)。在顯示的函數(shù)設(shè)計過程中首先運用拉文件的讀取

3、等必要的知識通過把文件的內(nèi)容讀取 到內(nèi)存然后打印出來。刪除函數(shù)的設(shè)計是首先從文件內(nèi)找到要刪除的人,然后通過寫一個實現(xiàn)刪除目的 的FOR循環(huán)將該人從內(nèi)存里刪除,然后再用寫的方式打開文件,將內(nèi)存內(nèi)的信息寫入文件,實現(xiàn)刪除。 查找也是先打開文件,用一個字符串對比的方法找出用戶要查找的人,然后打印出來。修改也大體和刪 除相同,添加函數(shù)在設(shè)計時通過申請一片空間,然后通過指針將需要添加的信息添加進去,從而實現(xiàn)添 加功能。系統(tǒng)功能模塊圖:輸入新信息:可輸入新的數(shù)據(jù)。添加:可以添加通訊錄記錄,依次輸入姓名、電話號碼、分類、電子郵箱后,會提示是否繼續(xù)添加。刪除:輸入姓名刪除,輸入欲刪除的那個人的名字后,會自動刪

4、除他(她)的記錄內(nèi)容查詢:可按1、辦公類2、個人類3、商務(wù)類分類查詢修改:輸入欲修改的那個人的名字后,再依次輸入姓名、電話號碼、分類、電子郵箱即可完成修改。下面就是總的程序流程圖 :代碼如下:#i ncludeStri ng.h#defitypede用stru 調(diào)調(diào)用調(diào)用did三、具體設(shè)計選擇(a)#in cludestdio.h1,2執(zhí)行priffO )函 數(shù)結(jié)束開始ata()調(diào)用del()函數(shù)調(diào)用print f_ba ck()ct peopleinchar n ame20;char num20;c|ar sort20; char email30;NPEO;PEOvoid en ter();

5、void men u();void browse();void add();void modify();void del(); modify_data(i nt i,i nt n);void printf_face();void printf_one(int i);void input(int i);void save(int n); load();void printf_sort(int i);void no_input(int i,int n); void name_input(int i,int n); void printf_back();void menu()int n,w1;dop

6、uts(ttt * 手機通訊錄 *n);puts(tt*菜單*nn);puts(tttt1. 輸入新信息 ); puts(tttt2. 查看類型 ); puts(tttt3. 添加信息 ); puts(tttt4. 修改信息 ); puts(tttt5. 刪除信息 ); puts(tttt6. 返回 );puts(nntt*n);printf( 選擇所需功能 (1-6): bb); scanf(%d,&n);if(n6)w1=1;getchar();else w1=0;while(w1=1);switch(n)case 1:enter();break; case 2:browse();brea

7、k;case 3:add();break;case 4:modify();break;case 5:del();break;case 6:exit(0);main()menu();void enter()int i,n;printf( 輸入聯(lián)系人的個數(shù) (0-%d)?:,N-1); scanf(%d,&n);printf(n 現(xiàn)在請開始輸入 nn);for(i=0;in;i+)printf(n 輸入 %d 個聯(lián)系人信息 .n,i+1); input(i);if(i!=0)save(n); printf_back();void browse()int i,k,n;PEO p;n=load();p

8、rintf(nn選擇類型sort(a:辦公類 b:個人類 c:商業(yè)類):);scanf(%s,p.sort);printf(ntNamenumn);for(i=0;in;i+) if(strcmp(p.sort,peoi.sort)=0)k=i;printf_sort(k);printf(n);printf(nn); menu();void add()int i,k,m,n,j;FILE *fp;n=load();printf( 您要添加多少個聯(lián)系人信息 (1-%d)?:,N-n);scanf(%d,&m);k=m+n-1;for(i=n;iN-1)printf( 儲存已滿,不能添加新信息 )

9、;break;printf(n 輸入 %d 個聯(lián)系人記錄 .n,i-n+1);input(i);if(fp=fopen(shouji.txt,ab)=NULL)printf( 無法打開文件 n); for(j=n;ji;j+) if(fwrite(&peoj,sizeof(struct people),1,fp)!=1) printf( 文件讀寫出錯 n); fclose(fp); printf_back();void modify()int i,k,n,w0=1,w1,w2=0;FILE *fp;PEO p;n=load();dok=-1;printf_face();for(i=0;in;i

10、+) if(i!=0)&(i%5=0) printf(nn 請記住你要修改的聯(lián)系人姓名 ,按任意鍵繼續(xù) .); getchar(); puts(nn);printf_one(i);doprintf(nn 請輸入您所需修改的聯(lián)系人姓名! name:); scanf(%s,);for(i=0;in;i+) if(strcmp(,)=0) k=i; p=peoi;if(k=-1)printf(nn 輸入錯誤!請重新輸入 ); while(k=-1); printf_face(); printf_one(k);w1=modify_data(k,n); if(w

11、1=1) printf(nSuccessfuL_A.nn 確認需要修改其他信息?nnt1).是 2).返回 tbb);scanf(%d,&w0);w2=1;elsew0=0;if(w2=1) peok=p;if(w0!=1&w2=1)save(n); while(w0=1); menu();void del()PEO p;FILE *fp;int k,w1,w0=0,w2=0,n,i;n=load();dok=-1;printf_face();for(i=0;in;i+)if(i!=0)&(i%5=0)printf(nn 請記住你要刪除的聯(lián)系人姓名,按任意鍵繼續(xù) );getchar();put

12、s(nn);printf_one(i);doprintf(nn 請輸入需要刪除的聯(lián)系人姓名 name:); scanf(%s,);for(i=0;inn 1).姓名 2).電話 3).類型4) .郵箱地址n 5).所有數(shù)據(jù) 6) .取消并返回 );printf( 請選擇你要修改的選項 (1-6):bb);scanf(%d,&c);if(c6|c6|c1);doswitch(c)case 1:name_input(i,n);break;case 2:no_input(i,n);break;case 3:printf(sort:);scanf(%s,peoi.sort);break;c

13、ase 4:printf(email:);scanf(%s,peoi.email);break;case 5:input(i);break; puts(nNow:n); printf_face(); printf_one(i);printf(n 確認修改? ?nnt1). 是 2).重新修改3). 立即返回bb);scanf(%d,&w1);while(w1=2);return(w1);void printf_face()printf(nt 姓名 電話 類型 郵箱地址 n);void printf_one(int i)printf(%10s %14s %10s %10s,,p

14、eoi.num,peoi.sort,peoi.email); printf(n);void input(int i)name_input(i,i);no_input(i,i);printf(sort(a:辦公類 b:個人類 c:商業(yè)類):);scanf(%s,peoi.sort);printf(email:);scanf(%s,peoi.email);void save(int n)FILE *fp;int i;if(fp=fopen(shouji.txt,wb)=NULL)printf(nCannot open filen);return NULL;for(i=0;in;i+)if(peoi

15、.name0!=0)if(fwrite(&peoi,sizeof(struct people),1,fp)!=1) printf(file write errorn);fclose(fp);load()FILE *fp;int i;if(fp=fopen(shouji.txt,rb)=NULL)printf(nCan not open filen);return NULL;for(i=0;!feof(fp);i+)fread(&peoi,sizeof(struct people),1,fp);fclose(fp);return(i-1);void printf_sort(int i)print

16、f(%10s %14s,,peoi.num);void no_input(int i,int n)int j,w1,k;dow1=0;printf(NO.:);scanf(%s,peoi.num);for(j=0;peoi.numj!=0;j+)if(peoi.numj9)puts(“輸入錯誤!只能輸入數(shù)字(0-9).請重新輸入!n);w1=1;break;if(w1!=1)for(k=0;kn;k+) if(k!=i&strcmp(peok.num,peoi.num)=0) puts( 這個記錄不存在,請重新輸入 !n);w1=1;break;while(w1=1);voi

17、d name_input(int i,int n)int k,w1;dow1=0; printf(Name.:); scanf(%s,); for(k=0;kn;k+)if(k!=i&strcmp(,)=0)puts( 這個記錄不存在,請重新輸入!n);w1=1;break;while(w1=1);void printf_back()prin tf(nntSuccessful. A_Ann);menu();四、界面分析1、開始界面2、輸入功能3、查看功能4、添加功能5、修改功能6、刪除功能7、返回五、心得體會本次的 C 程序?qū)嵲O(shè)計實驗是我進

18、入大學以來第一次獨立設(shè)計的實驗。通過自己動手,發(fā)現(xiàn)和解決問題,我 發(fā)現(xiàn)了自己的許多缺陷與不足。平時沒有掌握好的知識在這次實驗中徹底暴露出來。在經(jīng)過不斷思考和總結(jié), 以及不斷查閱資料和上機運行,嘗試再嘗試的過程中,我終于解決其中大部分問題, 但是還是存在一些問題無 法解決。但我相信,在今后的自我學習過程中能夠解決好它們。當我選擇手機通訊錄管理系統(tǒng)這個題目時, 一開始想運用大量子函數(shù)及指針來完成, 但是在仔細的構(gòu)思之 后,覺得不一定要用很多子函數(shù)解決問題,于是改變了編程思路,令程序設(shè)計起來沒有那么復雜,界面看起來 也清爽整潔多了。通過結(jié)構(gòu)體的使用,令定義方便簡潔;通過大量的使用if和while、dowhile、switch case語句后,充分體會了他們的強大功能與作用;指針的運用也給設(shè)計帶來了方便。當然還有不少 文件的讀寫問題,不過通過不斷測試以及上網(wǎng)查詢之后都順利解決了。在 C 課程設(shè)計過程中,遇到的許許多多的困難都讓人抓狂。在軟件一次次的調(diào)試失敗下想放棄的念頭也 不斷出現(xiàn),但最后我還是讓自己堅持了下來,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論