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

📄 studentlist.cpp

📁 课程设计的简单Access学生数据库系统
💻 CPP
字号:
// StudentList.cpp: implementation of the StudentList class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SM.h"
#include "student.h"
#include "StudentList.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

//##ModelId=40A481F2035B
StudentList::StudentList(CListCtrl * plist):BaseList(plist)
{
	ASSERT(plist);
	pList = plist;
	pList->SetExtendedStyle(pList->GetExtendedStyle() | LVS_EX_FULLROWSELECT);
}

//##ModelId=40A481F2035D
StudentList::~StudentList()
{

}

//##ModelId=40A481F2034D
void StudentList::Load(long class_id)
{
	LoadData(class_id);
	CString s;
	vector<Student>::iterator iter;
	long i = 0;
	for(iter=Students.begin(), i=0; iter!=Students.end(); iter++, i++)
	{
		s.Format("%3d", iter->Num);
		pList->InsertItem(i, s);
		pList->SetItem(i, 1, LVIF_TEXT, iter->Name, 0, 0, 0, 0);
		pList->SetItem(i, 2, LVIF_TEXT, iter->Sex?_T("男"):_T("女"), 0, 0, 0, 0);
		pList->SetItem(i, 3, LVIF_TEXT, iter->Birthday.Format("%Y-%m-%d"), 0, 0, 0, 0);
		pList->SetItem(i, 4, LVIF_TEXT, iter->EMail, 0, 0, 0, 0);
		pList->SetItemData(i, iter->ID);
	}
	
	pList->SetItemState(0, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
}

//##ModelId=40A481F2034C
void StudentList::Clear()
{
	pList->DeleteAllItems();
	Students.clear();
}

//##ModelId=40A481F20310
void StudentList::Init()
{
	pList->InsertColumn(0, _T("学号"), LVCFMT_LEFT, 60);
	pList->InsertColumn(1, _T("姓名"), LVCFMT_LEFT, 90);
	pList->InsertColumn(2, _T("性别"), LVCFMT_LEFT, 60);
	pList->InsertColumn(3, _T("出生年月"), LVCFMT_LEFT, 88);
	pList->InsertColumn(4, _T("EMail"), LVCFMT_LEFT, 150);
}

//##ModelId=40A481F2030F
bool StudentList::IsSelected()
{
	POSITION pos;
	pos = pList->GetFirstSelectedItemPosition();
	return pos!=NULL;
}

//##ModelId=40A481F2030E
Student& StudentList::GetSelectStudent()
{
	ASSERT(IsSelected()==true);
	vector<Student>::iterator iter;
	if(IsSelected())
	{
		long id = GetSelectedData();
		
		for(iter=Students.begin(); iter!=Students.end(); iter++)
			if((*iter).ID==id)
				return *iter;
	}
	return *iter;
}

//##ModelId=40A481F2030D
void StudentList::InitForUpDown()
{
	pList->InsertColumn(0, _T("学号"), LVCFMT_LEFT, 37);
	pList->InsertColumn(1, _T("姓名"), LVCFMT_LEFT, 48);
	pList->InsertColumn(2, _T("性别"), LVCFMT_LEFT, 37);
}

//##ModelId=40A481F202FF
void StudentList::LoadForUpdown(long class_id)
{
	LoadData(class_id);
	CString s;
	vector<Student>::iterator iter;
	long i = 0;
	for(iter=Students.begin(), i=0; iter!=Students.end(); iter++, i++)
	{
		s.Format("%3d", iter->Num);
		pList->InsertItem(i, s);
		pList->SetItem(i, 1, LVIF_TEXT, iter->Name, 0, 0, 0, 0);
		pList->SetItem(i, 2, LVIF_TEXT, iter->Sex?_T("男"):_T("女"), 0, 0, 0, 0);
		pList->SetItemData(i, iter->ID);
	}
	
	pList->SetItemState(0, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
}

//##ModelId=40A481F202FD
void StudentList::LoadData(long class_id)
{
	Clear();
	CDaoTableDef TD(&theDatabase);
	TD.Open("student");
	CDaoRecordset RS;
	RS.Open(&TD);
	RS.SetCurrentIndex("Class_ID");
	if(RS.Seek("=", &COleVariant(class_id)))
	{
		while(!RS.IsEOF())
		{
			
			if(RS.GetFieldValue("Class_ID").lVal!=class_id)
				break;
			Students.push_back(Student(RS.GetFieldValue("ID").lVal,
									   V_BSTRT(&RS.GetFieldValue("name")),
									   RS.GetFieldValue("sex").boolVal==-1,
									   RS.GetFieldValue("birthday"),
									   RS.GetFieldValue("class_id").lVal,
									   RS.GetFieldValue("number").lVal,
									   V_BSTRT(&RS.GetFieldValue("email")),
									   V_BSTRT(&RS.GetFieldValue("remark"))
									   )
							  );
			RS.MoveNext();
		}
	}

	sort(Students.begin(), Students.end(), Comp());
	RS.Close();
	TD.Close();
}

//##ModelId=40A481F2034B
vector<Student>& StudentList::GetSelecteds()
{
	POSITION pos;
	Selecteds.clear();
	pos = pList->GetFirstSelectedItemPosition();
	long index = 0, i_sel;
	while(pos)
	{
		i_sel = pList->GetNextSelectedItem(pos);
		Selecteds.push_back(Students[i_sel]);
	}
	return Selecteds;
}

//##ModelId=40A481F202EF
void StudentList::SetSelectStudent(long id)
{
	for(int i=0; i<GetCount(); i++)
	{
		if(pList->GetItemData(i)==id)
		{
			SetSelected(i);
			return;
		}
	}
}

⌨️ 快捷键说明

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