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