📄 dlggaihua.cpp
字号:
// DlgGaihua.cpp : implementation file
//
#include "stdafx.h"
#include "mining.h"
#include "DlgGaihua.h"
#include <cmath>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
struct COUNT
{
float gao;
float zhong;
float di;
float jige;
float bujige;
float like;
float wenke;
float yishu;
int RecordCount;
};
struct COUNT m_count[5];
/////////////////////////////////////////////////////////////////////////////
// CDlgGaihua dialog
CDlgGaihua::CDlgGaihua(CWnd* pParent /*=NULL*/)
: CDialog(CDlgGaihua::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgGaihua)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CDlgGaihua::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgGaihua)
DDX_Control(pDX, IDC_LIST2, m_listCtrl);
DDX_Control(pDX, IDC_LIST1, m_list);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgGaihua, CDialog)
//{{AFX_MSG_MAP(CDlgGaihua)
ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeList1)
ON_WM_PAINT()
ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgGaihua message handlers
BOOL CDlgGaihua::OnInitDialog()
{
CDialog::OnInitDialog();
CString tbName,fdName;
int nCount, fenshu;
Y_long=140.0;
char *p;
CODBCFieldInfo fdInfo;
m_list.AddString("教学机时");
m_list.AddString("自由机时");
m_list.AddString("期末成绩");
m_list.AddString("专业");
m_list.AddString("过级成绩");
m_rdJoin.Open(AFX_DB_USE_DEFAULT_TYPE,"select * from 学校成绩表,过级成绩表 \
where 学校成绩表.学号=过级成绩表.学号");
int n=0;
m_rdJoin.MoveFirst();
nCount=m_rdJoin.GetODBCFieldCount();
m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
for(int k=0;k<nCount;k++)
{
m_rdJoin.GetODBCFieldInfo(k,fdInfo);
fdName=fdInfo.m_strName;
p=fdName.GetBuffer(fdName.GetLength());
m_listCtrl.InsertColumn(k,p,LVCFMT_LEFT,90);
}
m_listCtrl.DeleteColumn(4);
for(int i=0;i<4;i++)
{
m_count[i].di=0.0;
m_count[i].zhong=0.0;
m_count[i].gao=0.0;
m_count[i].jige=0.0;
m_count[i].bujige=0.0;
m_count[i].like=0.0;
m_count[i].wenke=0.0;
m_count[i].yishu=0.0;
m_count[0].RecordCount=0;
}
do
{
CString s;
if(m_rdJoin.m_column2<20) //教学机时概化;
{
m_count[0].di++;
m_listCtrl.InsertItem(n,"低",0);
}
else if(m_rdJoin.m_column2>=20&&m_rdJoin.m_column2<=29)
{
m_count[0].zhong++;
m_listCtrl.InsertItem(n,"中",0);
}
else if (m_rdJoin.m_column2<=40)
{
m_count[0].gao++;
m_listCtrl.InsertItem(n,"高",0);
}
if(m_rdJoin.m_column3<20) //自由机时概化;
{
m_count[1].di++;
m_listCtrl.SetItemText(n,1,"低");
}
else if(m_rdJoin.m_column3>=20&&m_rdJoin.m_column3<=29)
{
m_count[1].zhong++;
m_listCtrl.SetItemText(n,1,"中");
}
else if (m_rdJoin.m_column3>=30)
{
m_count[1].gao++;
m_listCtrl.SetItemText(n,1,"高");
}
if(m_rdJoin.m_column4<60) //期末成绩概化;
{
m_count[2].bujige++;
m_listCtrl.SetItemText(n,2,"不及格");
}
else
{
m_count[2].jige++;
m_listCtrl.SetItemText(n,2,"及格");
}
//专业的概化!
if((strcmp(m_rdJoin.m_column32,"化学")==0) ||
(strcmp(m_rdJoin.m_column32,"计算机")==0) ||
(strcmp(m_rdJoin.m_column32,"数学")==0) ||
(strcmp(m_rdJoin.m_column32,"教育技术")==0))
{
m_count[4].like++;
m_listCtrl.SetItemText(n,4,"理科");
}
if((strcmp(m_rdJoin.m_column32,"机器翻译")==0) ||
(strcmp(m_rdJoin.m_column32,"教育学")==0) ||
(strcmp(m_rdJoin.m_column32,"历史教育")==0) ||
(strcmp(m_rdJoin.m_column32,"心理学")==0) ||
(strcmp(m_rdJoin.m_column32,"对外汉语")==0) ||
(strcmp(m_rdJoin.m_column32,"政教")==0))
{
m_count[4].wenke++;
m_listCtrl.SetItemText(n,4,"文科");
}
if(strcmp(m_rdJoin.m_column32,"美术学")==0 ||
strcmp(m_rdJoin.m_column32,"体育")==0)
{
m_count[4].yishu++;
m_listCtrl.SetItemText(n,4,"艺术类");
}
fenshu=(int)m_rdJoin.m_column12;//过级成绩概化;
if(fenshu<60)
{
m_count[3].bujige++;
m_listCtrl.SetItemText(n,5,"不及格");
}
else
{
m_count[3].jige++;
m_listCtrl.SetItemText(n,5,"及格");
}
m_rdJoin.MoveNext();
n++;
} while(!m_rdJoin.IsEOF());
m_count[0].RecordCount=m_rdJoin.GetRecordCount();
m_rdJoin.MoveFirst();
m_listCtrl.DeleteColumn(0);
m_listCtrl.DeleteColumn(3);
return TRUE;
}
void CDlgGaihua::OnSelchangeList1()
{
int index;
m_listIndex=m_list.GetCurSel();
index=m_listIndex;
HuiTu(index);
}
void CDlgGaihua::OnPaint()
{
CDC *dc; // device context for painting
PAINTSTRUCT ps;
dc=BeginPaint(&ps);
CBrush brush(RGB(97,97,200));
dc->FillRect(CRect(200,35,740,220),&brush);
CBrush Brush(RGB(0,0,0));
dc->FillRect(CRect(205,190,477,193),&Brush);//X坐标;
dc->FillRect(CRect(225,48,228,200),&Brush);//Y坐标;
EndPaint(&ps);
}
//绘直方图;
void CDlgGaihua::HuiTu(int index)
{
if(index==0)
{
int y;
float a,b;
CString s;
InvalidateRect(CRect(200,35,740,220),true);
OnPaint();
CClientDC dc(this);
CBrush Brush1(RGB(255,0,0));
//过级成绩“不及格”!
a=m_count[3].bujige/m_count[0].RecordCount;
s.Format("%f",a);
y=int(int(a*Y_long));
dc.FillRect(CRect(225,(180-y),238,190),&Brush1);
dc.SetBkColor(RGB(97,97,200));
dc.TextOut(228,195,"不及格");
dc.TextOut(228,(150-y),s);
CBrush brush1(RGB(255,0,0));
dc.SelectObject(&brush1);
dc.Pie(500,60,620,180,560,60,560-(int)(sin(2*3.1415926*a)*60),60+60-(int)(cos(2*3.1415926*a)*60));
dc.TextOut(500,40,"不及格");
//过级成绩”及格“!
CBrush Brush2(RGB(0,255,0));
b=m_count[3].jige/m_count[0].RecordCount;
s.Format("%f",b);
y=int(b*Y_long);
dc.FillRect(CRect(295,(180-y),308,190),&Brush2);
dc.TextOut(288,195,"及格");
dc.TextOut(285,(150-y),s);
CBrush brush2(RGB(0,255,0));
dc.SelectObject(&brush2);
dc.Pie(500,60,620,180,560-(int)(sin(2*3.1415926*a)*60),60+60-(int)(cos(2*3.1415926*a)*60),560,60);
dc.TextOut(560-(int)(sin(2*3.1415926*a)*60)-10,60+60-(int)(cos(2*3.1415926*a)*60)+20,"及格");
SetDlgItemText(IDC_XIANSHI,"概化为:不及格和及格");
SetDlgItemText(IDC_ZHIFANGTU,"过级成绩概化的直方图");
}
if(m_listIndex==1)
{
int y;
float a,b,c;
CString s;
//教学机时“低”!
a=m_count[0].di/m_count[0].RecordCount;
//a=a*100;
s.Format("%f",a);
y=int(a*Y_long);
InvalidateRect(CRect(200,35,740,220),true);
OnPaint();
CClientDC dc(this);
CBrush Brush1(RGB(255,0,0));
dc.FillRect(CRect(225,(180-y),238,190),&Brush1);
dc.SetBkColor(RGB(97,97,200));
dc.TextOut(228,195,"低");
dc.TextOut(228,(150-y),s);
//dc.Pie(500,60,600,180,520,90,60,550);
CBrush brush1(RGB(255,0,0));
dc.SelectObject(&brush1);
//dc.Pie(500,60,620,180,560,90,660,90);
dc.Pie(500,60,620,180,560,60,560-(int)(sin(2*3.1415926*a)*60),60+60-(int)(cos(2*3.1415926*a)*60));
dc.TextOut(520,40,"低");
//教学机时”中“!
CBrush Brush2(RGB(0,255,0));
b=m_count[0].zhong/m_count[0].RecordCount;
s.Format("%f",b);
y=int(b*Y_long);
dc.FillRect(CRect(295,(180-y),308,190),&Brush2);
dc.TextOut(298,195,"中");
dc.TextOut(295,(150-y),s);
CBrush brush2(RGB(0,255,0));
dc.SelectObject(&brush2);
dc.Pie(500,60,620,180,560-(int)(sin(2*3.1415926*a)*60),60+60-(int)(cos(2*3.1415926*a)*60),560-(int)(sin(2*3.1415926*(a+b))*60),60+60-(int)(cos(2*3.1415926*(a+b))*60));
dc.TextOut(560-(int)(sin(2*3.1415926*a)*60)-30,60+60-(int)(cos(2*3.1415926*a)*60)+20,"中");
//教学机时“高”!
CBrush Brush3(RGB(0,0,255));
c=m_count[0].gao/m_count[0].RecordCount;
s.Format("%f",c);
y=int(c*Y_long);
dc.FillRect(CRect(365,(180-y),378,190),&Brush3);
dc.TextOut(368,195,"高");
dc.TextOut(365,(150-y),s);
CBrush brush3(RGB(0,0,255));
dc.SelectObject(&brush3);
dc.Pie(500,60,620,180,560-(int)(sin(2*3.1415926*(a+b))*60),60+60-(int)(cos(2*3.1415926*(a+b))*60),560,60);
dc.TextOut(560-(int)(sin(2*3.1415926*(a+b))*60)+30,60+60-(int)(cos(2*3.1415926*(a+b))*60),"高");
SetDlgItemText(IDC_XIANSHI,"概化为:高,中,低");
SetDlgItemText(IDC_ZHIFANGTU,"教学机时概化的直方图");
}
if(m_listIndex==2)
{ int y;
float a,b;
CString s;
InvalidateRect(CRect(200,35,740,220),true);
OnPaint();
CClientDC dc(this);
CBrush Brush1(RGB(255,0,0));
//期末成绩“不及格”!
a=m_count[2].bujige/m_count[0].RecordCount;
s.Format("%f",a);
y=(int(a*Y_long));
//y=0;
dc.FillRect(CRect(225,(180-y),238,190),&Brush1);
dc.SetBkColor(RGB(97,97,200));
dc.TextOut(228,195,"不及格");
dc.SetBkColor(RGB(97,97,200));
dc.TextOut(228,(150-y),s);
CBrush brush1(RGB(255,0,0));
dc.SelectObject(&brush1);
dc.Pie(500,60,620,180,560,60,560-(int)(sin(2*3.1415926*a)*60),60+60-(int)(cos(2*3.1415926*a)*60));
dc.TextOut(460,70,"不及格");
//期末成绩”及格“!
CBrush Brush2(RGB(0,255,0));
b=m_count[2].jige/m_count[0].RecordCount;
s.Format("%f",b);
y=int(b*Y_long);
//y=0;
dc.FillRect(CRect(295,(180-y),308,190),&Brush2);
dc.TextOut(298,195,"及格");
dc.TextOut(295,(150-y),s);
CBrush brush2(RGB(0,255,0));
dc.SelectObject(&brush2);
dc.Pie(500,60,620,180,560-(int)(sin(2*3.1415926*a)*60),60+60-(int)(cos(2*3.1415926*a)*60),560,60);
dc.TextOut(560-(int)(sin(2*3.1415926*a)*60)+50,60+60-(int)(cos(2*3.1415926*a)*60)-20,"及格");
SetDlgItemText(IDC_XIANSHI,"概化为:不及格和及格");
SetDlgItemText(IDC_ZHIFANGTU,"期末成绩概化的直方图");
}
if(m_listIndex==3)
{
int y;
float a,b,c;
CString s;
//专业理科!
a=m_count[4].like/m_count[0].RecordCount;
//a=a*100;
s.Format("%f",a);
y=int(a*Y_long);
InvalidateRect(CRect(200,35,740,220),true);
OnPaint();
CClientDC dc(this);
CBrush Brush1(RGB(255,0,0));
dc.FillRect(CRect(225,(180-y),238,190),&Brush1);
dc.SetBkColor(RGB(97,97,200));
dc.TextOut(228,195,"理科");
dc.TextOut(228,(150-y),s);
CBrush brush1(RGB(255,0,0));
dc.SelectObject(&brush1);
dc.Pie(500,60,620,180,560,60,560-(int)(sin(2*3.1415926*a)*60),60+60-(int)(cos(2*3.1415926*a)*60));
dc.TextOut(500,50,"理科");
//专业文科!
CBrush Brush2(RGB(0,255,0));
b=m_count[4].wenke/m_count[0].RecordCount;
s.Format("%f",b);
y=int(b*Y_long);
dc.FillRect(CRect(295,(180-y),308,190),&Brush2);
dc.SetBkColor(RGB(97,97,200));
dc.TextOut(298,195,"文科");
dc.TextOut(295,(150-y),s);
CBrush brush2(RGB(0,255,0));
dc.SelectObject(&brush2);
dc.Pie(500,60,620,180,560-(int)(sin(2*3.1415926*a)*60),60+60-(int)(cos(2*3.1415926*a)*60),560-(int)(sin(2*3.1415926*(a+b))*60),60+60-(int)(cos(2*3.1415926*(a+b))*60));
dc.TextOut(560-(int)(sin(2*3.1415926*a)*60)-30,60+60-(int)(cos(2*3.1415926*a)*60)+30," 文科");
//专业艺术!
CBrush Brush3(RGB(0,0,255));
c=m_count[4].yishu/m_count[0].RecordCount;
s.Format("%f",c);
y=int(c*Y_long);
dc.FillRect(CRect(365,(180-y),378,190),&Brush3);
dc.TextOut(368,195,"艺术类");
dc.TextOut(365,(150-y),s);
CBrush brush3(RGB(0,0,255));
dc.SelectObject(&brush3);
dc.Pie(500,60,620,180,560-(int)(sin(2*3.1415926*(a+b))*60),60+60-(int)(cos(2*3.1415926*(a+b))*60),560,60);
dc.TextOut(560-(int)(sin(2*3.1415926*(a+b))*60)-10,60+60-(int)(cos(2*3.1415926*(a+b))*60)-30,"艺术类");
SetDlgItemText(IDC_XIANSHI,"概化为:理科,文科,艺术类");
SetDlgItemText(IDC_ZHIFANGTU,"专业概化的直方图");
}
if(m_listIndex==4)
{
int y;
float a,b,c;
CString s;
//自由机时“低”!
a=m_count[1].di/m_count[0].RecordCount;
//a=a*100;
s.Format("%f",a);
y=int(a*Y_long);
InvalidateRect(CRect(200,35,740,220),true);
OnPaint();
CClientDC dc(this);
CBrush Brush1(RGB(255,0,0));
dc.FillRect(CRect(225,(180-y),238,190),&Brush1);
dc.SetBkColor(RGB(97,97,200));
dc.TextOut(228,195,"低");
dc.TextOut(228,(150-y),s);
CBrush brush1(RGB(255,0,0));
dc.SelectObject(&brush1);
dc.Pie(500,60,620,180,560,60,560-(int)(sin(2*3.1415926*a)*60),60+60-(int)(cos(2*3.1415926*a)*60));
dc.TextOut(500,50,"低");
//自由机时”中“!
CBrush Brush2(RGB(0,255,0));
b=m_count[1].zhong/m_count[0].RecordCount;
s.Format("%f",b);
y=int(b*Y_long);
dc.FillRect(CRect(295,(180-y),308,190),&Brush2);
dc.TextOut(298,195,"中");
dc.TextOut(295,(150-y),s);
CBrush brush2(RGB(0,255,0));
dc.SelectObject(&brush2);
dc.Pie(500,60,620,180,560-(int)(sin(2*3.1415926*a)*60),60+60-(int)(cos(2*3.1415926*a)*60),560-(int)(sin(2*3.1415926*(a+b))*60),60+60-(int)(cos(2*3.1415926*(a+b))*60));
dc.TextOut(560-(int)(sin(2*3.1415926*a)*60)-10,60+60-(int)(cos(2*3.1415926*a)*60)+20,"中");
//自由机时“高”!
CBrush Brush3(RGB(0,0,255));
c=m_count[1].gao/m_count[0].RecordCount;
s.Format("%f",c);
y=int(c*Y_long);
dc.FillRect(CRect(365,(180-y),378,190),&Brush3);
dc.TextOut(368,195,"高");
dc.TextOut(365,(150-y),s);
CBrush brush3(RGB(0,0,255));
dc.SelectObject(&brush3);
dc.Pie(500,60,620,180,560-(int)(sin(2*3.1415926*(a+b))*60),60+60-(int)(cos(2*3.1415926*(a+b))*60),560,60);
dc.TextOut(560-(int)(sin(2*3.1415926*(a+b))*60)+10,60+60-(int)(cos(2*3.1415926*(a+b))*60+20),"高");
SetDlgItemText(IDC_XIANSHI,"概化为:高,中,低");
SetDlgItemText(IDC_ZHIFANGTU,"自由机时概化的直方图");
}
}
void CDlgGaihua::OnClose()
{
m_rdJoin.Close();
CDialog::OnClose();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -