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

📄 exam.cpp

📁 通过一个学校考试信息管理系统介绍了以较为模块化的方式视线数据库应用系统的方式
💻 CPP
字号:
// Exam.cpp : 实现文件
//

#include "stdafx.h"
#include "StudentScore.h"
#include "Exam.h"


// CExam

CExam::CExam()
{
	m_TblName="Exam"; 
}

CExam::~CExam()
{
	if(m_TermList.GetCount()>0)
	{
		ClearTermList();
	}
	if(m_NoList.GetCount()>0)
	{
		ClearNoList();
	}
}

// CExam 成员函数

CStringList& CExam::GetTerms()
{
	m_Storage.OpenSql("Term","学期编号");
	int count=m_Storage.GetRecordCount();
	if(m_TermList.GetCount()>0)
	{
		ClearTermList();
	}
	if(count>0)
	{
		m_Storage.MoveFirst();
		CString value;
		while(!m_Storage.IsEof())
		{
			m_Storage.GetFieldValue(0,value);
			m_TermList.AddTail(value);
			m_Storage.MoveNext();
		}
	}
	return m_TermList;
}

void CExam::ClearTermList(void)
{
	m_TermList.RemoveAll();
}

CStringList* CExam::GetNos()
{
	m_Storage.OpenSql("Exam","考试编号");
	int count=m_Storage.GetRecordCount();
	if(m_NoList.GetCount()>0)
	{
		ClearNoList();
	}
	if(count>0)
	{
		m_Storage.MoveFirst();
		CString value;
		while(!m_Storage.IsEof())
		{
			m_Storage.GetFieldValue(0,value);
			m_NoList.AddTail(value);
			m_Storage.MoveNext();
		}
	}
	return &m_NoList;
}

void CExam::ClearNoList(void)
{
	m_NoList.RemoveAll();
}

void CExam::GetExamByNo(CString No)//获取考试信息
{
	CString ConStr;
	ConStr="where 考试编号='"+No+"'";
	m_Storage.OpenSql(m_TblName,"*",ConStr);
	if(m_Storage.GetRecordCount()>0)
	{
		m_No=No;
		m_Storage.GetFieldValue("考试日期",(COleDateTime*) &m_Date);
		m_Storage.GetFieldValue("学期编号",m_TermNo);
	}
	else
	{
		m_No="";
		m_TermNo=""; 
	}
}

bool CExam::IsNoExisted(CString No)
{
	CString ConStr;
	ConStr="where 考试编号='"+No+"'";
	m_Storage.OpenSql(m_TblName,"*",ConStr);
	if(m_Storage.GetRecordCount()>0)
	{
		return true;
	}
	else
	{
		return false;
	}
}

void CExam::AddExam()
{
	CString FldList,ValueList;
	FldList="考试编号,考试日期,学期编号";
	ValueList="'"+m_No+"','"+m_Date.Format()+"','"+m_TermNo+"'";
	m_Storage.ExecInsertSql(m_TblName,FldList,ValueList); 
}

void CExam::DeleteExamByNo(CString No)
{
	CString ConStr;
    ConStr="where 考试编号='"+No+"'";
    m_Storage.ExceDeleteSql(m_TblName,ConStr); 
}

// CExamClass
CExamClass::CExamClass()
{
	m_TblName="ExamClass"; 
}

CExamClass::~CExamClass()
{
}

// CExamClass 成员函数
void CExamClass::GetExamClassByExamNo(CString ExamNo)
{
	CString SqlStr;
	SqlStr="select a.编号,a.班级编号,b.班级名称,a.班级平均成绩,a.班级总成绩 ";
	SqlStr+=" from ExamClass a,Class b where a.班级编号=b.班级编号 and ";
	SqlStr+=" a.考试编号='"+ExamNo+"'";
	m_Storage.Open(SqlStr,CADODataset::openQuery);
}

void CExamClass::GetGrades()
{
	if(m_GradeList.GetCount()>0)
	{
		m_GradeList.RemoveAll();  
	}
	CFldValue value;
	m_Storage.OpenSql("Grade","年级编号,年级名称");
	if(m_Storage.GetRecordCount()>0)
	{   
		m_Storage.MoveFirst();
		CString fldvalue;
		while(!m_Storage.IsEof())
		{
			m_Storage.GetFieldValue("年级编号",fldvalue);
			strcpy(value.FieldValue,fldvalue);
			m_Storage.GetFieldValue("年级名称",fldvalue);
			strcpy(value.DispalyFieldValue,fldvalue);
			m_GradeList.AddTail(value);
			m_Storage.MoveNext();
		}	
	}
}

void CExamClass::GetClassesByGradeNo(CString GradeNo)
{
	if(m_ClassList.GetCount()>0)
	{
		m_ClassList.RemoveAll();  
	}
	CFldValue value;
	CString ConStr;
	ConStr="where 年级编号='"+GradeNo+"'";
	m_Storage.OpenSql("Class","班级编号,班级名称",ConStr);
	if(m_Storage.GetRecordCount()>0)
	{   
		m_Storage.MoveFirst();
		CString fldvalue;
		while(!m_Storage.IsEof())
		{
			m_Storage.GetFieldValue("班级编号",fldvalue);
			strcpy(value.FieldValue,fldvalue);
			m_Storage.GetFieldValue("班级名称",fldvalue);
			strcpy(value.DispalyFieldValue,fldvalue);
			m_ClassList.AddTail(value);
			m_Storage.MoveNext();
		}	
	}
}

void CExamClass::AddClass()
{
	CString FldList,ValueList;
	FldList="考试编号,班级编号";
	ValueList="'"+m_ExamNo+"','"+m_ClassNo+"'";
	m_Storage.ExecInsertSql(m_TblName,FldList,ValueList); 
}

bool CExamClass::IsClassNoExisted(const CString ExamNo,CString ClassNo)
{
	CString ConStr;
	ConStr="where 班级编号='"+ClassNo+"' and  考试编号='"+ExamNo+"'";
	m_Storage.OpenSql(m_TblName,"编号",ConStr);
	if(m_Storage.GetRecordCount()>0)
	{
		return true;
	}
	else
	{
		return false;
	}
}

void CExamClass::DelClassByNo(CString No)
{
	CString constr;
	constr="where 编号="+No;
	m_Storage.ExceDeleteSql(m_TblName,constr); 
}

void CExamClass::CaculateScores()
{
}

//CExamStudent

CExamStudent::CExamStudent()
{
    m_TblName="ExamStudent" ;
}
CExamStudent::~CExamStudent()
{

}

//CExamStudent成员函数

void CExamStudent::GetExamStudentBy(const CString ExamNo,const CString ClassNo)
{
   CString SqlStr;
   SqlStr="select a.考生编号 ,a.学号,b.姓名,a.总成绩,a.平均成绩 ";
   SqlStr+=" from ExamStudent a,student b where a.考试编号='"+ExamNo+"' and  a.班级编号='"+ClassNo+"'";
   SqlStr+=" and a.学号=b.学号";
   m_Storage.Open(SqlStr,CADODataset::openQuery); 
}

void CExamStudent::AddStudent()
{
    CString FldList,ValueList;
	FldList="考试编号,班级编号,学号";
	ValueList="'"+m_ExamNo+"','"+m_ClassNo+"','"+m_StudentNo+"'";
	m_Storage.ExecInsertSql(m_TblName,FldList,ValueList); 
}

void CExamStudent::GetStudentsByClassNo(CString ClassNo)
{
	if(m_StudentList.GetCount()>0)
	{
	  m_StudentList.RemoveAll();  
	}
	CFldValue value;
	CString ConStr;
	ConStr="where 班级编号='"+ClassNo+"'";
	m_Storage.OpenSql("student","学号,姓名",ConStr);
	if(m_Storage.GetRecordCount()>0)
	{   
		m_Storage.MoveFirst();
		CString fldvalue;
		while(!m_Storage.IsEof())
		{
		   m_Storage.GetFieldValue("学号",fldvalue);
		   strcpy(value.FieldValue,fldvalue);
    	   m_Storage.GetFieldValue("姓名",fldvalue);
		   strcpy(value.DispalyFieldValue,fldvalue);
           m_StudentList.AddTail(value);
		   m_Storage.MoveNext();
		}
	
	}
}

bool CExamStudent::IsStudentNoExisted(const CString ExamNo,
									  const CString ClassNo,
									  const CString StudentNo)
{
	CString ConStr;
	ConStr="where 考试编号='"+ExamNo+"' and 班级编号='"+ClassNo+"' and 学号='";
	ConStr+=StudentNo+"'";
   m_Storage.OpenSql(m_TblName,"考生编号",ConStr);
   if(m_Storage.GetRecordCount()>0)
   {
      return true;
   }
   else
   {
      return false;
   }
}

void CExamStudent::DelStudent(const CString ExamNo,
							  const CString ClassNo,
							  const CString StudentNo)
{
	CString ConStr;
	ConStr="where 考试编号='"+ExamNo+"' and 班级编号='"+ClassNo+"' and 学号='";
	ConStr+=StudentNo+"'";
	m_Storage.ExceDeleteSql(m_TblName,ConStr); 
}

void CExamStudent::DelStudentByNo(const CString No)
{
    CString ConStr;
	ConStr="where 考生编号="+No;
	m_Storage.ExceDeleteSql(m_TblName,ConStr); 
}

//CExamSubject
void CExamSubject::GetExamSubjectBy(const CString ExamNo,const CString ClassNo)
{
   CString SqlStr;
   SqlStr="select a.编号 ,a.学号,b.姓名,a.课程编号,c.课程名称,a.成绩 ";
   SqlStr+=" from ExamSubject a,student b,subject c where a.考试编号='"+ExamNo+"' and  a.班级编号='"+ClassNo+"'";
   SqlStr+=" and a.学号=b.学号 and a.课程编号=c.课程编号";
   m_Storage.Open(SqlStr,CADODataset::openQuery); 
}
void CExamSubject::GetStudentsByClassNo(CString ClassNo)//获取学生列表
{
   	if(m_StudentList.GetCount()>0)
	{
	  m_StudentList.RemoveAll();  
	}
	CFldValue value;
	CString ConStr;
	ConStr="where 班级编号='"+ClassNo+"'";
	m_Storage.OpenSql("student","学号,姓名",ConStr);
	if(m_Storage.GetRecordCount()>0)
	{   
		m_Storage.MoveFirst();
		CString fldvalue;
		while(!m_Storage.IsEof())
		{
		   m_Storage.GetFieldValue("学号",fldvalue);
		   strcpy(value.FieldValue,fldvalue);
    	   m_Storage.GetFieldValue("姓名",fldvalue);
		   strcpy(value.DispalyFieldValue,fldvalue);
           m_StudentList.AddTail(value);
		   m_Storage.MoveNext();
		}
	
	}
}
void CExamSubject::GetSubjectsByClassNo(CString ClassNo)//科目列表
{
   	if(m_SubjectList.GetCount()>0)
	{
	  m_SubjectList.RemoveAll();  
	}
	CFldValue value;
	CString SqlStr;
	SqlStr="select a.课程编号,b.课程名称 from SubjectClass a,Subject b ";
	SqlStr+="where a.课程编号=b.课程编号 and a.班级编号='"+ClassNo+"'";
    m_Storage.Open(SqlStr,CADODataset::openQuery); 
	if(m_Storage.GetRecordCount()>0)
	{   
		m_Storage.MoveFirst();
		CString fldvalue;
		while(!m_Storage.IsEof())
		{
		   m_Storage.GetFieldValue("课程编号",fldvalue);
		   strcpy(value.FieldValue,fldvalue);
    	   m_Storage.GetFieldValue("课程名称",fldvalue);
		   strcpy(value.DispalyFieldValue,fldvalue);
           m_SubjectList.AddTail(value);
		   m_Storage.MoveNext();
		}
	
	}
}
void CExamSubject::AddSubject()//添加科目
{
   CString FldList,ValueList;
   char a[50];
   FldList="考试编号,班级编号,学号,课程编号,成绩";
   ValueList="'"+m_ExamNo+"','"+m_ClassNo+"','";
   ValueList+=m_StudentNo+"','"+m_SubjectNo+"',";
   sprintf(a,"%f",m_Score); 
   ValueList+=a;
   m_Storage.ExecInsertSql(m_TblName,FldList,ValueList); 
}
void CExamSubject::DelSubjectByNo(const CString No)//删除科目
{
    CString ConStr;
	ConStr="where 编号="+No;
	m_Storage.ExceDeleteSql(m_TblName,ConStr); 
}

⌨️ 快捷键说明

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