dlgmarkquerynew.cpp

来自「大学班务管理系统」· C++ 代码 · 共 374 行

CPP
374
字号
// Dlgmarkquerynew.cpp : implementation file
//

#include "stdafx.h"
#include "教学管理信息系统.h"
#include "Dlgmarkquerynew.h"
#include "gradeset.h"
#include <string.h>

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

/////////////////////////////////////////////////////////////////////////////
// CDlgmarkquerynew dialog


CDlgmarkquerynew::CDlgmarkquerynew(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgmarkquerynew::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgmarkquerynew)
	m_markquerysel = _T("");
	m_markquery = _T("");
	m_lessontime = _T("");
	m_queryxuefen = 0.0f;
	m_jidian = 0.0f;
	//}}AFX_DATA_INIT
}


void CDlgmarkquerynew::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgmarkquerynew)
	DDX_Control(pDX, IDC_LISTmarkquery, m_listmarkquery);
	DDX_CBString(pDX, IDC_COMBOmarkquery, m_markquerysel);
	DDX_Text(pDX, IDC_EDITmarkquery, m_markquery);
	DDX_Text(pDX, IDC_EDITlessontime, m_lessontime);
	DDX_Text(pDX, IDC_EDITqueryxuefen, m_queryxuefen);
	DDX_Text(pDX, IDC_EDITjidian, m_jidian);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgmarkquerynew, CDialog)
	//{{AFX_MSG_MAP(CDlgmarkquerynew)
	ON_BN_CLICKED(IDC_BUTTONmarkquerynew, OnBUTTONmarkquery)
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	ON_BN_CLICKED(IDC_BUTTONaver, OnBUTTONaver)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgmarkquerynew message handlers


BOOL CDlgmarkquerynew::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here

        ((CComboBox*)GetDlgItem(IDC_COMBOmarkquery))->AddString("学号");
		((CComboBox*)GetDlgItem(IDC_COMBOmarkquery))->AddString("姓名");
		((CComboBox*)GetDlgItem(IDC_COMBOmarkquery))->AddString("课程号");
		((CComboBox*)GetDlgItem(IDC_COMBOmarkquery))->AddString("课程名");
		((CComboBox*)GetDlgItem(IDC_COMBOmarkquery))->AddString("学分");
	    ((CComboBox*)GetDlgItem(IDC_COMBOmarkquery))->AddString("开课时间");
		 ((CComboBox*)GetDlgItem(IDC_COMBOmarkquery))->AddString("学号+开课时间");

int i;
	DWORD dwNewStyle= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP |
		LVS_EX_ONECLICKACTIVATE | LVS_EX_UNDERLINEHOT;
		m_listmarkquery.SetExtendedStyle(dwNewStyle);
	m_listmarkquery.InsertColumn(0,"学号",LVCFMT_CENTER);
	m_listmarkquery.InsertColumn(1,"姓名",LVCFMT_CENTER);
	m_listmarkquery.InsertColumn(2,"课程号",LVCFMT_CENTER);
	m_listmarkquery.InsertColumn(3,"课程名",LVCFMT_CENTER);
	m_listmarkquery.InsertColumn(4,"学分",LVCFMT_CENTER);
	m_listmarkquery.InsertColumn(5,"成绩",LVCFMT_CENTER);
	m_listmarkquery.InsertColumn(6,"开课时间",LVCFMT_CENTER);
	for(i=0;i<7;i++)
	m_listmarkquery.SetColumnWidth(i,80);
  initctrldata();
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void CDlgmarkquerynew::insertmarkinfo(CString stunum,CString stuname,CString 
								lessonnum,CString lessoname,CString xuefen,CString 
								grade,CString time)
{
	int index=m_listmarkquery.GetItemCount();
	LV_ITEM lvitem;
	lvitem.mask=LVIF_TEXT;
	lvitem.iItem=index;
	lvitem.iSubItem=0;
	CString temp;
	temp.Format("%s");
	lvitem.pszText=(char*)(LPCTSTR)temp;
	m_listmarkquery.InsertItem(&lvitem);

	m_listmarkquery.SetItemText(index,0,stunum);
	m_listmarkquery.SetItemText(index,1,stuname);
	m_listmarkquery.SetItemText(index,2,lessonnum);
	m_listmarkquery.SetItemText(index,3,lessoname);
	m_listmarkquery.SetItemText(index,6,xuefen);
	m_listmarkquery.SetItemText(index,5,grade);
	m_listmarkquery.SetItemText(index,4,time);
	
}




void CDlgmarkquerynew::initctrldata()
{
	 CDatabase m_database;
	   
	if(!m_database.Open(NULL,FALSE,FALSE,"ODBC;DSN=教务课程信息管理数据库"))
	{
		AfxMessageBox("连接数据库失败");
	}

	try{

		m_gradeset.Open(CRecordset::dynaset,NULL,CRecordset::none);
		while(!m_gradeset.IsEOF())
		{
		CString stunum,stuname,lessonnum,lessoname,xuefen,grade,time;
		
		m_gradeset.GetFieldValue((short)0,stunum);
        m_gradeset.GetFieldValue(1,stuname);
		m_gradeset.GetFieldValue(2,lessonnum);
		m_gradeset.GetFieldValue(3,lessoname);
		m_gradeset.GetFieldValue(4,xuefen);
		m_gradeset.GetFieldValue(5,grade);
		m_gradeset.GetFieldValue(6,time);
		
        insertmarkinfo(stunum,stuname,lessonnum,lessoname,xuefen,grade,time);
		m_gradeset.MoveNext();
	}
	m_gradeset.Close();
	}
	catch(CDBException*e)
	{
		e->ReportError();
	return;
	}

}



void CDlgmarkquerynew::OnBUTTONmarkquery() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE); 

	 CDatabase m_database;
	   
	if(!m_database.Open(NULL,FALSE,FALSE,"ODBC;DSN=教务课程信息管理数据库"))
	{
		AfxMessageBox("连接数据库失败");
	}
if(m_markquerysel=="学号")
{
m_gradeset.m_strFilter.Format("stunum='%s'",m_markquery);
m_gradeset.Open(CRecordset::dynaset,NULL,CRecordset::none);
if(m_gradeset.IsEOF())
{ 
 AfxMessageBox("没有符合条件的记录");
m_gradeset.Close();
}
else 
{

m_listmarkquery.DeleteAllItems();
m_gradeset.Close();
initctrldata();
}
}
if(m_markquerysel=="学号+开课时间")
{
m_gradeset.m_strFilter.Format("stunum='%s'and time='%s'",m_markquery,m_lessontime);
m_gradeset.Open(CRecordset::dynaset,NULL,CRecordset::none);
if(m_gradeset.IsEOF())
{ 
 AfxMessageBox("没有符合条件的记录");
m_gradeset.Close();
}
else 
{
m_listmarkquery.DeleteAllItems();
m_gradeset.Close();
initctrldata();
}
}
if(m_markquerysel=="姓名")
{
m_gradeset.m_strFilter.Format("stuname='%s'",m_markquery);
m_gradeset.Open(CRecordset::dynaset,NULL,CRecordset::none);
if(m_gradeset.IsEOF())
{ 
 AfxMessageBox("没有符合条件的记录");
m_gradeset.Close();
}
else 
{
m_listmarkquery.DeleteAllItems();
m_gradeset.Close();
initctrldata();
}
}
if(m_markquerysel=="课程号")
{
m_gradeset.m_strFilter.Format("lessonnum='%s'",m_markquery);
m_gradeset.Open(CRecordset::dynaset,NULL,CRecordset::none);
if(m_gradeset.IsEOF())
{ 
 AfxMessageBox("没有符合条件的记录");
m_gradeset.Close();
}
else 
{
m_listmarkquery.DeleteAllItems();
m_gradeset.Close();
initctrldata();
}
}
if(m_markquerysel=="课程名")
{
m_gradeset.m_strFilter.Format("lessoname='%s'",m_markquery);
m_gradeset.Open(CRecordset::dynaset,NULL,CRecordset::none);
if(m_gradeset.IsEOF())
{ 
 AfxMessageBox("没有符合条件的记录");
m_gradeset.Close();
}
else 
{

m_listmarkquery.DeleteAllItems();
m_gradeset.Close();
initctrldata();
}
}
if(m_markquerysel=="学分")
{
m_gradeset.m_strFilter.Format("xuefen=%.1f",m_queryxuefen);
m_gradeset.Open(CRecordset::dynaset,NULL,CRecordset::none);
if(m_gradeset.IsEOF())
{ 
 AfxMessageBox("没有符合条件的记录");
m_gradeset.Close();
}
else 
{

m_listmarkquery.DeleteAllItems();
m_gradeset.Close();
initctrldata();
}
}
if(m_markquerysel=="开课时间")
{
m_gradeset.m_strFilter.Format("time='%s'",m_markquery);
m_gradeset.Open(CRecordset::dynaset,NULL,CRecordset::none);
if(m_gradeset.IsEOF())
{ 
 AfxMessageBox("没有符合条件的记录");
m_gradeset.Close();
}
else 
{

m_listmarkquery.DeleteAllItems();
m_gradeset.Close();
initctrldata();
}
}
}

void CDlgmarkquerynew::OnButton2() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnCancel();
}
void CDlgmarkquerynew::OnBUTTONaver() 
{
	// TODO: Add your control notification handler code here
  UpdateData(TRUE);
  if(m_markquerysel!="学号+开课时间")
	  AfxMessageBox("请先进行学号+课程号的查询");
  else
  this->aver();
}
void CDlgmarkquerynew::aver()
{		 CDatabase m_database;
	   
	if(!m_database.Open(NULL,FALSE,FALSE,"ODBC;DSN=教务课程信息管理数据库"))
	{
		AfxMessageBox("连接数据库失败");
	}
	m_gradeset.Open(CRecordset::dynaset,NULL,CRecordset::none);
 
	lessonpoint=0;//课程绩点初始化为0
	sumxuefen=0;//总的学分数
//	int count=0;


   do{
	//if(m_gradeset.m_stunum==m_markquery&&m_gradeset.m_time==m_lessontime)
	   UpdateData(TRUE);
	   //if((m_gradeset.m_stunum.Compare(m_markquery)==0)&&(m_gradeset.m_time.Compare(m_lessontime)==0))
	   if(strcmp(m_gradeset.m_stunum,m_markquery)==0&&strcmp(m_gradeset.m_time,m_lessontime)==0)
	{
       //count+=1;
       a=m_gradeset.m_grade;
	   int b=((int)a)%10;
	   if(a<60)
	   {
		   lessonpoint+=0;
            sumxuefen+=m_gradeset.m_xuefen;
		    m_gradeset.MoveNext();
	   }
		if(a>=60&&a<70)
		{
    jidian=(10+b)/10.0;
	lessonpoint+=jidian*m_gradeset.m_xuefen;
	sumxuefen+=m_gradeset.m_xuefen;
	  m_gradeset.MoveNext();
		}
        if(a>=70&&a<80)
		{
    jidian=(20+b)/10.0;

	lessonpoint+=jidian*m_gradeset.m_xuefen;
	sumxuefen+=m_gradeset.m_xuefen;
	  m_gradeset.MoveNext();
		}
      if(a>=80&&a<90)
	  {
    jidian=(30+b)/10.0;
    lessonpoint+=jidian*m_gradeset.m_xuefen;
	sumxuefen+=m_gradeset.m_xuefen;
	  m_gradeset.MoveNext();
	  }
      if(a>=90&&a<100)
	  {
      jidian=(40+b)/10.0;
      lessonpoint+=jidian*m_gradeset.m_xuefen;
	  sumxuefen+=m_gradeset.m_xuefen;
	  m_gradeset.MoveNext();
	  }
	
	}
	else
	{m_gradeset.MoveNext();}
}while(!m_gradeset.IsEOF());
average=lessonpoint/sumxuefen;

m_jidian=average;
//m_jidian=count;
//m_jidian=lessonpoint;
//CString s;
//s.Format("%.5f",average);
m_gradeset.Close();
UpdateData(FALSE);
//MessageBox(s);*/
}

⌨️ 快捷键说明

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