圖書館信息管理系統C設計_第1頁
圖書館信息管理系統C設計_第2頁
圖書館信息管理系統C設計_第3頁
圖書館信息管理系統C設計_第4頁
圖書館信息管理系統C設計_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、一:設計任務課程設計題目:圖書信息管理系統設計圖書信息包括: 登錄號、 書名、作者名、分類號、出版單位、 出版時間價格等。 試設計一圖書信息管理系統, 使之能提供以下 功能:系統以菜單方式工作 圖書信息錄入功能(圖書信息用文件保存)-輸入 圖書信息瀏覽功能 輸出 查詢和排序功能 算法按書名查詢 按作者名查詢圖書信息的刪除與修改 課程設計要求:整個系統均用C語言實現;可以利用數組、 指針、鏈表來實現數據結構設計; 系統具有輸入、 顯示、查詢、刪除、排序、 插入、 保存讀取等基本功能;系統的各個功能模塊都用函數的形式來實現; 可以將信息保存在文件中; 可以將信息從文件中讀取出來。二:系統設計方案利

2、用學過的C語言知識將各個功能模塊的源程序分別寫出,進行調試、運行,然后再將各模塊組合起來,整體進行調試運行。 源程序如下:#include#define N 3int ok=N ;#includestruct system /定義結構體long num;char name20;char writer10;char sort10;char publisher20;long time;float price;void load(struct system inform,FILE *fp) /定義一個輸入函數,完成信息錄入的功能if (fp=fopen(system.text,w)=NULL)pri

3、ntf(文件打開錯誤);printf(登錄號 書名 作者名 分類號 出版單位 出版時間 價格n);fprintf(fp,登錄號 書名 作者名 分類號 出版單位 出版時間 價格n); for(int i=0;iN;i+)scanf(%ld %s %s %s %s %ld%f,&informi.num,,informi.writer,informi .sort,informi.publisher,&informi.time,&informi.price);fprintf(fp,%-6ld %-8s %-8s %-8s %-8s %-6ld %-8fn

4、,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time ,informi.price);/在文件fp中存入N本書的信息fclose(fp);void look(struct system inform) /定義一個輸出函數,完成信息瀏覽的功能printf(登錄號 書名 作者名 分類號 出版單位 出版時間 價格n); for(int i=0;iN;i+)printf(%ld %s %s %s %s %ld%fn,informi.num,,informi.wri

5、ter,informi .sort,informi.publisher,informi.time,informi.price);void search1(struct system inform) /定義一個查詢函數,完成對書名查詢的功能int i;int n ; /n表示書名為p的書的總本數char p20; /p代表要查詢的書名printf(請輸入要查詢的書名:);scanf(%s,&p);for(i=0;iN;i+) if(strcmp(,p)=0)/判斷兩字符串是否相等printf(登錄號 書名 作者名 分類號 出版單位 出版時間n);printf(%l

6、d %s %s %s %s %ld%fn,informi.num,,informi.writer,informi.sort ,informi.publisher,informi.time,informi.price);n+;if(n=0) printf(輸入的書不存在n);void search2(struct system inform) /定義一個查詢函數,完成對作者名查詢的功能int i;int m=0; /m表示作者名為q的書的總本數char q10; /q代表要查詢作者名printf(請輸入要查詢的作者名:); scanf(%s,q);for(i=0;iN;i

7、+)if (strcmp(informi.writer,q)=0) /判斷兩個字符串是否相等printf(登錄號 書名 作者名 分類號 出版單位 出版時間n);價價printf(%ld %s %s %s %s %ld%fn,informi.num,,informi.writer,informi.sort ,informi.publisher,informi.time,informi.price);m+;if(m=0)printf(輸入的作者名不存在n);void order1(struct system inform,FILE *fp) /定義第一個排序函數, 完成對出

8、版時間從高到低 的排序功能if (fp=fopen(system.text,a)=NULL)printf(文件打開錯誤);fprintf(fp,登錄號 書名 作者名 分類號 出版單位 出版時間 價格n);int i,j;struct system temp; for(i=0;ii;j-) if(informj-1.time=informj.time)temp=informj-1;informj-1=informj; informj=temp;printf(按出版時間從高到低排序的結果為:n);printf(登錄號 書名 作者名 分類號 出版單位 出版時間 價格n);for(i=0;iN;i+)

9、fprintf(fp,%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price);printf(%ld %s %s %s %s %ld%fn,informi.num,,informi.writer,informi.sort ,informi.publisher,informi.time,informi.price);fclose(fp);void order2(struct system

10、 inform,FILE *fp) /定義第二個排序函數, 完成對價格降序排序的功 臺匕能if (fp=fopen(system.text,a)=NULL) printf(文件打開錯誤);fprintf(fp,登錄號 書名 作者名 分類號 出版單位 出版時間 價格n);struct system temp;int i,j; for(i=0;ii;j-) if(informj-1.priceinformj.price)temp=informj-1; informj-1=informj; informj=temp;printf(按價格降序排序的結果為:n);printf(登錄號 書名 作者名 分類

11、號 出版單位 出版時間價格n);for(i=0;iN;i+)fprintf(fp,%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price);printf(%ld %s %s %s %s %ld%fn,informi.num,,informi.writer,informi.sort ,informi.publisher,informi.time,informi.price);fclose

12、(fp);void cancle(struct system inform,FILE *fp) /定義一個刪除函數, 完成對圖書信息按書名刪除 的功能 if (fp=fopen(system.text,a)=NULL)printf(文件打開錯誤);printf(登錄號 書名 作者名 分類號 出版單位 出版時間 價格n); fprintf(fp,登錄號 書名 作者名 分類號 出版單位 出版時間 價格n);int i,j=0;char p20; /p代表要刪除的書名printf(請輸入需要刪除的書名:);scanf(%s,&p);for(i=0;iN;i+)if(strcmp(inform

13、,p)=0) for(j=i;jN;j+)informj=informj+1;ok-;printf(刪除成功!結果為:n);printf(登錄號 書名 作者名 分類號 出版單位 出版時間 價格n);for(i=0;iN-1;i+)fprintf(fp,%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price);printf(%ld %s %s %s %s %ld%fn,informi.num,inf

14、,informi.writer,informi.sort ,informi.publisher,informi.time,informi.price);fclose(fp);void modify(struct system inform,FILE *fp) /定義一個修改函數,完成圖書價格修改的功能if (fp=fopen(system.text,a)=NULL)printf(文件打開錯誤);fprintf(fp,登錄號 書名 作者名 分類號 出版單位 出版時間 價格n); int i;char m20;float s;printf(請輸入要修改價格的書名:); scanf

15、(%s,&m); /m表示要修改價格的書名for(i=0;iN;i+)if(strcmp(,m)=0)/判斷兩字符串是否相等printf(價格應修改為:);scanf(%f,&s); informi.price=s;printf(修改成功,結果為:n);printf(登錄號 書名 作者名 分類號 出版單位 出版時間 價格n);for(i=0;iN;i+)fprintf(fp,%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publis

16、her,informi.time,informi.price);printf(%ld %s %s %s %s %ld%fn,informi.num,,informi.writer,informi.sort ,informi.publisher,informi.time,informi.price);fclose(fp);void main()int pushbutton; struct system informN;FILE *fp;fp=fopen(system.text,wb+);doprintf(*MENU*printf(0輸入圖書信息n) ;printf(1瀏覽

17、圖書信息n);printf(2按書名查詢n);printf(3按作者名查詢n);printf (4按圖書出版時間從高到低排序printf(5按圖書價格降序排序n);printf(6按書名刪除信息n);printf(7修改圖書價格n);printf(8退出n);printf(請輸入08按鈕選擇操作項:);scanf(%d,&pushbutton);switch(pushbutton)case 0:load(inform,fp);break;case 1:look(inform);break;case 2:search1(inform);break; case 3:search2(info

18、rm);break; case4:order1(inform,fp);break; case 5:order2(inform,fp);break; case 6:cancle(inform,fp);break;case 7:modify(inform,fp);break; case 8:printf(退出n);break; default:printf(n非法操作!n);while(pushbutton!=8);三:程序主要代碼分析1)數據結構選用靜態數組實現對圖書信息的管理。結構體如下:struct system /定義結構體long num;char name20;char writer1

19、0;n);char sort10;char publisher20;long time;float price;(2)main()主函數程序采用模塊化設計,主函數為程序的入口,各模塊獨立, 可分塊調試, 各模塊由主函數控制調用。 主函數的控制功能通過 循環執行一個開關語句來實現。該開關語句的條件值為調用主菜 單函數pushbutton得到的返回值,根據該值,調用相應的各功 能函數。void main()int pushbutton;struct system informN;FILE *fp;fp=fopen(system.text,wb+);doprintf(*MENU*printf(0輸入

20、圖書信息n);printf(1瀏覽圖書信息n);printf(2按書名查詢n);printf(3按作者名查詢n);printf(4按圖書出版時間從高到低排序n);printf(5按圖書價格降序排序n);printf(6按書名刪除信息n);printf(7修改圖書價格n);printf(8退出n);printf(請輸入08按鈕選擇操作項:); scanf(%d,&pushbutton);switch(pushbutton)case 0:load(inform,fp);break;case 1:look(inform);break;case 2:search1(inform);break;

21、case 3:search2(inform);break;case 4:order1(inform,fp);break;case 5:order2(inform,fp);break;case 6:cancle(inform,fp);break;case 7:modify(inform,fp);break;case 8:printf(退出n);break; default:printf(n非法操作!n);while(pushbutton!=8);(3) 錄入信息的功能模塊void load(struct system inform,FILE *fp) /定義一個輸入函數,完成信息錄入的功能if

22、(fp=fopen(system.text,w)=NULL)printf(文件打開錯誤);printf(登錄號 書名 作者名 分類號 出版單位 出版時間 價格n);fprintf(fp,登錄號 書名 作者名 分類號 出版單位 出版時間 價格n); for(int i=0;iN;i+)scanf(%ld %s %s %s %s %ld%f,&informi.num,,informi.writer,informi .sort,informi.publisher,&informi.time,&informi.price);fprintf(fp,%-6l

23、d %-8s %-8s %-8s %-8s %-6ld %-8fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time ,informi.price);/在文件fp中存入N本書的信息fclose(fp);此模塊完成信息的輸入功能,用的是一個輸入函數。(4) 瀏覽信息的功能模塊 (見源程序),采用的是一個輸出函數。(5) 信息查詢功能模塊void search1(struct system inform) /定義一個查詢函數,完成對書名查詢的功能int i;int n ; /n表示

24、書名為p的書的總本數char p20; /p代表要查詢的書名printf(請輸入要查詢的書名:);scanf(%s,&p);for(i=0;iN;i+)if(strcmp(,p)=0)/判斷兩字符串是否相等printf(登錄號 書名 作者名 分類號 出版單位 出版時間 價格n);printf(%ld %s %s %s %s %ld%fn,informi.num,,informi.writer,informi.sort ,informi.publisher,informi.time,informi.price);n+;if(n=0)prin

25、tf(輸入的書不存在n);此模塊通過輸入書名完成對書信息的查詢, 輸入書名判斷所輸入 的書名是否與保存在文件中的書名相同, 若同則顯示出來, 若不 同則提示“輸入的書不存在”。(6) 信息排序模塊功能(主要部分)int i,j;struct system temp;for(i=0;ii;j-)if(informj-1.time=informj.time)temp=informj-1;informj-1=informj;informj=temp;printf(按出版時間從高到低排序的結果為:n);printf(登錄號 書名 作者名 分類號 出版單位 出版時間 價格n);此模塊采用的是冒泡排序法。(7) 信息刪除功能(見源程序)輸入想刪除的圖書的書名,判斷是否有, 有的話則刪掉, 用其他圖書的信息覆蓋要刪掉圖書的信息。(8)信息修改模塊(主要部分)int i;char m20;float s;printf(請輸入要修改價格的書名:);scanf(%s,&m); /m表示要修改價格的書名for(i=0;iN;i+) if(strcmp(informi.n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論