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

📄 inpluscoredlg.cpp

📁 ACCESS数据库+MFC编写的学生数据库管理系统
💻 CPP
字号:
// InpluscoreDlg.cpp : implementation file
//

#include "stdafx.h"
#include "学籍管理系统.h"
#include "InpluscoreDlg.h"
#include "MainView.h"
#include "StuinfoSet1.h"

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

/////////////////////////////////////////////////////////////////////////////
// CInpluscoreDlg dialog


CInpluscoreDlg::CInpluscoreDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CInpluscoreDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CInpluscoreDlg)
	m_boxcollage = _T("");
	m_boxsub = _T("");
	m_boxteam = _T("");
	m_stunum = _T("");
	m_score = _T("");
	m_name = _T("");
	//}}AFX_DATA_INIT
}


void CInpluscoreDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CInpluscoreDlg)
	DDX_Control(pDX, IDC_COMBOBOXEXCOLLAGE, m_comboxcollage);
	DDX_Control(pDX, IDC_COMBOBOXEXTEAM, m_comboxteam);
	DDX_Control(pDX, IDC_COMBOBOXEXSUB, m_comboxsub);
	DDX_Control(pDX, IDC_LIST_PLUIN, m_inplulist);
	DDX_CBString(pDX, IDC_COMBOBOXEXCOLLAGE, m_boxcollage);
	DDX_CBString(pDX, IDC_COMBOBOXEXSUB, m_boxsub);
	DDX_CBString(pDX, IDC_COMBOBOXEXTEAM, m_boxteam);
	DDX_Text(pDX, IDC_EDIT_NUM, m_stunum);
	DDX_Text(pDX, IDC_EDIT_SCORE, m_score);
	DDX_Text(pDX, IDC_EDIT_NAME, m_name);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CInpluscoreDlg, CDialog)
	//{{AFX_MSG_MAP(CInpluscoreDlg)
	ON_NOTIFY(NM_CLICK, IDC_LIST_PLUIN, OnClickListPluin)
	ON_CBN_SELCHANGE(IDC_COMBOBOXEXCOLLAGE, OnSelchangeComboboxexcollage)
	ON_CBN_SELCHANGE(IDC_COMBOBOXEXTEAM, OnSelchangeComboboxexteam)
	ON_CBN_SELCHANGE(IDC_COMBOBOXEXSUB, OnSelchangeComboboxexsub)
	ON_BN_CLICKED(IDC_BUTTON_INPUT, OnButtonInput)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CInpluscoreDlg message handlers

BOOL CInpluscoreDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	//初始化列表框
	m_inplulist.SetExtendedStyle   (LVS_EX_FULLROWSELECT   |LVS_EX_GRIDLINES   |LVS_EX_INFOTIP);
    int  nWidth = 110 ;
    m_inplulist.InsertColumn( 0 , "学号" ,LVCFMT_LEFT,120 );
	m_inplulist.InsertColumn( 1 , "姓名" ,LVCFMT_LEFT,nWidth * 2 / 3 );
	m_inplulist.InsertColumn( 2 , "得分" ,LVCFMT_LEFT,nWidth * 2 / 3 );


	//在这对对话框进行初始化,向组合框添加学院信息

	CDatabase db;
	CStuinfoSet rsstu;
	CRecordset rs(&db);
	CString sqlstr,resul,resul0;
	COMBOBOXEXITEM insItem;
	insItem.mask=CBEIF_TEXT;
	insItem.iItem=0;
	insItem.iImage=0;
	sqlstr="select * from colinfo";
	db.Open(rsstu.GetDefaultConnect());
	rs.Open(CRecordset::forwardOnly,sqlstr);
	int i=0;
	while(!rs.IsEOF())
	{
		rs.GetFieldValue((int)0,resul);
		insItem.pszText=resul.GetBuffer(0);
		resul.ReleaseBuffer();
		m_comboxcollage.InsertItem(&insItem);
		i++;
		rs.MoveNext();
	}
	insItem.pszText="所有学院";
	m_comboxcollage.InsertItem(&insItem);
	rs.Close();
///////////////////////////////////////////////////////////
	sqlstr="select subname from subinfo where subtype='公共基础课'";
	rs.Open(CRecordset::forwardOnly,sqlstr);
	 i=0;
	while(!rs.IsEOF())
	{
		rs.GetFieldValue((int)0,resul);
		insItem.pszText=resul.GetBuffer(0);
		resul.ReleaseBuffer();
		m_comboxsub.InsertItem(&insItem);
		i++;
		rs.MoveNext();
	}
	rs.Close();

/////////////////////////////////////////////////////////

	sqlstr="select stunum,name from stuinfo";
	rs.Open(CRecordset::forwardOnly,sqlstr);
	i=0;
	while(!rs.IsEOF())
	{
		rs.GetFieldValue((int)0,resul0);
		m_inplulist.InsertItem(i,resul0);
		rs.GetFieldValue((int)1,resul0);
		m_inplulist.SetItemText(i,1,resul0);
		i++;
		rs.MoveNext();
	}
	rs.Close();	
//	m_comboxcollage.SetCurSel(1);

	UpdateData(FALSE);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}




//单击表内某个记录
void CInpluscoreDlg::OnClickListPluin(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int item=GetSelectedItem();//得到被选的行
	CString resul=m_inplulist.GetItemText(item,0);
	m_stunum=resul;
	resul=m_inplulist.GetItemText(item,1);
	m_name=resul;
	resul=m_inplulist.GetItemText(item,2);
	m_score=resul;
	UpdateData(FALSE);	
	*pResult = 0;
}


//返回所选行行号
int CInpluscoreDlg::GetSelectedItem()
{
	  for(int i=0; i<m_inplulist.GetItemCount(); i++)
      {
           if( m_inplulist.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED )
           {
				return i;//当有一行被选中,返回行号
           }
      }
	  return -2;//如果未选中任何一行则返回-2

}




//学院下拉框 改变
void CInpluscoreDlg::OnSelchangeComboboxexcollage() 
{
	// TODO: Add your control notification handler code here
	//学员队
	for(int k=-20;k<20;k++)
	{
		m_comboxteam.DeleteItem(0);//删除后选项立即改变,保持有第0项
	}	
	CInpluscoreDlg::UpdateData();
	m_boxteam="";
	UpdateData(FALSE);
	CDatabase db;
	CStuinfoSet rsstu;
	CRecordset rs(&db);
	CString sqlstr,resul,resul0;
	COMBOBOXEXITEM insItem;
	insItem.mask=CBEIF_TEXT;
	insItem.iItem=0;
	insItem.iImage=0;


	sqlstr="select teamname from teaminfo where belongcol='"+m_boxcollage+"'";
	db.Open(rsstu.GetDefaultConnect());
	rs.Open(CRecordset::forwardOnly,sqlstr);

	int i=0;
	while(!rs.IsEOF())
	{
		rs.GetFieldValue((int)0,resul);
		insItem.pszText=resul.GetBuffer(0);
		resul.ReleaseBuffer();
		m_comboxteam.InsertItem(&insItem);
		rs.MoveNext();
	}
	rs.Close();

	if(m_boxcollage=="所有学院")
		sqlstr="select stunum,name from stuinfo";
	else
		sqlstr="select stunum,name from stuinfo where collage='"+m_boxcollage+"'";
	m_inplulist.DeleteAllItems();
	rs.Open(CRecordset::forwardOnly,sqlstr);
	i=0;
	while(!rs.IsEOF())
	{
		rs.GetFieldValue((int)0,resul0);
		m_inplulist.InsertItem(i,resul0);
		rs.GetFieldValue((int)1,resul0);
		m_inplulist.SetItemText(i,1,resul0);
		i++;
		rs.MoveNext();
	}
	rs.Close();	
	if(m_boxsub!="")
		OnSelchangeComboboxexsub();

}


//学员队下拉框 改变
void CInpluscoreDlg::OnSelchangeComboboxexteam() 
{
	// TODO: Add your control notification handler code here

	CInpluscoreDlg::UpdateData();
	if(m_boxteam=="")
		return;
	CDatabase db;
	CStuinfoSet rsstu;
	CRecordset rs(&db);
	CString sqlstr,resul,resul0;
	COMBOBOXEXITEM insItem;
	insItem.mask=CBEIF_TEXT;
	insItem.iItem=0;
	insItem.iImage=0;
	db.Open(rsstu.GetDefaultConnect());
	sqlstr="select stunum,name from stuinfo where stuteam='"+m_boxteam+"' and collage='"+m_boxcollage+"'";
	m_inplulist.DeleteAllItems();
	rs.Open(CRecordset::forwardOnly,sqlstr);
	int i=0;
	while(!rs.IsEOF())
	{
		rs.GetFieldValue((int)0,resul0);
		m_inplulist.InsertItem(i,resul0);
		rs.GetFieldValue((int)1,resul0);
		m_inplulist.SetItemText(i,1,resul0);
		i++;
		rs.MoveNext();
	}
	rs.Close();	
	if(m_boxsub!="")
		OnSelchangeComboboxexsub();
}


//课程框改变
void CInpluscoreDlg::OnSelchangeComboboxexsub() 
{
	// TODO: Add your control notification handler code here
	CInpluscoreDlg::UpdateData();//得到m_boxsub值
	if(m_boxsub=="")
		return;
	CDatabase db;
	CStuinfoSet rsstu;
	CRecordset rs(&db);
	CString sqlstr,resul,resul0;
	db.Open(rsstu.GetDefaultConnect());



	for(int j=0;j<m_inplulist.GetItemCount();j++)
	{
		resul=m_inplulist.GetItemText(j,0);
		sqlstr="select score from scoreinfo where stunum='"+resul+"' and subname='"+m_boxsub+"'";
		rs.Open(CRecordset::forwardOnly,sqlstr);
		if(rs.IsBOF())
		{
			m_inplulist.SetItemText(j,2,"未录入");
		}
		else
		{
			rs.GetFieldValue((int)0,resul0);
			m_inplulist.SetItemText(j,2,resul0);
			rs.MoveNext();
		}
		rs.Close();	
	}
	m_stunum="";
	m_name="";
	m_score="";
	UpdateData(FALSE);
}


//确认输入成绩
void CInpluscoreDlg::OnButtonInput() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CString noin="未录入";
	if(noin.Find(m_score)!=-1||m_score=="")
	{
		AfxMessageBox("请输入成绩");
		return;
	}
	if(m_boxsub=="")
	{
		AfxMessageBox("选择课程");
		return;
	}
	if(m_stunum=="")
	{
		AfxMessageBox("选择学员");
		return;
	}
	CDatabase db;
	CStuinfoSet rsstu;
	CRecordset rs(&db);
	CString sqlstr;
	db.Open(rsstu.GetDefaultConnect());
	sqlstr="select score from scoreinfo where stunum='"+m_stunum+"' and subname='"+m_boxsub+"'";
	rs.Open(CRecordset::forwardOnly,sqlstr);
	int item=GetSelectedItem();
	double scor=atof(m_score);
	if(rs.IsBOF())
	{
		//记录不存在,插入
		sqlstr.Format("insert into scoreinfo values('%s','%s','%f')",m_stunum,m_boxsub,scor);
	}
	else
	{
		//记录存在,更新
		sqlstr.Format("update scoreinfo	set score=%f  where stunum='%s' and subname='%s'",scor,m_stunum,m_boxsub);		
	}
	CMainView::RunSQL(sqlstr);
	m_inplulist.SetItemText(item,2,m_score);
	
}

⌨️ 快捷键说明

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