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

📄 ex_studentdoc.cpp

📁 半成品具有添加
💻 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 + -