C語言實訓圖書管理鏈表結構.doc_第1頁
C語言實訓圖書管理鏈表結構.doc_第2頁
C語言實訓圖書管理鏈表結構.doc_第3頁
C語言實訓圖書管理鏈表結構.doc_第4頁
C語言實訓圖書管理鏈表結構.doc_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

. 目錄1、問題定義22、系統(tǒng)設計221 總體設計22.2 詳細設計32.2.1數據結構設計32.2.2 主控main()函數執(zhí)行流程32.2.3輸入記錄模塊42.2.4輸出記錄模塊42.2.5添加記錄模塊42.2.6刪除記錄模塊42.2.7查詢記錄模塊42.2.8函數功能描述43、系統(tǒng)實現531 編碼53.1.1 程序預處理53.1.2 主函數main()53.1.3 主菜單界面73.1.4 顯示圖書信息73.1.5增加圖書信息83.1.6刪除圖書信息83.1.7查詢圖書信息932 測試與調試103.2.1 概述103.2.2 程序測試114、系統(tǒng)維護135、歸納總結1451 開發(fā)經驗1452 實訓中遇到的問題及解決方法1453 設計中尚存的不足之處1454 感想和心得體會14圖書管理02本題目設計目的是訓練學生的基本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語言的文件和單鏈表的各種基本操作。本程序中涉及結構體、單鏈表等方面的知識。通過本程序的訓練,使學生能對C語言的文件操作有一個更深刻的了解,掌握利用單鏈表存儲結構實現對圖書管理的原理,為進一步開發(fā)出高質量的管理信息系統(tǒng)打下堅實的基礎。1、問題定義創(chuàng)建一個圖書信息管理系統(tǒng)。假設系統(tǒng)中每本圖書信息只包括編號、書名、作者名字、單價、出版社名字。程序的運行效果如下圖所示,選擇菜單實現相應功能。2、系統(tǒng)設計21 總體設計采用模塊化的程序設計方法,即將較大的任務按照一定的原則分為一個個較小的任務,然后分別設計各個小任務。需要注意的是劃分出來的模塊應該相對獨立但又相關,且容易理解??梢杂媚K化層次結構圖(即模塊圖)來分析其任務的劃分,一般從上到下進行,最上面一層是主模塊,下面各層是其上一層模塊的逐步細化描述。圖書管理系統(tǒng)查詢圖書信息刪除圖書信息添加圖書信息顯示圖書信息建立圖書鏈表這個圖書管理系統(tǒng)要求采用單鏈表實現,如上圖所示,它由如下五個功能模塊組成:建立圖書鏈表:完成將數據存入單鏈表的工作。顯示圖書信息:顯示所有輸入的圖書信息。添加圖書信息:增添圖書信息。刪除圖書信息:刪除圖書信息。查詢圖書信息:查詢圖書信息2.2 詳細設計2.2.1數據結構設計l 圖書信息結構體typedef struct librarian LIB;/*使結構體變量引用方便*/struct librarian/*圖書信息結構體*/ long num;/*編號*/ char name15; /*書名*/ float store; /*單價*/ char auther30; /*作者*/ char publishing30; /*出版社*/ LIB *next; /*指針變量,用以實現鏈表結構*/;2.2.2 主控main()函數執(zhí)行流程Switch函數功能1功能4功能3功能2功能5這個圖書管理系統(tǒng)執(zhí)行主流程如上圖所示。通過switch函數的選擇結構,實現多功能選擇。2.2.3輸入記錄模塊輸入記錄模塊主要實現將數據存入單鏈表中。2.2.4輸出記錄模塊輸出記錄模塊主要實現將數據打印輸出。2.2.5添加記錄模塊添加記錄模塊主要實現添加數據存入單鏈表中。2.2.6刪除記錄模塊刪除記錄模塊主要實現刪除鏈表中數據信息。2.2.7查詢記錄模塊查詢記錄模塊主要實現查詢鏈表中數據信息。2.2.8函數功能描述struct librarian。定義結構體system(cls);清除屏幕內容q=(LIB *)malloc(LEN);開辟結構體大小的內存空間printf(輸入圖書編號:);輸出函數scanf(%d,&q-num);輸入函數if()else()條件控制for(i=1;in;i+)。控制循環(huán)次數return head;函數返回值switch()case1.。case4 switch選擇結構實現功能選擇void output(LIB *p)/*輸出圖書信息函數*/LIB *insert(LIB *p, LIB *o)/*插入圖書信息函數*/LIB *creat(int n)/*建立圖書鏈表函數*/LIB *del(LIB *p,char *o)/*刪除圖書信息函數*/LIB *look(LIB *p,char *o)/*查詢圖書信息函數*/3、系統(tǒng)實現31 編碼3.1.1 程序預處理包括加載頭文件,定義結構體、常量和變量,并對它們進行初始化工作。#include stdio.h /*標準輸入輸出函數庫*/#include stdlib.h /*標準函數庫*/#include string.h /*字符串函數庫*/#include conio.h /*屏幕操作函數庫*/#include /*表示可以調用此宏定義下的函數*/#define LEN sizeof(LIB) /*宏定義函數方便引用結構體*/3.1.2 主函數main()main()函數主要實現了對整個程序的運行控制,以及相關功能模塊的調用。int main()/*主函數*/ LIB *p=0, *h, *q; /*定義鏈表*/ int m,a; /*保存選擇結果變量*/ char n15,num15; /*中間數組*/ do /*主界面*/printf(*n);printf(1:建立圖書鏈表;n2:顯示圖書信息;n3:添加圖書信息;n4:刪除圖書記錄;n 5 :查詢圖書記錄n 0:退出:;n); printf(*n); printf(輸入你的選擇回車進入:); scanf(%d,&m); switch(m)/*switch選擇結構實現功能選擇*/ case 1 :/*建立圖書鏈表*/ printf(請輸入需要錄入本數:); scanf(%d,&a); h=p=creat(a); break; case 2 :/*顯示圖書信息*/ p=h; output(p); break; case 3 :/*添加圖書信息*/ p=h; q=(LIB *)malloc(LEN); printf(輸入圖書編號:); scanf(%d,&q-num); printf(輸入圖書名稱:); scanf(%s,&q-name); printf(輸入圖書單價:); scanf(%f,&q-store); while(getchar()!=n); printf(輸入圖書的作者:); scanf(%s,&q-auther); printf(輸入出版社名稱:); scanf(%s,&q-publishing); h=p=insert(p,q); break; case 4 :/*刪除圖書記錄*/ p=h; printf(輸出你要刪除書籍編號:); scanf(%s,num); h=p=del(p,num);break;case 5 :/*查詢圖書記錄*/ p=h; printf(輸出你要查詢書籍編號:); scanf(%s,num); h=p=look(p,num); break; default : break; while(m);3.1.3 主菜單界面用戶進入成績管理系統(tǒng)時,需要顯示主菜單,提示用戶進行選擇,完成相應任務。此代碼被main()函數調用。/*主界面*/printf(*n);printf(1:建立圖書鏈表;n2:顯示圖書信息;n3:添加圖書信息;n4:刪除圖書記錄;n0:退出:;n); printf(*n); printf(輸入你的選擇回車進入:);3.1.4 顯示圖書信息 不懂怎么排列,制表就只能這樣輸出了。printf(編號:%d 書名: %s t單價: %.1f 作者:%s t 出版社 : %s; n,p-num,p-name,p-store,p-auther,p-publishing);3.1.5增加圖書信息LIB *insert(LIB *p, LIB *o)/*插入圖書信息函數*/ LIB *head=p,*q;/*建立結構體指針變量,head用來保存首鏈表*/ system(cls);/*清理屏幕*/ if(p=0) /*當鏈表為空時*/ head=o; o-next=0; else if(o-num)num) /*嵌入結構體通過編號排序*/ head=o; o-next=p; else while(o-num)(p-num)&p-next!=0) q=p; p=p-next; if(p-next=0) p-next=o; o-next=0; else q-next=o; o-next=p; system(cls); return head;3.1.6刪除圖書信息LIB *del(LIB *p,char *o)/*刪除圖書信息函數*/ LIB *head=p,*q; if(p=0) printf(沒有這本書n); else if(strcmp(p-num,o)=0)/*當首鏈表為要刪除函數時*/ head=p-next; free(p); else while(p!=0) q=p; p=p-next;/*通過鏈式循環(huán)尋找目標編號*/ if(p=0)break; if(strcmp(p-num,o)=0) q-next=p-next; free(p);/*釋放目標結點空間*/ break; system(cls); return head;3.1.7查詢圖書信息和刪除函數基本一致,只是把free語句改成相應的printf語句LIB *look(LIB *p,char *o)/*查詢圖書信息函數*/ LIB *head=p,*q; if(p=0) printf(沒有這本書n); else if(strcmp(p-num,o)=0) head=p-next; system(cls); printf(編號:%s 書名: %s t單價: %.1f 作者:%s t 出版社 : %s; n,p-num,p-name,p-store,p-auther,p-publishing); printf(nn按任意鍵回到主菜單!n); getch(); else while(p!=0) q=p; p=p-next; if(p=0)break; if(strcmp(p-num,o)=0) system(cls); printf(編號:%s 書名: %s t單價: %.1f 作者:%s t 出版社 : %s; n,p-num,p-name,p-store,p-auther,p-publishing); printf(nn按任意鍵回到主菜單!n); getch(); system(cls); return head;32 測試與調試3.2.1 概述一般情況下,為解決一個問題所編寫的程序代碼較長,可能包括幾百條甚至成千上萬條語句。在檢查并排除所有語法錯誤后,還會有不易發(fā)現的邏輯錯誤,因此要對程序進行認真仔細的測試與調試。測試是通過運行程序發(fā)現錯誤的過程,常見的錯誤有數據溢出、數組越界、進入死循環(huán)、語句順序顛倒、多加“;”或少加“”等等。調試則是確定測試中找到的錯誤性質并改正錯誤的過程。測試與調試通常交替進行,即測試調試再測試再調試。能檢查出尚未發(fā)現的、各種不同類型錯誤的測試才是成功的測試。測試程序需要測試用例,測試用例可用如下公式表示:測試用例測試數據預期結果。好的測試用例應該是用盡可能少的測試數據發(fā)現盡可能多的錯誤,即發(fā)現錯誤的概率要大。要選擇合適的測試數據,使系統(tǒng)在運行時盡量能執(zhí)行到每條語句,以測試各指令是否正確。還應分別測試輸入合法數據與非法數據時,程序的運行情況,。對于合法數據,還要考慮數據的一般性與特殊性,如求最大值的問題,應測試最大值在最前面、最后面、中間某一位置的情況。測試可按模塊測試、組裝測試和確認測試的步驟進行。(1)模塊測試就是分別對各模塊進行測試的過程。在編寫一個模塊后應立即對其進行測試,因為這時對模塊記憶深刻,而且單個模塊相對較小,所以容易構造測試數據,能方便地檢查和改正錯誤。(2)組裝測試就是把所有模塊(應該是通過模塊測試的模塊)按預先制定的計劃逐步組裝和測試的過程。一般情況下,各模塊之間要相互傳遞數據和控制信息,因此組裝測試的主要任務是發(fā)現模塊接口中的錯誤。(3)確認測試是最后一個步驟,一般在將軟件交付用戶之前,應確認軟件是否確實滿足用戶的要求,通常使用接近實際的用例進行測試。3.2.2 程序測試l 在主菜單中選擇1當用戶輸入1并按回車鍵后,會出現”請輸入需要錄入本數:” 根據需要輸入相應數字即可進入圖書信息輸入界面;輸入相應信息:l 在主菜單中選擇2當用戶輸入2并按回車鍵后,即可進入顯示圖書信息界面。l 在主菜單中選擇3當用戶輸入3并按回車鍵后,即可進入添加圖書信息界面。輸入相應信息:用功能選項2驗證是否添加成功:l 在主菜單中選擇4當用戶輸入4并按回車鍵后,即可進入刪除圖書信息界面。輸入想要刪除圖書的編號:用功能選項2驗證是否刪除成功:l 在主菜單中選擇5當用戶輸入5并按回車鍵后,即可進入查詢圖書信息界面。添加幾本書測試查詢功能:l 在主菜單中選擇0當用戶輸入0并按回車鍵后,即可執(zhí)行退出操作。4、系統(tǒng)維護經測試與調試確認軟件無錯時,開發(fā)就告一段落,這時可以交付軟件供用戶使用,但是在軟件的使用過程中還會面臨更加漫長的工作,即軟件維護。一般維護的工作有:更改使用中發(fā)現的錯誤;為適應實際環(huán)境而對程序進行修改;為滿足新的需求而對程序作必要的改進等等。5、歸納總結51 開發(fā)經驗通過對本題目的開發(fā),體會到要掌握以下幾點內容。l 大程序的設計風格。按“自頂向下,逐步細化,模塊化”的方法進行程序設計。l 編寫主函數,并進行測試與調試。當被調函數又需要調用其他函數時,也要遵循逐步細化的原則。C語言提供豐富的庫函數,編程序時要善于使用庫函數,避免不必要的勞動。l 定義函數時,應選好參數的個數和數據類型。l 學會了鏈表結構的構成及使用方法。52

溫馨提示

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

評論

0/150

提交評論