




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、一、設計題目與要求【問題描述】設計一個計算機管理系統完成圖書管理基本業務。【基本要求】(1) 每種書的登記內容包括書號、書名、著作者、現存量和庫存量;(2) 對書號建立索引表(線性表)以提高查找效率;(3) 系統主要功能如下:采編入庫:新購一種書,確定書號后,登記到圖書帳目表中,如果表中已有,則只將庫存量增加;借閱:如果一種書的現存量大于0,則借出一本,登記借閱者的書證號和歸還期限,改變現存量;歸還:注銷對借閱者的登記,改變該書的現存量.二、小組分工小組成員:小組分工:圖書初始化、新書入庫、登記讀者信息、文件保存借書系統、還書系統圖書信息查詢、讀者信息查詢三、需求分析圖書管理系統共需要八個模塊
2、,分別是1圖書初始化、2新書入庫、3添加讀者信息、4借書模塊、5還書模塊、6查詢圖書信息、7查詢讀者信息、8退出.我負責其中的四個模塊,如下所示:1) 圖書初始化輸入圖書的一些信息,編號、作者、書名、數量,使有一定的庫存。2) 新書入庫新書采編入庫,輸入編號后如果有次數只需輸入數量,沒有則繼續輸入書名、作者、數量。3) 添加讀者信息讀者信息初始化,輸入讀書證號和姓名,只有輸入書證號和姓名才能進行借書還書4) 退出和文件保存退出讀書管理系統并保存讀者和圖書信息.圖書管理系統圖書管理模塊理讀者管理模塊借閱操作模塊查詢操作模塊借書系統讀者信息查詢圖書信息查詢輸入讀者信息還書系統采編入庫初始化圖書信息
3、四、概要設計圖書信息和讀者信息都采用結構體類型保存.圖書信息里面包括:圖書編號、圖書名稱、作者、現有量、庫存量、指向下一節點的指針。讀者信息里面包括:讀者編號、讀者姓名、借書數量、可借圖書數量、指向下一節點的指針.所有圖書和讀者都分別以鏈表的形式存儲,并以編號為唯一主鍵。采用鏈表形式便于數據的添加與刪改。主要的操作為:系統初始化,圖書入庫,讀者信息登記,圖書信息和讀者信息文件的保存。五、詳細設計數據結構的定義:圖書信息:typedef struct bookchar book_num10;char book_name20;char book_writer10;int book_xy;int b
4、ook_kc;struct book next;BK;讀者信息:typedef struct readerchar reader_num10;char reader_name10;int right;BO borrowMax;struct reader next;RD;算法描述:進入系統后首先進行圖書初始化,輸入圖書的信息.開始1)初始化輸入圖書編號、名稱、作者和圖書數量進入系統初始化之后,進入系統,顯示功能列表,可選擇任意系統,但在借書之前先要輸入讀者信息。開始輸入功能所對應的數字輸入的數字小于0大于6錯誤!請重新輸入執行所選功能采編入庫 2)采編入庫錄入圖書信息判斷是否有此圖書否是在原有的
5、紀錄上加上現有的圖書數量向系統中加入新紀錄3)輸入讀者信息登記讀者輸入讀者信息:讀者書證號判斷是否存在此讀者結束否 向系統中添加新記錄是重新輸入讀者信息5) 退出和文件保存退出系統保存文件判斷是否保存成功錯誤!請重新登陸系統退出系統是六、程序源代碼#includestdio。h>include <string.h>include stdlib。hincludeconio。h#define Max 4 typedef struct bookchar book_num10;char book_name20;char book_writer10;int book_xy; /現有in
6、t 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(); void Init(); void Init_book(); void Menu_select()
7、; 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歡迎使用圖書管理系統n");printf(”nnntt*n”);printf(”nnntt 按任意鍵進入系統”);getch(
8、); system(”cls”);int Menu() /主菜單/ int dm;printf("ntt圖書管理系統主菜單n”);printf(”=n”);printf(”*t0-退出系統 n”);printf(”t1采編入庫 n");printf(”t2-登記讀者 n”); printf(”=n");printf(”請選擇相應的代碼:”); for(;;) scanf(”d”,&dm); /dm輸入的數字 if(dm0dm>6) printf(”n錯誤!請重新輸入:”); else break;return dm; void Menu_select
9、()/主菜單選擇函數*/for(;) switch(Menu() /*功能選擇*/ case 0: system(”cls"); Save();printf("nnt文件保存成功!n”); printf(”nnt歡迎下次使用本系統!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包括編號.書名。數量n
10、”);p0=(BK)malloc(sizeof(BK);h_book=p0; printf(”n請輸入圖書信息:n”); printf("圖書編號:”); /輸入圖書編號(唯一)/ scanf(”s”,p0>book_num); printf("圖書名稱:”); /*輸入圖書名稱/ scanf(”%s”,p0book_name);printf(”圖書作者:”); /*輸入圖書作者/ scanf(”s",p0book_writer); printf("圖書數量:"); /輸入圖書數量*/ scanf(”d",p0book_kc);
11、 p0book_xy=p0book_kc; /開始時圖書現有量和庫存量相等/ p0next=NULL; printf(”n圖書信息初始化完畢!按任意鍵繼續下一步操作n”); getch(); system(”cls”);void Insert_New_Book()/新書入庫/BK p,*p0,p1; p=p1=h_book;printf(”n新書入庫模塊n”);printf(”n請輸入新書信息n包括書號.書名。數量n");p0=(BK *)malloc(sizeof(BK)); printf(”圖書編號:”); scanf("s”,p0-book_num); while(s
12、trcmp(p0book_num,p1->book_num)!=0p1>next!=NULL) p1=p1->next; if(strcmp(p0book_num,p1->book_num)=0) /*此處分兩種情況,若圖書編號存在,則直接進庫,只須輸入書的數量/ printf("n此編號圖書已存在!直接入庫!n”); printf("圖書數量:"); scanf("d”,p0book_kc); p1->book_kc+=p0book_kc; p1-book_xy+=p0->book_kc; else/*若不存在,則需
13、要輸入其他的信息,然后在進行插入操作*/ printf(”圖書名稱:”); scanf(”s",p0>book_name);printf("圖書作者:”); scanf("%s”,p0book_writer); printf("圖書數量:"); scanf(”%d",p0>book_kc);/庫存數量while(pnext) p=pnext; if(h_book=NULL) h_book=p0; /此處分兩種情況,鏈表中沒有數據,head直接指向p0處/ else pnext=p0; /此處分兩種情況,鏈表中有數據,鏈表中
14、最后元素的next指向p0處/ p0>next=NULL; p0-book_xy=p0book_kc; printf(”n新書入庫完畢!按任意鍵繼續下一步操作n”); 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)); /申請新結點存儲空間/h_reader=p0;p=h_reader; printf(”讀者書證號:");
15、scanf(”s”,p0-reader_num); printf(”讀者姓名:”); scanf(”s”,p0reader_name); p0right=0; for(i=0;iMax;i+) strcpy(p0-borrowi。borrow_book_num,"0"); /所借圖書直接置為(即沒有借書)*/ strcpy(p0borrowi。limit_date,”0"); p0-next=NULL;elsep0=(RD*)malloc(sizeof(RD));p1=h_reader;printf("n請輸入讀者的信息:n"); printf
16、(”讀者書證號:”); scanf(”%s”,p0reader_num);for(;)while(strcmp(p0>reader_num,p1reader_num)!=0&p1->next!=NULL) p1=p1>next; if(strcmp(p0>reader_num,p1reader_num)=0) printf("n此讀者編號已存在,請重新輸入!n”); printf(”讀者書證號:"); scanf(”s”,p0->reader_num); p1=h_reader; else printf(”讀者姓名:”); scanf(
17、”s”,p0->reader_name); break; p0right=0; for(i=0;iMax;i+) strcpy(p0>borrowi。borrow_book_num,”0”); /所借圖書直接置為(即沒有借書)/ strcpy(p0-borrowi.limit_date,"0”); p1-next=p0; p1=p1-next; p1->next=NULL; printf(”n讀者信息初始化完畢!按任意鍵繼續下一步操作。n”); getch(); system(”cls");void Save() /保存信息/Save_Reader();S
18、ave_Book();void Save_Reader() /*保存讀者信息*/FILE *fp_reader; RD p,*p0;p=h_reader;if((fp_reader=fopen(”Reader。txt”,”wb")=NULL) /*創建文件,進行保存/ printf("n文件保存失敗!n請重新啟動本系統n”); exit(0);while(p!=NULL) if(fwrite(p,sizeof(RD),1,fp_reader)!=1) /將鏈表中的信息寫入文件中/ printf(”n寫入文件失??!n請重新啟動本系統!n"); p0=p; p=pne
19、xt; free(p0); /釋放所有結點*/h_reader=NULL;fclose(fp_reader); /*關閉文件/void Save_Book() /*保存圖書信息/FILE *fp_book; /*創建文件型指針*/BK p,*p0;p=h_book;if(fp_book=fopen(”Book。txt”,”wb")=NULL) /*創建文件,進行保存/ printf("n文件保存失敗!n請重新啟動本系統n"); exit(0);while(p!=NULL) if(fwrite(p,sizeof(BK),1,fp_book)!=1) /*將鏈表中的信
20、息寫入文件中/ printf(”n寫入文件失敗!n請重新啟動本系統!n"); p0=p; p=p->next; free(p0); h_book=NULL;fclose(fp_book); /*關閉文件/void Load() /*加載信息/Load_Reader();Load_Book();void Load_Reader() /加載讀者信息/ RD p1,p2,*p3; FILE fp; /*創建文件型指針/ fp=fopen(”Reader。txt”,”rb”); /打開文件/ p1=(RD )malloc(sizeof(RD)); fread(p1,sizeof(RD)
21、,1,fp); h_reader=p3=p2=p1; while(! feof(fp)) /*讀出信息,重新鏈入鏈表/ p1=(RD )malloc(sizeof(RD)); fread(p1,sizeof(RD),1,fp); p2next=p1; p3=p2; p2=p1; p3-next=NULL; free(p1); fclose(fp); /關閉文件/void Load_Book() /加載圖書信息/BK p1,p2,p3;FILE fp; /創建文件型指針*/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); p2next=p1; p3=p2; p2=p1; p3next=NULL; free(p1); fclose(fp); /關閉文件/void main()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- php面試題試題及答案
- 毛筆書法測試題及答案
- 2024-2025學年下學期期末備考高一物理專題01 曲線運動(優練)
- 福州工商學院《藥劑學實驗》2023-2024學年第二學期期末試卷
- 湘南學院《基礎建筑設計》2023-2024學年第二學期期末試卷
- 九江職業大學《攝影藝術》2023-2024學年第二學期期末試卷
- 黑龍江科技大學《中國哲學經典著作導讀》2023-2024學年第二學期期末試卷
- 陜西服裝工程學院《審計學A》2023-2024學年第二學期期末試卷
- 特種作業低壓電工作業題庫復習試題有答案
- 遷墳施工安全責任協議書(2篇)
- 主體結構工程驗收自評報告
- 南京理工大學2004碩士研究生入學考試
- GB/T 41735-2022綠色制造激光表面清洗技術規范
- YS/T 223-2007硒
- GB/T 3098.8-2010緊固件機械性能-200 ℃~+700 ℃使用的螺栓連接零件
- GB/T 1503-2008鑄鋼軋輥
- GB/T 1228-2006鋼結構用高強度大六角頭螺栓
- GB/T 12237-2021石油、石化及相關工業用的鋼制球閥
- 套管培訓大綱課件
- 公路養護勘察設計工作大綱講義
- 香丹注射液中吐溫80的含量測定
評論
0/150
提交評論