版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、軟件工程課程設(shè)計(jì) 圖書館管理系統(tǒng)一、可行性研究報告1、引言背景資料圖書館是為我們的學(xué)習(xí)工作提供服務(wù)的地方。圖書館里存放著大量的書籍資料,對這些書籍信息的有效的歸類整理與管理將大大提高圖書館的運(yùn)作效率,降低圖書館工作人員的勞動強(qiáng)度,同時可以對圖書館的整個運(yùn)作過程做到明細(xì)化,透明化,為各項(xiàng)工作有條不紊的進(jìn)行提供保障。報告目的 本報告旨在研究分析圖書館管理系統(tǒng)開發(fā)的可行性,為此軟件的開發(fā)人員提供可行性的驗(yàn)證與編寫方法的指導(dǎo)。軟件信息 軟件名稱:圖書館管理系統(tǒng) 開發(fā)平臺:Turbo C 用戶: 圖書館工作人員2、可行性研究的前提 主要功能:通過計(jì)算機(jī)完成圖書館在庫書籍的管理,用計(jì)算機(jī)高效、安全的完成對
2、圖書的信息處理,將工作人員從繁瑣的數(shù)據(jù)處理中解放。 性能要求: a、書籍信息的錄入,將圖書名,庫存數(shù)量輸入系統(tǒng),建立系統(tǒng)數(shù)據(jù)庫。 b、書籍信息的查詢,輸入書名,顯示此圖書的有關(guān)信息,包括庫存總量、借出數(shù)目、剩余數(shù)目。 c、書籍借出與歸還,輸入借出或歸還圖書的書名與數(shù)量后,對庫存信息進(jìn)行相應(yīng)修改。 d、書籍信息的插入與刪除,新書到庫時或清除庫存時,在數(shù)據(jù)庫內(nèi)增加或刪減相應(yīng)信息。 e、書籍信息的備份,將現(xiàn)有數(shù)據(jù)庫信息存檔,以備不時之需。 f、書籍信息的讀入,輸入文件名,從相應(yīng)文件中把信息讀入數(shù)據(jù)庫。 g、權(quán)限問題,進(jìn)入系統(tǒng)之前輸入密碼,密碼不正確則退出系統(tǒng)。 開發(fā)目標(biāo):要求系統(tǒng)具有良好的可操作性,
3、數(shù)據(jù)穩(wěn)定性以及安全性,可以長期使用。3、對現(xiàn)有系統(tǒng)的分析 現(xiàn)用的管理系統(tǒng)在安全性,數(shù)據(jù)的讀入功能方面存在不同程度的缺陷,有必要進(jìn)行改進(jìn)4、所建議的系統(tǒng)使用基本方法:該系統(tǒng)具有簡單易用的特點(diǎn),只需按照菜單功能行操作。系統(tǒng)流程圖:6、投資及效益分析該系統(tǒng)投資成本小,使用方法簡單易懂。該系統(tǒng)有效地提高圖書館工作人員的工作效率,節(jié)約人力物力。同時可以根據(jù)用戶的特殊需要,增添功能。具有成本低,功能強(qiáng)大,使用靈活的特點(diǎn)。7、社會因素方的可行性法律方面: 本系統(tǒng)的開發(fā)不會侵犯他人、集體或國家的利益,不違背當(dāng)?shù)胤煞ㄒ?guī)。使用方面: 本系統(tǒng)可以滿足圖書館管理的要求,而且對使用本軟件人員的計(jì)算機(jī)水平要求不高,只需
4、了解軟件操作流程就可以使用本軟件,無需培訓(xùn)。8、結(jié)論 該系統(tǒng)在各個方面的均具有可行性,可以立即開始進(jìn)行。二、需求規(guī)格說明書1、引言編寫目的: 為軟件開發(fā)者提供開發(fā)依據(jù),在軟件的開發(fā)過程中起指向性功能。本說明書的讀者為此軟件的開發(fā)者。項(xiàng)目背景: 該軟件由學(xué)生自行編寫,由個人全權(quán)負(fù)責(zé)。本軟件獨(dú)立于其它管理軟件。參考資料: 萬曉東 施玉霞 等著軟件技術(shù)基礎(chǔ)教程09年7月2、任務(wù)概述目標(biāo): 本軟件旨在為學(xué)校的圖書館管理人員提供一個可以方便管理庫存圖書的系統(tǒng)??梢詫齑鎴D書進(jìn)行錄入、借還、查詢、修改功能。減少操作時間,提高工作效率。 該軟件適用于一般規(guī)模的圖書館管理操作。用戶特點(diǎn): 本系統(tǒng)的操作對象為圖
5、書館管理人員。對管理人員的計(jì)算機(jī)水平不需要很高的要求。條件與限制:本次開發(fā)工作無經(jīng)費(fèi)投入,開發(fā)期限為40小時。3、數(shù)據(jù)描述:靜態(tài)數(shù)據(jù): 系統(tǒng)密碼,書籍名稱,庫存總數(shù),剩余數(shù),借出數(shù)。動態(tài)數(shù)據(jù): 使用者輸入的信息,包括添加的書籍信息,查詢關(guān)鍵字。數(shù)據(jù)庫描述:系統(tǒng)數(shù)據(jù)庫采用TXT文檔。數(shù)據(jù)流圖:數(shù)據(jù)字典:數(shù)據(jù)流名:圖書別 名:圖書館庫存圖書組 成:書名+庫存總數(shù)+剩余數(shù)+借出數(shù)備 注:無4、功能要求:功能劃分 錄入功能瀏覽功能信息查詢功能 借出歸還功能 插入與刪除功能 信息的備份與讀入功能 設(shè)置訪問權(quán)限功能功能描述錄入功能: 輸入相關(guān)數(shù)據(jù)瀏覽功能: 以列表方式列出所有記錄信息信息查詢功能: 根據(jù)書
6、名匹配查詢,并將查詢結(jié)果列出借出歸還功能: 根據(jù)借出與歸還的書籍信息修改相應(yīng)數(shù)據(jù)插入與刪除功能: 插入一條新的圖書信息,刪除某圖書的信息信息的備份與讀入功能:將輸入文件進(jìn)行備份和從指定文件讀入數(shù)據(jù)設(shè)置訪問權(quán)限功能:只有輸入正確密碼才可以進(jìn)行操作 否則無權(quán)操作5、性能要求 數(shù)據(jù)精確度: 查詢時要確保查全率與查準(zhǔn)率 時間特性: 系統(tǒng)運(yùn)行時間應(yīng)該在用戶能夠接受的范圍內(nèi) 適應(yīng)性: 本軟件屬于小型軟件,對不同的運(yùn)行環(huán)境適應(yīng)性很強(qiáng),可以能夠滿足使用需求。6、運(yùn)行需求 用戶界面:在Turbo C 界面運(yùn)行 硬件接口:普通PC機(jī) 軟件接口:運(yùn)行于裝有Turbo C 的操作系統(tǒng) 故障處理:如果在使用過程中出現(xiàn)程
7、序出錯,重新運(yùn)行即可恢復(fù)三、概要設(shè)計(jì)說明書1、引言編寫目的:設(shè)計(jì)一圖書館管理系統(tǒng)以代替現(xiàn)有的管理管理系統(tǒng)。本說明書讀者為軟件設(shè)計(jì)者。項(xiàng)目背景:該軟件由學(xué)生個人設(shè)計(jì),無開發(fā)部門和主管部門,主要供學(xué)生練習(xí)使用。該軟件獨(dú)立于其它軟件系統(tǒng)。參考資料: 萬曉東 施玉霞 等著軟件技術(shù)基礎(chǔ)教程09年7月 譚浩強(qiáng) 著C語言程序設(shè)計(jì) 第三版 張志航 王珊珊等著程序設(shè)計(jì)語言C 07年9月2、概要設(shè)計(jì):需求規(guī)定:本軟件提供一個既可以存儲信息,同時又具有瀏覽、插入、查詢、修改、刪除功能,供使用者輕松管理圖書館的庫存圖書。數(shù)據(jù)庫信息由使用者進(jìn)行輸入。運(yùn)行環(huán)境: 硬件 普通PC機(jī) 支持環(huán)境 WINDOWS操作系統(tǒng),Tur
8、bo C 軟件基本設(shè)計(jì)概念:本系統(tǒng)由主單函數(shù)調(diào)用各個子函數(shù)(功能函數(shù))來實(shí)現(xiàn)各項(xiàng)操作。功能函數(shù)包括插入函數(shù),刪除函數(shù),顯示函數(shù),文件讀入函數(shù),文件讀出函數(shù),借出函數(shù),歸還函數(shù),退出函數(shù)函數(shù)調(diào)用關(guān)系圖如下圖所示:系統(tǒng)結(jié)構(gòu)模塊劃分與功能需求關(guān)系模塊編號模塊名稱功能M1身份驗(yàn)證模塊輸入驗(yàn)證信息M2主菜單模塊輸入選擇的功能M3插入模塊插入相關(guān)信息M4刪除模塊刪除指定信息M5查詢模塊查詢指定信息M6顯示模塊以列表方式顯示所有信息M7借出模塊實(shí)現(xiàn)書籍借出M8歸還模塊實(shí)現(xiàn)書籍歸還M9讀入模塊從外部文件讀入信息M10備份模塊備份文件信息M11退出模塊退出程序 保存文件人工處理過程:數(shù)據(jù)的錄入工作需人工完成3、
9、接口設(shè)計(jì)用戶接口:用戶輸入信息按 “書名”(空格)“庫存數(shù)量” 的格式輸入。TXT文件也按上述格式保存。外部接口:用戶界面:DOS界面軟件接口:運(yùn)行于Win95以上版本,且要求安裝Turbo C 4、運(yùn)行設(shè)計(jì)運(yùn)行控制:系統(tǒng)運(yùn)行后先進(jìn)行身份驗(yàn)證,驗(yàn)證通過后,登錄,并調(diào)用M2,進(jìn)入服務(wù)選擇模塊,由用戶選擇的信息選擇激活M3M10等模塊,最后根據(jù)用戶輸入的接受信息退出程序,關(guān)閉系統(tǒng)。運(yùn)行時間:各模塊運(yùn)行時間控制在1秒內(nèi)。5系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)書名char name 剩余數(shù)量 int sum6、系統(tǒng)出錯處理設(shè)計(jì)出錯信息 出錯類型處理方法用戶輸入無效字符提示出錯,重新輸入借出數(shù)量過大提示出錯,重新輸入維護(hù)設(shè)
10、計(jì)本軟件必須按照軟件產(chǎn)品設(shè)計(jì)規(guī)范的步驟進(jìn)行開發(fā),充分考慮軟件的可維護(hù)性,以便于未來版本開發(fā)及移植等二次開發(fā)。在編寫過程中如果發(fā)現(xiàn)有的模塊沒有必要,或者實(shí)現(xiàn)比較困難,可以由開發(fā)者提出修改意見,決定是否修改。四、詳細(xì)設(shè)計(jì)說明書1、引言編寫目的:設(shè)計(jì)一圖書館管理系統(tǒng)以代替現(xiàn)有的管理管理系統(tǒng)。本說明書讀者為軟件設(shè)計(jì)者。項(xiàng)目背景:該軟件由學(xué)生個人設(shè)計(jì),無開發(fā)部門和主管部門,主要供學(xué)生練習(xí)使用。該軟件獨(dú)立于其它軟件系統(tǒng)。參考資料: 萬曉東 施玉霞等著軟件技術(shù)基礎(chǔ)教程 09年7月 譚浩強(qiáng) 著C語言程序設(shè)計(jì) 第三版 張志航 王珊珊等著程序設(shè)計(jì)語言C 07年9月2、總體設(shè)計(jì)需求概述錄入功能: 輸入相關(guān)數(shù)據(jù)瀏覽功
11、能: 以列表方式列出所有記錄信息信息查詢功能: 根據(jù)書名匹配查詢,并將查詢結(jié)果列出借出歸還功能: 根據(jù)借出與歸還的書籍信息修改相應(yīng)數(shù)據(jù)插入與刪除功能:插入一條新的圖書信息,刪除某圖書的信息信息的備份與讀入功能:將輸入文件進(jìn)行備份和從指定文件讀入數(shù)據(jù)設(shè)置訪問權(quán)限功能:只有輸入正確密碼才可以進(jìn)行操作 否則無權(quán)操作系統(tǒng)結(jié)構(gòu)圖3、程序描述M1身份驗(yàn)證功能:驗(yàn)證身份性能:輸入項(xiàng):預(yù)設(shè)密碼輸出項(xiàng):歡迎語句算法: int keyword=111,a; printf(Please input keyword:); scanf(%d,&a); if(a!=keyword) exit(0); else print
12、f(Welcome!);測試要求:運(yùn)行正常。M2主菜單模塊功能:選擇功能性能:輸入項(xiàng):數(shù)字0-9輸出項(xiàng):對應(yīng)功能項(xiàng)算法: int Display_MainMenu() /*顯示菜單的函數(shù)*/char x; do system(cls); printf(*n); printf( BookListn); printf( All Booksn); printf( a BookInformationn); printf( a Bookn); printf( a Bookn); printf( a Bookn); printf(n); printf( Records From a Filen); pri
13、ntf( to a Filen); printf(n); printf(*n); printf(Please choose from 0-9:); printf(n); x=getchar(); while(x9); return(x-0);測試要求:運(yùn)行正常。M3插入模塊功能:插入新信息性能:輸入項(xiàng):書名 數(shù)量輸出項(xiàng):成功提示算法: Book *Insert(Book *head,Book *s) /*插入結(jié)點(diǎn)的函數(shù)*/ Book *p0,*p1,*p2; p1=head;p0=s; /*使p1指向第一個結(jié)點(diǎn),p0指向要插入的結(jié)點(diǎn)*/ if(head=NULL) /*原來的鏈表是空表*/ h
14、ead=p0;p0-next=NULL; /*使p0作為首結(jié)點(diǎn)*/ while(strcmp(p0-Name,p1-Name)0&(p1-next!=NULL) p2=p1; p1=p1-next; if(strcmp(p0-Name,p1-Name)next=p1; if(head=p1) head=p0; else p2-next=p0; elsep1-next=p0;p0-next=NULL; return(head);Book *Insert_a_record(Book *head) Book *newrecord; newrecord=(Book *)malloc(LEN); /*動
15、態(tài)分配存儲空間*/ scanf(%s%d,newrecord-Name,&newrecord-all); newrecord-borrow=0; newrecord-left=newrecord-all; head=Insert(head,newrecord); printf(Insert successfullyn); /*輸出插入成功的信息*/ return(head);測試要求:運(yùn)行正常。刪除模塊功能:刪除信息性能:輸入項(xiàng):所刪書名輸出項(xiàng):成功提示算法: Book *Delete(Book *head,char *name) Book *p1,*p2; if(head=NULL) pri
16、ntf(Sorry No record!n); p1=head; while(strcmp(p1-Name,name)!=0&p1-next!=NULL) /*p1不是要找的結(jié)點(diǎn),且后面還有結(jié)點(diǎn)*/ p2=p1;p1=p1-next; /*p1后移一個結(jié)點(diǎn)*/ if(strcmp(p1-Name,name)=0) /*找到了*/ if(p1=head)head=p1-next; /*若p1為首指針,使下一結(jié)點(diǎn)為首指針*/ else p2-next=p1-next; /*否則將下一結(jié)點(diǎn)地址賦給前一結(jié)點(diǎn)地址*/ printf(delete %s successfullyn,name); /*輸出刪
17、除成功的信息*/ return(head);Book *Delete_a_record(Book *head) char name20,ch; Book *p; scanf(%s,name); getchar(); /*接收回車*/ p=Query(head,name); if(p=NULL) printf(Cannot Find %sn,name); /*找不到結(jié)點(diǎn)*/ else printf(Delete %s, Y/N?n,name); ch=getchar(); system(pause); if(ch=y|ch=Y) while(p!=NULL) head=Delete(head,n
18、ame); /*刪除所有與輸入相同的記錄*/ p=Query(head,name); return(head);測試要求:運(yùn)行正常。M5查詢模塊功能: 查詢功能性能:輸入項(xiàng):查詢書名輸出項(xiàng):相應(yīng)書籍信息算法: Book *Query(Book *head,char *name) Book *p; p=head; while(strcmp(name,p-Name)!=0&p-next!=NULL) p=p-next; if(strcmp(name,p-Name)=0) /*找到了,返回結(jié)點(diǎn)地址*/ return(p); else /*找不到返回空指針*/ return(NULL);void Qu
19、ery_a_record(Book *head) char name20; Book *p; scanf(%s,name); p=Query(head,name); if(p!=NULL) /*找到了*/ printf(Find successfullyn%s total:%d left:%d borrow:%dn, p-Name,p-all,p-left,p-borrow); else printf(Cant find the records of %sn,name); /*找不到*/測試要求:運(yùn)行正常。M6顯示功能功能: 顯示所有信息性能:輸入項(xiàng):相應(yīng)的菜單序號輸出項(xiàng):所有書籍信息算法:
20、void Display(Book *head) Book *p; int i; p=head; printf(Num BookName Total Left Borrown); for(i=1;p!=NULL;i+) printf(%-5d%-14s%-10d%-10d%-5dn, i,p-Name,p-all,p-left,p-borrow); p=p-next; if(i%10=0) system(pause); /*按回車翻頁顯示*/ printf(Num BookName total left borrown); 測試要求:運(yùn)行正常。M7借出模塊功能:借出書籍性能:輸入項(xiàng):所借書名
21、數(shù)量輸出項(xiàng):成功信息算法: Book *Borrow_a_Book(Book *head) char name20,ch; int n; Book *p; scanf(%s%d,name,&n); getchar(); /*接收回車*/ p=Query(head,name); if(p=NULL) printf(Cannot Find %sn,name); /*找不到結(jié)點(diǎn)*/ else printf(Are you sure to borrow? %s, Y/N?n,name); ch=getchar(); system(pause); if(ch=y|ch=Y) head=Borrow(he
22、ad,name,n); return(head);測試要求:運(yùn)行正常。M8歸還模塊功能:歸還書籍性能:輸入項(xiàng):所換書名 數(shù)量輸出項(xiàng):成功提示算法: Book *Return_a_Book(Book *head) char name20,ch; int n; Book *p; scanf(%s%d,name,&n); getchar(); /*接收回車*/ p=Query(head,name); if(p=NULL) printf(Cannot Find %sn,name); /*找不到結(jié)點(diǎn)*/ else printf(Are you sure to return? %s, Y/N?n,name
23、); ch=getchar(); system(pause); if(ch=y|ch=Y) head=Return(head,name,n); return(head);Book *Return(Book *head,char *name,int sum) Book *p1; p1=head; while(strcmp(p1-Name,name)!=0&p1-next!=NULL) /*p1不是要找的結(jié)點(diǎn),且后面還有結(jié)點(diǎn)*/ p1=p1-next; /*p1后移一個結(jié)點(diǎn)*/ if(strcmp(p1-Name,name)=0) /*找到了*/ p1-borrow=p1-borrow-sum;
24、p1-left=p1-left+sum; return(head);測試要求:運(yùn)行正常。M9讀入模塊功能:從文件讀入信息性能:輸入項(xiàng):文件名輸出項(xiàng):成功提示算法: Book *AddfromText(Book *head,char *filename) FILE *fp; int n,i; if(fp=fopen(filename,r)=NULL) printf(Cannot find file:%sn,filename); /*打不開所指定文件*/ return(head); fscanf(fp,%d,&n); /*待插入記錄個數(shù)*/ for(i=0;iName,&p-all,&p-left
25、,&p-borrow); head=Insert(head,p); /*插入結(jié)點(diǎn)*/ printf(Add from %s successfullyn,filename); fclose(fp);return(head);測試要求:運(yùn)行正常。M10備份模塊功能:數(shù)據(jù)備份性能:輸入項(xiàng):所建文檔名輸出項(xiàng):成功提示算法: Book *WritetoText(Book *head,char *filename)FILE *fp;Book *p; if(head=NULL) printf(No Record!n); return(head); fp=fopen(filename,w); /*打開文件*/
26、 p=head; while(p!=NULL) fprintf(fp,%-14s%-10d%-10d%-10dnn,p-Name,p-all,p-left,p-borrow); /*文件輸出*/ p=p-next; printf(Write to %s successfullyn,filename); /*輸出寫到文件完畢的信息*/ fclose(fp); return(head);測試要求:運(yùn)行正常。M11退出模塊功能:退出程序性能:輸入項(xiàng):數(shù)字0輸出項(xiàng):再見語句算法: void Quit(Book *head)Book *p,*p1,*p2;FILE *fp; char filename=
27、last; p2=p1=head; if(head!=NULL) fp=fopen(filename,w); /*打開文件*/ p=head; while(p!=NULL) fprintf(fp,%s %d %d %dn,p-Name,p-all,p-left,p-borrow); /*文件輸出*/ p=p-next; printf(Write to %s successfullyn,filename); /*輸出寫到文件完畢的信息*/ fclose(fp); while(p1!=NULL) /*p1指向的結(jié)點(diǎn)不是空指針*/ p2=p1-next; free(p1); /*釋放存儲空間*/ p
28、1=p2; /*p1后移一個結(jié)點(diǎn)*/ 測試要求:運(yùn)行正常。五、測試報告1、引言編寫目的:測試圖書館管理系統(tǒng)軟件的各項(xiàng)功能是否符合預(yù)期要求。本報告讀者為軟件設(shè)計(jì)者。項(xiàng)目背景:該軟件由學(xué)生個人設(shè)計(jì),無開發(fā)部門和主管部門,主要供學(xué)生練習(xí)使用。該軟件獨(dú)立于其它軟件系統(tǒng)。參考資料: 萬曉東 施玉霞 等著軟件技術(shù)基礎(chǔ)教程09年7月 譚浩強(qiáng) 著C語言程序設(shè)計(jì) 第三版 張志航 王珊珊等 著程序設(shè)計(jì)語言C 07年9月2、測試計(jì)劃執(zhí)行情況權(quán)限功能測試數(shù)據(jù):輸入正確密111測試結(jié)果:成功進(jìn)入主界面,說明本模塊功能正常插入功能測試數(shù)據(jù):無測試結(jié)果:菜單顯示正常。本模塊功能正常。插入功能測試數(shù)據(jù):history 100
29、測試結(jié)果:調(diào)用顯示函數(shù)顯示結(jié)果。本模塊功能正常。刪除操作測試數(shù)據(jù):history 測試結(jié)果調(diào)用顯示函數(shù)顯示結(jié)果:輸出結(jié)果正確,說明本模塊功能正常。查詢模塊測試數(shù)據(jù):預(yù)輸入數(shù)據(jù) history 100 physics 200 查詢history測試結(jié)果:顯示結(jié)果 history 100 0 0說明本模塊運(yùn)行正常。顯示模塊上述過程已經(jīng)對本功能進(jìn)行了測試。結(jié)果:顯示模塊運(yùn)行正常。借出模塊測試數(shù)據(jù):預(yù)輸入數(shù)據(jù) history 100 physics 200 調(diào)用借出函數(shù)借 history 50 maths 100測試結(jié)果調(diào)用顯示函數(shù)顯示結(jié)果:歸還模塊測試數(shù)據(jù):預(yù)輸入數(shù)據(jù) history 100 phy
30、sics 200 調(diào)用歸還函數(shù)還 history 50 測試結(jié)果:文件讀入模塊測試數(shù)據(jù):文本文檔 測試結(jié)果:調(diào)用顯示函數(shù)顯示結(jié)果測試結(jié)果正確。文件備份模塊測試數(shù)據(jù): 測試數(shù)據(jù)采用上一步寫入的數(shù)據(jù)測試結(jié)果退出模塊測試數(shù)據(jù): 無測試結(jié)果 成功退出程序 并生自動成備份文件 退出模塊運(yùn)行正常。3、評價結(jié)果軟件能力: 軟件各項(xiàng)功能復(fù)合預(yù)期,各子程序運(yùn)行正常缺陷和限制:每次登陸后必須手工調(diào)入上一次的備份文件以恢復(fù)系統(tǒng)數(shù)據(jù),給操作者帶來不便建議: 完善系統(tǒng)的數(shù)據(jù)庫功能,提供安全可靠的數(shù)據(jù)保存功能。測試結(jié)論: 本軟件測試通過。附源程序代碼:#include#include#include#include#de
31、fine NULL 0#define LEN sizeof(Book)struct A char Name20; int all,left,borrow; struct A *next; ;typedef struct A Book;int Display_Main_Menu(); /*主菜單顯示*/Book *Create(); /*功能函數(shù)聲明*/ void Display(Book *head);Book *Insert(Book *head,Book *s);Book *Insert_a_record(Book *head);Book *Delete(Book *head,char *
32、name);Book *Delete_a_record(Book *head);Book *Borrow(Book *head,char *name,int sum);Book *Borrow_a_Book(Book *head);Book *Return(Book *head,char *name,int sum);Book *Return_a_Book(Book *head);Book *Query(Book *head,char *name); void Query_a_record(Book *head);Book *AddfromText(Book *head,char *filen
33、ame);Book *WritetoText(Book *head,char *filename); void Quit(Book *head);void main() /*主函數(shù)部分*/Book *head; /*定義變量*/ char filename20; int keyword=111,a; printf(Please input keyword:); scanf(%d,&a); if(a!=keyword) exit(0); else printf(Welcome!); head=NULL; /*置首指針為空*/ for(;) switch(Display_MainMenu() ca
34、se 1:printf( BookListn); /*調(diào)用Create函數(shù)創(chuàng)建鏈表*/ head=Create(); system(pause); break; case 2:printf(Display All Booksn); Display(head); /*調(diào)用Display函數(shù)顯示所有*/ system(pause);break; case 3:printf(Insert a Recordn); head=Insert_a_record(head);/*調(diào)用Insert_a_record函數(shù)插入*/ system(pause);break; case 4:printf(Delete
35、a Bookn); head=Delete_a_record(head);/*調(diào)用Delete_a_record函數(shù)刪除*/ system(pause);break; case 5:printf(Borrow a BooknInput BookName and sum you borrow:); head=Borrow_a_Book(head); system(pause);break; case 6:printf(Return a BooknInput BookName and sum you return:); head=Return_a_Book(head); system(pause)
36、;break; case 7:printf(QuerynInput the BookName you want:); Query_a_record(head);/*調(diào)用查詢函數(shù)*/ system(pause);break; case 8:printf(Input the name of Text Filen); scanf(%s,filename);/*輸入文件名*/ head=AddfromText(head,filename); system(pause);break; case 9:printf(Input the name of the NewText Filen); scanf(%s
37、,filename);/*輸入要寫入的文件名*/ head=WritetoText(head,filename); system(pause);break; case 0:printf(Goodbyen); Quit(head); exit(0); int Display_MainMenu() /*顯示菜單的函數(shù)*/char x; do system(cls); printf(*n); printf( BookListn); printf( All Booksn); printf( a BookInformationn); printf( a Bookn); printf( a Bookn);
38、 printf( a Bookn); printf(n); printf( Records From a Filen); printf( to a Filen); printf(n); printf(*n); printf(Please choose from 0-9:); printf(n); x=getchar(); while(x9); return(x-0);Book *Create() /*創(chuàng)建鏈表的函數(shù),返回首指針*/Book *head,*newrecord; char ch; printf(Input a Bookn); head=NULL;/*首指針置空*/ do newre
39、cord=(Book *)malloc(LEN); /*動態(tài)分配存儲空間*/ scanf(%s%d,newrecord-Name,&newrecord-all); newrecord-left=newrecord-all; newrecord-borrow=0; head=Insert(head,newrecord); /*調(diào)用Insert函數(shù)判斷位置插入*/ getchar(); / *接收最后輸入的回車符*/ printf(Add another Book Y/N?n); ch=getchar(); getchar(); /*接收回車符*/while(ch!=n&ch!=N); /*判斷是
40、否繼續(xù)*/ return(head);Book *Insert(Book *head,Book *s)/*插入結(jié)點(diǎn)的函數(shù)*/ Book *p0,*p1,*p2; p1=head;p0=s; if(head=NULL) head=p0;p0-next=NULL; while(strcmp(p0-Name,p1-Name)0&(p1-next!=NULL) p2=p p1=p1-next; if(strcmp(p0-Name,p1-Name)next=p1; if(head=p1) head=p0; else p2-next=p0; elsep1-next=p0;p0-next=NULL; ret
41、urn(head);Book *Insert_a_record(Book *head) Book *newrecord; newrecord=(Book *)malloc(LEN); /*動態(tài)分配存儲空間*/ scanf(%s%d,newrecord-Name,&newrecord-all); newrecord-borrow=0; newrecord-left=newrecord-all; head=Insert(head,newrecord); printf(Insert successfullyn);/*輸出插入成功的信息*/ return(head);Book *Delete(Book
42、 *head,char *name) /*刪除功能函數(shù)*/ Book *p1,*p2; if(head=NULL) printf(Sorry No record!n); p1=head; while(strcmp(p1-Name,name)!=0&p1-next!=NULL) / p2=p1;p1=p1-next; if(strcmp(p1-Name,name)=0) if(p1=head)head=p1-next; else p2-next=p1-next; printf(delete %s successfullyn,name); return(head);Book *Delete_a_r
43、ecord(Book *head) char name20,ch; Book *p; scanf(%s,name); getchar(); p=Query(head,name); if(p=NULL) printf(Cannot Find %sn,name); else printf(Delete %s, Y/N?n,name); ch=getchar(); system(pause); if(ch=y|ch=Y) while(p!=NULL) head=Delete(head,name); p=Query(head,name); return(head);Book *Borrow_a_Boo
44、k(Book *head) char name20,ch; int n; Book *p; scanf(%s%d,name,&n); getchar(); / p=Query(head,name); if(p=NULL) printf(Cannot Find %sn,name); else printf(Are you sure to borrow? %s, Y/N?n,name); ch=getchar(); system(pause); if(ch=y|ch=Y) head=Borrow(head,name,n); return(head);Book *Borrow(Book *head,char *name,int sum) Book *p1; p1=head; while(strcmp(p1-Name,name)!=0&p1-next!=NULL) p1=p1-next; if(strcmp(p1-Name,name)=0) p1-borrow=sum; p1-left=p1-all-sum; return
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年三季度報天津地區(qū)A股流動負(fù)債合計(jì)排名前十大上市公司
- 課題申報參考:教育家精神賦能高校師德師風(fēng)建設(shè)研究
- 二零二五版外資企業(yè)會計(jì)人員聘用與管理服務(wù)協(xié)議3篇
- 二零二五年環(huán)境治理擔(dān)保合同標(biāo)的屬性與實(shí)施3篇
- 二零二五年度農(nóng)產(chǎn)品批發(fā)市場合作協(xié)議書4篇
- 2025年湛江貨運(yùn)從業(yè)資格證怎么考
- 醫(yī)院工作個人工作總結(jié)
- 二零二五版?zhèn)€體工商戶雇工勞動合同(文創(chuàng)產(chǎn)業(yè)專用)3篇
- 2025年度智能交通設(shè)施安裝與維護(hù)承包合作協(xié)議4篇
- 2025年度智慧家居蟲害預(yù)防與治理服務(wù)合同4篇
- 2024年高純氮化鋁粉體項(xiàng)目可行性分析報告
- 安檢人員培訓(xùn)
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期1月期末 英語試題
- 危險性較大分部分項(xiàng)工程及施工現(xiàn)場易發(fā)生重大事故的部位、環(huán)節(jié)的預(yù)防監(jiān)控措施
- 《榜樣9》觀后感心得體會四
- 2023事業(yè)單位筆試《公共基礎(chǔ)知識》備考題庫(含答案)
- 化學(xué)-廣東省廣州市2024-2025學(xué)年高一上學(xué)期期末檢測卷(一)試題和答案
- 2025四川中煙招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- EHS工程師招聘筆試題與參考答案(某大型央企)2024年
- 營銷策劃 -麗亭酒店品牌年度傳播規(guī)劃方案
- 2025年中國蛋糕行業(yè)市場規(guī)模及發(fā)展前景研究報告(智研咨詢發(fā)布)
評論
0/150
提交評論