![操作系統(tǒng)課程設(shè)計-圖書管理系統(tǒng)_第1頁](http://file4.renrendoc.com/view14/M07/0D/35/wKhkGWb3Vk-ABngVAAB9UmskI9o178.jpg)
![操作系統(tǒng)課程設(shè)計-圖書管理系統(tǒng)_第2頁](http://file4.renrendoc.com/view14/M07/0D/35/wKhkGWb3Vk-ABngVAAB9UmskI9o1782.jpg)
![操作系統(tǒng)課程設(shè)計-圖書管理系統(tǒng)_第3頁](http://file4.renrendoc.com/view14/M07/0D/35/wKhkGWb3Vk-ABngVAAB9UmskI9o1783.jpg)
![操作系統(tǒng)課程設(shè)計-圖書管理系統(tǒng)_第4頁](http://file4.renrendoc.com/view14/M07/0D/35/wKhkGWb3Vk-ABngVAAB9UmskI9o1784.jpg)
![操作系統(tǒng)課程設(shè)計-圖書管理系統(tǒng)_第5頁](http://file4.renrendoc.com/view14/M07/0D/35/wKhkGWb3Vk-ABngVAAB9UmskI9o1785.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGEPAGE5《操作系統(tǒng)》課程設(shè)計說明書設(shè)計題目:圖書管理系統(tǒng)專業(yè):指導(dǎo)教師:班級:學(xué)號:姓名:同組人:計算機科學(xué)與工程系前言圖書管理系統(tǒng)是一個學(xué)校不可缺少的部分,它的內(nèi)容對于學(xué)校的管理者和讀者來說都至關(guān)重要,直接關(guān)系到圖書的借用率,所以圖書管理系統(tǒng)應(yīng)該能夠為管理員和讀者提供充足的信息和快捷的查詢手段?,F(xiàn)在我國的絕大多數(shù)農(nóng)村中小學(xué)校中圖書管理水平還停留在紙介質(zhì)的基礎(chǔ)上,這樣的機制已經(jīng)不能適應(yīng)時代的發(fā)展,因為這種管理方式存在著許多缺點,如:效率低下、保密性差,另外時間一長,將產(chǎn)生大量的文件和數(shù)據(jù),這對于數(shù)據(jù)的查找、更新和維護都帶來了不少的困難,并且浪費了許多人力和物力。隨著科學(xué)技術(shù)的不斷提高,計算機科學(xué)日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領(lǐng)域并發(fā)揮著越來越重要的作用。在信息時代這種傳統(tǒng)的圖書管理方式必然被計算機為基礎(chǔ)的信息管理系統(tǒng)所取代。因為作為計算機應(yīng)用的一部分,使用計算機對圖書信息進行管理,具有著手工管理所無法比擬的優(yōu)點.例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高圖書管理的效率。雖然現(xiàn)在計算機的發(fā)展越來越迅速,但是仍然有很多人熱愛書本的質(zhì)感。但是由于大量圖書的收入借出給圖書管理人員帶來的沉重的負擔(dān)。只有把圖書管理系統(tǒng)的軟件編制的更好,更方便,才能進一步減輕管理人員和讀者的負擔(dān)。為了進一步加強我們所學(xué)習(xí)的操作系統(tǒng)的知識,本次課程設(shè)計我們小組進行圖書管理系統(tǒng)的編寫。首先介紹的是整體程序設(shè)計的組成框圖、流程圖、類圖等。接下來詳細的介紹了各模塊的具體功能。最后是經(jīng)過調(diào)試后的結(jié)果輸出方法和解決措施。報告的后面附有本程序設(shè)計的源程序代碼,同時還有相應(yīng)的注釋。本程序代碼在編寫過程中,得到了很多同學(xué)的的大力支持與幫助。此外,本組成員在整個課程設(shè)計的過程中都付出了一定的努力,學(xué)到了很多知識。為了能夠使本程序在規(guī)定的時間內(nèi)如約完成,每位小組成員都花費了大量的時間和精力,在此想幫助過我們的同學(xué)們表示衷心的感謝。本程序代碼雖然經(jīng)過多次反復(fù)修改,突出了圖書管理系統(tǒng)的一些主要功能。以操作系統(tǒng)為基本概念編寫的代碼反映了當(dāng)代操作系統(tǒng)的新技術(shù)。但是由于編者也就是我們的水平有限,沒辦法更好的結(jié)合現(xiàn)在流行技術(shù)開發(fā)出功能強大的軟件。在本次編寫的代碼中,仍難免會有錯誤和不當(dāng)之處,懇請大家批評指正。同時希望本程序能夠給大家減輕負擔(dān)并能讓大家學(xué)習(xí)到更多的知識。
目錄Ⅰ·設(shè)計題目 4Ⅱ·系統(tǒng)環(huán)境 42.1硬件環(huán)境 42.2軟件環(huán)境 4Ⅲ·設(shè)計目的 4Ⅳ·總體設(shè)計 4Ⅴ·流程圖 5Ⅵ·詳細設(shè)計 8Ⅶ·源程序代碼 8Ⅷ·調(diào)試與測試 14Ⅸ·設(shè)計中遇到的問題及解決方案 14Ⅹ·心得體會 14參考文獻 14Ⅰ·設(shè)計題目以UNIX系統(tǒng)文件部分系統(tǒng)調(diào)用為基礎(chǔ)設(shè)計一個簡易的圖書管理系統(tǒng)。Ⅱ·系統(tǒng)環(huán)境2.1硬件環(huán)境CPU為pentium4雙線程技術(shù),頻率為2.8GHZ,內(nèi)存為512MB。2.2軟件環(huán)境使用操作系統(tǒng)環(huán)境是RedHatLinux9,言語開發(fā)環(huán)境是Linux的 GNUC或C++。Ⅲ·設(shè)計目的能夠在一個友好的界面上實現(xiàn)基本的圖書管理功能,要求實現(xiàn):圖書的錄入、查詢、借閱、清理、統(tǒng)計等功能、還要實現(xiàn)對每天的借閱情況進行統(tǒng)計,操作界面要盡量完善。Ⅳ·總體設(shè)計在主函數(shù)中采用一個分支語句,從而實現(xiàn)其不同的功能操作。在每一種對應(yīng)的功能中,分別設(shè)計相對應(yīng)的函數(shù)。同時在每個函數(shù)內(nèi)部,實現(xiàn)從其他函數(shù)的調(diào)用。如設(shè)計一個借書部分,那么我們就必須首先完成目的圖書的搜索,然后將該圖書對應(yīng)的信息做出相關(guān)的修改后,從而完成該操作。對于圖書,我們定義一個結(jié)構(gòu)體變量來存放其相關(guān)信息,并且每次的操作都是對于這個結(jié)構(gòu)體的操作,以此來保證其完整性和準(zhǔn)確性。Ⅴ·流程圖主函數(shù)的結(jié)構(gòu)圖如下:主函數(shù)main()主函數(shù)main()圖書添加圖書的刪除圖書的借閱圖書的歸還圖書的統(tǒng)計圖書的查詢Switch(c)輸入選擇項圖書選擇函數(shù)search_book()初始化一個關(guān)于結(jié)構(gòu)體books的數(shù)組初始化一個關(guān)于結(jié)構(gòu)體books的數(shù)組Returnn輸入目標(biāo)圖書的idIf(books[n].id=id將圖書信息填入該數(shù)組books[]For(i=1;I<n;i++)圖書借閱函數(shù)book_out()輸入目標(biāo)圖書id輸入目標(biāo)圖書idBooks_search()提示借書成功將數(shù)據(jù)寫回books[]還書操作與該操作的步驟一樣,區(qū)別在于不同操作時將該書數(shù)量的增減變化。將該數(shù)量的變化信息隨著書本的相應(yīng)操作而進行操作可以降低程序的復(fù)雜程度。圖書的注冊books_add():在books[]中申請一個空間在books[]中申請一個空間輸入添加圖書的id等信息將信息添加至books[]中圖書注冊成功圖書的刪除books_del():輸入目標(biāo)圖書的id輸入目標(biāo)圖書的id調(diào)用books_search()將目標(biāo)圖書在結(jié)構(gòu)體中的變量修改為空寫回數(shù)組books[]并顯示成功圖書的日借出量我們通過定義一個結(jié)構(gòu)體的變量并將其同時儲存在數(shù)組中,讓其隨著圖書的操作而做出對應(yīng)的修改,在圖書的借閱和歸還部分已經(jīng)有所提及,在需要查詢時,我們直接使其顯示即可。Ⅵ·詳細設(shè)計結(jié)構(gòu)體的定義首先我們需要定一個結(jié)構(gòu)體變量,使用這個結(jié)構(gòu)體變量來儲存每本書所對應(yīng)的基本信息,從而保證了在以后的調(diào)用時對各個子項的調(diào)用,進而降低程序的開支。同時為了便于統(tǒng)計,我們將每種書的數(shù)量和庫存量也一并定義于之中,定義的方式如下:structBOOK{intid,usr[10],total,store,days[10];charname[31],author[21];}同時為了檢索圖書借閱的數(shù)量和歸還數(shù)量,我們定義了兩個整形常量,out和in來統(tǒng)計圖書的借閱量。程序中的檢索查詢過程通過使用for和if語句實現(xiàn)檢索。使用方法如下:printf("請輸入圖書序號:");scanf("%d",&i);for(n=0;n<100;n++){if(books[n].id==i){……}圖書借閱以及查詢等操作時對查詢方法的調(diào)用:通過直接調(diào)用search_book()方法,判斷其返回值,來執(zhí)行下步操作。使用如下:if((n=search_book())!=-1){……}主函數(shù)中的選擇語句的控制在主函數(shù)中我們需要通過一個switch選擇語句實現(xiàn)各個功能的實現(xiàn),因此我們通過用戶的選擇輸入來確定定義:scanf("%c",&c);switch(c){……}Ⅶ·源程序代碼/*圖書管理系統(tǒng)*/#include<stdio.h>#include<stdlib.h>structBOOK{intid,usr[10],total,store,days[10];charname[31],author[21];}books[100];/*上面是結(jié)構(gòu)體的定義,用于存放書籍及借書的信息。*/intout=0,in=0;/*統(tǒng)計借出和歸還*/voidpage_title(char*menu_item){printf(">>>圖書管理系統(tǒng)<<<\n\n-%s\n\n",menu_item);}/*上面是打印頁眉的函數(shù),同時通過參數(shù)menu_item,可以顯示當(dāng)前的狀態(tài)。*/intsearch_book(){chara;/*用以查看結(jié)果*/intn=0,i=0;FILE*fp;if((fp=fopen("bbb","r"))==NULL)/*讀方式打開*/{printf("cannotopenfile\n");}while(!feof(fp))/*把文件寫入內(nèi)存,books[]要初始化*/{fread(&books[i],sizeof(structBOOK),1,fp);i++;}fclose(fp);printf("請輸入圖書序號:");scanf("%d",&i);for(n=0;n<100;n++){if(books[n].id==i){printf("書名:%s\n",books[n].name);printf("作者:%s\n",books[n].author);printf("存數(shù):%d\n",books[n].store);printf("總數(shù):%d\n",books[n].total);do{printf("結(jié)束??y/n");scanf("%c",&a);}while(a!='y');returnn;}}printf("\n輸入錯誤或無效圖書序號.\n");do{printf("結(jié)束??y/n");scanf("%c",&a);}while(a!='y');return-1;}/*上面的函數(shù)是在數(shù)組中找到圖書號匹配的記錄,顯示其信息并返回數(shù)組下標(biāo),如果找不到相應(yīng)記錄則提示錯誤并返回-1。*/voidbook_out(){chara;intn,s,l,d;page_title("借閱圖書");if((n=search_book())!=-1&&books[n].store>0){printf("請輸入借書證序號:");scanf("%d",&s);printf("請輸入可借天數(shù):");scanf("%d",&d);for(l=0;l<10;l++){if(books[n].usr[l]==0){books[n].usr[l]=s;books[n].days[l]=d;break;}}books[n].store--;out++;}if(n!=-1&&books[n].store==0)printf("此書已經(jīng)全部借出.\n");do{printf("結(jié)束??y/n");scanf("%c",&a);}while(a!='y');}/*上面是借書的函數(shù),首先調(diào)用找書函數(shù)*/voidbook_in(void){chara;intn,s,l;page_title("歸還圖書");if((n=search_book())!=-1&&books[n].store<books[n].total){printf("借閱者圖書證列表:\n");for(l=0;l<10;l++)if(books[n].usr[l]!=0)printf("[%d]--%d天n",books[n].usr[l],books[n].days[l]);printf("請輸入借書證序號:");scanf("%d",&s);for(l=0;l<10;l++){if(books[n].usr[l]==s){books[n].usr[l]=0;books[n].days[l]=0;break;}}books[n].store++;in--;}if(n!=-1&&books[n].store==books[n].total)printf("全部入藏.\n");do{printf("結(jié)束??y/n");scanf("%c",&a);}while(a!='y');}voidbook_add(){chara;FILE*fp;intn=0;intc;if((fp=fopen("bbb","ab+"))==NULL)/*讀寫方式打開或建立新文件*/{printf("cannotopenfile\n");return;}page_title("注冊新書");do{printf("序號:");scanf("%d",&books[n].id);printf("書名:");scanf("%s",&books[n].name);printf("作者:");scanf("%s",&books[n].author);printf("數(shù)量:");scanf("%d",&books[n].total);books[n].store=books[n].total;n++;printf("繼續(xù)注冊:1.是2.否");scanf("%d",&c);}while(c==1);if(fwrite(books,sizeof(structBOOK),n,fp)!=n)printf("filewriteerror");fclose(fp);do{printf("結(jié)束??y/n");scanf("%c",&a);}while(a!='y');}voidbook_del(void){chara;intn,i;FILE*fp;page_title("注銷舊書");if((n=search_book())!=-1){/*fp=fopen(books[n],"rb+");*/books[n].id=0;for(i=0;i<31;i++)books[n].name[i]=NULL;for(i=0;i<21;i++)books[n].author[i]=NULL;books[n].total=0;books[n].store=0;fwrite(books,sizeof(structBOOK),n,fp);}printf("該書已注銷.\n");do{printf("結(jié)束??y/n");scanf("%c",&a);}while(a!='y');}voidtongji(){chara;printf("借出總數(shù)%d\n",out);printf("歸還總數(shù)%d\n",in);do{printf("結(jié)束??y/n");scanf("%c",&a);}while(a!='y');}voidmain(void){charc;inti,j;for(i=0;i<100;i++){for(j=0;j<30;j++)books[i].name[j]=NULL;for(j=0;j<20;j++)books[i].author[j]=NULL;}menu:page_title("操作選單");printf("請用數(shù)字鍵選擇操作\n\n");printf("1借閱圖書\n2歸還圖書\n\n");printf("3注冊新書\n4注銷舊書\n\n");printf("5統(tǒng)計\n");printf("6圖書查詢\n");printf("\n0退出\n");scanf("%c",&c);switch(c){case'1':book_out();break;case'2':book_in();break;case'3':book_add();break;case'4':book_del();break;case'5':tongji();break;case'6':search_book();break;case'0':exit(0);}gotomenu;}Ⅷ·調(diào)試與測試Ⅸ·設(shè)計中遇到的問題及解決方案在設(shè)計過程中我們首先遇到的主要問題是怎么將文件寫入結(jié)構(gòu)體中,并且將其讀出。通過比對,我們選擇了使用二進制文件來完成這一系列的操作,因此通過對流的一些操作來完成功能。其定義和使用部分如下:FILE*fp;fp=fopen("bbb","r");fread(
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 服務(wù)延期合同(2篇)
- 2025至2031年中國機場驅(qū)鳥車行業(yè)投資前景及策略咨詢研究報告
- 2025年度裝合同終止協(xié)議書:綠色建材應(yīng)用項目合同終止協(xié)議書
- 二零二五年度室內(nèi)外裝修一體化合同終止及后續(xù)管理協(xié)議
- 2025年度鋼結(jié)構(gòu)拆除施工安全生產(chǎn)責(zé)任保險合同
- 2025年度跨境電商平臺終止合作解除合同協(xié)議書
- 2025年度二手車交易市場轉(zhuǎn)讓及管理合同
- 二零二五年度環(huán)保材料設(shè)備采購與治理合同
- 二零二五年度四川省事業(yè)單位聘用合同書(新聞傳媒)
- 二零二五年度虛擬現(xiàn)實技術(shù)聯(lián)合研發(fā)合同
- 2023年四川省公務(wù)員錄用考試《行測》真題卷及答案解析
- 2025年高考物理復(fù)習(xí)壓軸題:電磁感應(yīng)綜合問題(原卷版)
- 雨棚鋼結(jié)構(gòu)施工組織設(shè)計正式版
- 2024尼爾森IQ中國本土快消企業(yè)調(diào)研報告
- 2024年印度辣椒行業(yè)狀況及未來發(fā)展趨勢報告
- 鑄鋁焊接工藝
- 《社區(qū)康復(fù)》課件-第六章 骨關(guān)節(jié)疾病、損傷患者的社區(qū)康復(fù)實踐
- 2024年湖南省公務(wù)員考試行政職業(yè)能力測驗真題
- 攀巖運動之繩結(jié)技巧課程
- 防打架毆斗安全教育課件
- 采購行業(yè)的swot分析
評論
0/150
提交評論