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

📄 dlggrade.cpp

📁 成绩管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// 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 + -