版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、武漢理工大學基礎強化訓練課程設計圖書館庫存信息管理一、系統(tǒng)描述圖書館庫存信息管理的基礎強化訓練要求學生自己設計并編制一個小型并具有一定功能的圖書管理系統(tǒng),該系統(tǒng)要求能對圖書的庫存信息進行一定的統(tǒng)計,不要求采用數(shù)據(jù)庫和圖形化界面,只要求在命令提示符的界面下對圖書的入庫、出庫、修改、增加進行操作即可,對數(shù)據(jù)的存儲以文件的形式存儲在外存中。二、需求分析1、功能需求(1)圖書入庫(一本書的各個信息,書名 ISBN等)(2)圖書出庫(3)修改一條圖書記錄(4)查詢圖書記錄2、數(shù)據(jù)物理存儲結(jié)構以及邏輯存儲結(jié)構武漢理工大學基礎強化訓練課程設計(1)每本書采用一個結(jié)構體來定義其特點如 struct LNode
2、 int sequenceNum; /圖書序號string ISBN; /ISBN編號string BookName; /書名string press; /出版社string author; /作者string date_of_in; /入庫時間string date_of_out; /出庫時間int store_number; /庫存數(shù)double price; /單價LNode * next; /指向下一個圖書;在進行數(shù)據(jù)處理的時候,每本書的消息記錄存儲在一個文本文檔中,以便對大量外存中的數(shù)據(jù)進行操作(2)邏輯結(jié)構武漢理工大學基礎強化訓練課程設計采用一個單鏈表來對每本書進行索引,單鏈表的節(jié)
3、點為書本信息的結(jié)構體,當對一個節(jié)點進行操作是,若是打印節(jié)點的信息,則從文件中首先取出信息寫到內(nèi)存中,然后再在命令提示符中打印出來;若是進行圖書出庫或者圖書信息的修改,則是先寫到節(jié)點中,然后在保存到文件中。三、詳細設計#include<windows.h>/獲取系統(tǒng)日期#include<fstream>#include<iostream>#include<string>#include<sstream>/istringstream#include<cstdlib>#include<stdio.h>using na
4、mespace std;enum query_form BookName,press,author,ISBN;template <class T>bool from_string(T& t, const string& s, ios_base& (*f)(ios_base&)/字符串類型轉(zhuǎn)換istringstream iss(s);return !(iss >> f >> t).fail();/*函數(shù)聲明*/void menu(); /主 菜單void sub_menu_Query(); /查詢記錄 菜單void ADD();
5、 /增加記錄void Modify(); /修改記錄void Delete(); /刪除記錄void query(int choice_of_query,string query_keyword); /查詢記錄string get_date()/獲取當前系統(tǒng)日期并轉(zhuǎn)換成yyyy-mm-dd格式string str;char s10;SYSTEMTIME st;GetSystemTime(&st);武漢理工大學基礎強化訓練課程設計sprintf(s,"%d",st.wYear); str= s;str+="-"sprintf(s,"%d&
6、quot;,st.wMonth); str+=s; str+="-"sprintf(s,"%d",st.wDay);str+=s;return str;/*類型定義*/struct LNodeint sequenceNum; /圖書序號string ISBN; /ISBN編號string BookName; /書名string press; /出版社string author; /作者string date_of_in; /入庫時間string date_of_out; /出庫時間int store_number; /庫存數(shù)double price; /
7、單價LNode * next; /指向下一個圖書;/*鏈表基本操作*/LNode * CreateDefaultLink( )/創(chuàng)建以默認數(shù)據(jù)建立的鏈表ifstream book("Bookmanagement.txt");if(!book)cerr<<"打開文件失敗!"<<endl;char * s="Bookmanagement.txt"cout<<"請重新輸入完整文件路徑及文件名(盤符:路徑文件名.txt):"<<endl; cin>>s;book.
8、open(s);LNode *p1,*p2,*head=NULL;p1=p2=new LNode;p1->next =NULL;int i=0,j=1;string read,r11; /read用來讀取每一行關鍵字,r1-r9依次用來保存每個結(jié)點的關鍵字getline(book,read);read.append(1,'n');武漢理工大學基礎強化訓練課程設計while(j<10)string temp;while( readi!= 'n'&& readi+!='t')temp.append(1,readi-1);/
9、依次分離一個單詞,每個單詞之間用 垂直制表符分割rj=temp;j+;from_string<in、t>(p1->sequenceNum, r1, dec);p1->ISBN = r2;p1->BookName = r3;p1->author = r4;p1->press = r5;from_string<int>(p1->store_number, r6, dec);from_string<double>(p1->price, r7, dec);p1->date_of_in=r8;p1->date_of
10、_out=r9;while(!book.eof()if(head=NULL)head=p1;else p2->next=p1;p2=p1;p1=new LNode;p1->next=NULL;getline(book,read);read.append(1,'n');i=0,j=1;while(j<10)string temp;while(readi!='n' && readi+!='t')temp.append(1,readi-1);/依次將一個單詞rj=temp;j+;武漢理工大學基礎強化訓練課程設計from
11、_string<int>(p1->sequenceNum, r1, dec);/將r1轉(zhuǎn)換成int型,序號 p1->ISBN = r2;p1->BookName = r3;p1->author = r4;p1->press = r5;from_string<int>(p1->store_number, r6, dec);/將r6轉(zhuǎn)換成int型,庫存數(shù) from_string<double>(p1->price, r7, dec);/將r7轉(zhuǎn)換成double型,單價p1->date_of_in=r8;p1->
12、;date_of_out=r9;return head;book.close();void main()system("color f1"); /改變當前控制臺窗口的背景顏色為F(白色),字體顏色為1(藍色) menu();system("pause");/*函數(shù)實現(xiàn)*/void menu()cout<<"*"<<endl;cout<<"* "<<endl;cout<<"* 圖書庫存管理系統(tǒng)"<<endl;cout<&
13、lt;"* 選擇一個操作: *"<<endl;cout<<"* <1> 圖書入庫 *"<<endl;cout<<"* <2> 修改一條圖書記錄 *"<<endl;cout<<"* <3> 圖書出庫 *"<<endl;cout<<"* <4> 查詢圖書記錄 *"<<endl;cout<<"* <5> 清屏 *&
14、quot;<<endl;cout<<"* <6> 退出系統(tǒng) *"<<endl;cout<<"*"<<endl;cout<<endl;int choice=6;cout<<" 請輸入您的選擇(1-6):"<<endl;武漢理工大學基礎強化訓練課程設計cin>>choice;while (choice<1 | choice>6)cout<<" 輸入不正確!請重新再輸入一個1至6之間的整數(shù)
15、:"<<endl; cin>>choice;cout<<"nnnn"switch(choice)case 1:cout<<"nnnn"ADD();break;case 2:cout<<"nnnn"Modify();break;case 3:cout<<"nnnn"Delete();break;case 4:cout<<"nnnn"sub_menu_Query();break;case 5:system(
16、"cls");menu();break;case 6:exit(0);void ADD()cout<<"請依次按照順序輸入圖書的信息: ISBN編號 書名 作者 出版社 單價"<<endl;LNode *new_book=new LNode;char t60;cin>>new_book->ISBN;cin>>new_book->BookName;cin.get();gets(t); new_book->author=t;cin>>new_book->press;cin.g
17、et();gets(t);new_book->price=atof(t);new_book->date_of_in=get_date();new_book->sequenceNum=0;/初始化圖書的序號,后面再修改。cout<<"您輸入的圖書的信息是:"<<endl;cout<<"ISBN編號 書名 作者 出版社 單價"<<endl;cout<<new_book->ISBN<<"t"<<new_book->BookNam
18、e<<"t"<<new_book->author<<"t"<<new_book->press<<"t"<<new_book->price<<"t"<<new_book->date_of_in<<endl;/查找該書是否存在,如果是,打印信息,并將其庫存數(shù)加1.如果沒有,則插入到鏈表的最后。LNode *x= CreateDefaultLink();武漢理工大學基礎強化訓練課程設計LNo
19、de *head=x;int exist_tag=0; /圖書存在識別標志while(x->next!=NULL && (int)x->store_number)if( new_book->ISBN.compare(x->ISBN)=0)/判斷入庫圖書是否已經(jīng)存在,使用ISBN判別cout<<endl;cout<<"此書已經(jīng)存在,庫存數(shù)目加1"<<endl;x->store_number+;exist_tag=1; /圖書存在識別標志.break;x=x->next;if(exist_t
20、ag=0)cout<<"此書是新書,文件記錄中將放到最后"<<endl;new_book->sequenceNum=x->sequenceNum+1;new_book->store_number=1;x->next=new_book;new_book->next=NULL;/寫入文件,因為是文本模式打開的,所以要全部重寫文件。ofstream output_book("Bookmanagement.txt",ios:trunc);cout<<"是否將修改寫入文件?(Y/N)&qu
21、ot;<<endl;char decision;cin>>decision;if(decision ='y' |decision ='Y')output_book<<"序號 ISBN 書名 作者 出版社 庫存數(shù) 單價 入庫時間 出庫時間n"head=head->next;/跳過第一行while(head)output_book<<head->sequenceNum<<"t"<<head->ISBN<<"t&quo
22、t;<<head->BookName<<"t"<<head->author<<"t"<<head->press<<"t"<<head->store_number<<"t"<<head->price<<"t"<<head->date_of_in<<"t"<<head->date_of
23、_out<<"n"head=head->next;武漢理工大學基礎強化訓練課程設計cout<<"寫入完畢nn"output_book.close();system("%windir%notepad.exe Bookmanagement.txt");system("pause");cout<<"是否繼續(xù)?(Y/N):"<<endl;cin>>decision;if(decision ='y' |decision =&
24、#39;Y')menu();else cout<<"謝謝使用!"<<endl;void Delete()cout<<"請選擇要出庫的ISBN編號:"LNode *new_book=new LNode;cin>>new_book->ISBN;LNode *x= CreateDefaultLink();LNode *head=x;int exist_tag=0; /圖書存在識別標志while(x!=NULL && x->store_number)if( new_book-&g
25、t;ISBN.compare(x->ISBN)=0)/判斷入庫圖書是否已經(jīng)存在,使用ISBN判別cout<<endl;cout<<"此書書庫中存在"<<endl;cout<<"ISBN編號 書名 作者 出版社 單價"<<endl;cout<<x->ISBN<<"t"<<x->BookName<<"t"<<x->author<<"t"<&
26、lt;x->press<<"t"<<x->price<<"t"<<x->date_of_in<<endl;x->store_number-;/庫存數(shù)減少1exist_tag=1; /圖書存在識別標志.break;x=x->next;if(exist_tag=0)cout<<"此書書庫中不存在,不可以出庫!"<<endl;/寫入文件,因為是文本模式打開的,所以要全部重寫文件。else武漢理工大學基礎強化訓練課程設計ofstr
27、eam output_book("Bookmanagement.txt");cout<<"是否將修改寫入文件?(Y/N)"<<endl;char deci;cin>>deci;if(deci ='y' |deci ='Y')output_book<<"序號 ISBN 書名 作者 出版社 庫存數(shù) 單價 入庫時間 出庫時間n"head=head->next;/跳過第一行while(head)output_book<<head->sequ
28、enceNum<<"t"<<head->ISBN<<"t"<<head->BookName<<"t"<<head->author<<"t"<<head->press<<"t"<<head->store_number<<"t"<<head->price<<"t"<
29、<head->date_of_in<<"t"<<head->date_of_out<<"n"head=head->next;cout<<"寫入完畢!"<<endl;output_book.close();char decision;cout<<"是否繼續(xù)?(Y/N):"<<endl;cin>>decision;if(decision ='y' |decision ='Y
30、39;)menu();else cout<<"謝謝使用!"<<endl;void Modify()cout<<"請選擇要修改的ISBN編號:"<<endl;string ISBN_of_Modify;cin>>ISBN_of_Modify;LNode *x= CreateDefaultLink();LNode *head=x;int exist_tag=0; /圖書存在識別標志while(x!=NULL && x->store_number)if( ISBN_of_Mpar
31、e(x->ISBN)=0)/判斷入庫圖書是否已經(jīng)存在,使用ISBN判別cout<<endl;cout<<"此書書庫中存在"<<endl;武漢理工大學基礎強化訓練課程設計cout<<x->ISBN<<"t"<<x->BookName<<"t"<<x->author<<"t"<<x->press<<"t"<<x->pric
32、e<<"t"<<x->date_of_in<<endl;cout<<"請依次按照順序輸入圖書的信息: ISBN編號 書名 作者 出版社 單價"<<endl;char t60;cin>>x->ISBN;cin>>x->BookName;cin.get();gets(t); x->author=t;cin>>x->press;cin.get();gets(t);x->price=atof(t);x->date_of_in=
33、get_date();cout<<"您輸入的圖書的信息是:"<<endl;cout<<"ISBN編號 書名 作者 出版社 單價"<<endl;cout<<x->ISBN<<"t"<<x->BookName<<"t"<<x->author<<"t"<<x->press<<"t"<<x->pric
34、e<<"t"<<x->date_of_in<<endl;exist_tag=1; /圖書存在識別標志.break;x=x->next;if(exist_tag=0)cout<<"此書書庫中不存在!"<<endl;/寫入文件,因為是文本模式打開的,所以要全部重寫文件。elseofstream output_book("Bookmanagement.txt",ios:trunc);cout<<"是否將修改寫入文件?(Y/N)"<&
35、lt;endl;char deci;cin>>deci;if(deci ='y' |deci ='Y')output_book<<"序號 ISBN 書名 作者 出版社 庫存數(shù) 單價 入庫時間 出庫時間n"head=head->next;/跳過第一行while(head)武漢理工大學基礎強化訓練課程設計output_book<<head->sequenceNum<<"t"<<head->ISBN<<"t"<&l
36、t;head->BookName<<"t"<<head->author<<"t"<<head->press<<"t"<<head->store_number<<"t"<<head->price<<"t"<<head->date_of_in<<"t"<<head->date_of_out<
37、<"n"head=head->next;cout<<"寫入完畢!"<<endl;output_book.close();char decision;cout<<"是否繼續(xù)?(Y/N):"<<endl;cin>>decision;if(decision ='y' |decision ='Y')menu();else cout<<"謝謝使用!"<<endl;void sub_menu_Quer
38、y()cout<<"* 選擇一個查詢方式 *"<<endl;cout<<"* <1> 按 書名 查詢 *"<<endl;cout<<"* <2> 按 ISBN 序列號查詢 *"<<endl;cout<<"* <3> 按 作者 查詢 *"<<endl;cout<<"* <4> 按 出版社 查詢 *"<<endl;cout<&l
39、t;"* <5> 清屏 *"<<endl;cout<<"* <6> 返回上級菜單 *"<<endl;cout<<"*"<<endl;cout<<endl;int choice;cout<<" 請輸入您的選擇(1-6):"<<endl;cin>>choice;if (choice<1 | choice>6)cout<<" 輸入不正確!請重新再輸入一個1至
40、6之間的整數(shù):"<<endl; cin>>choice;switch(choice)case 1:cout<<"請輸入要查詢的 書名(不提供模糊查詢,請輸入準確關鍵 12武漢理工大學基礎強化訓練課程設計字) :"<<endl;string name;cin.clear(); /更改cin的狀態(tài)標示符cin.sync(); /清除輸入緩存區(qū)的數(shù)據(jù)流getline(cin,name,'n');query (1,name);break;case 2:cout<<" 請輸入要查詢的 IS
41、BN 編號(不提供模糊查詢,請輸入準確關鍵字):"<<endl;string ISBN;cin.clear(); /更改cin的狀態(tài)標示符cin.sync(); /清除輸入緩存區(qū)的數(shù)據(jù)流getline(cin,ISBN,'n');query (2,ISBN);break;case 3:cout<<" 請輸入要查詢的 作者(不提供模糊查詢,請輸入準確關鍵字):"<<endl;string author;cin.clear(); /更改cin的狀態(tài)標示符cin.sync(); /清除輸入緩存區(qū)的數(shù)據(jù)流getline(
42、cin,author,'n');query (3,author);break;case 4:cout<<" 請輸入要查詢的 出版社(不提供模糊查詢,請輸入準確關鍵字):"<<endl;string press;cin.clear(); /更改cin的狀態(tài)標示符cin.sync(); /清除輸入緩存區(qū)的數(shù)據(jù)流getline(cin,press,'n');query (4,press);break;case 5:system("cls");sub_menu_Query();break;case 6:me
43、nu();武漢理工大學基礎強化訓練課程設計cout<<"是否需要打印全部圖書信息?(y/n)"<<endl;char decision;cin>>decision;if(decision ='y' |decision ='Y')LNode *head=CreateDefaultLink();cout<<"序號 ISBN編號 書名 作者 出版社 "<<endl;head=head->next;/跳過第一行while(head)cout<<head-
44、>sequenceNum<<" "<<head->ISBN<<" "<<head->BookName<<" "<<head->author<<" "<<head->press<<"n"head=head->next;cout<<endl;cout<<"是否繼續(xù)查詢?(Y/N):"<<endl;cin
45、>>decision;if(decision ='y' |decision ='Y')sub_menu_Query();else cout<<"謝謝使用!"<<endl;void query(int choice_of_query,string query_keyword)LNode * t=CreateDefaultLink();switch (choice_of_query)case 1:int find_tag=0;while(t && t->store_number)if( q
46、uery_pare(t->BookName)=0)cout<<t->sequenceNum<<"t"<<t->ISBN<<"t"<<""<<t->BookName<<""<<"t"<<t->author<<"t"<<t->press<<"t"<<t->price
47、<<endl;cout<<endl;find_tag=1;武漢理工大學基礎強化訓練課程設計t=t->next;if (find_tag=0)cout<<"對不起,未找到您所要求的圖書!"<<endl;break;break;case 2:int find_tag=0;while(t && t->store_number)if( query_pare(t->ISBN)=0)cout<<t->sequenceNum<<"t"<<t-&g
48、t;ISBN<<"t"<<""<<t->BookName<<""<<"t"<<t->author<<"t"<<t->press<<"t"<<t->price<<endl; cout<<endl;find_tag=1;t=t->next;if (find_tag=0)cout<<"對不
49、起,未找到您所要求的圖書!"<<endl;break;break;case 3:int find_tag=0;while(t && t->store_number)if( query_pare(t->author)=0)cout<<t->sequenceNum<<"t"<<t->ISBN<<"t"<<""<<t->BookName<<""<<"
50、t"<<t->author<<"t"<<t->press<<"t"<<t->price<<endl; 15武漢理工大學基礎強化訓練課程設計cout<<endl;find_tag=1;t=t->next;if (find_tag=0)cout<<"對不起,未找到您所要求的圖書!"<<endl;break;break;case 4:int find_tag=0;while(t && t->store_number)if( query_pare(t->
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025學生食堂承包合同書
- 2025餐飲發(fā)服務業(yè)保密協(xié)議合同
- 2025石料運輸合同
- 2025年度青年人才公寓租賃合同關于房屋出租3篇
- 2025年度建筑鋼結(jié)構質(zhì)量檢測與安全評估合同3篇
- 二零二五年度新能源汽車企業(yè)職工招聘與產(chǎn)業(yè)鏈整合合同3篇
- 2025年度餐飲連鎖合伙經(jīng)營合同樣本2篇
- 二零二五年度農(nóng)村有機垃圾堆肥處理與清理服務合同2篇
- 二零二五年度餐飲兼職煮飯人員培訓協(xié)議3篇
- 2025年度模特與造型師拍攝服務合同3篇
- 山東省淄博市2022-2023學年高一上學期期末數(shù)學試題含答案
- 7【題組七】雙變量的恒成立與存在性問題
- 2023年1月自考11749商務管理綜合應用試題及答案
- 汽車制造整車AUDIT質(zhì)量評審
- 非洲豬瘟防控難點與對策
- 教師如何管理和控制自己的情緒
- 《中外歷史綱要(上)》全冊單元知識點高頻考點
- (完整版)庭審筆錄(刑事普通程序)
- 耳鳴耳聾-疾病研究白皮書
- ?;方ㄔO項目安全評價審查要點
- 信息學奧賽培訓課件 第4課 c++基礎語法for循環(huán)結(jié)構(第一課時)
評論
0/150
提交評論