📄 dlggrade.cpp
字号:
// DlgGrade.cpp : implementation file
//增加 修改成绩模块 //做好这个树,可以用作公用树
#include "stdafx.h"
#include "STUGRADE.h"
#include "DlgGrade.h"
#include "MainFrm.h"
#include "string.h"
extern CListCtrl *pListCtrl;
//#include "STUGRADEView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgGrade dialog
extern CMainFrame *pFrame;
CDlgGrade::CDlgGrade(CWnd* pParent /*=NULL*/)
: CDialog(CDlgGrade::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgGrade)
//pParentWnd = (CFormView*)pParent;
//}}AFX_DATA_INIT
}
void CDlgGrade::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgGrade)
DDX_Control(pDX, IDC_TREE_class, m_Tree);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgGrade, CDialog)
//{{AFX_MSG_MAP(CDlgGrade)
ON_BN_CLICKED(IDC_NewRecordG, OnNewRecordG)
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE_class, OnSelchangedTREEclass)
ON_CBN_EDITCHANGE(IDC_CBO_Sno, OnEditchangeCBOSno)
ON_CBN_SELENDOK(IDC_CBO_Sno, OnSelendokCBOSno)
ON_CBN_EDITCHANGE(IDC_CBO_Sname, OnEditchangeCBOSname)
ON_CBN_KILLFOCUS(IDC_CBO_Sno, OnKillfocusCBOSno)
ON_CBN_SELENDOK(IDC_CBO_Sname, OnSelendokCBOSname)
ON_CBN_KILLFOCUS(IDC_CBO_Sname, OnKillfocusCBOSname)
ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)
ON_EN_CHANGE(IDC_EDIT3, OnChangeEdit3)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgGrade message handlers
BOOL CDlgGrade::OnInitDialog()
{
CDialog::OnInitDialog();
BeginWaitCursor();
// TODO: Add extra initialization here
//初始化树形-系(学院)-专业-班
_RecordsetPtr pT_set1,pT_set2,pT_set3;
// TV_INSERTSTRUCT TreeCtrl; //定义存放树的结构 这里想用作存第几层
CTreeCtrl *ptree = (CTreeCtrl*)GetDlgItem(IDC_TREE_class);
ptree->SetImageList(&pFrame->m_ImageList,LVSIL_NORMAL);
HTREEITEM hroot1 = ptree->InsertItem("广工全部学院",0,1); //设0为层数ID
//HTREEITEM hroot1 = ptree->InsertItem(TVIF_TEXT,_T("广工全部学院"), 1, 2, 3, 4, 5, NULL, NULL);
HTREEITEM hroot2,hroot3;
CString Nostr,str;
CString szSQL = "SELECT * FROM 系别信息";
_variant_t vDno,vDname,vSno,vSname,vCno,vCname;
pT_set1.CreateInstance(__uuidof( Recordset ));
pT_set2.CreateInstance(__uuidof( Recordset ));
pT_set3.CreateInstance(__uuidof( Recordset ));
pT_set1->Open((LPCSTR)szSQL,RS_PARAM);
while(!pT_set1->adoEOF)
{
vDno=pT_set1->GetCollect("系别代码"); //第一列的值,也可写成vSno=p_set->GetCollect("学号");
vDname=pT_set1->GetCollect("系名");
Nostr=(BSTR)vDno.pbstrVal;
str=(BSTR)vDname.pbstrVal; //AfxMessageBox(aa);
hroot2=ptree->InsertItem(str,0,1,hroot1); //插入学院
///----------->> 专业
szSQL="SELECT * FROM 专业信息,系别信息 where 专业信息.所属系别 = 系别信息.系别代码 AND 系别代码 = '" + Nostr + "'";
pT_set2->Open((LPCSTR)szSQL,RS_PARAM);
while(!pT_set2->adoEOF)
{
vSno=pT_set2->GetCollect("专业代码");
vSname=pT_set2->GetCollect("专业名称");
Nostr=(BSTR)vSno.pbstrVal;
str=(BSTR)vSname.pbstrVal; //AfxMessageBox(aa);
hroot3=ptree->InsertItem(str,0,1,hroot2); //插入专业
//---->>>> 班
szSQL="SELECT * FROM 班级信息,专业信息 where 班级信息.所属专业 = 专业信息.专业代码 AND 专业代码 = '" + Nostr + "'";
pT_set3->Open((LPCSTR)szSQL,RS_PARAM);
while(!pT_set3->adoEOF)
{
vCno=pT_set3->GetCollect("班级代码");
vCname=pT_set3->GetCollect("班级名称");
Nostr=(BSTR)vCno.pbstrVal;
str=(BSTR)vCname.pbstrVal; //AfxMessageBox(aa);
ptree->InsertItem(str,0,1,hroot3); //插入班级
pT_set3->MoveNext();
}
pT_set3->Close();
//----<<<<
pT_set2->MoveNext();
}
pT_set2->Close();
///------------<<
pT_set1->MoveNext();
}
pT_set1->Close();
SetDlgItemText(IDC_EDIT2,"成绩:");
if (m_nFlag==1) //增加
{
//初始化学生信息
pCombo_Sno = (CComboBox*) GetDlgItem(IDC_CBO_Sno);
pCombo_Sname = (CComboBox*) GetDlgItem(IDC_CBO_Sname);
pCombo_Sno->ResetContent();
pCombo_Sname->ResetContent();
szSQL = "SELECT * FROM 学生基本信息 ORDER BY 学号";
pT_set1->Open((LPCSTR)szSQL,RS_PARAM);
while(!pT_set1->adoEOF)
{
vDno=pT_set1->GetCollect("学号");
vDname=pT_set1->GetCollect("姓名");
CString Sno = (BSTR)vDno.pbstrVal;
//CString szID = (char*) ((_bstr_t) pT_set1->GetFields()->GetItem("学号")->GetValue());
//CString szID = (char*) ((_bstr_t) pT_set1->Fields->Item["学号"]->Value);
CString Sname = (BSTR)vDname.pbstrVal;
pCombo_Sno->AddString(Sno);
pCombo_Sname->AddString(Sname);
pT_set1->MoveNext();
}
pCombo_Sno->SetCurSel(0);
pCombo_Sname->SetCurSel(0);
pT_set1->Close();
//初始化课程
pCombo_Cname = (CComboBox*) GetDlgItem(IDC_CBO_Cname);
pCombo_Cname->ResetContent();
szSQL = "SELECT * FROM 课程信息 ORDER BY 课程代码";
pT_set1->Open((LPCSTR)szSQL,RS_PARAM);
while(!pT_set1->adoEOF)
{
vDno=pT_set1->GetCollect("课程代码");
vDname=pT_set1->GetCollect("课程名称");
CString Cname = (BSTR)vDname.pbstrVal;
pCombo_Cname->AddString(Cname);
pT_set1->MoveNext();
}
pCombo_Cname->SetCurSel(19);
pT_set1->Close();
//初始化考试类型
pCombo_kao = (CComboBox*) GetDlgItem(IDC_CBO_examType);
pCombo_kao->ResetContent();
szSQL = "SELECT * FROM 考试类型代码 WHERE (考试代码 <> '05') ORDER BY 考试代码";
pT_set1->Open((LPCSTR)szSQL,RS_PARAM);
while(!pT_set1->adoEOF)
{
vDno=pT_set1->GetCollect("考试代码");
vDname=pT_set1->GetCollect("考试名称");
CString Kname = (BSTR)vDname.pbstrVal;
pCombo_kao->AddString(Kname);
pT_set1->MoveNext();
}
pCombo_kao->SetCurSel(0);
pT_set1->Close();
}
else if (m_nFlag==0) //修改
{
Modifyother = 0;
pCombo_Sno = (CComboBox*) GetDlgItem(IDC_CBO_Sno);
pCombo_Sname = (CComboBox*) GetDlgItem(IDC_CBO_Sname);
pCombo_Cname = (CComboBox*) GetDlgItem(IDC_CBO_Cname);
pCombo_kao = (CComboBox*) GetDlgItem(IDC_CBO_examType);
pCombo_Sno->ResetContent();
pCombo_Sname->ResetContent();
pCombo_Cname->ResetContent();
pCombo_kao->ResetContent();
pCombo_Sno->AddString(m_Sno);
pCombo_Sname->AddString(m_Sname);
pCombo_Cname->AddString(m_Cname);
pCombo_kao->AddString(m_Ename);
pCombo_Sno->SetCurSel(0);
pCombo_Sname->SetCurSel(0);
pCombo_Cname->SetCurSel(0);
pCombo_kao->SetCurSel(0);
pCombo_Sno->EnableWindow(FALSE);
pCombo_Sname->EnableWindow(FALSE);
pCombo_Cname->EnableWindow(FALSE);
pCombo_kao->EnableWindow(FALSE);
SetDlgItemText(IDC_EDIT1,m_Score);
SetDlgItemText(IDC_NewRecordG,"修改");
// SetDlgItemText(IDCANCEL,"取消");
SetWindowText("修改成绩");
}
else if ((m_nFlag==2) || (m_nFlag==3) || (m_nFlag==4)) //补考
{
*b_Np=0;
pCombo_Sno = (CComboBox*) GetDlgItem(IDC_CBO_Sno);
pCombo_Sname = (CComboBox*) GetDlgItem(IDC_CBO_Sname);
pCombo_Cname = (CComboBox*) GetDlgItem(IDC_CBO_Cname);
pCombo_kao = (CComboBox*) GetDlgItem(IDC_CBO_examType);
pCombo_Sno->ResetContent();
pCombo_Sname->ResetContent();
pCombo_Cname->ResetContent();
pCombo_kao->ResetContent();
pCombo_Sno->AddString("所有...");
pCombo_Sname->AddString("所有...");
pCombo_Cname->AddString("所有...");
if (m_nFlag==2 || (m_nFlag==4))
pCombo_kao->AddString("总评成绩");
else
{
pCombo_kao->AddString("补考成绩");
pCombo_kao->EnableWindow(FALSE);
}
pCombo_Sno->SetCurSel(0);
pCombo_Sname->SetCurSel(0);
pCombo_Cname->SetCurSel(0);
pCombo_kao->SetCurSel(0);
SetDlgItemText(IDC_EDIT1,"60");
SetDlgItemText(IDC_EDIT2,"合格分数线:");
if (m_nFlag==2)
{
SetDlgItemText(IDC_NewRecordG,"显示补考");
SetDlgItemText(IDCANCEL,"取消");
SetWindowText("选择补考处理的范围");
CEdit *pE1=(CEdit*)GetDlgItem(IDC_EDIT1);
CEdit *pE2=(CEdit*)GetDlgItem(IDC_EDIT2);
CEdit *pE3=(CEdit*)GetDlgItem(IDC_EDIT3);
pE2->SetWindowText("<=补考成绩范围<");
pE3->ShowWindow(TRUE);
pE3->SetWindowText("40");
//eidt2位置移动一下,大小改变一点
RECT Rect;
((CEdit *)GetDlgItem(IDC_EDIT1))->GetWindowRect(&Rect); //取得的Rect为相对屏幕
ScreenToClient(&Rect); //把相对屏幕的坐标转为相对窗口坐标
::SetWindowPos(*GetDlgItem(IDC_EDIT1),NULL,Rect.left+30,Rect.top,53,Rect.bottom-Rect.top,SWP_NOZORDER);
::SetWindowPos(*GetDlgItem(IDC_EDIT3),NULL,0,0,53,Rect.bottom-Rect.top,SWP_NOMOVE);
((CEdit *)GetDlgItem(IDC_EDIT2))->GetWindowRect(&Rect); //取得的Rect为相对屏幕
ScreenToClient(&Rect);
::SetWindowPos(*GetDlgItem(IDC_EDIT2),NULL,Rect.left+25,Rect.top,100,Rect.bottom-Rect.top,SWP_NOZORDER);
}
else if (m_nFlag==3)
{
SetDlgItemText(IDC_NewRecordG,"显示重修");
SetDlgItemText(IDCANCEL,"取消");
SetWindowText("选择重修处理的范围");
CEdit *pE1=(CEdit*)GetDlgItem(IDC_EDIT1);
CEdit *pE2=(CEdit*)GetDlgItem(IDC_EDIT2);
CEdit *pE3=(CEdit*)GetDlgItem(IDC_EDIT3);
CEdit *pE4=(CEdit*)GetDlgItem(IDC_EDIT4);
pE2->SetWindowText("补考合格分数线:");
pE3->ShowWindow(TRUE);
pE4->ShowWindow(TRUE);
pE3->SetWindowText("40");
pE4->SetWindowText("允许补考分数线:");
//eidt2位置移动一下,大小改变一点
RECT Rect;
((CEdit *)GetDlgItem(IDC_EDIT1))->GetWindowRect(&Rect); //取得的Rect为相对屏幕
ScreenToClient(&Rect); //把相对屏幕的坐标转为相对窗口坐标
::SetWindowPos(*GetDlgItem(IDC_EDIT3),NULL,Rect.left+30,Rect.top+15,53,Rect.bottom-Rect.top,SWP_NOZORDER); //向下移
::SetWindowPos(*GetDlgItem(IDC_EDIT1),NULL,Rect.left+30,Rect.top-10,53,Rect.bottom-Rect.top,SWP_NOZORDER);
((CEdit *)GetDlgItem(IDC_EDIT2))->GetWindowRect(&Rect); //取得的Rect为相对屏幕
ScreenToClient(&Rect);
::SetWindowPos(*GetDlgItem(IDC_EDIT4),NULL,Rect.left,Rect.top+15,100,Rect.bottom-Rect.top,SWP_NOZORDER);
::SetWindowPos(*GetDlgItem(IDC_EDIT2),NULL,Rect.left,Rect.top-10,100,Rect.bottom-Rect.top,SWP_NOZORDER);
}
else if (m_nFlag==4)
{
SetDlgItemText(IDC_EDIT1,"80");
SetDlgItemText(IDC_NewRecordG,"显示优秀");
SetDlgItemText(IDCANCEL,"取消");
SetWindowText("选择优秀处理的范围");
SetDlgItemText(IDC_EDIT2,"优秀分数线:");
}
//初始化课程
szSQL = "SELECT * FROM 课程信息 ORDER BY 课程代码";
pT_set1->Open((LPCSTR)szSQL,RS_PARAM);
while(!pT_set1->adoEOF)
{
vDname=pT_set1->GetCollect("课程名称");
CString Cname = (BSTR)vDname.pbstrVal;
pCombo_Cname->AddString(Cname);
pT_set1->MoveNext();
}
pT_set1->Close();
if ((m_nFlag==2)||(m_nFlag==4))
{
//初始化考试类型
szSQL = "SELECT * FROM 考试类型代码 WHERE (考试代码 <> '05') ORDER BY 考试代码";
pT_set1->Open((LPCSTR)szSQL,RS_PARAM);
while(!pT_set1->adoEOF)
{
vDname=pT_set1->GetCollect("考试名称");
CString Kname = (BSTR)vDname.pbstrVal;
pCombo_kao->AddString(Kname);
pT_set1->MoveNext();
}
pT_set1->Close();
}
}
EndWaitCursor();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
int CDlgGrade::DoModal()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -