⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qfdview.cpp

📁 QFD是一种十分有效的质量管理工具
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// 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 + -