C-圖書管理程序_第1頁
C-圖書管理程序_第2頁
C-圖書管理程序_第3頁
C-圖書管理程序_第4頁
C-圖書管理程序_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上題目:圖書登記管理程序需求分析:一: 設(shè)計一個圖書登記管理程序,其功能描述如下:1、管理功能:1.1錄入某圖書的信息(圖書信息內(nèi)容包括:ISBN號、書名、作者、出版社、出版日期、價格),即為添加該圖書信息1.2給定圖書ISBN編號,顯示該圖書信息1.2給定圖書ISBN編號,修改該圖書信息1.3給定圖書ISBN編號,刪除該圖書信息2、檢索功能:2.1給定某個字符串(關(guān)鍵字),查找并顯示所有書名中包括該字符串的圖書的信息2.2給定出版社名稱,查找并顯示該出版社的所有圖書的信息2.3給定圖書ISBN號,查找并顯示該圖書信息3、統(tǒng)計功能:3.1統(tǒng)計已登記的圖書數(shù)量二、函數(shù)描述

2、1、addbook()/添加圖書信息 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&q

3、uot;); scanf("%s",p->bookname); printf("請你輸入書的作者n"); scanf("%s",p->bookauthor); printf("請你輸入出版社名稱n"); scanf("%s",p->bookpublisher); printf("請你輸入出版日期n"); scanf("%s",p->bookdate); printf("請你輸入書的價格n"); scanf(&qu

4、ot;%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.txt","r"); fp2

5、=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(

6、struct book),1,fp2); fclose(fp); fclose(fp2); printf("是否真的要刪除該書籍?刪除后該書籍的所有信息將無法恢復(fù)(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,siz

7、eof(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"); getch(); return; else printf("按任意鍵返回n"); getch(); return; 3、changebook()/修改圖書信息 FILE *fp,*fp2;

8、 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,fp)!=0;i+) if(strcm

9、p(p->bookISBN,bookISBN)!=0) fwrite(p,sizeof(struct book),1,fp2); else printf("你所要修改的書的資料如下,請選擇你要修改的內(nèi)容n"); printf("ISBN號:%s 書名:%s 作者:%s 出版社:%s 出版日期:%s 價格:%sn",booki.bookISBN,booki.bookname,booki.bookauthor,booki.bookpublisher,booki.bookdate,booki.bookprice); printf("1:修改書的

10、ISBN號n"); printf("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(&

11、quot;%s",p->bookISBN); fwrite(p,sizeof(struct book),1,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(

12、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

13、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(

14、p,sizeof(struct book),1,fp2)!=0;i+) fwrite(p,sizeof(struct book),1,fp); fclose(fp); fclose(fp2); printf("修改成功!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&q

15、uot;,"r"); if(fp=NULL) putchar('n');printf("這個系統(tǒng)還沒有書籍信息,請先添加書籍信息n");printf(" 按任意鍵返回n");getch();return;putchar('n');printf(" 請輸入你要查找的圖書ISBN編號: "); scanf("%s",bookISBN); putchar('n');for(i=0;fread(p,sizeof(struct book),1,fp)!=0;

16、i+) if(strcmp(bookISBN,p->bookISBN)=0) if(p->state=1) printf("這本書的詳細(xì)資料是:圖書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");fclos

17、e(fp);return ; fclose(fp); getch(); return; printf("沒有你要查詢的書籍,按任意鍵返回n"); fclose(fp); getch();return; 5、findbook1()/根據(jù)出版社名稱查詢書目 FILE *fp; char bookpublisher20; int i;int count1=0;/標(biāo)記存在要查找的書目數(shù)量,如果count1為0,即沒有要查詢的書籍,則退出fp=fopen("book.txt","r"); if(fp=NULL) printf("這個系

18、統(tǒng)還沒有書籍信息,請先添加書籍信息n");printf(" 按任意鍵返回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

19、)=0) count1+; printf("這本書的詳細(xì)資料是:圖書ISBN編號:%s 書名:%s 作者:%s 出版社:%s 出版日期:%s 價格:%s 此書現(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(

20、); return; 6、findbook2()/根據(jù)關(guān)鍵字查找圖書 FILE *fp; char bookname20; int i;int count=0;p=(struct book*)malloc(sizeof(struct book);fp=fopen("book.txt","r"); if(fp=NULL) printf("這個系統(tǒng)還沒有書籍信息,請先添加書籍信息n");printf(" 按任意鍵返回n");getch();return;printf("請輸入你要查找的關(guān)鍵字: ")

21、; 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("這本書的詳細(xì)資料是:圖書ISBN編號:%s 書名:%s 作者:%s 出版社:%s 出版日期:%s 價格:%s 此書現(xiàn)在無人借閱nn ",p->bookISBN,p->bookn

22、ame,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(

23、"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.bookn

24、ame)!=0|strlen(booki.bookauthor)!=0|strlen(booki.bookpublisher)!=0|strlen(booki.bookdate)!=0|strlen(booki.bookprice)!=0) printf("第%d本書:n",i+1); printf("<ISBN編號:%s 書名:%s 作者:%s 出版社:%s 出版日期:%s 價格:%s 狀態(tài):%d>nn",booki.bookISBN,booki.bookname,booki.bookauthor,booki.bookpublisher,b

25、ooki.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;主要是用鏈表和文件的操作實現(xiàn)的 源代碼:#include<stdio.h>#include<string.h> #include<conio.h> #i

26、nclude<ctype.h> #include <stdlib.h>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ù)關(guān)鍵字查詢書目struct book/定義一個struct b

27、ook類型的結(jié)構(gòu)體數(shù)組,并定義一個指針變量p,它指向struct book結(jié)構(gòu)體類型 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"); print

28、f(" |n"); printf(" |-1:<圖書檢索>-|n"); printf(" |-2:<管理界面>-|n"); printf(" |-0:<離開界面>-|n"); printf(" |nn"); printf(" 請輸入0-2,其他輸入非法!nn"); printf(" 選擇菜單: "); scanf("%s",&ch1); putchar('n'); switch

29、(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;do system("cls"); printf(" -歡迎進(jìn)入圖書檢索界面!-nn"); printf(

30、" |n"); printf(" |-1:<按圖書ISBN編號查詢>-|n"); printf(" |-2:<根據(jù)出版社名稱查詢>-|n"); printf(" |-3:<根據(jù)書目關(guān)鍵字查詢>-|n"); printf(" |-0:<離開界面>-|n"); printf(" |nn"); printf(" 請輸入0-2,其他輸入非法!nn"); printf(" 選擇菜單: "); sca

31、nf("%s",&ch2); putchar('n'); switch(ch2) case '1':findbook();break; case '2':findbook1();break; case '3':findbook2();break; case '0':break; default:printf("輸入無效,按任意鍵返回");getch();break; while(ch2!='0'); void manage_system()/管理控制界

32、面char ch3; do system("cls"); printf(" *書目信息管理*n");printf(" |n"); printf(" |-1:<添加圖書>-|n"); printf(" |-2:<刪除圖書>-|n"); printf(" |-3:<修改圖書信息>-|n"); printf(" |-4:<統(tǒng)計圖書數(shù)量>-|n"); printf(" | |n"); printf

33、(" |-0:<返回>-|n"); printf(" |n"); printf(" 請輸入0-4,其他輸入非法!nn"); printf(" 選擇菜單: "); scanf("%s",&ch3); putchar('n'); switch(ch3) case '1':addbook();break; case '2':delbook();break; case '3':changebook();break; ca

34、se '4':bookcount();break; case '0':break; default:printf("無此操作,按任意鍵返回");getch();break; while(ch3!='0'); void addbook() /添加圖書信息 FILE *fp; /定義一個FILE結(jié)構(gòu)體變量,fp指向這個FILE結(jié)構(gòu)體變量int i=0; char choice='y' fp=fopen("book.txt","a+");/打開一個book.txt指向的文件,文

35、件操作方式為讀寫操作(a+),即為讀寫打開一個字符文件,進(jìn)行追加 while(choice='y'|choice='Y') /輸入Y則判斷是否進(jìn)行添加圖書信息 p=(struct book*)malloc(sizeof(struct book);/開辟一個結(jié)點,malloc返回的指針轉(zhuǎn)換為指向struct book類型數(shù)據(jù)的指針 printf(" 請你輸入第%d本書的ISBN編號: ",+i); scanf("%s",p->bookISBN); /輸入第一成員 putchar('n'); printf

36、(" 請你輸入書名: "); scanf("%s",p->bookname); putchar('n'); printf(" 請你輸入書的作者: "); scanf("%s",p->bookauthor); putchar('n'); printf(" 請你輸入出版社名稱: "); scanf("%s",p->bookpublisher); putchar('n'); printf(" 請你輸入出版日

37、期: "); scanf("%s",p->bookdate); putchar('n'); printf(" 請你輸入書的價格: "); scanf("%s",p->bookprice); putchar('n'); p->state=1; fwrite(p,sizeof(struct book),1,fp); /從p所代表的數(shù)組起始地址開始,輸出長度為sizeof(struct book)的一個數(shù)據(jù)項,將它們寫入由fp指定的文件中 printf(" 是否要輸入下本

38、書(Y/N): "); scanf("%s",&choice); putchar('n'); fclose(fp); /關(guān)閉文件void delbook() /刪除圖書信息 FILE *fp,*fp2; int i; char bookISBN20,choice; fp=fopen("book.txt","r");/打開fp指定的文件book.txt,文件操作為只讀方式 fp2=fopen("bookl.txt","w"); /打開fp2指定的文件book1.t

39、xt,文件操作為只寫方式 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,size

40、of(struct book),1,fp2); /不是則寫進(jìn)fp2指定的文件中 fclose(fp); /關(guān)閉文件fclose(fp2);/關(guān)閉文件printf("是否真的要刪除該書籍?刪除后該書籍的所有信息將無法恢復(fù)(Y/N)n"); scanf("%s",&choice); if(choice='y'|choice='Y') /如果確定要刪除此書,則將不包含要刪除書目的文件全部更換到fp指定的文件中 fp=fopen("book.txt","w"); fp2=fopen(

41、"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"); getch(); return; else printf("按任意

42、鍵返回n"); getch(); return; void 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編號: "); scan

43、f("%s",bookISBN); for(i=0;fread(p,sizeof(struct book),1,fp)!=0;i+) /循環(huán),將不需要修改的數(shù)據(jù)項寫入fp2指定的文件中,修改后的也寫進(jìn)去,避免順序錯亂 if(strcmp(p->bookISBN,bookISBN)!=0) fwrite(p,sizeof(struct book),1,fp2); /將不需要修改的書寫入fp2指定的文件中 else printf("你所要修改的書的資料如下,請選擇你要修改的內(nèi)容n"); printf("ISBN號:%s 書名:%s 作者:%s

44、 出版社:%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:修改價

45、格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); /修改后的數(shù)據(jù)項寫入fp2指定的文件中 break; case '2': printf("請輸入新的書名n"); scanf(&qu

46、ot;%s",p->bookname); fwrite(p,sizeof(struct book),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); fwr

47、ite(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); bre

48、ak; default:printf("沒有這樣的操作");break; fclose(fp2); /關(guān)閉文件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

49、); printf("修改成功!n");getchar();printf("按任意鍵返回n"); getchar(); void 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&qu

50、ot;);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.bookdate)!=0|strlen(booki.bookprice)!=0) printf("第%d本書:n",i+1); printf("<ISBN

51、編號:%s 書名:%s 作者:%s 出版社:%s 出版日期:%s 價格:%s 狀態(tài):%d>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("按任意鍵返

52、回上一級菜單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;

53、putchar('n');printf(" 請輸入你要查找的圖書ISBN編號: "); 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("這本書的詳細(xì)資料是:圖書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

溫馨提示

  • 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

提交評論