📄 qfdview.cpp
字号:
// QFDView.cpp : implementation of the CQFDView class
//
#include "stdafx.h"
#include "QFD.h"
#include "QFDDoc.h"
#include "QFDView.h"
#include "gukexuqiudlg.h"
#include "gongchencuoshidlg.h"
#include "bijiaoduixiang.h"
#include "bijiaoduixiangvsgongcheng.h"
#include "gukexuqiuVSbijiaoduixiang.h"
#include "gongchenVSgongchen.h"
#include "xuqiuvsgongcheng.h"
#include "display.h"
#include "gongchengcuoshi2.h"
#include "gukexuqiuVSgongcheng2.h"
#include "gongchengguanxi2.h"
#include "gukexuqiuVSbijiaoduixiang2.h"
#include "jishuzhibiaoVSbijiaoduixiang2.h"
#include "gongchengcuoshi3.h"
#include "xuqiuVSgongcheng3.h"
#include "xuqiuVSduixiang3.h"
#include "jishuzhibiaoVSduixiang3.h"
#include "gongchengVSgongcheng3.h"
#include "xuqiuVSgongcheng4.h"
#include "xuqiuVSduixiang4.h"
#include "jishuzhibiaoVSbijiaoduixiang4.h"
#include "gongchengVSgongcheng4.h"
#include "gongchengcuoshi4.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CQFDView
IMPLEMENT_DYNCREATE(CQFDView, CView)
BEGIN_MESSAGE_MAP(CQFDView, CView)
//{{AFX_MSG_MAP(CQFDView)
ON_COMMAND(ID_BIJIAODUIXIANG, OnBijiaoduixiang)
ON_COMMAND(ID_GONGCHENCUOSHI, OnGongchencuoshi)
ON_COMMAND(ID_GUKEXUQIU, OnGukexuqiu)
ON_COMMAND(ID_XUQIUVSGONGCHENG, OnXuqiuvsgongcheng)
ON_COMMAND(ID_DISPLAY, OnDisplay)
ON_WM_ERASEBKGND()
ON_COMMAND(ID_REPORT, OnReport)
ON_WM_MOUSEMOVE()
ON_COMMAND(ID_GONGCHENGVSBIJIAODUIXIANG, OnGongchengvsbijiaoduixiang)
ON_COMMAND(ID_XUQIUVSBIAOJIAODUIXIANG, OnXuqiuvsbiaojiaoduixiang)
ON_COMMAND(ID_GONGCHENGGUANXI, OnGongchengguanxi)
ON_WM_LBUTTONDOWN()
ON_COMMAND(ID_GONGCHENGVSBIJIAODUIXIANG2, OnGongchengvsbijiaoduixiang2)
ON_COMMAND(ID_GONGCHENCUOSHI2, OnGongchencuoshi2)
ON_COMMAND(ID_GONGCHENGGUANXI2, OnGongchengguanxi2)
ON_COMMAND(ID_REPORT2, OnReport2)
ON_COMMAND(ID_XUQIUVSGONGCHENG2, OnXuqiuvsgongcheng2)
ON_COMMAND(ID_XUQIUVSBIAOJIAODUIXIANG2, OnXuqiuvsbiaojiaoduixiang2)
ON_COMMAND(ID_GONGCHENCUOSHI3, OnGongchencuoshi3)
ON_COMMAND(ID_GONGCHENCUOSHI4, OnGongchencuoshi4)
ON_COMMAND(ID_GONGCHENGGUANXI3, OnGongchengguanxi3)
ON_COMMAND(ID_GONGCHENGGUANXI4, OnGongchengguanxi4)
ON_COMMAND(ID_GONGCHENGVSBIJIAODUIXIANG3, OnGongchengvsbijiaoduixiang3)
ON_COMMAND(ID_GONGCHENGVSBIJIAODUIXIANG4, OnGongchengvsbijiaoduixiang4)
ON_COMMAND(ID_REPORT3, OnReport3)
ON_COMMAND(ID_REPORT4, OnReport4)
ON_COMMAND(ID_XUQIUVSBIAOJIAODUIXIANG3, OnXuqiuvsbiaojiaoduixiang3)
ON_COMMAND(ID_XUQIUVSBIAOJIAODUIXIANG4, OnXuqiuvsbiaojiaoduixiang4)
ON_COMMAND(ID_XUQIUVSGONGCHENG3, OnXuqiuvsgongcheng3)
ON_COMMAND(ID_XUQIUVSGONGCHENG4, OnXuqiuvsgongcheng4)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CQFDView construction/destruction
CQFDView::CQFDView()
{ print=0;
HI=20.0;
choose=0;// TODO: add construction code here
yq=200;
for(int i=0;i<20;i++)
{
zhongyaodu2[i]=0;
zhongyaodu3[i]=0;
zhongyaodu4[i]=0;
}
}
CQFDView::~CQFDView()
{
}
BOOL CQFDView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CQFDView drawing
void CQFDView::OnDraw(CDC* pDC)
{
CQFDDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if(choose!=0)
{
CRect rect;
CFont fnBig;
CFont* poldfont;
fnBig.CreatePointFont(120,"Arial",pDC);
poldfont=pDC->SelectObject(&fnBig);
FillRect0(pDC,RGB(192,192,192),(0,0),2000,1000);//显示背景色
GetClientRect(&rect);
pDC->SetMapMode(MM_TEXT);
if(print==0)
{
pDC->SetViewportOrg(int(rect.left),int(rect.top));
}
else if(print==1)
{
pDC->SetViewportOrg(offsetx,offsety);
}
else {}
if(choose==1)
{
drawinfo(pDC);
}
else if(choose==2)
{
drawinfo2(pDC);
}
else if(choose==3)
{
drawinfo3(pDC);
}
else if(choose==4)
{
drawinfo4(pDC);
}
else{}
pDC->SelectObject(poldfont);
}
else{}
}
/////////////////////////////////////////////////////////////////////////////
// CQFDView printing
BOOL CQFDView::OnPreparePrinting(CPrintInfo* pInfo)
{
pInfo->SetMinPage(1);
pInfo->SetMaxPage(5);// default preparation
return DoPreparePrinting(pInfo);
}
void CQFDView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
int pageheight=pDC->GetDeviceCaps(VERTSIZE);
int pagewidth=pDC->GetDeviceCaps(HORZSIZE);
int logpixelx=pDC->GetDeviceCaps(LOGPIXELSX);
int logpixely=pDC->GetDeviceCaps(LOGPIXELSY);
offsetx=int(pagewidth*logpixelx/(50.8));
offsety=int(pageheight*logpixely/(50.8));
print=1;
Invalidate();
}
void CQFDView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
print=0;
Invalidate;
}
/////////////////////////////////////////////////////////////////////////////
// CQFDView diagnostics
#ifdef _DEBUG
void CQFDView::AssertValid() const
{
CView::AssertValid();
}
void CQFDView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CQFDDoc* CQFDView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CQFDDoc)));
return (CQFDDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CQFDView message handlers
void CQFDView::OnBijiaoduixiang()
{
Cbijiaoduixiang dlg;
dlg.DoModal();
}
void CQFDView::OnGongchencuoshi()
{
Cgongchencuoshidlg dlg;
dlg.DoModal();
}
void CQFDView::OnGukexuqiu()
{
Cgukexuqiudlg dlg;
dlg.DoModal();
}
void CQFDView::OnXuqiuvsgongcheng()
{
Cxuqiuvsgongcheng dlg;
dlg.DoModal();
}
void CQFDView::OnDisplay()
{
Cdisplay dlg;
dlg.DoModal();
}
void CQFDView::FillRect0(CDC* pDC,COLORREF col,CPoint point,int chd,int kd)
{
CBrush newBrush(col);
CBrush* poldBrush;
poldBrush=pDC->SelectObject(&newBrush);
pDC->FillRect(CRect(point.x,point.y,point.x+chd,point.y+kd),&newBrush);
pDC->SelectObject(poldBrush);
newBrush.DeleteObject();
}
void CQFDView::Line0(CDC* pDC,int x1,int y1,int x2,int y2,int siw,COLORREF col)
{
CPen siPen;
CPen* poldpen;
siPen.CreatePen(PS_SOLID,siw,col);
poldpen=pDC->SelectObject(&siPen);
pDC->MoveTo(x1,y1);
pDC->LineTo(x2,y2);
pDC->SelectObject(poldpen);
siPen.DeleteObject();
}
BOOL CQFDView::OnEraseBkgnd(CDC* pDC)
{ CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP2);
BITMAP bmp;
bitmap.GetBitmap(&bmp);
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);
dcCompatible.SelectObject(&bitmap);
CRect rect;
GetClientRect(&rect);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,
0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
return TRUE;
}
void CQFDView::OnReport()
{
choose=1;
InvalidateRect(NULL,FALSE);
}
void CQFDView::drawinfo(CDC* pDC) //画QFD表
{ /////////////////////////////////////////////////////////////////////////得到各项目的个数
CString strSQL1;
int array4[20]={0}; //需求重要度数组
int h=0;
strSQL1="select * from 顾客需求";
//打开记录集 选择表名
if(!OpenRecordSet(m_pRecordset,strSQL1))
{
AfxMessageBox("没有成功打开数据表");
return;
}
if(!m_pRecordset->BOF)
{
m_pRecordset->MoveFirst();
}
int num_xuqiu=0;
while(!m_pRecordset->adoEOF)
{ array4[h]=atoi(VariantToCString(m_pRecordset->GetCollect("需求重要度")));
h++;
num_xuqiu++;
m_pRecordset->MoveNext();
}
/* CString a;
a.Format("%d",num_xuqiu);
AfxMessageBox(a);*/
//关闭
m_pRecordset->Close();
m_pRecordset=NULL;
CString strSQL2;
strSQL2="select 工程措施 from 工程措施";
//打开记录集 选择表名
if(!OpenRecordSet(m_pRecordset,strSQL2))
{
AfxMessageBox("没有成功打开数据表");
return;
}
if(!m_pRecordset->BOF)
{
m_pRecordset->MoveFirst();
}
int num_gongcheng=0;
while(!m_pRecordset->adoEOF)
{
num_gongcheng++;
m_pRecordset->MoveNext();
}
/* CString b;
b.Format("%d",num_gongcheng);
AfxMessageBox(b);*/
//关闭
m_pRecordset->Close();
m_pRecordset=NULL;
CString strSQL3;
strSQL3="select 比较对象 from 比较对象";
//打开记录集 选择表名
if(!OpenRecordSet(m_pRecordset,strSQL3))
{
AfxMessageBox("没有成功打开数据表");
return;
}
if(!m_pRecordset->BOF)
{
m_pRecordset->MoveFirst();
}
int num_duixiang=0;
while(!m_pRecordset->adoEOF)
{
num_duixiang++;
m_pRecordset->MoveNext();
}
/* CString c;
c.Format("%d",num_duixiang);
AfxMessageBox(c);*/
//关闭
m_pRecordset->Close();
m_pRecordset=NULL;
//////////////////////////////////////////////////
int array1[20][20]={0}; //工程措施和顾客需求关系存储
int array2[20][20]={0};//工程措施和比较对象关系存储
int array3[20][20]={0};//比较对象和顾客需求关系存储
///////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////画表格
int x0=100,y0=yq,x1=180,x2=35,x3=200,x4=30,x5=200;
Line0(pDC,x0,y0,(x0+x1+x2*(num_gongcheng+num_duixiang)),y0,2,RGB(255,0,255));//顶线
Line0(pDC,x0,y0,x0,(y0+x3+x4*num_xuqiu),2,RGB(0,255,255));//左线
Line0(pDC,(x0+x1+x2*(num_gongcheng+num_duixiang)),y0,(x0+x1+x2*(num_gongcheng+num_duixiang)),(y0+x3+x4*num_xuqiu),2,RGB(120,0,200));//右线
Line0(pDC,x0,(y0+x3+x4*num_xuqiu),(x0+x1+x2*(num_gongcheng+num_duixiang)),(y0+x3+x4*num_xuqiu),2,RGB(0,0,255));
/////////////////////////////////////////////////////////////////////////////////////
Line0(pDC,x0,(y0+x3+x4*num_xuqiu+x5),x0,(y0+x3+x4*num_xuqiu+x5+x4*(num_duixiang+1)),2,RGB(100,168,25));//地左线
Line0(pDC,x0,(y0+x3+x4*num_xuqiu+x5),(x0+x1+x2*num_gongcheng),(y0+x3+x4*num_xuqiu+x5),2,RGB(0,0,255));
Line0(pDC,x0,(y0+x3+x4*num_xuqiu+x5+x4*(num_duixiang+1)),(x0+x1+x2*(num_gongcheng+2)),(y0+x3+x4*num_xuqiu+x5+x4*(num_duixiang+1)),2,RGB(0,0,255));
/////////////////////////////////////////////////////////////////////////////////////////
Line0(pDC,x0+x1,y0,x0+x1,(y0+x3+x4*num_xuqiu+x5+x4*(num_duixiang+1)),2,RGB(0,0,255));
for(int t=1;t<=num_gongcheng;t++)
{
Line0(pDC,x0+x1+x2*t,y0,x0+x1+x2*t,(y0+x3+x4*num_xuqiu+x5+x4*(num_duixiang+1)),2,RGB(0,0,255));
}
/////////////////////////////////////////////////////////////////////////////////////////////
Line0(pDC,x0,y0+x3,(x0+x1+x2*(num_gongcheng+num_duixiang)),y0+x3,2,RGB(0,0,255));
//////////////////////////////////////////////////////////////////////////////////////////////
for(int tt=1;tt<=num_xuqiu;tt++)
{
Line0(pDC,x0,y0+x3+x4*tt,(x0+x1+x2*(num_gongcheng+num_duixiang)),y0+x3+x4*tt,2,RGB(0,0,255));
}
/////////////////////////////////////////////////////////////////////////////////////////////
Line0(pDC,x0+x1+x2*num_gongcheng,y0+x4,(x0+x1+x2*(num_gongcheng+num_duixiang)),y0+x4,2,RGB(0,0,255));
//////////////////////////////////////////////////////////////////////////////////////////////
Line0(pDC,(x0+x1+x2*(num_gongcheng+num_duixiang)),y0+x3+x4*num_xuqiu,(x0+x1+x2*(num_gongcheng+num_duixiang)),y0+x3+x4*num_xuqiu+x4+35,2,RGB(0,0,255));
Line0(pDC,(x0+x1+x2*(num_gongcheng+num_duixiang)),y0+x3+x4*num_xuqiu+x4+35,x0+x1+x2*num_gongcheng,y0+x3+x4*num_xuqiu+x4+35,2,RGB(0,0,255));
Line0(pDC,(x0+x1+x2*(num_gongcheng+num_duixiang)),y0+x3+x4*num_xuqiu+x4,x0+x1+x2*num_gongcheng,y0+x3+x4*num_xuqiu+x4,2,RGB(0,0,255));
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
for(int j=1;j<num_duixiang;j++)
{
Line0(pDC,x0+x1+x2*num_gongcheng+x2*j,y0+x4,x0+x1+x2*num_gongcheng+x2*j,y0+x3+x4*num_xuqiu+x4,2,RGB(0,0,255));
}
///////////////////////////////////////////////////////////////////////////////////////////////////
Line0(pDC,x0+x1+x2*(num_gongcheng+2),y0+x3+x4*num_xuqiu+x5+x4*(num_duixiang+1),x0+x1+x2*(num_gongcheng+2),y0+x3+x4*num_xuqiu+x5+x4,2,RGB(0,0,255));
Line0(pDC,x0+x1+x2*(num_gongcheng+2),y0+x3+x4*num_xuqiu+x5+x4,x0,y0+x3+x4*num_xuqiu+x5+x4,2,RGB(0,0,255));
Line0(pDC,x0+x1+x2*(num_gongcheng+1),y0+x3+x4*num_xuqiu+x5+x4*(num_duixiang+1),x0+x1+x2*(num_gongcheng+1),y0+x3+x4*num_xuqiu+x5+x4,2,RGB(0,0,255));
Line0(pDC,x0+x2,y0+x3+x4*num_xuqiu+x5+x4*(num_duixiang+1),x0+x2,y0+x3+x4*num_xuqiu+x5+x4,2,RGB(0,0,255));
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
for(int jj=1;jj<num_duixiang;jj++)
{
Line0(pDC,x0+x2,y0+x3+x4*num_xuqiu+x5+x4+x4*jj,x0+x1+x2*num_gongcheng+x2,y0+x3+x4*num_xuqiu+x5+x4+x4*jj,2,RGB(0,0,255));
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Line0(pDC,x0+x1-x4,y0+x3+x4*num_xuqiu,x0+x1-x4,y0+50,2,RGB(0,0,255));
Line0(pDC,x0+x1-x4,y0+50,x0+x1,y0+50,2,RGB(0,0,255));
Line0(pDC,x0,y0,x0+x1-x4,y0+x3,2,RGB(0,0,255));
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Line0(pDC,x0+x1,y0,(int)(x0+x1+x2*num_gongcheng/2),(int)(y0-x2*num_gongcheng/2),2,RGB(0,0,255));
Line0(pDC,(int)(x0+x1+x2*num_gongcheng/2),(int)(y0-x2*num_gongcheng/2),x0+x1+x2*num_gongcheng,y0,2,RGB(0,0,255));
/////////////////////////////////////////////////////////////////////////////////////////
for(int m=1;m<num_gongcheng;m++)
{
Line0(pDC,x0+x1+x2*m,y0,(int)(x0+x1+x2*m+x2*(num_gongcheng-m)/2),(int)(y0-x2*(num_gongcheng-m)/2),2,RGB(0,0,255));
Line0(pDC,x0+x1+x2*m,y0,(int)(x0+x1+x2*m-x2*(m)/2),(int)(y0-x2*(m)/2),2,RGB(0,0,255));
}
/////////////////////////////////////////////////////////////////////////文本输出
//文本输出/////////////////////////////////////////////文本输出////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//横向的固定标题//////////////////////////////////////////////////////////////////////////////////
textout(pDC,x0,y0,(int)(x1/3),(int)(x3/10),"工程措施",RGB(255,0,0));
textout(pDC,x0,y0,(int)(x1/3+5),(int)(x3/4),"(一级)",RGB(255,0,0));
textout(pDC,x0,y0,10,(int)(x3/3*2),"顾客需求",RGB(255,0,0));
textout(pDC,x0,y0,15,(int)(x3/3*2+15),"(一级)",RGB(255,0,0));
textout(pDC,x0+x1+x2*num_gongcheng,y0,20,5,"市场竞争能力",RGB(255,0,0));
textout(pDC,x0+x1+x2*num_gongcheng,y0+x3+x4*num_xuqiu+x4,0,5,"市场竞争能力指数M",RGB(255,0,0));
textout(pDC,x0,y0+x3+x4*num_xuqiu+x5,15,5,"工程措施重要度",RGB(255,0,0));
///////////////////////////////////////////////////////////////////////////////////////////////////
CString str1;
CString strSQL4;
strSQL4="select 顾客需求 from 顾客需求";
//打开记录集 选择表名
if(!OpenRecordSet(m_pRecordset,strSQL4))
{
AfxMessageBox("没有成功打开数据表");
return;
}
if(!m_pRecordset->BOF)
{
m_pRecordset->MoveFirst();
}
int q=0;
while(!m_pRecordset->adoEOF)
{
str1=VariantToCString(m_pRecordset->GetCollect("顾客需求"));
textout(pDC,x0,y0+x3+x4*q,10,5,str1,RGB(255,0,0));
q++;
m_pRecordset->MoveNext();
}
//关闭
m_pRecordset->Close();
m_pRecordset=NULL;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
CString str2;
CString strSQL5;
strSQL5="select 比较对象 from 比较对象";
//打开记录集 选择表名
if(!OpenRecordSet(m_pRecordset,strSQL5))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -