版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、題目:圖書登記管理程序需求分析:一: 設計一個圖書登記管理程序,其功能描述如下:1、管理功能:1.1錄入某圖書的信息(圖書信息內容包括:ISBN號、書名、作者、出版社、出版日期、價格),即為添加該圖書信息1.2給定圖書ISBN編號,顯示該圖書信息1.2給定圖書ISBN編號,修改該圖書信息1.3給定圖書ISBN編號,刪除該圖書信息2、檢索功能:2.1給定某個字符串(關鍵字),查找并顯示所有書名中包括該字符串的圖書的信息2.2給定出版社名稱,查找并顯示該出版社的所有圖書的信息2.3給定圖書ISBN號,查找并顯示該圖書信息3、統(tǒng)計功能:3.1統(tǒng)計已登記的圖書數(shù)量二、函數(shù)描述1、addbook()/添
2、加圖書信息 FILE *fp; int i=0; char choice=y; fp=fopen(book.txt,a+); while(choice=y|choice=Y) p=(struct book*)malloc(sizeof(struct book); printf(請你輸入第%d本書的ISBN編號n,+i); scanf(%s,p-bookISBN); printf(請你輸入書名n); scanf(%s,p-bookname); printf(請你輸入書的作者n); scanf(%s,p-bookauthor); printf(請你輸入出版社名稱n); scanf(%s,p-boo
3、kpublisher); printf(請你輸入出版日期n); scanf(%s,p-bookdate); printf(請你輸入書的價格n); scanf(%s,p-bookprice); p-state=1; fwrite(p,sizeof(struct book),1,fp); printf(是否要輸入下本書(Y/N)n); scanf(%s,&choice); fclose(fp); 2、delbook()/刪除圖書信息void delbook() /刪除圖書信息 FILE *fp,*fp2; int i; char bookISBN20,choice; fp=fopen(book.t
4、xt,r); fp2=fopen(bookl.txt,w); printf(請輸入你要刪除的圖書ISBN號n); printf(如果你輸入的圖書ISBN號存在,系統(tǒng)自動刪除該信息!如果不存在,系統(tǒng)不做任何改動n); scanf(%s,bookISBN); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookISBN,booki.bookISBN)!=0) fwrite(&booki,sizeof(struct book),1,fp2); fclose(fp); fclose(fp2); printf(是否真的要
5、刪除該書籍?刪除后該書籍的所有信息將無法恢復(Y/N)n); scanf(%s,&choice); if(choice=y|choice=Y) fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf(刪除完畢,按任意鍵返回n); ge
6、tch(); return; else printf(按任意鍵返回n); getch(); return; 3、changebook()/修改圖書信息 FILE *fp,*fp2; char bookISBN20,choice; int i; fp=fopen(book.txt,r+); fp2=fopen(bookl.txt,w); p=(struct book*)malloc(sizeof(struct book); printf(請你輸入要修改的圖書ISBN編號: ); scanf(%s,bookISBN); for(i=0;fread(p,sizeof(struct book),1,f
7、p)!=0;i+) if(strcmp(p-bookISBN,bookISBN)!=0) fwrite(p,sizeof(struct book),1,fp2); else printf(你所要修改的書的資料如下,請選擇你要修改的內容n); printf(ISBN號:%s 書名:%s 作者:%s 出版社:%s 出版日期:%s 價格:%sn,booki.bookISBN,booki.bookname,booki.bookauthor,booki.bookpublisher,booki.bookdate,booki.bookprice); printf(1:修改書的ISBN號n); printf(
8、2:修改書名n); printf(3:修改作者n); printf(4:修改出版社n); printf(5:修改出版日期n); printf(6:修改價格n); printf(請輸入1-6:); scanf(%s,&choice); switch(choice) case 1: printf(請輸入新的ISBN號n); scanf(%s,p-bookISBN); fwrite(p,sizeof(struct book),1,fp2); break; case 2: printf(請輸入新的書名n); scanf(%s,p-bookname); fwrite(p,sizeof(struct bo
9、ok),1,fp2); break; case 3: printf(請輸入新的作者n); scanf(%s,p-bookauthor); fwrite(p,sizeof(struct book),1,fp2); break; case 4: printf(請輸入新的出版社n); scanf(%s,p-bookpublisher); fwrite(p,sizeof(struct book),1,fp2); break; case 5: printf(請輸入新的出版日期n); scanf(%s,p-bookdate); fwrite(p,sizeof(struct book),1,fp2); br
10、eak; case 6: printf(請輸入新的價格n); scanf(%s,p-bookprice); fwrite(p,sizeof(struct book),1,fp2); break; default:printf(沒有這樣的操作);break; fclose(fp2); fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(p,sizeof(struct book),1,fp2)!=0;i+) fwrite(p,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); p
11、rintf(修改成功!n);getchar();printf(按任意鍵返回n); getchar(); 4、findbook()/按圖書ISBN編號查詢 FILE *fp; int i;char bookISBN20; p=(struct book*)malloc(sizeof(struct book);fp=fopen(book.txt,r); if(fp=NULL) putchar(n);printf(這個系統(tǒng)還沒有書籍信息,請先添加書籍信息n);printf( 按任意鍵返回n);getch();return;putchar(n);printf( 請輸入你要查找的圖書ISBN編號: );
12、scanf(%s,bookISBN); putchar(n);for(i=0;fread(p,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookISBN,p-bookISBN)=0) if(p-state=1) printf(這本書的詳細資料是:圖書ISBN編號:%s 書名:%s 作者:%s 出版社:%s 出版日期:%s 價格:%s 此書現(xiàn)在無人借閱n 按任意鍵返回n,p-bookISBN,p-bookname,p-bookauthor,p-bookpublisher,p-bookdate,p-bookprice); else printf(這本書已
13、經(jīng)有人借出,按任意鍵返回n);fclose(fp);return ; fclose(fp); getch(); return; printf(沒有你要查詢的書籍,按任意鍵返回n); fclose(fp); getch();return; 5、findbook1()/根據(jù)出版社名稱查詢書目 FILE *fp; char bookpublisher20; int i;int count1=0;/標記存在要查找的書目數(shù)量,如果count1為0,即沒有要查詢的書籍,則退出fp=fopen(book.txt,r); if(fp=NULL) printf(這個系統(tǒng)還沒有書籍信息,請先添加書籍信息n);pr
14、intf( 按任意鍵返回n);getch();return;printf(請輸入你要查找的出版社名稱: ); scanf(%s,bookpublisher); putchar(n);p=(struct book*)malloc(sizeof(struct book);for(i=0;fread(p,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookpublisher,p-bookpublisher)=0) count1+; printf(這本書的詳細資料是:圖書ISBN編號:%s 書名:%s 作者:%s 出版社:%s 出版日期:%s 價格:%s 此書
15、現(xiàn)在無人借閱nn,p-bookISBN,p-bookname,p-bookauthor,p-bookpublisher,p-bookdate,p-bookprice); if(count1=0)printf(沒有你要查詢的書籍,按任意鍵返回n); elseprintf(按任意鍵返回n);fclose(fp); getch(); return; 6、findbook2()/根據(jù)關鍵字查找圖書 FILE *fp; char bookname20; int i;int count=0;p=(struct book*)malloc(sizeof(struct book);fp=fopen(book.t
16、xt,r); if(fp=NULL) printf(這個系統(tǒng)還沒有書籍信息,請先添加書籍信息n);printf( 按任意鍵返回n);getch();return;printf(請輸入你要查找的關鍵字: ); scanf(%s,&bookname); putchar(n);for(i=0;fread(p,sizeof(struct book),1,fp)!=0;i+) char *a=strstr(p-bookname,bookname); if(a!=NULL) count+; if(p-state=1) printf(這本書的詳細資料是:圖書ISBN編號:%s 書名:%s 作者:%s 出版社
17、:%s 出版日期:%s 價格:%s 此書現(xiàn)在無人借閱nn ,p-bookISBN,p-bookname,p-bookauthor,p-bookpublisher,p-bookdate,p-bookprice); else printf(這本書已經(jīng)有人借出n);fclose(fp);return; if(count=0)printf(沒有你要查詢的書籍,按任意鍵返回n); else printf(按任意鍵返回n);fclose(fp); getch();return; 7、bookcount()/統(tǒng)計已登記圖書數(shù)量并顯示其圖書信息 FILE *fp; int i,n=0; system(cls)
18、;printf(【統(tǒng)計圖書數(shù)量】nn);fp=fopen(book.txt,r); if(fp=NULL) printf(這個系統(tǒng)還沒有書籍信息,請先添加書籍信息n);printf( 按任意鍵返回上一級n);getch();return;for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strlen(booki.bookISBN)!=0|strlen(booki.bookname)!=0|strlen(booki.bookauthor)!=0|strlen(booki.bookpublisher)!=0|strlen(booki.
19、bookdate)!=0|strlen(booki.bookprice)!=0) printf(第%d本書:n,i+1); printf(nn,booki.bookISBN,booki.bookname,booki.bookauthor,booki.bookpublisher,booki.bookdate,booki.bookprice,booki.state); n=n+1; fclose(fp); printf(n);printf(統(tǒng)計:目前共有 %d 本書(狀態(tài)0指借出,1指在館)nn,n); printf(按任意鍵返回上一級菜單n); getch();return;主要是用鏈表和文件的
20、操作實現(xiàn)的 源代碼:#include#include #include #include #include void search_system();/查詢界面void manage_system();/管理界面void addbook();/添加圖書信息void delbook();/刪除圖書信息void changebook();/修改圖書信息void bookcount();/統(tǒng)計圖書數(shù)量void findbook();/按圖書ISBN編號查詢void findbook1();/根據(jù)出版社名稱查詢書目void findbook2();/根據(jù)關鍵字查詢書目struct book/定義一個s
21、truct book類型的結構體數(shù)組,并定義一個指針變量p,它指向struct book結構體類型 char bookISBN20; char bookname20; char bookauthor20; char bookpublisher20;char bookdate20;char bookprice10;int state; book1000,*p;void main() char ch1; do system(cls); printf( 歡迎使用圖書登記管理程序nn); printf( 請選擇需要操作的類型nn); printf( |n); printf( |-1:-|n); pri
22、ntf( |-2:-|n); printf( |-0:-|n); printf( |nn); printf( 請輸入0-2,其他輸入非法!nn); printf( 選擇菜單: ); scanf(%s,&ch1); putchar(n); switch(ch1) case 1:search_system();break; case 2:manage_system();break; case 0:break; default:printf(輸入無效,按任意鍵返回);getch();break; while(ch1!=0); void search_system()/查詢控制界面 char ch2;
23、do system(cls); printf( -歡迎進入圖書檢索界面!-nn); printf( |n); printf( |-1:-|n); printf( |-2:-|n); printf( |-3:-|n); printf( |-0:-|n); printf( |nn); printf( 請輸入0-2,其他輸入非法!nn); printf( 選擇菜單: ); scanf(%s,&ch2); putchar(n); switch(ch2) case 1:findbook();break; case 2:findbook1();break; case 3:findbook2();break
24、; case 0:break; default:printf(輸入無效,按任意鍵返回);getch();break; while(ch2!=0); void manage_system()/管理控制界面char ch3; do system(cls); printf( *書目信息管理*n);printf( |n); printf( |-1:-|n); printf( |-2:-|n); printf( |-3:-|n); printf( |-4:-|n); printf( | |n); printf( |-0:-|n); printf( |n); printf( 請輸入0-4,其他輸入非法!n
25、n); printf( 選擇菜單: ); scanf(%s,&ch3); putchar(n); switch(ch3) case 1:addbook();break; case 2:delbook();break; case 3:changebook();break; case 4:bookcount();break; case 0:break; default:printf(無此操作,按任意鍵返回);getch();break; while(ch3!=0); void addbook() /添加圖書信息 FILE *fp; /定義一個FILE結構體變量,fp指向這個FILE結構體變量int
26、 i=0; char choice=y; fp=fopen(book.txt,a+);/打開一個book.txt指向的文件,文件操作方式為讀寫操作(a+),即為讀寫打開一個字符文件,進行追加 while(choice=y|choice=Y) /輸入Y則判斷是否進行添加圖書信息 p=(struct book*)malloc(sizeof(struct book);/開辟一個結點,malloc返回的指針轉換為指向struct book類型數(shù)據(jù)的指針 printf( 請你輸入第%d本書的ISBN編號: ,+i); scanf(%s,p-bookISBN); /輸入第一成員 putchar(n); p
27、rintf( 請你輸入書名: ); scanf(%s,p-bookname); putchar(n); printf( 請你輸入書的作者: ); scanf(%s,p-bookauthor); putchar(n); printf( 請你輸入出版社名稱: ); scanf(%s,p-bookpublisher); putchar(n); printf( 請你輸入出版日期: ); scanf(%s,p-bookdate); putchar(n); printf( 請你輸入書的價格: ); scanf(%s,p-bookprice); putchar(n); p-state=1; fwrite(p
28、,sizeof(struct book),1,fp); /從p所代表的數(shù)組起始地址開始,輸出長度為sizeof(struct book)的一個數(shù)據(jù)項,將它們寫入由fp指定的文件中 printf( 是否要輸入下本書(Y/N): ); scanf(%s,&choice); putchar(n); fclose(fp); /關閉文件void delbook() /刪除圖書信息 FILE *fp,*fp2; int i; char bookISBN20,choice; fp=fopen(book.txt,r);/打開fp指定的文件book.txt,文件操作為只讀方式 fp2=fopen(bookl.t
29、xt,w); /打開fp2指定的文件book1.txt,文件操作為只寫方式 printf(請輸入你要刪除的圖書ISBN號n); printf(如果你輸入的圖書ISBN號存在,系統(tǒng)自動刪除該信息!如果不存在,系統(tǒng)不做任何改動n); scanf(%s,bookISBN); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) /每次讀一個數(shù)據(jù)項 if(strcmp(bookISBN,booki.bookISBN)!=0) /比較字符串,判斷是不是要刪除的bookISBN fwrite(&booki,sizeof(struct book),1,f
30、p2); /不是則寫進fp2指定的文件中 fclose(fp); /關閉文件fclose(fp2);/關閉文件printf(是否真的要刪除該書籍?刪除后該書籍的所有信息將無法恢復(Y/N)n); scanf(%s,&choice); if(choice=y|choice=Y) /如果確定要刪除此書,則將不包含要刪除書目的文件全部更換到fp指定的文件中 fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&booki,sizeof(struct book),1,fp2)!=0;i+) fwrite(&booki,sizeof(s
31、truct book),1,fp); fclose(fp); fclose(fp2); fp2=fopen(bookl.txt,w); fclose(fp2); printf(刪除完畢,按任意鍵返回n); getch(); return; else printf(按任意鍵返回n); getch(); return; void changebook() /修改圖書信息 FILE *fp,*fp2; char bookISBN20,choice; int i; fp=fopen(book.txt,r+);/讀寫方式打開 fp2=fopen(bookl.txt,w); /只寫方式打開 p=(stru
32、ct book*)malloc(sizeof(struct book); printf(請你輸入要修改的圖書ISBN編號: ); scanf(%s,bookISBN); for(i=0;fread(p,sizeof(struct book),1,fp)!=0;i+) /循環(huán),將不需要修改的數(shù)據(jù)項寫入fp2指定的文件中,修改后的也寫進去,避免順序錯亂 if(strcmp(p-bookISBN,bookISBN)!=0) fwrite(p,sizeof(struct book),1,fp2); /將不需要修改的書寫入fp2指定的文件中 else printf(你所要修改的書的資料如下,請選擇你要修
33、改的內容n); printf(ISBN號:%s 書名:%s 作者:%s 出版社:%s 出版日期:%s 價格:%sn,booki.bookISBN,booki.bookname,booki.bookauthor,booki.bookpublisher,booki.bookdate,booki.bookprice); printf(1:修改書的ISBN號n); printf(2:修改書名n); printf(3:修改作者n); printf(4:修改出版社n); printf(5:修改出版日期n); printf(6:修改價格n); printf(請輸入1-6:); scanf(%s,&choic
34、e); switch(choice) case 1: printf(請輸入新的ISBN號n); scanf(%s,p-bookISBN); fwrite(p,sizeof(struct book),1,fp2); /修改后的數(shù)據(jù)項寫入fp2指定的文件中 break; case 2: printf(請輸入新的書名n); scanf(%s,p-bookname); fwrite(p,sizeof(struct book),1,fp2); break; case 3: printf(請輸入新的作者n); scanf(%s,p-bookauthor); fwrite(p,sizeof(struct b
35、ook),1,fp2); break; case 4: printf(請輸入新的出版社n); scanf(%s,p-bookpublisher); fwrite(p,sizeof(struct book),1,fp2); break; case 5: printf(請輸入新的出版日期n); scanf(%s,p-bookdate); fwrite(p,sizeof(struct book),1,fp2); break; case 6: printf(請輸入新的價格n); scanf(%s,p-bookprice); fwrite(p,sizeof(struct book),1,fp2); br
36、eak; default:printf(沒有這樣的操作);break; fclose(fp2); /關閉文件fp=fopen(book.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(p,sizeof(struct book),1,fp2)!=0;i+) /將bookl.txt中的數(shù)據(jù)寫入并覆蓋book.txt中的數(shù)據(jù) fwrite(p,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); printf(修改成功!n);getchar();printf(按任意鍵返回n); getchar(); voi
37、d bookcount() FILE *fp; int i,n=0; system(cls);printf(【統(tǒng)計圖書數(shù)量】nn);fp=fopen(book.txt,r); if(fp=NULL) printf(這個系統(tǒng)還沒有書籍信息,請先添加書籍信息n);printf( 按任意鍵返回上一級n);getch();return;for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) if(strlen(booki.bookISBN)!=0|strlen(booki.bookname)!=0|strlen(booki.bookauthor)!=
38、0|strlen(booki.bookpublisher)!=0|strlen(booki.bookdate)!=0|strlen(booki.bookprice)!=0) printf(第%d本書:n,i+1); printf(nn,booki.bookISBN,booki.bookname,booki.bookauthor,booki.bookpublisher,booki.bookdate,booki.bookprice,booki.state); n=n+1; fclose(fp); printf(n);printf(統(tǒng)計:目前共有 %d 本書(狀態(tài)0指借出,1指在館)nn,n); p
39、rintf(按任意鍵返回上一級菜單n); getch();return;void findbook()/按圖書ISBN編號查詢 FILE *fp; int i;char bookISBN20; p=(struct book*)malloc(sizeof(struct book);fp=fopen(book.txt,r); if(fp=NULL) putchar(n);printf(這個系統(tǒng)還沒有書籍信息,請先添加書籍信息n);printf( 按任意鍵返回n);getch();return;putchar(n);printf( 請輸入你要查找的圖書ISBN編號: ); scanf(%s,book
40、ISBN); putchar(n);for(i=0;fread(p,sizeof(struct book),1,fp)!=0;i+) if(strcmp(bookISBN,p-bookISBN)=0) if(p-state=1) printf(這本書的詳細資料是:圖書ISBN編號:%s 書名:%s 作者:%s 出版社:%s 出版日期:%s 價格:%s 此書現(xiàn)在無人借閱n 按任意鍵返回n,p-bookISBN,p-bookname,p-bookauthor,p-bookpublisher,p-bookdate,p-bookprice); else printf(這本書已經(jīng)有人借出,按任意鍵返回n);fclose(fp);return ; fclose(fp); getch(); return; printf(沒有你要查詢的書籍,按任意鍵返回n); fclose(fp); getch();return; void findbook1()/根據(jù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年大號鋸弓項目投資價值分析報告
- 2024年稀土金屬鑭項目可行性研究報告
- 2024年油溶性透明鉻合染料項目可行性研究報告
- 2024年不銹鋼洗菜槽項目可行性研究報告
- 某地石油化工能源有限公司燃料儲配站可行性研究報告
- 個人用磨腳石產(chǎn)品入市調查研究報告
- 牙科用復合材料產(chǎn)品入市調查研究報告
- 無勞動合同下的權益保護指南
- 倉庫租賃合同參考
- 建筑工程簡化承包合同
- 平行四邊形面積的計算課件(共27張PPT)五年級上冊數(shù)學人教版
- 展廳設計布展投標方案(完整技術標)
- 靜脈中等長度導管臨床應用專家共識-
- 2023年遼寧省新高考歷史試卷(含解析)
- 企業(yè)內部控制風險清單模版
- 機電安裝工程施工工藝標準化培訓考試
- 水稻栽培管理技術培訓(精簡)課件
- 全國行政區(qū)劃代碼(12位)
- 中醫(yī)體質養(yǎng)生指導痰濕質
- 裝配式建筑概論復習題
- 初中生物-細菌教學設計學情分析教材分析課后反思
評論
0/150
提交評論