📄 ex_studentdoc.cpp
字号:
// Ex_StudentDoc.cpp : implementation of the CEx_StudentDoc class
//
#include "stdafx.h"
#include "Ex_Student.h"
#include "Ex_StudentDoc.h"
#include "AddDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CEx_StudentDoc
IMPLEMENT_DYNCREATE(CEx_StudentDoc, CDocument)
BEGIN_MESSAGE_MAP(CEx_StudentDoc, CDocument)
//{{AFX_MSG_MAP(CEx_StudentDoc)
ON_COMMAND(ID_STUREC_ADD, OnSturecAdd)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEx_StudentDoc construction/destruction
CEx_StudentDoc::CEx_StudentDoc()
{
// TODO: add one-time construction code here
}
CEx_StudentDoc::~CEx_StudentDoc()
{
int nIndex=GetAllRecNum();
while(nIndex--)
delete m_stuObArray.GetAt(nIndex);
m_stuObArray.RemoveAll();
}
BOOL CEx_StudentDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CEx_StudentDoc serialization
void CEx_StudentDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
m_stuObArray.Serialize(ar);
// TODO: add storing code here
}
else
{
m_stuObArray.Serialize(ar);
// TODO: add loading code here
}
}
/////////////////////////////////////////////////////////////////////////////
// CEx_StudentDoc diagnostics
#ifdef _DEBUG
void CEx_StudentDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CEx_StudentDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CEx_StudentDoc commands
CStudent::CStudent(CString id,CString name,CString sex,int age,CString grade,float score)
{
strID=id;
strName=name;
strSex=sex;
intAge=age;
strGrade=grade;
fScore=score;
}
void CStudent::Display(int nIndex,CListCtrl*pList)
{
int nSub=pList->InsertItem(nIndex,strID);
CString str;
pList->SetItemText(nSub,1,strName);
pList->SetItemText(nSub,2,strSex);
str.Format("%d",intAge);
pList->SetItemText(nSub,3,str);
pList->SetItemText(nSub,4,strGrade);
str.Format("%5.1f",fScore);
pList->SetItemText(nSub,5,str);
}
IMPLEMENT_SERIAL(CStudent,CObject,1)
void CStudent::Serialize(CArchive&ar)
{
if(ar.IsStoring())
ar<<strID<<strName<<strSex<<intAge<<strGrade<<fScore;
else
ar>>strID>>strName>>strSex>>intAge>>strGrade>>fScore;
}
CString CStudent::GetStudentID()
{
return strID;
}
CString CStudent::GetStudentName()
{
return strName;
}
CString CStudent::GetStudentSex()
{
return strSex;
}
int CStudent::GetStudentAge()
{
return intAge;
}
CString CStudent::GetStudentGrade()
{
return strGrade;
}
float CStudent::GetStudentScore()
{
return fScore;
}
void CEx_StudentDoc::OnSturecAdd()
{
CAddDlg dlg;
if(IDOK==dlg.DoModal())
{
for(int i=0;i<m_stuObArray.GetSize();i++)
{
CStudent *pStu=(CStudent *)m_stuObArray.GetAt(i);
if(pStu->GetStudentID()==dlg.m_strID)
{
MessageBox(NULL,"学生学号必须唯一,添加失败!","错误",MB_OK|MB_ICONERROR);
return;
}
}
CStudent *pStudent= new CStudent(dlg.m_strID,dlg.m_strName,dlg.m_strSex,dlg.m_intAge,dlg.m_strGrade,dlg.m_fScore);
m_stuObArray.Add(pStudent);
SetModifiedFlag();
UpdateAllViews(NULL,1);
}
// TODO: Add your command handler code here
}
int CEx_StudentDoc::GetAllRecNum()
{
return m_stuObArray.GetSize();
}
CStudent* CEx_StudentDoc::GetStudentAt(int nIndex)
{
if((nIndex<0)||nIndex>m_stuObArray.GetUpperBound())
return 0;
return(CStudent*)m_stuObArray.GetAt(nIndex);
}
void CEx_StudentDoc::DeleteStudentAt(int nIndex)
{
if(nIndex<0||nIndex>=m_stuObArray.GetSize())
return;
delete m_stuObArray.GetAt(nIndex);
m_stuObArray.RemoveAt(nIndex);
SetModifiedFlag(TRUE);
UpdateAllViews(NULL,1);
}
void CEx_StudentDoc::ModifyStudentAt(int nIndex)
{
if(nIndex<0||nIndex>=m_stuObArray.GetSize())
return;
CStudent *pStu=GetStudentAt(nIndex);
CAddDlg dlg;
dlg.m_strID=pStu->GetStudentID();
dlg.m_strName=pStu->GetStudentName();
dlg.m_strSex=pStu->GetStudentSex();
dlg.m_intAge=pStu->GetStudentAge();
dlg.m_strGrade=pStu->GetStudentGrade();
dlg.m_fScore=pStu->GetStudentScore();
dlg.SetToModify(true);
if(dlg.DoModal()==IDOK)
{
pStu->ModifyStudent(dlg.m_strName,dlg.m_strSex,dlg.m_intAge,dlg.m_strGrade,dlg.m_fScore);
SetModifiedFlag(TRUE);
UpdateAllViews(NULL,1);
}
}
void CStudent::ModifyStudent(CString name, CString sex, int age, CString grade, float score)
{
strName=name;
strSex=sex;
intAge=age;
strGrade=grade;
fScore=score;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -