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

📄 student.cpp

📁 学生选课系统
💻 CPP
字号:
// Student.cpp : implementation file
//

#include "stdafx.h"
#include "SC.h"
#include "Student.h"
#include "StudentSearch.h"

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

/////////////////////////////////////////////////////////////////////////////
// CStudent dialog
CStudentSearch ss;

CStudent::CStudent(CWnd* pParent /*=NULL*/)
	: CDialog(CStudent::IDD, pParent)
{
	//{{AFX_DATA_INIT(CStudent)
	m_strAge = _T("");
	m_strDept = _T("");
	m_strName = _T("");
	m_strNo = _T("");
	m_strSex = _T("");
	//}}AFX_DATA_INIT
}


void CStudent::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStudent)
	DDX_Control(pDX, IDC_STUDENT_LIST, m_Slist);
	DDX_Text(pDX, IDC_SAGE, m_strAge);
	DDX_Text(pDX, IDC_SDEPT, m_strDept);
	DDX_Text(pDX, IDC_SNAME, m_strName);
	DDX_Text(pDX, IDC_SNO, m_strNo);
	DDX_CBString(pDX, IDC_SSEX, m_strSex);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CStudent, CDialog)
	//{{AFX_MSG_MAP(CStudent)
	ON_BN_CLICKED(IDC_S_ADD, OnSAdd)
	ON_NOTIFY(NM_CLICK, IDC_STUDENT_LIST, OnClickStudentList)
	ON_BN_CLICKED(IDC_S_CHANGE, OnSChange)
	ON_BN_CLICKED(IDC_S_DELETE, OnSDelete)
	ON_BN_CLICKED(IDC_S_SEARCH, OnSSearch)
	ON_BN_CLICKED(IDC_S_SEARCH_2, OnSSearch2)
	ON_BN_CLICKED(IDC_S_ALL, OnSAll)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStudent message handlers

BOOL CStudent::OnInitDialog()
{
	CDialog::OnInitDialog();
	m_Slist.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
	m_Slist.InsertColumn(0,"学号(Sno)",LVCFMT_CENTER,100,0);
	m_Slist.InsertColumn(1,"姓名(Sname)",LVCFMT_CENTER,100,1);
	m_Slist.InsertColumn(2,"年龄(Sage)",LVCFMT_CENTER,100,2);
	m_Slist.InsertColumn(3,"性别(Ssex)",LVCFMT_CENTER,100,3);
	m_Slist.InsertColumn(4,"专业(sdept)",LVCFMT_CENTER,100,4);

	DisplayRecord();
	return TRUE;

}

void CStudent::DisplayRecord()
{
	//显示记录
	m_AdoConn.OnInitADOConn();
	CString sql;
	sql.Format("select * from Student");
	//打开记录集
	m_pRecordset=m_AdoConn.GetRecordSet((_bstr_t)sql);
	m_pRecordset->MoveFirst();
	int i=0;
	m_Slist.DeleteAllItems();
	while(m_AdoConn.m_pRecordset->adoEOF==0)
	{
		m_Slist.InsertItem(i,"");
		m_Slist.SetItemText(i,0,(char*)(_bstr_t)m_pRecordset->GetCollect("Sno"));
		m_Slist.SetItemText(i,1,(char*)(_bstr_t)m_pRecordset->GetCollect("Sname"));
		m_Slist.SetItemText(i,2,(char*)(_bstr_t)m_pRecordset->GetCollect("Sage"));
		m_Slist.SetItemText(i,3,(char*)(_bstr_t)m_pRecordset->GetCollect("Ssex"));
		m_Slist.SetItemText(i,4,(char*)(_bstr_t)m_pRecordset->GetCollect("Sdept"));
		m_pRecordset->MoveNext();
		i++;
	}
	m_AdoConn.ExitConnect();

}

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

	if(m_strNo.IsEmpty()==1||m_strName.IsEmpty()==1||m_strSex.IsEmpty()==1
		||m_strAge.IsEmpty()==1||m_strDept.IsEmpty()==1) return;

	m_AdoConn.OnInitADOConn();
	_bstr_t sql;

	sql="select * from Student";
	m_pRecordset=m_AdoConn.GetRecordSet(sql);
	while(m_AdoConn.m_pRecordset->adoEOF==0)
	{
		if((char*)(_bstr_t)m_pRecordset->GetCollect("Sno")==m_strNo)
			return;
		else m_pRecordset->MoveNext();
	}

	sql="INSERT INTO STUDENT VALUES("+m_strNo+",'"+m_strName+"',"
		+m_strAge+",'"+m_strSex+"','"+m_strDept+"')";
	MessageBox(sql);
	m_AdoConn.ExecuteSQL(sql);
	
	
	int count=m_Slist.GetItemCount();
	m_Slist.InsertItem(count,"");
	m_Slist.SetItemText(count,0,m_strNo);
	m_Slist.SetItemText(count,1,m_strName);
	m_Slist.SetItemText(count,2,m_strAge);
	m_Slist.SetItemText(count,3,m_strSex);
	m_Slist.SetItemText(count,4,m_strDept);
	//m_AdoConn.ExitConnect();

	//DisplayRecord();
}

void CStudent::OnClickStudentList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here

	CListCtrl *r=(CListCtrl*)GetDlgItem(IDC_STUDENT_LIST);
	UpdateData(TRUE);

	//获得当前选中项的编号
	int i=r->GetNextItem(-1,LVNI_SELECTED);
	CString temp_no=r->GetItemText(i,0);
	//MessageBox(temp_no);

	m_AdoConn.OnInitADOConn();
	CString sql;
	sql.Format("select * from Student");
	//打开记录集
	m_pRecordset=m_AdoConn.GetRecordSet((_bstr_t)sql);
	m_pRecordset->MoveFirst();
	int j=0;
	while((char*)(_bstr_t)m_pRecordset->GetCollect("Sno")!=temp_no)
	{
		m_pRecordset->MoveNext();
	}
	//MessageBox((char*)(_bstr_t)m_pRecordset->GetCollect("Sno"));

	//改变编辑框显示
	CEdit *no=(CEdit*)GetDlgItem(IDC_SNO);
	CEdit *name=(CEdit*)GetDlgItem(IDC_SNAME);
	CEdit *age=(CEdit*)GetDlgItem(IDC_SAGE);
	CComboBox *sex=(CComboBox*)GetDlgItem(IDC_SSEX);
	CEdit *dept=(CEdit*)GetDlgItem(IDC_SDEPT);
	no->SetWindowText((char*)(_bstr_t)m_pRecordset->GetCollect("Sno"));
	name->SetWindowText((char*)(_bstr_t)m_pRecordset->GetCollect("Sname"));
	age->SetWindowText((char*)(_bstr_t)m_pRecordset->GetCollect("Sage"));
	sex->SetWindowText((char*)(_bstr_t)m_pRecordset->GetCollect("Ssex"));
	dept->SetWindowText((char*)(_bstr_t)m_pRecordset->GetCollect("Sdept"));

	UpdateData(TRUE);
	
	*pResult = 0;
}

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

	if(m_strNo.IsEmpty()==1||m_strName.IsEmpty()==1||m_strSex.IsEmpty()==1
		||m_strAge.IsEmpty()==1||m_strDept.IsEmpty()==1) return;

	m_AdoConn.OnInitADOConn();
	_bstr_t sql;
	sql="UPDATE STUDENT SET Sno='"+m_strNo+"',Sname='"+m_strName+"',Ssex='"
		+m_strSex+"',Sage='"+m_strAge+"',Sdept='"+m_strDept+"' WHERE Sno="+m_strNo;
	m_AdoConn.ExecuteSQL(sql);

	sql="select * from Student";
	m_pRecordset=m_AdoConn.GetRecordSet(sql);
	m_pRecordset->MoveFirst();
	while(m_AdoConn.m_pRecordset->adoEOF==0)
	{
		if((char*)(_bstr_t)m_pRecordset->GetCollect("Sno")==m_strNo)
		{
			int count=m_Slist.GetNextItem(-1,LVNI_SELECTED);
			m_Slist.SetItemText(count,0,m_strNo);
			m_Slist.SetItemText(count,1,m_strName);
			m_Slist.SetItemText(count,2,m_strAge);
			m_Slist.SetItemText(count,3,m_strSex);
			m_Slist.SetItemText(count,4,m_strDept);
			return;
		}
		else m_pRecordset->MoveNext();
	}
	m_AdoConn.ExitConnect();
}

void CStudent::OnSDelete() 
{
	// TODO: Add your control notification handler code here
	CListCtrl *s=(CListCtrl*)GetDlgItem(IDC_STUDENT_LIST);
	int i=0;
	m_AdoConn.OnInitADOConn();
	_bstr_t sql;
	CString str;

	while(m_Slist.GetSelectedCount()!=0)
	{
		i=m_Slist.GetNextItem(-1,LVNI_SELECTED);
		str=m_Slist.GetItemText(i,0);
		m_Slist.DeleteItem(i);
		sql="DELETE FROM STUDENT WHERE Sno="+str;
		MessageBox(sql);
		m_AdoConn.ExecuteSQL(sql);
		m_AdoConn.ExitConnect();
	}
	
}

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

	if(ss.m_SQL.IsEmpty()==1)
	{
		AfxMessageBox("请设置查询条件!");
		return;
	}

	m_AdoConn.OnInitADOConn();
	_bstr_t sql;
	
	sql=ss.m_SQL;
	MessageBox(sql);
	m_AdoConn.ExecuteSQL(sql);
	//m_AdoConn.ExitConnect();
	
	int i=0;
	//sql="SELECT * FROM TEMP";
	
	m_pRecordset=m_AdoConn.GetRecordSet(sql);

	m_Slist.DeleteAllItems();
	
	while(m_AdoConn.m_pRecordset->adoEOF==0)
	{
		m_Slist.InsertItem(i,"");
		m_Slist.SetItemText(i,0,(char*)(_bstr_t)m_pRecordset->GetCollect("Sno"));
		m_Slist.SetItemText(i,1,(char*)(_bstr_t)m_pRecordset->GetCollect("Sname"));
		m_Slist.SetItemText(i,2,(char*)(_bstr_t)m_pRecordset->GetCollect("Sage"));
		m_Slist.SetItemText(i,3,(char*)(_bstr_t)m_pRecordset->GetCollect("Ssex"));
		m_Slist.SetItemText(i,4,(char*)(_bstr_t)m_pRecordset->GetCollect("Sdept"));
		m_pRecordset->MoveNext();
		i++;
	}
	m_AdoConn.ExitConnect();
}

void CStudent::OnSSearch2() 
{
	// TODO: Add your control notification handler code here
	
	ss.DoModal();
}

void CStudent::OnSAll() 
{
	// TODO: Add your control notification handler code here
	DisplayRecord();
}

⌨️ 快捷键说明

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