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

📄 scoreinput.cpp

📁 教学管理系统实现了高校教务、教学和学生三大方面的自动化以及交互式管理
💻 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 + -