圖書借閱管理系統(tǒng)_第1頁
圖書借閱管理系統(tǒng)_第2頁
圖書借閱管理系統(tǒng)_第3頁
圖書借閱管理系統(tǒng)_第4頁
圖書借閱管理系統(tǒng)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 課 程 設(shè) 計 報 告課程名稱 c語言程序設(shè)計 課題名稱 圖書借閱管理系統(tǒng) 專 業(yè) 電子信息工程 班 級 1153班 學(xué) 號 201511611319 姓 名 廖信達(dá) 指導(dǎo)教師 葉曉霞 2015年12月24 日一、設(shè)計內(nèi)容與設(shè)計要求1設(shè)計內(nèi)容:根據(jù)系統(tǒng)需求的描述,要求實現(xiàn)的功能包括圖書信息和讀者信息的添加、查詢的功能,以及借書和還書的功能,本系統(tǒng)格外添加了用戶注冊和登錄功能,方便統(tǒng)計和完善讀者信息。(1)、本系統(tǒng)采用一個包含n個數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:書號、書名、作者、出版社、出版日期、單價、是否借出等。(2)、本系統(tǒng)顯示這樣的菜單: 首先,要進(jìn)行登錄或者注冊才能進(jìn)入系統(tǒng),

2、進(jìn)入后顯示 1 .全部圖書瀏覽2.新圖書添加3.圖書刪除4.圖書查找5.圖書借閱6圖書歸還7.全部讀者瀏覽8.退出登錄0.退出之后,程序?qū)⒅匦嘛@示菜單。2設(shè)計要求:掌握結(jié)構(gòu)化程序設(shè)計的主體思想,以自頂向下逐步求精的方法編制程序解決一些實際的問題,為將來編寫軟件積累一些典型的案例處理經(jīng)驗。1. 設(shè)計正確,方案合理。2. 界面友好,使用方便。3. 程序精煉,結(jié)構(gòu)清晰。4上機(jī)演示。4. 按學(xué)號順序選課題號,并在規(guī)定的時間內(nèi)獨(dú)自完成相關(guān)課題的c源程序編寫、調(diào)整和運(yùn)行。源程序及編譯生成各文件均保存在軟盤中;5. 按本任務(wù)書的要求,按附錄的要求編寫課程設(shè)計報告(word文檔格式)。并用a4的復(fù)印紙打印并裝

3、訂; 22目錄1、 課程設(shè)計報告.42、 功能模塊的劃分.63、 主要功能的實現(xiàn).84、 程序代碼清單.9三、課程設(shè)計報告1.程序設(shè)計準(zhǔn)備做系統(tǒng)前,首先,自己詳細(xì)看了c程序設(shè)計(教科書),基本自學(xué)會了文件的相關(guān)內(nèi)容,理解了相關(guān)函數(shù)的用法和作用;另,上網(wǎng)查詢了很多相關(guān)資料,還有找了很多相關(guān)的系統(tǒng),都詳細(xì)的看了一遍,加深了對c的理解以及對文件的相關(guān)內(nèi)容進(jìn)一步理解。學(xué)習(xí)了c語言的內(nèi)容,圖書信息管理系統(tǒng)有助于c語言學(xué)習(xí)的進(jìn)一步鞏固,在本系統(tǒng)可以增強(qiáng)對指針、文件、函數(shù)、結(jié)構(gòu)體變量等基本知識的進(jìn)一步理解。另外圖書信息管理系統(tǒng)也是學(xué)校常用的基本系統(tǒng)之一,它有助于學(xué)校對圖書館書籍的基本管理。2.程序設(shè)計說明根

4、據(jù)題目要求,應(yīng)當(dāng)把圖書信息用結(jié)構(gòu)體形式輸入,再定義一個全局變量和文件指針進(jìn)行整個程序的運(yùn)行,然后把圖書信息送到文件中去,所以應(yīng)該提供下個結(jié)構(gòu)體和文件的輸入等操作:在程序中需要實現(xiàn)圖書信息錄入,瀏覽,查詢,刪除和修改等功能的操作,所以需要建立相應(yīng)的模塊來實現(xiàn):另外還需提供選擇菜單實現(xiàn)功能,在運(yùn)行時達(dá)到所要求的目的。3.程序的主要功能 圖書管理在生活中運(yùn)用非常廣泛,因此需要用許多的程序來對它們進(jìn)行管理。圖書借閱管理系統(tǒng)是對圖書信息的基本管理,它包括:圖書信息的錄入、圖書信息的顯示、圖書信息的刪除、圖書信息的查詢、讀者信息的錄入、讀者信息的顯示。通過編譯一個c語言函數(shù),其中包含一個主函數(shù),多個子函數(shù)

5、,主函數(shù)調(diào)用其余的子函數(shù)實現(xiàn)人們能夠簡易、快捷的了解并找到自己所學(xué)要的信息的功能。1、圖書基本信息錄入:對新到圖書館的圖書的信息(編號、書名、出版社、作者、價格)進(jìn)行錄入。2、圖書基本信息顯示:顯示已被錄入圖書的所有信息。3、圖書基本信息刪除:通過輸入書名,判斷此圖書是否存在,若存在, 則刪除該圖書所有信息,若不存在則提示用戶重新輸入圖書書名。4、圖書基本信息查詢:將所有圖書信息包括編號、書名、出版社、作者、價格等顯示在屏幕上。5、讀者信息的錄入:這里采用注冊登錄的方法對讀者信息進(jìn)行統(tǒng)計。6、讀者信息的顯示:將讀者賬號、姓名等輸出。7、退出登錄:回到一開始的登錄注冊頁面。8、退出系統(tǒng):即退出圖

6、書借閱管理系統(tǒng)。使用模塊化編程的方法每項功能有一個或多個函數(shù)組合來完成,其中菜單選項模塊對應(yīng)如下: 圖書基本信息錄入=> void add() 圖書基本信息顯示=> void through()圖書基本信息刪除=> void del() 讀者基本信息顯示=> void through2() 圖書基本信息查詢=> void search()讀者注冊=> reg()讀者登錄=> login()退出登錄重來=> restart()這份代碼中各個變量的定義如下: num 圖書編號 name 書名 writer 作者 publish 出版社 time 出版

7、時間 price 單價具體各個函數(shù)及其功能詳解:struct reader *add2(struct reader *llast,char accountmax4,char namemax4);/添加讀者信息 int login(int j);/登錄系統(tǒng) void reg();/注冊賬號 struct book *add(struct book *last);/添加讀者信息void search();/查詢圖書 void updata(char namemax4,char nummax4);/更新圖書信息void through();/全部圖書瀏覽void through2();/全部讀者瀏覽

8、void print(int j);/輸出圖書相關(guān)信息void del();/刪除圖書 void updata2(char namemax4,char nummax4);/更新讀者信息 void borrowbook();/借閱圖書 void returnbook();/歸還圖書四.功能模塊的劃分1.主函數(shù)模塊根據(jù)圖書館信息管理系統(tǒng)的要求,可設(shè)計一個主函數(shù),及定義多個用戶自定義函數(shù)。在主函數(shù)中定義全局變量,即是在函數(shù)外部定義的變量,其不屬于某一個函數(shù),而屬于一個源程序文件,在整個程序內(nèi)可以多次被引用。主函數(shù)主要負(fù)責(zé)菜單的顯示和各個函數(shù)的調(diào)用,起著最重要的作用。1.圖書基本信息添加模塊添加書號、

9、書名、作者、出版社、出版時間(日期)、單價。 2.圖書基本信息顯示模塊 當(dāng)用戶選擇圖書基本信息顯示時,程序會將所有圖書信息一一列出。3.圖書基本信息輸入模塊在程序開始運(yùn)行,創(chuàng)建文件庫時,調(diào)動此模塊,提示用戶輸入新的圖書編號(編號為0時結(jié)束輸入),然后繼續(xù)輸入圖書書名,作者,出版社,出版日期,單價等信息。結(jié)束輸入時提示用戶圖書輸入完成 4.圖書基本信息刪除模塊用戶輸入所要刪除的圖書書名,先查找該圖書是否存在,若存在,則刪除該圖書所有信息,若不存在則提示無此圖書信息。 5.圖書基本信息查詢模塊用戶先選擇圖書查詢方式(按書名查找、按書號查找、按出版社查找、按作者查找)輸入這四個中的任意一個后,查找出

10、該圖書是否存在,若存在,則顯示該圖書信息,若不存在則提示用戶無此圖書信息。若有多本符合該條件,則輸出最先添加的那本書的信息。7讀者信息瀏覽模塊通過實名注冊登記每個讀者的信息,可統(tǒng)一查詢所有讀者的相關(guān)信息。五.主要功能的實現(xiàn) 程序運(yùn)行流程:但每個模塊運(yùn)行完即會回到主函數(shù),然后選擇其他或退出。1、圖書基本信息錄入:對新到圖書館的圖書的信息(編號、書名、出版社、作者、價格)進(jìn)行錄入。2、圖書基本信息顯示:顯示已被錄入圖書的所有信息。3、圖書基本信息刪除:通過輸入書名,判斷此圖書是否存在,若存在, 則刪除該圖書所有信息,若不存在則提示用戶重新輸入圖書書名。4、圖書基本信息查詢:將所有圖書信息包括編號、

11、書名、出版社、作者、價格等顯示在屏幕上。5、讀者信息的錄入:這里采用注冊登錄的方法對讀者信息進(jìn)行統(tǒng)計。6、讀者信息的顯示:將讀者賬號、姓名等輸出。7、退出登錄:回到一開始的登錄注冊頁面。8、退出系統(tǒng):即退出圖書借閱管理系統(tǒng)。程序代碼清單如下:. #include<stdio.h>#include<stdlib.h>#include<string.h>#define max1 10#define max2 50#define max3 100#define max4 20typedef struct bookchar nummax1;/書號char namem

12、ax4;/書名char writermax4;/作者char pricemax4;/價格 int flag;/判斷書是否被借出,0是借出,1是沒有借出 char publishmax4;/出版社 char timemax1;/出版時間 struct book*next;/下一本書的位置 bk;typedef struct reader char nummax4;/讀者賬號 char namemax4;/讀者姓名 int count;/已借書量 char shuhao_nummax4;/最后一本借的書書號 struct reader*next;/下個讀者的位置 rd;struct book *l

13、ink=null;/書的單向鏈表 struct book *last=null;/指向最后一本書 struct reader *llink=null;/讀者的單向鏈表 struct reader *llast=null; /指向最后一名讀者 int flag,cnt,cnt2;/*flag判斷有沒存書,cnt記錄書指針的位置,cnt2記錄讀者指針的位置*/ char peoplemax4;/記錄當(dāng)前讀者的姓名 struct reader *add2(struct reader *llast,char accountmax4,char namemax4);/添加讀者信息 int login(in

14、t j);/登錄系統(tǒng) void reg();/注冊賬號 struct book *add(struct book *last);/添加讀者信息void search();/查詢圖書 void updata(char namemax4,char nummax4);/更新圖書信息void through();/全部圖書瀏覽void through2();/全部讀者瀏覽void print(int j);/輸出圖書相關(guān)信息void del();/刪除圖書 void updata2(char namemax4,char nummax4);/更新讀者信息 void borrowbook();/借閱圖書

15、void returnbook();/歸還圖書 int login(int j) file *fp; char accountmax4,passwordmax4,account2max4,password2max4; fp=fopen("user.txt","r+"); if(fp=null) printf(" 對不起,文件打開失敗!n"); else printf(" 賬號:"); scanf("%s",account); printf(" 密碼:"); scanf(&qu

16、ot;%s",password); ; printf(" 尊敬的%s用戶,歡迎使用圖書管理系統(tǒng)n",account); strcpy(people,account); system("pause"); system("cls"); flag=1; return 1; fclose(fp); if(j>1) printf(" 對不起,您的輸入有誤,您還有%d次機(jī)會,請重新輸入n",j-1); return 0; void reg() file *fp; int m=1; char namemax4,a

17、ccountmax4,passwordmax4,password2max4; fp=fopen("user.txt","a+"); if(fp=null) printf(" 對不起,系統(tǒng)出錯,文件打開失敗!n"); else printf(" 請輸入賬號:"); scanf("%s",account); while(m) printf(" 請輸入密碼:"); scanf("%s",password); printf(" 請再次輸入密碼:"

18、;); scanf("%s",password2); if(strcmp(password,password2)=0) m=0; else printf(" 對不起,您兩次輸入的密碼不同,請重新輸入_n"); fprintf(fp," %s %s ",account,password); printf(" 注冊成功,正在進(jìn)入系統(tǒng)n");flag=1;printf(" 請輸入您的真實姓名方便我們管理n");scanf("%s",&name);llast=add2(lla

19、st,account,name);system("pause"); system("cls"); fclose(fp); struct book *add(struct book *last) struct book *a; a=null; if(last=null) /* 第一次添加書指針處理 */ last=new book; link=last; printf(" 歡迎進(jìn)入圖書添加界面n"); printf(" 請輸入添加的書的書號n"); scanf("%s",last->num)

20、; printf(" 請輸入書的作者n"); scanf("%s",last->writer); printf(" 請輸入書名n"); scanf("%s",last->name); printf(" 請輸出書的價格n");scanf("%s",last->price);printf(" 請輸入書的出版社n"); scanf("%s",last->publish);printf(" 請輸入書的出版時間n

21、");scanf("%s",last->time); last->flag=1; last->next=null; else /* 非第一次添加書指針處理 */ a=new book; printf(" 歡迎進(jìn)入圖書添加界面n"); printf(" 請輸入添加的書的書號n"); scanf("%s",a->num); printf(" 請輸入書的作者n"); scanf("%s",a->writer); printf(" 請

22、輸入書名n"); scanf("%s",a->name); printf(" 請輸出書的價格n"); scanf("%s",a->price); printf(" 請輸入書的出版社n"); scanf("%s",a->publish); printf(" 請輸入書的出版時間n"); scanf("%s",a->time); a->flag=1; a->next=null; last->next=a; la

23、st=a; printf(" 圖書添加完畢n"); return last;struct reader *add2(struct reader *llast,char accountmax4,char namemax4)struct reader *a;a=null;if(llast=null)/*第一次添加讀者*/ llast=new reader;llink=llast;strcpy(llast->num,account);strcpy(llast->name,name); llast->count=0;llast->next=null;else

24、 /*非第一次添加讀者*/ a=new reader;strcpy(a->num,account);strcpy(a->name,name); a->count=0;a->next=null;llast->next=a;llast=a;return llast;void through() struct book *p; cnt=0; p=link; if(p=null) printf(" 對不起,現(xiàn)在圖書館一本書還都沒有,建議您先添加圖書n"); else while(p!=null) /輸出圖書各樣詳細(xì)信息 cnt+; printf(&qu

25、ot;%dn 書號:%-12sn作者:%-12sn書名:%-12sn價格: %-12sn出版社:%-12sn出版時間: %-12sn",cnt,p->num,p->writer,p->name,p->price,p->publish,p->time);if(p->flag=0)printf("狀態(tài):不可借n"); else printf("狀態(tài):可借n");p=p->next; void through2() struct reader *p; cnt2=0; p=llink; while(p!=

26、null)/輸出讀者相關(guān)信息 cnt2+; printf("%d.n 讀者賬號:%-12sn讀者姓名:%-12sn",cnt2,p->num,p->name); printf("已借書的數(shù)量:%dn",p->count); if(p->count!=0) printf("最后一本書的書號:%-12sn",p->shuhao_num);p=p->next; void del() int j,k; struct book *p,*a; p=link; if(p=null) printf(" 對

27、不起,現(xiàn)在圖書館一本書還都沒有,建議您先添加圖書_n"); else through(); printf(" 請輸入您要刪除第幾本書吧_n"); scanf("%d",&j); if(j>cnt) printf(" 對不起,壓根就沒有那么多的書_n"); else if(j<cnt) /刪除中間的書 for(k=1;k<=j-2;k+) p=p->next; a=p->next; p->next=a->next; delete(a); printf(" 記錄刪除成功

28、n"); else /刪除最后一本書 for(k=1;k<=j-2;k+) p=p->next; a=p; delete(a); p->next=null; last->next=p; printf(" 記錄刪除成功n"); void print(int j)/*輸出圖書相關(guān)信息*/ struct book *p; int m; p=link; for(m=1;m<=j-1;m+) p=p->next; printf("%dn 書號:%-12sn作者:%-12sn書名:%-12sn價格: %-12sn出版社:%-12s

29、n出版時間: %-12sn",j,p->num,p->writer,p->name,p->price,p->publish,p->time); if(p->flag=0)printf("狀態(tài):不可借n"); else printf("狀態(tài):可借n");void search()int selete=0,m=0;char amax1*2;struct book *p;p=link;printf(" 歡迎進(jìn)入查找界面n");if(p=null) printf(" 對不起,現(xiàn)在圖

30、書館中還沒有圖書呢n");else/*按四種方式查詢圖書*/ printf(" 1.按書號查找n");printf(" 2.按作者查找n");printf(" 3.按書名查找n");printf(" 4.按出版社查找n");scanf("%d",&selete);if(selete=1)printf(" 您現(xiàn)在進(jìn)入書號查找界面,請輸入書號n");scanf("%s",a);while(p!=null)m+;if(strcmp(p->

31、num,a)=0)print(m);break;elsep=p->next;if(p=null)printf(" 對不起,數(shù)據(jù)庫中沒有您找的書n");else if(selete=2)printf(" 您現(xiàn)在進(jìn)入作者查找界面,請輸入作者n");scanf("%s",a);while(p!=null)m+;if(strcmp(p->writer,a)=0)print(m);break;elsep=p->next;if(p=null)printf(" 對不起,數(shù)據(jù)庫中沒有您找的書n");else if

32、(selete=3)printf(" 您現(xiàn)在進(jìn)入書名查找界面,請輸入書名n");scanf("%s",a);while(p!=null)m+;if(strcmp(p->name,a)=0)print(m);break;elsep=p->next;if(p=null)printf(" 對不起,數(shù)據(jù)庫中沒有您找的書n");else if(selete=4)printf(" 您現(xiàn)在進(jìn)入出版社查找界面,請輸入出版社名n");scanf("%s",a);while(p!=null)m+;if(

33、strcmp(p->publish,a)=0)print(m);break;elsep=p->next;if(p=null)printf(" 對不起,數(shù)據(jù)庫中沒有您找的書n");elseprintf(" 對不起,您的輸入有誤,請重新選擇n"); void updata(char namemax4,char nummax4)struct reader *a;a=llink;while(a!=null)if(strcmp(a->name,name)=0)strcpy(a->num,name);a->count+;strcpy(a

34、->shuhao_num,num);else a=a->next;void updata2(char namemax4,char nummax4)struct reader *a;a=llink;while(a!=null)if(strcmp(a->name,name)=0)a->count-;strcpy(a->shuhao_num,"");void borrowbook() int j,k; struct book *p; p=link; if(p=null) printf(" 對不起,現(xiàn)在圖書館一本書還都沒有,建議您先添加圖書_

35、n"); else through(); printf(" 請輸入您要借第幾本書吧_n"); scanf("%d",&j); if(j>cnt) printf(" 對不起,輸入出錯請重試n"); else for(k=1;k<=j-1;k+) p=p->next; if(p->flag=0)printf(" 對不起,該書已被借走,請借其他書n"); elsep->flag=0;updata(people,p->num);printf(" 借書成功,請在

36、規(guī)定時間內(nèi)歸還n"); void returnbook()char nummax4;struct book *p;p=link;printf(" 輸入要還的書的書號:n");scanf("%s",num);while(p!=null)if(strcmp(p->num,num)=0)p->flag=1;printf(" 還書成功哦!n");updata2(people,num);break;p=p->next;void restart()char n;int j,k;printf(" 1.已有賬號登

37、陸n 2.新用戶注冊n"); printf(" 請輸入您的選擇n");scanf("%d",&n);if(n=1) for(j=5;j>=0;j-) if(j!=0) k=login(j); if(k=1) break; else continue; flag=0; else flag=0; else if(n=2) reg(); else printf(" 對不起,您的輸入有誤,系統(tǒng)自動退出n"); int main()char seletemax1,n; int j,k; printf(" 歡迎進(jìn)入圖書管理系統(tǒng)n"); printf(

溫馨提示

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

評論

0/150

提交評論