📄 topten.cpp
字号:
// Topten.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "Topten.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTopten dialog
CTopten::CTopten(CWnd* pParent /*=NULL*/)
: CDialog(CTopten::IDD, pParent)
{
//{{AFX_DATA_INIT(CTopten)
//}}AFX_DATA_INIT
}
void CTopten::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTopten)
DDX_Control(pDX, IDC_TOPTENLIST, m_ToptenList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTopten, CDialog)
//{{AFX_MSG_MAP(CTopten)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTopten message handlers
BOOL CTopten::OnInitDialog()
{
CDialog::OnInitDialog();
for(int i = 0; i < 10; i++)
{
Topten[i].sn = 0;
Topten[i].name = "";
}
OnRefreshData();
return TRUE;
}
void CTopten::OnPaint()
{
CPaintDC dc(this); // device context for painting
CBrush brush;
brush.CreateSolidBrush(RGB(240,240,240));
CBrush *pOldBrush = dc.SelectObject(&brush);
dc.SetBkColor(RGB(214,215,206));
//绘制坐标系
dc.MoveTo(50,20);
dc.LineTo(50,350);
dc.MoveTo(50,350);
dc.LineTo(575,350);
//绘制两个箭头
dc.MoveTo(40,40);
dc.LineTo(50,20);
dc.MoveTo(60,40);
dc.LineTo(50,20);
dc.MoveTo(560,340);
dc.LineTo(575,350);
dc.MoveTo(560,360);
dc.LineTo(575,350);
//绘制刻度线
for(int i = 0; i< 10; i++)
{
dc.MoveTo(100+i*50,350);
dc.LineTo(100+i*50,345);
}
//输出坐标参数
/*dc.TextOut(75,355,"1");
dc.TextOut(125,355,"2");
dc.TextOut(175,355,"3");
dc.TextOut(225,355,"4");
dc.TextOut(275,355,"5");
dc.TextOut(325,355,"6");
dc.TextOut(375,355,"7");
dc.TextOut(425,355,"8");
dc.TextOut(475,355,"9");
dc.TextOut(525,355,"10");
dc.TextOut(25,30,"N");
dc.TextOut(500,30,"单位: (套)");
*/
//////////////////////////
if(Topten[0].sn)
{
for(i = 0; i < 10; i++)
{
CString strnum;
strnum.Format("%d",Topten[i].sn);
dc.Rectangle(50+i*50,350-300*Topten[i].sn/Topten[0].sn,100+i*50,350);
dc.TextOut(65+i*50,330-300*Topten[i].sn/Topten[0].sn,strnum);
}
}
CDialog::OnPaint();
}
void CTopten::OnRefreshData()
{
BOOL FLAGS = FALSE;
int check;
CString _sql;
SHOP::_RecordsetPtr pRst;
_sql = "select * from SELL";
_bstr_t sql = _sql;
try
{
pRst = pConn->Execute(sql,NULL,SHOP::adCmdText);
while(!pRst->End)
{
_variant_t vNum = pRst->Fields->GetItem("NUM")->Value;
_variant_t vName = pRst->Fields->GetItem(long(2))->Value;
int num = vNum.iVal;
CString sellname = vName.bstrVal;
CString strcheck;
for(check = 0; check < 10; check++)
{
if(Topten[check].name == sellname)
{
Topten[check].sn += num;
sellname = "";
FLAGS = TRUE;
break;
}
}
if(FLAGS == FALSE)
{
for(int i = 0;i < 10;i++)
{
if(num > Topten[i].sn)
{
for(int j = 9;j > i;j--)
{
Topten[j].sn = Topten[j-1].sn;
Topten[j].name = Topten[j-1].name;
}
Topten[i].sn = num;
Topten[i].name = sellname;
sellname = "";
break;
}
else
continue;
}
}
/////重新排大小
for(int i = 0; i< 9; i++)
for(int j = i+1; j < 10; j++)
if(Topten[i].sn <= Topten[j].sn)
{
check = Topten[i].sn;
Topten[i].sn = Topten[j].sn;
Topten[j].sn = check;
strcheck = Topten[i].name;
Topten[i].name = Topten[j].name;
Topten[j].name = strcheck;
}
/////
FLAGS = FALSE;
pRst->MoveNext();
}
}
catch(_com_error& e)
{
AfxMessageBox(e.Description());
}
pRst->Close();
pRst.Release();
for(int i = 0;i < 10;i++)
{
if(Topten[i].sn != 0)
m_ToptenList.AddString(Topten[i].name);
m_ToptenList.SetHorizontalExtent(300);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -