數(shù)據(jù)結(jié)構(gòu)圖書管理系統(tǒng)課程設(shè)計報告_第1頁
數(shù)據(jù)結(jié)構(gòu)圖書管理系統(tǒng)課程設(shè)計報告_第2頁
數(shù)據(jù)結(jié)構(gòu)圖書管理系統(tǒng)課程設(shè)計報告_第3頁
數(shù)據(jù)結(jié)構(gòu)圖書管理系統(tǒng)課程設(shè)計報告_第4頁
數(shù)據(jù)結(jié)構(gòu)圖書管理系統(tǒng)課程設(shè)計報告_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上一、設(shè)計題目與要求 【問題描述】設(shè)計一個計算機管理系統(tǒng)完成圖書管理基本業(yè)務(wù)?!净疽蟆浚?) 每種書的登記內(nèi)容包括書號、書名、著作者、現(xiàn)存量和庫存量;(2) 對書號建立索引表(線性表)以提高查找效率;(3) 系統(tǒng)主要功能如下:采編入庫:新購一種書,確定書號后,登記到圖書帳目表中,如果表中已有,則只將庫存量增加;借閱:如果一種書的現(xiàn)存量大于0,則借出一本,登記借閱者的書證號和歸還期限,改變現(xiàn)存量;歸還:注銷對借閱者的登記,改變該書的現(xiàn)存量。二、小組分工小組成員:小組分工:圖書初始化、新書入庫、登記讀者信息、文件保存借書系統(tǒng)、還書系統(tǒng)圖書信息查詢、讀者信息查詢 三、需求

2、分析圖書管理系統(tǒng)共需要八個模塊,分別是1圖書初始化、2新書入庫、3添加讀者信息、4借書模塊、5還書模塊、6查詢圖書信息、7查詢讀者信息、8退出。我負(fù)責(zé)其中的四個模塊,如下所示:1) 圖書初始化輸入圖書的一些信息,編號、作者、書名、數(shù)量,使有一定的庫存。2) 新書入庫新書采編入庫,輸入編號后如果有次數(shù)只需輸入數(shù)量,沒有則繼續(xù)輸入書名、作者、數(shù)量。3) 添加讀者信息讀者信息初始化,輸入讀書證號和姓名,只有輸入書證號和姓名才能進行借書還書4) 退出和文件保存退出讀書管理系統(tǒng)并保存讀者和圖書信息。圖書管理系統(tǒng) 圖書管理模塊理讀者管理模塊借閱操作模塊查詢操作模塊借書系統(tǒng)讀者信息查詢圖書信息查詢輸入讀者信

3、息還書系統(tǒng)采編入庫初始化圖書信息四、概要設(shè)計圖書信息和讀者信息都采用結(jié)構(gòu)體類型保存。圖書信息里面包括:圖書編號、圖書名稱、作者、現(xiàn)有量、庫存量、指向下一節(jié)點的指針。讀者信息里面包括:讀者編號、讀者姓名、借書數(shù)量、可借圖書數(shù)量、指向下一節(jié)點的指針。所有圖書和讀者都分別以鏈表的形式存儲,并以編號為唯一主鍵。采用鏈表形式便于數(shù)據(jù)的添加與刪改。主要的操作為:系統(tǒng)初始化,圖書入庫,讀者信息登記,圖書信息和讀者信息文件的保存。五、詳細(xì)設(shè)計數(shù)據(jù)結(jié)構(gòu)的定義:圖書信息:typedef struct bookchar book_num10;char book_name20;char book_writer10;i

4、nt book_xy;int book_kc;struct book *next;BK;讀者信息:typedef struct readerchar reader_num10;char reader_name10;int right;BO borrowMax;struct reader *next;RD;算法描述:進入系統(tǒng)后首先進行圖書初始化,輸入圖書的信息。開始1)初始化輸入圖書編號、名稱、作者和圖書數(shù)量進入系統(tǒng)初始化之后,進入系統(tǒng),顯示功能列表,可選擇任意系統(tǒng),但在借書之前先要輸入讀者信息。開始輸入功能所對應(yīng)的數(shù)字 輸入的數(shù)字小于0大于6錯誤!請重新輸入執(zhí)行所選功能采編入庫 2)采編入庫錄

5、入圖書信息判斷是否有此圖書否是在原有的紀(jì)錄上加上現(xiàn)有的圖書數(shù)量向系統(tǒng)中加入新紀(jì)錄3)輸入讀者信息登記讀者輸入讀者信息:讀者書證號 判斷是否存在此讀者結(jié)束否 向系統(tǒng)中添加新記錄 是重新輸入讀者信息5) 退出和文件保存退出系統(tǒng) 保存文件判斷是否保存成功錯誤!請重新登陸系統(tǒng)退出系統(tǒng)是六、程序源代碼#include<stdio.h>#include <string.h>#include <stdlib.h>#include<conio.h>#define Max 4 typedef struct bookchar book_num10;char book

6、_name20;char book_writer10;int book_xy; /現(xiàn)有int book_kc; /庫存struct book *next;BK;typedef struct borrowchar borrow_book_num10;char limit_date10;BO;typedef struct readerchar reader_num10;char reader_name10;int right;BO borrowMax;struct reader *next;RD;BK *h_book;RD *h_reader;void Login(); int Menu(); v

7、oid Init(); void Init_book(); void Menu_select(); void Insert_New_Book(); void Find_Book(); void add_reader(); void Save(); void Save_Book(); void Save_Reader(); void Load();void Load_Reader(); void Load_Book(); void Login()system("cls");printf("nnntt*n");printf("nnnttt歡迎使用圖

8、書管理系統(tǒng)n");printf("nnntt*n");printf("nnntt 按任意鍵進入系統(tǒng)");getch(); system("cls");int Menu() /*主菜單*/ int dm;printf("ntt圖書管理系統(tǒng)主菜單n");printf("=n");printf("*t0-退出系統(tǒng) n");printf("*t1-采編入庫 n");printf("*t2-登記讀者 n"); printf("

9、=n");printf("請選擇相應(yīng)的代碼:"); for(;) scanf("%d",&dm); /dm輸入的數(shù)字 if(dm<0|dm>6) printf("n錯誤!請重新輸入:"); else break;return dm; void Menu_select()/*主菜單選擇函數(shù)*/for(;) switch(Menu() /*功能選擇*/ case 0: system("cls"); Save();printf("nnt文件保存成功!n"); printf

10、("nnt歡迎下次使用本系統(tǒng)!n"); getch(); exit(0); case 1:Insert_New_Book();break; case 2:add_reader();break; default:printf("n錯誤!"); exit(0);void Init() /*初始化*/ BK *p0;printf("n圖書初始化開始,請輸入圖書信息n包括編號.書名.數(shù)量n");p0=(BK*)malloc(sizeof(BK);h_book=p0; printf("n請輸入圖書信息:n"); printf

11、("圖書編號:"); /*輸入圖書編號(唯一)*/ scanf("%s",p0->book_num); printf("圖書名稱:"); /*輸入圖書名稱*/ scanf("%s",p0->book_name);printf("圖書作者:"); /*輸入圖書作者*/ scanf("%s",p0->book_writer); printf("圖書數(shù)量:"); /*輸入圖書數(shù)量*/ scanf("%d",&p0-&

12、gt;book_kc); p0->book_xy=p0->book_kc; /*開始時圖書現(xiàn)有量和庫存量相等*/ p0->next=NULL; printf("n圖書信息初始化完畢!按任意鍵繼續(xù)下一步操作n"); getch(); system("cls");void Insert_New_Book()/*新書入庫*/BK *p,*p0,*p1; p=p1=h_book;printf("n新書入庫模塊n");printf("n請輸入新書信息n包括書號.書名.數(shù)量n");p0=(BK *)mallo

13、c(sizeof(BK); printf("圖書編號:"); scanf("%s",p0->book_num); while(strcmp(p0->book_num,p1->book_num)!=0&&p1->next!=NULL) p1=p1->next; if(strcmp(p0->book_num,p1->book_num)=0) /*此處分兩種情況,若圖書編號存在,則直接進庫,只須輸入書的數(shù)量*/ printf("n此編號圖書已存在!直接入庫!n"); printf(&

14、quot;圖書數(shù)量:"); scanf("%d",&p0->book_kc); p1->book_kc+=p0->book_kc; p1->book_xy+=p0->book_kc; else/*若不存在,則需要輸入其他的信息,然后在進行插入操作*/ printf("圖書名稱:"); scanf("%s",p0->book_name);printf("圖書作者:"); scanf("%s",p0->book_writer); print

15、f("圖書數(shù)量:"); scanf("%d",&p0->book_kc);/庫存數(shù)量while(p->next) p=p->next; if(h_book=NULL) h_book=p0; /*此處分兩種情況,鏈表中沒有數(shù)據(jù),head直接指向p0處*/ else p->next=p0; /*此處分兩種情況,鏈表中有數(shù)據(jù),鏈表中最后元素的next指向p0處*/ p0->next=NULL; p0->book_xy=p0->book_kc; printf("n新書入庫完畢!按任意鍵繼續(xù)下一步操作n&

16、quot;); getch(); system("cls");void add_reader()/*添加讀者*/ RD *p0,*p,*p1; int i;p=h_reader; printf("n讀者初始化開始,請輸入讀者信息.n包括書證號.姓名.n");if (p=NULL)p0=(RD*)malloc(sizeof(RD); /*申請新結(jié)點存儲空間*/h_reader=p0;p=h_reader; printf("讀者書證號:"); scanf("%s",p0->reader_num); printf(

17、"讀者姓名:"); scanf("%s",p0->reader_name); p0->right=0; for(i=0;i<Max;i+) strcpy(p0->borrowi.borrow_book_num,"0"); /*所借圖書直接置為(即沒有借書)*/ strcpy(p0->borrowi.limit_date,"0"); p0->next=NULL;elsep0=(RD*)malloc(sizeof(RD);p1=h_reader;printf("n請輸入讀者

18、的信息:n"); printf("讀者書證號:"); scanf("%s",p0->reader_num);for(;)while(strcmp(p0->reader_num,p1->reader_num)!=0&&p1->next!=NULL) p1=p1->next; if(strcmp(p0->reader_num,p1->reader_num)=0) printf("n此讀者編號已存在,請重新輸入!n"); printf("讀者書證號:")

19、; scanf("%s",p0->reader_num); p1=h_reader; else printf("讀者姓名:"); scanf("%s",p0->reader_name); break; p0->right=0; for(i=0;i<Max;i+) strcpy(p0->borrowi.borrow_book_num,"0"); /*所借圖書直接置為(即沒有借書)*/ strcpy(p0->borrowi.limit_date,"0"); p1-

20、>next=p0; p1=p1->next; p1->next=NULL; printf("n讀者信息初始化完畢!按任意鍵繼續(xù)下一步操作.n"); getch(); system("cls");void Save() /*保存信息*/Save_Reader();Save_Book();void Save_Reader() /*保存讀者信息*/FILE *fp_reader; RD *p,*p0;p=h_reader;if(fp_reader=fopen("Reader.txt","wb")=NUL

21、L) /*創(chuàng)建文件,進行保存*/ printf("n文件保存失敗!n請重新啟動本系統(tǒng)n"); exit(0);while(p!=NULL) if(fwrite(p,sizeof(RD),1,fp_reader)!=1) /*將鏈表中的信息寫入文件中*/ printf("n寫入文件失敗!n請重新啟動本系統(tǒng)!n"); p0=p; p=p->next; free(p0); /*釋放所有結(jié)點*/h_reader=NULL;fclose(fp_reader); /*關(guān)閉文件*/void Save_Book() /*保存圖書信息*/FILE *fp_book;

22、 /*創(chuàng)建文件型指針*/BK *p,*p0;p=h_book;if(fp_book=fopen("Book.txt","wb")=NULL) /*創(chuàng)建文件,進行保存*/ printf("n文件保存失敗!n請重新啟動本系統(tǒng)n"); exit(0);while(p!=NULL) if(fwrite(p,sizeof(BK),1,fp_book)!=1) /*將鏈表中的信息寫入文件中*/ printf("n寫入文件失敗!n請重新啟動本系統(tǒng)!n"); p0=p; p=p->next; free(p0); h_book

23、=NULL;fclose(fp_book); /*關(guān)閉文件*/void Load() /*加載信息*/Load_Reader();Load_Book();void Load_Reader() /*加載讀者信息*/ RD *p1,*p2,*p3; FILE *fp; /*創(chuàng)建文件型指針*/ fp=fopen("Reader.txt","rb"); /*打開文件*/ p1=(RD *)malloc(sizeof(RD); fread(p1,sizeof(RD),1,fp); h_reader=p3=p2=p1; while(! feof(fp) /*讀出信息

24、,重新鏈入鏈表*/ p1=(RD *)malloc(sizeof(RD); fread(p1,sizeof(RD),1,fp); p2->next=p1; p3=p2; p2=p1; p3->next=NULL; free(p1); fclose(fp); /*關(guān)閉文件*/void Load_Book() /*加載圖書信息*/BK *p1,*p2,*p3;FILE *fp; /*創(chuàng)建文件型指針*/fp=fopen("Book.txt","rb"); /*打開文件*/ p1=(BK *)malloc(sizeof(BK); fread(p1,sizeof(BK),1,fp); h_book=p3=p2=p1; while(! feof(fp) /*讀出信息,重新鏈入鏈表*/ p1=(BK *)malloc(sizeof(BK); fread(p1,sizeof(BK),1,fp); p2->next=p1; p3=p2; p2=p1; p3->ne

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論