📄 scoreinput.cpp
字号:
// ScoreInput.cpp : implementation file
//
#include "stdafx.h"
#include "EduAdministration.h"
#include "ScoreInput.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CScoreInput dialog
CScoreInput::CScoreInput(CWnd* pParent /*=NULL*/)
: CDialog(CScoreInput::IDD, pParent)
{
//{{AFX_DATA_INIT(CScoreInput)
m_CouName = _T("");
m_score = _T("");
m_stuName = _T("");
m_stuNum = _T("");
//}}AFX_DATA_INIT
}
void CScoreInput::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CScoreInput)
DDX_Control(pDX, IDC_EDTSCORE, m_ctlScore);
DDX_Control(pDX, IDC_LISTSTUDENT, m_listStudent);
DDX_Control(pDX, IDC_LISTEXAM, m_listExam);
DDX_Control(pDX, IDC_BTNENTERNEXT, m_btnEnterNext);
DDX_Control(pDX, IDC_BTNENTER, m_btnEnter);
DDX_Control(pDX, IDC_BTNCLEAR, m_btnClear);
DDX_Text(pDX, IDC_EDTCOUNAME, m_CouName);
DDX_Text(pDX, IDC_EDTSCORE, m_score);
DDX_Text(pDX, IDC_EDTSTUNAME, m_stuName);
DDX_Text(pDX, IDC_EDTSTUNUM, m_stuNum);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CScoreInput, CDialog)
//{{AFX_MSG_MAP(CScoreInput)
ON_WM_SHOWWINDOW()
ON_NOTIFY(NM_CLICK, IDC_LISTEXAM, OnClickListexam)
ON_BN_CLICKED(IDC_BTNCLEAR, OnBtnclear)
ON_NOTIFY(NM_CLICK, IDC_LISTSTUDENT, OnClickListstudent)
ON_BN_CLICKED(IDC_BTNENTER, OnBtnenter)
ON_BN_CLICKED(IDC_BTNENTERNEXT, OnBtnenternext)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CScoreInput message handlers
BOOL CScoreInput::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_listExam.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_listExam.InsertColumn(0,"课程名称",LVCFMT_LEFT,100);
m_listExam.InsertColumn(1,"年级",LVCFMT_LEFT,80);
m_listStudent.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_listStudent.InsertColumn(0,"学号",LVCFMT_LEFT,80);
m_listStudent.InsertColumn(1,"姓名",LVCFMT_LEFT,80);
m_listStudent.InsertColumn(2,"年级",LVCFMT_LEFT,100);
m_listStudent.InsertColumn(3,"学院",LVCFMT_LEFT,100);
m_listStudent.InsertColumn(4,"专业",LVCFMT_LEFT,100);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CScoreInput::setExamList()
{
m_listExam.DeleteAllItems();
m_pExam = new CExam();
if(!m_pExam->IsOpen())
m_pExam->Open();
int i=0;
CString st,examName,examGlade;
char *strg;
int j,k;
while (!m_pExam->IsEOF())
{
st=m_pExam->m_examID;
j = st.Find(" ");
strg = st.GetBuffer(j);
examName = "";
examGlade = "";
for(k=0;k<j;k++)
examGlade+=strg[k];
for(k=j+1;k<=st.GetLength();k++)
examName+=strg[k];
m_listExam.InsertItem(i,examName);
m_listExam.SetItemText(i,1,examGlade);
i++;
m_pExam->MoveNext();
st.ReleaseBuffer();
}
m_pExam->Close();
delete m_pExam;
}
void CScoreInput::OnShowWindow(BOOL bShow, UINT nStatus)
{
CDialog::OnShowWindow(bShow, nStatus);
// TODO: Add your message handler code here
setExamList();
}
void CScoreInput::OnClickListexam(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
UpdateData();
char s[20];
char t[20];
CString st,strs,strt;
m_listExam.GetItemText(m_listExam.GetSelectionMark(),0,s,19);
m_listExam.GetItemText(m_listExam.GetSelectionMark(),1,t,19);
if(s=="")
return;
if(t=="")
return;
m_pExam = new CExam();
if(!m_pExam->IsOpen())
m_pExam->Open();
strt = t;
strs = s;
st = strt + " " + strs;
m_stuExamID = strt + "_" + strs;
m_pExam->m_strFilter.Format("examID='%s'",st);
m_pExam->Requery();
if(m_pExam->IsEOF()){
m_pExam->Close();
delete m_pExam;
return;
}
m_stuName="";
m_stuNum="";
m_score="";
m_CouName = strs;
UpdateData(false);
setStuList(strt,m_pExam->m_couID);
m_pExam->Close();
delete m_pExam;
m_listStudent.SetSelectionMark(0);
m_ctlScore.SetFocus();
*pResult = 0;
}
void CScoreInput::setStuList(CString grade,CString CouID)
{
UpdateData();
m_listStudent.DeleteAllItems();
m_pCourse = new CCourse();
if(!m_pCourse->IsOpen())
m_pCourse->Open();
m_pCourse->m_strFilter.Format("couID='%s'",CouID);
m_pCourse->Requery();
if(m_pCourse->IsEOF()){
m_pCourse->Close();
delete m_pCourse;
return;
}
CString institute,specialty;
institute = m_pCourse->m_institute;
specialty = m_pCourse->m_specialty;
m_pCourse->Close();
delete m_pCourse;
m_pStudents = new CStudents();
if(!m_pStudents->IsOpen())
m_pStudents->Open();
m_pStudents->m_strFilter.Format("grade='%s' and institute='%s' and specialty='%s'",
grade,institute,specialty);
m_pStudents->Requery();
int i=0;
if(!m_pStudents->IsEOF()){
m_stuName=m_pStudents->m_stuName;
m_stuNum = m_pStudents->m_stuNum;
m_score = "";
UpdateData(false);
}
while (!m_pStudents->IsEOF())
{
m_listStudent.InsertItem(i,m_pStudents->m_stuNum);
m_listStudent.SetItemText(i,1,m_pStudents->m_stuName);
m_listStudent.SetItemText(i,2,grade);
m_listStudent.SetItemText(i,3,institute);
m_listStudent.SetItemText(i,4,specialty);
i++;
m_pStudents->MoveNext();
}
m_pStudents->Close();
delete m_pStudents;
}
void CScoreInput::OnBtnclear()
{
// TODO: Add your control notification handler code here
m_CouName="";
m_stuNum = "";
m_stuName = "";
m_score = "";
UpdateData(false);
}
void CScoreInput::OnClickListstudent(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
char s[20];
char t[20];
CString st,strs,strt;
m_listStudent.GetItemText(m_listStudent.GetSelectionMark(),0,s,19);
m_listStudent.GetItemText(m_listStudent.GetSelectionMark(),1,t,19);
if(s=="")
return;
if(t=="")
return;
strs = s;
strt = t;
st = strs+" "+strt;
// AfxMessageBox(st);
UpdateData();
m_stuNum = strs;
m_stuName = strt;
m_score = "";
UpdateData(false);
// m_ctlScore.SetFocus();
*pResult = 0;
}
void CScoreInput::OnBtnenter()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_CouName==""||m_stuNum==""||m_stuName=="")
return;
if(m_score==""){
AfxMessageBox("请输入学生成绩");
return;
}
if(m_score=="写入完成")
return;
m_pStuScores = new CStuScores();
if(!m_pStuScores->IsOpen())
m_pStuScores->Open();
m_pStuScores->m_strFilter.Format("stuNum='%s'",m_stuNum);
m_pStuScores->Requery();
if(m_pStuScores->IsEOF())
{
m_pStuScores->AddNew();
m_pStuScores->m_stuNum = m_stuNum;
m_pStuScores->m_stuName = m_stuName;
m_pStuScores->m_stuScore = m_stuExamID+" "+m_score;
m_pStuScores->Update();
}
else
{
int i = m_pStuScores->m_stuScore.Find(m_stuExamID);
if(!(i==-1)){
AfxMessageBox("此课程成绩已存在");
m_pStuScores->Close();
delete m_pStuScores;
return;
}
else
{
m_pStuScores->Edit();
m_pStuScores->m_stuScore+=" "+m_stuExamID+" "+m_score;
m_pStuScores->Update();
}
}
m_pStuScores->Close();
delete m_pStuScores;
m_score = "写入完成";
UpdateData(false);
}
void CScoreInput::OnBtnenternext()
{
// TODO: Add your control notification handler code here
OnBtnenter();
m_stuNum="";
m_stuName="";
m_score="";
UpdateData(false);
int i=m_listStudent.GetSelectionMark()+1;
if(i==m_listStudent.GetItemCount())
return;
m_listStudent.SetSelectionMark(i);
char s[20];
char t[20];
CString st,strs,strt;
m_listStudent.GetItemText(i,0,s,19);
m_listStudent.GetItemText(i,1,t,19);
if(s=="")
return;
if(t=="")
return;
strs = s;
strt = t;
UpdateData();
m_stuNum = strs;
m_stuName = strt;
m_score = "";
UpdateData(false);
m_ctlScore.SetFocus();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -