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

📄 bitmapdlg.cpp

📁 一个简单的学生学籍管理工具。vc编写。 有喜欢的可以批评指正^_^
💻 CPP
字号:
// bitmapdlg.cpp : implementation file
//

#include "stdafx.h"
#include "studentwin.h"
#include "bitmapdlg.h"
#include "GraphSeries.h"
#include "GraphLegend.h"
#include "Graph.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// Cbitmapdlg dialog


Cbitmapdlg::Cbitmapdlg(CWnd* pParent /*=NULL*/)
	: CDialog(Cbitmapdlg::IDD, pParent)
{
	type=1;
	graphcom=false;
testGraph=NULL;
	//{{AFX_DATA_INIT(Cbitmapdlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void Cbitmapdlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Cbitmapdlg)
	DDX_Control(pDX, IDC_bitmap, m_bitmap);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Cbitmapdlg, CDialog)
	//{{AFX_MSG_MAP(Cbitmapdlg)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Cbitmapdlg message handlers

BOOL Cbitmapdlg::OnInitDialog() 
{
	CDialog::OnInitDialog();

//	CRect rect;
	//GetClientRect(&rect);
	//m_bitmap.MoveWindow(&rect);
///////////////

	return TRUE;  // return TRUE unless you set the focus to a control
              // EXCEPTION: OCX Property Pages should return FALSE
}

void Cbitmapdlg::drawpicture()
{
switch(type)
{
case 1:drawbar();break;
case 2:drawpie();break;
default:break;
}
}

void Cbitmapdlg::drawbar()
{
Cstudent*pstudent;
long score1=0;
long score2=0;
long score3=0;
long score4=0;
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();

while(pDoc->curpos!=NULL)
{	

pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
score1=score1+pstudent->lesson[0].fen;
score2=score2+pstudent->lesson[1].fen;
score3=score3+pstudent->lesson[2].fen;
score4=score4+pstudent->lesson[3].fen;
pDoc->m_dataList.GetNext(pDoc->curpos);
if(pDoc->curpos==NULL)
break;
}
score1/=couter;
score2/=couter;
score3/=couter;
score4/=couter;
	
testGraph=new CGraph();
testGraph->SetGraphTitle("每门课程平均成绩的统计");
testGraph->SetTickRange(100);
testGraph->SetTickSpace(25);	
	testGraph->SetXAxisAlignment(0);
	testGraph->SetXAxisLabel("课程");
	testGraph->SetYAxisLabel("分数");
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
	CGraphSeries* series1 = new CGraphSeries();
	CGraphSeries* series2 = new CGraphSeries();
	CGraphSeries* series3 = new CGraphSeries();
CGraphSeries* series4 = new CGraphSeries();
	series1->SetLabel(pstudent->lesson[0].name);
	series2->SetLabel(pstudent->lesson[1].name);
	series3->SetLabel(pstudent->lesson[2].name);
	series4->SetLabel(pstudent->lesson[3].name);

	series1->SetData(0,score1);
	series2->SetData(0, score2);
	series3->SetData(0, score3);
	series4->SetData(0, score4);
	testGraph->AddSeries(series1);
	testGraph->AddSeries(series2);
	testGraph->AddSeries(series3);
	testGraph->AddSeries(series4);

	//set up legend
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);

	testGraph->SetLegend(1, "分数");
	testGraph->SetLegend(0, "分数");
	testGraph->SetLegend(2, "分数");
	testGraph->SetLegend(3, "分数");

}

void Cbitmapdlg::drawpie()
{
Cstudent*pstudent;
int lesson1[5]={0,0,0,0,0};
int lesson2[5]={0,0,0,0,0};
int lesson3[5]={0,0,0,0,0};
int lesson4[5]={0,0,0,0,0};
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();

while(pDoc->curpos!=NULL)
{	

pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
/////////////////
if(pstudent->lesson[0].fen<60)
lesson1[0]++;
if(pstudent->lesson[0].fen>=60&&pstudent->lesson[0].fen<=69)
lesson1[1]++;
if(pstudent->lesson[0].fen>=70&&pstudent->lesson[0].fen<=79)
lesson1[2]++;
if(pstudent->lesson[0].fen>=80&&pstudent->lesson[0].fen<=89)
lesson1[3]++;
if(pstudent->lesson[0].fen>=90&&pstudent->lesson[0].fen<=100)
lesson1[4]++;
if(pstudent->lesson[1].fen<60)
lesson2[0]++;
if(pstudent->lesson[1].fen>=60&&pstudent->lesson[0].fen<=69)
lesson2[1]++;
if(pstudent->lesson[1].fen>=70&&pstudent->lesson[0].fen<=79)
lesson2[2]++;
if(pstudent->lesson[1].fen>=80&&pstudent->lesson[0].fen<=89)
lesson2[3]++;
if(pstudent->lesson[1].fen>=90&&pstudent->lesson[0].fen<=100)
lesson2[4]++;
if(pstudent->lesson[2].fen<60)
lesson3[0]++;
if(pstudent->lesson[2].fen>=60&&pstudent->lesson[0].fen<=69)
lesson3[1]++;
if(pstudent->lesson[2].fen>=70&&pstudent->lesson[0].fen<=79)
lesson3[2]++;
if(pstudent->lesson[2].fen>=80&&pstudent->lesson[0].fen<=89)
lesson3[3]++;
if(pstudent->lesson[2].fen>=90&&pstudent->lesson[0].fen<=100)
lesson3[4]++;
if(pstudent->lesson[3].fen<60)
lesson4[0]++;
if(pstudent->lesson[3].fen>=60&&pstudent->lesson[0].fen<=69)
lesson4[1]++;
if(pstudent->lesson[3].fen>=70&&pstudent->lesson[0].fen<=79)
lesson4[2]++;
if(pstudent->lesson[3].fen>=80&&pstudent->lesson[0].fen<=89)
lesson4[3]++;
if(pstudent->lesson[3].fen>=90&&pstudent->lesson[0].fen<=100)
lesson4[4]++;
/////////
pDoc->m_dataList.GetNext(pDoc->curpos);
if(pDoc->curpos==NULL)
break;
}
testGraph=new CGraph(2);
testGraph->SetGraphTitle("各科60以下,60-69,70-79,80-89,90-100的人数比例");
testGraph->SetLegend(3, "80-89");
	testGraph->SetLegend(0, "60分以下");
	testGraph->SetLegend(1, "60-69");
	testGraph->SetLegend(2, "70-79");
	testGraph->SetLegend(4, "90-100");
	CGraphSeries* series1 = new CGraphSeries();
	CGraphSeries* series2 = new CGraphSeries();
	CGraphSeries* series3 = new CGraphSeries();
	CGraphSeries* series4 = new CGraphSeries();
pDoc->curpos=pDoc->m_dataList.GetHeadPosition();
pstudent=pDoc->m_dataList.GetAt(pDoc->curpos);
	series1->SetLabel(pstudent->lesson[0].name);
	series2->SetLabel(pstudent->lesson[1].name);
	series3->SetLabel(pstudent->lesson[2].name);
	series4->SetLabel(pstudent->lesson[3].name);

	series1->SetData(0,lesson1[0]);
	series1->SetData(1,lesson1[1]);
	series1->SetData(2,lesson1[2]);
	series1->SetData(3, lesson1[3]);
	series1->SetData(4, lesson1[4]);

	series2->SetData(0,lesson2[0]);
	series2->SetData(1,lesson2[1]);
	series2->SetData(2,lesson2[2]);
	series2->SetData(3, lesson2[3]);
	series2->SetData(4, lesson2[4]);


series3->SetData(0,lesson3[0]);
	series3->SetData(1,lesson3[1]);
	series3->SetData(2,lesson3[2]);
	series3->SetData(3, lesson3[3]);
	series3->SetData(4, lesson3[4]);

	series4->SetData(0,lesson4[0]);
	series4->SetData(1,lesson4[1]);
	series4->SetData(2,lesson4[2]);
	series4->SetData(3, lesson4[3]);
	series4->SetData(4, lesson4[4]);
	testGraph->AddSeries(series1);
	testGraph->AddSeries(series2);
	testGraph->AddSeries(series3);
	testGraph->AddSeries(series4);

	

}


void Cbitmapdlg::OnButton1() 
{
	drawpicture();
		CWnd*pwnd=GetDlgItem(IDC_bitmap);
CDC*pDC=pwnd->GetDC();
	testGraph->DrawGraph(pDC);
	UpdateData(false);
		ReleaseDC(pDC);	
}

void Cbitmapdlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	
	// Do not call CDialog::OnPaint() for painting messages
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -