C++課程設(shè)計報告模板_第1頁
C++課程設(shè)計報告模板_第2頁
C++課程設(shè)計報告模板_第3頁
C++課程設(shè)計報告模板_第4頁
C++課程設(shè)計報告模板_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 目 錄1 引言11.1問題的提出11.2 任務(wù)與分析12 程序的主要功能22.1 添加功能22.2 查詢功能22.3 統(tǒng)計功能22.4 排序功能22.5 修改功能2 2.6 刪除功能.22.7 保存功能22.8 讀取功能22.9 退出系統(tǒng)23 總體設(shè)計44 程序類的說明55 模塊分析65.1 添加模塊65.2 查詢模塊85.3 統(tǒng)計模塊115.4 排序模塊135.5 修改模塊155.6 刪除模塊.166 運行結(jié)果及分析177 心得體會19附錄:源程序20- I -面向?qū)ο蟪绦蛟O(shè)計專題實驗(報告)1 引言1.1問題的提出 在現(xiàn)代化的圖書管理中,圖書管理系統(tǒng)有著十分重要的作用,然而,用大型軟件系

2、統(tǒng)來處理圖書管理的小型事件,不免就有點大材小用,因此小型的軟件系統(tǒng)對于這種圖書管理自然就有著十分重要的作用。我出于這種目的制作了圖書管理系統(tǒng)。1.2 任務(wù)與分析任務(wù):本課題的主要任務(wù)是定義書類Book,首先要定義一個結(jié)構(gòu)體其中包含圖書、編號、名稱、出版社、ISBN號、銷量、評級、存量和用以操作的next指針 ,定義一個全局變量用以儲存書的總量,定義指針用以控制文件讀入及寫入文件,并且定義了私有數(shù)據(jù)Y、K、R用以儲存書的評級,還要在類中定義了一系列用以操作的函數(shù)。分析:2 程序的主要功能2.1 添加功能 添加一個或多個圖書的基本信息,包括編號、名稱、評級、出版社、ISBN號、存量及銷量,并保存在

3、文件中。2.2 查詢功能 提供三個選項供使用者選擇,1-通過名稱查詢2-通過編號查詢 3-顯示全部信息,并可通過選項類別查詢相應(yīng)的已保存的圖書信息。 2.3 統(tǒng)計功能 通過統(tǒng)計功能可以統(tǒng)計輸入的書的類別(評級),并輸出每種書類的具體數(shù)目。輸出格式如“科技+書的數(shù)量” 。2.4 排序功能 通過排序功能可實現(xiàn)對每種圖書的銷量排序并顯示。2.5 編輯功能可對已保存書目進(jìn)行編號查詢,并對已有書目的所有信息進(jìn)行編輯并保存。2.6 刪除功能通過輸入要刪除的書目編號,對已有書目進(jìn)行刪除操作。2.7保存功能 此功能用于將對書目的操作,保存在文件中fp=fopen("E:圖書書目.txt",

4、"w");/for(p1=head;p1!=NULL;p1=p1->next)fwrite(p1,sizeof(struct Books),1,fp);fclose(fp);2.8讀取功能 此功能用于把文件中的書目信息讀取出來,F(xiàn)ILE *fp;fp=fopen("E:圖書書目.txt","r");q=p=(structBooks*)malloc(sizeof(struct Books);fread(p,sizeof(structBooks),1,fp);head=p;while(!feof(fp)q=p;p->next=

5、(structBooks*)malloc(sizeof(structBooks);p=p->next;fread(p,sizeof(structBooks),1,fp);q->next=NULL;fclose(fp);2.9退出系統(tǒng) 選擇此功能可退出系統(tǒng)3 總體設(shè)計 本圖書管理系統(tǒng)下轄11個函數(shù),各函數(shù)之間相互配合,完成功能的整體構(gòu)架和實現(xiàn)。4 程序類的說明 4.1類的代碼 class Bookpublic:struct Bookschar bianhao50;char mincheng50;char pinji50;char chubanshe50;char ISBN50;cha

6、r cunliang50;long xiaoliang;struct Books *next;struct Books fbook,sbook;Book()Y=0;R=0;K=0; friend void tianjia(Book &book);void chaxun(char CX50,int a);void chaxun();void tongji();void paixu();bool bianji(char k150,int b,char k50);/k為新信息,b為選項編號void shanchu(char K150);/要刪除的圖書編號private:static int

7、S;struct Books *head,*p,*q,*p1,*p2;int Y,R,K;5 模塊分析5.1 添加模塊 5.1.1說明 添加模塊中運用了兩個循環(huán)結(jié)構(gòu)來控制輸入的項目有效且能錄入全部信息,一開始的讀取文件則是為了與其他編號進(jìn)行比較,以避免重復(fù)錄入。S為書的總數(shù)量,每增加一本書,書的總數(shù)加一。 5.1.2流程圖5.2 查詢模塊 5.2.1查詢說明 首先讀入文件,并且在查詢模塊中設(shè)置了變量a,以鍵入需要選擇的選項。當(dāng)a=1或a=2時,通過編號和名稱對書目進(jìn)行查詢;當(dāng)a=3時,調(diào)出所有儲存在文件中的書目信息。 5.2.2流程圖5.3 統(tǒng)計模塊 5.3.1流程圖5.3.2說明 首先讀取文

8、件,然后對輸入的評級進(jìn)行判斷,根據(jù)匹配的評級對相應(yīng)的變量進(jìn)行自加運算,直至文件末尾。5.4 排序模塊 5.4.1說明 在此模塊中使用了友元函數(shù)讀取文件,調(diào)用了內(nèi)存數(shù)據(jù)進(jìn)行排序顯示,此功能可以對書目的銷量進(jìn)行排序,然后輸出。 5.4.2流程圖5.5 修改模塊5.5.1流程圖 5.5.1說明 首先讀取文件信息,然后輸入編號進(jìn)行檢索,若編號匹配則進(jìn)行更改,更改后就保存至文件,不匹配就進(jìn)行下一個編號,直至最后,若不存在,輸出“不存在此書”。5.6 刪除模塊5.6.1流程圖 5.6.2說明 首先讀取文件信息,然后輸入編號進(jìn)行檢索,若編號匹配則用鏈表進(jìn)行刪除,刪除后就保存至文件,不匹配就進(jìn)行下一個編號,直

9、至最后,若不存在,輸出“不存在此書”。6 運行結(jié)果及分析 圖6.1 主界面由界面函數(shù)(如圖6.1)來完成,封裝在Book類里面具體調(diào)用在主函數(shù)里面多有用到,主界面只承擔(dān)顯示選項功能,具體的選擇則在主函數(shù)中完成。 圖6.2 對于添加功能(如圖6.2)來說,添加時必要的提示內(nèi)容是必不可少的,通過一定的引導(dǎo)來實現(xiàn)更準(zhǔn)確的添加,避免出錯,就能提高使用者的使用體驗,并且提高添加效率。7 心得體會 在本課題進(jìn)行的過程中深刻地認(rèn)識到自己的不足,在與同學(xué)的交流中學(xué)到了很多,并把它們運用到課題研究中去,極大地鍛煉和提高了自己的專業(yè)技能和制圖能力。任重而道遠(yuǎn),仁以為己任。在圖書管理這一事件的處理上,我的程序還有很

10、多不足,以及可改進(jìn)改良的地方,比如代碼的精簡度和一些算法的靈活運用方面,以后還會繼續(xù)學(xué)習(xí),繼續(xù)改進(jìn),爭取寫出優(yōu)化度更高的代碼。附錄:源程序#include <iostream>#include <windows.h>#include <cstdlib>#include <string>using namespace std;int i,j,l;class Bookpublic:struct Bookschar bianhao50;char mincheng50;char pinji50;char chubanshe50;char ISBN50;c

11、har cunliang50;long xiaoliang;struct Books *next;struct Books fbook,sbook;Book()Y=0;R=0;K=0; friend void tianjia(Book &book);void chaxun(char CX50,int a);void chaxun();void tongji();void paixu();bool bianji(char k150,int b,char k50);/k為新信息,b為選項編號void shanchu(char K150);/要刪除的圖書編號private:static in

12、t S;struct Books *head,*p,*q,*p1,*p2;int Y,R,K;int Book:S=0;void jiemian() cout<<" $ "<<endl;cout<<" $ 歡迎進(jìn)入圖書管理系統(tǒng) $ "<<endl;cout<<" $-$ "<<endl;cout<<" $ 主界面 $ "<<endl;cout<<" $-$ "<<endl;co

13、ut<<" $ 輸入數(shù)字以選擇您想要的選項 $ "<<endl;cout<<" $ 1添加書目 $ "<<endl;cout<<" $ 2查詢書目 $ "<<endl;cout<<" $ 3書種統(tǒng)計 $ "<<endl;cout<<" $ 4銷量排序 $ "<<endl;cout<<" $ 5編輯書目 $ "<<endl;cout&l

14、t;<" $ 6刪除書目 $ "<<endl;cout<<" $ 0退出功能 $ "<<endl;void bianjijiemian()cout<<" 圖書修改類別 "<<endl;cout<<" 1-名稱 "<<endl;cout<<" 2-評級 "<<endl;cout<<" 3-出版社 "<<endl;cout<<&qu

15、ot; 4-ISBN號 "<<endl;cout<<" 5-存量 "<<endl;cout<<" 6-銷量 "<<endl;cout<<" 7-編號 "<<endl;void tianjia(Book &book)/添加FILE *fp;char k='y'int m;while(k='y'|k='Y')system("cls");cout<<"

16、 已經(jīng)進(jìn)入添加界面! "<<endl;cout<<"請根據(jù)提示輸入要添加的信息!"<<endl;cout<<"編號:" cin>>book.fbook.bianhao; getchar();fp=fopen("E:圖書書目.txt","a+");/文件寫入while(!feof(fp)/如果未遇到輸入文件的結(jié)束標(biāo)志 m=0;fread(&book.sbook,sizeof(struct Book:Books),1,fp);if(strcm

17、p(book.fbook.bianhao,book.sbook.bianhao)=0)m=1;break;fclose(fp);if(m=1)cout<<"該書已經(jīng)存在!請重新輸入!"<<endl;getchar();continue;cout<<"名稱:" cin>>book.fbook.mincheng;getchar();cout<<"評級:" cin>>book.fbook.pinji;getchar();cout<<"出版社:&qu

18、ot; cin>>book.fbook.chubanshe; getchar();cout<<"ISBN號:" cin>>book.fbook.ISBN; getchar();cout<<"存量:"cin>>book.fbook.cunliang; getchar();cout<<"銷量:"cin>>book.fbook.xiaoliang;getchar();Book:S+;fp=fopen("E:圖書書目.txt","

19、a");fwrite(&book.fbook,sizeof(struct Book:Books),1,fp);fclose(fp);getchar();cout<<"是否繼續(xù)(Y(y)/N(n):"cin>>k; getchar();void Book:chaxun(char CX50,int a)FILE *fp;fp=fopen("E:圖書書目.txt","r");/讀取文件q=p=(struct Books *)malloc(sizeof(struct Books);fread(p,si

20、zeof(struct Books),1,fp);head=p;while(!feof(fp)q=p;p->next=(struct Books *)malloc(sizeof(struct Books);p=p->next;fread(p,sizeof(struct Books),1,fp);q->next=NULL;fclose(fp);/讀取結(jié)束if(a=1)/按名稱查for(p=head;p!=NULL;p=p->next)if(strcmp(p->mincheng,CX)=0)cout<<"編號:"<<p-&g

21、t;bianhao<<" 名稱:"<<p->mincheng<<" 評級:"<<p->pinji<<" 出版社:"<<p->chubanshe<<" ISBN號:"<<p->ISBN<<" 存量:"<<p->cunliang<<" 銷量:"<<p->xiaoliang<<endl;bre

22、ak;if(p=NULL)cout<<"不存在此書!"<<endl;else if(a=2)/按編號查for(p=head;p!=NULL;p=p->next)if(strcmp(p->bianhao,CX)=0)cout<<"編號:"<<p->bianhao<<" 名稱:"<<p->mincheng<<" 評級:"<<p->pinji<<" 出版社:"<

23、;<p->chubanshe<<" ISBN號:"<<p->ISBN<<" 存量:"<<p->cunliang<<" 銷量:"<<p->xiaoliang<<endl;break;if(p=NULL)cout<<"不存在此書!"<<endl;void Book:chaxun()/查詢FILE *fp;fp=fopen("E:圖書書目.txt","r&

24、quot;);q=p=(struct Books *)malloc(sizeof(struct Books);fread(p,sizeof(struct Books),1,fp);head=p;while(!feof(fp)q=p;p->next=(struct Books *)malloc(sizeof(struct Books);p=p->next;fread(p,sizeof(struct Books),1,fp);q->next=NULL;fclose(fp);for(p=head;p!=NULL;p=p->next) cout<<"編號:

25、"<<p->bianhao<<" 名稱:"<<p->mincheng<<" 評級:"<<p->pinji<<" 出版社:"<<p->chubanshe<<" ISBN號:"<<p->ISBN<<" 存量:"<<p->cunliang<<" 銷量:"<<p->xiaolia

26、ng<<endl;getchar();void Book:tongji()/統(tǒng)計FILE *fp; fp=fopen("E:圖書書目.txt","r");q=p=(struct Books *)malloc(sizeof(struct Books);fread(p,sizeof(struct Books),1,fp);head=p;while(!feof(fp)q=p;p->next=(struct Books *)malloc(sizeof(struct Books);p=p->next;fread(p,sizeof(struc

27、t Books),1,fp);q->next=NULL;fclose(fp);for(p=head;p!=NULL;p=p->next)if(strcmp(p->pinji,"一般")=0)Y+;else if(strcmp(p->pinji,"科技")=0)K+;else if(strcmp(p->pinji,"人文")=0)R+;cout<<" 結(jié)果為:"<<endl;cout<<" 科技類書籍?dāng)?shù)量:"<<K<

28、;<endl;cout<<" 一般類書籍?dāng)?shù)量:"<<Y<<endl;cout<<" 人文類書籍?dāng)?shù)量:"<<R<<endl;void Book:paixu()/排序FILE *fp;long XL;char k250;fp=fopen("E:圖書書目.txt","r");/讀取q=p=(struct Books *)malloc(sizeof(struct Books);fread(p,sizeof(struct Books),1,fp);

29、head=p;while(!feof(fp)q=p;p->next=(struct Books *)malloc(sizeof(struct Books);p=p->next;fread(p,sizeof(struct Books),1,fp);q->next=NULL;fclose(fp);p=head;for(p1=head;p1!=NULL;p1=p1->next)for(q=head->next;q!=NULL;q=q->next)if(p->xiaoliang<q->xiaoliang)XL=p->xiaoliang;p-&

30、gt;xiaoliang=q->xiaoliang; p->next->xiaoliang=XL;strcpy(k2,p->bianhao);strcpy(p->bianhao,q->bianhao); strcpy(p->next->bianhao,k2);strcpy(k2,p->chubanshe); strcpy(p->chubanshe,q->chubanshe); strcpy(p->next->chubanshe,k2);strcpy(k2,p->cunliang); strcpy(p->c

31、unliang,q->cunliang);strcpy(p->next->cunliang,k2);strcpy(k2,p->ISBN); strcpy(p->ISBN,q->ISBN);strcpy(p->next->ISBN,k2);strcpy(k2,p->pinji);strcpy(p->pinji,q->pinji); strcpy(p->next->pinji,k2);strcpy(k2,p->mincheng); strcpy(p->mincheng,q->mincheng);strc

32、py(p->next->mincheng,k2);p=p->next;p=head;for(p=head;p!=NULL;p=p->next)cout<<"編號:"<<p->bianhao<<" 名稱:"<<p->mincheng<<" 評級:"<<p->pinji<<" 出版社:"<<p->chubanshe<<" ISBN號:"<&

33、lt;p->ISBN<<" 存量:"<<p->cunliang<<" 銷量:"<<p->xiaoliang<<endl;getchar();bool Book:bianji(char k150,int b,char k50)/編輯FILE *fp;fp=fopen("E:圖書書目.txt","r");q=p=(struct Books *)malloc(sizeof(struct Books);fread(p,sizeof(struct

34、Books),1,fp);head=p;while(!feof(fp)q=p;p->next=(struct Books *)malloc(sizeof(struct Books);p=p->next;fread(p,sizeof(struct Books),1,fp);q->next=NULL;fclose(fp);p=head;for(i=0,p=head;p!=NULL;p=p->next)if(strcmp(p->bianhao,k1)=0)l=i;break;i=i+1;if(p=NULL)cout<<"不存在此書!"&l

35、t;<endl;elsep=head;for(i=0;i<l;i+)p=p->next;if(b=1)strcpy(p->mincheng,k);else if(b=2)strcpy(p->pinji,k);else if(b=3)strcpy(p->chubanshe,k);else if(b=4)strcpy(p->ISBN,k);else if(b=5)strcpy(p->cunliang,k);else if(b=6)p->xiaoliang=atol(k);else if(b=7)p=head;for(i=0;i<S;i+)

36、if(p->bianhao=k&&i!=l)return false;if(i=S)strcpy(p->bianhao,k);getchar(); fp=fopen("E:圖書書目.txt","w");/保存for(p1=head;p1!=NULL;p1=p1->next)fwrite(p1,sizeof(struct Books),1,fp);fclose(fp);cout<<"修改成功!"<<endl;return true;void Book:shanchu(char K

37、150)/刪除FILE *fp;/讀取開始 fp=fopen("E:圖書書目.txt","r");q=p=(struct Books *)malloc(sizeof(struct Books);fread(p,sizeof(struct Books),1,fp);head=p;while(!feof(fp)q=p;p->next=(struct Books *)malloc(sizeof(struct Books);p=p->next;fread(p,sizeof(struct Books),1,fp);q->next=NULL;fcl

38、ose(fp);/讀取結(jié)束q=head;for(q=head;q!=NULL;q=q->next)if(strcmp(q->bianhao,K1)=0) l=1; break; if(l=1)p=head;for(i=0;strcmp(p->bianhao,K1)!=0;i+)p=p->next;p1=head;p2=p1;if(i=0)/p1=p1->next;p2=p1;head=p2;elsefor(j=0;j<i;j+)p2=p1;p1=p1->next;p2->next=p1->next;Book:S-;cout<<&

39、quot;刪除成功!"<<endl; fp=fopen("E:圖書書目.txt","w");/打開文件,并保存for(p=head;p!=NULL;p=p->next)fwrite(p,sizeof(struct Books),1,fp);fclose(fp);elsecout<<"不存在此書!"<<endl;void main()Book book;void jiemian();void bianjijiemian();char K;char k150,k50,K150;int a

40、,b;while(1)system("cls");jiemian();docin>>K;getchar();while(K<'0'|K>'7');switch(K)case'1':system("cls");tianjia(book);getchar();break;case'2':system("cls");cout<<" - 已經(jīng)進(jìn)入查詢界面!- "<<endl;cout<請輸入查詢方式前的編碼: "<<endl;cout<<&q

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論