📄 page1.cpp
字号:
// 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 + -