C語言課程設計大作業(yè)_第1頁
C語言課程設計大作業(yè)_第2頁
C語言課程設計大作業(yè)_第3頁
C語言課程設計大作業(yè)_第4頁
C語言課程設計大作業(yè)_第5頁
免費預覽已結束,剩余28頁可下載查看

下載本文檔

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

文檔簡介

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

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

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

4、位、電話號碼和E-MAIL 地址。根據題目的要求程序應該采用結構體數組和文件系統(tǒng)實現。應該有文件的操作功能;在程序 中應該包括輸入、顯示、刪除、查詢、添加、修改、保存、加載和退出的功能。二、概要設計(1) .程序的模塊組成及各個函數的功能:程序的模塊組成:主函數:main();輸出數據函數:printf();讀取數據函數:scanf();顯示記錄函數:Display。;刪除記錄函數:shanchu();查找記錄函數:chaxun();自定義消屏函數:system( “cls ” );自定義輸入函數:input();字符輸入函數:getchar();修改數據函數:xiugai();保存數據函數:

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

6、號:姓名:電話;年齡;郵箱:地址;(3)總體流程圖根據上面的分析,可以將程序系統(tǒng)的設計分為如下幾個模塊:插入、顯示、刪除、查詢、修改、保存和退 出。標準文檔三.詳細設計(1).主菜單;主菜單一般設計得比較簡潔,只提供輸入,處理和輸出部分的函數調用。其中各功能模塊用菜單方 式選擇。流程圖文案大全【程序】Person pe80;int menu_select()char c;dosystem("cls"); 清屏printf("ttt*n");/窗口初始化printf("ttt*歡迎使用通訊錄管理系統(tǒng)! *n");printf("

7、;ttt*printf("ttt*1.printf("ttt*printf("ttt*printf("ttt*添加記錄*5);2.顯示記錄*5);3.刪除記錄*5);4.查詢記錄*5);*n");標準文檔printf("ttt*5.修改記錄*n");printf("ttt*6.保存記錄*n")printf("ttt*7.排序記錄*n")printf("ttt*0.退出程序*n")printf("ttt*11*n");printf("tt

8、請您選擇(0-7):");c=getchar();while(c<'0'11c>'7');return(c-'O');(2)顯示模塊此模塊為顯示所有記錄,流程圖如下void Display(Person per口,int n)Inti;n"); / 格式printf(" 編號t姓名t年齡t電話號碼t通訊地址t電子郵箱n");n");for(i=1;i<n+1;i+)printf("%-8d%-8s%-8s%-18s%-18s%-8sn",peri-1.scor

9、e,,peri-1.age,peri-1.num,peri-1.adds,peri-1.email);if(i>1&&i%10=0) printf("tAn");printf("t");system("pause");printf("tAn"); n");system("pause");(3)修改模塊此模塊先調用查找函數查找到所要修改的信息,然后用戶根據需要修改信息。流程圖如下:void xiugai(Person per口,int n)ch

10、ar s20;int i=0;printf("t請輸入想修改的記錄中的名字:");scanf("%s”,s);/輸入修改人的名字文案大全標準文檔while(strcmp(,s)!=0&&i<n) i+;if(i=n)printf("t通訊錄中沒有此人!n");return;printf("t 編號:");scanf("t%d",&peri.score);printf("t姓名:");scanf("t%s",peri.n

11、ame);printf("t年齡:");scanf("t%s",peri.age);printf("t電話號碼:");scanf("t%s",peri.num);printf("t通訊住址:");scanf("t%s",peri.adds);printf("t電子郵箱:");scanf("t%s",peri.email);printf("t修改成功");(4)插入模塊支持多條信息的插入此模塊為插入信息模塊,插入后再調

12、用保存函數來保存所插入的數據,流程圖文案大全標準文檔int Input(Person per口,int n)int i=0;char sign,x10;while(sign!='n'&&sign!='N')printf("t編號:");scanf("t%d",&pern+i.score);printf("t姓名:");scanf("t%s",pern+);printf("t年齡:");scanf("t%s",

13、pern+i.age);printf("t電話號碼:");scanf("t%s",pern+i.num); printf("t通訊住址:");scanf("t%s",pern+i.adds); printf("t電子郵箱:");scanf("t%s",pern+i.email);文案大全標準文檔gets(x);printf("nt是否繼續(xù)添加?(Y/N)");scanf("t%c",&sign);i+;return(n+i);(

14、5)刪除模塊此模塊先利用查找模塊找到所要刪除的信息,然后根據用戶的選擇來確定是否刪除信息,此 種調用到Save函數。其流程圖如下:int shanchu(Person per口,int n)char s20;int i=0,j;printf("t請輸入想刪除記錄中的名字:");scanf("%s",s);while(strcmp(,s)!=0&&i<n) i+;if(i=n)文案大全標準文檔printf("t通訊錄中沒有此人!n");return(n);for(j=i;j<n-1;j+)s

15、trcpy(perj.num,perj+1.num);strcpy(,perj+1.name);strcpy(perj.age,perj+1.age);strcpy(perj.adds,perj+1.adds);strcpy(perj.email,perj+1.email);printf("ttt已經成功刪除!n");return(n-l);(6)查詢模塊void chaxun(Person per,int n) int m;printf("tn請選擇查詢方式:n");printf("t - 1 n");printf

16、("t|1姓名查詢In");printf("t|2電話查詢In");printf("t|3 地址查詢|n");printf("t | 4 返回 | n");printf("t 1 -n");printf("請選擇:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4)printf("輸入錯誤請重新選擇:”);scanf("%d",&

17、amp;m);文案大全標準文檔if(m=1)char s20;int i=0;printf("t請輸入想查詢的姓名:");scanf("t%s",s);while(strcmp(,s)!=0&&i<n) i+;if(i=n)printf("t通訊錄中沒有此人!n");return;printf("t此人編號:dn",peri.score); / 輸出查詢結果printf("t此人年齡:sn",peri.age);printf("t電話號碼:sn&

18、quot;,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.num,s)!=0&&i<n) i+;if(i=n)printf("t通訊錄中沒有此人!n");return;printf("t文案大全此人編號:dn&qu

19、ot;,peri.score); /輸出查詢結果標準文檔printf("t此人姓名:sn",);printf("t此人年齡:sn",peri.age);printf("t通訊地址:sn",peri.adds);printf("t電子郵箱:sn",peri.email);;if(m=3)char s20;int i=0;printf("t請輸入想查詢的地址:");scanf("t%s",s);while(strcmp(peri.adds,s)!=0&&

20、amp;i<n)i+;if(i=n)printf("t通訊錄中沒有此人!n");return;printf("t此人編號:dn",peri.score); / 輸出查詢結果printf("t此人姓名:sn",);printf("t此人年齡:sn",peri.age);printf("t電話號碼:sn",peri.num);printf("t電子郵箱:sn",peri.email);(7)排序模塊void paixu(Person per口,int n)

21、int i,j;按編號排序:n");for(i=1;i<n+1;i+)文案大全標準文檔for(j=1;j<n-1;j+)if(strcmp(perj.num,perj+1.num)>0)strcpy(per->num,perj.num);strcpy(per->name,);strcpy(per->age,perj.age);strcpy(per->adds,perj.adds);strcpy(per->email,perj.email);strcpy(perj+1.num,per->num);strcpy(pe

22、rj+1.name,per->name);strcpy(perj+1.age,per->age);strcpy(perj+1.adds,per->adds);strcpy(perj+1.email,per->email);printf("排序成功! n");五.測試結果1 .主菜單KXMXMMNXMXMMNKXXKMJOtXXKMXKMMKMNKMMltMMHMMJtMMHMMM*18ffMM苒MM” 歡迎使用通訊錄管理系統(tǒng),錄錄錄錄錄錄濟 記記記記記記記程 加示胃添顯粵一K苴葡MMKM苴MM苴MMMMXNX-XJ<NJ<*X:M=MX

23、1-J MXMMXMMXXMXXMXXM請您選擇-7:2 .顯示所有信息通訊錄記錄表編號 姓名 年齡電話號碼通訊地址電子郵箱3 .插入信息.抑雙迎使用通訊錄管理系統(tǒng),*"X"*KX K X X K * X 翼 X X KN X 耳12345670加示, 添顯萼記記記記記記記程錄錄錄錄錄錄譯XMXXM XHHXXM XHH *算MX*MX苴MX*MMX錄 訊 通LJ+4: 1: 1: 1 錄 靠箱 記:1:1:10 kis 加號訊子 爸姓煮富是否繼續(xù)添加火YJNA4 .查找模塊 第一步:在通訊錄中查找記錄青選擇查詢方式:12 3 4詢詢詢 甘甘杳一 魯址回 姓蠹返青選擇:第二

24、步:詢i i工1 i繼 查鍵 想口防碼址箱顯 入編年口范郵任 父人話訊子按.此電莘nJ選主目第三步: 文案大全第四步:話 -電 的 續(xù)詢上工11繼查:.:,.:鍵福號箱忌入編姓年地整欠人人訊子按此此!請選擇;3查1:二鍵想號嘉碼箱目入編姓年號郵任集A人話子按請此此此5.刪除模塊沮MMMMMXXMX歡迎使用通訊錄管理系統(tǒng)? MMXMMXXMXHMMMMXMXXMMXXXXMXMMMMXNMMXXXXM2.顯示記錄7除記錄3,記錄4.S.修改圮泵 _ " 1 -I. I記錄6.0BHMM*XXXX*XXXXH*XXMXMMXX*XX*MMMXX請您選擇加7二|訊錄中刪除記錄】目蒂人想冊除

25、記錄市的名字;1 已經晟功刪除, 請按任意鍵維續(xù).6.修改模塊第一步標準文檔文案大全芹 歡迎使用通訊錄管理殺統(tǒng),苒m"X"XMi * 請您選擇0-7八5修改通訊錄中的記錄請輸矢想修改的記錄中的名字r 編號二?蛙名二年齡:?Igg? 甬子里f=? 修改成功請按任意鍵繼續(xù). .第二步錄錄?- HJ1人 斷斷此緣 中錄修舅 訊想更曷 挈落 南輸訊技 窗主目IWIR 口->:,I I;工錄錄錄錄錄錄* 己己己己己己己口王 ,"U4'U,1J、'U,U% F 加小輯 添顯掣 *!一12345670"BfifC M M M M M-JHC M

26、Mmf-Jf Mmm-im m m jnt-M jm m ?huc m標準文檔六.課程心得總結剛開始學習C語言,總覺得很難理解,也很難學。在這之前,我們已經學習了一個學期, 對C語言有了一定的了解,但是也僅僅是停留在學習了解的范圍,對里面的好多東西還是很 陌生,并不是很熟練,有著許多欠缺,更多的在運用起來的時候還是感到很不好動手。這次的程序設計實驗是對我們進入大學以來學習程序設計語言結果的一次大檢驗。自己動手發(fā)現和解決問題。通過這,我發(fā)現了自己的許多不足,平時沒有掌握好的知識在這次實 驗中徹底暴露出來,經過不斷思考,不斷查閱資料和上機運行解決其中大部分問題。當然, 還存在一些問題沒有解決。我相

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

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

29、10;/*姓名*/char num15;/*號碼*/char email20; /*郵箱*/char age8; /*年齡*/char adds20; /*地址*/Person;Person pe80;int menu_select()char c;dosystem("cls");printf("ttt*n");/窗口初始化printf("ttt*歡迎使用通訊錄管理系統(tǒng)! *n)printf("ttt*n");printf("ttt*1.添加記錄*n");printf("ttt*printf(&

30、quot;ttt*printf("ttt*printf("ttt*printf("ttt*printf("ttt*printf("ttt*.6.7.0.顯示記錄刪除記錄查詢記錄修改記錄保存記錄排序記錄退出程序*n");*n");*n");*n");*n");*n");*n");標準文檔文案大全printf("ttt*n");printf("tt 請您選擇(0-7):");c=getchar();while(c<

31、9;0'|c>'7');return(c-'O'); void paixu(Person per口,int n)int i,j;按編號排序:n");for(i=1;i<n+1;i+)for(j=1;j<n-1;j+)if(strcmp(perj.num,perj+1.num)>0)strcpy(per->num,perj.num);strcpy(per->name,);strcpy(per->age,perj.age);strcpy(per->adds,perj.adds);st

32、rcpy(per->email,perj.email);strcpy(perj+1.num,per->num);strcpy(perj+1.name,per->name);strcpy(perj+1.age,per->age);strcpy(perj+1.adds,per->adds);strcpy(perj+1.email,per->email);printf("排序成功! n");int Input(Person per口,int n)標準文檔int i=0;char sign,x10;while(sign!='n'&

33、amp;&sign!='N')printf("t編號:");scanf("t%d",&pern+i.score);printf("t姓名:");scanf("t%s",pern+);printf("t年齡:");scanf("t%s",pern+i.age);printf("t電話號碼:");scanf("t%s",pern+i.num);printf("t通訊住址:");

34、scanf("t%s",pern+i.adds);printf("t電子郵箱:");scanf("t%s",pern+i.email);gets(x);printf("nt是否繼續(xù)添加?(Y/N)");scanf("t%c",&sign);i+;return(n+i);void Scan(Person per口,int n)int i;打開文件FILE *fp;if(fp=fopen("record.txt","rb")=NULL)/printf(

35、" 不能打開文件!n");exit;文案大全fscanf(fp,"%d",&n);/ 讀入記錄數/fseek(fp,0,1);for(i=0;i<n;i+)fscanf(fp,"%-5d%-8s%-6s%-13s%-15s%-15sn",peri-1.score,,peri-1 .age,peri-1.num,peri-1.adds,peri-1.email);fclose(fp);printf("tt*文件數據讀入成功!*n");void Display(Person per口

36、,int n)int i;n");/*格式*/printf(" 編號t姓名t年齡t電話號碼t通訊地址t電子郵箱n");n");for(i=1;i<n+1;i+)printf("%-8d%-8s%-8s%-18s%-18s%-8sn",peri-1.score,,peri-1.age,peri-1.num,peri-1.adds,peri-1.email);if(i>1&&i%10=0)printf("tn");printf("t");system

37、("pause");printf("tn");n");文案大全system("pause"); int shanchu(Person per口,int n)char s20;int i=0,j;printf("t請輸入想刪除記錄中的名字:");scanf("%s",s);while(strcmp(,s)!=0&&i<n) i+;if(i=n)printf("t通訊錄中沒有此人!n");return(n);for(j=i;j&l

38、t;n-1;j+)strcpy(perj.num,perj+1.num);strcpy(,perj+1.name);strcpy(perj.age,perj+1.age);strcpy(perj.adds,perj+1.adds);strcpy(perj.email,perj+1.email);printf("ttt 已經成功刪除!n");return(n-1);void chaxun(Person per口,int n)int m;printf("tn請選擇查詢方式:n");printf("t - 1 n");pr

39、intf("t | 1 姓名查詢 I n");文案大全標準文檔printf("t| 2電話查詢 I n");printf("t| 3地址查詢 | n");printf("t | 4 返回 | n");printf("t 1 -n");printf("請選擇:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4)printf("輸入錯誤請重新選擇:”);

40、scanf("%d",&m);if(m=1)char s20;int i=0;printf("t請輸入想查詢的姓名:");scanf("t%s",s);while(strcmp(,s)!=0&&i<n) i+;if(i=n)printf("t 通訊錄中沒有此人!n");return;printf("t此人編號:dn",peri.score);printf("t此人年齡:sn",peri.age);printf("t電話

41、號碼: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.num,s)!=0&&i<n) i+;if(i=n)printf("t通訊錄中沒有此人!n");return;printf("t此

42、人編號:dn",peri.score);printf("t此人姓名:sn",);printf("t此人年齡:sn",peri.age);printf("t通訊地址:sn",peri.adds);printf("t電子郵箱:sn",peri.email);;if(m=3)char s20;int i=0;printf("t請輸入想查詢的地址:");scanf("t%s",s);while(strcmp(peri.adds,s)!=0&&

43、;i<n) i+;if(i=n)printf("t通訊錄中沒有此人!n");return;printf("t此人編號:dn",peri.score);printf("t此人姓名:sn",);printf("t此人年齡:sn",peri.age);文案大全標準文檔printf("t電話號碼:sn",peri.num);printf("t電子郵箱:sn",peri.email);;void xiugai(Person per口,int n)char s20

44、;int i=0;printf("t請輸入想修改的記錄中的名字:");while(strcmp(,s)!=0&&i<n) i+;if(i=n) printf("t通訊錄中沒有此人!n");return;printf("t 編號:");scanf("t%d",&peri.score);printf("t姓名:");scanf("t%s",);printf("t年齡:");scanf("t%s",peri.age);printf("t電話號碼:");scanf("t%s",peri.

溫馨提示

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

評論

0/150

提交評論