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

📄 studentsdlg.cpp

📁 教学管理系统
💻 CPP
字号:
// StudentsDlg.cpp : implementation file
//

#include "stdafx.h"
#include "COdbc.h"
#include "StudentsDlg.h"
#include <afxdb.h>
#include "RecordStudents.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
static BOOL m_classcheck=FALSE;
static BOOL m_departcheck=FALSE;
/////////////////////////////////////////////////////////////////////////////
// CStudentsDlg dialog


CStudentsDlg::CStudentsDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CStudentsDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CStudentsDlg)
	m_sID = _T("");
	m_sName = _T("");
	m_sSex = _T("");
	m_sAge = _T("");
	m_sClass = _T("");
	m_sDepartment = _T("");
	m_agecheck = FALSE;
	m_idcheck = FALSE;
	m_namecheck = FALSE;
	m_sexcheck = FALSE;
	//}}AFX_DATA_INIT
}


void CStudentsDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStudentsDlg)
	DDX_Control(pDX, IDC_STUDENT_INFO, m_sList);
	DDX_Text(pDX, IDC_STUDENT_ID, m_sID);
	DDX_Text(pDX, IDC_STUDENT_NAME, m_sName);
	DDX_Text(pDX, IDC_STUDENT_SEX, m_sSex);
	DDX_Text(pDX, IDC_STUDENT_AGE, m_sAge);
	DDX_Text(pDX, IDC_STUDENT_CLASS, m_sClass);
	DDX_Text(pDX, IDC_STUDENT_DEPARTMENT, m_sDepartment);
	DDX_Check(pDX, IDC_AGECHECK, m_agecheck);
	DDX_Check(pDX, IDC_IDCHECK, m_idcheck);
	DDX_Check(pDX, IDC_NAMECHECK, m_namecheck);
	DDX_Check(pDX, IDC_SEXCHECK, m_sexcheck);
	DDX_Check(pDX, IDC_CLASSCHECK, m_classcheck);
	DDX_Check(pDX, IDC_DEPARTCHECK, m_departcheck);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CStudentsDlg, CDialog)
	//{{AFX_MSG_MAP(CStudentsDlg)
	ON_BN_CLICKED(IDC_STUDENT_ADD, OnStudentAdd)
	ON_BN_CLICKED(IDC_STUDENT_DEL, OnStudentDel)
	ON_BN_CLICKED(IDC_STUDENT_CHANGE, OnStudentChange)
	ON_BN_CLICKED(IDC_STUDENT_SLECET, OnStudentSlecet)
	ON_BN_CLICKED(IDC_STUDENT_CONCEL, OnStudentConcel)
	ON_BN_CLICKED(IDC_CLEAN, OnClean)
	ON_BN_CLICKED(IDC_CLASSCHECK, OnClasscheck)
	ON_BN_CLICKED(IDC_DEPARTCHECK, OnDepartcheck)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStudentsDlg message handlers

void CStudentsDlg::OnStudentAdd() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	if(m_sID.IsEmpty())
	{
		MessageBox("please input id!");
		return;
	}
	CDatabase db;
	BOOL bRtn;
	CString sql,tmp;
	try {
	bRtn = db.OpenEx("DSN=教学管理系统;UID=sa", CDatabase::noOdbcDialog);
	}catch (CDBException *pDBEx) {
	pDBEx->ReportError();
	}catch (CMemoryException *pMemEx) {
	pMemEx->ReportError();
	}
	if (!bRtn)
	printf("连接数据库失败!");
	sql = "insert into student (student_id, student_name, student_age,\
		student_sex, class, department) values ('";
	sql +=m_sID;
	sql +="','";
	sql +=m_sName;
	sql +="','";
	sql	+=m_sAge;
	sql +="','";
	sql +=m_sSex;
	sql +="','";
	sql +=m_sClass;
	sql +="','";
	sql +=m_sDepartment;
	sql +="');" ;
	try {
	db.ExecuteSQL(sql);
	} catch (CDBException *pDBEx) {
	pDBEx->ReportError();
	}
	db.Close();
}

void CStudentsDlg::OnStudentDel() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	if(m_sID.IsEmpty())
	{
		MessageBox("please input id!");
		return;
	}
	CDatabase db;
	BOOL bRtn;
	CString sql,tmp;
	try {
	bRtn = db.OpenEx("DSN=教学管理系统;UID=sa", CDatabase::noOdbcDialog);
	}catch (CDBException *pDBEx) {
	pDBEx->ReportError();
	}catch (CMemoryException *pMemEx) {
	pMemEx->ReportError();
	}
	if (!bRtn)
	printf("连接数据库失败!");
	sql = "delete from student where student_id ='" ;
	sql +=m_sID;
	sql +="';" ;
	try {
	db.ExecuteSQL(sql);
	} catch (CDBException *pDBEx) {
	pDBEx->ReportError();
	}
	db.Close();

}

void CStudentsDlg::OnStudentChange() 
{
	int i=0;
	// TODO: Add your control notification handler code here
	UpdateData(true);
	CDatabase db;
	BOOL bRtn;
	CString sql,tmp;
	try {
	bRtn = db.OpenEx("DSN=教学管理系统;UID=sa", CDatabase::noOdbcDialog);
	}catch (CDBException *pDBEx) {
	pDBEx->ReportError();
	}catch (CMemoryException *pMemEx) {
	pMemEx->ReportError();
	}
	if (!bRtn)
	printf("连接数据库失败!");
	sql = "update student set ";
	if(!m_sName.IsEmpty())
	{	
		sql +="student_name='";
		sql +=m_sName;
		sql +="'";
		i=1;
	}
	if(!m_sAge.IsEmpty())
	{	
		if(i==1)
		{
			sql +=",";
		}
		sql +="student_age='";
		sql +=m_sAge;
		sql +="'";
		i=1;
	}
	if(!m_sSex.IsEmpty())
	{	
		if(i==1)
		{
			sql +=",";
		}
		sql +="student_sex='";
		sql +=m_sSex;
		sql +="'";
		i=1;
	}
	if(!m_sClass.IsEmpty())
	{	
		if(i==1)
		{
			sql +=",";
		}
		sql +="class='";
		sql +=m_sClass;
		sql +="'";
		i=1;
	}
	if(!m_sDepartment.IsEmpty())
	{	
		if(i==1)
		{
			sql +=",";
		}
		sql +="department='";
		sql +=m_sDepartment;
		sql +="'";
		i=1;
	}
	if(i==0)
	{	
		MessageBox("please input tiaojian!");
		return;
	}
	sql +=" where student_id='";
	sql +=m_sID;
	sql +="';" ;
	try {
	db.ExecuteSQL(sql);
	} catch (CDBException *pDBEx) {
	pDBEx->ReportError();
	}
	db.Close();
}

void CStudentsDlg::OnStudentSlecet() 
{
	// TODO: Add your control notification handler code here
	int i=0;
	int j=0;
	CDatabase db;
	BOOL bRtn;
	CString sql;
	UpdateData(true);
	sql = "";
	if(!m_sID.IsEmpty())
	{	
		sql +="Select * From student where student_id='";
		sql +=m_sID;
		sql +="'";
		i=1;
		if(m_idcheck==1)
		{
			sql +=" union ";
			i=0;
		} 
		j=1;
	}
	if(!m_sName.IsEmpty())
	{		
		if(m_namecheck==0)
		{
			if(i==1)
				sql +=" and ";
			else sql +="Select * From student where ";
			sql +="student_name='";
			sql +=m_sName;
			sql +="'";
			i=1;
			j=1;
		}
		else
		{
				sql ="Select * From student where student_name='"+m_sName+"' \
					union "+sql;
			j=1;
		}
	}
	if(!m_sAge.IsEmpty())
	{	
		if(m_agecheck==0)
		{
			if(i==1)
				sql +=" and ";
			else sql +="Select * From student where ";
			sql +="student_age='";
			sql +=m_sAge;
			sql +="'";
			i=1;
			j=1;
		}
		else
		{
				sql ="Select * From student where student_age='"+m_sAge+"' \
					union "+sql;
			j=1;
		}
	}
	if(!m_sSex.IsEmpty())
	{	
		if(m_sexcheck==0)
		{
			if(i==1)
				sql +=" and ";
			else sql +="Select * From student where ";
			sql +="student_sex='";
			sql +=m_sSex;
			sql +="'";
			i=1;
			j=1;
		}
		else
		{
				sql ="Select * From student where student_sex='"+m_sSex+"' \
					union "+sql;
			j=1;
		}
	}
	if(!m_sClass.IsEmpty())
	{	
		if(m_classcheck==0)
		{
			if(i==1)
				sql +=" and ";
			else sql +="Select * From student where ";
			sql +="class='";
			sql +=m_sClass;
			sql +="'";
			i=1;
			j=1;
		}
		else
		{
				sql ="Select * From student where class='"+m_sClass+"' \
					union "+sql;
			j=1;
		}
	}
	if(!m_sDepartment.IsEmpty())
	{	
		if(m_departcheck==0)
		{
			if(i==1)
			{
				MessageBox("L");
				sql +=" and ";
				}
			else sql +="Select * From student where ";
			sql +="department='";
			sql +=m_sDepartment;
			sql +="'";
			i=1;
			j=1;
		}
		else
		{
				sql ="Select * From student where department='"+m_sDepartment+"' \
					union "+sql;
			j=1;
		}
	}
	if(j==0)
	{	
		MessageBox("please input tiaojian!");
		return;
	}
	sql.TrimRight("union ");

	CRecordStudents rs(&db);
	try {
	bRtn = rs.Open(CRecordset::snapshot,sql);
	} catch(CDBException *pDBEx) {
	pDBEx->ReportError();
	} catch(CMemoryException *pMemEx) {
	pMemEx->ReportError();
	}
	if(!bRtn) {
	AfxMessageBox("Query table failed!",MB_OK|MB_ICONERROR);
	return ;
	}
	/* 4、逐条获取查询结果*/
	for(rs.MoveFirst();!rs.IsEOF();rs.MoveNext()) {
	// TODO: Add code here
	}
	/* 5、关闭记录集、数据库*/

		/* 清除列表中原有的项*/
	CString tmp;
	m_sList.DeleteAllItems();
	/* 在列表中显示纪录*/
	LVITEM item;
	int nRow=0;
	item.mask = LVIF_TEXT;
	item.state = LVIS_SELECTED;
	item.stateMask = LVIS_SELECTED;
	item.lParam = 1;
	item.iIndent = 0;
	for(rs.MoveFirst();!rs.IsEOF();rs.MoveNext(),nRow++)
	{
	
		item.iItem = nRow;
		int	iSubItem = 0;
		item.iSubItem = iSubItem++;
		item.pszText = (char*)(LPCTSTR)(rs.m_student_id);
		item.cchTextMax = strlen(item.pszText);
		m_sList.InsertItem(&item); // 第一列应用InsertItem()

		item.iSubItem = iSubItem++;
		item.pszText = (char*)(LPCTSTR)(rs.m_student_name);
		item.cchTextMax = strlen(item.pszText);
		m_sList.SetItem(&item); // 其余列用SetItem()

		item.iSubItem = iSubItem++;
		item.pszText = (char*)(LPCTSTR)(rs.m_student_age);
		item.cchTextMax = strlen(item.pszText);
		m_sList.SetItem(&item);

		item.iSubItem = iSubItem++;
		item.pszText = (char*)(LPCTSTR)(rs.m_student_sex);
		item.cchTextMax = strlen(item.pszText);
		m_sList.SetItem(&item);

		item.iSubItem = iSubItem++;
		item.pszText = (char*)(LPCTSTR)(rs.m_class);
		item.cchTextMax = strlen(item.pszText);
		m_sList.SetItem(&item);

		item.iSubItem = iSubItem++;
		item.pszText = (char*)(LPCTSTR)(rs.m_department);
		item.cchTextMax = strlen(item.pszText);
		m_sList.SetItem(&item);
		
	}
	
	rs.Close();
	db.Close();
}

void CStudentsDlg::OnStudentConcel() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnCancel();
}

BOOL CStudentsDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	LPTSTR lpszCols[]={"学员ID","姓名","年龄","性别","班级","系别",NULL}; // 列标题
	int nWidth[] = {65,90,60,70,60,60,0}; // 列宽度
	LV_COLUMN lvcol;
	lvcol.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
	lvcol.fmt = LVCFMT_LEFT;
	for(int i=0;lpszCols[i]!=NULL;i++)
	{
		lvcol.cx = nWidth[i];
		lvcol.pszText = lpszCols[i];
		m_sList.InsertColumn(i,&lvcol);
	}
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CStudentsDlg::OnClean() 
{
	// TODO: Add your control notification handler code here
	m_sList.DeleteAllItems();
	m_sID = _T("");
	m_sName = _T("");
	m_sSex = _T("");
	m_sAge = _T("");
	m_sClass = _T("");
	m_sDepartment = _T("");
	m_agecheck = FALSE;
	m_classcheck = FALSE;
	m_departcheck = FALSE;
	m_idcheck = FALSE;
	m_namecheck = FALSE;
	m_sexcheck = FALSE;
	UpdateData(false);
}

void CStudentsDlg::OnClasscheck() 
{
	// TODO: Add your control notification handler code here
		m_classcheck =!m_classcheck;
	

}

void CStudentsDlg::OnDepartcheck() 
{
	// TODO: Add your control notification handler code here
	m_departcheck = !m_departcheck;
}

⌨️ 快捷键说明

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