📄 mystudentview.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 + -