C語言課程設計報告報告圖書管理系統(tǒng)_第1頁
C語言課程設計報告報告圖書管理系統(tǒng)_第2頁
C語言課程設計報告報告圖書管理系統(tǒng)_第3頁
C語言課程設計報告報告圖書管理系統(tǒng)_第4頁
C語言課程設計報告報告圖書管理系統(tǒng)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、-PAGE . z. - w -C語言課程設計報告院 系:學 號:班 號:姓 名:標 題: 圖書管理系統(tǒng) 目錄第一部分題目要求3第二部分需求分析3第三部分總體設計4第四部分詳細設計41)主函數42)各功能模塊設計63)公共函數16第五部分上機操作17第六部分總結20附錄(源代碼)22第一部分 題目要求圖書管理系統(tǒng)包括:圖書名稱、圖書編號、單價、作者、存在狀態(tài)、借書人、性別、*等,是設計一圖書管理系統(tǒng),使之能夠提供以下功能:1. 新圖書基本信息的輸入。2. 圖書基本信息的查詢。3. 對撤銷圖示基本信息的刪除。4. 辦理借書手續(xù)。5. 辦理換書手續(xù)。第二部分 需求分析根據題目的要求,需要建立一個文

2、件來保存圖書信息,每本書的信息用一個結構體來保存,結構體的成員應包括圖書名稱、圖書編號、單價、作者、存在狀態(tài)、借書人、性別、*,結構體中的存在狀態(tài)可設為整型,用不同數字代表借還狀態(tài);在借書和還書手續(xù)中,要注意結構體的成員變量存在狀態(tài)的值,使用指針會比較方便。程序中需要對圖書信息實現(xiàn)輸入、查詢、刪除、借書和還書的功能,首先要使用菜單進行各項功能的選擇;其次需要有文件的輸入、輸出功能,提供顯示、查找等操作。在程序的運行過程中,注意各功能在使用完畢后返回菜單的設置,以方便運行。第三部分 總體設計根據上面的需求分析,可以將整個圖書管理系統(tǒng)分為輸入模塊、查找模塊、刪除模塊、借書模塊和還書模塊(如圖3-1

3、所示)。圖書管理系統(tǒng)輸入新書查找圖書刪除圖書借閱圖書歸還圖書圖3-SEQ 圖表 * ARABIC1 系統(tǒng)功能模塊圖第四部分 詳細設計4.1 數據結構在這個程序里,每本書的信息用一個結構體book來保存,結構體的成員應包括圖書名稱、圖書編號、單價、作者、存在狀態(tài)、借書人、性別、*,結構體中的存在狀態(tài)設為整型,用不同數字代表庫中高本書的數量。struct book char title30; int number; char author30; float price; int store; char borrower_name20; char borrower_gender5; int borr

4、ower_number;sN;其中的N定義為該系統(tǒng)所管理書籍的最大值。#define N 100 /書籍的最多本數4.2 主函數【說明】主函數中,對菜單”進行了輸出,將各個模塊的函數列出來,實現(xiàn)對各種功能的選擇。其流程圖如圖4.1-1所示。顯 示 一 系 列 功 能 選 項輸入n,判斷n是否是05調 用 與 n 相 應 的 模 塊NY開 始結 束圖4.1-1 主函數流程圖【程序】void main() int *; do printf(*菜單*n * 1.輸入圖書信息 * n * 2.查找圖書信息 * n * 3.刪除圖書信息 * n * 4.借閱圖書 * n * 5.歸還圖書 * n * 0

5、.退出 * n);printf(*n); printf(請在0-5中選擇,以回車鍵結束n); scanf(%d,&*); switch(*) case 1: input(&s0);break;/輸入新圖書信息模塊 case 2: search(&s0);break;/查找模塊 case 3: del(&s0);break;/刪除模塊 case 4: borrow(&s0);break;/借書模塊 case 5: retur(&s0);break;/還書模塊 case 0: break;/退出 while(*!=0);4.2 各功能模塊設計(1)輸入模塊【分析】在輸入模塊中,主要以輸入輸出語句為

6、主,使用了dowhile和for這兩種循環(huán)方式,dowhile是作為一級循環(huán),for為二級循環(huán)。在輸入圖書的基本信息過程中,使用指針進行字符串及值的傳遞。全局變量m是用于記錄圖書的儲存位置,便于在后來的查詢、刪除等功能中的使用。調用save(struct book*p)來保存輸入的數據。定義的整型變量y,用來儲存是否繼續(xù)的指令。該模塊的流程圖如下圖4.2-1所示。輸入圖書的基本信息調用save(struck book *p)保存函數,m+判斷y是否為0?YN開始返回菜單結束圖4.2-1 輸入模塊流程圖【程序】void input(struct book *p) int y; for(;ptit

7、le); printf(請輸入編號:); scanf(%d,&p-number); printf(請輸入作者:); scanf(%s,p-author); printf(請輸入圖書價格:); scanf(%f,&p-price); printf(請輸入圖書數量:); scanf(%d,&p-store); m+; printf(第%d個信息已經輸入完畢,是否繼續(xù)n按任意鍵繼續(xù),按0鍵結束.,m); scanf(%d,&y);/讀取是否繼續(xù) if(y=0) save(&s0); read(&s0);/調用讀取文件函數 break; (2)查找模塊【分析】此模塊的提供兩種查找方式,輸入書名或作者,

8、均可實現(xiàn)查找功能。在函數的結尾,選擇是否繼續(xù)查找。開 始選擇查找方式0-21或2輸入書名或作者調用read(struct book *p)使用for循環(huán)查找并顯示記錄判斷是否繼續(xù)YN返回菜單結 束0圖4.2-2 查找模塊流程圖【程序】void search(struct book *p)/查詢模塊 int n; char name120; char name220; char c3; do p=&s0; printf(t請選擇查找方式:n);/打印查詢方式菜單 printf( 1.按書名查找n 2.按作者查找n 0.返回n); printf(請在0-2中選擇:nn); scanf(%d,&n)

9、;/讀取查找方式 if(n=0) break; switch(n) case 1: printf(請輸入書名:n);scanf(%s,name1);break; case 2: printf(請輸入作者:n);scanf(%s,name2); break; for(;ptitle,name1)=0|strcmp(p-author,name2)=0) printf(n查找圖書信息成功!n); printf(書名 編號 作者 價格 數量n); printf(%-10s%-10d%-10s%-10.2f%-10dn, p-title,p-number,p-author,p-price,p-store

10、);/打印信息 break; printf(是否繼續(xù)查找n是”請鍵入yes”, 否”請按任意鍵,返回菜單n); scanf(%s,c); while(strcmp(c,yes)=0);/判斷是否結束(3)刪除模塊【分析】該模塊實現(xiàn)對撤銷圖書的刪除。用戶首先查找要刪除的圖書,圖書列表出來后,確認是否刪除。當刪除成功后,詢問是繼續(xù)刪除還返回退出并返回菜單。其流程圖如下圖4.2-3所示。開 始選擇刪除方式0-21或2輸入要刪除的書名或作者調用read(struct book *p)使用for循環(huán)查找并顯示記錄,m-判斷是否繼續(xù)YN返回菜單結 束0調用save(struct book*p)圖4.2-3

11、 刪除模塊流程圖【程序】void del(struct book *p)/刪除模塊 int i; struct book *p1,*p2; char name120; char name220; char c3; int n; do p=&s0;printf(請選擇刪除以方式回車鍵結束:n);/打印刪除方式菜單 printf( 1.按書名刪除n 2.按作者刪除n 0.返回n); printf(請在0-2中選擇:nn); scanf(%d,&n);/讀取查找方/ if(n=0) break; switch(n) case 1:printf(請輸入書名:n); scanf(%s,name1); b

12、reak; case 2: printf(請輸入作者:n); scanf(%s,name2); break; read(&s0); /調用讀取函數 for(i=0;ititle,name1)=0|strcmp(p-author,name2)=0) p1=p; for(p2=p1+1;p2title,p2-title); strcpy(p1-author,p2-author); p1-number=p2-number; p1-store=p2-store; p1-price=p2-price; m-; printf(刪除成功!n); else printf(沒有該書記錄!); break; pr

13、intf(是否繼續(xù)刪除?是”請鍵入yes”, 否”請按任意鍵,返回菜單n); scanf(%s,c); /讀取是否繼續(xù) save(&s0); /調用保存函數 while(strcmp(c,yes)=0); /判斷是否繼續(xù)刪除 (4)借書模塊【分析】該模塊實現(xiàn)系統(tǒng)的借書功能。首先查找要借閱的圖書,并且顯示該項圖書的記錄,輸入借書人的信息后store-,借書成功,詢問是否繼續(xù)。該模塊的流程圖如下圖4.2-4所示。開 始選擇借閱查找方式0-20-21或2輸入要借閱的書名或作者調用read(struct book *p)使用for循環(huán)查找,m-判斷是否繼續(xù)YN返回菜單結 束0調用save(struct

14、 book *p)輸入借書人的基本信息顯示圖書借閱信息圖4.2-4 借書模塊流程圖【程序】void borrow(struct book *p)/借書模塊 int z; char name320,name420; char w3; do p=&s0; printf(請先查找您要借閱的圖書!); printf(請選擇查找方式:n);/打印查詢方式菜單 printf( 1.按書名查找n 2.按作者查找n 0.返回n); printf(請在0-2中選擇:n); scanf(%d,&z);/讀取查找方式 if(z=0) break; switch(z) case 1: printf(請輸入書名:n);

15、scanf(%s,name3);break; case 2: printf(請輸入作者:n);scanf(%s,name4); break; read(&s0);/調用讀取函數 for(;ptitle,name3)=0|strcmp(p-author,name4)=0) printf(n查找圖書信息成功!n); printf(書名 編號 作者 價格 數量n); printf(%-10s%-10d%-10s%-10.2fs%-10dn, p-title,p-number, p-author, p-price,p-store);/打印信息 printf(請輸入您的:);scanf(%s,p-bor

16、rower_name); printf(請輸入您的性別:);scanf(%s,p-borrower_gender); printf(請輸入您的*:);scanf(%d,&p-borrower_number); p-store-; printf(借書成功!n); printf(書名 編號 作者 價格 數量 借書人 性別 *n);printf(%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10dn,p-title,p-number,p-author,p-price,p-store,p-borrower_name,p-borrower_gender,p-borrowe

17、r_number); break; printf(是否繼續(xù)借書?); printf(是”請鍵入yes”, 否”請按任意鍵,返回菜單n); scanf(%s,w); /讀取是否繼續(xù) save(&s0); /調用保存函數 while(strcmp(w,yes)=0); /判斷是否繼續(xù)借書 (5)還書模塊【分析】該模塊實現(xiàn)還書功能。首先作者查找所要還得圖書,找到后將借書人的基本信息清除并保存,實現(xiàn)還書功能。其流程圖如圖4.2-5所示。開 始選擇還書查找方式0-20-21或2輸入要還的書名或作者調用read(struct book *p)使用for循環(huán)查找,m-判斷是否繼續(xù)YN返回菜單結 束0調用sa

18、ve(struct book *p)清除借書人的基本信息顯示圖書信息圖4.2-5 還書模塊流程圖【程序】void retur(struct book *p)/還書模塊 int e,f; char name520; char name620; char t3; do p=&s0; printf(請先查找您要還的圖目!); printf(請選擇查找方式:n); /打印查詢方式菜單 printf( 1.按書名查找n 2.按作者查找n 0.返回n); printf(請在0-2中選擇:nn); scanf(%d,&e); /讀取查找方式 if(e=0) break; switch(e) case 1:

19、printf(請輸入書名:n);scanf(%s,name5);break; case 2: printf(請輸入作者:n);scanf(%s,name6);break; read(&s0);/調用讀取函數 for(;ptitle,name5)=0|strcmp(p-author,name6)=0) printf(n查找圖書信息成功!n); printf(確認還書請按1”!);/確認是否還書 scanf(%d,&f); if(f=1) strcpy(p-borrower_name,0);strcpy(p-borrower_gender,0); p-borrower_number=0; p-st

20、ore+; printf(書名 編號 作者 價格 數量 借書人 性別 *n);printf(%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10dn,p-title,p-number,p-author,p-price,p-store,p-borrower_name,p-borrower_gender,p-borrower_number); /打印信息 break; else printf(沒有該書記錄!); break; printf(是否繼續(xù)還書?n); printf(是”請鍵入yes”, 否”請按任意鍵,返回菜單n); scanf(%s,t); /讀取是否繼續(xù)

21、 save(&s0); /調用保存函數 while(strcmp(t,yes)=0); /判斷是否繼續(xù)還書 4.3 公共函數(1)保存圖書信息函數void save(struct book *p) FILE *fp,*fp1; int i; if(fp=fopen(tushu.dat,wb)=NULL)/打開文件并判斷是否出錯 printf(創(chuàng)建文件失敗!nn);/打印出錯提示 getchar(); return; if(fp1=fopen(book.dat,wb)=NULL)/打開文件并判斷是否出錯 printf(創(chuàng)建文件失敗!nn);/打印出錯提示 getchar(); return; f

22、or(i=0;im;i+,p+) if(fwrite(p,sizeof(struct book),1,fp)=0)/向文件寫入數據,并判斷是否出錯 printf(向文件輸入數據失敗!nn); fprintf(fp1,%d,m); fclose(fp);/關閉文件 fclose(fp1);/關閉文件(2)讀取文件信息函數void read(struct book *p)/從文件讀取信息模塊 FILE *fp,*fp1; int i; if(fp=fopen(tushu.dat,rb)=NULL)/打開文件,并判斷是否出錯 printf(出錯,請檢查文件是否存在,按任意鍵返回住菜單);/打印出錯提

23、示 getchar(); if(fp1=fopen(book.dat,rb)=NULL)/打開文件并判斷是否出錯 printf(創(chuàng)建文件失敗!nn);/打印出錯提示 getchar(); return; fscanf(fp1,%d,&m); fclose(fp1);/關閉文件 for(i=0;im;i+,p+) fread(p,sizeof(struct book),1,fp);/從文件中讀取信息 fclose(fp);/關閉文件第五部分 上機操作運行主函數,進入主菜單輸入模塊查找模塊(4)刪除模塊(5)借書模塊(6)還書模塊(7)退出第六部分 總 結通過這次為期一周的C語言上機實習,我明白C

24、語言這門課程光僅僅是聽課是遠遠不夠的,上機訓練也不容忽視。通過上機訓練,才能夠明白自己知識的不足,更加深刻的理解C語言中的知識點,從而找到知識漏點,還對以前認為自己已懂了的知識點也理解更加深刻。當遇到了自己當時不知如何編寫的C語言題目時,通過自己的學習和同學的交流,得以順利的編寫,使我增加了對C語言的興趣和學好C語言的信心。本次C語言實習的幾個作用:1加深對課堂講授容的理解課堂上要講授許多關于C語言的語法規(guī)則,聽起來比較枯燥,不易記憶。而通過多次上機練習,對于語法知識就有了更深的認識,自然而然地掌握C語言的語法規(guī)定。學習C語言不能停留在書本,而是要利用學到的知識編寫C語言程序,解決實際問題。通

25、過對自己編寫程序的調試,發(fā)現(xiàn)問題,解決問題,逐步提高自己對C語言的理解和程序開發(fā)能力。2熟悉程序開發(fā)環(huán)境、學習計算機系統(tǒng)的操作方法一個C語言程序從編輯、編譯、連接到運行,都要在一定的外部操作環(huán)境下才能進行。所謂環(huán)境就是所用的計算機系統(tǒng)硬件、軟件條件,只有學會使用這些環(huán)境,才能進行程序開發(fā)工作。通過上機實驗,熟練地掌握C語言開發(fā)環(huán)境,為以后真正編寫計算機程序解決實際問題打下基礎。同時,在今后遇到其它開發(fā)環(huán)境時就會觸類旁通,很快掌握新系統(tǒng)的使用。 在這次實習的過程我中遇到了一些難題,老師給予了我細心的指導,幫助我解決了很多程序上的問題,再次向老師的幫助表示衷心的感!附 錄(源程序)【總程序】#in

26、clude#include#include#include#define N 100 /書籍的最多本數struct book char title30; int number; char author30; float price; int store; char borrower_name20; char borrower_gender5; int borrower_number;sN;int m=0;void input(struct book *p); /輸入圖書信息 void save(struct book *p); /保存圖書信息void read(struct book *p);

27、 /讀取圖書信息void search(struct book *p); /查找圖書信息void del(struct book *p); /刪除圖書信息void borrow(struct book *p); /借閱圖書void retur(struct book *p); /歸還圖書void main() int *; do printf(*菜單*n * 1.輸入圖書信息 * n * 2.查找圖書信息 * n * 3.刪除圖書信息 * n * 4.借閱圖書 * n * 5.歸還圖書 * n * 0.退出 * n); printf(*n); printf(請在0-5中選擇,以回車鍵結束n);

28、 scanf(%d,&*); switch(*) case 1: input(&s0);break; case 2: search(&s0);break; case 3: del(&s0);break; case 4: borrow(&s0);break; case 5: retur(&s0);break; case 0: break; while(*!=0);void input(struct book *p) int y; for(;ptitle); printf(請輸入編號:); scanf(%d,&p-number); printf(請輸入作者:); scanf(%s,p-author

29、); printf(請輸入圖書價格:); scanf(%f,&p-price); printf(請輸入圖書數量:); scanf(%d,&p-store); m+; printf(第%d個信息已經輸入完畢,是否繼續(xù)n按任意鍵繼續(xù),按0鍵結束.,m); scanf(%d,&y);/讀取是否繼續(xù) if(y=0) save(&s0); read(&s0);/調用讀取文件函數 break; void search(struct book *p)/查詢模塊 int n; char name120; char name220; char c3; do p=&s0; printf(t請選擇查找方式:n);/

30、打印查詢方式菜單 printf( 1.按書名查找n 2.按作者查找n 0.返回n); printf(請在0-2中選擇:nn); scanf(%d,&n);/讀取查找方式 if(n=0) break; switch(n) case 1: printf(請輸入書名:n);scanf(%s,name1);break; case 2: printf(請輸入作者:n);scanf(%s,name2); break; for(;ptitle,name1)=0|strcmp(p-author,name2)=0) printf(n查找圖書信息成功!n); printf(書名 編號 作者 價格 數量n); pr

31、intf(%-10s%-10d%-10s%-10.2f%-10dn, p-title,p-number,p-author,p-price,p-store);/打印信息 break; printf(是否繼續(xù)查找n是”請鍵入yes”, 否”請按任意鍵,返回菜單n); scanf(%s,c); while(strcmp(c,yes)=0);/判斷是否結束void del(struct book *p)/刪除模塊 int i; struct book *p1,*p2; char name120; char name220; char c3; int n; do p=&s0; printf(請選擇刪除以

32、方式回車鍵結束:n);/打印刪除方式菜單 printf( 1.按書名刪除n 2.按作者刪除n 0.返回n); printf(請在0-2中選擇:nn); scanf(%d,&n);/讀取查找方/ if(n=0) break; switch(n) case 1:printf(請輸入書名:n); scanf(%s,name1); break; case 2: printf(請輸入作者:n); scanf(%s,name2); break; read(&s0); /調用讀取函數 for(i=0;ititle,name1)=0|strcmp(p-author,name2)=0) p1=p; for(p2

33、=p1+1;p2title,p2-title); strcpy(p1-author,p2-author); p1-number=p2-number; p1-store=p2-store; p1-price=p2-price; m-; printf(刪除成功!n); else printf(沒有該書記錄!); break; printf(是否繼續(xù)刪除?是”請鍵入yes”, 否”請按任意鍵,返回菜單n); scanf(%s,c); /讀取是否繼續(xù) save(&s0); /調用保存函數 while(strcmp(c,yes)=0); /判斷是否繼續(xù)刪除 void borrow(struct book

34、 *p)/借書模塊 int z; char name320,name420; char w3; do p=&s0; printf(請先查找您要借閱的圖書!); printf(請選擇查找方式:n);/打印查詢方式菜單 printf( 1.按書名查找n 2.按作者查找n 0.返回n); printf(請在0-2中選擇:n); scanf(%d,&z);/讀取查找方式 if(z=0) break; switch(z) case 1: printf(請輸入書名:n);scanf(%s,name3);break; case 2: printf(請輸入作者:n);scanf(%s,name4); brea

35、k; read(&s0);/調用讀取函數 for(;ptitle,name3)=0|strcmp(p-author,name4)=0) printf(n查找圖書信息成功!n); printf(書名 編號 作者 價格 數量n); printf(%-10s%-10d%-10s%-10.2fs%-10dn, p-title,p-number, p-author, p-price,p-store);/打印信息 printf(請輸入您的:);scanf(%s,p-borrower_name); printf(請輸入您的性別:);scanf(%s,p-borrower_gender); printf(請輸

36、入您的*:);scanf(%d,&p-borrower_number); p-store-; printf(借書成功!n); printf(書名 編號 作者 價格 數量 借書人 性別 *n); printf(%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10dn, p-title,p-number,p-author, p-price,p-store,p-borrower_name,p-borrower_gender,p-borrower_number); break; printf(是否繼續(xù)借書?); printf(是”請鍵入yes”, 否”請按任意鍵,返回菜單

37、n); scanf(%s,w); /讀取是否繼續(xù) save(&s0); /調用保存函數 while(strcmp(w,yes)=0); /判斷是否繼續(xù)借書 void retur(struct book *p)/還書模塊 int e,f; char name520; char name620; char t3; do p=&s0; printf(請先查找您要還的圖目!); printf(請選擇查找方式:n); /打印查詢方式菜單 printf( 1.按書名查找n 2.按作者查找n 0.返回n); printf(請在0-2中選擇:nn); scanf(%d,&e); /讀取查找方式 if(e=0) break; switch(e) case 1: printf(請輸入書名:n);scanf(%s,name5);break; case 2: printf(請輸入作者:n);scanf(%s,name6);break; read(&s0);/調用讀取函數 for(;ptitle,name5)=0|strcmp(p-author,nam

溫馨提示

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

評論

0/150

提交評論