




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、遼 寧 工 業(yè) 大 學C+語言程序設計課程設計(論文)題目: 畫圖板編輯器 院(系): 軟 件 學 院 專業(yè)班級: 軟 學 號: 學生姓名: 指導教師: 教師職稱: 起止時間:20課程設計(論文)任務及評語院(系):軟件學院 教研室:軟件教研室學 號學生姓名李專業(yè)班級軟課程設計(論文)題目畫圖板編輯器課程設計(論文)任務程序設計的任務與要求:(1). 掌握面向對象程序設計語言C+的基本語法(2). 掌握C+面向對象設計的思想(3). 掌握VC+6.0與DEV C+ 開發(fā)工具的使用 (4). 運用標準C+規(guī)范設計應用程序設計過程中,要嚴格遵守設計的時間安排,聽從指導教師的指導。正確地完成上述內容
2、,規(guī)范完整地撰寫出設計報告。指導教師評語及成績 成績: 指導教師簽字: 年 月 日遼 寧 工 業(yè) 大 學 課 程 設 計 說 明 書(論 文) 目 錄第1章 課程設計目的與要求11.1 設計目的11.2實驗環(huán)境11.3預備知識11.4設計要求1第2章 課程設計內容22.1 課題描述22.2 系統(tǒng)設計22.2.1功能分析22.2.2面向對象設計22.2.2類成員描述52.3程序實現(xiàn)72.3.1源碼分析72.3.2運行結果12第3章 課程設計總結14參考文獻15第1章 課程設計目的與要求1.1 設計目的將理論教學中涉及到的知識點貫穿起來,對不同的數(shù)據類型、程序控制結構、數(shù)據結構作一比較和總結,結合
3、設計題目進行綜合性應用,對所學知識達到融會貫通的程度。通過課程設計,學生在下述各方面的能力應該得到鍛煉:(1)進一步鞏固、加深學生所學專業(yè)課程C+語言教程的基本理論知識,理論聯(lián)系實際,進一步培養(yǎng)學生綜合分析問題,解決問題的能力。(2)全面考核學生所掌握的基本理論知識及其實際業(yè)務能力,從而達到提高學生素質的最終目的。(3)利用所學知識,開發(fā)小型應用系統(tǒng),掌握運用C+語言編寫調試應用系統(tǒng)程序,訓練獨立開發(fā)應用系統(tǒng),進行數(shù)據處理的綜合能力。(4)對于給定的設計題目,如何進行分析,理清思路,并給出相應的數(shù)學模型。(5)掌握面向對象程序設計的方法。(6)熟練掌握C+語言的基本語法,靈活運用各種數(shù)據類型。
4、(7)進一步掌握在集成環(huán)境下如何調試程序和修改程序。1.2實驗環(huán)境硬件要求能運行Windows 操作系統(tǒng)的微機系統(tǒng)。C+語言應用程序開發(fā)軟件使用:VC+ 系統(tǒng),或其他C+語言應用程序開發(fā)軟件。1.3預備知識熟悉C+語言程序設計的基本知識及VC+編輯器的使用方法。1.4設計要求1.仔細分析設計題目,畫出程序流程圖,編寫程序源代碼。2.積極上機調試源程序,增強編程技巧與調程能力。3.認真書寫課程設計預習報告,課程設計說明書。4.遵守課程設計要求和機房管理制度,服從指導教師的安排,確保課程設計的順利完成課程設計內容。第2章 課程設計內容2.1 課題描述本程序使用C+語言編寫控制臺程序,模仿Windo
5、ws下的畫板程序,但是DOS下只支持16色的顏色,所以本程序不是那么完善,只能夠完成基本的簡單功能。期間還要調用Windows下的API函數(shù),而不是僅僅用C+類庫中的函數(shù)。2.2 系統(tǒng)設計2.2.1功能分析本程序,主要完成用C+語言在控制臺中實現(xiàn)畫圖。畫圖版中包含有十四種顏色,十四種圖形,而且可以在圖形的基礎上實現(xiàn)顏色的改變。還可以在DOS環(huán)境下實現(xiàn).screen為后綴的文件的打開查看。由于在控制臺環(huán)境下,沒有任何顏色可言,所以只能通過調用windows下的API顏色函數(shù)來實現(xiàn)畫圖中顏色這一功能。畫圖者對畫板大小的要求不同,所以此程序還應可以完成對畫板大小的具體設置。2.2.2面向對象設計類的
6、uml類圖:ConsoleWindow+ConsoleWindow()+typedef HWND (WINAPI *PROCGETCONSOLEWINDOW)+ HWND GetWindowsHandle()StdFun# ConvertRect(int x,int y,int width,int height)#SMALL_RECT EvalueRect(int x,int y,int width,int height)基類StdFun+WINDOWS API函數(shù)庫- WINDOWS API函數(shù)庫 派生類MouseInfo<<Public>>MouseInfo+int
7、x,y;+int press,doubl;+MouseInfo()+ bool MouseInRect(SMALL_RECT *myrect)+ DWORD GetMouseInfo()-HANDLE _hIn;-INPUT_RECORD_InRec;-DWORD_NumRead;-MOUSE_EVENT_RECORD mrc; StdFun+庫函數(shù)Brush+Brush ()+void SetInfo()+void OnPaint()+void DrawBrush()+bool BrushInBuffer()+ void SetSize(int setwidth,int setheight)
8、 類的派生關系UML圖2.2.2類成員描述class Brush:public StdFun /*定義刷子*/long color;char *style;long width;long height;CHAR_INFO*bufferInfo;COORD crood ;COORD point;COORD size ;HANDLE handleOut;SMALL_RECT myrect;class SaveButton:public Button /*定義存儲*/public:SaveButton()void SetInfo(int x,int y,int size)this->x = x
9、;this->y = y;this->size = size;rect = EvalueRect(x,y,size,size);Print();void Print()SMALL_RECT rect = EvalueRect(x,y,size,size);myScreen.OutPutRect(&rect,9);rect = EvalueRect(x+1,y+1,size-2,size-5);myScreen.OutPutRect(&rect,7);rect = EvalueRect(x+2,y+size-2,size-4,size-8);myScreen.OutP
10、utRect(&rect,7);void OnPress()SMALL_RECT rect = EvalueRect(x+1,y+1,size-2,size-5);myScreen.OutPutRect(&rect,8);void OnRelase()SMALL_RECT rect = EvalueRect(x+1,y+1,size-2,size-5);myScreen.OutPutRect(&rect,7);char path256 = "未命名.Screen"if(SaveFile(path)myBuffer.WriteFile(path);vo
11、id OnRollOver()SMALL_RECT rect = EvalueRect(x+1,y+1,size-2,size-5);myScreen.OutPutRect(&rect,12);void OnRollOut()SMALL_RECT rect = EvalueRect(x+1,y+1,size-2,size-5);myScreen.OutPutRect(&rect,7);bool SaveFile(char *shortPath)OPENFILENAME ofn;ZeroMemory(&ofn,sizeof(ofn);ofn.lStructSize = s
12、izeof(ofn);ofn.lpstrFile = shortPath;ofn.nMaxFile = sizeof(char)*256;ofn.lpstrFilter = TEXT("*.Screen0ALL0");ofn.nFilterIndex = 1;ofn.hwndOwner = myWindows.GetWindowsHandle();ofn.Flags =OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_ALLOWMULTISELECT ;return GetSaveFileName(&ofn)?true:false;priv
13、ate:int x,y;int size;mySaveButton;2.3程序實現(xiàn)2.3.1源碼分析#include <stdlib.h> /*stdlib 頭文件即standard library標準庫頭文件*/#include <stdio.h> /* stdio.h頭文件即標準輸入輸出頭文件*/#include <windows.h> /* windows.h頭文件即定義了Windows的所有資料型態(tài)、函數(shù)調用、資料結構和常數(shù)識別字*/class StdFunprotected:SMALL_RECT ConvertRect(int x,int y,in
14、t width,int height)SMALL_RECT setrect = (x-1)*2,y-1,(x-1)*2+width*2-1,y-1+height-1;return setrect;SMALL_RECT EvalueRect(int x,int y,int width,int height)SMALL_RECT setrect = x,y,x+width-1,y + height-1;return setrect;class ConsoleWindowtypedef HWND (WINAPI *PROCGETCONSOLEWINDOW)();PROCGETCONSOLEWINDO
15、W GetConsoleWindow;public:ConsoleWindow()HMODULE hKernel32 = GetModuleHandle("kernel32");GetConsoleWindow=(PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32,"GetConsoleWindow");HWND GetWindowsHandle()returnGetConsoleWindow();myWindows;/*調用WINDOWS的API函數(shù)實現(xiàn)DOS中沒有顏色這一問題*/class MouseInfo:
16、public StdFunpublic:intx,y;int press,doubl;MouseInfo()x = 0;y = 0;press = 0;doubl = 0;hIn = GetStdHandle(STD_INPUT_HANDLE);DWORD GetMouseInfo()ReadConsoleInput(_hIn , &_InRec , 1 , &_NumRead) ;if ( _NumRead = 1 )if ( _InRec.EventType = MOUSE_EVENT ) mrc = _InRec.Event.MouseEvent ; x = (mrc.d
17、wMousePosition.X+2)/2;y = mrc.dwMousePosition.Y+1;press = mrc.dwButtonState;doubl = mrc.dwEventFlags;return mrc.dwEventFlags;return false;bool MouseInRect(SMALL_RECT *myrect)if(x < myrect->Left ) return false;if(x > myrect->Right ) return false;if(y < myrect->Top ) return false;if(
18、y > myrect->Bottom) return false;return true;private:HANDLE _hIn;INPUT_RECORD _InRec;DWORD _NumRead;MOUSE_EVENT_RECORD mrc;mouse;class Screen:public StdFunpublic:Screen()font = 1;bufferInfo = 0;handleOut = GetStdHandle(STD_OUTPUT_HANDLE); /獲取標準輸出設備句柄HMODULE hKernel32 = GetModuleHandle("ke
19、rnel32");SetConsoleFont=(PROCSETCONSOLEFONT)GetProcAddress(hKernel32,"SetConsoleFont");SetCursorShow(FALSE);Virtual void OutPutPoint(int x,int y,char *pad,int color)MoveTo(x,y);FillConsoleOutputAttribute(handleOut, color, 2, point, NULL);WriteConsoleOutputCharacter(handleOut, pad, 2,
20、point, NULL);Virtual void OutPutString(int x ,int y,char *string,int attr )MoveTo(x,y);DWORD stringLength = (DWORD)strlen(string);FillConsoleOutputAttribute(handleOut, attr, stringLength, point, NULL);WriteConsoleOutputCharacter(handleOut, string, stringLength, point, NULL);Virtual void OutPutRect(S
21、MALL_RECT* rectp,WORD color,int value = 1,char *pad = "")for(int i = rectp->Top ; i <= rectp->Bottom ;i+)for(int j = rectp->Left ; j <= rectp->Right ;j+)if(j = rectp->Left) | (j = rectp->Right) | (i = rectp->Top) | (i = rectp->Bottom)OutPutPoint(j,i,pad,color)
22、;elseif(value)OutPutPoint(j,i,pad,color);void SetHandleOut(HANDLE handleout)handleOut = handleout;void SetFont(int setfont)font = setfont;SetConsoleFont(handleOut,font);void SetCursorShow(BOOL _value)GetConsoleCursorInfo(handleOut,&cursor_info);cursor_info.bVisible=_value;SetConsoleCursorInfo(ha
23、ndleOut,&cursor_info);void SetWindow(size_t column,size_t lines)/*COORD Size = column * 2, lines ;SMALL_RECT myrect = 0,0,column * 2-1, lines -1;if(!SetConsoleScreenBufferSize(handleOut,Size)MessageBox(myWindows.GetWindowsHandle(),"設置屏幕緩沖錯誤","",0);SetConsoleWindowInfo(handleO
24、ut,TRUE,&myrect);*/char cmd256;sprintf(cmd,"MODE CON: COLS=%d LINES=%d",column*2,lines);system(cmd);HANDLE hIn=GetStdHandle(STD_INPUT_HANDLE);DWORD oldmode;GetConsoleMode(hIn,&oldmode);SetConsoleMode(hIn,oldmode|ENABLE_MOUSE_INPUT);long Height()return size.Y;long Width()return size
25、.X/2;protected:CHAR_INFO* bufferInfo;COORD pointHANDLE handleOut;COORD size ;Long font;CONSOLE_CURSOR_INFO cursor_info;VoidMoveTo(intx,int y)point.X = x*2-2;point.Y = y*1-1;typedef BOOL (WINAPI *PROCSETCONSOLEFONT)(HANDLE, DWORD);PROCSETCONSOLEFONT SetConsoleFont;myScreen;2.3.2運行結果1.畫圖板編輯器界面:編輯器大小的調節(jié):另存為.screen格式的圖片:第3章 課程設計總結從一個學網絡的學生發(fā)展成為現(xiàn)在對軟件方便有一定了解的學生這一轉變過程,萬分感謝翟老師。他開啟啦我的編程大門,讓我漸漸融入程序設計中。這次的C+課設這是在這一基礎上,使得我本次的課設和之前的有很大的提升。人們都知道DOS中只能是烏龜畫圖,不知道DOS中也可以展現(xiàn)出彩色畫圖板的功能。我正是出于這方面的考慮,我開
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合租服裝合同范例
- 供貨購合同范本
- 廈門勞動合同范本填寫
- 勞務合同范本和
- 2025年面板檢測系統(tǒng)項目合作計劃書
- 出售雙衛(wèi)房屋合同范本
- 合同范本全書模板
- 勞務合同范本完整版
- 合肥元旦消費合同范本
- 虛擬股獎勵合同范本
- 門式起重機、架橋機作業(yè)前安全隱患排查表
- 不合格品處置記錄表(標準版)
- 德語現(xiàn)代主義文學-浙江大學中國大學mooc課后章節(jié)答案期末考試題庫2023年
- 機床數(shù)控技術PPT完整全套教學課件
- 店面租賃合同店面租賃合同店面租賃合同書
- lm3s8962開發(fā)板用戶手冊
- 《小學教師職業(yè)道德》課程標準
- IATF16949-過程審核檢查表-(含審核記錄)-
- 食品防護評估表
- 內科學支氣管擴張癥(課件)
- 部編人教版五年級道德與法治下冊全冊完整課件ppt
評論
0/150
提交評論