![C語言圖書館管理系統(tǒng)課程設(shè)計(jì).doc_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/4/cf5e69a9-d1af-4283-a52d-1368f626ff1c/cf5e69a9-d1af-4283-a52d-1368f626ff1c1.gif)
![C語言圖書館管理系統(tǒng)課程設(shè)計(jì).doc_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/4/cf5e69a9-d1af-4283-a52d-1368f626ff1c/cf5e69a9-d1af-4283-a52d-1368f626ff1c2.gif)
![C語言圖書館管理系統(tǒng)課程設(shè)計(jì).doc_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/4/cf5e69a9-d1af-4283-a52d-1368f626ff1c/cf5e69a9-d1af-4283-a52d-1368f626ff1c3.gif)
![C語言圖書館管理系統(tǒng)課程設(shè)計(jì).doc_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/4/cf5e69a9-d1af-4283-a52d-1368f626ff1c/cf5e69a9-d1af-4283-a52d-1368f626ff1c4.gif)
![C語言圖書館管理系統(tǒng)課程設(shè)計(jì).doc_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-3/4/cf5e69a9-d1af-4283-a52d-1368f626ff1c/cf5e69a9-d1af-4283-a52d-1368f626ff1c5.gif)
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
目錄一、需求分析2二、概要設(shè)計(jì)2三、詳細(xì)設(shè)計(jì)4四、調(diào)試分析6五、用戶手冊(cè)6六、測(cè)試數(shù)據(jù)6七、附錄8一、需求分析1. 程序以菜單的方式工作,具備圖書的添加、刪除、修改、查詢、統(tǒng)計(jì)操作,數(shù)據(jù)存儲(chǔ)采用文件形式。2.定義結(jié)構(gòu)體數(shù)組struct library bookinf30,用以存儲(chǔ)ISBN、書名、作者名、圖書類別、出版單位、出版時(shí)間、價(jià)錢、數(shù)量信息。利用文件開辟并將信息保存在“bookinf.txt”中。3.用戶從鍵盤輸入需要的操作,其中“ISBN、書名、作者名、圖書類別、出版單位”需使用字符輸入,“出版時(shí)間、價(jià)格、數(shù)量”采用數(shù)字輸入。4.測(cè)試數(shù)據(jù):(1)查找:若找到了所要查找的書本,則打印出書本信息;若沒有找到,則打印“沒有找到您要找的書本”(2)刪除:若找到了所要查找的書本,按下y確認(rèn)刪除后,打印出“該書已刪除”;若沒有找到要?jiǎng)h除的書本,則打印“沒有找到該書,退出操作”(3)修改:若找到了要修改的書本,打印“請(qǐng)輸入你要修改的信息”并開始修改;若沒有找到要修改的書本,則打印“沒有找到要修改的書本”5.程序執(zhí)行命令為:(1)創(chuàng)建“bookinf.txt”文件(2)將圖書信息用添加操作加進(jìn)“bookinf.txt”文件中(3)用戶選擇所需操作(4)搜索結(jié)果二、概要設(shè)計(jì)1.定義結(jié)構(gòu)體數(shù)組struct library bookinf50。bookinfi.ISBN / ISBN /書名bookinfi.author / 作者名bookinfi.vari / 圖書類別bookinfi.pubplace /出版單位bookinfi.pubtime / 出版時(shí)間bookinfi.price /價(jià)格bookinfi.num / 數(shù)量/* 用以下程序開辟存儲(chǔ)文件bookinf.txt */FILE *fp; if(fp=fopen(bookinf.txt,r+)=NULL) printf(無法打開文件!n); return; 2.程序構(gòu)造add ()通過此函數(shù)將輸入的書本信息添加存儲(chǔ)進(jìn)bookinf.txt文件中,用于下一次的查詢或刪、改、統(tǒng)操作的調(diào)用。del()通過此函數(shù)完成對(duì)bookinf.txt文件中書本信息的刪除,“printf(確定要?jiǎng)h除該書嗎?(y/n) n);”鍵盤輸入y/n確定書本信息的刪除,刪除后將不再有該書記錄modify()通過此函數(shù)完成對(duì)書本信息的修改,修改內(nèi)容包括:ISBN、書名、作者名、圖書類別、出版單位、出版時(shí)間、價(jià)格、數(shù)量。search()此函數(shù)為查詢書本信息操作,可查詢bookinf.txt文件中存儲(chǔ)的書本信息。count()此操作為統(tǒng)計(jì)操作,用于統(tǒng)計(jì)bookinf.txt文件中存儲(chǔ)書本的總數(shù)量及金額數(shù)。main()通過對(duì)上述函數(shù)的調(diào)用,將所得信息打印出來3.主程序流程主函數(shù) 增加模塊刪除模塊修改模塊查詢模塊統(tǒng)計(jì)模塊三、詳細(xì)設(shè)計(jì)1.圖書館管理的數(shù)據(jù)類型struct librarychar ISBN20; /ISBNchar name30; /書名char author30; /作者名char vari10; /圖書類別char pubplace50; /出版單位int pubtime; /出版時(shí)間int price; /價(jià)格int num; /數(shù)量;/-基本操作的算法描述-1.文件部分FILE *fp; if(fp=fopen(bookinf.txt,r+)=NULL) /檢查打開的操作是否出錯(cuò)printf(無法打開文件!n); /若出錯(cuò)則打印該行文字return; 2.查詢操作部分printf(n請(qǐng)輸入您要查找的書名n);scanf(%s,bookname); /輸入想查詢的書名 while(!feof(fp) /循環(huán) 直到文件尾部,函數(shù)值為真 fread(&bookinf,sizeof(struct library),1,fp); /從fp中讀入1個(gè)長度為sizeof(struct library)的數(shù)據(jù),存到bookinf 中if(strcmp(,bookname)=0) /比較輸入的書名和文件中保存的書名,若相同printf(ISBN 書名 作者名 圖書類別 出版單位 出版時(shí)間 價(jià)格 數(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復(fù)制給前一本書的ISBN strcpy(,bookinfflag+1.name); /將后一本書的書名復(fù)制給前一本書的書名strcpy(bookinfflag.author,bookinfflag+1.author); /將后一本書的作者名復(fù)制給前一本書的作者名strcpy(bookinfflag.vari,bookinfflag+1.vari); /將后一本書的圖書種類復(fù)制給前一本書的圖書類別strcpy(bookinfflag.pubplace,bookinfflag+1.pubplace); /將后一本書的出版單位復(fù)制給前一本書的出版單位bookinfflag.pubtime=bookinfflag+1.pubtime; /將后一本書的出版時(shí)間復(fù)制給前一本書的出版時(shí)間bookinfflag.price=bookinfflag+1.price; /將后一本書的價(jià)格復(fù)制給前一本書的價(jià)格bookinfflag.num=bookinfflag+1.num; /將后一本書的數(shù)量復(fù)制給前一本書的數(shù)量4修改部分if(strcmp(bookinfi.ISBN,nbook)=0) /如果輸入的書本nbook與文件中存儲(chǔ)的ISBN相同,則開始修改5.統(tǒng)計(jì)部分int tn,total=0,alprice=0;/初始化總數(shù)和總價(jià)格的值為0for(i=0;i=tn;i+)total=total+bookinfi.num;/運(yùn)用遞歸,新的總數(shù)和為上一次的總數(shù)值加上這一次的值alprice=alprice+(bookinfi.num)*(bookinfi.price); /運(yùn)用遞歸,新的總價(jià)錢和為上一次的總價(jià)錢值加上這一次的價(jià)錢 printf(圖書總冊(cè)書為%d 總金額數(shù)為%dn,total,alprice);/打印出圖書總冊(cè)書和總金額數(shù)6.菜單部分printf( 歡迎登錄圖書管系統(tǒng) n);printf(*n);printf(* 1.添加圖書 2.刪除圖書 *n);printf(* 3.修改圖書 4.查詢圖書 *n);printf(* 5.統(tǒng)計(jì)圖書 0.退出系統(tǒng) *n);printf(*n);7選擇部分switch(b) case 1:add();break; /選擇1時(shí),執(zhí)行添加操作 case 2:del();break; /選擇2時(shí),執(zhí)行刪除操作 case 3:modify();break; /選擇3時(shí),執(zhí)行修改操作 case 4:search();break; /選擇4時(shí),執(zhí)行查詢操作 case 5:count();break; /選擇5時(shí),執(zhí)行統(tǒng)計(jì)操作 case 0:flag=1;break; /選擇0時(shí),執(zhí)行退出操作 default:printf(您輸入的選擇錯(cuò)誤!n); /否則,打印輸入錯(cuò)誤四調(diào)試部分1.開始寫程序時(shí),沒有運(yùn)用文件保存函數(shù),導(dǎo)致輸入的書本信息不能被查看2程序刪除函數(shù)部分產(chǎn)生左值方面的錯(cuò)誤,后運(yùn)用strcmp( )解決3. 程序刪除函數(shù)部分,開始不論找到還是沒找到要?jiǎng)h除的書本,都會(huì)打印循環(huán)外的該書已刪除!,后運(yùn)用i=n,解決了這個(gè)問題。五用戶手冊(cè)1.本程序執(zhí)行文件為“bookinf.txt”.2. 進(jìn)入菜單部分,會(huì)出現(xiàn)一下選擇菜單 1.添加圖書 2.刪除圖書 3.修改圖書 4.查詢圖書 5.統(tǒng)計(jì)圖書 0.退出系統(tǒng) 并提示請(qǐng)輸入你的選擇!,用戶僅需選擇05運(yùn)行該程序3.添加、修改圖書部分,其中ISBN、name、author、vari、pubplace、需輸入字符(即字母或數(shù)字),pubtime、price、num需輸入數(shù)字。4. 添加、修改圖書部分,輸入的信息不可超標(biāo),需遵循ISBN為20字節(jié),name、author為30字節(jié),vari為10字節(jié),pubplace為50字節(jié)。六、測(cè)試部分 歡迎登錄圖書管系統(tǒng) * 1.添加圖書 2.刪除圖書 * 3.修改圖書 4.查詢圖書 * 5.統(tǒng)計(jì)圖書 0.退出系統(tǒng) *請(qǐng)輸入你的選擇! 1 請(qǐng)輸入需要添加的書本書以及您要添加的書本數(shù)信息 1 ISBN:1 書名:1 作者:1 圖書類別:1 出版單位:1 出版時(shí)間:1 價(jià)錢:1 數(shù)量:1 歡迎登錄圖書管系統(tǒng) * 1.添加圖書 2.刪除圖書 * 3.修改圖書 4.查詢圖書 * 5.統(tǒng)計(jì)圖書 0.退出系統(tǒng) *請(qǐng)輸入你的選擇! 3 請(qǐng)輸入您要修改的書號(hào) 2 沒有找到要修改的書本歡迎登錄圖書管系統(tǒng) * 1.添加圖書 2.刪除圖書 * 3.修改圖書 4.查詢圖書 * 5.統(tǒng)計(jì)圖書 0.退出系統(tǒng) * 請(qǐng)輸入你的選擇! 3 請(qǐng)輸入您要修改的書號(hào) 1 ISBN:2 書名:2 作者:2 圖書類別:2 出版單位:2 出版時(shí)間:2 價(jià)錢:2 數(shù)量:2 修改成功!歡迎登錄圖書管系統(tǒng) * 1.添加圖書 2.刪除圖書 * 3.修改圖書 4.查詢圖書 * 5.統(tǒng)計(jì)圖書 0.退出系統(tǒng) * 請(qǐng)輸入您的選擇! 4 請(qǐng)輸入您要查找的書名 2 ISBN書名 作者名 圖書類別 出版單位 出版時(shí)間 價(jià)格 數(shù)量 2 2 2 2 2 2 2 2歡迎登錄圖書管系統(tǒng) * 1.添加圖書 2.刪除圖書 * 3.修改圖書 4.查詢圖書 * 5.統(tǒng)計(jì)圖書 0.退出系統(tǒng) * 請(qǐng)輸入您的選擇! 2 請(qǐng)輸入您要?jiǎng)h除的書本名 2 2 2 2 2 2 2 2 2 確定要?jiǎng)h除該書嗎?(y/n) y 該書已刪除!歡迎登錄圖書管系統(tǒng) * 1.添加圖書 2.刪除圖書 * 3.修改圖書 4.查詢圖書 * 5.統(tǒng)計(jì)圖書 0.退出系統(tǒng) * 請(qǐ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)計(jì)圖書 0.退出系統(tǒng) *n);printf(*n);printf(請(qǐng)輸入你的選擇!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)計(jì)操作 case 0:flag=1;break; /選擇0,退出程序操作 default:printf(您輸入的選擇錯(cuò)誤!n);/否則,打印該句void add() /*添加函數(shù)*/int i;char x;printf(n請(qǐng)輸入需要添加的書本書以及您要添加的書本數(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(出版時(shí)間:);scanf(%d,&bookinfi.pubtime);printf(價(jià)錢:);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請(qǐng)輸入您要?jiǎng)h除的書本名n);scanf(%s,bookname);rewind(fp); while(!feof(fp)/*沒有結(jié)束時(shí)進(jìn)行循環(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(確定要?jiǎng)h除該書嗎?(y/n) n); scanf(%s,&a);if(a = y) for(flag;flagtn;flag+) strcpy(bookinfflag.ISBN,bookinfflag+1.ISBN); /將后一本書的ISBN復(fù)制給前一本書的ISBN strcpy(,bookinfflag+1.name); /將后一本書的書名復(fù)制給前一本書的書名strcpy(bookinfflag.author,bookinfflag+1.author); /將后一本書的作者名復(fù)制給前一本書的作者名strcpy(bookinfflag.vari,bookinfflag+1.vari); /將后一本書的圖書類別復(fù)制給前一本書的圖書類別 strcpy(bookinfflag.pubplace,bookinfflag+1.pubplace); /將后一本書的出版單位復(fù)制給前一本書的出版單位bookinfflag.pubtime=bookinfflag+1.pubtime; /將后一本書的出版時(shí)間復(fù)制給前一本書的出版時(shí)間bookinfflag.price=bookinfflag+1.price; /將后一本書的價(jià)格復(fù)制給前一本書的價(jià)格bookinfflag.num=bookinfflag+1.num; /將后一本書的數(shù)量復(fù)制給前一本書的數(shù)量tn-;/刪除后書的數(shù)量減一 printf(n該書已刪除!n);break;getch();if(t!=1)/如果沒有找到要?jiǎng)h除的書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請(qǐng)輸入您要查找的書名n);scanf(%s,bookname); while(!feof(fp) /循環(huán) 直到文件尾部,函數(shù)值為真 fread(&bookinf,sizeof(struct library),1,fp); /從fp中讀入1個(gè)長度為sizeof(struct library)的數(shù)據(jù),存到bookinf 中if(strcmp(,bookname)=0) /*比較輸入的書名和文件中保存的書名*/printf(ISBN 書名 作者名 圖書類別 出版單位 出版時(shí)間 價(jià)格 數(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請(qǐng)輸入您要修改的書號(hào)n);scanf(%s,nbook);if(fp=fopen(bookinf.txt,r+)=NULL) printf(無法打開文件!n); return; while(!feof(fp) /*沒有結(jié)束時(shí)進(jìn)行循環(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(請(qǐng)輸入你要修改的信息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(出版時(shí)間:); scanf(%d,&bookinfi.pubtime); printf(價(jià)錢:); 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)計(jì)函數(shù)int total=0,alprice=0,i,tn=0;/先定義總數(shù)量 總價(jià)錢為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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代科技在學(xué)生心理健康教育中的應(yīng)用前景
- 科技教育與家庭教育的融合策略
- 拆除工程專項(xiàng)施工方案和技術(shù)措施
- 個(gè)人與單位借款合同模板大全
- 專業(yè)拳擊教練聘任合同
- 產(chǎn)學(xué)研合作協(xié)議合同新
- 個(gè)人雇傭合同樣本
- 個(gè)人購房抵押借款合同范本
- 個(gè)人車輛投資共享合同2025
- 一圖讀懂國家生源地助學(xué)貸款合同申請(qǐng)步驟
- 2023年小升初簡歷下載
- 廣府文化的奇葩
- 公路工程標(biāo)準(zhǔn)施工招標(biāo)文件(2018年版)解析
- 煉鋼廠增效降本攻關(guān)方案
- 七年級(jí)地理下冊(cè)期末試卷(人教版)
- 第八節(jié) 元代散曲
- 《自動(dòng)化專業(yè)導(dǎo)論》課程教學(xué)大綱
- 三年級(jí)上語文開學(xué)第一課
- 消防設(shè)施維護(hù)與日常檢查培訓(xùn)講義
- 良性陣發(fā)性位置性眩暈完整版本課件
- 典當(dāng)業(yè)務(wù)計(jì)劃方案
評(píng)論
0/150
提交評(píng)論