免費預覽已結(jié)束,剩余14頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
目錄一、需求分析2二、概要設計2三、詳細設計4四、調(diào)試分析6五、用戶手冊6六、測試數(shù)據(jù)6七、附錄8一、需求分析1. 程序以菜單的方式工作,具備圖書的添加、刪除、修改、查詢、統(tǒng)計操作,數(shù)據(jù)存儲采用文件形式。2.定義結(jié)構(gòu)體數(shù)組struct library bookinf30,用以存儲ISBN、書名、作者名、圖書類別、出版單位、出版時間、價錢、數(shù)量信息。利用文件開辟并將信息保存在“bookinf.txt”中。3.用戶從鍵盤輸入需要的操作,其中“ISBN、書名、作者名、圖書類別、出版單位”需使用字符輸入,“出版時間、價格、數(shù)量”采用數(shù)字輸入。4.測試數(shù)據(jù):(1)查找:若找到了所要查找的書本,則打印出書本信息;若沒有找到,則打印“沒有找到您要找的書本”(2)刪除:若找到了所要查找的書本,按下y確認刪除后,打印出“該書已刪除”;若沒有找到要刪除的書本,則打印“沒有找到該書,退出操作”(3)修改:若找到了要修改的書本,打印“請輸入你要修改的信息”并開始修改;若沒有找到要修改的書本,則打印“沒有找到要修改的書本”5.程序執(zhí)行命令為:(1)創(chuàng)建“bookinf.txt”文件(2)將圖書信息用添加操作加進“bookinf.txt”文件中(3)用戶選擇所需操作(4)搜索結(jié)果二、概要設計1.定義結(jié)構(gòu)體數(shù)組struct library bookinf50。bookinfi.ISBN / ISBN /書名bookinfi.author / 作者名bookinfi.vari / 圖書類別bookinfi.pubplace /出版單位bookinfi.pubtime / 出版時間bookinfi.price /價格bookinfi.num / 數(shù)量/* 用以下程序開辟存儲文件bookinf.txt */FILE *fp; if(fp=fopen(bookinf.txt,r+)=NULL) printf(無法打開文件!n); return; 2.程序構(gòu)造add ()通過此函數(shù)將輸入的書本信息添加存儲進bookinf.txt文件中,用于下一次的查詢或刪、改、統(tǒng)操作的調(diào)用。del()通過此函數(shù)完成對bookinf.txt文件中書本信息的刪除,“printf(確定要刪除該書嗎?(y/n) n);”鍵盤輸入y/n確定書本信息的刪除,刪除后將不再有該書記錄modify()通過此函數(shù)完成對書本信息的修改,修改內(nèi)容包括:ISBN、書名、作者名、圖書類別、出版單位、出版時間、價格、數(shù)量。search()此函數(shù)為查詢書本信息操作,可查詢bookinf.txt文件中存儲的書本信息。count()此操作為統(tǒng)計操作,用于統(tǒng)計bookinf.txt文件中存儲書本的總數(shù)量及金額數(shù)。main()通過對上述函數(shù)的調(diào)用,將所得信息打印出來3.主程序流程主函數(shù) 增加模塊刪除模塊修改模塊查詢模塊統(tǒng)計模塊三、詳細設計1.圖書館管理的數(shù)據(jù)類型struct librarychar ISBN20; /ISBNchar name30; /書名char author30; /作者名char vari10; /圖書類別char pubplace50; /出版單位int pubtime; /出版時間int price; /價格int num; /數(shù)量;/-基本操作的算法描述-1.文件部分FILE *fp; if(fp=fopen(bookinf.txt,r+)=NULL) /檢查打開的操作是否出錯printf(無法打開文件!n); /若出錯則打印該行文字return; 2.查詢操作部分printf(n請輸入您要查找的書名n);scanf(%s,bookname); /輸入想查詢的書名 while(!feof(fp) /循環(huán) 直到文件尾部,函數(shù)值為真 fread(&bookinf,sizeof(struct library),1,fp); /從fp中讀入1個長度為sizeof(struct library)的數(shù)據(jù),存到bookinf 中if(strcmp(,bookname)=0) /比較輸入的書名和文件中保存的書名,若相同printf(ISBN 書名 作者名 圖書類別 出版單位 出版時間 價格 數(shù)量n);printf(%s %s %s %s %s %d %d %d n,bookinf.ISBN,,bookinf.author,bookinf.vari,bookinf.pubplace,bookinf.pubtime,bookinf.price,bookinf.num);/若相同,則打印出書本的信息i=1;break; if(i!=1) /若沒有找到該書printf(沒有找到您要找的書本n);3.刪除部分strcpy(bookinfflag.ISBN,bookinfflag+1.ISBN);/將后一本書的ISBN復制給前一本書的ISBN strcpy(,bookinfflag+1.name); /將后一本書的書名復制給前一本書的書名strcpy(bookinfflag.author,bookinfflag+1.author); /將后一本書的作者名復制給前一本書的作者名strcpy(bookinfflag.vari,bookinfflag+1.vari); /將后一本書的圖書種類復制給前一本書的圖書類別strcpy(bookinfflag.pubplace,bookinfflag+1.pubplace); /將后一本書的出版單位復制給前一本書的出版單位bookinfflag.pubtime=bookinfflag+1.pubtime; /將后一本書的出版時間復制給前一本書的出版時間bookinfflag.price=bookinfflag+1.price; /將后一本書的價格復制給前一本書的價格bookinfflag.num=bookinfflag+1.num; /將后一本書的數(shù)量復制給前一本書的數(shù)量4修改部分if(strcmp(bookinfi.ISBN,nbook)=0) /如果輸入的書本nbook與文件中存儲的ISBN相同,則開始修改5.統(tǒng)計部分int tn,total=0,alprice=0;/初始化總數(shù)和總價格的值為0for(i=0;i=tn;i+)total=total+bookinfi.num;/運用遞歸,新的總數(shù)和為上一次的總數(shù)值加上這一次的值alprice=alprice+(bookinfi.num)*(bookinfi.price); /運用遞歸,新的總價錢和為上一次的總價錢值加上這一次的價錢 printf(圖書總冊書為%d 總金額數(shù)為%dn,total,alprice);/打印出圖書總冊書和總金額數(shù)6.菜單部分printf( 歡迎登錄圖書管系統(tǒng) n);printf(*n);printf(* 1.添加圖書 2.刪除圖書 *n);printf(* 3.修改圖書 4.查詢圖書 *n);printf(* 5.統(tǒng)計圖書 0.退出系統(tǒng) *n);printf(*n);7選擇部分switch(b) case 1:add();break; /選擇1時,執(zhí)行添加操作 case 2:del();break; /選擇2時,執(zhí)行刪除操作 case 3:modify();break; /選擇3時,執(zhí)行修改操作 case 4:search();break; /選擇4時,執(zhí)行查詢操作 case 5:count();break; /選擇5時,執(zhí)行統(tǒng)計操作 case 0:flag=1;break; /選擇0時,執(zhí)行退出操作 default:printf(您輸入的選擇錯誤!n); /否則,打印輸入錯誤四調(diào)試部分1.開始寫程序時,沒有運用文件保存函數(shù),導致輸入的書本信息不能被查看2程序刪除函數(shù)部分產(chǎn)生左值方面的錯誤,后運用strcmp( )解決3. 程序刪除函數(shù)部分,開始不論找到還是沒找到要刪除的書本,都會打印循環(huán)外的該書已刪除!,后運用i=n,解決了這個問題。五用戶手冊1.本程序執(zhí)行文件為“bookinf.txt”.2. 進入菜單部分,會出現(xiàn)一下選擇菜單 1.添加圖書 2.刪除圖書 3.修改圖書 4.查詢圖書 5.統(tǒng)計圖書 0.退出系統(tǒng) 并提示請輸入你的選擇!,用戶僅需選擇05運行該程序3.添加、修改圖書部分,其中ISBN、name、author、vari、pubplace、需輸入字符(即字母或數(shù)字),pubtime、price、num需輸入數(shù)字。4. 添加、修改圖書部分,輸入的信息不可超標,需遵循ISBN為20字節(jié),name、author為30字節(jié),vari為10字節(jié),pubplace為50字節(jié)。六、測試部分 歡迎登錄圖書管系統(tǒng) * 1.添加圖書 2.刪除圖書 * 3.修改圖書 4.查詢圖書 * 5.統(tǒng)計圖書 0.退出系統(tǒng) *請輸入你的選擇! 1 請輸入需要添加的書本書以及您要添加的書本數(shù)信息 1 ISBN:1 書名:1 作者:1 圖書類別:1 出版單位:1 出版時間:1 價錢:1 數(shù)量:1 歡迎登錄圖書管系統(tǒng) * 1.添加圖書 2.刪除圖書 * 3.修改圖書 4.查詢圖書 * 5.統(tǒng)計圖書 0.退出系統(tǒng) *請輸入你的選擇! 3 請輸入您要修改的書號 2 沒有找到要修改的書本歡迎登錄圖書管系統(tǒng) * 1.添加圖書 2.刪除圖書 * 3.修改圖書 4.查詢圖書 * 5.統(tǒng)計圖書 0.退出系統(tǒng) * 請輸入你的選擇! 3 請輸入您要修改的書號 1 ISBN:2 書名:2 作者:2 圖書類別:2 出版單位:2 出版時間:2 價錢:2 數(shù)量:2 修改成功!歡迎登錄圖書管系統(tǒng) * 1.添加圖書 2.刪除圖書 * 3.修改圖書 4.查詢圖書 * 5.統(tǒng)計圖書 0.退出系統(tǒng) * 請輸入您的選擇! 4 請輸入您要查找的書名 2 ISBN書名 作者名 圖書類別 出版單位 出版時間 價格 數(shù)量 2 2 2 2 2 2 2 2歡迎登錄圖書管系統(tǒng) * 1.添加圖書 2.刪除圖書 * 3.修改圖書 4.查詢圖書 * 5.統(tǒng)計圖書 0.退出系統(tǒng) * 請輸入您的選擇! 2 請輸入您要刪除的書本名 2 2 2 2 2 2 2 2 2 確定要刪除該書嗎?(y/n) y 該書已刪除!歡迎登錄圖書管系統(tǒng) * 1.添加圖書 2.刪除圖書 * 3.修改圖書 4.查詢圖書 * 5.統(tǒng)計圖書 0.退出系統(tǒng) * 請輸入您的選擇! 0 press any key to continue!七、附錄#includestdio.h#includestring.h#includestruct.h#includeconio.hstruct library bookinf30;int n;struct librarychar ISBN20;char name30;char author30;char vari10;char pubplace50;int pubtime;int price;int num;/結(jié)構(gòu)體部分void main()/主函數(shù)部分 int b,flag=0;while(1)/菜單部分printf( 歡迎登錄圖書管系統(tǒng) n);printf(*n);printf(* 1.添加圖書 2.刪除圖書 *n);printf(* 3.修改圖書 4.查詢圖書 *n);printf(* 5.統(tǒng)計圖書 0.退出系統(tǒng) *n);printf(*n);printf(請輸入你的選擇!n);scanf(%d,&b);switch(b) case 1:add();break;/選擇1,執(zhí)行添加操作 case 2:del();break; /選擇2,執(zhí)行刪除操作 case 3:modify();break; /選擇3,執(zhí)行修改操作 case 4:search();break; /選擇4,執(zhí)行查詢操作 case 5:count();break; /選擇5,執(zhí)行統(tǒng)計操作 case 0:flag=1;break; /選擇0,退出程序操作 default:printf(您輸入的選擇錯誤!n);/否則,打印該句void add() /*添加函數(shù)*/int i;char x;printf(n請輸入需要添加的書本書以及您要添加的書本數(shù)信息n);scanf(%d,&n);/輸入要添加的書本數(shù)for(i=0;in;i+)/用循環(huán)添加書本信息printf(ISBN:);scanf(%s,bookinfi.ISBN);printf(書名:);scanf(%s,);printf(作者:);scanf(%s,bookinfi.author);printf(圖書類別:);scanf(%s,bookinfi.vari);printf(出版單位:);scanf(%s,bookinfi.pubplace);printf(出版時間:);scanf(%d,&bookinfi.pubtime);printf(價錢:);scanf(%d,&bookinfi.price);printf(數(shù)量:);scanf(%d,&bookinfi.num);x=getch();/按任意鍵返回菜單save(); /*調(diào)用保存函數(shù)*/void del()/刪除函數(shù)int i=0,flag,t=0,tn=0;/tn為保存文件內(nèi)的書本數(shù)char a,bookname20;FILE *fp;if(fp=fopen(bookinf.txt,r)=NULL) /如果無法打開文件 printf(無法打開文件!n); return; printf(n請輸入您要刪除的書本名n);scanf(%s,bookname);rewind(fp); while(!feof(fp)/*沒有結(jié)束時進行循環(huán)*/ fread(&bookinftn,sizeof(struct library),1,fp);tn+; fclose(fp); for(i=0;itn;i+) if(strcmp(,bookname)=0)/如果輸入的書名與文件內(nèi)保存的書名相同printf(%s %s %s %s %s %d %d %dn,bookinfi.ISBN,,bookinfi.author,bookinfi.vari,bookinfi.pubplace,bookinfi.pubtime,bookinfi.price,bookinfi.num); getch(); flag=i;t=1; printf(確定要刪除該書嗎?(y/n) n); scanf(%s,&a);if(a = y) for(flag;flagtn;flag+) strcpy(bookinfflag.ISBN,bookinfflag+1.ISBN); /將后一本書的ISBN復制給前一本書的ISBN strcpy(,bookinfflag+1.name); /將后一本書的書名復制給前一本書的書名strcpy(bookinfflag.author,bookinfflag+1.author); /將后一本書的作者名復制給前一本書的作者名strcpy(bookinfflag.vari,bookinfflag+1.vari); /將后一本書的圖書類別復制給前一本書的圖書類別 strcpy(bookinfflag.pubplace,bookinfflag+1.pubplace); /將后一本書的出版單位復制給前一本書的出版單位bookinfflag.pubtime=bookinfflag+1.pubtime; /將后一本書的出版時間復制給前一本書的出版時間bookinfflag.price=bookinfflag+1.price; /將后一本書的價格復制給前一本書的價格bookinfflag.num=bookinfflag+1.num; /將后一本書的數(shù)量復制給前一本書的數(shù)量tn-;/刪除后書的數(shù)量減一 printf(n該書已刪除!n);break;getch();if(t!=1)/如果沒有找到要刪除的書printf(n沒有找到該書,退出操作n); save();void search()/查詢函數(shù)int i=0;FILE *fp;/文件打開struct library bookinf;char bookname20;if(fp=fopen(bookinf.txt,r)=NULL) printf(無法打開文件!n); return; printf(n請輸入您要查找的書名n);scanf(%s,bookname); while(!feof(fp) /循環(huán) 直到文件尾部,函數(shù)值為真 fread(&bookinf,sizeof(struct library),1,fp); /從fp中讀入1個長度為sizeof(struct library)的數(shù)據(jù),存到bookinf 中if(strcmp(,bookname)=0) /*比較輸入的書名和文件中保存的書名*/printf(ISBN 書名 作者名 圖書類別 出版單位 出版時間 價格 數(shù)量n);printf(%s %s %s %s %s %d %d %d n,bookinf.ISBN,,bookinf.author,bookinf.vari,bookinf.pubplace,bookinf.pubtime,bookinf.price,bookinf.num);i=1;break; if(i!=1)/如果沒有找到要查詢的書printf(沒有找到您要找的書本n);printf(n按任意鍵返回菜單n); getch();void modify()/修改函數(shù)int i=0,n=0;char nbook20;FILE *fp;/文件打開 char bookname20;printf(n請輸入您要修改的書號n);scanf(%s,nbook);if(fp=fopen(bookinf.txt,r+)=NULL) printf(無法打開文件!n); return; while(!feof(fp) /*沒有結(jié)束時進行循環(huán)*/ fread(&bookinfn,sizeof(struct library),1,fp);n+; for(i=0;in;i+) if(strcmp(bookinfi.ISBN,nbook)=0)/如果輸入的nbook與文件內(nèi)保存的ISBN相同printf(請輸入你要修改的信息n); printf(ISBN:); scanf(%s,bookinfi.ISBN); printf(書名:); scanf(%s,); printf(作者:); scanf(%s,bookinfi.author); printf(圖書類別:); scanf(%s,bookinfi.vari); printf(出版單位:); scanf(%s,bookinfi.pubplace); printf(出版時間:); scanf(%d,&bookinfi.pubtime); printf(價錢:); scanf(%d,&bookinfi.price); printf(數(shù)量:); scanf(%d,&bookinfi.num);printf(n修改成功!n);break;if(i=n)/如果沒找到要修改的書本printf(沒有找到要修改的書本n”);getch(); save();void count()/統(tǒng)計函數(shù)int total=0,alprice=0,i,tn=0;/先定義總數(shù)量 總價錢為0FILE *fp;/文件打開if(fp=fopen(bookinf.txt,r)=NULL) printf(無法打開文件!n); return; while(!feof(fp) fread(&bookinftn,sizeof(struct library),1,fp);tn+; fclose(fp);for(i=0;i=tn;i+)total=total+boo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025山東濱州市無棣縣中政土地產(chǎn)業(yè)集團有限公司及權(quán)屬公司招聘遞補備考筆試試題及答案解析
- 2026廣西桂林旅游學院專職輔導員招聘9人備考筆試試題及答案解析
- 2025中國信托業(yè)保障基金有限責任公司招聘模擬筆試試題及答案解析
- 2025年河南輕工職業(yè)學院招聘工作人員(博士)5名考試筆試備考題庫及答案解析
- 2026上半年廣東揭陽市引進基層醫(yī)療衛(wèi)生急需緊缺人才招聘350人參考考試試題及答案解析
- 2025重慶大學能源與動力工程學院勞務派遣實驗室秘書招聘1人備考考試題庫及答案解析
- 武漢某國企市場拓展專員招聘備考考試題庫及答案解析
- 2025保山市隆陽區(qū)蒲縹鎮(zhèn)中心衛(wèi)生院公開招聘見習人員、鄉(xiāng)村醫(yī)生(9人)參考考試試題及答案解析
- 2025中國農(nóng)業(yè)科學院飼料研究所家禽營養(yǎng)與飼料創(chuàng)新團隊科研助理招聘1人(北京)備考筆試題庫及答案解析
- 2025四川德陽市第十六中學校招聘臨聘人員11人參考考試試題及答案解析
- 2025年超星爾雅學習通《數(shù)據(jù)分析與統(tǒng)計》考試備考題庫及答案解析
- 2025紀檢監(jiān)察應知應會試題庫與參考答案
- 寶安區(qū)老虎坑垃圾焚燒發(fā)電廠三期工程環(huán)境影響評價報告
- 設備安裝用工合同范本
- 湖南省長沙市一中集團2025-2026學年七年級上學期11月期中聯(lián)考英語試題(含解析無聽力原文及音頻)
- 《西方經(jīng)濟學》-宏觀經(jīng)濟學下-含教學輔導和習題解答
- 國家安全 青春挺膺-新時代青年的使命與擔當
- 紫杉醇的課件
- DB50∕T 1633-2024 高標準農(nóng)田耕地質(zhì)量調(diào)查評價技術(shù)規(guī)范
- DB32T 5178-2025預拌砂漿技術(shù)規(guī)程
- 醫(yī)療風險防范知識培訓課件
評論
0/150
提交評論