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

📄 mystudentview.cpp

📁 自编的一个实用的学生成绩处理管理系统。支持.dbf文件
💻 CPP
字号:
// MyStudentView.cpp : implementation of the CMyStudentView class
//

#include "stdafx.h"
#include "MyStudent.h"

#include "MyStudentSet.h"
#include "MyStudentDoc.h"
#include "MyStudentView.h"
#include "SetDialog.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMyStudentView

IMPLEMENT_DYNCREATE(CMyStudentView, CRecordView)

BEGIN_MESSAGE_MAP(CMyStudentView, CRecordView)
	//{{AFX_MSG_MAP(CMyStudentView)
	ON_BN_CLICKED(IDC_BUTTON_EDIT, OnButtonEdit)
	ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave)
	ON_CBN_SELCHANGE(IDC_COMBO_CLASS, OnSelchangeComboClass)
	ON_BN_CLICKED(IDC_BUTTON_UPDATE, OnButtonUpdate)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyStudentView construction/destruction

CMyStudentView::CMyStudentView()
	: CRecordView(CMyStudentView::IDD)
{
	//{{AFX_DATA_INIT(CMyStudentView)
	m_pSet = NULL;
	m_passrate = 0.0f;
	m_average = 0.0f;
	m_90_100 = 0;
	m_80_89 = 0;
	m_70_79 = 0;
	m_60_69 = 0;
	m_50_59 = 0;
	m_50 = 0;
	//}}AFX_DATA_INIT
}

CMyStudentView::~CMyStudentView()
{
}

void CMyStudentView::DoDataExchange(CDataExchange* pDX)
{
	CRecordView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMyStudentView)
	DDX_Control(pDX, IDC_COMBO_CLASS, m_combo_class);
	DDX_Text(pDX, IDC_EDIT_PASSRATE, m_passrate);
	DDV_MinMaxFloat(pDX, m_passrate, 0.f, 100.f);
	DDX_Text(pDX, IDC_EDIT_AVERAGE, m_average);
	DDV_MinMaxFloat(pDX, m_average, 0.f, 100.f);
	DDX_Text(pDX, IDC_EDIT_90_100, m_90_100);
	DDV_MinMaxInt(pDX, m_90_100, 0, 50);
	DDX_Text(pDX, IDC_EDIT_80_89, m_80_89);
	DDV_MinMaxInt(pDX, m_80_89, 0, 50);
	DDX_Text(pDX, IDC_EDIT_70_79, m_70_79);
	DDV_MinMaxInt(pDX, m_70_79, 0, 50);
	DDX_Text(pDX, IDC_EDIT_60_69, m_60_69);
	DDV_MinMaxInt(pDX, m_60_69, 0, 50);
	DDX_Text(pDX, IDC_EDIT_50_59, m_50_59);
	DDV_MinMaxInt(pDX, m_50_59, 0, 50);
	DDX_Text(pDX, IDC_EDIT_50, m_50);
	DDV_MinMaxInt(pDX, m_50, 0, 50);
	DDX_FieldText(pDX, IDC_EDIT_CLASS, m_pSet->m_class, m_pSet);
	DDX_FieldText(pDX, IDC_EDIT_ENDTERM, m_pSet->m_endterm, m_pSet);
	DDV_MinMaxLong(pDX, m_pSet->m_endterm, 0, 100);
	DDX_FieldText(pDX, IDC_EDIT_FINAL, m_pSet->m_final, m_pSet);
	DDV_MinMaxLong(pDX, m_pSet->m_final, 0, 100);
	DDX_FieldText(pDX, IDC_EDIT_IDNUM, m_pSet->m_idnum, m_pSet);
	DDV_MinMaxLong(pDX, m_pSet->m_idnum, 0, 400);
	DDX_FieldText(pDX, IDC_EDIT_MIDDLETERM, m_pSet->m_midterm, m_pSet);
	DDV_MinMaxLong(pDX, m_pSet->m_midterm, 0, 100);
	DDX_FieldText(pDX, IDC_EDIT_NAME, m_pSet->m_name, m_pSet);
	DDX_FieldText(pDX, IDC_EDIT_NORAML, m_pSet->m_normal, m_pSet);
	DDV_MinMaxLong(pDX, m_pSet->m_normal, 0, 10);
	DDX_FieldText(pDX, IDC_EDIT_STUNUM, m_pSet->m_stunum, m_pSet);
	DDV_MaxChars(pDX, m_pSet->m_stunum, 15);
	DDX_FieldText(pDX, IDC_EDIT_NOTE, m_pSet->m_note, m_pSet);
	DDV_MaxChars(pDX, m_pSet->m_note, 10);
	//}}AFX_DATA_MAP
}

BOOL CMyStudentView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CRecordView::PreCreateWindow(cs);
}
//只要文档数据发生变化。就调用些函数。
void CMyStudentView::OnInitialUpdate()
{
	m_pSet = &GetDocument()->m_myStudentSet;
	CRecordView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();

// 通知文档准备数据,只运行一次。
//----------------------------------
	if(GetDocument()->m_loaded==0)return;
	GetDocument()->ResetClassInfo();
	GetDocument()->GetClassInfo();
	GetDocument()->AnalysisData();
//----------------------------------
	UpdateData(FALSE);
	GetDocument()->UpdateAllViews(this);
	//在主控视图显示班级信息。
	SetClassInfo();

}

/////////////////////////////////////////////////////////////////////////////
// CMyStudentView printing

BOOL CMyStudentView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CMyStudentView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CMyStudentView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CMyStudentView diagnostics

#ifdef _DEBUG
void CMyStudentView::AssertValid() const
{
	CRecordView::AssertValid();
}

void CMyStudentView::Dump(CDumpContext& dc) const
{
	CRecordView::Dump(dc);
}

CMyStudentDoc* CMyStudentView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyStudentDoc)));
	return (CMyStudentDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMyStudentView database support
CRecordset* CMyStudentView::OnGetRecordset()
{
	return m_pSet;
}


/////////////////////////////////////////////////////////////////////////////
// CMyStudentView message handlers

void CMyStudentView::OnButtonEdit() 
{
	CEdit* edt4=(CEdit*)GetDlgItem(IDC_EDIT_NORAML);
	edt4->SetReadOnly(FALSE);
	edt4->SetFocus();
	edt4->SetSel(0,3);
	CEdit* edt5=(CEdit*)GetDlgItem(IDC_EDIT_MIDDLETERM);
	edt5->SetReadOnly(FALSE);
	CEdit* edt6=(CEdit*)GetDlgItem(IDC_EDIT_ENDTERM);
	edt6->SetReadOnly(FALSE);
	CEdit* edt7=(CEdit*)GetDlgItem(IDC_EDIT_NOTE);
	edt7->SetReadOnly(FALSE);
}


//!!!!!!!!!!!此函数有严重问题!!!!!!!!!!!!!
void CMyStudentView::OnButtonSave() 
{
	CEdit* edt4=(CEdit*)GetDlgItem(IDC_EDIT_NORAML);
	edt4->SetReadOnly(TRUE);
	CEdit* edt5=(CEdit*)GetDlgItem(IDC_EDIT_MIDDLETERM);
	edt5->SetReadOnly(TRUE);
	CEdit* edt6=(CEdit*)GetDlgItem(IDC_EDIT_ENDTERM);
	edt6->SetReadOnly(TRUE);
	CEdit* edt7=(CEdit*)GetDlgItem(IDC_EDIT_NOTE);
	edt7->SetReadOnly(TRUE);
	m_pSet->Edit();
	UpdateData(TRUE);//对话数据到数据成员
	if(!m_pSet->Update())MessageBox("  当前记录没有改动!  ");//如果没有更新成功
}


//=============================================================

void CMyStudentView::OnSelchangeComboClass() 
{
	// TODO: Add your control notification handler code here
	CComboBox*	m_combo_class=(CComboBox*)GetDlgItem(IDC_COMBO_CLASS);
	int seldex;
	CString  curname;
	seldex=m_combo_class->GetCurSel();
	m_combo_class->GetLBText(seldex,curname);
	GetDocument()->SetCurrentClassData(curname);
	TransDataFormDoc();//传送数据.
	UpdateData(FALSE);//文档数据到对话框更新
}

//=================================================================
// 重新计算改动后的最终成绩,分析数据更新显示
void CMyStudentView::OnButtonUpdate() 
{
	GetDocument()->OnEditRecal();
}

//================================================================
//将班级分析数据从文档对象传到当前视图
void CMyStudentView::TransDataFormDoc()
{
	m_50=GetDocument()->m_50;
	m_50_59=GetDocument()->m_50_59;
	m_60_69=GetDocument()->m_60_69;
	m_70_79=GetDocument()->m_70_79;
	m_80_89=GetDocument()->m_80_89;
	m_90_100=GetDocument()->m_90_100;
	m_passrate=GetDocument()->m_passrate;
	m_average=GetDocument()->m_average;
}

//=================================================================
// 在主控视图初始化显示班级信息。
void CMyStudentView::SetClassInfo()
{
//  将表的基本班级信息更新到窗体中去。
	CObArray* tempclass=&(GetDocument()->m_classanalysis);
	CString tmpstr;
	CComboBox*	m_combo_class=(CComboBox*)GetDlgItem(IDC_COMBO_CLASS);
	if(m_combo_class->GetCount()!=0)
	m_combo_class->ResetContent();//确保为空。否则每设置一次列表将会增加一倍
	CClassAnalysis* temp;
	for(int i=0;i<tempclass->GetSize();i++)
	{
		temp=((CClassAnalysis*)(tempclass->GetAt(i)));
		tmpstr=((CClassAnalysis*)(tempclass->GetAt(i)))->m_classname;
	    m_combo_class->AddString(tmpstr);
	}
	m_combo_class->SetCurSel(0);
//-----------------------------------------
//显示初始默认的班级分析数据
	CString  curname;
	m_combo_class->GetLBText(0,curname);
	GetDocument()->SetCurrentClassData(curname);
	TransDataFormDoc();
	UpdateData(FALSE);//文档数据到对话框更新
}


⌨️ 快捷键说明

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