版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C+/JAVA集中上機(jī)實(shí)習(xí)報(bào)告圖示冒泡排序(C+)指導(dǎo)教師: 姓 名: 陳倫森 學(xué) 號(hào): 2012216640 班 級(jí): 5321201 時(shí) 間: 目錄一 概述2二 總體方案設(shè)計(jì)2三 詳細(xì)設(shè)計(jì)3四 程序的調(diào)試與運(yùn)行結(jié)果說明4五 課程設(shè)計(jì)總結(jié)6六 心得體會(huì)6七 附錄7參考文獻(xiàn)11一 概述1. 課程設(shè)計(jì)的目的進(jìn)一步鞏固理論課上所學(xué)到的知識(shí),深刻把握面向?qū)ο缶幊碳夹g(shù)的特性,鍛煉學(xué)生熟練的應(yīng)用面向?qū)ο蟮乃枷牒驮O(shè)計(jì)方法解決實(shí)際問題的能力,深化對(duì)C+語言編程和開發(fā)工具運(yùn)用的認(rèn)識(shí),提高軟件項(xiàng)目開發(fā)實(shí)踐能力和軟件工程管理能力。2. 課程設(shè)計(jì)的要求需要的基本知識(shí)與技能:C程序設(shè)計(jì);C+面向?qū)ο蟪绦蛟O(shè)計(jì);wind
2、ows程序設(shè)計(jì)。尚未掌握的知識(shí)點(diǎn):windows程序設(shè)計(jì)。需要查閱相關(guān)資料:windows程序設(shè)計(jì)的相關(guān)資料。教師對(duì)本題目所提出的要求:從C+/JAVA中選擇自己熟悉的編程語言,獨(dú)立完成自己最熟悉領(lǐng)域的小型軟件項(xiàng)目,按照軟件工程工作過程,分析軟件項(xiàng)目系統(tǒng)的需求分析,系統(tǒng)規(guī)劃設(shè)計(jì),包括概要設(shè)計(jì)和詳細(xì)設(shè)計(jì),并在C+/JAVA環(huán)境中實(shí)現(xiàn)編程實(shí)現(xiàn)和調(diào)試該系統(tǒng)。3. 課程設(shè)計(jì)的主要設(shè)計(jì)思想圖示冒泡排序算法:從后向前依次比較相鄰的兩個(gè)數(shù),如果前數(shù)大天后數(shù)則交換,交換后對(duì)屏幕的輸出信息進(jìn)行更新,并通過控制時(shí)間即達(dá)到動(dòng)畫效果。反復(fù)以上過程直至循環(huán)結(jié)束為止,數(shù)據(jù)實(shí)現(xiàn)從小到大依次排列。二 總體方案設(shè)計(jì)本次選題為圖
3、示冒泡排序。排序可采用冒泡排序算法,它是最簡單(相對(duì)來說效率較低)的排序算法之一。在本次圖示冒泡排序設(shè)計(jì)中要求程序能實(shí)現(xiàn):通過圖示(動(dòng)畫)演示冒泡排序的具體過程。要實(shí)現(xiàn)圖示冒泡排序功能,可以用VC+的知識(shí)編寫程序來解決此問題。系統(tǒng)具有良好的界面;必要的提示信息;簡約美觀的效果。使用人員能快速明白,對(duì)人們理解冒泡排序過程有一定的幫助。包含的功能有:1. 要進(jìn)行的排序的數(shù)字應(yīng)該隨機(jī)生成,并可控制數(shù)字的大小范圍和個(gè)數(shù);2. 正在進(jìn)行第幾趟排序要在動(dòng)畫窗口有所反映;3. 對(duì)每一趟排序的每一次前數(shù)和后數(shù)比較在動(dòng)畫窗口有所反映;4. 如果前數(shù)大天后數(shù)則交換,要用動(dòng)畫反映出交換的過程;5. 排序好后,要反映
4、出總共進(jìn)行了N-1趟排序,提示已排序好;6. 關(guān)閉動(dòng)畫程序,結(jié)束排序。三 詳細(xì)設(shè)計(jì)(一)類圖:(二)類數(shù)據(jù)成員說明:Number:1、num 要比較的數(shù),初始化時(shí)隨機(jī)生成; 2、x 記錄num在窗口輸出的位置的x軸坐標(biāo); 3、y 記錄num在窗口輸出的位置的y軸坐標(biāo)。Numbers|:1、nN 數(shù)組n存著N個(gè)要排序的Number類型是數(shù)。(三)圖示冒泡排序算法流程圖:四 程序的調(diào)試與運(yùn)行結(jié)果說明(一) 調(diào)試運(yùn)行環(huán)境:Microsoft Visual Studio 2010;windows 7 操作系統(tǒng)。(二) 運(yùn)行和結(jié)果說明:1、 動(dòng)畫窗口大小可適應(yīng)排序數(shù)字個(gè)數(shù)的變化,每次排序是數(shù)字隨機(jī)生成。
5、2、 窗口畫面有幾個(gè)箭頭“>”表示正在進(jìn)行第幾趟排序,移動(dòng)的箭頭表示該箭頭所指的數(shù)和它下方的數(shù)進(jìn)行比較,若下方的數(shù)小于箭頭所指的數(shù),這下方的數(shù)浮上箭頭所指位置,上方數(shù)下沉一個(gè)位置。3、 排序完成后在窗口下方輸出“OK”表示排序完成,這是窗口畫面上正好有N-1個(gè)箭頭,表示進(jìn)行了N-1趟排序。4、 排序完成后,按任意鍵可退出程序。五 課程設(shè)計(jì)總結(jié)總體情況:本程序基本達(dá)到了課題要求,通過動(dòng)畫形式簡單明了的反映冒泡排序的具體過程。不足之處:所要排序的數(shù)由程序隨機(jī)生成,為給用戶提供輸入,缺乏交互性。進(jìn)一步設(shè)想:增加輸入功能,美化動(dòng)畫界面。困難及解決途徑:在編寫本程序遇到是最大困難是不會(huì)window
6、s程序設(shè)計(jì),我通過上網(wǎng)找資料,查閱相干書籍,請(qǐng)教同學(xué)等方式學(xué)會(huì)了編寫此程序所需的windows程序設(shè)計(jì)知識(shí)。六 心得體會(huì)通過完成本課題設(shè)計(jì),我鞏固了以前學(xué)過的C和編程語法規(guī)則;進(jìn)一步熟悉Microsoft Visual Studio 2010開發(fā)環(huán)境,提高程序調(diào)試能力;學(xué)會(huì)一些Windows 程序設(shè)計(jì)的知識(shí);學(xué)會(huì)了使用Visio畫類圖和程序流程圖。在實(shí)驗(yàn)過程中,養(yǎng)成了良好的實(shí)驗(yàn)習(xí)慣,培養(yǎng)嚴(yán)格的科學(xué)的作風(fēng);學(xué)會(huì)通過各種途徑學(xué)習(xí)解決困難所需知識(shí)。在此感謝任課老師,感謝好友給我的幫助。七 附錄全部代碼及注釋#include <Windows.h>#define N 10#define M
7、AX 100class Numberint num,x,y;public:Number():x(0),y(0)srand(GetTickCount();num=rand()%MAX+1;Sleep(50);/運(yùn)算速度太快,要停下void setN(int n)num=n;void setX(int xx)x=xx;void setY(int yy)y=yy;int getN()return num;int getX()return x;int getY()return y;void print(HDC thdc);class NumbersNumber nN;public:void InitN
8、um(HDC thdc);void BubSort(HDC thdc);void Number:print(HDC thdc)char temp10;itoa(num,temp,10);TextOutA (thdc, x, y, " ", 6);/抹掉TextOutA (thdc, x, y, temp, strlen(temp);/初始要排序的數(shù)組并打印void Numbers:InitNum(HDC thdc)int x=20,y=20,d=20;/距離char temp10;n0.setX(x);n0.setY(y);n0.print(thdc);for(int i=
9、1; i<N;i+)ni.setX(x);ni.setY(ni-1.getY()+d);ni.print(thdc);/氣泡排序 void Numbers:BubSort(HDC thdc)int i,j,temp;for(i=0;i<N-1;i+)for(j=N-1;j>i;j-)TextOutA (thdc, nj.getX()-20, nj.getY(), " ", 3);Sleep(400);TextOutA (thdc, nj-1.getX()-20, nj-1.getY(), "->", 2);if(nj.getN()
10、<nj-1.getN()temp=nj.getN();nj.setN(nj-1.getN();nj-1.setN(temp);nj.print(thdc);Sleep(200);nj-1.print(thdc);Sleep(200);LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);HDC hBgDC;Numbers nn;/入口,定義窗口屬性int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPST
11、R lpCmdLine, int nCmdShow) WNDCLASSEX wndcls;wndcls.cbClsExtra = NULL;wndcls.cbSize = sizeof(wndcls);wndcls.cbWndExtra = NULL;wndcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);wndcls.hCursor = LoadCursor(NULL, IDC_ARROW);wndcls.hIcon = LoadIcon(NULL, IDI_APPLICATION);wndcls.hIconSm = NULL;w
12、ndcls.hInstance = hInstance;wndcls.lpfnWndProc = WndProc;wndcls.lpszClassName = TEXT("Application");wndcls.lpszMenuName = NULL;wndcls.style = CS_HREDRAW | CS_VREDRAW;/注冊(cè)窗口if (!RegisterClassEx(&wndcls) MessageBox(NULL, TEXT("Register unseccessfully!"), TEXT("Error"),
13、 MB_OKCANCEL);return 0;/創(chuàng)建窗口HWND hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW, TEXT("Application"), TEXT("graphic"), WS_POPUP,/WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);/定義窗口句柄HDC hDC ;MoveWindow(hWnd, 100, 100,
14、70, 50+N*20, TRUE); /窗口位置xy,大小whShowWindow(hWnd, nCmdShow);/顯示窗口UpdateWindow(hWnd);MSG msg;GetMessage(&msg, NULL, NULL, NULL);while (msg.message!=WM_KEYDOWN) if( PeekMessage( &msg, NULL, 0,0 ,PM_REMOVE) ) hDC = GetDC(hWnd);TextOutA (hDC, 18, 20+N*20, "OK",2);ReleaseDC(hWnd, hDC);Tr
15、anslateMessage( &msg ); DispatchMessage( &msg ); return msg.wParam;LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) HDC hDC;/消息處理switch (message) case WM_CREATE:hDC = GetDC(hWnd);BitBlt(hDC, 0, 0, 100, 400, hBgDC, 0, 0, SRCCOPY);ReleaseDC(hWnd, hDC);return 0;case WM_KEYDOWN:/按下鍵盤消息,退出PostQuitMessage(0);return 0;case WM_PAINT:/貼圖消息hDC = Ge
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024賓館室內(nèi)裝修合同標(biāo)準(zhǔn)樣本
- 2024房屋名額轉(zhuǎn)讓協(xié)議,房屋名額轉(zhuǎn)讓協(xié)議范本,寫購房名額轉(zhuǎn)讓合同
- 2024擔(dān)保合同格式參考
- 2024家教的勞動(dòng)合同范本
- 2024軟件開發(fā)合同標(biāo)準(zhǔn)模板
- 小區(qū)車庫廣告位租賃合同
- 產(chǎn)品臨時(shí)借用協(xié)議
- 建筑業(yè)勞動(dòng)合同:退休政策改革與規(guī)范
- 歷史文化遺產(chǎn)保護(hù)拆遷合同
- 農(nóng)業(yè)項(xiàng)目合作書參考
- FZ/T 01002-2010印染企業(yè)綜合能耗計(jì)算辦法及基本定額
- 藥品儲(chǔ)備評(píng)估表
- 國家自然科學(xué)基金申請(qǐng)經(jīng)驗(yàn)匯總課件
- 青春期女孩自尊自愛課件
- 2023年西藏開發(fā)投資集團(tuán)有限公司招聘筆試題庫及答案解析
- 小學(xué)語文人教三年級(jí)上冊(cè)觀察桔子孫娟課件
- 藏族人的名字標(biāo)準(zhǔn)英語翻譯
- 市場營銷產(chǎn)品組合與產(chǎn)品策略課件
- 醫(yī)院會(huì)計(jì)實(shí)務(wù)操作培訓(xùn)課件
- 《江蘇省建筑業(yè)10項(xiàng)新技術(shù)(2021)》
- 高中化學(xué)實(shí)驗(yàn)員招聘考試試卷及評(píng)分標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論