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

📄 page1.cpp

📁 学生成绩管理系统 在VCsql的开发环境下编写的
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Page1.cpp : implementation file
//

#include "stdafx.h"
#include "cj.h"

#include "Page1.h"
#include "FindRecord.h"
#include "AddRecord.h"
#include "ModifRecord.h"
#include "DelteDlg.h"
#include "afxdb.h"

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


/////////////////////////////////////////////////////////////////////////////
// CPage1 property page

IMPLEMENT_DYNCREATE(CPage1, CPropertyPage)

CPage1::CPage1() : CPropertyPage(CPage1::IDD)
{
	//{{AFX_DATA_INIT(CPage1)
	
	//}}AFX_DATA_INIT
}

CPage1::~CPage1()
{
}

void CPage1::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPage1)
	DDX_Control(pDX, IDC_STATR, m_statr);
	DDX_Control(pDX, IDC_LIST3, m_Lstudent);
	DDX_Control(pDX, IDC_LIST2, m_Lteacher);
	DDX_Control(pDX, IDC_LIST1, m_Ltongji);
	DDX_Control(pDX, IDC_cob_XueQi, m_xueqi);
	DDX_Control(pDX, IDC_cob_XUEJie, m_xuejie);
	DDX_Control(pDX, IDC_cob_XiBie, m_xibie);
	DDX_Control(pDX, IDC_cob_Class, m_class);
	DDX_Control(pDX, IDC_FLAG, m_Flag);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPage1, CPropertyPage)
	//{{AFX_MSG_MAP(CPage1)
	ON_BN_CLICKED(IDC_STATR, OnStatr)
	ON_CBN_SELCHANGE(IDC_cob_XUEJie, OnSelchangecobXUEJie)
	ON_CBN_SELCHANGE(IDC_cob_XiBie, OnSelchangecobXiBie)
	ON_CBN_SELCHANGE(IDC_cob_Class, OnSelchangecobClass)
	ON_CBN_SELCHANGE(IDC_cob_XueQi, OnSelchangecobXueQi)
	ON_BN_CLICKED(IDC_cmdFind, OncmdFind)
	ON_BN_CLICKED(IDC_cmdPrint, OncmdPrint)
	ON_BN_CLICKED(IDC_cmdWatch, OncmdWatch)
	ON_NOTIFY(NM_RCLICK, IDC_LIST1, OnRclickList1)
	ON_NOTIFY(NM_RCLICK, IDC_LIST2, OnRclickList2)
	ON_NOTIFY(NM_RCLICK, IDC_LIST3, OnRclickList3)
	ON_COMMAND(IDR_MENU_ADD, OnMenuAdd)
	ON_COMMAND(IDR_MENU_DELETE, OnMenuDelete)
	ON_COMMAND(IDR_MENU_FIND, OnMenuFind)
	ON_COMMAND(IDR_MENU_MODIF, OnMenuModif)
	ON_BN_CLICKED(IDC_RefashData, OnRefashData)
	ON_WM_CLOSE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPage1 message handlers

BOOL CPage1::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	 //设置学界的下拉框所取的值。
	 if(!m_database.Open(_T("student")))  return false;
     CRecordset rs(&m_database);
	 CString str;
	 rs.Open(CRecordset::forwardOnly,"select 学界名称 from 学界");
	 while(!rs.IsEOF())
	 {
		 rs.GetFieldValue("学界名称",str);
		 m_xuejie.AddString(str);
		 rs.MoveNext();
	 }
	 rs.Close();
	 
   //设置系别下拉框所取的值
     rs.Open(CRecordset::forwardOnly,"select 系别名称 from 系别");
	 while(!rs.IsEOF())
	 {
		 rs.GetFieldValue("系别名称",str);
		 m_xibie.AddString(str);
		 rs.MoveNext();
	 }
	 rs.Close();
	 
   //设置班级下拉框所取的值	  
   rs.Open(CRecordset::forwardOnly,"select 班级名称 from 班级");
	 while(!rs.IsEOF())
	 {
		 rs.GetFieldValue("班级名称",str);
		 m_class.AddString(str);
		 rs.MoveNext();
	 }
	 rs.Close(); 
	 
	 //设置学期下拉框所取的值
	 
rs.Open(CRecordset::forwardOnly,"select 学期 from 学期");
	 while(!rs.IsEOF())
	 {
		 rs.GetFieldValue("学期",str);
		 m_xueqi.AddString(str);
		 rs.MoveNext();
	 }
	 rs.Close(); 

	//初始化列表:
	// TODO: Add extra initialization here
	m_Ltongji.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES); //给LIST添加网格
	m_Lteacher.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES);
	m_Lstudent.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES);
 
	
//统计列表框的设置
	m_Ltongji.InsertColumn(0,"科目",LVCFMT_LEFT,110);
	m_Ltongji.InsertColumn(1,"总成绩",LVCFMT_LEFT,75);
	m_Ltongji.InsertColumn(2,"平均成绩",LVCFMT_LEFT,60);
	m_Ltongji.InsertColumn(3,"优秀人数",LVCFMT_LEFT,60);
	m_Ltongji.InsertColumn(4,"及格人数",LVCFMT_LEFT,60);
    m_Ltongji.InsertColumn(5,"未及格人数",LVCFMT_LEFT,75);
//授课教师的设置
	m_Lteacher.InsertColumn(0,"科目",LVCFMT_LEFT);
	m_Lteacher.InsertColumn(1,"任课老师",LVCFMT_LEFT);
	RECT rectTeacher;
	m_Lteacher.GetWindowRect(&rectTeacher);
	int widTeacher=rectTeacher.right-rectTeacher.left;
	int wid2=widTeacher/2;
	m_Lteacher.SetColumnWidth(0,wid2);
	m_Lteacher.SetColumnWidth(1,wid2);
//学生成绩列表的设置    
	m_Lstudent.InsertColumn(0,"学届",LVCFMT_LEFT,36);
    m_Lstudent.InsertColumn(1,"系别",LVCFMT_LEFT,75);
	m_Lstudent.InsertColumn(2,"班级",LVCFMT_LEFT,75);
	m_Lstudent.InsertColumn(3,"学号",LVCFMT_LEFT,70);
    m_Lstudent.InsertColumn(4,"姓名",LVCFMT_LEFT,48);
    m_Lstudent.InsertColumn(5,"性别",LVCFMT_LEFT,36);
	//设置颜色
	m_Ltongji.SetBkColor(RGB(105,140,140));
	m_Lteacher.SetBkColor(RGB(105,140,140));
	m_Lstudent.SetBkColor(RGB(105,140,140));
	m_Ltongji.SetTextColor(RGB(0,121,114));
    m_Lteacher.SetTextColor(RGB(0,121,114));
    m_Lstudent.SetTextColor(RGB(0,121,114));
	
	//设置初始值
 	m_xueqi.SetCurSel(0);
	m_xuejie.SetCurSel(0);
	m_xibie.SetCurSel(0);
	m_class.SetCurSel(0);
    
	//初始变量
	sign_class=m_class.GetCurSel();
	sign_xuejie=m_xuejie.GetCurSel();
	sign_xueqi=m_xueqi.GetCurSel();
	sign_xibie=m_xibie.GetCurSel();
	if(m_Flag.Load(MAKEINTRESOURCE(IDR_FLAG),_T("GIF")))
	{
		m_Flag.SetBkColor(RGB(0,0,0));
		m_Flag.Draw();	
	}
return TRUE;  
}

void CPage1::OnStatr() 
{
	//显示数据:关于三个列表框的显示内容
    //初始化列表:
	// TODO: Add extra initialization here
	m_Ltongji.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES); //给LIST添加网格
	m_Lteacher.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES);
	m_Lstudent.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES);

    //清空成员变量
 	m_xueqi.SetCurSel(0);
	m_xuejie.SetCurSel(0);
	m_xibie.SetCurSel(0);
	m_class.SetCurSel(0);
    //初始变量
	sign_class=m_class.GetCurSel();
	sign_xuejie=m_xuejie.GetCurSel();
	sign_xueqi=m_xueqi.GetCurSel();
	sign_xibie=m_xibie.GetCurSel();

    m_Ltongji.DeleteAllItems();
	m_Lteacher.DeleteAllItems();
	m_Lstudent.DeleteAllItems();
	
}

void CPage1::OnSelchangecobXUEJie() //当学界改变时通知
{
m_xibie.ResetContent();//清空系别组合框中的所有项
m_class.ResetContent();//清空班级组合框中的所有项
CString strXuejieID,str;
CRecordset rs(&m_database);
m_xuejie.GetLBText(m_xuejie.GetCurSel(),str);
rs.Open(CRecordset::forwardOnly,
  "select 学界ID from 学界 where 学界名称='"+str+"'");
rs.GetFieldValue("学界ID",strXuejieID);
rs.Close();
rs.Open(CRecordset::forwardOnly,
   "select 系别名称 from 系别 ");
while(!rs.IsEOF())
 {
 rs.GetFieldValue("系别名称",str);
 m_xibie.AddString(str);
 rs.MoveNext();
 }
rs.Close(); 
  
}

void CPage1::OnSelchangecobXiBie() //当系别改变时通知
{
	   m_class.ResetContent();//清空班级组合框中的所有项
	   CString strXiBieID,strXuejieID,strxuejie,str;
	   CRecordset rs(&m_database);
	 //得到学界ID  
    m_xuejie.GetLBText(m_xuejie.GetCurSel(),strxuejie);
    rs.Open(CRecordset::forwardOnly,
        "select 学界ID from 学界 where 学界名称='"+strxuejie+"'");
    rs.GetFieldValue("学界ID",strXuejieID);
    rs.Close();
   //得到系别ID
	   m_xibie.GetLBText(m_xibie.GetCurSel(),str);
	   rs.Open(CRecordset::forwardOnly,
		   "select 系别ID from 系别 where 系别名称='"+str+"'");
       rs.GetFieldValue("系别ID",strXiBieID);
	   rs.Close();
	   //设置班级下拉框的取值
	   rs.Open(CRecordset::forwardOnly,
		   "select 班级名称 from 班级 where 学界ID='"+strXuejieID+"' and 系别ID='"+strXiBieID+"'");
	 while(!rs.IsEOF())
	 {
		 rs.GetFieldValue("班级名称",str);
		 m_class.AddString(str);
		 rs.MoveNext();
	 }
	 rs.Close(); 
}

void CPage1::OnSelchangecobClass() //
{
	
	if(((m_xuejie.GetCurSel()!=-1)&&(m_xibie.GetCurSel()!=-1)
       &&(m_xueqi.GetCurSel()!=-1)&&(m_class.GetCurSel()!=-1))
	   &&((m_xuejie.GetCurSel()!=sign_xuejie)||(m_xibie.GetCurSel()!=sign_xibie)
	   ||(m_xueqi.GetCurSel()!=sign_xueqi)||(m_class.GetCurSel()!=sign_class)))
	{
		m_Ltongji.DeleteAllItems();//更新
        m_Lstudent.DeleteAllItems();
        m_Lteacher.DeleteAllItems();
		DataDisplay();
		//初始变量
	   sign_class=m_class.GetCurSel();
	   sign_xuejie=m_xuejie.GetCurSel();
	   sign_xueqi=m_xueqi.GetCurSel();
	   sign_xibie=m_xibie.GetCurSel();
	}
	else
	{   m_Ltongji.DeleteAllItems();//更新
        m_Lstudent.DeleteAllItems();
        m_Lteacher.DeleteAllItems();
	}
	

}

void CPage1::DataDisplay()//数据显示
{
    CRecordset rs(&m_database);
    CString strClass,strXueQi,strXuejie,strXibie;
	CString strXiBieID,strXuejieID,strXueQiID,strClassID;
	//得到学界ID
       m_xuejie.GetLBText(m_xuejie.GetCurSel(),strXuejie);
	   rs.Open(CRecordset::forwardOnly,
		   "select 学界ID from 学界 where 学界名称='"+strXuejie+"'");
       rs.GetFieldValue("学界ID",strXuejieID);
	   rs.Close();
    //得到系别ID
       m_xibie.GetLBText(m_xibie.GetCurSel(),strXibie);
	   rs.Open(CRecordset::forwardOnly,
		   "select 系别ID from 系别 where 系别名称='"+strXibie+"'");
       rs.GetFieldValue("系别ID",strXiBieID);
	   rs.Close();
	 //得到学期ID
	   m_xueqi.GetLBText(m_xueqi.GetCurSel(),strXueQi);
	   rs.Open(CRecordset::forwardOnly,
		   "select 学期ID from 学期 where 学期='"+strXueQi+"'");
       rs.GetFieldValue("学期ID",strXueQiID);
	   rs.Close();
     //得到班级ID
       m_class.GetLBText(m_class.GetCurSel(),strClass);
	   rs.Open(CRecordset::forwardOnly,
		   "select 班级ID from 班级 where 班级名称='"+strClass+"'");
       rs.GetFieldValue("班级ID",strClassID);
	   rs.Close();
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 //三个列表框的数据显示
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
//班级成绩统计
//***************************
//科目
int i=0,j=0,kemu;//用来记录当前表项的序号
CString strsql;
rs.Open(CRecordset::forwardOnly,
		"select 考试科目 from 考试科目表 where 学界ID='"+strXuejieID+"' and 系别ID='"+strXiBieID+"' and 班级ID='"+strClassID+"' and 学期ID='"+strXueQiID+"'");
if(rs.GetRecordCount()!=0)
 {
	while(!rs.IsEOF())
	{  
		rs.GetFieldValue("考试科目",strsql);
		m_Ltongji.InsertItem(i,"");
		m_Ltongji.SetItemText(i,0,strsql);
		rs.MoveNext();
	    i++;
		kemu=i;
	}
 }
else
{
	MessageBox("无考试科目!!","系统提示:",MB_OK|MB_ICONASTERISK);
}
rs.Close();

//总成绩和平均成绩
float counter=0.000;
float temp=0.000;
float averagecourse=0.000;
long studentcounter;
CString average,strCourse;
for(j=0;j<kemu;j++)
{
 strsql=m_Ltongji.GetItemText(j,0);//j是表项的序号,0是列。
 rs.Open(CRecordset::forwardOnly,"select 成绩 from 成绩表 where 学界ID='"+strXuejieID+"' and 系别ID='"+strXiBieID+"' and 班级ID='"+strClassID+"' and 学期ID='"+strXueQiID+"' and 考试科目名称='"+strsql+"' ORDER BY 学号ID");
 
	      while(!rs.IsEOF())
		  {
	       studentcounter=rs.GetRecordCount();//rs.GetRecordCount()只有放到此语句中才能实现计数;
	       rs.GetFieldValue("成绩",strCourse);
	       sscanf(strCourse,"%f",&counter);
	       rs.MoveNext();
	       temp=temp+counter;
		  }
	      averagecourse=temp/studentcounter;
          average.Format("%.3f",averagecourse);
          strCourse.Format("%.2f",temp);
          m_Ltongji.SetItemText(j,1,strCourse);
          m_Ltongji.SetItemText(j,2,average);
           temp=0;
	       studentcounter=0;
	       rs.Close();
} 
rs.Close();
//及格人数和不及格人数,及优秀人数
long allID,passID,wellID,IDtemp;
CString strpassID,strwellID,strIDtemp;
int n=0;
for(j=0;j<=kemu;j++)
{
	strsql=m_Ltongji.GetItemText(j,0);//j是表项的序号,0是列。
  rs.Open(CRecordset::forwardOnly,
	 "select 成绩 from 成绩表 where 学界ID='"+strXuejieID+"' and 系别ID='"+strXiBieID+"' and 班级ID='"+strClassID+"' and 学期ID='"+strXueQiID+"' and 考试科目名称='"+strsql+"'");
     allID=rs.GetRecordCount();

while(!rs.IsEOF())
	 {
	   rs.GetFieldValue("成绩",strIDtemp);
	   sscanf(strIDtemp,"%f",&counter);
       if(counter>=0)
			  n++;
		rs.MoveNext();
	 }
allID=n;
n=0;
rs.Close();
rs.Open(CRecordset::forwardOnly,
	  "select 成绩 from 成绩表 where 学界ID='"+strXuejieID+"' and 系别ID='"+strXiBieID+"' and 班级ID='"+strClassID+"' and 学期ID='"+strXueQiID+"' and 考试科目名称='"+strsql+"'");
   while(!rs.IsEOF())
   {
 rs.GetFieldValue("成绩",strpassID);
      sscanf(strpassID,"%f",&counter);

⌨️ 快捷键说明

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