軟件工程課程設計圖書管理系統(tǒng)_第1頁
軟件工程課程設計圖書管理系統(tǒng)_第2頁
軟件工程課程設計圖書管理系統(tǒng)_第3頁
軟件工程課程設計圖書管理系統(tǒng)_第4頁
軟件工程課程設計圖書管理系統(tǒng)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上軟件工程課程設計 圖書館管理系統(tǒng)一、可行性研究報告1、引言背景資料圖書館是為我們的學習工作提供服務的地方。圖書館里存放著大量的書籍資料,對這些書籍信息的有效的歸類整理與管理將大大提高圖書館的運作效率,降低圖書館工作人員的勞動強度,同時可以對圖書館的整個運作過程做到明細化,透明化,為各項工作有條不紊的進行提供保障。報告目的 本報告旨在研究分析圖書館管理系統(tǒng)開發(fā)的可行性,為此軟件的開發(fā)人員提供可行性的驗證與編寫方法的指導。軟件信息 軟件名稱:圖書館管理系統(tǒng) 開發(fā)平臺:Turbo C 用戶: 圖書館工作人員2、可行性研究的前提 主要功能:通過計算機完成圖書館在庫書籍的管理,

2、用計算機高效、安全的完成對圖書的信息處理,將工作人員從繁瑣的數(shù)據(jù)處理中解放。 性能要求: a、書籍信息的錄入,將圖書名,庫存數(shù)量輸入系統(tǒng),建立系統(tǒng)數(shù)據(jù)庫。 b、書籍信息的查詢,輸入書名,顯示此圖書的有關信息,包括庫存總量、借出數(shù)目、剩余數(shù)目。 c、書籍借出與歸還,輸入借出或歸還圖書的書名與數(shù)量后,對庫存信息進行相應修改。 d、書籍信息的插入與刪除,新書到庫時或清除庫存時,在數(shù)據(jù)庫內(nèi)增加或刪減相應信息。 e、書籍信息的備份,將現(xiàn)有數(shù)據(jù)庫信息存檔,以備不時之需。 f、書籍信息的讀入,輸入文件名,從相應文件中把信息讀入數(shù)據(jù)庫。 g、權限問題,進入系統(tǒng)之前輸入密碼,密碼不正確則退出系統(tǒng)。 開發(fā)目標:要

3、求系統(tǒng)具有良好的可操作性,數(shù)據(jù)穩(wěn)定性以及安全性,可以長期使用。3、對現(xiàn)有系統(tǒng)的分析 現(xiàn)用的管理系統(tǒng)在安全性,數(shù)據(jù)的讀入功能方面存在不同程度的缺陷,有必要進行改進4、所建議的系統(tǒng)使用基本方法:該系統(tǒng)具有簡單易用的特點,只需按照菜單功能行操作。系統(tǒng)流程圖:6、投資及效益分析該系統(tǒng)投資成本小,使用方法簡單易懂。該系統(tǒng)有效地提高圖書館工作人員的工作效率,節(jié)約人力物力。同時可以根據(jù)用戶的特殊需要,增添功能。具有成本低,功能強大,使用靈活的特點。7、社會因素方的可行性法律方面: 本系統(tǒng)的開發(fā)不會侵犯他人、集體或國家的利益,不違背當?shù)胤煞ㄒ?guī)。使用方面: 本系統(tǒng)可以滿足圖書館管理的要求,而且對使用本軟件人員

4、的計算機水平要求不高,只需了解軟件操作流程就可以使用本軟件,無需培訓。8、結論 該系統(tǒng)在各個方面的均具有可行性,可以立即開始進行。二、需求規(guī)格說明書1、引言編寫目的: 為軟件開發(fā)者提供開發(fā)依據(jù),在軟件的開發(fā)過程中起指向性功能。本說明書的讀者為此軟件的開發(fā)者。項目背景: 該軟件由學生自行編寫,由個人全權負責。本軟件獨立于其它管理軟件。參考資料: 萬曉東 施玉霞 等著軟件技術基礎教程09年7月2、任務概述目標: 本軟件旨在為學校的圖書館管理人員提供一個可以方便管理庫存圖書的系統(tǒng)??梢詫齑鎴D書進行錄入、借還、查詢、修改功能。減少操作時間,提高工作效率。 該軟件適用于一般規(guī)模的圖書館管理操作。用戶特

5、點: 本系統(tǒng)的操作對象為圖書館管理人員。對管理人員的計算機水平不需要很高的要求。條件與限制:本次開發(fā)工作無經(jīng)費投入,開發(fā)期限為40小時。3、數(shù)據(jù)描述:靜態(tài)數(shù)據(jù): 系統(tǒng)密碼,書籍名稱,庫存總數(shù),剩余數(shù),借出數(shù)。動態(tài)數(shù)據(jù): 使用者輸入的信息,包括添加的書籍信息,查詢關鍵字。數(shù)據(jù)庫描述:系統(tǒng)數(shù)據(jù)庫采用TXT文檔。數(shù)據(jù)流圖:數(shù)據(jù)字典:數(shù)據(jù)流名:圖書別 名:圖書館庫存圖書組 成:書名+庫存總數(shù)+剩余數(shù)+借出數(shù)備 注:無4、功能要求:功能劃分 錄入功能瀏覽功能信息查詢功能 借出歸還功能 插入與刪除功能 信息的備份與讀入功能 設置訪問權限功能功能描述錄入功能: 輸入相關數(shù)據(jù)瀏覽功能: 以列表方式列出所有記錄

6、信息信息查詢功能: 根據(jù)書名匹配查詢,并將查詢結果列出借出歸還功能: 根據(jù)借出與歸還的書籍信息修改相應數(shù)據(jù)插入與刪除功能: 插入一條新的圖書信息,刪除某圖書的信息信息的備份與讀入功能:將輸入文件進行備份和從指定文件讀入數(shù)據(jù)設置訪問權限功能:只有輸入正確密碼才可以進行操作 否則無權操作5、性能要求 數(shù)據(jù)精確度: 查詢時要確保查全率與查準率 時間特性: 系統(tǒng)運行時間應該在用戶能夠接受的范圍內(nèi) 適應性: 本軟件屬于小型軟件,對不同的運行環(huán)境適應性很強,可以能夠滿足使用需求。6、運行需求 用戶界面:在Turbo C 界面運行 硬件接口:普通PC機 軟件接口:運行于裝有Turbo C 的操作系統(tǒng) 故障處

7、理:如果在使用過程中出現(xiàn)程序出錯,重新運行即可恢復三、概要設計說明書1、引言編寫目的:設計一圖書館管理系統(tǒng)以代替現(xiàn)有的管理管理系統(tǒng)。本說明書讀者為軟件設計者。項目背景:該軟件由學生個人設計,無開發(fā)部門和主管部門,主要供學生練習使用。該軟件獨立于其它軟件系統(tǒng)。參考資料: 萬曉東 施玉霞 等著軟件技術基礎教程09年7月 譚浩強 著C語言程序設計 第三版 張志航 王珊珊等著程序設計語言C 07年9月2、概要設計:需求規(guī)定:本軟件提供一個既可以存儲信息,同時又具有瀏覽、插入、查詢、修改、刪除功能,供使用者輕松管理圖書館的庫存圖書。數(shù)據(jù)庫信息由使用者進行輸入。運行環(huán)境: 硬件 普通PC機 支持環(huán)境 WI

8、NDOWS操作系統(tǒng),Turbo C 軟件基本設計概念:本系統(tǒng)由主單函數(shù)調(diào)用各個子函數(shù)(功能函數(shù))來實現(xiàn)各項操作。功能函數(shù)包括插入函數(shù),刪除函數(shù),顯示函數(shù),文件讀入函數(shù),文件讀出函數(shù),借出函數(shù),歸還函數(shù),退出函數(shù)函數(shù)調(diào)用關系圖如下圖所示:系統(tǒng)結構模塊劃分與功能需求關系模塊編號模塊名稱功能M1身份驗證模塊輸入驗證信息M2主菜單模塊輸入選擇的功能M3插入模塊插入相關信息M4刪除模塊刪除指定信息M5查詢模塊查詢指定信息M6顯示模塊以列表方式顯示所有信息M7借出模塊實現(xiàn)書籍借出M8歸還模塊實現(xiàn)書籍歸還M9讀入模塊從外部文件讀入信息M10備份模塊備份文件信息M11退出模塊退出程序 保存文件人工處理過程:數(shù)

9、據(jù)的錄入工作需人工完成3、接口設計用戶接口:用戶輸入信息按 “書名”(空格)“庫存數(shù)量” 的格式輸入。TXT文件也按上述格式保存。外部接口:用戶界面:DOS界面軟件接口:運行于Win95以上版本,且要求安裝Turbo C 4、運行設計運行控制:系統(tǒng)運行后先進行身份驗證,驗證通過后,登錄,并調(diào)用M2,進入服務選擇模塊,由用戶選擇的信息選擇激活M3M10等模塊,最后根據(jù)用戶輸入的接受信息退出程序,關閉系統(tǒng)。運行時間:各模塊運行時間控制在1秒內(nèi)。5系統(tǒng)數(shù)據(jù)結構設計書名char name 剩余數(shù)量 int sum6、系統(tǒng)出錯處理設計出錯信息 出錯類型處理方法用戶輸入無效字符提示出錯,重新輸入借出數(shù)量過

10、大提示出錯,重新輸入維護設計本軟件必須按照軟件產(chǎn)品設計規(guī)范的步驟進行開發(fā),充分考慮軟件的可維護性,以便于未來版本開發(fā)及移植等二次開發(fā)。在編寫過程中如果發(fā)現(xiàn)有的模塊沒有必要,或者實現(xiàn)比較困難,可以由開發(fā)者提出修改意見,決定是否修改。四、詳細設計說明書1、引言編寫目的:設計一圖書館管理系統(tǒng)以代替現(xiàn)有的管理管理系統(tǒng)。本說明書讀者為軟件設計者。項目背景:該軟件由學生個人設計,無開發(fā)部門和主管部門,主要供學生練習使用。該軟件獨立于其它軟件系統(tǒng)。參考資料: 萬曉東 施玉霞等著軟件技術基礎教程 09年7月 譚浩強 著C語言程序設計 第三版 張志航 王珊珊等著程序設計語言C 07年9月2、總體設計需求概述錄入

11、功能: 輸入相關數(shù)據(jù)瀏覽功能: 以列表方式列出所有記錄信息信息查詢功能: 根據(jù)書名匹配查詢,并將查詢結果列出借出歸還功能: 根據(jù)借出與歸還的書籍信息修改相應數(shù)據(jù)插入與刪除功能:插入一條新的圖書信息,刪除某圖書的信息信息的備份與讀入功能:將輸入文件進行備份和從指定文件讀入數(shù)據(jù)設置訪問權限功能:只有輸入正確密碼才可以進行操作 否則無權操作系統(tǒng)結構圖3、程序描述M1身份驗證·功能:驗證身份·性能:·輸入項:預設密碼·輸出項:歡迎語句·算法: int keyword=111,a; printf("Please input keyword:&q

12、uot;); scanf("%d",&a); if(a!=keyword) exit(0); else printf("Welcome!");·測試要求:運行正常。M2主菜單模塊·功能:選擇功能·性能:·輸入項:數(shù)字0-9·輸出項:對應功能項·算法: int Display_MainMenu() /*顯示菜單的函數(shù)*/char x; do system("cls"); printf("*n"); printf(" BookListn&qu

13、ot;); printf(" All Booksn"); printf(" a BookInformationn"); printf(" a Bookn"); printf(" a Bookn"); printf(" a Bookn"); printf("n"); printf(" Records From a Filen"); printf(" to a Filen"); printf("n"); printf(&

14、quot;*n"); printf("Please choose from 0-9:"); printf("n"); x=getchar(); while(x<'0'|x>'9'); return(x-'0');·測試要求:運行正常。M3插入模塊·功能:插入新信息·性能:·輸入項:書名 數(shù)量·輸出項:成功提示·算法: Book *Insert(Book *head,Book *s) /*插入結點的函數(shù)*/ Book *p0,*

15、p1,*p2; p1=head;p0=s; /*使p1指向第一個結點,p0指向要插入的結點*/ if(head=NULL) /*原來的鏈表是空表*/ head=p0;p0->next=NULL; /*使p0作為首結點*/ while(strcmp(p0->Name,p1->Name)>0&&(p1->next!=NULL) p2=p1; p1=p1->next; if(strcmp(p0->Name,p1->Name)<=0) p0->next=p1; if(head=p1) head=p0; else p2->

16、next=p0; elsep1->next=p0;p0->next=NULL; return(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,

17、newrecord); printf("Insert successfullyn"); /*輸出插入成功的信息*/ return(head);·測試要求:運行正常。刪除模塊·功能:刪除信息·性能:·輸入項:所刪書名·輸出項:成功提示·算法: Book *Delete(Book *head,char *name) Book *p1,*p2; if(head=NULL) printf("Sorry No record!n"); p1=head; while(strcmp(p1->Name,na

18、me)!=0&&p1->next!=NULL) /*p1不是要找的結點,且后面還有結點*/ p2=p1;p1=p1->next; /*p1后移一個結點*/ if(strcmp(p1->Name,name)=0) /*找到了*/ if(p1=head)head=p1->next; /*若p1為首指針,使下一結點為首指針*/ else p2->next=p1->next; /*否則將下一結點地址賦給前一結點地址*/ printf("delete %s successfullyn",name); /*輸出刪除成功的信息*/ re

19、turn(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); /*找不到結點*/ else printf("Delete %s, Y/N?n",name); ch=getchar(); system("pause"); if(ch='

20、;y'|ch='Y') while(p!=NULL) head=Delete(head,name); /*刪除所有與輸入相同的記錄*/ p=Query(head,name); return(head);·測試要求:運行正常。M5查詢模塊·功能: 查詢功能·性能:·輸入項:查詢書名·輸出項:相應書籍信息·算法: Book *Query(Book *head,char *name) Book *p; p=head; while(strcmp(name,p->Name)!=0&&p->ne

21、xt!=NULL) p=p->next; if(strcmp(name,p->Name)=0) /*找到了,返回結點地址*/ return(p); else /*找不到返回空指針*/ return(NULL);void Query_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"

22、, p->Name,p->all,p->left,p->borrow); else printf("Can't find the records of %sn",name); /*找不到*/·測試要求:運行正常。M6顯示功能·功能: 顯示所有信息·性能:·輸入項:相應的菜單序號·輸出項:所有書籍信息·算法: void Display(Book *head) Book *p; int i; p=head; printf("Num BookName Total Left Bor

23、rown"); 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"); ·測試要求:運行正常。M7借出模塊·功能:借出書籍·性能:·輸入項:所借

24、書名 數(shù)量·輸出項:成功信息·算法: 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); /*找不到結點*/ else printf("Are you sure to borrow? %s, Y/N?n",name); ch

25、=getchar(); system("pause"); if(ch='y'|ch='Y') head=Borrow(head,name,n); return(head);·測試要求:運行正常。M8歸還模塊·功能:歸還書籍·性能:·輸入項:所換書名 數(shù)量·輸出項:成功提示·算法: Book *Return_a_Book(Book *head) char name20,ch; int n; Book *p; scanf("%s%d",name,&n); ge

26、tchar(); /*接收回車*/ p=Query(head,name); if(p=NULL) printf("Cannot Find %sn",name); /*找不到結點*/ else printf("Are you sure to return? %s, Y/N?n",name); ch=getchar(); system("pause"); if(ch='y'|ch='Y') head=Return(head,name,n); return(head);Book *Return(Book *h

27、ead,char *name,int sum) Book *p1; p1=head; while(strcmp(p1->Name,name)!=0&&p1->next!=NULL) /*p1不是要找的結點,且后面還有結點*/ p1=p1->next; /*p1后移一個結點*/ if(strcmp(p1->Name,name)=0) /*找到了*/ p1->borrow=p1->borrow-sum; p1->left=p1->left+sum; return(head);·測試要求:運行正常。M9讀入模塊·功能

28、:從文件讀入信息·性能:·輸入項:文件名·輸出項:成功提示·算法: 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;i<n;i

29、+) Book *p; p=(Book *)malloc(LEN); fgetc(fp); /*讀取換行符*/ fscanf(fp,"%s%d%d%d",p->Name,&p->all,&p->left,&p->borrow); head=Insert(head,p); /*插入結點*/ printf("Add from %s successfullyn",filename); fclose(fp);return(head);測試要求:運行正常。M10備份模塊·功能:數(shù)據(jù)備份·性能:&#

30、183;輸入項:所建文檔名·輸出項:成功提示·算法: Book *WritetoText(Book *head,char *filename)FILE *fp;Book *p; if(head=NULL) printf("No Record!n"); return(head); fp=fopen(filename,"w"); /*打開文件*/ p=head; while(p!=NULL) fprintf(fp,"%-14s%-10d%-10d%-10dnn",p->Name,p->all,p->l

31、eft,p->borrow); /*文件輸出*/ p=p->next; printf("Write to %s successfullyn",filename); /*輸出寫到文件完畢的信息*/ fclose(fp); return(head);·測試要求:運行正常。M11退出模塊·功能:退出程序·性能:·輸入項:數(shù)字0·輸出項:再見語句·算法: void Quit(Book *head)Book *p,*p1,*p2;FILE *fp; char filename="last" p

32、2=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) /*

33、p1指向的結點不是空指針*/ p2=p1->next; free(p1); /*釋放存儲空間*/ p1=p2; /*p1后移一個結點*/ ·測試要求:運行正常。五、測試報告1、引言編寫目的:測試圖書館管理系統(tǒng)軟件的各項功能是否符合預期要求。本報告讀者為軟件設計者。項目背景:該軟件由學生個人設計,無開發(fā)部門和主管部門,主要供學生練習使用。該軟件獨立于其它軟件系統(tǒng)。參考資料: 萬曉東 施玉霞 等著軟件技術基礎教程09年7月 譚浩強 著C語言程序設計 第三版 張志航 王珊珊等 著程序設計語言C 07年9月2、測試計劃執(zhí)行情況權限功能·測試數(shù)據(jù):輸入正確密111·測

34、試結果:成功進入主界面,說明本模塊功能正常插入功能·測試數(shù)據(jù):無·測試結果:菜單顯示正常。本模塊功能正常。插入功能·測試數(shù)據(jù):history 100·測試結果:調(diào)用顯示函數(shù)顯示結果。本模塊功能正常。刪除操作·測試數(shù)據(jù):history ·測試結果調(diào)用顯示函數(shù)顯示結果:輸出結果正確,說明本模塊功能正常。查詢模塊·測試數(shù)據(jù):預輸入數(shù)據(jù) history 100 physics 200 查詢history·測試結果:顯示結果 history 100 0 0說明本模塊運行正常。顯示模塊·上述過程已經(jīng)對本功能進行了測試

35、。·結果:顯示模塊運行正常。借出模塊·測試數(shù)據(jù):預輸入數(shù)據(jù) history 100 physics 200 調(diào)用借出函數(shù)借 history 50 maths 100·測試結果調(diào)用顯示函數(shù)顯示結果:歸還模塊·測試數(shù)據(jù):預輸入數(shù)據(jù) history 100 physics 200 調(diào)用歸還函數(shù)還 history 50 ·測試結果:文件讀入模塊·測試數(shù)據(jù):文本文檔 ·測試結果:調(diào)用顯示函數(shù)顯示結果測試結果正確。文件備份模塊·測試數(shù)據(jù): 測試數(shù)據(jù)采用上一步寫入的數(shù)據(jù)·測試結果退出模塊·測試數(shù)據(jù): 無

36、83;測試結果 成功退出程序 并生自動成備份文件 退出模塊運行正常。3、評價結果軟件能力: 軟件各項功能復合預期,各子程序運行正常缺陷和限制:每次登陸后必須手工調(diào)入上一次的備份文件以恢復系統(tǒng)數(shù)據(jù),給操作者帶來不便建議: 完善系統(tǒng)的數(shù)據(jù)庫功能,提供安全可靠的數(shù)據(jù)保存功能。測試結論: 本軟件測試通過。附源程序代碼:#include<>#include<>#include<>#include<>#define NULL 0#define LEN sizeof(Book)struct A char Name20; int all,left,borrow;

37、 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 *name);Book *Delete_a_record(Book *head);Book *Borrow(Book *head,char *name,in

38、t 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 *filename);Book *WritetoText(Book *head,char *filename); void Quit(Book *head);void

39、 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() case 1:printf(" BookListn");

40、/*調(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&

41、quot;);break; case 4:printf("Delete 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("R

42、eturn a BooknInput BookName and sum you return:"); head=Return_a_Book(head); system("pause");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");

43、scanf("%s",filename);/*輸入文件名*/ head=AddfromText(head,filename); system("pause");break; case 9:printf("Input the name of the NewText Filen"); scanf("%s",filename);/*輸入要寫入的文件名*/ head=WritetoText(head,filename); system("pause");break; case 0:printf(&quo

44、t;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");

45、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(x<'0'|x>'9'); r

46、eturn(x-'0');Book *Create() /*創(chuàng)建鏈表的函數(shù),返回首指針*/Book *head,*newrecord; char ch; printf("Input a Bookn"); head=NULL;/*首指針置空*/ do newrecord=(Book *)malloc(LEN); /*動態(tài)分配存儲空間*/ scanf("%s%d",newrecord->Name,&newrecord->all); newrecord->left=newrecord->all; newrecor

47、d->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'); /*判斷是否繼續(xù)*/ return(head);Book *Insert(Book *head,Book *s)/*插入結點的函數(shù)*/ Book *p0,*p1

48、,*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)<=0) p0->next=p1; if(head=p1) head=p0; else p2->next=p0; elsep1->next=p0;p0->next=NULL; return(hea

49、d);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");/*輸

50、出插入成功的信息*/ return(head);Book *Delete(Book *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

51、->next=p1->next; printf("delete %s successfullyn",name); 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); else printf("Delete %s, Y/N?n",na

52、me); 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_Book(Book *head) char name20,ch; int n; Book *p; scanf("%s%d",name,&n); getchar(); / p=Query(head,name); if(p=NULL) pri

53、ntf("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;

溫馨提示

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

評論

0/150

提交評論