版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄1. 課程設(shè)計(jì)名稱.12.課程設(shè)計(jì)目的.13課程設(shè)計(jì)流程圖.14.實(shí)驗(yàn)內(nèi)容.1(1) 新書(shū)注冊(cè)模塊.3(2)借書(shū)模塊.4(3)查閱圖書(shū).5(4)舊圖書(shū)的注銷:.6(5)歸還圖書(shū)模塊:.7(6)統(tǒng)計(jì)圖書(shū)85.程序源代碼:.86.心得體會(huì).137.參考文獻(xiàn).141.課程設(shè)計(jì)名稱:圖書(shū)管理系統(tǒng)2.課程設(shè)計(jì)目的(1)加深對(duì)文件系統(tǒng)概念的理解,明確文件系統(tǒng)等的運(yùn)用。(2)熟悉在Liunx環(huán)境下的簡(jiǎn)單程序編程。(3)以Linux系統(tǒng)文件部分系統(tǒng)調(diào)用為基礎(chǔ)設(shè)計(jì)一個(gè)簡(jiǎn)易的圖書(shū)管理系統(tǒng)。包括圖書(shū)的錄入、查詢、借閱、清理、統(tǒng)計(jì)等功能。3課程設(shè)計(jì)流程圖進(jìn)入圖書(shū)管理系統(tǒng)2借圖書(shū)1注冊(cè)新書(shū)6統(tǒng)計(jì)圖書(shū)5歸還圖書(shū)4注銷
2、舊書(shū)請(qǐng)執(zhí)行你要做的操作0退出3查閱圖書(shū)4.實(shí)驗(yàn)內(nèi)容以Linux系統(tǒng)文件部分系統(tǒng)調(diào)用為基礎(chǔ)設(shè)計(jì)一個(gè)的圖書(shū)管理系統(tǒng)。要求實(shí)現(xiàn):圖書(shū)的錄入、查詢、借閱、清理、統(tǒng)計(jì)等功能、還要實(shí)現(xiàn)對(duì)每天的借閱情況進(jìn)行統(tǒng)計(jì)。(1) 注冊(cè)新書(shū)模塊:在此方法book_add()中要充分運(yùn)用文件指針的運(yùn)用。通過(guò)定義FILE * fp;對(duì)文件進(jìn)行一系列的調(diào)整,在新書(shū)的注冊(cè)的時(shí)候不會(huì)出現(xiàn)指針的覆蓋,首先以隨機(jī)讀寫(xiě)的方式打開(kāi)文件,用來(lái)避免在打開(kāi)文件的指針都指向第一個(gè)位置的情況通過(guò)聲明圖書(shū)的有關(guān)屬性作為一個(gè)數(shù)據(jù)結(jié)構(gòu)struct BOOK。struct BOOK int id,usr10,total,store,days10; cha
3、r name31,author21; books100;/*以上是數(shù)據(jù)結(jié)構(gòu)*/void book_add() char a; FILE * fp; int n=0; int c; if(fp=fopen("bbb","ab+")=NULL) /* 讀寫(xiě)方式打開(kāi)或建立新文件*/ printf("cannot open filen"); return ; page_title("注冊(cè)新書(shū)");do printf("序號(hào):"); scanf("%d",&booksn.id)
4、; printf("書(shū)名:"); scanf("%s",&); printf("作者:"); scanf("%s",&booksn.author); printf("數(shù)量:"); scanf("%d",&booksn.total); booksn.store=booksn.total; n+; printf("繼續(xù)注冊(cè):1.是 2.否"); scanf("%d",&c);while(
5、c=1); if(fwrite(books,sizeof(struct BOOK),n, fp)!=n) printf(" file write error"); fclose(fp); do printf("結(jié)束? y/n"); scanf(" %c",&a); while(a!='y'); (2)借書(shū)模塊借閱圖書(shū)模塊book_out()是是通過(guò)定義是數(shù)據(jù)結(jié)構(gòu)在通過(guò)查找模塊找到該書(shū)時(shí)是通過(guò)書(shū)的圖書(shū)號(hào)進(jìn)行借閱。void book_out() char a; int n,s,l,d; page_title(&qu
6、ot;借閱圖書(shū)"); if(n=search_book()!=-1&&booksn.store>0) printf("請(qǐng)輸入借書(shū)證序號(hào):"); scanf("%d",&s); printf("請(qǐng)輸入可借天數(shù):"); scanf("%d",&d); for(l=0;l<10;l+) if(booksn.usrl=0) booksn.usrl=s; booksn.daysl=d; break; booksn.store-; out+; if(n!=-1&&a
7、mp;booksn.store=0) printf("此書(shū)已經(jīng)全部借出.n"); do printf("結(jié)束? y/n"); scanf(" %c",&a); while(a!='y'); /*上面是借書(shū)的函數(shù),首先調(diào)用找書(shū)函數(shù)*/(3)借閱圖書(shū)在查閱圖書(shū)的模塊中search_book()定義了文件bbb用與存儲(chǔ)圖書(shū)數(shù)據(jù),然后通過(guò)該數(shù)據(jù)結(jié)構(gòu)進(jìn)行圖書(shū)查詢int search_book() char a; /* 用以查看結(jié)果*/ int n=0,i=0; FILE * fp; if(fp=fopen("b
8、bb","r")=NULL) /* 讀方式打開(kāi)*/ printf("cannot open filen"); while(!feof(fp) /*把文件寫(xiě)入內(nèi)存,books要初始化 */ fread(&booksi,sizeof(struct BOOK),1, fp); i+; fclose(fp); printf("請(qǐng)輸入圖書(shū)序號(hào):"); scanf("%d",&i); for(n=0;n<100;n+) if(booksn.id=i) printf("書(shū)名:%sn&qu
9、ot;,); printf("作者:%sn",booksn.author); printf("存數(shù):%d n",booksn.store); printf("總數(shù):%d n",booksn.total); do printf("結(jié)束? y/n"); scanf(" %c",&a); while(a!='y'); return n; printf("n輸入錯(cuò)誤或無(wú)效圖書(shū)序號(hào).n"); do printf("結(jié)束? y/n&
10、quot;); scanf(" %c",&a); while(a!='y'); return -1; /*上面的函數(shù)是在數(shù)組中找到圖書(shū)號(hào)匹配的記錄,顯示其信息并返 回?cái)?shù)組下標(biāo),如果找不到相應(yīng)記錄則提示錯(cuò)誤并返回-1。*/(4)舊圖書(shū)的注銷:在book_del()通過(guò)書(shū)的書(shū)號(hào)在文件中進(jìn)行消除void book_del(void) char a; int n,i; page_title("注銷舊書(shū)"); if(n=search_book()!=-1) booksn.id=0; for(i=0;i<31;i+) booksn.na
11、mei=NULL; for(i=0;i<21;i+) booksn.authori=NULL; booksn.total=0; booksn.store=0; printf("該書(shū)已注銷.n"); do printf("結(jié)束? y/n"); scanf(" %c",&a); while(a!='y'); (5)歸還圖書(shū)模塊:圖書(shū)歸還模塊book_in是通過(guò)圖書(shū)的書(shū)號(hào)進(jìn)行的,在進(jìn)行歸還的同時(shí)要通過(guò)文件指針在進(jìn)行調(diào)整。void book_in(void) char a; int n,s,l; page_tit
12、le("歸還圖書(shū)"); if(n=search_book()!=-1&&booksn.store<booksn.total) printf("借閱者圖書(shū)證列表:n"); for(l=0;l<10;l+) if (booksn.usrl!=0) printf("%d - %d天",booksn.usrl,booksn.daysl); printf("請(qǐng)輸入借書(shū)證序號(hào):"); scanf("%d",&s); for(l=0;l<10;l+) if(books
13、n.usrl=s) booksn.usrl=0; booksn.daysl=0; break; booksn.store+; in-; if(n!=-1&&booksn.store=booksn.total) printf("全部入藏.n"); do printf("結(jié)束? y/n"); scanf(" %c",&a); while(a!='y'); (6)統(tǒng)計(jì)圖書(shū)void tongji() char a; printf("借出總數(shù)%dn",out ); printf(&qu
14、ot;歸還總數(shù)%dn",in); do printf("結(jié)束? y/n"); scanf(" %c",&a); while(a!='y');4.程序源代碼:/* 圖書(shū)管理系統(tǒng)*/#include <stdio.h>#include <stdlib.h>struct BOOK int id,usr10,total,store,days10; char name31,author21; books100;/*上面是結(jié)構(gòu)體的定義,用于存放書(shū)籍及借書(shū)的信息。*/int out=0,in=0; /*統(tǒng)計(jì)借出
15、和歸還*/ void page_title(char *menu_item) printf(">>> 圖 書(shū) 管 理 系 統(tǒng) <<<nn- %s nn",menu_item); /*上面是打印頁(yè)眉的函數(shù),同時(shí)通過(guò)參數(shù)menu_item,可以顯示當(dāng)前的狀態(tài)。*/int search_book() char a; /* 用以查看結(jié)果*/ int n=0,i=0; FILE * fp; if(fp=fopen("bbb","r")=NULL) /* 讀方式打開(kāi)*/ printf("cannot
16、open filen"); while(!feof(fp) /*把文件寫(xiě)入內(nèi)存,books要初始化 */ fread(&booksi,sizeof(struct BOOK),1, fp); i+; fclose(fp); printf("請(qǐng)輸入圖書(shū)序號(hào):"); scanf("%d",&i); for(n=0;n<100;n+) if(booksn.id=i) printf("書(shū)名:%sn",); printf("作者:%sn",booksn.author); p
17、rintf("存數(shù):%d n",booksn.store); printf("總數(shù):%d n",booksn.total); do printf("結(jié)束? y/n"); scanf(" %c",&a); while(a!='y'); return n; printf("n輸入錯(cuò)誤或無(wú)效圖書(shū)序號(hào).n"); do printf("結(jié)束? y/n"); scanf(" %c",&a); while(a!='y');
18、 return -1; /*上面的函數(shù)是在數(shù)組中找到圖書(shū)號(hào)匹配的記錄,顯示其信息并返 回?cái)?shù)組下標(biāo),如果找不到相應(yīng)記錄則提示錯(cuò)誤并返回-1。*/void book_out() char a; int n,s,l,d; page_title("借閱圖書(shū)"); if(n=search_book()!=-1&&booksn.store>0) printf("請(qǐng)輸入借書(shū)證序號(hào):"); scanf("%d",&s); printf("請(qǐng)輸入可借天數(shù):"); scanf("%d"
19、,&d); for(l=0;l<10;l+) if(booksn.usrl=0) booksn.usrl=s; booksn.daysl=d; break; booksn.store-; out+; if(n!=-1&&booksn.store=0) printf("此書(shū)已經(jīng)全部借出.n"); do printf("結(jié)束? y/n"); scanf(" %c",&a); while(a!='y'); /*上面是借書(shū)的函數(shù),首先調(diào)用找書(shū)函數(shù)*/void book_in(void) c
20、har a; int n,s,l; page_title("歸還圖書(shū)"); if(n=search_book()!=-1&&booksn.store<booksn.total) printf("借閱者圖書(shū)證列表:n"); for(l=0;l<10;l+) if (booksn.usrl!=0) printf("%d - %d天n",booksn.usrl,booksn.daysl); printf("請(qǐng)輸入借書(shū)證序號(hào):"); scanf("%d",&s); f
21、or(l=0;l<10;l+) if(booksn.usrl=s) booksn.usrl=0; booksn.daysl=0; break; booksn.store+; in-; if(n!=-1&&booksn.store=booksn.total) printf("全部入藏.n"); do printf("結(jié)束? y/n"); scanf(" %c",&a); while(a!='y'); void book_add() char a; FILE * fp; int n=0; in
22、t c; if(fp=fopen("bbb","ab+")=NULL) /* 讀寫(xiě)方式打開(kāi)或建立新文件*/ printf("cannot open filen"); return ; page_title("注冊(cè)新書(shū)");do printf("序號(hào):"); scanf("%d",&booksn.id); printf("書(shū)名:"); scanf("%s",&); printf("作者:&q
23、uot;); scanf("%s",&booksn.author); printf("數(shù)量:"); scanf("%d",&booksn.total); booksn.store=booksn.total; n+; printf("繼續(xù)注冊(cè):1.是 2.否"); scanf("%d",&c);while(c=1); if(fwrite(books,sizeof(struct BOOK),n, fp)!=n) printf(" file write error&q
24、uot;); fclose(fp); do printf("結(jié)束? y/n"); scanf(" %c",&a); while(a!='y'); void book_del(void) char a; int n,i; page_title("注銷舊書(shū)"); if(n=search_book()!=-1) booksn.id=0; for(i=0;i<31;i+) i=NULL; for(i=0;i<21;i+) booksn.authori=NULL; booksn.tota
25、l=0; booksn.store=0; printf("該書(shū)已注銷.n"); do printf("結(jié)束? y/n"); scanf(" %c",&a); while(a!='y'); void tongji() char a; printf("借出總數(shù)%dn",out ); printf("歸還總數(shù)%dn",in); do printf("結(jié)束? y/n"); scanf(" %c",&a); while(a!='
26、;y');void main(void) char c;int i,j;for(i=0;i<100;i+) for(j=0;j<30;j+) j=NULL; for(j=0;j<20;j+) booksi.authorj=NULL;menu: page_title("操作選單"); printf("請(qǐng)用數(shù)字鍵選擇操作nn"); printf("1 借閱圖書(shū)n2 歸還圖書(shū)nn"); printf("3 注冊(cè)新書(shū)n4 注銷舊書(shū)nn"); printf("5 統(tǒng)計(jì)n"); printf("6 圖書(shū)查詢n");printf("n0 退出n"); scanf("%c&quo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024中考語(yǔ)文作文押題預(yù)測(cè)《遇見(jiàn)》(范文4篇可打?。?/a>
- 8《夢(mèng)游天姥吟留別》《登高》聯(lián)讀公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)(表格式)統(tǒng)編版高中語(yǔ)文必修上冊(cè)
- 上海南湖職業(yè)技術(shù)學(xué)院《傳統(tǒng)圖形》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海民航職業(yè)技術(shù)學(xué)院《原理與應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東省濟(jì)南市六年級(jí)道德與法治下冊(cè) 第五單元 珍愛(ài)生命 熱愛(ài)生活 第10課 精彩生活每一天 第1框《生命的價(jià)值在哪里》教學(xué)實(shí)錄 魯人版五四制
- 上??苿?chuàng)職業(yè)技術(shù)學(xué)院《材料力學(xué)Ⅲ》2023-2024學(xué)年第一學(xué)期期末試卷
- 校園垃圾桶分布調(diào)查
- 上海海事大學(xué)《景觀設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海海關(guān)學(xué)院《短距離無(wú)線通信技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 單位人事管理制度展示合集
- 2024中國(guó)銀行借款合同范本
- 2024-2025學(xué)年九年級(jí)上學(xué)期歷史期末模擬試卷(統(tǒng)編版+含答案解析)
- 新能源汽車充電樁安裝維護(hù)合同
- 2023上半年四川公務(wù)員考試申論試題(省市卷)
- 《工貿(mào)企業(yè)有限空間作業(yè)安全規(guī)定》知識(shí)培訓(xùn)
- 可用性人因設(shè)計(jì)研究報(bào)告
- 文學(xué)與倫理學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2025屆天一大聯(lián)考海南省高二上數(shù)學(xué)期末復(fù)習(xí)檢測(cè)試題含解析
- 阜陽(yáng)師范大學(xué)《語(yǔ)文教學(xué)論》2022-2023學(xué)年第一學(xué)期期末試卷
- DB34T 4912-2024二手新能源汽車鑒定評(píng)估規(guī)范
- 空調(diào)維保服務(wù)投標(biāo)方案 (技術(shù)方案)
評(píng)論
0/150
提交評(píng)論