C語言課程設計報告大作業(yè)_第1頁
C語言課程設計報告大作業(yè)_第2頁
C語言課程設計報告大作業(yè)_第3頁
C語言課程設計報告大作業(yè)_第4頁
C語言課程設計報告大作業(yè)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、鄭州大學課程報告課程名稱:C 語言程序設計專業(yè)班級:(15)班學生姓名:謝*學號:20127611*任課教師:.趙*學期:2012-2013-2課程報告任務書題 目通訊錄管理系統(tǒng)主要內(nèi)容開發(fā)一個通訊錄管理系統(tǒng),基本信息包括:編號、姓名、性別、出生年月、固定電話、手機號、電子郵件等基本信息(也可以根據(jù)自己情況進行擴充)。使之能提供以下 基本功能:(1)通訊錄等信息錄入功能 (注:數(shù)據(jù)等要求用文件保存)輸入(2) 通訊錄信息的瀏覽功能 輸出(3)查詢功能(至少一種查詢方式)、排序功能(至少一種排序方式):按電話號碼進行查詢 按姓名查詢 等按照年齡排序 按姓名排序等(4)通訊錄條目的刪除與修改等擴展

2、功能:可以按照自己的程度進行擴展。比如( 1)簡單的權限處理 (2)報表打 印功能(3)模糊查詢,如姓張的人員等;或者給定電子郵件的部分進行查詢等(4)給定指定年齡范圍之內(nèi)的查詢等等。總之,可以根據(jù)自己需求進行分析功能,成績評定按照難度進行區(qū)分。任務要求一、 提交材料應包括:(1)系統(tǒng)源代碼(2)課程報告二、整個設計過程具體要求(1) 需求分析要求學生對案例系統(tǒng)進行分析,設計出需要完成的功能,完善 各個模塊的調(diào)用關系;(2) 設計過程要求學生進一步明確各模塊調(diào)用關系,進一步完善模塊函數(shù)細節(jié) (函數(shù)名、參數(shù)、返回值等)(3)實現(xiàn)過程 要求學生養(yǎng)成良好的編碼習慣、完成各個模塊并進行測試,最終 完成

3、系統(tǒng)整體測試;(4)總結階段按照要求完成系統(tǒng)設計和實現(xiàn)報告,并進行總結、答辯。成績評定報告撰寫情況(30分)系統(tǒng)完成情況(30分)答辯情況(40分)總分內(nèi)容20分規(guī)范程度5分程序測試5分基本功能20分擴展功能10分自述情況10分答辯情況30分成績評定教師:需求分析1, 具有數(shù)據(jù)的插入、修改、刪除、顯示和查詢功能的電話簿管理程序。2, 數(shù)據(jù)包括:人名、工作單位、電話號碼和E-MAIL地址。3, 可對記錄中的姓名和電話號碼進行修改。4, 可增加和刪除記錄。5, 可顯示所有的保存記錄。6, 可按人名或電話號碼進行查詢。分析建議采用結構體數(shù)組和文件系統(tǒng)實現(xiàn)。結構體成員包括人名、工作單位、電話號碼和E-

4、MAIL 地址。根據(jù)題目的要求程序應該采用結構體數(shù)組和文件系統(tǒng)實現(xiàn)。應該有文件的操作功能;在程序 中應該包括輸入、顯示、刪除、查詢、添加、修改、保存、加載和退出的功能。二、概要設計(1) 程序的模塊組成及各個函數(shù)的功能:程序的模塊組成:主函數(shù):mai n();輸出數(shù)據(jù)函數(shù):prin tf();讀取數(shù)據(jù)函數(shù):sea nf();顯示記錄函數(shù):Display。;刪除記錄函數(shù):sha nchu();查找記錄函數(shù):chaxu n();自定義清屏函數(shù):system( “els ”);自定義輸入函數(shù):in put();字符輸入函數(shù):getchar();修改數(shù)據(jù)函數(shù):xiugai();保存數(shù)據(jù)函數(shù):baocu

5、 n();排序數(shù)據(jù)函數(shù):paixu();各函數(shù)的主要功能:輸出數(shù)據(jù)函數(shù):隨時輸出數(shù)據(jù);讀取數(shù)據(jù)函數(shù):讀取輸入的數(shù)據(jù)信息;顯示菜單函數(shù):顯示可供選擇的主菜單;顯示記錄函數(shù):顯示通訊錄所有輸入的信息;刪除記錄函數(shù):顯示要刪除的通訊錄所有輸入的信息;查找記錄函數(shù):顯示要查詢的通訊錄所有輸入的信息;自定義清屏函數(shù):清除前面運行留下的信息;自定義輸入函數(shù):輸入通訊錄的成員;字符輸入函數(shù):從終端輸入一個字符,遇回車鍵返回;修改數(shù)據(jù)函數(shù):修改通訊錄的成員信息;保存數(shù)據(jù)函數(shù):保存通訊錄的成員信息;排序數(shù)據(jù)函數(shù):排序通訊錄的成員信息;(2) 程序中的抽象數(shù)據(jù)類型的定義:用戶的狀態(tài)結構用戶編號:姓名:電話;年齡;

6、郵箱:地址;(3) 總體流程圖根據(jù)上面的分析,可以將程序系統(tǒng)的設計分為如下幾個模塊:插入、顯示、刪除、查詢、修改、保存和退 出。詳細設計(1).主菜單;主菜單一般設計得比較簡潔,只提供輸入,處理和輸出部分的函數(shù)調(diào)用。其中各功能模塊用菜單方 式選擇。流程圖【程序】Person pe80;int menu _select()char c;dosystem(cls); /清屏* n);窗口初始化prin tf(ttt*歡迎使用通訊錄管理系統(tǒng)! *n);prin tf(ttt*i*n)prin tf(ttt* 1添加記錄*n)prin tf(ttt*1 2.顯示記錄I* n);prin tf(ttt*

7、1 3.刪除記錄1*n);prin tf(ttt*1 4.查詢記錄|*n);prin tf(ttt*1 5.修改記錄I*n)prin tf(ttt*1 6.保存記錄I*n)prin tf(ttt*1 7.排序記錄1*n)prin tf(ttt*1 0.退出程序1*n)prin tf(ttt*n)printf(tt請您選擇(0-7):);c=getchar();while(c7);return(c-O);(2)顯示模塊此模塊為顯示所有記錄,流程圖如下void Display(Pers on per,i nt n)In ti;n); / 格式printf(編號t姓名t年齡t電話號碼t通訊地址t電子

8、郵箱n);n);for(i=1;i 1 &i %10=0) printf(tn);prin tf(t);system(pause);printf(tn); n);system(pause);(3) 修改模塊此模塊先調(diào)用查找函數(shù)查找到所要修改的信息,然后用戶根據(jù)需要修改信息。流程圖如下:void xiugai(Pers on per,i nt n)char s20;int i=0;prin tf(t請輸入想修改的記錄中的名字:); sca nf(%s,s);/輸入修改人的名字while(strcmp(peri. name,s)!=O&i n) i+;if(i=n)printf(t通訊錄中沒有此人

9、!n);return;prin tf(t 編號:);sca nf(t%d,&peri.score);printf(t姓名:);sca nf(t%s,peri. name);prin tf(t年齡:);sca nf(t%s,peri.age);printf(t電話號碼:);sca nf(t%s,peri. num);printf(t通訊住址:);sca nf(t%s,peri.adds);printf(t電子郵箱:);sca nf(t%s,peri.email);prin tf(t修改成功);(4) 插入模塊支持多條信息的插入此模塊為插入信息模塊,插入后再調(diào)用保存函數(shù)來保存所插入的數(shù)據(jù), 流程圖

10、int In put(Pers on per,i nt n)int i=0;char sig n, x1O;while(sig n!= n&sig n!=N)prin tf(t編號:);sca nf(t%d,&per n+i.score);printf(t姓名:);sca nf(t%s,per n+i. name);prin tf(t年齡:);sca nf(t%s,per n+i.age); printf(t電話號碼:);sca nf(t%s,per n+i. num); printf(t通訊住址:);sca nf(t%s,per n+i.adds); printf(t電子郵箱:);sca n

11、f(t%s,per n+i.email);gets(x);printf(nt是否繼續(xù)添加?(Y/N);sca nf(t%c,&sig n);i+;return( n+i);(5) 刪除模塊此模塊先利用查找模塊找到所要刪除的信息,然后根據(jù)用戶的選擇來確定是否刪除信息,此char s20;int i=0,j;prin tf(t請輸入想刪除記錄中的名字:);sca nf(%s,s);while(strcmp(,s)!=0&in) i+;if(i=n)printf(t通訊錄中沒有此人!n);return( n);for(j=i;j n-1;j+)strcpy(perj. nu m,p

12、erj+1. nu m);strcpy(perj. name,perj+1. name);strcpy(perj.age,perj+1.age);strcpy(perj.adds,per|j+1.adds);strcpy(perj.email,perj+1.email);printf(ttt已經(jīng)成功刪除!n);return( n-1);(6)查詢模塊void chax un( Pers on per,i nt n)int m;printf(tn請選擇查詢方式:n);prin tf(tprin tf(ti1 1-n n);- 姓名查詢丨n);prin tf(t1 2-電話查詢In);prin t

13、f(t1 3- 地址杳詢In);prin tf(t1 4-返回In);prin tf(ti1n);printf(請選擇:);sca nf(%d,&m);while(m!=1 &m!=2&m!=3&m!=4)printf(輸入錯誤請重新選擇:);sca nf(%d,&m);if(m=1)char s20;int i=0;printf(t請輸入想查詢的姓名:);sca nf(t%s,s);while(strcmp(peri. name,s)!=0&in) i+;if(i=n)printf(t通訊錄中沒有此人!n);return;printf(t此人編號:dn,peri.score); /輸出查詢結

14、果printf(t此人年齡:%sn,peri.age);printf(t電話號碼:%sn,peri.num);printf(t通訊地址:%sn,peri.adds);printf(t電子郵箱:%sn,peri.email);if(m=2)char s20;int i=0;printf(t請輸入想查詢的電話:);scanf(t%s,s);while(strcmp(peri. nu m,s)!=0&i n) i+;if(i=n)printf(t通訊錄中沒有此人!n);return;printf(t此人編號:%dn,peri.score); /輸出查詢結果for(i=1;i n+1;i+)prin

15、tf(t此人姓名:%sn,peri. name);prin tf(t此人年齡:%sn,peri.age);prin tf(t通訊地址:%sn,peri.adds);prin tf(t;電子郵箱:%sn,peri.email);if(m=3)char s20;int i=0;printf(t請輸入想查詢的地址:);sca nf(t%s,s);while(strcmp(peri.adds,s)!=0&i0) strcpy(per- nu m,perj. nu m); strcpy(per- n ame,perj. name); strcpy(per-age,perj.age); strcpy(pe

16、r-adds,perj.adds);strcpy(per-email,perj.email);strcpy(perj+1. nu m,per- nu m); strcpy(perj+1. name,per- n ame); strcpy(perj+1.age,per-age); strcpy(perj+1.adds,per-adds);strcpy(perj+1.email,per-email);printf(排序成功! n);五.測試結果1.主菜單HH 歡迎使用通訊錄管理系統(tǒng)辛 mXM12345670錄錄錄錄錄錄養(yǎng) 記記記記記記記程 添顯翌_0KX IClOCItlCKiXKXIOtmCX

17、Jt賈鼻XM 冀 MMXMJIWX 3Otlt WK F:MwM-M-M請您選擇 =2. 顯示所有信息通訊錄記錄表編號 姓名 年齡電話號碼通訊地址電子郵箱青按任意鍵繼續(xù)3. 插入信息歡迎使用 通訊錄管理系?充1茵mmw貝良貝貝見貝貝良X算料X XX X算料X XX X X EXXXiOIEiOtEaOtHiM:X XKX 耳1 ; UKXiMWKiMJeXiMXKiMW12345670錄錄錄錄錄錄養(yǎng) 記記記記記記記程 加示舅添顯嚳一3XEiCX W XXKXX W XXW X請您選擇他-7川錄訊通LJ+4: 1: 1: 1 錄 翼箱 記: 1:i: 1口加號訊子 fMH是否繼綾添加恥24. 查

18、找模塊 第一步:在通訊錄中查找記錄青選擇查詢方式:12 3 4詢詢詢 音吾杳一 魯址回 姓K青選擇:第二步:名 姓 的 續(xù) 1111 杳一健 想dg=咼站w=曷 人編年爲郵任 費人話訊子按此電UJ選第三步:話 - 電 的 續(xù) 詢11111繼 查:譴 想號鐘思 入編姓年地黑 費人人訊子按 此此!glM請選擇汀址 地 的11111查:鍵想號耆碼聾入編姓年號郵任契A人話子按請此此此#W5.刪除模塊:MXltXiOtacxxiOiJCKJtiOiXitK弭XXXXX耳XXX翼xxMEXJfiOiEitlOtXMtllKME貝 M. .WWTM. 請您選擇0-7? =2奧訊錄中則除記富爺入想刪徐記錄市的

19、名字注 已經(jīng)哉功刪除T 請按任意鍵繼續(xù)-6修改模塊錄錄錄錄錄錄養(yǎng) 記記記記記記記程 加示常添顯璽-H-XXXXXXXX具XXXXX捕XX歡迎使用通訊錄管理系統(tǒng)iEKmC*M-M-Xlt !KX4H*4C-M-*tK-M-*4HC-*#12345670錄錄錄錄錄錄番 己己nJ己己nJ己口王 -u4urhlJrur_uF 添顯響MMMiHHt*#*HRt*M-*MMMMMM:MX Jf Mi itJOOtXiMXiOTHiitJCKlf Mitt*#4H*-*W:KiowaotMrx請您選擇m瀉修改通訊錄中的記錄 誼輸憑相修改的記錄中的名字江請按任意鍵繼續(xù).M=年齡:? 電詰號碼:? 通訊住址:?

20、 電子酈|洱 修改成功第二步的i己錄中的名字 fi通人錄任改輸訊按參青冃IP L i六.課程心得總結剛開始學習C語言,總覺得很難理解,也很難學。在這之前,我們已經(jīng)學習了一個學期, 對C語言有了一定的了解,但是也僅僅是停留在學習了解的范圍,對里面的好多東西還是很 陌生,并不是很熟練,有著許多欠缺,更多的在運用起來的時候還是感到很不好動手。這次的程序設計實驗是對我們進入大學以來學習程序設計語言結果的一次大檢驗。自己動手發(fā)現(xiàn)和解決問題。通過這,我發(fā)現(xiàn)了自己的許多不足,平時沒有掌握好的知識在這次實 驗中徹底暴露出來,經(jīng)過不斷思考,不斷查閱資料和上機運行解決其中大部分問題。當然, 還存在一些問題沒有解決

21、。我相信在以后的學習能夠解決好它們。課堂上許多關于C語言的語法規(guī)則,聽起來十分枯燥無味,也不容易記住,死記硬背是 不可取的。然而要使用 C語言這個工具解決實際問題,又必須掌握它。通過上機練習,對于 語法知識有了感性的認識,加深對它的理解,在理解的基礎上就會自然而然地掌握C語言的語法規(guī)定。對于一些內(nèi)容自己認為在課堂上聽懂了,但上機實踐中會發(fā)現(xiàn)原來理解的偏差, 更加鞏固了學過的知識,而且在設計的時候?qū)W要系統(tǒng)的知識,也是一個較大的挑戰(zhàn),某一方 面知識的欠缺都將影響到整個程序的設計。這次的大作業(yè)讓我學到了很多有用的東西, 鞏固了之前的學習,通過這個程序的學習, 使我進一步理解和運用結構化程序設計的思想

22、和方法。相信對以后初步掌握開發(fā)一個小型實 用系統(tǒng)的基本方法,學會調(diào)試一個比較長程序的基本方法,學會利用流程圖表示算法,進一 步掌握和提高利用C語言進行程序設計的能力。我認為,這次實習對于我是非常有意義的, 對我個人的影響比較大,對我的動手能力 有了很大的提高。通過這次課程設計,我對很多的函數(shù)有了新的認識,也學會了運用多種函 數(shù)。最后感謝完成大作業(yè)過程中幫助過我的老師和同學。源代碼:#in clude #i nclude#i ncludevstri ng.htypedef structchar score;/*編號*/char n ame10;/*姓名*/char nu m15;/*號碼*/ch

23、ar email20; /*郵箱*/char age8;/*年齡*/char adds20;/*地址*/Pers on;Person pe80;int menu _select()char c;dosystem(cls);*n);/窗口初始化prin tf(ttt*1i*n);prin tf(ttt*1添加記錄*n);prin tf(ttt*1 2.顯示記錄1*n);prin tf(ttt*1 3.刪除記錄丨*n);prin tf(ttt*1 4.查詢記錄丨*n);prin tf(ttt*1 5.修改記錄丨*n);prin tf(ttt*1 6.保存記錄丨*n);prin tf(ttt*1 7

24、.排序記錄丨*n);prin tf(ttt*1 0.退出程序丨*n);prin tf(ttt*歡迎使用通訊錄管理系統(tǒng)! *n);*n);prin tf(ttt* *請您選擇(0-7):);c=getchar();while(cv0|c7);return(c-O);void paixu(Pers on per,i nt n)int i,j;按編號排序:n);for(i=1;i n+1;i+)for(j=1;j0)strcpy(per- nu m,perj. nu m);strcpy(per- n ame,perj. name);strcpy(per-age,perj.age);strcpy(pe

25、r-adds,perj.adds);strcpy(per-email,perj.email);strcpy(perj+1. nu m,per- nu m);strcpy(perj+1. name,per- n ame);strcpy(perj+1.age,per-age);strcpy(perj+1.adds,per-adds);strcpy(perj+1.email,per-email);prin tf(排序成功! n);int In put(Pers on per,i nt n)int i=0;char sig n, x10;while(sig n!= n&sig n!=N)prin tf

26、(t編號:);sca nf(t%d,&per n+i.score);printf(t姓名:);sca nf(t%s,per n+i. name);prin tf(t年齡:);sca nf(t%s,per n+i.age);printf(t電話號碼:);sca nf(t%s,per n+i. num);printf(t通訊住址:);sca nf(t%s,per n+i.adds);printf(t電子郵箱:);sca nf(t%s,per n+i.email);gets(x);printf(nt是否繼續(xù)添加?(Y/N);sca nf(t%c,&sig n);i+;return( n+i);voi

27、d Sca n( Pers on per,i nt n)int i;打開文件FILE *fp;if(fp=fope n(record.txt,rb)=NULL)printf(不能打開文件!n);exit(1);fsca nf(fp,%d,&n);讀入記錄數(shù)fseek(fp,0,1);for(i=0;i n ;i+)fsca nf(fp,%-5d%-8s%-6s%-13s%-15s%-15sn,peri-1.score,peri-1. name,peri-1.age,peri-1. nu m,peri-1.adds,peri-1.email);文件數(shù)據(jù)讀入成功!*n);fclose(fp);pr

28、in tf(tt* *void Display(Pers on per,i nt n)int i;n);/*格式 */ n);printf(編號t姓名t年齡t電話號碼t通訊地址t電子郵箱n);for(i=1;i 1 &i %10=0)printf(tn);prin tf(t);system(pause);printf(tn); n);system(pause); int sha nchu(Pers on per,i nt n)char s20;int i=0,j;prin tf(t請輸入想刪除記錄中的名字:);sca nf(%s,s);while(strcmp(peri. name,s)!=0

29、&i n) i+;if(i=n)printf(t通訊錄中沒有此人!n);return( n);for(j=i;j n-1;j+)strcpy(perj. nu m,perj+1. nu m);strcpy(perj. name,perj+1. name);strcpy(perj.age,perj+1.age);strcpy(perj.adds,perj+1.adds);strcpy(perj.email,perj+1.email);printf(ttt已經(jīng)成功刪除!n);return( n-1);void chax un( Pers on per,i nt n)int m;printf(tn請

30、選擇查詢方式:n);printf(t i - n n);printf(t | 1姓名查詢 I n);prin tf(t1 2-電話查詢1n);prin tf(t1 3-地址杳詢丨n);prin tf(t1 4-返回1n);prin tf(ti1n);printf(請選擇:);sea nf(%d,&m);while(m!=1 &m!=2&m!=3&m!=4)printf(輸入錯誤請重新選擇:);sea nf(%d,&m);if(m=1)char s20;int i=0;printf(t請輸入想查詢的姓名:);sca nf(t%s,s);while(strcmp(peri. name,s)!=0&

31、i n) i+;if(i=n)printf(t通訊錄中沒有此人!n);return;prin tf(t此人編號:%dn,peri.score);prin tf(t此人年齡:%sn,peri.age);prin tf(t電話號碼:%sn,peri. nu m);prin tf(t通訊地址:%sn,peri.adds);prin tf(t;if(m=2)電子郵箱:%sn,peri.email);char s20;int i=0;printf(t請輸入想查詢的電話:);scanf(t%s,s);while(strcmp(peri. nu m,s)!=0&i n) i+;if(i=n)prin tf(

32、t通訊錄中沒有此人!n);return;prin tf(t此人編號:%dn,peri.score);prin tf(t此人姓名:%sn,peri. name);prin tf(t此人年齡:%sn,peri.age);prin tf(t通訊地址:%sn,peri.adds);prin tf(t電子郵箱:%sn,peri.email);if(m=3)char s20;int i=0;printf(t 請輸入想查詢的地址:);sca nf(t%s,s);while(strcmp(peri.adds,s)!=0&in) i+;if(i=n)prin tf(t通訊錄中沒有此人!n);return;pri

33、n tf(t此人編號:%dn,peri.score);prin tf(t此人姓名:%sn,peri. name);prin tf(t此人年齡:%sn,peri.age);printf(t電話號碼:sn,peri.num);printf(t電子郵箱:sn,peri.email);;void xiugai(Pers on per,i nt n)char s20;int i=0;sca nf(%s,s);prin tf(t請輸入想修改的記錄中的名字:);while(strcmp(peri. name,s)!=0&i n) i+;if(i=n) printf(t通訊錄中沒有此人!n);return;prin tf(t編號:);sca nf(t%d,&peri.score); printf(t姓名:);sca nf(t%s,peri. name); prin tf(t年齡:);sca nf(t%s,peri.age); printf(t電話號碼:);sca nf(t%s,peri. num); printf(t通訊住址:);sca nf(t%s,peri.adds); printf(t電子郵箱:);sca nf(t%s,peri.email); prin tf(t修改成功);void baoc un( Pers on per,i n

溫馨提示

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

評論

0/150

提交評論