呂顯強(qiáng)陶冶楊文蓮楊松吳俊峰石云峰
(大連海洋大學(xué)教育技術(shù)與計(jì)算中心,遼寧大連116023)
基于對(duì)象模型的船舶電力負(fù)荷表格計(jì)算系統(tǒng)
呂顯強(qiáng),陶冶,楊文蓮,楊松,吳俊峰,石云峰
(大連海洋大學(xué)教育技術(shù)與計(jì)算中心,遼寧大連116023)
針對(duì)船舶電力負(fù)荷計(jì)算輸入數(shù)據(jù)多、表格設(shè)計(jì)復(fù)雜等問題,提出了一種利用MFC基于對(duì)象模型的表格計(jì)算系統(tǒng),采用View對(duì)象負(fù)責(zé)表格的繪制和各種項(xiàng)目的計(jì)算,利用編輯框定位方式來模擬手工表格輸入的過程,有效地避免了基于Form-Control法輸入數(shù)據(jù)和最終打印效果不一致的缺陷,實(shí)現(xiàn)了所見即所得。View-Document對(duì)象模型能夠獨(dú)立處理表格數(shù)據(jù),并支持打開、保存和打印操作,該系統(tǒng)具有可視化和仿真操作能力,實(shí)例顯示具有較高的執(zhí)行效率和應(yīng)用效果。
電力負(fù)荷;對(duì)象模型;表格計(jì)算;微軟基礎(chǔ)類庫
船舶電站是船舶動(dòng)力的主要來源,合理的電站容量配置不僅關(guān)系到整個(gè)船舶的各種電力系統(tǒng)及設(shè)備的使用壽命,而且可有效地確保船舶電力使用的安全性和可靠性,并最終達(dá)到船舶經(jīng)濟(jì)運(yùn)行的目標(biāo)。船舶電力負(fù)荷計(jì)算主要采用3種方法:概率法、晝夜航行圖表法和負(fù)荷系數(shù)法[1]。其中負(fù)荷系數(shù)法是目前廣泛使用的一種方法,而概率法則需要具備相同類型母型船的相關(guān)資料,晝夜航行圖表法適用于小型船舶或電動(dòng)輔助性船舶,在一定程度上限制了使用范圍。負(fù)荷系數(shù)法一般需要船舶電力設(shè)計(jì)人員根據(jù)船舶設(shè)備的實(shí)際工況 (包括航行狀態(tài)、工作狀態(tài)、進(jìn)出港狀態(tài)和停泊狀態(tài)等),分別統(tǒng)計(jì)并計(jì)算出硒裝設(shè)備、輪機(jī)設(shè)備、空調(diào)冷藏設(shè)備、弱電及其它設(shè)備的數(shù)量,以及電動(dòng)機(jī)額定功率、機(jī)械負(fù)荷系數(shù)、電動(dòng)機(jī)負(fù)荷系數(shù)、功率因數(shù)、所需有功和無功功率等,以獲得船舶需要配置的主發(fā)動(dòng)機(jī)和備用發(fā)電機(jī)的臺(tái)數(shù)。目前,負(fù)荷系數(shù)法主要通過設(shè)計(jì)人員手工建立表格的方法進(jìn)行計(jì)算,統(tǒng)計(jì)修改困難,工作量很大。
隨著計(jì)算機(jī)技術(shù)的發(fā)展,電力系統(tǒng)的計(jì)算機(jī)仿真已成為電力系統(tǒng)設(shè)計(jì)、規(guī)劃、運(yùn)行及故障分析的重要工具。有關(guān)這方面的研究主要集中在電動(dòng)機(jī)建模方面,Iked等[2]提出了一種新的計(jì)算機(jī)仿真方法用于異步電動(dòng)機(jī)暫態(tài)及數(shù)學(xué)模型的研究;Bossio等[3]建立了動(dòng)態(tài)電動(dòng)機(jī)模型用于實(shí)現(xiàn)定子鐵心故障的分析。在船舶電力計(jì)算機(jī)輔助計(jì)算方面,大部分以基于傳統(tǒng)的窗體設(shè)計(jì)為主,王煥文等[4]采用Visual Basic在Windows窗體上利用控件對(duì)象,作為與設(shè)計(jì)人員交互的手段,用戶通過在文本框中輸入各類參數(shù)值,并利用指定的算法模型進(jìn)行處理和計(jì)算。但上述方法有一定的缺陷,一是控件過多,設(shè)計(jì)難度大;二是人機(jī)功效差。為此,本研究中作者根據(jù)上述情況,重點(diǎn)研究采用面向?qū)ο蠹夹g(shù),利用Visual C++的MFC(微軟基礎(chǔ)類庫)中的View-Documents對(duì)象思想[5-6],設(shè)計(jì)出真正意義上的船舶電力負(fù)荷計(jì)算的 “電子表格”,可方便地進(jìn)行各參數(shù)的輸入、保存、計(jì)算和打印,該表格與設(shè)計(jì)人員手工計(jì)算的表格完全一致,實(shí)現(xiàn)了所見即所得,設(shè)計(jì)人員可以在完全熟悉的環(huán)境下進(jìn)行輸入和計(jì)算,大大提高了計(jì)算效率。
面向?qū)ο蠓椒?(Object-oriented method)是一種按照人類認(rèn)識(shí)世界的思維來分析和解決問題,并將 “對(duì)象”的思想引入到軟件開發(fā)過程中,以對(duì)象為中心,以類和繼承為構(gòu)造機(jī)制的軟件系統(tǒng)。面向?qū)ο蟮某绦蛟O(shè)計(jì)語言具有封裝性、繼承性和多態(tài)性,可讀性強(qiáng),易于維護(hù),大大降低了代碼的重復(fù)率和工作效率。
模擬船舶電力負(fù)荷手工計(jì)算表格是一項(xiàng)比較復(fù)雜的工程,主要包括前臺(tái)表格界面的繪制和后臺(tái)文檔的處理。其中前臺(tái)表格界面的設(shè)計(jì)要涉及大量的位置計(jì)算和交互性的處理,因此設(shè)計(jì)比較困難,為此,本研究中采用了Visual C++的MFC中的View-Document對(duì)象的思想,將二者單獨(dú)進(jìn)行處理,減少了代碼冗余度,提高了效率。
1.1 船舶設(shè)備類的設(shè)計(jì)和封裝
在船舶電力負(fù)荷計(jì)算表中,用戶要預(yù)先輸入大量的設(shè)備參數(shù),為此定義了船舶設(shè)備CEDevice類,該類封裝了船舶設(shè)備的基本參數(shù)值。此外,該類還具有自繪能力,以實(shí)現(xiàn)用戶每次輸入一個(gè)設(shè)備的同時(shí),系統(tǒng)能夠自動(dòng)完成對(duì)該設(shè)備行所有單元格邊框的繪制。CEDevice類的原型設(shè)計(jì)如下:
class CEDevice:public CObject
{
public:
CString m_strName;//設(shè)備名稱
int m_nNumber;//設(shè)備數(shù)量
float m_fMaxAxisPower;//最大機(jī)械軸功率
float m_fRatedData[5];//電機(jī)額定數(shù)據(jù)
float m_fSumPowerNeeded;//所需總功率
float m_fK1;//電動(dòng)機(jī)利用系數(shù)
float m_fStateData[8][7];//8種工作狀態(tài)數(shù)組
int* m_nItemWidth;//項(xiàng)目寬度指針變量
CRect* m_ItemRect;//項(xiàng)目矩形尺寸指針變量
…
public:
void Init(int*ItemWidth,CRect*pRect,int dd,int TextHeight);//表格初始化函數(shù)
void DrawText(CDC*pDC,int nLeft,int nTop,BYTE bFlag[]);//自繪設(shè)備表格標(biāo)題函數(shù)
void SetItemRect(int nLeft,int nTop,BYTE bFlag []);//計(jì)算單元格矩形尺寸函數(shù)
void DrawBorder(CDC*pDC,intnLeft,int nTop,BYTE bFlag[]);//繪制表格邊框函數(shù)
…
};
1.2 表格對(duì)話框類的創(chuàng)建
用戶在新創(chuàng)建一張船舶電力負(fù)荷計(jì)算表格前,均需要事先確定船舶名稱、工作狀態(tài)名稱、設(shè)備分類名稱以及I類和II類負(fù)荷系數(shù)的大小。用戶也可以自定義新的工況名稱和設(shè)備分類名稱,這些功能均需要通過對(duì)話框完成,本研究中將這些功能抽象地定義為對(duì)話框類。對(duì)話框類的原型設(shè)計(jì)如下:
class CNewDialog:public CDialog
{ public:
CStringm_strDEviceCategoryName[8];//設(shè)備分類名稱
CStringm_strStatName[8];//工作狀態(tài)名稱
CListBoxm_listDeviceCategory;//設(shè)備分類列表框CListBoxm_listWorkState;//工作狀態(tài)列表框CStringm_NEWCATE;//新設(shè)備分類名稱CStringm_NEWSTAT;//新工作狀態(tài)名稱CStringm_strShipName;//船舶名稱floatm_fCoef1;//I類負(fù)荷系數(shù)floatm_fCoef2;//II類負(fù)荷系數(shù)
…
};
新建計(jì)算表格對(duì)話框如圖1所示。
圖1 電力負(fù)荷計(jì)算表的 “新建”對(duì)話框Fig.1 The“new”dialog of tabular computation for power loading
1.3 編輯框類的定義
在船舶電力負(fù)荷計(jì)算表中,由于該表格是通過多條直線繪制出的,所有單元格均為不可編輯狀態(tài)。為了能夠?qū)崿F(xiàn)用戶即點(diǎn)即輸入的效果,以實(shí)現(xiàn)模擬用戶手工填寫表格的要求,本研究中定義了編輯框類,該類繼承于標(biāo)準(zhǔn)編輯框類,并重載了鍵盤單擊OnKeyDown函數(shù),以實(shí)現(xiàn)用戶按上下左右方向鍵的同時(shí),能動(dòng)態(tài)改變編輯框的位置。編輯框類的原型設(shè)計(jì)如下:
class CMyEdit:public CEdit
{
public:
CMyEdit();
virtual~CMyEdit();
protected:
afx_msg void OnKeyDown(UINT nChar,UINT nRepC-nt,UINT nFlags);
};
MFC通常使用View-Document結(jié)構(gòu)來管理數(shù)據(jù)和視圖顯示,文檔 (CDocument)負(fù)責(zé)數(shù)據(jù)的輸入、輸出和文件管理;視 (CView)類從文檔結(jié)構(gòu)中獲取數(shù)據(jù);框架窗口 (CFrameWnd)類負(fù)責(zé)整個(gè)系統(tǒng)移動(dòng)、最大化、最小化和關(guān)閉應(yīng)用程序操作等,該模型將數(shù)據(jù)管理和圖形顯示進(jìn)行了分離,有效地降低了管理的難度[6]。在船舶電力負(fù)荷計(jì)算中,主要包括用戶表格繪制、表格編輯 (插入和刪除行列)、文件保存和打印操作,輸入數(shù)據(jù)量大,表格操作和數(shù)據(jù)管理復(fù)雜,因此,本研究中將上述內(nèi)容采用MFC的View-Document對(duì)象來建模,以減輕設(shè)計(jì)難度。
2.1 CELoadView類
CELoadView類主要作為顯示表格和用戶的操作界面,以便將文檔類的內(nèi)容顯示到屏幕或進(jìn)行打印和打印預(yù)覽操作。由于船舶電力負(fù)荷計(jì)算表格內(nèi)容多,本研究中采用了MFC的CScrollView類作為其父類,以支持表格的滾動(dòng)功能。由于CEDevice設(shè)備類已經(jīng)支持表格設(shè)備數(shù)據(jù)的自繪功能,因此, CELoadView類主要負(fù)責(zé)繪制表格的標(biāo)題,該功能由DrawSummary、DrawHeadText和FillBK函數(shù)來實(shí)現(xiàn)。此外,在CELoadView類中還設(shè)計(jì)了兩個(gè)重要的對(duì)象成員,即m_Edit和m_Combo,它們主要用于實(shí)現(xiàn)與用戶的交互性操作。CELoadView類的原型設(shè)計(jì)如下:
class CELoadView:public CScrollView
{
public:
CComboBoxm_Combo;//負(fù)荷類別組合框?qū)ο?/p>
CMyEditm_Edit;//輸入編輯框
int nTextHeight;//文字高度
CEDevice*m_pEDevice[8];//8種設(shè)備類型指針RectRowData*m_pRectRowData;//每行數(shù)據(jù)矩形尺寸(所有列)
int x,y;//鼠標(biāo)滾動(dòng)偏移量
SelectedPostion m_SelectedPos;//記錄用戶選擇位置
intm_nPageWidth,m_nPageHeight;//紙張大小(單位mm)
int*m_nSumWidthPrinted,*m_nSumHeightPrinted;//打印的總寬度、總高度
int p,p1;//水平、垂直分頁數(shù)
public:
…
void MoveCombo(CRect&rect);//負(fù)荷類別組合框移動(dòng)處理函數(shù)
void MoveEdit(CRect&rect);//編輯框移動(dòng)處理函數(shù)
void DrawSummary(CDC*pDC,int nLeft,int nT-op);//統(tǒng)計(jì)行繪制函數(shù)
void DrawHeadText(CDC*pDC,int nLeft,int nTop, CString str);//表格標(biāo)題函數(shù)
void FillBK(CDC*pDC,CRect&rect,CBrush &brush);//表格背景處理函數(shù)
…
};
2.2 CELoadDoc類
CELoadDoc類可以存儲(chǔ)和載入用戶定義的數(shù)據(jù),相當(dāng)于 “容器”功能,它是CDocument類的派生類,其主要功能是將用戶輸入的參數(shù)和表格計(jì)算的數(shù)據(jù)存入到指定的文件中。該系統(tǒng)可以實(shí)現(xiàn)將每艘船的數(shù)據(jù)單獨(dú)存入一個(gè)文件,同時(shí)允許用戶打開已經(jīng)存在的文件,方便用戶進(jìn)行修改。CELoad-Doc類的原型設(shè)計(jì)如下:
class CELoadDoc:public CDocument
{
public:
CString m_strShipName;//船名
CStringm_strEngineChosen[2][8];//已選定的發(fā)電機(jī)名稱
int m_nDeviceNumber[8];//各類設(shè)備數(shù)量
floatm_fSumP1[8],m_fSumQ1[8];//I類負(fù)荷總有功功率,總無功率
floatm_fSumP2[8],m_fSumQ2[8];//II類負(fù)荷總有功功率,總無功率
floatm_fSumP1Coef[8],m_fSumQ1Coef[8];//考慮同時(shí)系數(shù)的I類負(fù)荷總功率
floatm_fSumP2Coef[8],m_fSumQ2Coef[8];//考慮同時(shí)系數(shù)的II類負(fù)荷總功率
floatm_fSumP[8],m_fSumQ[8];//考慮同時(shí)系數(shù)的總功率之和
floatm_fSumP5[8],m_fSumQ5[8];//考慮網(wǎng)絡(luò)傳輸中功率損失5%時(shí)的總功率
floatm_cos[8];//加權(quán)平均值功率
floatm_fCoef1,m_fCoef2;//負(fù)荷系數(shù)
…
};
在通常情況下,船舶設(shè)備本身的功率與負(fù)荷計(jì)算表中的實(shí)際計(jì)算功率是不同的。此外,船舶的電力設(shè)備還可能受到間歇負(fù)荷和特殊設(shè)備的影響。本研究中綜合考慮上述三類情況,相應(yīng)的系數(shù)計(jì)算主要包括以下3個(gè)方面[7]。
3.1 電動(dòng)機(jī)、機(jī)械負(fù)荷的各類系數(shù)
船舶電力負(fù)荷計(jì)算表中的主要功率和各類系數(shù)的計(jì)算公式如下:
1)電動(dòng)機(jī)利用系數(shù)K1=P2/P1;
2)機(jī)械負(fù)荷系數(shù)K2=P3/P2;
3)電動(dòng)機(jī)負(fù)荷系數(shù)K3=K1×K2=P3/P1;
4)電動(dòng)機(jī)額定效率η=P1/P4;
5)電動(dòng)機(jī)實(shí)際所需總功率
Pe≈K3×P4=(K3/η)×P1=P3/η;
其中:P1為電動(dòng)機(jī)額定功率 (kW);P2為機(jī)械軸上所需的最大軸功率 (kW);P3為機(jī)械軸上的輸出功率 (kW);P4為電動(dòng)機(jī)需要從電網(wǎng)獲取的功率 (kW)。上述幾類系數(shù)均由本系統(tǒng)自動(dòng)完成計(jì)算。
3.2 同時(shí)使用系數(shù)K0
K0是運(yùn)行的間歇載荷最大需要功率之和與所有間斷負(fù)載的最大需要功率之和的比值。目前,在國內(nèi)外大多數(shù)計(jì)算中,同時(shí)使用系數(shù)K0都選為0.4或0.5。
3.3 其他特殊設(shè)備系數(shù)
1)廚房及洗衣設(shè)備 這些設(shè)備工作的時(shí)段和時(shí)間的長短都較為固定,其負(fù)荷系數(shù)一般取為0.2~0.3。
2)舵機(jī) 該設(shè)備正常工作時(shí)所需要的功率遠(yuǎn)小于其額定功率,其負(fù)荷系數(shù)可以考慮取小值,一般取為0.2~0.3。
3)空調(diào) 一般按照2臺(tái)壓縮機(jī)同時(shí)運(yùn)行計(jì)算制冷量,此外空調(diào)還應(yīng)作為間歇負(fù)荷考慮。
交互操作設(shè)計(jì)是本研究的重點(diǎn)和難點(diǎn),為了能夠記錄用戶對(duì)表格數(shù)據(jù)的操作,以符合重繪表格的要求,本研究在文檔類中采用了動(dòng)態(tài)鏈表作為主要的數(shù)據(jù)結(jié)構(gòu)支持,從4個(gè)方面進(jìn)行了設(shè)計(jì)。
1)編輯框定位 根據(jù)用戶鼠標(biāo)的位置坐標(biāo),將編輯框移動(dòng)到指定的單元格位置,以實(shí)現(xiàn)即點(diǎn)即輸入的目的。該方法的步驟如下:
(1)返回鼠標(biāo)坐標(biāo)點(diǎn)point,存入到變量m_ SelectedPos中。
(2)根據(jù)已經(jīng)繪制的表格邊框線,判定m_ SelectedPos所處的單元格,并返回該單元格的尺寸m_ItemRect及行列坐標(biāo)i,j。
(3)修改編輯框的位置,并改變編輯框的大小與該單元格相同。
(4)將編輯框的內(nèi)容輸入到由CEDevice類型的指針數(shù)組m_pEDevice[i][j]所指向的內(nèi)存空間存放。
(5)調(diào)用Invalidate方法,更新視圖,以顯示編輯框新輸入的內(nèi)容。
2)表格行刪除 該方法的步驟如下:
(1)返回待刪除行的鼠標(biāo)坐標(biāo)點(diǎn)point,存入到變量m_SelectedPos中。
(2)根據(jù)已經(jīng)繪制的表格邊框線,判定m_ SelectedPos所處的單元格,并返回該單元格的尺寸m_ItemRect及行坐標(biāo)i。
(3)釋放指針變量m_pEDevice[i]所指向的內(nèi)存空間。
(4)調(diào)用Invalidate方法,更新視圖。
3)表格行插入 該方法的步驟如下:
(1)返回待插入行的鼠標(biāo)坐標(biāo)點(diǎn)point,存入到變量m_SelectedPos中。
(2)根據(jù)已經(jīng)繪制的表格邊框線,判定m_ SelectedPos所處的單元格,并返回該單元格的尺寸m_ItemRect及行列坐標(biāo)i,j。
(3)使用new方法動(dòng)態(tài)分配CEDevice類型大小的內(nèi)存空間,由指針變量m_pEDevice[j]指向,并初始化該內(nèi)存空間的全部成員變量。
(4)調(diào)用Invalidate方法,更新視圖。
上述3種基本操作均以CEDevice類型的指針作為數(shù)據(jù)支持,均可共享該部分?jǐn)?shù)據(jù),實(shí)時(shí)地反映用戶操作的情況,并由CDocument文檔類負(fù)責(zé)處理,進(jìn)行保存和打開文件的操作。
4)船舶設(shè)備數(shù)據(jù)的鏈表結(jié)構(gòu) 考慮到在實(shí)際應(yīng)用中,用戶可能隨時(shí)添加和刪除表格數(shù)據(jù),因此當(dāng)用戶在執(zhí)行第1) ~第3)步時(shí),均需要訪問文檔類的數(shù)據(jù),本研究在CDocument類中增加了鏈表指針數(shù)組m_RowArray,程序通過坐標(biāo)變換可以先獲得該船舶設(shè)備數(shù)據(jù)所在行的坐標(biāo)i和j,并通過m_RowArraya[i]引用即可得到該數(shù)據(jù)所在的內(nèi)存空間的地址。
對(duì)于表格的行刪除操作,可以通過程序
deletem_RowArray[i]
m_RowArray.RemoveAt(m_SelectedPosRow)
來釋放某種船舶的數(shù)據(jù),以達(dá)到刪除該設(shè)備的目的。
對(duì)于表格的插入操作,主要包括兩步:動(dòng)態(tài)分配設(shè)備類的內(nèi)存空間 (new CEDevice)以及增加鏈表數(shù)據(jù)元素,其程序如下:
m_RowArray.InsertAt(m_SelectedPos.Row,new CEDevice)
此外,為了能夠重新顯示用戶修改的數(shù)據(jù),該鏈表也作為表格重繪的數(shù)據(jù)支持。程序首先進(jìn)行電力負(fù)荷計(jì)算表的字體設(shè)置、顯示滾動(dòng)范圍設(shè)置和表頭輸出,再判定鏈表指針是否到達(dá)表尾。如果為否,則修改鏈表指針,使其指向下一船舶設(shè)備行數(shù)據(jù),并輸出該設(shè)備數(shù)據(jù)和繪制表格邊框。上述過程循環(huán)進(jìn)行,當(dāng)鏈表指針到達(dá)表尾,則退出循環(huán),輸出選定方案的各項(xiàng)統(tǒng)計(jì)數(shù)據(jù)。
上述過程相關(guān)的算法流程如圖2所示。
圖2 船舶電力負(fù)荷表格交互功能流程圖Fig.2 The flow charts of interactive function for ship power loading
船舶的電力負(fù)荷計(jì)算不僅作為船舶電站容量的參考,是船舶電力系統(tǒng)發(fā)動(dòng)機(jī)配置的基礎(chǔ),直接影響到發(fā)動(dòng)機(jī)型號(hào)的選擇,而且還可有效地避免船舶電站容量匹配不合理,資源和資金浪費(fèi)的缺陷。本研究中采用面向?qū)ο蟮姆椒?設(shè)計(jì)了完全仿真手工繪制計(jì)算的電子表格,實(shí)際運(yùn)行情況如圖3所示。
從圖3可以看出,由于使用了編輯框定位技術(shù),使原來通過繪制方法得到的靜態(tài)表格處于可編輯狀態(tài),用戶只要使用鼠標(biāo)單擊表格中的任意單元格,即可對(duì)該單元格進(jìn)行編輯操作。由于每個(gè)單元格可以通過行、列標(biāo)號(hào)記錄該單元格所對(duì)應(yīng)的數(shù)據(jù),因此,將移動(dòng)的編輯框和后臺(tái)數(shù)據(jù)建立關(guān)聯(lián),當(dāng)編輯框離開單元格后,即修改該單元格對(duì)應(yīng)的數(shù)據(jù),確保了顯示內(nèi)容和后臺(tái)保存內(nèi)容的一致性。從應(yīng)用角度看,該單元格有效地避免了用戶利用控件方法接受用戶輸入的缺陷,實(shí)現(xiàn)了用戶全屏幕編輯和修改數(shù)據(jù)。
本研究中提出利用MFC的View-Document對(duì)象結(jié)構(gòu),設(shè)計(jì)船舶電力負(fù)荷計(jì)算的電子表格系統(tǒng)。與傳統(tǒng)的基于窗體-控件的輸入界面不同,該方法模擬了設(shè)計(jì)人員手工繪制表格的方法,根據(jù)用戶鼠標(biāo)的點(diǎn)擊坐標(biāo),定位單個(gè)編輯框控件,可修改該單元格對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu),并由CDocument對(duì)象負(fù)責(zé)存盤,集保存和輸入操作為一體,所有的計(jì)算均由計(jì)算機(jī)負(fù)責(zé),用戶完全處于自己最熟悉的可視化環(huán)境中,大大降低了用戶通過表格計(jì)算的難度,該系統(tǒng)具有很好的應(yīng)用前景。
圖3 船舶電力負(fù)荷表格計(jì)算系統(tǒng)的初始界面Fig.3 The initial table of software system for shippower loading
[1] 張統(tǒng)光.淺析船舶電站容量確定和計(jì)算方法[J].中國水運(yùn), 2011,11(2):106-107.
[2] Ikeda M,HIyama T.Simulation studies of the transients of squirrel -cage induction motors[J].IEEE Trans-actions on Energy Conversion,2007,22(2):233-239.
[3] Bossio G R,Solsona JA,Garcna G O,et al.Model for three-phase induction motors with stator core faults[J].Electric Power Applications,IET,2010,4(8):591-602.
[4] 王煥文,王殿卿.船舶電力負(fù)荷計(jì)算軟件開發(fā)[J].中國造船, 2004,45(12):233-237.
[5] 李春葆,章啟俊.Visual C++程序設(shè)計(jì)基礎(chǔ)教程[M].武漢:武漢大學(xué)出版社,2006.
[6] Caragian B.Visual C++6.0程序員指南[M].北京:希望電腦公司,1998.
[7] 顧一清,姚炯,陳逢源.運(yùn)輸船電力負(fù)荷計(jì)算探討[J].船舶設(shè)計(jì)通訊,2010(增刊):65-70.
A tabular com putation software system for ship power loading based on objectmodel
LüXian-qiang,TAO Ye,YANGWen-lian,YANG Song,WU Jun-feng,SHIYun-feng
(Educational Technology&Computer Center,Dalian Ocean University,Dalian 116023,China)
Considering the problem of abundant input data and complex table design for ship power loading,the paper puts forward a tabular computation software system by using MFC objectmodel,which adopts view object to draw tables and calculate the items in tables and uses the editbox to locate the proper position.The method simulates the process of inputting data by handwork,avoids inconsistence between data input and print result as a result of using Form-Controlmethod,and accomplishesW.Y.S.W.Y.G.Furthermore the View-Document objectmodel can dealwith data in table independently,and supports the operations such as file open,save,and print.The proposed method has visual propety and simulation analysis ability.The actual example shows that it has good executive efficiency and pratical effect.
power loading;objectmodel;tabular computation;MFC
U662.6;TP273
A
2095-1388(2012)04-0377-06
2012-05-10
大連海洋大學(xué)教育教學(xué)改革研究項(xiàng)目 (2011);遼寧省優(yōu)秀青年骨干教師資助計(jì)劃項(xiàng)目 (2006);遼寧省教育廳高等學(xué)??蒲杏?jì)劃項(xiàng)目 (2008146)
呂顯強(qiáng) (1957-),男,副教授。E-mail:lxq@dlou.edu.cn