基于VC界面的输电线路模型建立课案Word文档格式.docx

上传人:b****4 文档编号:7756282 上传时间:2023-05-09 格式:DOCX 页数:27 大小:146.91KB
下载 相关 举报
基于VC界面的输电线路模型建立课案Word文档格式.docx_第1页
第1页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第2页
第2页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第3页
第3页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第4页
第4页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第5页
第5页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第6页
第6页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第7页
第7页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第8页
第8页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第9页
第9页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第10页
第10页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第11页
第11页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第12页
第12页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第13页
第13页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第14页
第14页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第15页
第15页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第16页
第16页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第17页
第17页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第18页
第18页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第19页
第19页 / 共27页
基于VC界面的输电线路模型建立课案Word文档格式.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于VC界面的输电线路模型建立课案Word文档格式.docx

《基于VC界面的输电线路模型建立课案Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于VC界面的输电线路模型建立课案Word文档格式.docx(27页珍藏版)》请在冰点文库上搜索。

基于VC界面的输电线路模型建立课案Word文档格式.docx

在正常设 

计荷载作用下,即使材料应力没有超过弹性范围,也会由于结构的有限变形而表 

现出一定的几何非线性行为。

从有限位移理论的角度来分析,引起大跨度悬索输电线路的几何非线性的因素主要 

有三个:

①缆索垂度效应;

②梁柱效应:

③大位移。

下面的设计将围绕此部分内容展开,是此部分内容的实现。

2.方案设计

输电线路模型的建立需要在一个界面输入输电线路的长度、高度、间距等参数,同时在输入各项参数后,需要生成一个输电线路的模型,用户可根据情况选择保存或不保存所生成的图形。

根据设计要求,采用的方案如下。

利用VC界面编程技术实现各项要求,包含用户登录界面、参数输入界面、图形生成及保存功能。

主要设计思想是自顶向下的编程思想。

3.软件编程

输电线路模型的建立采用自顶向下的设计思想,根据建模的需求来设计程序。

首先需要设计一个用户登录界面,在这个子程序中,我将用户名设为sau,密码为2012040702078,当用户在没有输入用户名和密码的情况下按确定键,程序将提示“用户名或密码不能为空”,当用户输入的用户名或密码错误时,程序将显示“用户名或密码输入错误”,当用户输入正确的用户名和密码,程序将跳转到参数输入界面。

登录界面程序的源代码如下:

#include"

stdafx.h"

DrawWire.h"

LoginDlg.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CLoginDlgdialog

CLoginDlg:

:

CLoginDlg(CWnd*pParent/*=NULL*/)

:

CDialog(CLoginDlg:

IDD,pParent)

{

//{{AFX_DATA_INIT(CLoginDlg)

m_strPassword=_T("

"

);

m_strUserName=_T("

//}}AFX_DATA_INIT

}

voidCLoginDlg:

DoDataExchange(CDataExchange*pDX)

CDialog:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CLoginDlg)

DDX_Control(pDX,IDC_EDIT_PASSWORD,m_editPassword);

DDX_Control(pDX,IDC_EDIT_USERNAME,m_editUserName);

DDX_Text(pDX,IDC_EDIT_PASSWORD,m_strPassword);

DDV_MaxChars(pDX,m_strPassword,32);

DDX_Text(pDX,IDC_EDIT_USERNAME,m_strUserName);

DDV_MaxChars(pDX,m_strUserName,32);

//}}AFX_DATA_MAP

BEGIN_MESSAGE_MAP(CLoginDlg,CDialog)

//{{AFX_MSG_MAP(CLoginDlg)

//}}AFX_MSG_MAP

ON_EN_CHANGE(IDC_EDIT_PASSWORD,&

OnEnChangeEditPassword)

ON_EN_CHANGE(IDC_EDIT_USERNAME,&

OnEnChangeEditUsername)

END_MESSAGE_MAP()

BOOLCLoginDlg:

OnInitDialog()

OnInitDialog();

m_editUserName.SetFocus();

returnFALSE;

/////////////////////////////////////////////////////////////////////////////

//CLoginDlgmessagehandlers

OnOK()

UpdateData();

m_strUserName="

sau"

;

//设置用户名

m_strPassword="

2012040702078"

//设置密码

if(m_strUserName.IsEmpty()||m_strPassword.IsEmpty())//检查用户输入是否有效

{

AfxMessageBox("

用户名和密码不能为空!

return;

}

if(m_strUserName=="

&

&

m_strPassword=="

78"

CDialog:

OnOK();

else

用户名或密码输入错误"

当用户输入了正确的用户名和密码,此时应显示出参数输入界面,根据输电线路建模的需要,我将输入的参数设定为电线杆的个数、高度、间距以及输电线路的总长度。

程序运行时默认电线杆的数量为3,高度为140米,间距为150米,输电线路的总长为360米,即每两个电线杆之间的线路长度为180米。

用户可根据自己的需要更改任意参数。

同时,程序还要考虑到实际情况,当用户输入的间距大于两个电线杆之间线路的长度时,此时明显不符合实际,系统将提示“长度不能小于间距”。

参数输入界面程序的源代码如下:

//DrawWireDlg.cpp:

implementationfile

DrawWireDlg.h"

DrawPicDlg.h"

//CDrawWireDlgdialog

CDrawWireDlg:

CDrawWireDlg(CWnd*pParent/*=NULL*/)

CDialog(CDrawWireDlg:

//{{AFX_DATA_INIT(CDrawWireDlg)

m_dDistance=150.0;

m_dHeight=140.0;

m_dLength=340.0;

m_iCount=3;

m_hIcon=AfxGetApp()->

LoadIcon(IDR_MAINFRAME);

voidCDrawWireDlg:

//{{AFX_DATA_MAP(CDrawWireDlg)

DDX_Text(pDX,IDC_EDIT_DISTANCE,m_dDistance);

DDX_Text(pDX,IDC_EDIT_HEIGHT,m_dHeight);

DDX_Text(pDX,IDC_EDIT_LENGTH,m_dLength);

DDX_Text(pDX,IDC_EDIT_COUNT,m_iCount);

DDV_MinMaxInt(pDX,m_iCount,2,20);

DDX_Control(pDX,IDC_LIST,m_lstInput);

//DDX_Control(pDX,IDC_EDIT_COUNT,m_editcount);

DDX_Control(pDX,IDC_EDIT_COUNT,m_editCount);

BEGIN_MESSAGE_MAP(CDrawWireDlg,CDialog)

//{{AFX_MSG_MAP(CDrawWireDlg)

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_BUILD,OnBuild)

ON_EN_CHANGE(IDC_EDIT_COUNT,&

OnChangeEditCount)

ON_EN_KILLFOCUS(IDC_EDIT_COUNT,&

OnKillfocusEditCount)

ON_EN_CHANGE(IDC_EDIT_LENGTH,&

OnEnChangeEditLength)

ON_EN_CHANGE(IDC_EDIT_HEIGHT,&

OnEnChangeEditHeight)

//CDrawWireDlgmessagehandlers

BOOLCDrawWireDlg:

SetIcon(m_hIcon,TRUE);

//Setbigicon

SetIcon(m_hIcon,FALSE);

//Setsmallicon

m_lstInput.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

//TODO:

Addextrainitializationhere

intiIndex=0;

m_lstInput.InsertColumn(iIndex++,"

名称"

0,120);

间距"

0,100);

长度"

OnKillfocusEditCount();

returnTRUE;

//returnTRUEunlessyousetthefocustoacontrol

//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow

//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,

//thisisautomaticallydoneforyoubytheframework.

OnPaint()

if(IsIconic())

CPaintDCdc(this);

//devicecontextforpainting

SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);

//Centericoninclientrectangle

intcxIcon=GetSystemMetrics(SM_CXICON);

intcyIcon=GetSystemMetrics(SM_CYICON);

CRectrect;

GetClientRect(&

rect);

intx=(rect.Width()-cxIcon+1)/2;

inty=(rect.Height()-cyIcon+1)/2;

//Drawtheicon

dc.DrawIcon(x,y,m_hIcon);

OnPaint();

HCURSORCDrawWireDlg:

OnQueryDragIcon()

return(HCURSOR)m_hIcon;

OnBuild()

if(UpdateData()&

CDrawPicDlg:

CheckDataValid(this))

//更新Data

m_data.clear();

for(inti=0;

i<

m_lstInput.GetItemCount();

++i)

{

CStringstrDistance=m_lstInput.GetItemText(i,1);

CStringstrLength=m_lstInput.GetItemText(i,2);

ITEMitem=ITEM(atoi(strDistance),atoi(strLength));

if(item.iLength<

item.iDistance)

{

strDistance.Format("

[%s]的长度不能小于间距!

m_lstInput.GetItemText(i,0));

AfxMessageBox(strDistance);

return;

}

m_data.push_back(item);

}

CDrawPicDlgdlgPic(this);

dlgPic.DoModal();

OnOK()

SetFocus();

doubleCDrawWireDlg:

GetDistance()

returnm_dDistance;

GetLength()

returnm_dLength;

GetHeight()

returnm_dHeight;

GetTotalDistance()

returnm_dTotalDistance;

intCDrawWireDlg:

GetCount()

returnm_iCount;

constDatas&

CDrawWireDlg:

GetDatas()

returnm_data;

OnChangeEditCount()

OnKillfocusEditCount()

if(UpdateData())

intiSub=m_iCount-m_lstInput.GetItemCount()-1;

if(iSub==0)

return;

CStringstrText;

abs(iSub);

if(iSub>

0)

intiIndex=m_lstInput.GetItemCount();

strText.Format("

%d-%d"

iIndex+1,iIndex+2);

m_lstInput.InsertItem(iIndex,strText);

m_lstInput.SetItemText(iIndex,1,"

150"

m_lstInput.SetItemText(iIndex,2,"

180"

else

m_lstInput.DeleteItem(m_lstInput.GetItemCount()-1);

m_lstInput.UpdateLength();

SetLength(doubledLength,doubledDistance)

m_dLength=dLength;

m_dTotalDistance=dDistance;

UpdateData(FALSE);

参数输入完毕,当用户点击“建立模型”时,程序应建立出输电线路的模型并将其显示出来,同时,当模型建立后,用户可根据自己的需求选择是否保存图像。

相关程序的源代码如下:

//DrawPicDlg.cpp:

//

drawwire.h"

//CDrawPicDlgdialog

CDrawPicDlg:

CDrawPicDlg(CDrawWireDlg*pParent)

CDialog(CDrawPicDlg:

IDD,NULL)

//{{AFX_DATA_INIT(CDrawPicDlg)

//NOTE:

theClassWizardwilladdmemberinitializationhere

m_pMainDlg=pParent;

m_dP=0;

m_bruBack.CreateSolidBrush(RGB(255,255,255));

m_bruBarBack.CreateSolidBrush(RGB(0,0,0));

voidCDrawPicDlg:

//{{AFX_DATA_MAP(CDrawPicDlg)

DDX_Control(pDX,IDC_STATIC_PIC,m_wndPic);

BEGIN_MESSAGE_MAP(CDrawPicDlg,CDialog)

//{{AFX_MSG_MAP(CDrawPicDlg)

ON_BN_CLICKED(IDC_SAVE,OnSave)

//CDrawPicDlgmessagehandlers

BOOLCDrawPicDlg:

OnSave()

//调用保存对话框

CFileDialogdlgSave(FALSE,"

bmp"

"

保存的图像"

OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"

图像文件|*.bmp||"

if(dlgSave.DoModal()==IDOK)

//生成文件

GeneratePic(dlgSave.GetPathName());

CDCmdc;

CRectrectPic;

CBitmapbitmap;

CPaintDCdc(this);

//获取画图区域

rectPic=GetPicRect();

//创建双缓冲DC

mdc.CreateCompatibleDC(&

dc);

bitmap.Cr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2