?? page1.cpp
字號(hào):
// 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();
//設(shè)置學(xué)界的下拉框所取的值。
if(!m_database.Open(_T("student"))) return false;
CRecordset rs(&m_database);
CString str;
rs.Open(CRecordset::forwardOnly,"select 學(xué)界名稱 from 學(xué)界");
while(!rs.IsEOF())
{
rs.GetFieldValue("學(xué)界名稱",str);
m_xuejie.AddString(str);
rs.MoveNext();
}
rs.Close();
//設(shè)置系別下拉框所取的值
rs.Open(CRecordset::forwardOnly,"select 系別名稱 from 系別");
while(!rs.IsEOF())
{
rs.GetFieldValue("系別名稱",str);
m_xibie.AddString(str);
rs.MoveNext();
}
rs.Close();
//設(shè)置班級(jí)下拉框所取的值
rs.Open(CRecordset::forwardOnly,"select 班級(jí)名稱 from 班級(jí)");
while(!rs.IsEOF())
{
rs.GetFieldValue("班級(jí)名稱",str);
m_class.AddString(str);
rs.MoveNext();
}
rs.Close();
//設(shè)置學(xué)期下拉框所取的值
rs.Open(CRecordset::forwardOnly,"select 學(xué)期 from 學(xué)期");
while(!rs.IsEOF())
{
rs.GetFieldValue("學(xué)期",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添加網(wǎng)格
m_Lteacher.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES);
m_Lstudent.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES);
//統(tǒng)計(jì)列表框的設(shè)置
m_Ltongji.InsertColumn(0,"科目",LVCFMT_LEFT,110);
m_Ltongji.InsertColumn(1,"總成績(jī)",LVCFMT_LEFT,75);
m_Ltongji.InsertColumn(2,"平均成績(jī)",LVCFMT_LEFT,60);
m_Ltongji.InsertColumn(3,"優(yōu)秀人數(shù)",LVCFMT_LEFT,60);
m_Ltongji.InsertColumn(4,"及格人數(shù)",LVCFMT_LEFT,60);
m_Ltongji.InsertColumn(5,"未及格人數(shù)",LVCFMT_LEFT,75);
//授課教師的設(shè)置
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);
//學(xué)生成績(jī)列表的設(shè)置
m_Lstudent.InsertColumn(0,"學(xué)屆",LVCFMT_LEFT,36);
m_Lstudent.InsertColumn(1,"系別",LVCFMT_LEFT,75);
m_Lstudent.InsertColumn(2,"班級(jí)",LVCFMT_LEFT,75);
m_Lstudent.InsertColumn(3,"學(xué)號(hào)",LVCFMT_LEFT,70);
m_Lstudent.InsertColumn(4,"姓名",LVCFMT_LEFT,48);
m_Lstudent.InsertColumn(5,"性別",LVCFMT_LEFT,36);
//設(shè)置顏色
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));
//設(shè)置初始值
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()
{
//顯示數(shù)據(jù):關(guān)于三個(gè)列表框的顯示內(nèi)容
//初始化列表:
// TODO: Add extra initialization here
m_Ltongji.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES); //給LIST添加網(wǎng)格
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() //當(dāng)學(xué)界改變時(shí)通知
{
m_xibie.ResetContent();//清空系別組合框中的所有項(xiàng)
m_class.ResetContent();//清空班級(jí)組合框中的所有項(xiàng)
CString strXuejieID,str;
CRecordset rs(&m_database);
m_xuejie.GetLBText(m_xuejie.GetCurSel(),str);
rs.Open(CRecordset::forwardOnly,
"select 學(xué)界ID from 學(xué)界 where 學(xué)界名稱='"+str+"'");
rs.GetFieldValue("學(xué)界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() //當(dāng)系別改變時(shí)通知
{
m_class.ResetContent();//清空班級(jí)組合框中的所有項(xiàng)
CString strXiBieID,strXuejieID,strxuejie,str;
CRecordset rs(&m_database);
//得到學(xué)界ID
m_xuejie.GetLBText(m_xuejie.GetCurSel(),strxuejie);
rs.Open(CRecordset::forwardOnly,
"select 學(xué)界ID from 學(xué)界 where 學(xué)界名稱='"+strxuejie+"'");
rs.GetFieldValue("學(xué)界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();
//設(shè)置班級(jí)下拉框的取值
rs.Open(CRecordset::forwardOnly,
"select 班級(jí)名稱 from 班級(jí) where 學(xué)界ID='"+strXuejieID+"' and 系別ID='"+strXiBieID+"'");
while(!rs.IsEOF())
{
rs.GetFieldValue("班級(jí)名稱",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()//數(shù)據(jù)顯示
{
CRecordset rs(&m_database);
CString strClass,strXueQi,strXuejie,strXibie;
CString strXiBieID,strXuejieID,strXueQiID,strClassID;
//得到學(xué)界ID
m_xuejie.GetLBText(m_xuejie.GetCurSel(),strXuejie);
rs.Open(CRecordset::forwardOnly,
"select 學(xué)界ID from 學(xué)界 where 學(xué)界名稱='"+strXuejie+"'");
rs.GetFieldValue("學(xué)界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();
//得到學(xué)期ID
m_xueqi.GetLBText(m_xueqi.GetCurSel(),strXueQi);
rs.Open(CRecordset::forwardOnly,
"select 學(xué)期ID from 學(xué)期 where 學(xué)期='"+strXueQi+"'");
rs.GetFieldValue("學(xué)期ID",strXueQiID);
rs.Close();
//得到班級(jí)ID
m_class.GetLBText(m_class.GetCurSel(),strClass);
rs.Open(CRecordset::forwardOnly,
"select 班級(jí)ID from 班級(jí) where 班級(jí)名稱='"+strClass+"'");
rs.GetFieldValue("班級(jí)ID",strClassID);
rs.Close();
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//三個(gè)列表框的數(shù)據(jù)顯示
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
//班級(jí)成績(jī)統(tǒng)計(jì)
//***************************
//科目
int i=0,j=0,kemu;//用來(lái)記錄當(dāng)前表項(xiàng)的序號(hào)
CString strsql;
rs.Open(CRecordset::forwardOnly,
"select 考試科目 from 考試科目表 where 學(xué)界ID='"+strXuejieID+"' and 系別ID='"+strXiBieID+"' and 班級(jí)ID='"+strClassID+"' and 學(xué)期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("無(wú)考試科目!!","系統(tǒng)提示:",MB_OK|MB_ICONASTERISK);
}
rs.Close();
//總成績(jī)和平均成績(jī)
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是表項(xiàng)的序號(hào),0是列。
rs.Open(CRecordset::forwardOnly,"select 成績(jī) from 成績(jī)表 where 學(xué)界ID='"+strXuejieID+"' and 系別ID='"+strXiBieID+"' and 班級(jí)ID='"+strClassID+"' and 學(xué)期ID='"+strXueQiID+"' and 考試科目名稱='"+strsql+"' ORDER BY 學(xué)號(hào)ID");
while(!rs.IsEOF())
{
studentcounter=rs.GetRecordCount();//rs.GetRecordCount()只有放到此語(yǔ)句中才能實(shí)現(xiàn)計(jì)數(shù);
rs.GetFieldValue("成績(jī)",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();
//及格人數(shù)和不及格人數(shù),及優(yōu)秀人數(shù)
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是表項(xiàng)的序號(hào),0是列。
rs.Open(CRecordset::forwardOnly,
"select 成績(jī) from 成績(jī)表 where 學(xué)界ID='"+strXuejieID+"' and 系別ID='"+strXiBieID+"' and 班級(jí)ID='"+strClassID+"' and 學(xué)期ID='"+strXueQiID+"' and 考試科目名稱='"+strsql+"'");
allID=rs.GetRecordCount();
while(!rs.IsEOF())
{
rs.GetFieldValue("成績(jī)",strIDtemp);
sscanf(strIDtemp,"%f",&counter);
if(counter>=0)
n++;
rs.MoveNext();
}
allID=n;
n=0;
rs.Close();
rs.Open(CRecordset::forwardOnly,
"select 成績(jī) from 成績(jī)表 where 學(xué)界ID='"+strXuejieID+"' and 系別ID='"+strXiBieID+"' and 班級(jí)ID='"+strClassID+"' and 學(xué)期ID='"+strXueQiID+"' and 考試科目名稱='"+strsql+"'");
while(!rs.IsEOF())
{
rs.GetFieldValue("成績(jī)",strpassID);
sscanf(strpassID,"%f",&counter);
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -