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

📄 scorelist.cpp

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

#include "stdafx.h"
#include "sm.h"
#include "ScoreList.h"

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

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

//##ModelId=40A481F5002E
ScoreList::ScoreList(CListCtrl* plist):BaseList(plist)
{

}

//##ModelId=40A481F50030
ScoreList::~ScoreList()
{

}

//##ModelId=40A481F50022
void ScoreList::Init()
{
	pList->InsertColumn(0, _T("学号"), LVCFMT_LEFT, 40);
	pList->InsertColumn(1, _T("姓名"), LVCFMT_LEFT, 60);
	pList->InsertColumn(2, _T("科目"), LVCFMT_LEFT, 60);
	pList->InsertColumn(3, _T("成绩"), LVCFMT_LEFT, 50);
	pList->InsertColumn(4, _T("日期"), LVCFMT_LEFT, 70);
}

//##ModelId=40A481F50011
void ScoreList::LoadData(long class_id, CString begin, CString end, long subject_id)
{
	CString sql, s, s1, s2;

	s.Format("%ld", subject_id);
	s1 = subject_id==0 ? CString("") : CString(" and teaching.subject_id=") + s;
	s2 = subject_id==0 ? " student.number" : "score.score desc";

	s.Format("%ld", class_id);
	sql = "SELECT score.*, student.number, student.name, teaching.subject_id, subject.subject \
			FROM score, student, teaching, subject WHERE score.date between  #" 
			+ begin + "# and #" + end + "# and student.class_id="
			+ s	+" "+ s1 + " and score.student_id=student.id and score.teaching_id = teaching.id \
			and teaching.subject_id = subject.id order by " + s2;
	//AfxMessageBox(sql);
	TRACE("%s", sql);

	CDaoQueryDef QD(&theDatabase);
	QD.Create(NULL, sql);
	CDaoRecordset RS;
	RS.Open(&QD);

	ScoreData.clear();
	while(!RS.IsEOF())
	{
		ScoreData.push_back(ListData(Score(RS.GetFieldValue("id").lVal,
			                               RS.GetFieldValue("date").date,
										   RS.GetFieldValue("student_id").lVal,
										   RS.GetFieldValue("teaching_id").lVal,
										   RS.GetFieldValue("score").lVal
										   ),
									V_BSTRT(&RS.GetFieldValue("subject")),
									V_BSTRT(&RS.GetFieldValue("name")),
									RS.GetFieldValue("number").lVal,
									RS.GetFieldValue("subject_id").lVal
    		                         )
			               );
		RS.MoveNext();
	}

	RS.Close();
	QD.Close();
}

//##ModelId=40A481F50001
void ScoreList::Load(long class_id, CString begin, CString end, long subject_id)
{
	Clear();

	LoadData(class_id, begin, end, subject_id);
	
	CString s;
	vector<ListData>::iterator iter;
	long i = 0;
	for(iter=ScoreData.begin(), i=0; iter!=ScoreData.end(); iter++, i++)
	{
		s.Format("%3d", iter->Number);
		pList->InsertItem(i, s);
		pList->SetItem(i, 1, LVIF_TEXT, iter->StudentName, 0, 0, 0, 0);
		pList->SetItem(i, 2, LVIF_TEXT, iter->SubjectTitle, 0, 0, 0, 0);
		s.Format("%3d", iter->Data.ScoreValue);
		pList->SetItem(i, 3, LVIF_TEXT, s, 0, 0, 0, 0);
		pList->SetItem(i, 4, LVIF_TEXT, iter->Data.Date.Format("%y-%m-%d"), 0, 0, 0, 0);
		pList->SetItemData(i, iter->Data.ID);
	}
	
	pList->SetItemState(0, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
}

//##ModelId=40A481F403D9
void ScoreList::Search(CString student)
{
	SetSelected(Find(1, student));
}

//##ModelId=40A481F403D8
void ScoreList::Clear()
{
	BaseList::Clear();
	ScoreData.clear();
}

//##ModelId=40A481F403BD
ScoreList::ListData& ScoreList::GetSelectData()
{
	if(IsSelected())
	{
		return ScoreData[GetSelected()];
	}
	else
		return ScoreData[0];
}

//##ModelId=40A481F403B9
void ScoreList::Load(CString begin, CString end, long student_id)
{
	Clear();
	LoadData(begin,  end,  student_id);
	CString s;
	vector<ListData>::iterator iter;
	long i = 0;
	for(iter=ScoreData.begin(), i=0; iter!=ScoreData.end(); iter++, i++)
	{
		s.Format("%3d", iter->Number);
		pList->InsertItem(i, s);
		pList->SetItem(i, 1, LVIF_TEXT, iter->StudentName, 0, 0, 0, 0);
		pList->SetItem(i, 2, LVIF_TEXT, iter->SubjectTitle, 0, 0, 0, 0);
		s.Format("%3d", iter->Data.ScoreValue);
		pList->SetItem(i, 3, LVIF_TEXT, s, 0, 0, 0, 0);
		pList->SetItem(i, 4, LVIF_TEXT, iter->Data.Date.Format("%y-%m-%d"), 0, 0, 0, 0);
		pList->SetItemData(i, iter->Data.ID);
	}
	
	pList->SetItemState(0, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
}

//##ModelId=40A481F403AA
void ScoreList::LoadData(CString begin, CString end, long student_id)
{
	CString sql, s, s1, s2;

	s.Format("%ld", student_id);
	sql = "SELECT score.*, student.number, student.name, teaching.subject_id, subject.subject \
			FROM score, student, teaching, subject WHERE score.date between  #" 
			+ begin + "# and #" + end + "# and score.student_id="
			+ s	+" and score.student_id=student.id and score.teaching_id = teaching.id \
			and teaching.subject_id = subject.id order by student.number";
	//AfxMessageBox(sql);
	TRACE("%s", sql);

	CDaoQueryDef QD(&theDatabase);
	QD.Create(NULL, sql);
	CDaoRecordset RS;
	RS.Open(&QD);

	ScoreData.clear();
	while(!RS.IsEOF())
	{
		ScoreData.push_back(ListData(Score(RS.GetFieldValue("id").lVal,
			                               RS.GetFieldValue("date").date,
										   RS.GetFieldValue("student_id").lVal,
										   RS.GetFieldValue("teaching_id").lVal,
										   RS.GetFieldValue("score").lVal
										   ),
									V_BSTRT(&RS.GetFieldValue("subject")),
									V_BSTRT(&RS.GetFieldValue("name")),
									RS.GetFieldValue("number").lVal,
									RS.GetFieldValue("subject_id").lVal
    		                         )
			               );
		RS.MoveNext();
	}
	RS.Close();
	QD.Close();
}

//##ModelId=40A481F4039A
void ScoreList::SetSelectedScore(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 + -