課程設(shè)計(jì)(論文)-基于BFS算法的圖的遍歷設(shè)計(jì)與實(shí)現(xiàn)_第1頁
課程設(shè)計(jì)(論文)-基于BFS算法的圖的遍歷設(shè)計(jì)與實(shí)現(xiàn)_第2頁
課程設(shè)計(jì)(論文)-基于BFS算法的圖的遍歷設(shè)計(jì)與實(shí)現(xiàn)_第3頁
課程設(shè)計(jì)(論文)-基于BFS算法的圖的遍歷設(shè)計(jì)與實(shí)現(xiàn)_第4頁
課程設(shè)計(jì)(論文)-基于BFS算法的圖的遍歷設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

沈陽理工大學(xué)課程設(shè)計(jì)專用紙PAGEPAGEII0摘要本文采用圖的鄰接矩陣實(shí)現(xiàn)了最短路徑問題中圖的存儲(chǔ);采用隊(duì)列實(shí)現(xiàn)了圖的廣度優(yōu)先搜索(BFS),用類的成員函數(shù)實(shí)現(xiàn)了其各個(gè)功能。本C++程序?qū)崿F(xiàn)了圖的最短路徑存儲(chǔ)及BFS遍歷,采用Visual

C++

6.0的控制臺(tái)工程和MFC工程分別實(shí)現(xiàn)了鄰接矩陣在桌面上的的顯示以及實(shí)現(xiàn)對(duì)圖的廣度遍歷程序,通過對(duì)兩種程序的測試結(jié)果表明:基于BFS算法的圖的遍歷算法原理正確,兩種程序均能正確求解給定的圖的遍歷問題。關(guān)鍵詞:鄰接矩陣;隊(duì)列;廣度優(yōu)先搜索;控制臺(tái)工程;MFC圖形界面

目錄1 需求分析 12 算法基本原理 12.1鄰接矩陣 12.2圖的遍歷——廣度優(yōu)先搜索(BFS) 23 類設(shè)計(jì) 33.1類的概述 33.2類的接口設(shè)計(jì) 43.3類的實(shí)現(xiàn) 54 基于控制臺(tái)的應(yīng)用程序 94.1主函數(shù)設(shè)計(jì) 94.2運(yùn)行結(jié)果及分析 105 基于MFC的應(yīng)用程序 125.1圖形界面設(shè)計(jì) 125.2程序代碼設(shè)計(jì) 145.3運(yùn)行結(jié)果及分析 20結(jié)論 22參考文獻(xiàn) 23PAGEPAGE23需求分析(1)圖的應(yīng)用和研究可追溯到18世紀(jì)。1736年,被稱為圖論之父的歐拉解決了哥尼斯堡(Konigsberg)問題,從而奠定了圖論這門學(xué)科及其應(yīng)用的基礎(chǔ)。(2)圖作為一種非線性數(shù)據(jù)結(jié)構(gòu),被廣泛應(yīng)用與多個(gè)技術(shù)領(lǐng)域,諸如系統(tǒng)工程、化學(xué)分析、統(tǒng)計(jì)力學(xué)、遺傳學(xué)、控制論、人工智能、編譯系統(tǒng)等領(lǐng)域,在這些技術(shù)領(lǐng)域中把圖結(jié)構(gòu)作為解決的數(shù)學(xué)手段之一。(3)程序測試數(shù)據(jù)來自姜學(xué)軍李筠主編的《數(shù)據(jù)結(jié)構(gòu)(C語言描述)》中,所選的無向圖是:1132326657457488圖1算法基本原理2.1鄰接矩陣鄰接矩陣是表示節(jié)點(diǎn)之間的相鄰接關(guān)系的矩陣。若G是有n個(gè)節(jié)點(diǎn)的圖,則G的鄰接矩陣是如下定義的nXn矩陣。如圖所示圖G的鄰接矩陣如下:21210111101001111010110110104343圖GG的鄰接矩陣2.2圖的遍歷——廣度優(yōu)先搜索(BFS)例如,有如下無向圖:1132326657457488操作步驟如下:=1\*GB3①先輸出1(1為起點(diǎn)),將1入隊(duì);=2\*GB3②1出隊(duì),由于1的鄰接頂點(diǎn)2和3未被訪問過,輸出2和3并將2和3入隊(duì);=3\*GB3③2出隊(duì),2的鄰接頂點(diǎn)1;=4\*GB3④3出隊(duì),由于3的鄰接頂點(diǎn)1被訪問過,而鄰接頂點(diǎn)6和7未被訪問過,輸出6和7并將6和7入隊(duì);=5\*GB3⑤4出隊(duì),由于4的鄰接頂點(diǎn)2被訪問過,而鄰接頂點(diǎn)8未被訪問過,輸出8并將8入隊(duì);=6\*GB3⑥最后5,6,7,8出隊(duì),由于它們的鄰接頂點(diǎn)都被訪問過;此時(shí)隊(duì)空,表示搜索已結(jié)束。類設(shè)計(jì)3.1類的概述本題設(shè)計(jì)的關(guān)鍵是對(duì)圖的廣度優(yōu)先搜索算法的設(shè)計(jì),由于使用鄰接矩陣來存儲(chǔ)圖,就要將廣度優(yōu)先搜索的算法擴(kuò)展到矩陣中。首先應(yīng)設(shè)計(jì)無向圖類Graph然后設(shè)計(jì)成員變量,用二維數(shù)組edge來表示圖邊的權(quán)值,一維數(shù)組vertex來表示頂點(diǎn)信息,eNum來表示邊的數(shù)量,vNum來表示頂點(diǎn)數(shù)量,以及在遍歷中需要的訪問標(biāo)記數(shù)組visited。最后還要設(shè)計(jì)成員函數(shù)實(shí)現(xiàn)對(duì)鄰接矩陣的輸出print(),廣度優(yōu)先搜索函數(shù)BFS()??紤]到圖的初始化比較復(fù)雜,需要Graph(inta,intb)輸入各個(gè)頂點(diǎn)信息,intInitGraph()輸入每條邊的權(quán)值。由于調(diào)用BFS()需要用到隊(duì)列,還需要設(shè)計(jì)結(jié)點(diǎn)類QueueNode和隊(duì)列類LinkQueue;用data表示結(jié)點(diǎn)數(shù)據(jù),*next表示結(jié)點(diǎn)指針域,使用構(gòu)造函數(shù)QueueNode()對(duì)結(jié)點(diǎn)進(jìn)行初始化;用*front和*rear表示隊(duì)列的前驅(qū)和后繼,使用voidInit_Queue()對(duì)隊(duì)列進(jìn)行初審,判斷隊(duì)列是否為空:voidInit_Queue(),入隊(duì)類操作:intEn_Queue(DataTypee),出隊(duì)列操作:voidDe_Queue(DataType&e)。由于程序比較復(fù)雜,Graph類的接口實(shí)現(xiàn)放在Graph.h中,QueueNode類和LinkQueue類的接口放在Queue.h中,類的實(shí)現(xiàn)和主函數(shù)放在main.cpp中。3.2類的接口設(shè)計(jì)**************************************************************************************//Graph.hGraph類的接口設(shè)計(jì)usingnamespacestd;constintmaxnum=100; //設(shè)置鄰接矩陣的最大階數(shù)classGraph{private: charvertex[maxnum];//圖的頂點(diǎn)信息 intedge[maxnum][maxnum]; //圖的邊信息 intvNum; //頂點(diǎn)個(gè)數(shù) inteNum; //邊的個(gè)數(shù) boolvisited[maxnum]; //標(biāo)記這個(gè)頂點(diǎn)是否被訪問過,0表示沒有,1表示已經(jīng)被訪問過public: Graph(inta,intb); //構(gòu)造函數(shù) intInitGraph(); //圖類的初始化函數(shù) voidprint(); //輸出鄰接矩陣 voidBFS(); //廣度優(yōu)先遍歷鄰接矩陣};**************************************************************************************//Queue.hQueueNode類和LinkQueue類的接口設(shè)計(jì):typedefintDataType;classQueueNode{public: DataTypedata; QueueNode*next; QueueNode() { next=NULL; }};classLinkQueue{public: QueueNode*front; QueueNode*rear; LinkQueue(){}; //構(gòu)造函數(shù) voidInit_Queue() //初始化 { front=NULL; rear=NULL; } ~LinkQueue() //析構(gòu)函數(shù) { QueueNode*p,*q; p=front; while(p) { q=p; p=p->next; deleteq; } front=NULL; rear=NULL; } intEmpty_Queue(); //判斷隊(duì)列是否為空 intEn_Queue(DataTypee); //入隊(duì)列操作 voidDe_Queue(DataType&e); //出隊(duì)列操作};3.3類的實(shí)現(xiàn)//main.cppintLinkQueue::Empty_Queue(){ return(front==NULL&&rear==NULL);}intLinkQueue::En_Queue(DataTypee){ QueueNode*p=newQueueNode; if(p)//判斷是否申請(qǐng)成功 { p->data=e; if(rear)rear->next=p; elsefront=rear=p; return1; } else return0;}voidLinkQueue::De_Queue(DataType&e){ QueueNode*p; if(!Empty_Queue()) { p=front; e=p->data; front=front->next; if(!front)rear=NULL; deletep; }}Graph::Graph(inta,intb){ cout<<"創(chuàng)建頂點(diǎn)數(shù)為"<<a<<"邊數(shù)"<<b<<"的無向圖"<<endl; vNum=a; eNum=b;//為了防止原先存在e[][]中的數(shù)據(jù)對(duì)今后的搜索造成影響,所以對(duì)其進(jìn)行初始化 for(inti=0;i<vNum;i++) { for(intj=0;j<vNum;j++) { edge[i][j]=0; } }}intGraph::InitGraph(){ inti,j,temp,flag=0; for(i=0;i<vNum;i++) { cout<<"請(qǐng)輸入第"<<i+1<<"個(gè)頂點(diǎn)信息:"; cin>>vertex[i]; } //輸入各個(gè)邊的具體情況 cout<<"請(qǐng)輸入各個(gè)邊的權(quán)值"<<endl; for(i=0;i<vNum;i++) { for(j=i+1;j<vNum;j++) { cout<<vertex[i]<<"->"<<vertex[j]<<":";cin>>temp; edge[i][j]=temp; edge[j][i]=temp; if(temp)flag++; if(flag==eNum) { cout<<"初始化無向圖鄰接矩陣完畢"<<endl; return0; } } } return1;}//輸出鄰接矩陣voidGraph::print(){ cout<<"鄰接矩陣為"<<endl; inti,j; for(i=0;i<vNum;i++) { for(j=0;j<vNum;j++) cout<<edge[i][j]<<""; cout<<endl; }}voidGraph::BFS(){ cout<<"廣度優(yōu)先搜索(BFS)"<<endl; inti,j; LinkQueueQ; //生成輔助隊(duì)列對(duì)象Q for(i=0;i<vNum;++i) visited[i]=false; //訪問標(biāo)志數(shù)組初始化 Q.Init_Queue(); //初始化隊(duì)列Q for(i=0;i<vNum;++i) if(!visited[i]) //對(duì)未訪問的頂點(diǎn)進(jìn)行收縮 { visited[i]=true; cout<<vertex[i]<<""; Q.En_Queue(i); while(!Q.Empty_Queue()) //隊(duì)列非空 { intm; Q.De_Queue(m); for(j=0;j<vNum;j++) if((edge[m][j]==1)&&(!visited[j])) { visited[j]=true; cout<<vertex[j]<<""; Q.En_Queue(j); } } }}基于控制臺(tái)的應(yīng)用程序4.1主函數(shù)設(shè)計(jì)intmain(){ intx,y; cout<<"請(qǐng)輸入頂點(diǎn)數(shù)x=";cin>>x; y=x*(x-1)/2; GraphG(x,y); G.InitGraph(); G.print(); G.BFS(); cout<<endl; return0;}4.2運(yùn)行結(jié)果分析圖1程序運(yùn)行結(jié)果程序運(yùn)行后首先創(chuàng)建了圖類的對(duì)象,調(diào)用構(gòu)造函數(shù),產(chǎn)生一個(gè)頂點(diǎn)數(shù)為6,邊數(shù)為15的無向圖,然后初始化這個(gè)圖,從鍵盤輸入每個(gè)頂點(diǎn)的信息(a

b

c

d

ef)和每條邊的權(quán)值。在主函數(shù)中直接調(diào)用鄰接矩陣輸出函數(shù)和廣度優(yōu)先搜索結(jié)果?;贛FC的應(yīng)用程序MFC的圖形界面程序設(shè)計(jì)可在上述類設(shè)計(jì)的基礎(chǔ)上進(jìn)行改造,MFC的圖形界面程序與DOS界面程序的主要不同點(diǎn)是:MFC圖形界面程序與DOS界面程序的輸入輸出方式不同,DOS界面程序采用字符交互式實(shí)現(xiàn)數(shù)據(jù)輸入輸出,主要通過cin,cout等I/O流實(shí)現(xiàn),而MFC的圖形程序界面采用標(biāo)準(zhǔn)Windows窗口和控件實(shí)現(xiàn)輸入輸出,因此必須在MFC類的框架下加入上面所設(shè)計(jì)的矩陣和方程組類,并通過圖形界面的輸入輸出改造來完成。5.1圖形界面設(shè)計(jì)首先在VC中建立MFCAppWizard(exe)工程,名稱為課程設(shè)計(jì)MFC,并在向?qū)У腟tep1中選擇Dialogbased,即建立基于對(duì)話框的應(yīng)用程序,如圖2~3所示。其余Steps均為默認(rèn)選項(xiàng)。圖2建立MFCAppWizard(exe)工程圖3建立基于對(duì)話框的應(yīng)用程序?qū)?duì)話框資源中的默認(rèn)對(duì)話框利用工具箱改造成如圖4所示界面圖4圖4所示的界面中包含了11個(gè)StaticText控件,4個(gè)Button控件,和12個(gè)EditBox控件,控件的基本信息列表如下表1所示。表1控件基本信息控件類別控件ID控件Caption說明StaticTextIDC_STATIC5頂點(diǎn)無向圖各邊的權(quán)值a->ba->ca->da->eb->cb->db->ec->dc->ed->eBottonIDC_BUTTON_LJ鄰接矩陣IDC_BUTTON_BFS廣度優(yōu)先遍歷IDC_BUTTON_CLEAN清空IDCANCEL退出EditBoxIDC_EDIT_12鄰接矩陣的權(quán)值IDC_EDIT_13IDC_EDIT_14IDC_EDIT_15IDC_EDIT_23IDC_EDIT_24IDC_EDIT_25IDC_EDIT_34IDC_EDIT_35IDC_EDIT_45IDC_EDIT_MATRIX顯示鄰接矩陣IDC_EDIT_COUT顯示遍歷結(jié)果5.2程序代碼設(shè)計(jì)為了能夠?qū)?duì)話框界面上的控件能夠與代碼聯(lián)系起來,需要為12個(gè)EditBox控件建立MemberVariables,按Ctrl+w鍵進(jìn)入MFCClassWizard界面,選擇MemberVariables選項(xiàng)卡,可顯示成員變量設(shè)置界面,如圖5所示。圖5成員變量設(shè)置界面下面是編寫代碼的重要階段,可以借鑒在設(shè)計(jì)基于DOS界面的控制臺(tái)應(yīng)用程序的代碼,并將其作必要的改寫,具體改寫的步驟與內(nèi)容如下。(1).將基于控制臺(tái)應(yīng)用程序的頭文件Queue.h、Graph.h加入到MFC工程的頭文件中,同時(shí)將控制臺(tái)應(yīng)用程序的源文件main.cpp改名為premain.h加入到MFC的頭文件中,同時(shí)需要修改部分:a.刪除main.cpp(premain.h)的主函數(shù)intmain()。b.刪除main.cpp(premain.h)的刪除print()函數(shù)。c.把Graph.h中的Graph類的所有成員該為public。d.在Graph.h中的Graph類聲明一個(gè)Cstring型變量Dstr。e.在BFS()函數(shù)中CString型變量temp。f.將BFS()函數(shù)中的cout語句刪除,同時(shí)將BFS()函數(shù)的部分代碼修改: 在刪除cout語句的地方加上temp.Format("%d",i+1);Dstr+=temp;兩條語句。(2).在對(duì)話框類的實(shí)現(xiàn)文件課程設(shè)計(jì)MFCDlg.cpp加入#include"premain.h"(在premain.h中已經(jīng)包含了”Queue.h”、”Graph.h”),以實(shí)現(xiàn)在該文件中可使用Graph類。(3).在對(duì)話框類的實(shí)現(xiàn)文件課程設(shè)計(jì)MFCDlg.cpp中加入Graphg(5,6);,構(gòu)造一個(gè)5頂點(diǎn)的無向圖。(4).如圖所示:示意圖雙擊鄰接矩陣按鈕、廣度優(yōu)先搜索按鈕、清空按鈕,分別為其建立響應(yīng)函數(shù):鄰接矩陣的響應(yīng)函數(shù)OnButtonLj();廣度優(yōu)先搜索的響應(yīng)函數(shù)OnButtonBfs();清空的響應(yīng)函數(shù)OnButtonClean()(5).鄰接矩陣的響應(yīng)函數(shù)代碼(OnButtonLj()):voidCMFCDlg::OnButtonLj(){ CStringstr[10][10]; UpdateData(TRUE); g.edge[0][1]=m_e12;g.edge[1][0]=m_e12; g.edge[0][2]=m_e13;g.edge[2][0]=m_e13; g.edge[0][3]=m_e14;g.edge[3][0]=m_e14; g.edge[0][4]=m_e15;g.edge[4][0]=m_e15; g.edge[1][2]=m_e23;g.edge[2][1]=m_e23; g.edge[1][3]=m_e24;g.edge[3][1]=m_e24; g.edge[1][4]=m_e25;g.edge[4][1]=m_e25; g.edge[2][3]=m_e34;g.edge[3][2]=m_e34; g.edge[2][4]=m_e35;g.edge[4][2]=m_e35; g.edge[3][4]=m_e45;g.edge[4][3]=m_e45; m_str_matrix=""; UpdateData(0); for(inti=0;i<5;i++) { for(intj=0;j<5;j++) { str[i][j].Format("%i,",g.edge[i][j]); m_str_matrix+=str[i][j]; } m_str_matrix+="\r\n"; UpdateData(FALSE); } UpdateData(FALSE);}(6).廣度優(yōu)先搜索的響應(yīng)函數(shù)代碼(OnButtonBfs()):voidCMFCDlg::OnButtonBfs(){ //TODO:Addyourcontrolnotificationhandlercodehere intx; CStringstr[10][10]; UpdateData(TRUE); g.edge[0][1]=m_e12;g.edge[1][0]=m_e12; g.edge[0][2]=m_e13;g.edge[2][0]=m_e13; g.edge[0][3]=m_e14;g.edge[3][0]=m_e14; g.edge[0][4]=m_e15;g.edge[4][0]=m_e15; g.edge[1][2]=m_e23;g.edge[2][1]=m_e23; g.edge[1][3]=m_e24;g.edge[3][1]=m_e24; g.edge[1][4]=m_e25;g.edge[4][1]=m_e25; g.edge[2][3]=m_e34;g.edge[3][2]=m_e34; g.edge[2][4]=m_e35;g.edge[4][2]=m_e35; g.edge[3][4]=m_e45;g.edge[4][3]=m_e45; g.Dstr=""; g.BFS(); m_str_cout=""; UpdateData(FALSE); for(x=0;x<5;x++) m_str_cout+=g.Dstr.GetAt(2*x)+'0'; m_str_cout.MakeUpper(); UpdateData(FALSE);}(7).清空的響應(yīng)函數(shù)代碼(OnButtonClean())voidCMFCDlg::OnButtonClean(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); m_e12=0; m_e13=0; m_e14=0; m_e15=0; m_e23=0; m_e24=0; m_e25=0; m_e34=0; m_e35=0; m_e45=0; m_str_matrix=""; m_str_cout=""; UpdateData(FALSE);}5.3運(yùn)行結(jié)果及分析運(yùn)行程序后,首先出現(xiàn)的界面如圖6所示。圖6程序初始運(yùn)行界面分別輸入a->b、a->c、a->c、a->d、a->e、b->c、b->d、b->e、c->d、c->e、d->e,單擊鄰接矩陣按鈕后,可將此無向圖的鄰接矩陣表示出現(xiàn)對(duì)話框中,如圖7所示。圖7點(diǎn)擊鄰接矩陣按鈕后的界面單擊廣度優(yōu)先遍歷按鈕,實(shí)現(xiàn)圖的鄰接矩陣按照廣度優(yōu)先搜索遍歷并顯示遍歷結(jié)果,如圖8所示。圖8單擊廣度優(yōu)先遍歷按鈕后的界面單擊清空按鈕后,對(duì)話框的編輯框內(nèi)容全部置零,如圖9所示。圖8單擊清空按鈕后的界面單擊退出按鈕后,程序能夠正常實(shí)現(xiàn)退出。

結(jié)論本次課程設(shè)計(jì)作為編寫Windows程序的初步嘗試,能夠?qū)崿F(xiàn)程序的主要功能,可以說是取得了成功,然而好的程序絕不僅僅是只有功能性這一個(gè)指標(biāo),本此編寫的MFC程序雖然能實(shí)現(xiàn)所需功能,但從面向?qū)ο蟪绦蛟O(shè)計(jì)理念和圖形界面設(shè)計(jì)要求來說,尚存在不足,程序員可以此為例多加實(shí)踐,達(dá)到能熟練掌握的效果。MFC為Windows應(yīng)用程序開發(fā)者提供了一種快速開發(fā)的工具,尤其是MFC中提供的多種標(biāo)準(zhǔn)控件,使得開發(fā)者不再將過多的心思花在界面代碼編寫上,而將更多的精力投入到應(yīng)用程序的邏輯功能上,在很大程度上減輕了程序員的負(fù)擔(dān)。由于MFC是通用框架,沒有很好的針對(duì)性,當(dāng)然也就喪失了一些靈活性和效率,但是MFC的封裝很淺,所以在效率上損失不大,靈活性也很好,雖然也有很多缺陷,但還是一個(gè)比較好的編程環(huán)境。此次課程設(shè)計(jì)讓我體會(huì)到了真正的結(jié)合C++圖形界面開發(fā),同樣也有C++面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn),這樣編出來的程序也利于我們更加深入了解C++的編程。雖然程序可以成功的編譯運(yùn)行,但是仍然有很多的缺點(diǎn)和不足:1.graph類的設(shè)計(jì)有悖于數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)的方式,并且類的成員函數(shù)全部為public,不利于信息的安全,應(yīng)該將他們歸于private,再設(shè)計(jì)一個(gè)成員函數(shù)對(duì)其賦值。2.程序的界面設(shè)計(jì)并不完美,只能輸入5個(gè)頂點(diǎn)的無向圖圖,應(yīng)該設(shè)計(jì)為動(dòng)態(tài)的輸入界面,滿足用戶的不同需求。3.主程序沒有設(shè)計(jì)輸入頂點(diǎn)信息的函數(shù),所以在廣度優(yōu)先遍歷的時(shí)候不能輸出頂點(diǎn)信息。通過此次任務(wù)式的程序設(shè)計(jì),不僅鞏固了我們在課堂所學(xué)的知識(shí)。更重要的是學(xué)會(huì)了溝通和交流。感覺課堂上的知識(shí)應(yīng)用到實(shí)際中還是很欠缺的,因此大學(xué)里的學(xué)習(xí)課外自主學(xué)習(xí)是很重要的。獲取資料以完成任務(wù)的任務(wù)型學(xué)習(xí)是很有必要的。感覺自己在面向?qū)ο蟮姆矫孢€很欠缺,特別是MFC方面,還有就是C++較難學(xué)。我相信自己努力了就會(huì)有回報(bào)的。凡是認(rèn)真去學(xué),都可以做好的,需要自己戒驕戒躁。真正靜下心來。在IT的世界里,需要不斷學(xué)習(xí),不斷努力。參考文獻(xiàn)譚浩強(qiáng).C++基礎(chǔ)入門大全.北京:清華大學(xué)出版社,2012:100-102鄭莉,董淵,張瑞豐.C++語言程序設(shè)計(jì)(第3版).北京:清華大學(xué)出版社,2007:25-60錢能.C++程序設(shè)計(jì)教程(第2版).北京:清華大學(xué)出版社,2007:100-130RichardC.Leinecker,TomArcher.VisualC++6寶典.張艷,張謙譯.北京:電子工業(yè)出版社,1999李強(qiáng),賈云霞.VisualC++項(xiàng)目開發(fā)實(shí)踐.北京:中國鐵道出版社,2004鄭莉,董淵,張瑞豐.C++語言程序設(shè)計(jì).2003H.M.Deitel,P.J.Deitel.SmallC++HowtoProgram.2006基于C8051F單片機(jī)直流電動(dòng)機(jī)反饋控制系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對(duì)良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級(jí)倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動(dòng)監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動(dòng)控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測試儀的研制基于單片機(jī)的自動(dòng)找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動(dòng)力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺(tái)控制器的研制基于單片機(jī)的軟起動(dòng)器的研究和設(shè)計(jì)基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實(shí)時(shí)內(nèi)核設(shè)計(jì)及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)的液體點(diǎn)滴速度自動(dòng)檢測儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機(jī)的電能采集終端的設(shè)計(jì)和應(yīng)用基于單片機(jī)的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機(jī)單片機(jī)控制系統(tǒng)的研制基于單片機(jī)的數(shù)字磁通門傳感器基于單片機(jī)的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機(jī)的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機(jī)控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機(jī)的多生理信號(hào)檢測儀基于單片機(jī)的電機(jī)運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)Pico專用單片機(jī)核的可測性設(shè)計(jì)研究基于MCS-51單片機(jī)的熱量計(jì)基于雙單片機(jī)的智能遙測微型氣象站MCS-51單片機(jī)構(gòu)建機(jī)器人的實(shí)踐研究基于單片機(jī)的輪軌力檢測基于單片機(jī)的GPS定位儀的研究與實(shí)現(xiàn)基于單片機(jī)的電液伺服控制系統(tǒng)用于單片機(jī)系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機(jī)的時(shí)控和計(jì)數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機(jī)和CPLD的粗光柵位移測量系統(tǒng)研究單片機(jī)控制的后備式方波UPS提升高職學(xué)生單片機(jī)應(yīng)用能力的探究基于單片機(jī)控制的自動(dòng)低頻減載裝置研究基于單片機(jī)控制的水下焊接電源的研究基于單片機(jī)的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機(jī)的氚表面污染測量儀的研制基于單片機(jī)的紅外測油儀的研究96系列單片機(jī)仿真器研究與設(shè)計(jì)基于單片機(jī)的單晶金剛石刀具刃磨設(shè)備的數(shù)控改造基于單片機(jī)的溫度智能控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)基于MSP430單片機(jī)的電梯門機(jī)控制器的研制基于單片機(jī)的氣體測漏儀的研究基于三菱M16C/6N系列單片機(jī)的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機(jī)和DSP的變壓器油色譜在線監(jiān)測技術(shù)研究基于單片機(jī)的膛壁溫度報(bào)警系統(tǒng)設(shè)計(jì)基于AVR單片機(jī)的低壓無功補(bǔ)償控制器的設(shè)計(jì)基于單片機(jī)船舶電力推進(jìn)電機(jī)監(jiān)測系統(tǒng)基于單片機(jī)網(wǎng)絡(luò)的振動(dòng)信號(hào)的采集系統(tǒng)基于單片機(jī)的大容量數(shù)據(jù)存儲(chǔ)技術(shù)的應(yīng)用研究基于單片機(jī)的疊圖機(jī)研究與教學(xué)方法實(shí)踐基于單片機(jī)嵌入式Web服務(wù)器技術(shù)的研究及實(shí)現(xiàn)基于AT89S52單片機(jī)的通用數(shù)據(jù)采集系統(tǒng)基于單片機(jī)的多道脈沖幅度分析儀研究機(jī)器人旋轉(zhuǎn)電弧傳感角焊縫跟蹤單片機(jī)控制系統(tǒng)基于單片機(jī)的控制系統(tǒng)在PLC虛擬教學(xué)實(shí)驗(yàn)中的應(yīng)用研究基于單片機(jī)系統(tǒng)的網(wǎng)絡(luò)通信研究與應(yīng)用基于PIC16F877單片機(jī)的莫爾斯碼自動(dòng)譯碼系統(tǒng)設(shè)計(jì)與研究基于單片機(jī)的模糊控制器在工業(yè)電阻爐上的應(yīng)用研究基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究與開發(fā)基于Cygnal單片機(jī)的μC/OS-Ⅱ的研究基于單片機(jī)的一體化智能差示掃描量熱儀系統(tǒng)研究基于TCP/IP協(xié)議的單片機(jī)與Internet互聯(lián)的研究與實(shí)現(xiàn)變頻調(diào)速液壓電梯單片機(jī)控制器的研究基于單片機(jī)γ-免疫計(jì)數(shù)器自動(dòng)換樣功能的研究與實(shí)現(xiàn)基于單片機(jī)的倒立擺控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)單片機(jī)嵌入式以太網(wǎng)防盜報(bào)警系統(tǒng)基于51單片機(jī)的嵌入式Internet系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)單片機(jī)監(jiān)測系統(tǒng)在擠壓機(jī)上的應(yīng)用HYPERLINK"/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論