課設(shè)設(shè)計說明書_第1頁
課設(shè)設(shè)計說明書_第2頁
課設(shè)設(shè)計說明書_第3頁
課設(shè)設(shè)計說明書_第4頁
課設(shè)設(shè)計說明書_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

*******************實踐教學(xué)*******************蘭州理工大學(xué)計算機(jī)與通信學(xué)院秋季學(xué)期面向?qū)ο笳n程設(shè)計題目:集合的運(yùn)算專業(yè)班級:08軟件工程二班姓名:趙玉蘭學(xué)號:08240531指導(dǎo)教師:劉嘉成績:______________目錄摘要...........................................................1第1章問題描述...............................................2第2章需求分析...............................................32.1需求陳說...............................................32.2建立對象模型...........................................32.3建立功能模型..........................................4第3章概要設(shè)計...............................................53.1系統(tǒng)設(shè)計...............................................53.1.1系統(tǒng)分析..........................................53.1.2系統(tǒng)設(shè)計思想......................................53.2系統(tǒng)類層次及構(gòu)造圖......................................6第4章詳細(xì)設(shè)計...............................................74.1類與對象的設(shè)計.........................................74.1.1類屬性的詳細(xì)設(shè)計....................................74.1.2類行為的詳細(xì)設(shè)計....................................74.2類的詳細(xì)繼承關(guān)系.......................................7第5章編碼....................................................8第6章測試與維護(hù)..............................................20設(shè)計總結(jié)........................................................26參照文獻(xiàn)........................................................27道謝............................................................28摘要集合的運(yùn)算波及到的算法都是以數(shù)組的基本運(yùn)算作為基礎(chǔ)的,此程序包括:添加數(shù)組元素,刪除一種元素,查找元素。集合的運(yùn)算還包括兩個集合的運(yùn)算,包括兩個的交集,并集,差集。關(guān)鍵字:集合的運(yùn)算添加刪除查找集合的交集集合的并集集合的差第1章問題描述集合的運(yùn)算包括集合的輸入、元素的添加、元素的刪除、查找元素、等單個集合的運(yùn)算。集合的運(yùn)算還包括兩個集合的交集,兩個集合的并集,兩個集合的差等運(yùn)算。使用類實現(xiàn)集合的輸入,集合元素的添加刪除及查找等功能。至少要有20份測試信息,算法對于這些合法的輸入信息都能產(chǎn)生滿足規(guī)格闡明規(guī)定的成果;算法對于精心選擇的經(jīng)典、苛刻而帶有刁難性的幾組輸入數(shù)據(jù)可以得出滿足規(guī)格闡明規(guī)定的成果;對算法實現(xiàn)過程中的異常狀況能給出有效信息第2章需求分析2.1需求陳說:1、規(guī)定運(yùn)用面向?qū)ο蟮拇胧┮约癈++的編程思想來完畢系統(tǒng)的設(shè)計;2、規(guī)定在設(shè)計的過程中,建立清晰的類層次;3、在系統(tǒng)設(shè)計中要分析和定義各個類,每個類中要有各自的屬性和措施;4、在系統(tǒng)的設(shè)計中,規(guī)定運(yùn)用面向?qū)ο蟮臋C(jī)制(繼承、派生及多態(tài)性)來實現(xiàn)系統(tǒng)功能。5、在基本規(guī)定到達(dá)后,可進(jìn)行創(chuàng)新設(shè)計,如根據(jù)查找成果進(jìn)行修改的功能及設(shè)計出比較友好的界面等。6、定義并實現(xiàn)一種整數(shù)集合類int_set,集合類中cur_size表明目前集合中有幾種整數(shù),集合中最多含max_size個整數(shù),寄存集合元素的數(shù)組是動態(tài)的。規(guī)定提供的措施有:(1)增長一種整數(shù)到集合中;(2)從集合中去掉一種元素;(3)判斷一種元素與否在集合中;(4)重載<<運(yùn)算法,輸入集合;重載>>運(yùn)算符輸出集合;(5)分別實現(xiàn)集合的交、并、差運(yùn)算。2.2建立對象模型集合的運(yùn)算系統(tǒng)集合的運(yùn)算系統(tǒng)集合的輸入集合的輸出輸入 輸入集合的運(yùn)算系統(tǒng)對象模型2.3建立功能模型處理系統(tǒng)集合輸出處理系統(tǒng)集合輸出集合的輸入集合的運(yùn)算系統(tǒng)模型第3章概要設(shè)計3.1系統(tǒng)設(shè)計程序設(shè)計的基本目的是用算法對問題的原始數(shù)據(jù)進(jìn)行處理,從而獲得所期望的效果。但這僅僅是程序設(shè)計的基本規(guī)定。要全面提高程序的質(zhì)量,提高編程效率,使程序具有良好的可讀性、可靠性、可維護(hù)性以及良好的構(gòu)造,編制出好的程序來,應(yīng)當(dāng)是每位程序設(shè)計工作者追求的目的。而要做到這一點,就必須掌握對的的程序設(shè)計措施和技術(shù)。而C++語言是一種構(gòu)造化語言。它層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維護(hù)。因此采用構(gòu)造化程序設(shè)計措施,對管理系統(tǒng)進(jìn)行自頂向下,逐漸細(xì)化,模塊化設(shè)計。

3.1.1系統(tǒng)分析集合的運(yùn)算所需要完畢的功能有:1.集合的輸入2.集合元素的添加,刪除及查找3.兩個集合的交集4.兩個集合的并集5.兩個集合的并集

6.兩個集合的差3.1.2系統(tǒng)設(shè)計思想系統(tǒng)開發(fā)的總體任務(wù)是集合的輸入,運(yùn)算及輸出。

3.2系統(tǒng)類層次及構(gòu)造圖類:Int_set類:Int_set集合的最大個數(shù):MAXSIZE集合的個數(shù):cur_size集合的數(shù)組表達(dá):array[]第4章詳細(xì)設(shè)計4.1類與對象的設(shè)計4.1.1類屬性的詳細(xì)分析MAXSIZE//集合元素的最大個數(shù)Cur_size//集合中元素個數(shù)Array[]//集合的數(shù)組表達(dá)4.1.2類行為的詳細(xì)分析intgetCur_size()//輸出集合的元素個數(shù)intset();//顯示集合的元素intget();//輸入集合的元素intAdd();//添加一種元素到集合intDecline();//刪除集合的一種元素intIfinclude();//在集合中查找元素intnumber();//返回集合的個數(shù)4.2類的友元關(guān)系該類有三個友元函數(shù)來實現(xiàn)集合的交,并,差。voidInsert_two()voidUnion_two()voidDif1()第5章編碼#include<iostream.h>constintMAXSIZE=100;classInt_set{protected:intcur_size;intarray[MAXSIZE];public: intgetcur_size(); Int_set(){cur_size=0;}; voidAdd();intset();voidget(); voidDecline(); voidinsert(); voidIfinclude(); friendvoidInsert_two(Int_set&ob1,Int_set&ob2,Int_set&ob); friendvoidUnion_two(Int_set&ob3,Int_set&ob4,Int_set&ob); friendvoidDif1(Int_set&ob5,Int_set&ob6,Int_set&ob);};intInt_set::getcur_size(){returncur_size;}voidInt_set::Add(){ inta; cout<<"請輸入要添加的元素!\n";cin>>a;if(cur_size==MAXSIZE)cout<<"添加不成功超過集合的最大范圍"<<endl;else {cur_size++;array[cur_size]=a; } }intInt_set::set(){ for(inti=1;i<=cur_size;i++) cout<<array[i]<<endl;return0;}voidInt_set::get(){intm,n;cout<<"輸入要產(chǎn)生集合的大小!"<<endl;cin>>m;cout<<"輸入數(shù)值,每個數(shù)值一回車結(jié)束"<<endl;for(inti=1;i<=m;i++){cin>>n;array[i]=n;} cur_size=m;cout<<"輸入結(jié)束"<<endl;}voidInt_set::Decline(){ cout<<"輸入要刪除的元素!\n";inta;cin>>a;if(cur_size==0)cout<<"集合為空"<<endl;else{ inti; for(i=1;i<=cur_size;i++) {if(array[i]==a) break; } if(i==(cur_size+1)) { cout<<"沒有您要的元素!\n"; }else { for(i=1;i<=cur_size;i++) {array[i]=array[i++]; }cur_size--; cout<<"刪除成功"<<endl; }}}voidInt_set::Ifinclude(){ inta; cout<<"輸入要查找的元素!\n";cin>>a;if(cur_size==0){cout<<"集合為空"<<endl;}else{ for(inti=1;i<=cur_size;i++) {if(array[i]==a)cout<<"該元素存在于集合中"<<endl;break; } if(i==(cur_size+1)) { cout<<"該元素不存在于集合中"<<endl; }}}voidInsert_two(Int_set&ob1,Int_set&ob2,Int_set&ob){intk=1; if(ob1.getcur_size()==0||ob2.getcur_size()==0)cout<<"兩個集合的交集為空"<<endl;else{for(inti=1;i<=ob1.getcur_size();i++) for(intj=1;j<=ob2.getcur_size();j++) { if(ob1.array[i]==ob2.array[j]) { ob.array[k]=ob1.array[i]; k++; } }} Cur_size--;}voidUnion_two(Int_set&ob3,Int_set&ob4,Int_set&ob) { intk=1;if(ob3.cur_size==0&&ob4.cur_size==0)cout<<"兩個集合的并集為空"<<endl;else { if(ob3.cur_size==0) { ob.cur_size=ob4.cur_size;for(inti=1;i<=ob4.cur_size;i++) { ob.array[k]=ob4.array[i]; k++; } }elseif(ob4.cur_size==0) { ob.cur_size=ob3.cur_size; for(intj=1;j<=ob3.cur_size;j++) { ob.array[k]=ob3.array[j]; k++; } }else { if(ob3.cur_size>=ob4.cur_size) { ob.cur_size=ob3.cur_size; for(intm=1;m<=ob3.cur_size;m++) { ob.array[k]=ob3.array[m]; k++; } for(inta=1;a<=ob4.cur_size;a++){ for(intb=1;b<=ob.cur_size;b++) { if(ob4.array[a]==ob.array[b])break; } if(b==(ob.cur_size+1)) {ob.array[k]=ob4.array[a]; k++;} } } else { ob.cur_size=ob4.cur_size; for(intm=1;m<=ob4.cur_size;m++) { ob.array[k]=ob4.array[m]; k++; } for(inta=1;a<=ob3.cur_size;a++){ for(intb=1;b<=ob.cur_size;b++) { if(ob3.array[a]==ob.array[b])break; } if(b==(ob.cur_size+1)) {ob.array[k]=ob3.array[a]; k++; ob.cur_size++;} } } } } }voidDif1(Int_set&ob5,Int_set&ob6,Int_set&ob){ if(ob5.cur_size==0)cout<<"兩個集合的差為空"<<endl;else { inti=1; intj=1; for(i;i<=ob5.cur_size;i++) { for(j;j<=ob6.cur_size;j++) { if(ob5.array[i]==ob6.array[j])break; } if(j!=(ob6.cur_size+1)) { for(intc=i;i<ob5.cur_size;c++) ob5.array[c]=ob5.array[c++]; ob5.cur_size--; } } } intmain(){ inti; Int_setob; Int_setob1,ob2; Int_setob3; cout<<“請輸入單個集合的元素\n";ob.get();ob.set(); cout<<"請分別輸入兩個集合的元素\n"; ob1.get(); ob2.get(); ob1.set(); ob2.set();cout<<"請單個集合的運(yùn)算"<<endl;cout<<"1.添加一種元素"<<endl;cout<<"2.刪除元素"<<endl;cout<<"3.查找元素"<<endl;cout<<"*************************************************************************************************************\n";cout<<"兩個集合的運(yùn)算"<<endl;cout<<"4.兩個集合的交集"<<endl;cout<<"5.兩個集合的并集"<<endl;cout<<”6.兩個集合的差"<<endl;cout<<"輸入錯誤,請重新輸入\n";cin>>i;switch(i){case1:ob.Add(); ob.set();break;case2:ob.Decline(); ob.set();break;case3:ob.Ifinclude();break; case4: Insert_two(ob1,ob2,ob3); ob3.set();break;case5:Union_two(ob1,ob2,ob3); ob3.set();break;case6:Dif1(ob1,ob2,ob3); ob3.set();break;default:cout<<"輸入錯誤,請重新輸入!"<<endl; break; }return0;}第6章測試與維護(hù)系統(tǒng)主界面一種集合的運(yùn)算:異常狀況:兩個集合的運(yùn)算:設(shè)計總結(jié)本次課程設(shè)計我的題目是集合的運(yùn)算,任務(wù)是運(yùn)用VC++編譯器編譯出一種可以輸入集合,對集合進(jìn)行運(yùn)算,輸出,實現(xiàn)對集合的元素添加、刪除、查找等操作。目的是通過課程設(shè)計使同學(xué)們可以深入理解和純熟掌握書本中所學(xué)的多種類,學(xué)會怎樣把學(xué)到的知識用于處理實際問題,培養(yǎng)學(xué)生自己處理問題的能力和動手能力。使我們將學(xué)到的東西充足的與實際問題相結(jié)合起來,再次復(fù)習(xí)了C++語言的文獻(xiàn)的某些操作,并且對類與類、對象與對象及繼承關(guān)系有了深入的理解,假如說數(shù)據(jù)構(gòu)造課程讓我們對構(gòu)造化程序設(shè)計(程序抽象)有了深入理解的話,那么面向?qū)ο笳n程設(shè)計就要培養(yǎng)我們的整體構(gòu)架能力,把實際問題用抽象化的程序體現(xiàn)出來,再次,在設(shè)計程序時,要考慮多方面的問題,既要考慮沖突的處理,又要考慮各個類之間的關(guān)系,還要考慮在程序運(yùn)行時要最大程度的以便顧客。當(dāng)碰到如此多方面的問

溫馨提示

  • 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

提交評論