個人圖書管理系統(tǒng)_第1頁
個人圖書管理系統(tǒng)_第2頁
個人圖書管理系統(tǒng)_第3頁
個人圖書管理系統(tǒng)_第4頁
個人圖書管理系統(tǒng)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗三:個人圖書管理系統(tǒng)一:題目內(nèi)容1.問題描述 學(xué)生在自己的學(xué)習(xí)和生活中會有很多書籍(包括電子出版物),對所購買的書籍進(jìn)行分類和統(tǒng)計是一種良好的習(xí)慣。如果以文件來存儲相關(guān)書籍的各種信息,包括分類、書名、作者、購買日期、價格、簡介等,輔之以程序來使用這些文件,并加以維護(hù),從而使圖書管理工作變得輕松而有趣。2.基本要求 (1)能夠以文件存儲書籍的各種相關(guān)信息。 (2)提供查詢工作:可按照一種或多種關(guān)鍵字查找需要的書籍; (3)提供排序功能:可按照一種或多種關(guān)鍵字對所有書籍進(jìn)行排序,比如按價格進(jìn)行排序,并輸出排序結(jié)果。 (4)提供圖書信息維護(hù):初始化、增加、刪除、修改、打印輸出。 (5)提供登錄認(rèn)

2、證工作:具有戶頭、密碼認(rèn)證。 (6)使用界面要適當(dāng)美觀、便捷。3、實現(xiàn)提示 由于書籍可能較多且要長期保存,可按文件形式存放到外存儲器,需要操作時從文件中調(diào)入內(nèi)存來進(jìn)行查詢、排序、維護(hù),退出前保存當(dāng)前最新信息于文件中。二 分析:問題中提到的主要有兩個信息,個人信息以及圖書信息,這個可以用結(jié)構(gòu)體來實現(xiàn)。用一個menu函數(shù)來實現(xiàn)主菜單功能,包括增加新書,修改書內(nèi)容,刪除書,查找書,顯示書,以及對書進(jìn)行排序,輸入不同的操作編號來實現(xiàn)不同的操作對于增加新書,可以用一個addbook函數(shù)來實現(xiàn),用modifyBook函數(shù)實現(xiàn)對書的參數(shù)的修改,DelBook函數(shù)實現(xiàn)對書的刪除操作,SortBook函數(shù)實現(xiàn)對

3、書的按照不同的參數(shù)進(jìn)行排序,這些都建立在一個更基本的函數(shù)findbook上,該函數(shù)通過按照不同的參數(shù)對數(shù)進(jìn)行查找,然后通過其它函數(shù)進(jìn)行相應(yīng)的操作。主函數(shù)完成測試功能。三 程序設(shè)計#include <iostream.h>#include <fstream.h>#include <conio.h>#include <cstdlib>#include <string.h>#include <stdio.h>struct BookList char name32;char editor32;char num32;char pri

4、ce32;struct UserListchar user32;char word32;/函數(shù)聲明/ bool OpenBookFile(fstream &);int menu();void AddBook(FILE *fp);void ModifyBook(FILE *fp);void DelBook(FILE *fp);BookList FindBook(FILE *fp);void ShowBook(FILE *fp);int GetCount(FILE *fp);void SortBook(FILE *fp);void Login();int GetMax(int a,int

5、n);/*int main() Login();bool Exit=false;fstream BookFile;FILE *fp;fp=fopen("Book.txt","rb+");while(!Exit)switch(menu()case 1:AddBook(fp);break;case 2:ModifyBook(fp);break;case 3:DelBook(fp);break;case 4:FindBook(fp);break;case 5:ShowBook(fp);break;case 6:SortBook(fp);break;case 7

6、:Exit=true;break;return 0;/*顯示主菜單函數(shù)int menu()int m=0; while(true)cout<<"1 增加新書"<<endl; cout<<"2 修改書內(nèi)容"<<endl;cout<<"3 刪除舊書"<<endl;cout<<"4 查找書"<<endl;cout<<"5 顯示書"<<endl;cout<<"6

7、對書排序顯示"<<endl;cout<<"7 退出程序"<<endl;cout<<"請選擇:"cin>>m;if(m>=1&&m<=7)break;elsecout<<"輸入有誤"<<endl;return m;/增加書目void AddBook(FILE *fp) fopen("Book.txt","ab");BookList temp;memset(&temp,0

8、,sizeof(struct BookList); cout<<"n書名:" cin>>; cout<<"作者:" cin>>temp.editor; cout<<"書號:" cin>>temp.num; cout<<"價錢:" cin>>temp.price; fwrite(&temp,sizeof(BookList),1,fp); fclose(fp); cout<<"

9、添加成功!n 按任意鍵繼續(xù)n"/修改書內(nèi)容void ModifyBook(FILE *fp)int m=0;int done=1;int n=GetCount(fp);char str32;memset(str,0,32);char str232;BookList *book;book=new BookList n;for(int i=0;i<n;i+)memset(&booki,0,sizeof(BookList);BookList temp;memset(&temp,0,sizeof(BookList);BookList ModBook;memset(&am

10、p;ModBook,0,sizeof(struct BookList);cout<<"請選擇要修改的書"cout<<endl;ModBook=FindBook(fp);strcpy(str2,ModB); fp=fopen("Book.txt","rb"); cout<<"請選擇修改的內(nèi)容:" cout<<endl; cout<<"1 書名"<<endl; cout<<"2 作者&quo

11、t;<<endl; cout<<"3 書號"<<endl; cout<<"4 價錢"<<endl; cout<<"5 退出"<<endl; cout<<"請選擇:" cin>>m; if(m<=0|m>5) cout<<"選擇錯誤,請重新選擇:" cin>>m; else switch(m) case 1: cout<<"原書名為:

12、"<<ModB; cout<<"請輸入新書名:" cin>>str; strcpy(ModB,str); cout<<"修改后該書內(nèi)容為" cout<<endl; cout<<"書名:"<<ModB<<endl; cout<<"作者:"<<ModBook.editor<<endl; cout<<"書號:&q

13、uot;<<ModBook.num<<endl; cout<<"價錢:"<<ModBook.price<<endl; fclose(fp); fp=fopen("Book.txt","rb"); for(i=0;i<n;i+) fread(&temp,sizeof(BookList),1,fp);if(strcmp(,str2)=0)booki=ModBook;elsebooki=temp; fp=NULL; fp=fopen("Bo

14、ok.txt","wb+"); for(i=0;i<n;i+) fwrite(&booki,sizeof(BookList),1,fp); fclose(fp); cout<<"n按任意鍵繼續(xù)n"/刪除舊書void DelBook(FILE *fp) /只提供刪除指定書名的書fp=fopen("Book.txt","rb");int n=GetCount(fp);int j=0; BookList *book;book=new BookList n-1;for(int i=0;i

15、<n-1;i+)memset(&booki,0,sizeof(BookList);BookList temp;memset(&temp,0,sizeof(BookList);BookList DelBook;memset(&DelBook,0,sizeof(BookList);DelBook=FindBook(fp);cout<<"確定刪除嗎?YN"<<endl;char p='0'cin>>p;if(p='Y'|'y')for(i=0;i<n;i+)fr

16、ead(&temp,sizeof(BookList),1,fp);if(strcmp(,DelB)!=0)bookj=temp;j+;fp=fopen("Book.txt","wb");fp=NULL;fp=fopen("Book.txt","wb+");for(j=0;j<n-1;j+)fwrite(&bookj,sizeof(BookList),1,fp);fclose(fp);else fclose(fp);cout<<"n按任意鍵

17、繼續(xù)n"/*對所有書進(jìn)行排序void SortBook(FILE *fp)fp=fopen("Book.txt","rb");int n=GetCount(fp);BookList *book;book=new BookList n;for(int i=0;i<n;i+)memset(&booki,0,sizeof(BookList);int *p;p=new intn;BookList temp;memset(&temp,0,sizeof(BookList);for(i=0;i<n;i+)fread(&te

18、mp,sizeof(BookList),1,fp); booki=temp;pi=atoi(booki.price);int k=n;for(int j=0;j<n;j+) int m=GetMax(p,k); cout<<"書名:"<<<<endl; cout<<"作者:"<<bookm.editor<<endl; cout<<"書號:"<<bookm.num<<endl; cout<<&

19、quot;價錢:"<<bookm.price<<endl; pm=-1; fclose(fp);cout<<"n按任意鍵繼續(xù)n"int GetMax(int a,int n)int m=0;int temp=a0; for(int i=1;i<n;i+) if(ai>temp) temp=ai; m=i; if(m>0)return m;elsereturn 0;/*查找書BookList FindBook(FILE *fp)int done=0;fp=fopen("Book.txt",&q

20、uot;rb");cout<<"1 按書名查找"<<endl;cout<<"2 按作者查找"<<endl;cout<<"3 按書號查找"<<endl;cout<<"4 退出查找"<<endl;cout<<"請選擇:"int m=0;cin>>m;switch(m)case 1:char FindName32;memset(&FindName,0,sizeof(

21、FindName);while(true)cout<<"請輸入要查找的書名:"cin>>FindName;if(strlen(FindName)=0)cout<<"輸入有誤!"<<endl;elsebreak;BookList temp;memset(&temp,0,sizeof(BookList);while (!feof(fp)fread(&temp,sizeof(BookList),1,fp);if(strcmp(,FindName)=0)cout<<&q

22、uot;書名:"<<<<endl;cout<<"作者:"<<temp.editor<<endl;cout<<"書號:"<<temp.num<<endl;cout<<"價錢:"<<temp.price<<endl;done=1;return temp;break;if(done=1)cout<<"未找到相應(yīng)書"<<endl;break;

23、case 2:char FindName32;memset(&FindName,0,sizeof(FindName);while(true)cout<<"請輸入要查找的作者:"cin>>FindName;if(strlen(FindName)=0)cout<<"輸入有誤!"<<endl;elsebreak;int done=1;BookList temp;memset(&temp,0,sizeof(BookList);while (!feof(fp)fread(&temp,sizeo

24、f(BookList),1,fp);if(strcmp(temp.editor,FindName)=0)cout<<"書名:"<<<<endl;cout<<"作者:"<<temp.editor<<endl;cout<<"書號:"<<temp.num<<endl;cout<<"價錢:"<<temp.price<<endl;return temp;break;

25、break;case 3:char FindName32;memset(&FindName,0,sizeof(FindName);while(true)cout<<"請輸入要查找的書號:"cin>>FindName;if(strlen(FindName)=0)cout<<"輸入有誤!"<<endl;elsebreak;int done=1;BookList temp;memset(&temp,0,sizeof(BookList);while (!feof(fp)fread(&temp

26、,sizeof(BookList),1,fp);if(strcmp(temp.num,FindName)=0)cout<<"書名:"<<<<endl;cout<<"作者:"<<temp.editor<<endl;cout<<"書號:"<<temp.num<<endl;cout<<"價錢:"<<temp.price<<endl;return temp;bre

27、ak;break;case 4:break;default:;cout<<"n按任意鍵繼續(xù)n"/顯示書void ShowBook(FILE *fp)fp=fopen("Book.txt","rb");BookList temp; memset(&temp,0,sizeof(struct BookList);fread(&temp,sizeof(BookList),1,fp);while(!feof(fp)cout<<"書名:"<<<<

28、endl;cout<<"作者:"<<temp.editor<<endl;cout<<"書號:"<<temp.num<<endl;cout<<"價錢:"<<temp.price<<endl;fread(&temp,sizeof(BookList),1,fp);cout<<endl;cout<<"書的總數(shù)目為:"<<GetCount(fp); fclose(fp);co

29、ut<<"n按任意鍵繼續(xù)n"int GetCount(FILE *fp)int count=0;fp=fopen("Book.txt","rb");BookList temp; memset(&temp,0,sizeof(struct BookList);while(!feof(fp)fread(&temp,sizeof(BookList),1,fp);count+;return count-1;fclose(fp);cout<<"n按任意鍵繼續(xù)n"void Login()U

30、serList user3;for(int i=0;i<=2;i+)memset(&useri,0,sizeof(struct UserList);strcpy(user0.user,"fanming"); /帳戶密碼 初始值 你自己可以修改strcpy(user0.word,"123");int m=0;int done=0;char username32;memset(&username,0,32);char password32;memset(&password,0,32);cout<<"請輸入m值,0表示登陸,1表示修改密碼"<<endl;cin>>m;switch(

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論