版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、面向?qū)ο缶幊碳夹g(shù)課程設(shè)計報告書班 級: 軟0841姓 名: xxx學(xué) 號:x xxxxxxxxx日 期:2010年 6 月: 2010年 6 月 18 目錄1學(xué)校對員工獎金的計算11.1問題認(rèn)識與分析11.2 程序功能說明,程序結(jié)構(gòu)圖21.3 類層次圖31.4代碼說明31.4.1開發(fā)環(huán)境31.4.2主要開發(fā)步驟31.4.3代碼說明41.5 操作說明71.6設(shè)計開發(fā)過程中,遇到的主要問題以及解決方法72. 計算器(mfc)92.1問題認(rèn)識與分析92.2 程序功能說明,程序結(jié)構(gòu)圖92.3 類層次圖(以下為操作鍵對應(yīng)的操作函數(shù))102.4代碼說明112.4.1開發(fā)環(huán)境112.4.2主要開發(fā)步驟112
2、.4.3代碼說明112.5設(shè)計開發(fā)過程中,遇到的主要問題以及解決方法172.6存在的主要問題,擬解決的方法17參考文獻(xiàn)資料181學(xué)校對員工獎金的計算1.1問題認(rèn)識與分析某學(xué)校對員工的獎金按下面方法計算:對管理人員按其職務(wù)發(fā)固定的崗位獎,對專職教師按其職稱和月任課時數(shù)計發(fā)業(yè)績獎,對既有管理工作又兼授課的人員按崗位獎加月任課時數(shù)乘某系數(shù)之和為獎金數(shù)。分析應(yīng)用要求,建立一個抽象類,具有員工的基本數(shù)據(jù)成員,計算月獎金和顯示信息的成員函數(shù)。由于不同人員的獎金計算方法不同,所以將這兩個成員函數(shù)聲明為虛函數(shù)。以抽象類為基類派生出三種不同人員類,有派生類對月獎金和顯示信息函數(shù)進(jìn)行重載。主函數(shù)實現(xiàn)動態(tài)調(diào)用,計算
3、個人員的月獎金。1.2 程序功能說明,程序結(jié)構(gòu)圖 employeepublic:virtualvoid pay()=0;virtualvoid show()=0;void setname(char *names) strcpy(name,names); private:char name20;teacherpublic:void pay();void show();void setworkhours(int wh);private:int hourrate ; int workhours; managerpublic: void pay();void show();private:int mo
4、nthlypay; teachermanagerpublic:void pay();void show();1.3 類層次圖抽象類 employeevirtual(虛基類) virtual(虛基類)teachermanager ( 共同派生 )teachermanager1.4代碼說明1.4.1開發(fā)環(huán)境microsoft visual c+ 6.0 1.4.2主要開發(fā)步驟1.先設(shè)計一個抽象類,在里面寫上主要虛函數(shù)。2.因為后面要共同派生出一個teachermanager,所以抽象類派生的要設(shè)為虛基類3.最后在主函數(shù)中,設(shè)置虛函數(shù)實現(xiàn)動態(tài)調(diào)用。(利用了多態(tài))1.4.3代碼說明/employee.
5、hclass employeeprotected:char name20;int individualemployeeno;int grade;float accumpay;static int employeeno;public:employee();virtual void pay()=0;virtual void show()=0;void setname(char *);char * getname();int getindividualemployeeno();class manager:virtual public employeeprotected:float monthlypa
6、y;public:manager();void pay();void show();class teacher:virtual public employeepublic :teacher();void setworkhours(int wh); void pay();void show();protected:int workhours;float hourrate;class teachermanage:public teacher,public managepublic:teachermanage();void pay();void show();/employee.cpp#includ
7、e#include#includeemployee.husing namespace std;int employee:employeeno=1000;employee:employee() individualemployeeno=+employeeno; accumpay=0;void employee:setname(char *names) strcpy(name,names);char * employee:getname() return name; teacher:teacher() hourrate=120;void teacher:setworkhours(int wh) w
8、orkhours=wh;void teacher:pay() accumpay=hourrate*workhours;manage:manager() monthlypay=5000;void manage:pay()accumpay=monthlypay;void manage:show() coutthe accumpay isaccumpayendl;teachermanage:teachermanage() monthlypay=4000; hourrate=80;void teachermanage:pay() accumpay=monthlypay+hourrate*workhou
9、rs;void teachermanage:show() cout本月工資accumpayendl;void main() teacher t1; manage m1; teachermanage tm; char namestr20; employee *emp3=&t1,&m1,&tm; int i; for(i=0;i3;i+) cout請輸入下一個員工的姓名namestr; empi-setname(namestr); cout請輸入教師t1.getname()本月的任課時數(shù):ww; t1.setworkhours(ww); for(i=0;ipay(); coutgetname();
10、cout編號getindividualemployeeno()show(); cout連接執(zhí)行其他步驟如下圖:1.6設(shè)計開發(fā)過程中,遇到的主要問題以及解決方法1.文件的連接問題:在編輯時,將employee.h和employee.cpp兩文件寫在同一工程下,編譯器將會自動調(diào)用。2.同名成員的唯一標(biāo)識問題:基類employee,聲明了數(shù)據(jù)成員name,individulemployeeno,和函數(shù)pay(),show()等,公有派生了teacher類和manager類,再以teacher類和manager類共同公有派生了teachermanager類,這時在teachermanager類中,同名
11、數(shù)據(jù)在內(nèi)存中擁有多個拷貝,同一函數(shù)會有多個映射。我們將共同基類設(shè)置為虛基類,這時在teachermanager類中從不同的路徑繼承過來的同名數(shù)據(jù)成員在內(nèi)存中就只有一個拷貝,同一個函數(shù)名也只有一個映射。這樣就解決了成員的唯一標(biāo)識問題。2. 計算器(mfc)2.1問題認(rèn)識與分析需求分析設(shè)計一個與windows操作系統(tǒng)自帶的標(biāo)準(zhǔn)型計算器功能相同的計算器,至少有+、-、*、/、清零、backspace的功能。2.2 程序功能說明,程序結(jié)構(gòu)圖本計算器可以實現(xiàn)普通的四則運算,功能與windows自帶的計算器基本一致,但是有以下幾點不同及需要注意的地方:1. 輸入負(fù)數(shù)的時候,請先輸入數(shù)字然后點+/-鍵,如果
12、先點+/-鍵可能會出現(xiàn)問題。2. 加法、減法和乘法的最終結(jié)果的整數(shù)和小數(shù)部分分別能容納長達(dá)100(可以預(yù)設(shè))位的精確數(shù)值,超出這個范圍可能會出錯。3. 除法的被除數(shù)可以是100位整數(shù)以內(nèi)的任何數(shù)值,但是除數(shù)的有效數(shù)字位數(shù)不能超過64位,超過會出錯。除法最大的精確位數(shù)為pre位(預(yù)設(shè)為40)位,超過這個位數(shù)則采用四舍五入法進(jìn)位。4. 加、減、乘和除法的結(jié)果顯示的全部為精確的數(shù)字。5. 由于開方二分查找算法的本身的痼疾,使得開方的精確度很低,在與windows自帶的計算器比較之后發(fā)現(xiàn),結(jié)果只能精確到小數(shù)點后一位或者兩位甚至有些情況只能精確到整數(shù)個位,也就是說后面的數(shù)字全是沒有價值的,因此用此計算器
13、計算的開方結(jié)果只能作為一個參考值供大家使用。2.3 類層次圖(以下為操作鍵對應(yīng)的操作函數(shù))void ccalculatordlg:onadd() /加void ccalculatordlg:onminus()/減void ccalculatordlg:onmutiply()/乘void ccalculatordlg:ondivid()/除void ccalculatordlg:onsign() /處理正負(fù)號void ccalculatordlg:onequal()/處理等號void ccalculatordlg:onsqrt()/處理開根號void ccalculatordlg:onrecip
14、() /求倒數(shù)void ccalculatordlg:onpoint()/處理小數(shù)點void ccalculatordlg:calculate()/處理計算void ccalculatordlg:run_func()/處理求根和求倒void ccalculatordlg:updatedisplay()/處理顯示2.4代碼說明2.4.1開發(fā)環(huán)境microsoft visual c+ 6.0 2.4.2主要開發(fā)步驟1、創(chuàng)建基于對話框的mfc(exe)應(yīng)用程序calculator;2、在對話框窗體上順序創(chuàng)建0到9十個數(shù)字按鈕,并設(shè)置其標(biāo)識符分別為idc_0到idc_9,其它按鈕按下表設(shè)置屬性:3、按
15、表2添加各運算按鈕的消息處理函數(shù)4、為使0到9十個數(shù)字按鈕響應(yīng)相同的消息處理函數(shù),定義宏on_command_range5、在頭文件calculatordlg.h中添加類型、成員變量及成員函數(shù)6、部分變量的初始化7、添加各功能代碼2.4.3代碼說明1.為使0到9十個數(shù)字按鈕響應(yīng)相同的消息處理函數(shù),定義宏on_command_range(1) / calculatordlg.h/afx_msg(ccalculatordlg)virtual bool oninitdialog();afx_msg void onsyscommand(uint nid, lparam lparam);afx_msg
16、void onpaint();afx_msg hcursor onquerydragicon();afx_msg void onadd();afx_msg void onminus();afx_msg void onmutiply();afx_msg void ondivid();afx_msg void onclear();afx_msg void onsign();afx_msg void onpoint();afx_msg void onequal();afx_msg void onsqrt();afx_msg void onrecip();afx_msg void onoperandi
17、nput(uint iid);/注意先向類中添加protected 型成員函數(shù),然后再屏蔽掉,在此位置添加此說明/afx_msg(2)/calculatordlg.cppbegin_message_map(ccalculatordlg, cdialog)/afx_msg_map(ccalculatordlg)on_wm_syscommand()on_wm_paint()on_wm_querydragicon()on_bn_clicked(idc_add, onadd)on_bn_clicked(idc_minus, onminus)on_bn_clicked(idc_mutiply, onmu
18、tiply)on_bn_clicked(idc_divid, ondivid)on_bn_clicked(idc_clear, onclear)on_bn_clicked(idc_sign, onsign)on_bn_clicked(idc_point, onpoint)on_bn_clicked(idc_equal, onequal)on_bn_clicked(idc_sqrt, onsqrt)on_bn_clicked(idc_recip, onrecip)on_command_range(idc_0,idc_9,onoperandinput)/使用一個消息函數(shù)來處理對某個id范圍內(nèi)所有控
19、件的命令響應(yīng)/afx_msg_mapend_message_map()2.在頭文件calculatordlg.h中添加類型、成員變量及成員函數(shù)(1)自定義類型enum operator opnone,opadd,opsubtract,opmultiply,opdivide;enum calcerror errnone,errdividebyzero;enum func funcsin, functan, funccos, funcsqrt, funcsqre, funcln, funclog, funcn, funcrec, funcexp, funcnone;(2)成員變量及函數(shù)float
20、m_operand;/存儲當(dāng)前輸入的操作數(shù)float m_accum; /存儲當(dāng)前的計算結(jié)果bool m_bcoff;/標(biāo)識當(dāng)前輸入是否是小數(shù)float m_coff; /小數(shù)輸入時的系數(shù)operator m_operator;/enum型變量用以標(biāo)識當(dāng)前運算符calcerror m_errorstate; /enum型變量用以標(biāo)識當(dāng)前運算狀態(tài)func m_func; /enum型變量用以標(biāo)識當(dāng)前運算函數(shù)類型bool m_boperandavail; /標(biāo)識當(dāng)前輸入是否為新輸入數(shù)字void calculate();/處理普通計算void updatedisplay();/處理顯示void ru
21、n_func();/處理函數(shù)運算(3)為編輯框添加cstring 變量m_result (選中編輯框,按住ctrl+w即可)3.部分變量的初始化ccalculatordlg:ccalculatordlg(cwnd* pparent /*=null*/): cdialog(ccalculatordlg:idd, pparent)/afx_data_init(ccalculatordlg)m_result = _t();/afx_data_init/ note that loadicon does not require a subsequent destroyicon in win32m_hic
22、on = afxgetapp()-loadicon(idr_mainframe);m_coff=0.1;m_bcoff=0;m_errorstate = errnone;m_boperandavail=false;m_operator=opnone;另:在文件calculatordlg.cpp中添加#include math.h4. 添加各功能代碼(1)數(shù)字輸入消息處理函數(shù)void ccalculatordlg:onoperandinput(uint iid)assert(iid = idc_0 & iid = idc_9);if(m_errorstate!=errnone)return;if
23、(!m_boperandavail)m_operand=0;if(!m_bcoff)m_operand=m_operand*10+(iid-idc_0);elsem_operand=m_operand+(iid-idc_0)*m_coff;m_coff*=0.1;m_boperandavail=true;updatedisplay();(2)運算符消息處理函數(shù)void ccalculatordlg:onadd() /加/ todo: add your control notification handler code herecalculate();m_operator=opadd;void
24、ccalculatordlg:onminus()/減/ todo: add your control notification handler code herecalculate();m_operator=opsubtract;void ccalculatordlg:onmutiply()/乘/ todo: add your control notification handler code herecalculate();m_operator=opmultiply;void ccalculatordlg:ondivid()/除/ todo: add your control notific
25、ation handler code herecalculate();m_operator=opdivide;void ccalculatordlg:onsign() /處理正負(fù)號/ todo: add your control notification handler code herem_operand*=-1;updatedisplay();void ccalculatordlg:onequal()/處理等號/ todo: add your control notification handler code herecalculate();m_operator=opnone;void c
26、calculatordlg:onsqrt()/處理開根號/ todo: add your control notification handler code herem_func=funcsqrt;run_func();void ccalculatordlg:onrecip() /求倒數(shù)/ todo: add your control notification handler code herem_func=funcrec;run_func();void ccalculatordlg:onpoint()/處理小數(shù)點/ todo: add your control notification ha
27、ndler code herem_bcoff=1;updatedisplay();void ccalculatordlg:calculate()/處理計算if(m_errorstate!=errnone)return;if(m_boperandavail)if(m_operator=opnone)m_accum=m_operand;else if(m_operator=opmultiply)m_accum*=m_operand;else if(m_operator=opdivide)if(m_operand=0)m_errorstate=errdividebyzero;elsem_accum/
28、=m_operand;else if(m_operator=opadd)m_accum+=m_operand;else if(m_operator=opsubtract)m_accum-=m_operand;m_boperandavail=false;m_bcoff=0;m_coff=0.1;updatedisplay();void ccalculatordlg:run_func()/處理求根和求倒if (m_errorstate != errnone)return;if (m_boperandavail)if(m_func=funcsqrt)m_operand=sqrt(m_operand);if(m_func=funcrec)m_operand=1/m_operand;updatedisplay();void ccalculatordlg:updatedisplay()/處理
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商場購物卡合同范例
- 個體勞務(wù)合同范例
- 常州電梯拆除回收合同模板
- 微信 合同范例
- cro技術(shù)服務(wù)合同范例
- 《感受文化影響》課件
- 廈門勞動局合同范例
- 債券銷售居間合同范例
- 液凈設(shè)備制造新篇章
- 品牌牛奶轉(zhuǎn)讓合同范例
- Q/GDW-1738-2012配電網(wǎng)規(guī)劃設(shè)計技術(shù)導(dǎo)則
- 包裝盒結(jié)構(gòu)的認(rèn)識
- 龍口粉絲行業(yè)分析
- 《跨境電商應(yīng)用英語1》課程標(biāo)準(zhǔn)
- 醫(yī)保集采工作總結(jié)
- 匾額制作工藝
- 維護(hù)社會穩(wěn)定規(guī)定
- 急性心力衰竭通用課件
- 醫(yī)療廢物的減量化處理方法與技術(shù)
- 中國心血管病風(fēng)險評估和指南
- 建筑結(jié)構(gòu)抗震能力評估技術(shù)
評論
0/150
提交評論