C語言論文正文1.doc_第1頁
C語言論文正文1.doc_第2頁
C語言論文正文1.doc_第3頁
C語言論文正文1.doc_第4頁
C語言論文正文1.doc_第5頁
已閱讀5頁,還剩29頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

.第一章 緒論1.1 當前應用領域的現狀我們現在如何管理與我們聯系的人的信息呢?有多種方式,比如說,有儲存電話號碼到手機上的,有記錄電話等信息到本子上的,還有用名片夾存放名片的,也有記錄在word文檔中或打印出來的,等等很多種形式。對于存儲電話號碼到手機上的方式,比較方便,隨時隨地可以聯系,不過只能通過電話聯系,沒有記錄其他的聯系方式,如果手機丟了可能就誰也聯系不上了;對于記錄電話等信息到本子上的方式,第一也可能丟失本子,第二是查找起來比較困難,需要人工查找,而且更新時不容易,需要涂改以前記錄的信息,第三格式比較死板,不利于跟隨用戶的需求擴展;對于用名片夾存放名片的形式也是查找起來不方便,有丟失的危險;對于記錄到word文檔或打印出來的,也是擴展性不強,查找起來不方便。如此多的方式我們都感覺有一定的缺陷,那我們如何管理我們的聯系人通訊資料呢?提出一個大膽的假設,如果我們在網絡上建立一個系統提供通訊錄管理功能,這樣我們就可以隨時隨地通過網絡對通訊錄進行管理,而現在我們的手機都逐漸更新換代成可以連接計算機網絡了,這樣我們可以隨時隨地查找任意信息,查找快速,維護方便,丟失手機也不會丟失聯系方式,而且可以根據用戶的需要定制,比較靈活,這個可能是最完美的方案了。1.2 C語言的發展 C語言的前身是ALGOL語言(AL-GOL60是一種面向問題的高級語言)。1963年英國劍橋大學推出CPL語言,此語言在ALGOL語言的基礎上增加了硬件處理能力,同年劍橋大學的馬丁理查德對其進行簡化,提出BCPL語言;1970年美國貝爾實驗室的肯湯姆遜進一步簡化,提出了B語言(取BCPL的第一個字母);1972年美國貝爾實驗室的布朗W.卡尼漢和丹尼斯M.利奇對其完善和擴充,提出了C語言(取BCPL的第二個字母);1987年美國標準化協會指定了C語言標準ANSI C,即現在流行的C語言。自1972年投入使用之后,C語言成為UNIX和XENIX操作系統的主要語言,是當今使用最為廣泛的程序設計語言之一。1.3 C語言的特點(1) C語言是具有低級語言功能的高級語言。C語言既具有高級語言的功能,又具有低級語言的許多功能。它把高級語言的基本機構和語言與低級語言的實用性集合起來,是處于匯編語言和高級語言之間的一種程序設計語言,也可稱其為“中級語言”。(2) C語言簡潔、緊湊、使用方便、靈活。程序書寫形式自由,主要用小寫字母表示,相對其他高級語言源程序代碼量少。(3) 運算符豐富,表達式能力強。C語言共有34種運算符,范圍廣泛,除一般高級語言使用的算術、關系和邏輯運算符外,還可以實現以二進制位為單位的運算,并且具有如a+、b+等單項運算符和+=、-=、*=、/=等復合運算符。(4) 數據結構豐富,便于數據的描述與存儲。C語言具有豐富的數據結構,其數據類型有整型、實型、字符型、數組類型、指針類型、結構體類型、共用體類型等,因此能實現復雜的數據結構的運算。(5) C語言是結構化、模塊化的編程語言。程序的邏輯結構可以使用順尋、分支和循環3種基本結構。C語言程序采用函數結構,便于把整體程序分割成若干相對獨立的功能模塊,為程序模塊間的相互調用以及數據傳遞提供了便利。(6) C語言程序中,可使用宏定義編譯預處理語句、條件編譯預處理語句。(7) 可移植性好。與匯編語言相比,C程序基本上不作修改就可以運行于各種型號的計算機和各種操作系統。 C語言也存在一些不足之處,例如運算符及其優先級過多、語法定義不嚴格等,對于初學者有一定的困難。 由于C語言具有上述特點,因此C語言得到了迅速推廣,成為人們編寫大型軟件的首選語言之一。用C語言編寫簡單的接口程序.在當今,流行的編程軟件種類繁多,它們編程方便、易于維護,但是在與硬件直接打交道和編制系統軟件時卻束手無策,于是C語言就有了用武之地。C語言作為匯編語言與高級語言之間的一種過渡語言,兼有匯編語言的高效和高級語言的方便。在通訊中,為了保證行運安全可靠,標準的串行口必須具有許多握手信號和狀態信息。這是因為通訊的各個計算機CPU速度不一樣(這會導致“錯幀”)以及發送機發送數據速度比接收機接收速度快(這會導致“過沖”)。為解決這個問題,我們采用一個簡單的握手信號,即發送機每次僅發送半個字節(低4位)的數據,而另外半個字節(高4位)則用來傳送信息。我們可以對信息位(高4位)進行如下簡單的編碼:0H:發送的是新的半個字節數據1H:重新發送上次傳送錯誤的數據2H:文件名結束3H:文件結束這樣,每當發送機發送一個字節以后,就等待接受機發回送信號,這回送信號就是發送機發送過來的那個字節。發送機接收到回送信號后,把它與剛發送的字節相比較,如果相同,就發送新的半個字節,否則就重新發送。新數據與舊數據通過信息位來區分。第二章 問題定義2.1 設計題目的內容、任務及具體要求本程序是非數值計算型算法設計,我設計出了通訊錄管理系統的基本功能,并設計了簡單的界面。本程序主要考察對自定義函數的熟悉程度,本程序主要使用的是數組的相關操作,包括結構體數組的輸入、輸出、查找、刪除等。我設計的這個通訊錄系統也初步實現了人員信息的顯示、刪除、查找、修改、添加等必要的功能。記錄通訊錄內的人員的學號、姓名、電話號碼、家庭住址。顯示所有人員的信息。通過輸入姓名查找人員信息。通過輸入姓名查找到要刪除的人員信息,然后可以進行刪除。通過輸入姓名查找到要修改的人員信息,然后可以進行修改。添加人員信息。第三章 基本思路與詳細設計3.1 基本思路本系統首先設計出了主函數,然后根據去要實現的功能分別設計,顯示、刪除、查找、修改、添加功能的子函數。在顯示的函數設計過程中首先運用拉文件的讀取等必要的知識通過把文件的內容讀取到內存然后打印出來。刪除函數的設計是首先從文件內找到要刪除的人,然后通過寫一個實現刪除目的的FOR循環將該人從內存里刪除,然后再用寫的方式打開文件,將內存內的信息寫入文件,實現刪除。查找也是先打開文件,用一個字符串對比的方法找出用戶要查找的人,然后打印出來。修改也大體和刪除相同,添加函數在設計時通過申請一片空間,然后通過指針將需要添加的信息添加進去,從而實現添加功能。下面就是總的程序流程圖:調用insert()函數調用modify()函數調用found()函數選擇(a)執行printf()函數開始執行printf()退出系統調用output()函數調用del()函數圖3-1 通訊錄管理總的程序流程圖3.2 各功能實現程序流程圖3.2.1主函數模塊的流程圖進入主函數intmain()開始輸入指令(a)執行printf()函數執行printf()退出系統調用insert()函數調用modify()函數調用found()函數調用del()函數調用output()函數a!=.5.6 圖3-2-1 主函數流程圖3.2.2 void output()函數流程圖開始If語句判斷執行printf()結束執行while()循環結束執行for()循環圖3-2-2 void output()函數流程圖3.3.3 void del()函數流程圖開始結束執行printf()結束執行for()循環執行if()執行for()循環執行printf()執行while()循環執行scanf()執行dowhile()循環語句執行printf()結束執行if()圖3-2-3 void del()函數流程圖3.2.4 void found()函數流程圖開始執行if()執行printf()結束執行while()結束執行printf()執行scanf()圖3-2-4 void found()函數流程圖3.2.5 void modify函數流程圖開始執行if()執行printf()結束執行while()執行printf()執行scanf()執行for()執行if()執行if()執行printf()結束執行for()循環結束 圖3-2-5 void modify函數流程圖3.2.6 void insert()函數流程圖開始執行if()執行printf()結束申請空間執行printf()執行scanf()寫入文件結束圖3-2-6 void insert()函數流程圖第四章 代碼實現4.1 結構體變量和一些函數的定義以下為所調用的頭文件:#include /*I/O函數*/#include /*字符串函數*/ #include 軟件中使用了結構體和結構體數組,如:typedef struct /*聲明結構體類型*/char num6; char name10; char phone13; char addr30; datatype; /*聲明數據類型*/對用戶的信息進行保存,它們都以二進制的形式讀寫。其中:char num6; char name10; char phone13; char addr30; 分別對學號、姓名、電話與住址進行存儲。其中還使用了大量的子函數,例如:int menu_select( ); /*菜單函數*/linklist createlist(void) /*建立函數*/void insertnode(linklist head,listnode *p); /*添加函數*/void delnode(linklist head); /*刪除函數*/void printlist(linklist head); /*輸出函數*/void save() /*存儲函數*/4.2 完成各功能的子函數編碼分析4.2.1 菜單函數int menu_select() int sn;printf( n);printf( n); printf( n); printf(ntt 通訊錄管理系統 ); printf( n); printf(ntt*主菜單*);printf(ntt*1.建立通訊錄 2.添加菜單*); printf(ntt*3.查詢菜單 4.刪除菜單*); printf(ntt*5.輸出名單 6.數據存盤*);printf(ntt*0.退出本通訊錄*); printf(ntt*); printf(n);printf(ntt請選擇操作0-6: ); for(; ;) scanf(%d,&sn);if(sn6) printf(ntt輸入錯誤!n);else break; return sn; 圖4-2-1 菜單函數界面圖4.2.2 建立函數linklist createlist(void) linklist head=(listnode *)malloc(sizeof(listnode); listnode *p,*rear; int flag=1; rear=head; while(flag=1) p=(listnode *)malloc(sizeof(listnode); printf(請輸入學號:);scanf(%s,p-data.num);printf(請輸入姓名:);scanf(%s,);printf(請輸入電話號碼:);scanf(%s,p-data.phone):printf(請輸入);scanf(%s,p-data.addr);rear-next=p;rear=p; printf(ntt繼續建表嗎? (1.是/0.不):); scanf(%d,&flag);if(flag=1)printf(ntt創建成功!n); rear-next=NULL; return head; 圖4-2-2 建立函數界面圖4.2.3 添加函數void insertnode(linklist head,listnode *p) listnode *p1,*p2; p1=head; p2=p1-next; while(p2!=NULL & strcmp(p2-data.num,p-data.num)next; p1-next=p;p-next=p2; printf(ntt插入成功!n); 圖4-2-3 添加函數界面圖4.2.4 查找函數listnode * listfind(linklist head) listnode * p; char phone15; char name10; int xz; printf(ntt-n); printf(ntt 1.號碼查詢n); printf(ntt 2.姓名查詢n); printf(ntt-n); printf(ntt請選擇: );p=head-next; scanf(%d,&xz); if (xz=1) printf(ntt請輸入要查找的號碼: ); scanf(%s,phone);while(p & strcmp(p-data.phone,phone)next; if (p=NULL | strcmp(p-data.phone,phone)0) p=NULL; else if(xz=2) printf(ntt請輸入要查詢者的姓名: ); scanf(%s,name); while(p & strcmp(,name)!=0) p=p-next; return p; 圖4-2-4 查找函數界面圖4.2.5 刪除函數void delnode(linklist head) int jx; listnode *p,*q; p=listfind(head); if(p=NULL) printf(ntt沒有要刪除的通訊者!:n); return; printf (ntt真的要刪除該結點嗎?(1.是/0.不):); scanf(%d,&jx); if (jx=1) q=head; while(q!=NULL & q-next!=p) q=q-next; q-next=p-next; free(p); printf(ntt通訊者已被刪除!n); 圖4-2-5 刪除函數界面圖4.2.6 輸出函數void printlist(linklist head) listnode * p; p=head-next; printf(ntt 編號 姓名 電話 地址 n); printf(ntt-n); while(p!=NULL) printf(ntt %s %s %s %sn,p-data.num,,p-data.phone,p-data.addr); printf(ntt-n);p=p-next; 圖4-2-6 輸出函數界面圖4.2.7 存儲函數void save() typedef struct node ; FILE *fp; if(fp=fopen(message,wb)=NULL) printf(No Information n); exit(1); printf(n Contain Files n);fwrite(p,sizeof( struct node ),1,fp); fclose(fp);圖4-2-7 存儲函數界面圖第五章 調試與測試 5.1 執行軟件一、當軟件中總有輸入人員信息時:1.查看全部信息時:根據提示輸入1 2.刪除人員信息:根據提示輸入 2 按回按回車顯示人員信息車輸入需要刪除人員姓名:例如(歐鴻)按回車顯示需要刪除人員信息并刪除。3.查找人員信息 :根據提示輸入 3 按回車輸入要查找的人員名字:例如(歐鴻)按回車顯示查找到的人員信息。4.修改人員信息:根據提示輸入4 按回車輸入需要修改的人員姓名:例如(歐鴻)按回車 顯示修改前的信息。根據提示輸入修改的信息。5.添加人員信息:根據提示輸入5 按回車輸入添加的信息學號:姓名:電話:家庭住址:輸入完畢后 按回車可以再根據提示使用查找功能。該操作可以看見剛才添加的人員信息。二、當軟件中總沒有輸入人員信息時:1.查看全部信息時:根據提示輸入1 按回車顯示:無法從已有通訊錄輸入!n可能是因為原通訊錄不存在或為空!n建議你檢查你的通訊錄文擋!2.刪除人員信息:根據提示輸入 2 按回車輸入需要刪除人員姓名:例如(歐鴻)按回車沒有信息。3.查找人員信息 :根據提示輸入 3 按回車輸入要查找的人員名字:例如(歐鴻)按回車顯示: 對不起,通訊簿中沒有此人的記錄。4.修改人員信息:根據提示輸入4 按回車輸入需要修改的人員姓名:例如(歐鴻)按回車 沒有顯示5.添加人員信息:根據提示輸入5 按回車輸入添加的信息學號:姓名:電話:家庭住址:輸入完畢后 按回車可以再根據提示使用查找功能。該操作可以看見剛才添加的人員信息。第六章 總結與心得通過這次課程設計,我對很多的函數有了新的認識,也學會了運用多種函數,我也明白了寫軟件的基本過程和基本方法。寫軟件的過程中我又學到了曾經自己不知道的函數或是自己不會的函數的用法。特別是文件的開啟和關閉,讀與寫。這次課程設計課總的來說讓我受益匪淺。在軟件的設計過程中遇到了很多的困難。在軟件一次一次的調試失敗下曾經想過要放棄。我最后還是讓自己堅持了下來,毫不畏懼困難,在同學的幫助與講解下我總算是順利的完成了軟件的設計。雖然在調試程序遇到了很多的困難,當軟件調試成功時那種喜悅的感覺沒有什么東西可以代替。在程序的編寫過程中我發現我自己有很多的知識漏洞和缺陷,需要進一步努力學習來完善自己。在這幾天的編寫過程中我對C語言有啦更進一步的認識和了解。此次編程過程的經驗和知識肯定能促進我以后的學習。此次課程設計不僅給了我很多很好的經驗,也然我體會到了失敗時的焦急和難受,也體會到了成功時的興奮與喜悅。附錄:源代碼#include /*I/O函數*/#include /*字符串函數*/ #include typedef struct /*聲明結構體類型*/char num6; char name10; char phone13; char addr30; datatype; /*聲明數據類型*/typedef struct node /*通訊錄結構中結點的定義*/ datatype data; /*嵌套*/struct node * next; /*定義結構體指針指向另一個結構體對象的指針*/ listnode; typedef listnode * linklist; /*定義了指向listnode結構體的指針類型*/linklist head; /* 定義一個linklist類型的head變量*/listnode *p; /*定義p為指向listnode結構體的指針*/ int menu_select( ); /*菜單函數*/linklist createlist(void); /*創建鏈表*/ void insertnode(linklist head,listnode *p); /*添加函數*/listnode *listfind(linklist head); void delnode(linklist head); /*刪除函數*/void printlist(linklist head); /*輸出函數*/void save();/*以下是主函數*/ void main() for( ; ; ) switch(menu_select() ) case 1:printf(ntt * 通訊錄的建立 *n);printf(nn);head=createlist(); break; case 2: printf(ntt * 通訊錄信息添加 *n); p=(listnode *)malloc(sizeof(listnode); printf(nn);printf(請輸入學號:);scanf(%s,p-data.num); printf(請輸入姓名:); scanf(%s,); printf(請輸入電話號碼:);scanf(%s,p-data.phone);printf(請輸入地址:); scanf(%s,p-data.addr);insertnode(head,p);break; case 3: printf(ntt*n); printf(ntt* 通訊錄信息查詢 *n); printf(ntt*n); p=listfind(head); if(p!=NULL) printf(ntt * 編號 姓名 電話 地址*n); printf(ntt -n); printf(ntt * %s %s %s %s *n,p-data.num,,p-data.phone,p-data.addr); printf(ntt -n);else printf(ntt沒有你要找的人 ! n); break; case 4: printf(ntt*n); printf(ntt*通訊信息的刪除*n); printf(ntt*n); delnode(head); break; case 5: printf(ntt*n); printf(ntt*通訊錄輸出*n); printf(ntt*n); printlist(head); break; case 6:printf(ntt*n); printf(ntt*數據存盤*n); printf(ntt*n); save();break;case 0: printf(ntt謝謝您的使用! n); return; /*菜單函數*/ int menu_select() int sn;printf( n);printf( n); printf( n); printf(ntt 通訊錄管理系統 ); printf( n); printf(ntt*主菜單*);printf(ntt*1.建立通訊錄 2.添加菜單*); printf(ntt*3.查詢菜單 4.刪除菜單*); printf(ntt*5.輸出名單 6.數據存盤*);printf(ntt*0.退出本通訊錄*); printf(ntt*); printf(n);printf(ntt請選擇操作0-6: ); for(; ;) scanf(%d,&sn); if(sn6) printf(ntt輸入錯誤!n); else break; return sn; /*建立函數*/linklist createlist(void) linklist head=(listnode *)malloc(sizeof(listnode); listnode *p,*rear; int flag=1; rear=head; while(flag=1) p=(listnode *)malloc(sizeof(listnode); printf(請輸入學號:);scanf(%s,p-data.num);printf(請輸入姓名:);scanf(%s,); printf(請輸入電話號碼:);scanf(%s,p-data.phone);printf(請輸入地址:);scanf(%s,p-data.addr);rear-next=p; rear=p; printf(ntt繼續建表嗎? (1.是/0.不):); scanf(%d,&flag); if(flag=1) printf(ntt創建成功!n); rear-next=NULL; return head; /*添加函數*/ void insertnode(linklist head,listnode *p) listnode *p1,*p2; p1=head; p2=p1-next; while(p2!=NULL & strcmp(p2-data.num,p-data.num)next; p1-next=p; p-next=p2; printf(ntt插入成功!n); /*查找函數*/ listnode * listfind(linklist head) listnode * p; char phone15; char name10; int xz; printf(ntt-n); printf(ntt 1.號碼查詢n); printf(ntt 2.姓名查詢n); printf(ntt-n); printf(ntt請選擇: ); p=head-next; scanf(%d,&xz); if (xz=1) printf(ntt請輸入要查找的號碼: ); scan

溫馨提示

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

評論

0/150

提交評論