C課程設(shè)計(jì)圖書管理系統(tǒng)_第1頁(yè)
C課程設(shè)計(jì)圖書管理系統(tǒng)_第2頁(yè)
C課程設(shè)計(jì)圖書管理系統(tǒng)_第3頁(yè)
C課程設(shè)計(jì)圖書管理系統(tǒng)_第4頁(yè)
C課程設(shè)計(jì)圖書管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

課程設(shè)計(jì)報(bào)告課程名稱面向?qū)ο蟪绦蛟O(shè)計(jì)課題名稱圖書管理系統(tǒng)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班級(jí)計(jì)算機(jī)0981學(xué)號(hào)姓名譚俐莎指導(dǎo)教師李珍輝鄧作杰2010年12月

湖南工程學(xué)院湖南工程學(xué)院課程設(shè)計(jì)任務(wù)書課程名稱面向?qū)ο蟪绦蛟O(shè)計(jì)課題圖書管理系統(tǒng)專業(yè)班級(jí)計(jì)算機(jī)0981學(xué)生姓名譚俐莎學(xué)號(hào)指導(dǎo)老師李珍輝鄧作杰審批李珍輝任務(wù)書下達(dá)日期2010年12月05日任務(wù)完成日期2011年01月15日一、設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求1.課程設(shè)計(jì)目的:面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)是集中實(shí)踐性環(huán)節(jié)之一,是學(xué)習(xí)完《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程后進(jìn)行的一次全面的綜合練習(xí)。要求學(xué)生達(dá)到熟練掌握C++語(yǔ)言的基本知識(shí)和技能;基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的思想和方法;能夠利用所學(xué)的基本知識(shí)和技能,解決簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)問題,從而提高動(dòng)手編程解決實(shí)際問題的能力。2.課題題目1)公司庫(kù)存管理系統(tǒng)2)高校學(xué)籍管理系統(tǒng)3)高校工資管理系統(tǒng)4)高校人事管理系統(tǒng)5)通訊錄程序設(shè)計(jì)6)學(xué)生成績(jī)管理系統(tǒng)7)圖書管理系統(tǒng)8)文本編輯器的設(shè)計(jì)與實(shí)現(xiàn)9)學(xué)生考勤管理系統(tǒng)10)公司人員管理系統(tǒng)3.設(shè)計(jì)要求:⑴設(shè)計(jì)課題題目:每位同學(xué)根據(jù)自己學(xué)號(hào)除以9所得的余數(shù)加一選擇相應(yīng)題號(hào)的課題。換題者不記成績(jī)。(課題10只做為參考課題)⑵根據(jù)自己對(duì)應(yīng)的課題完成以下主要工作:①完成系統(tǒng)需求分析:包括系統(tǒng)設(shè)計(jì)目的與意義;系統(tǒng)功能需求(系統(tǒng)流程圖);輸入輸出的要求。②完成系統(tǒng)總體設(shè)計(jì):包括系統(tǒng)功能分析;系統(tǒng)功能模塊劃分與設(shè)計(jì)(系統(tǒng)功能模塊圖)。③完成系統(tǒng)詳細(xì)設(shè)計(jì):包括數(shù)據(jù)庫(kù)需求分析;數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)(E-R圖);數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì);類層次圖;界面設(shè)計(jì)與各功能模塊實(shí)現(xiàn)。④系統(tǒng)調(diào)試:調(diào)試出現(xiàn)的主要問題,編譯語(yǔ)法錯(cuò)誤及修改,重點(diǎn)是運(yùn)行邏輯問題修改和調(diào)整。⑤使用說明書及編程體會(huì):說明如何使用你編寫的程序,詳細(xì)列出每一步的操作步驟。⑥關(guān)鍵源程序(帶注釋)⑶按規(guī)定格式完成課程設(shè)計(jì)報(bào)告,將其打印稿(A4紙)上交給老師存檔。⑷不得抄襲他人程序、課程設(shè)計(jì)報(bào)告,每個(gè)人應(yīng)體現(xiàn)自己的個(gè)性設(shè)計(jì)。二、進(jìn)度安排第18周星期一8:00——12:00星期二8:00——12:00星期四8:00——12:00第19周星期一8:00——12:00星期二14:00——18:00星期三8:00——12:00三、參考書籍 1.《C++程序設(shè)計(jì)課程設(shè)計(jì)》劉振安編著TP312C563 2.《C++Builder和Delphi課程設(shè)計(jì)與系統(tǒng)開發(fā)案例》伍俊良清華大學(xué)出版社7-302-06072-X 3.VisualC++課程設(shè)計(jì)案例精編嚴(yán)華峰中國(guó)水利水電出版社7-5084-2007-120044.VisualC++課程設(shè)計(jì)與系統(tǒng)開發(fā)案例伍俊良清華大學(xué)出版社7-302-05968-320025.VisualC++語(yǔ)言課程設(shè)計(jì):案例精選與編程指導(dǎo)陳清華朱紅東南大學(xué)出版社7-81089-275-420036.VisualC++課程設(shè)計(jì)案例精編中國(guó)水利水電出版社7-5084-1004-120027.數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)案例精編:用C/C++描述李建學(xué)李光元吳春芳清華大學(xué)出版社7-302-14536-92007(編程平臺(tái)不限,vc++,c++Builder等等。)課題8:圖書管理系統(tǒng)(一)、課程設(shè)計(jì)題目: 圖書管理系統(tǒng)(二)、目的與要求:1、目的:(1)要求學(xué)生達(dá)到熟練掌握C++語(yǔ)言的基本知識(shí)和技能;(2)基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法;(3)能夠利用所學(xué)的基本知識(shí)和技能,解決簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)問題。2、基本要求:(1)要求利用面向?qū)ο蟮姆椒ㄒ约癈++的編程思想來(lái)完成系統(tǒng)的設(shè)計(jì);(2)要求在設(shè)計(jì)的過程中,建立清晰的類層次;(3)在系統(tǒng)中至少要定義四個(gè)類,每個(gè)類中要有各自的屬性和方法;(4)在系統(tǒng)的設(shè)計(jì)中,至少要用到面向?qū)ο蟮囊环N機(jī)制。3、創(chuàng)新要求:在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如根據(jù)查找結(jié)果進(jìn)行修改的功能。4、寫出設(shè)計(jì)說明書(三)、設(shè)計(jì)方法和基本原理:1、問題描述(功能要求):在圖書管理系統(tǒng)中,要為每個(gè)借閱者建立一個(gè)賬戶,并給借閱者發(fā)放借閱卡(借閱卡可以提供借閱卡號(hào)、借閱者名),賬戶中存儲(chǔ)借閱者的個(gè)人信息、借閱信息以及預(yù)定信息。持有借閱卡的借閱者可以借閱書刊、返還書刊、查詢書刊信息、預(yù)定書刊并取消預(yù)定,但這些操作都是通過圖書管理員進(jìn)行的,也即借閱者不直接與系統(tǒng)交互,而是圖書管理員充當(dāng)借閱者的代理與系統(tǒng)交互。在借閱書刊時(shí),需要輸入所借閱的書刊名,書刊的ISBN/ISSN號(hào),然后輸入借閱者的圖書卡號(hào)和借閱者名,完成后提交所填表格,系統(tǒng)驗(yàn)證借閱者是否有效(在系統(tǒng)中存在賬戶),若有效,借閱請(qǐng)求被接受,系統(tǒng)查詢數(shù)據(jù)庫(kù)系統(tǒng),看借閱者所借閱的書刊是否存在,若存在,則借閱者可借出書刊,建立并在系統(tǒng)中存儲(chǔ)借閱記錄。借閱者還書后,刪除關(guān)于所還書刊的借閱記錄。如果借閱者所借的書刊已被借出,借閱者還可預(yù)定該書刊,一旦借閱者預(yù)定的書刊可以獲得,就將書刊直接寄給預(yù)定人(為了簡(jiǎn)化系統(tǒng),預(yù)定書刊可獲得時(shí)就不通知借閱者了)。另外,為了簡(jiǎn)化系統(tǒng),也不考慮書刊的最長(zhǎng)借閱期限,假設(shè)借閱者可以無(wú)限期地保存所借閱的書刊。2、問題的解決方案:根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:(1)應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設(shè)計(jì);(2)分析系統(tǒng)中的各個(gè)實(shí)體及它們之間的關(guān)系包括屬性和行為;(3)根據(jù)問題描述,設(shè)計(jì)系統(tǒng)的類層次;(4)完成類層次中各個(gè)類的描述(包括屬性和方法);(5)完成類中各個(gè)成員函數(shù)的定義;(6)完成系統(tǒng)的應(yīng)用模塊;(7)功能調(diào)試;(8)完成系統(tǒng)總結(jié)報(bào)告以及系統(tǒng)使用說明書目錄1.系統(tǒng)需求分析……………….8TOC\o"1-2"\h\z\u1.1系統(tǒng)設(shè)計(jì)的目的與意義…………………….81.2系統(tǒng)功能需求……..…………..82.總體設(shè)計(jì)………………...…………………..82.1系統(tǒng)功能分析………………..………………..82.2系統(tǒng)功能模塊劃分與設(shè)計(jì)…………….……..…………….…82.3系統(tǒng)功能模塊圖………….…...……………....93.詳細(xì)設(shè)計(jì)...…………………..93.1讀者類的設(shè)計(jì)……………....…93.2讀者庫(kù)類的設(shè)計(jì)…………......103.3圖書類的設(shè)計(jì)………..........103.4圖書庫(kù)類的設(shè)計(jì)………..…………...….....114.系統(tǒng)調(diào)試………………...……………..115.結(jié)果分析………...……..…..136.總結(jié)………....146.1感想與體會(huì)……………….…..147.附錄……………………....…147.1源程序清單………..…...……...14系統(tǒng)需求分析1.1系統(tǒng)設(shè)計(jì)的目的與意義:圖書系統(tǒng)在生活中運(yùn)用相當(dāng)廣泛,因此需要很多程序?qū)λM(jìn)行管理。1.2系統(tǒng)功能需求:本系統(tǒng)有四個(gè)類,Book類,BDatebase類、Reader類、RDatebase類,存儲(chǔ)借閱者的個(gè)人信息、借閱信息以及預(yù)定信息。持有借閱卡的借閱者可以借閱書刊、返還書刊、查詢書刊信息、預(yù)定書刊并取消預(yù)定等功能??傮w設(shè)計(jì)2.1系統(tǒng)功能分析:系統(tǒng)通過調(diào)用函數(shù)來(lái)實(shí)現(xiàn)刪除圖書、讀者信息,添加圖書、讀者信息等功能。delbook()函數(shù)用于刪除圖書信息;addbook()函數(shù)用于增加圖書信息;borrowbook()函數(shù)用于實(shí)現(xiàn)借書操作;returnbook()函數(shù)用于實(shí)現(xiàn)還書操作等等;主函數(shù)用于掉用這些函數(shù)。2.2系統(tǒng)功能模塊劃分與設(shè)計(jì)本系統(tǒng)定義了Book類、BDatebase類、Reader類、RDatebase類這四個(gè)類,定義了addbook()、addreader()、borrowbook()、setname()等函數(shù)來(lái)實(shí)現(xiàn)系統(tǒng)所需功能。2.3系統(tǒng)功能模塊圖:圖書圖書管理系統(tǒng)四個(gè)類程序?qū)崿F(xiàn)功能輸出顯示圖書類圖書庫(kù)類實(shí)驗(yàn)員讀者類行政人員讀者庫(kù)類文件錄入查詢信息刪除信息退出程序圖圖2.3詳細(xì)設(shè)計(jì)3.1讀者類的設(shè)計(jì)該類定義了借書操作,還書操作,設(shè)置讀者姓名等功能。Reader+name[20]:char+no:int+tag:int+borbook:int+getname():char+gettag():int+getno():int+setname(charna[]):void+delbook():void+addreader(intn,char*na):void+borrowbook(intbookid):void+retbook(intbookid):int+disp():void圖3.13.2讀者庫(kù)類類的設(shè)計(jì)該類實(shí)現(xiàn)了建立讀者的個(gè)人資料,刪除讀者信息,輸出讀者信息等功能。RDatebase+top:int+rname[20]:char+readerid:int+readerdata():void+choice:char+addreader(intn,char*na):int+clear():void+disp():void圖3.23.3圖書類的設(shè)計(jì)圖書類,可以實(shí)現(xiàn)對(duì)圖書的描述,圖書的編號(hào),書名,借出,還入等操作。Book+no:int+name[20]:char+onshelf:int+getname():char+getno():int+gettag():int+setname(charna[]):void+delbook():void+addbook():void+borrowbook():int+retbook():void+disp():void圖3.33.4圖書庫(kù)類的設(shè)計(jì)Xingzhengrenyuan+top:int+clear():void+addbook(intn,char*na):int+bookdata():void+bookdata():void+disp():void圖3.4系統(tǒng)調(diào)試在調(diào)試過程中,出現(xiàn)了一些錯(cuò)誤。1、輸入數(shù)據(jù)時(shí),輸錯(cuò)了數(shù)據(jù)的類型會(huì)造成死循環(huán),因此輸入時(shí)需要注意。2、一開始主界面輸入非正確數(shù)字時(shí),沒有提示錯(cuò)誤。容易造成用戶誤解圖4.1在主函數(shù)的switch語(yǔ)句結(jié)束處加上default:cout<<"輸入錯(cuò)誤,請(qǐng)從新輸入:";就可以了,修改后:圖4.2具體調(diào)試過程。主界面圖4.3圖書維護(hù)圖4.4讀者維護(hù)圖4.15.結(jié)果分析本程序總共設(shè)計(jì)了四個(gè)類,滿足了課題對(duì)類的要求,在設(shè)計(jì)的過程中,建立了較為清晰的類層次,也利用了面向?qū)ο蟮姆椒ㄒ约癈++的編程思想來(lái)完成系統(tǒng)的設(shè)計(jì),做到了每個(gè)借閱者建立一個(gè)賬戶,賬戶中存儲(chǔ)借閱者的個(gè)人信息、借閱信息等要求。而且界面美觀,容易操作。但是程序太長(zhǎng),不夠簡(jiǎn)練,導(dǎo)致出現(xiàn)錯(cuò)誤很難發(fā)現(xiàn)和修改。總結(jié)6.1感想和體會(huì):通過這次的課程設(shè)計(jì),讓我充分的感覺到了要自己設(shè)計(jì)一個(gè)程序是多么的難,以及學(xué)習(xí)好c++是多么的重要。在這個(gè)程序的設(shè)計(jì)過程中,我清楚的意識(shí)到自己的水平有多么的薄弱,課程的知識(shí)學(xué)得有多么的不扎實(shí)??淳W(wǎng)上的例子好像覺得也沒那么難,自己一上機(jī)實(shí)際操作就出現(xiàn)了很多問題,調(diào)試的時(shí)候系統(tǒng)總是在報(bào)錯(cuò),還有很多警告,每增加一個(gè)函數(shù)就要調(diào)試好久,有時(shí)候應(yīng)為少了一個(gè)大括號(hào)或是分號(hào),導(dǎo)致要找很久很久。雖然系統(tǒng)可以運(yùn)行,也具有了一些基本的功能,但我意識(shí)到了自己有太多的不足。以后還會(huì)有很多的課程設(shè)計(jì),一定要吸取這次的教訓(xùn),把知識(shí)學(xué)懂學(xué)透學(xué)精,真正的為我所用,這樣走上社會(huì)我才能真正的發(fā)揮所長(zhǎng)。7、附錄7.1源程序清單:#include<iostream>#include<iomanip>#include<string>#include<fstream>usingnamespacestd;constintMaxr=100;constintMaxb=100;constintMaxbor=5;classReader{private:inttag;intno;charname[10];intborbook[Maxbor];public:Reader(){}char*getname(){returnname;}intgettag(){returntag;}intgetno(){returnno;}voidsetname(charna[]){strcpy(name,na);}voiddelbook(){tag=1;}voidaddreader(intn,char*na){tag=0;no=n;strcpy(name,na);for(inti=0;i<Maxbor;i++)borbook[i]=0;}voidborrowbook(intbookid){for(inti=0;i<Maxbor;i++){if(borbook[i]==0){borbook[i]=bookid;return;}}}intretbook(intbookid){for(inti=0;i<Maxbor;i++){if(borbook[i]==bookid){borbook[i]=0;return1;}}return0;}voiddisp(){cout<<setw(5)<<no<<setw(10)<<name<<"借書編號(hào):[";for(inti=0;i<Maxbor;i++)if(borbook[i]!=0)cout<<borbook[i]<<"|";cout<<"]"<<endl;}};classRDatabase{private:inttop;Readerread[Maxr];public:RDatabase(){Readers;top=-1;fstreamfile("reader.txt",ios::in);while(1){file.read((char*)&s,sizeof(s));if(!file)break;top++;read[top]=s;}file.close();}voidclear(){top=-1;}intaddreader(intn,char*na){Reader*p=query(n);if(p==NULL){top++;read[top].addreader(n,na);return1;}return0;}Reader*query(intreaderid){for(inti=0;i<=top;i++)if(read[i].getno()==readerid&&read[i].gettag()==0){return&read[i];}returnNULL;}voiddisp(){for(inti=0;i<=top;i++)read[i].disp();}voidreaderdata();~RDatabase(){fstreamfile("reader.txt",ios::out);for(inti=0;i<=top;i++)if(read[i].gettag()==0)file.write((char*)&read[i],sizeof(read[i]));file.close();}};voidRDatabase::readerdata(){charchoice;charrname[20];intreaderid;Reader*r;while(choice!='0'){cout<<"\n\n\t\t\t讀者維護(hù)\n\n\n\t\t1新增\n\n\t\t2更改\n\n\t\t3刪除\n\n\t\t4查找\n\n\t\t5顯示\n\n\t\t6全刪\n\n\t\t0退出"<<endl;cin>>choice;switch(choice){case'1':cout<<"輸入讀者編號(hào):";cin>>readerid;cout<<"輸入讀者姓名:";cin>>rname;addreader(readerid,rname);break;case'2':cout<<"輸入讀者編號(hào):";cin>>readerid;r=query(readerid);if(r==NULL){cout<<"該讀者不存在"<<endl;break;}cout<<"輸入新的姓名:";cin>>rname;r->setname(rname);break;case'3':cout<<"輸入讀者編號(hào):";cin>>readerid;r=query(readerid);if(r==NULL){cout<<"該讀者不存在"<<endl;break;}r->delbook();break;case'4':cout<<"讀入讀者編號(hào):";cin>>readerid;r=query(readerid);if(r==NULL){cout<<"該讀者不存在"<<endl;break;}r->disp();break;case'5':disp();break;case'6':clear();break;default:cout<<"輸入錯(cuò)誤,請(qǐng)從新輸入:";break;}}}classBook{private:inttag;intno;charname[20];intonshelf;public:Book(){}char*getname(){returnname;}intgetno(){returnno;}intgettag(){returntag;}voidsetname(charna[]){strcpy(name,na);}voiddelbook(){tag=1;}voidaddbook(intn,char*na){tag=0;no=n;strcpy(name,na);onshelf=1;}intborrowbook(){if(onshelf==1){onshelf=0;return1;}return0;}voidretbook(){onshelf=1;}voiddisp(){cout<<setw(6)<<no<<setw(18)<<name<<setw(10)<<(onshelf==1?"在架":"已借")<<endl;}};classBDatabase{private:inttop;Bookbook[Maxb];public:BDatabase(){Bookb;top=-1;fstreamfile("book.txt",ios::in);while(1){file.read((char*)&b,sizeof(b));if(!file)break;top++;book[top]=b;}file.close();}voidclear(){top=-1;}intaddbook(intn,char*na){Book*p=query(n);if(NULL==p){top++;book[top].addbook(n,na);return1;}return0;}Book*query(intbookid){for(inti=0;i<=top;i++)if(book[i].getno()==bookid&&book[i].gettag()==0){return&book[i];}returnNULL;}voidbookdata();voiddisp(){for(inti=0;i<=top;i++)if(book[i].gettag()==0)book[i].disp();}~BDatabase(){fstreamfile("book.txt",ios::out);for(inti=0;i<=top;i++)if(book[i].gettag()==0)file.write((char*)&book[i],sizeof(book[i]));file.close();}};voidBDatabase::bookdata(){charchoice;charbname[40];intbookid;Book*b;while(choice!='0'){cout<<"\n\n\n\t\t\t圖書維護(hù)"<<endl<<endl;cout<<"\t\t1新增\n\t\t2更改\n\t\t3刪除\n\t\t4查找\n\t\t5顯示\n\t\t6全刪\n\t\t0退出"<<endl;cin>>choice;switch(choice){case'1':cout<<"輸入圖書編號(hào):"<<endl;cin>>bookid;cout<<"輸入圖書書名:"<<endl;cin>>bname;addbook(bookid,bname);break;case'2':cout<<"輸入圖書編號(hào):"<<endl;cin>>bookid;b=query(bookid);if(b==NULL){cout<<"該圖書不存在"<<endl;break;}cout<<"輸入新的書名:"<<endl;cin>>bname;b->setname(bname);break;case'3':cout<<"讀入圖書編號(hào):"<<endl;cin>>bookid;b=query(bookid);if(b==NULL){cout<<"該圖書不存在"<<endl;break;}b->delbook();break;case'4':cout<<"讀入圖書編號(hào):"<<endl;cin>>bookid;b=query(bookid);if(b==NULL){cout<<"該圖書不存在"

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論