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

📄 course.cpp

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

#include "stdafx.h"
#include "SC.h"
#include "Course.h"
#include "CourseSearch.h"

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

/////////////////////////////////////////////////////////////////////////////
// CCourse dialog
CCourseSearch cc;

CCourse::CCourse(CWnd* pParent /*=NULL*/)
	: CDialog(CCourse::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCourse)
	m_strCno = _T("");
	m_strCname = _T("");
	m_strCpno = _T("");
	m_strCcredit = _T("");
	//}}AFX_DATA_INIT
}


void CCourse::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCourse)
	DDX_Control(pDX, IDC_COURSE_LIST, m_Clist);
	DDX_Text(pDX, IDC_CNO, m_strCno);
	DDX_Text(pDX, IDC_CNAME, m_strCname);
	DDX_CBString(pDX, IDC_CPNO, m_strCpno);
	DDX_Text(pDX, IDC_CCREDIT, m_strCcredit);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCourse, CDialog)
	//{{AFX_MSG_MAP(CCourse)
	ON_BN_CLICKED(IDC_C_ADD, OnCAdd)
	ON_BN_CLICKED(IDC_C_CHANGE, OnCChange)
	ON_NOTIFY(NM_CLICK, IDC_COURSE_LIST, OnClickCourseList)
	ON_BN_CLICKED(IDC_C_SEARCH, OnCSearch)
	ON_BN_CLICKED(IDC_C_SEARCH_2, OnCSearch2)
	ON_BN_CLICKED(IDC_C_DELETE, OnCDelete)
	ON_BN_CLICKED(IDC_C_ALL, OnCAll)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCourse message handlers

BOOL CCourse::OnInitDialog()
{
	CDialog::OnInitDialog();
	m_Clist.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
	m_Clist.InsertColumn(0,"课程号(Cno)",LVCFMT_CENTER,100,0);
	m_Clist.InsertColumn(1,"课程名称(Cname)",LVCFMT_CENTER,100,1);
	m_Clist.InsertColumn(2,"先行课(Cpno)",LVCFMT_CENTER,100,2);
	m_Clist.InsertColumn(3,"学分(Ccredit)",LVCFMT_CENTER,100,3);

	DisplayRecord();
	return TRUE;
}

void CCourse::DisplayRecord()
{
	CComboBox *cpno=(CComboBox*)GetDlgItem(IDC_CPNO);
	
	//显示记录
	m_AdoConn.OnInitADOConn();
	CString sql;
	sql.Format("select * from Course");
	//打开记录集
	m_pRecordset=m_AdoConn.GetRecordSet((_bstr_t)sql);
	m_pRecordset->MoveFirst();
	int i=0;
	m_Clist.DeleteAllItems();
	while(m_AdoConn.m_pRecordset->adoEOF==0)
	{
		m_Clist.InsertItem(i,"");
		m_Clist.SetItemText(i,0,(char*)(_bstr_t)m_pRecordset->GetCollect("Cno"));
		m_Clist.SetItemText(i,1,(char*)(_bstr_t)m_pRecordset->GetCollect("Cname"));
		if(m_pRecordset->GetCollect("Cpno").vt!=VT_NULL)
			m_Clist.SetItemText(i,2,(char*)(_bstr_t)m_pRecordset->GetCollect("Cpno"));
		else m_Clist.SetItemText(i,2,"");
		m_Clist.SetItemText(i,3,(char*)(_bstr_t)m_pRecordset->GetCollect("Ccredit"));

		//为先行课下拉列表添加选项
		cpno->InsertString(i,(char*)(_bstr_t)m_pRecordset->GetCollect("Cno"));
		m_pRecordset->MoveNext();
		i++;
	}
	m_AdoConn.ExitConnect();
}

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

	if(m_strCno.IsEmpty()==1||m_strCname.IsEmpty()==1||m_strCcredit.IsEmpty()==1) return;

	m_AdoConn.OnInitADOConn();
	_bstr_t sql;

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

	if(m_strCpno.IsEmpty()==0)
		sql="INSERT INTO COURSE VALUES("+m_strCno+",'"+m_strCname+"',"
			+m_strCpno+","+m_strCcredit+")";
	else sql="INSERT INTO COURSE VALUES("+m_strCno+",'"+m_strCname+"',NULL,"
			+m_strCcredit+")";
	MessageBox(sql);
	m_AdoConn.ExecuteSQL(sql);

	int count=m_Clist.GetItemCount();
	m_Clist.InsertItem(count,"");
	m_Clist.SetItemText(count,0,m_strCno);
	m_Clist.SetItemText(count,1,m_strCname);
	m_Clist.SetItemText(count,2,m_strCpno);
	m_Clist.SetItemText(count,3,m_strCcredit);
	
}

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

	if(m_strCno.IsEmpty()==1||m_strCname.IsEmpty()==1||m_strCcredit.IsEmpty()==1) return;

	m_AdoConn.OnInitADOConn();
	_bstr_t sql;
	if(m_strCpno.IsEmpty()==0)
		sql="UPDATE COURSE SET Cno='"+m_strCno+"',Cname='"+m_strCname+"',Cpno='"
			+m_strCpno+"',Ccredit='"+m_strCcredit+"' WHERE Cno="+m_strCno;
	else sql="UPDATE COURSE SET Cno='"+m_strCno+"',Cname='"+m_strCname
		+"',Ccredit='"+m_strCcredit+"' WHERE Cno="+m_strCno;
	m_AdoConn.ExecuteSQL(sql);
	
	sql="select * from Course";
	m_pRecordset=m_AdoConn.GetRecordSet(sql);
	while(m_AdoConn.m_pRecordset->adoEOF==0)
	{
		if((char*)(_bstr_t)m_pRecordset->GetCollect("Cno")==m_strCno)
		{
			int count=m_Clist.GetNextItem(-1,LVNI_SELECTED);
			m_Clist.SetItemText(count,0,m_strCno);
			m_Clist.SetItemText(count,1,m_strCname);
			m_Clist.SetItemText(count,2,m_strCpno);
			m_Clist.SetItemText(count,3,m_strCcredit);
			return;
		}
		else m_pRecordset->MoveNext();
	}
	m_AdoConn.ExitConnect();
}

void CCourse::OnClickCourseList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	CListCtrl *r=(CListCtrl*)GetDlgItem(IDC_COURSE_LIST);

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

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

	//改变编辑框显示
	CEdit *no=(CEdit*)GetDlgItem(IDC_CNO);
	CEdit *name=(CEdit*)GetDlgItem(IDC_CNAME);
	CComboBox *pno=(CComboBox*)GetDlgItem(IDC_CPNO);
	CEdit *credit=(CEdit*)GetDlgItem(IDC_CCREDIT);
	no->SetWindowText((char*)(_bstr_t)m_pRecordset->GetCollect("Cno"));
	name->SetWindowText((char*)(_bstr_t)m_pRecordset->GetCollect("Cname"));
	if(m_pRecordset->GetCollect("Cpno").vt!=VT_NULL)
		pno->SetWindowText((char*)(_bstr_t)m_pRecordset->GetCollect("Cpno"));
	else pno->SetWindowText("");
	credit->SetWindowText((char*)(_bstr_t)m_pRecordset->GetCollect("Ccredit"));

	UpdateData(TRUE);

	*pResult = 0;
}

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

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

	m_AdoConn.OnInitADOConn();
	_bstr_t sql;
	
	sql=cc.m_SQL;
	MessageBox(sql);
	m_AdoConn.ExecuteSQL(sql);
	
	int i=0;
	
	m_pRecordset=m_AdoConn.GetRecordSet(sql);

	m_Clist.DeleteAllItems();
	
	while(m_AdoConn.m_pRecordset->adoEOF==0)
	{
		m_Clist.InsertItem(i,"");
		m_Clist.SetItemText(i,0,(char*)(_bstr_t)m_pRecordset->GetCollect("Cno"));
		m_Clist.SetItemText(i,1,(char*)(_bstr_t)m_pRecordset->GetCollect("Cname"));
		if(m_pRecordset->GetCollect("Cpno").vt!=VT_NULL)
			m_Clist.SetItemText(i,2,(char*)(_bstr_t)m_pRecordset->GetCollect("Cpno"));
		else m_Clist.SetItemText(i,2,"");
		m_Clist.SetItemText(i,3,(char*)(_bstr_t)m_pRecordset->GetCollect("Ccredit"));
		m_pRecordset->MoveNext();
		i++;
	}
	m_AdoConn.ExitConnect();
}

void CCourse::OnCSearch2() 
{
	// TODO: Add your control notification handler code here
	cc.DoModal();
}

void CCourse::OnCDelete() 
{
	// TODO: Add your control notification handler code here
	CListCtrl *s=(CListCtrl*)GetDlgItem(IDC_COURSE_LIST);
	CComboBox *cpno=(CComboBox*)GetDlgItem(IDC_CPNO);

	int i=0;
	m_AdoConn.OnInitADOConn();
	_bstr_t sql;
	CString str,str1;

	while(m_Clist.GetSelectedCount()!=0)
	{
		i=m_Clist.GetNextItem(-1,LVNI_SELECTED);
		str=m_Clist.GetItemText(i,0);
		m_Clist.DeleteItem(i);
		int j=0;
		/*cpno->GetLBText(j,str1);
		while(str1!=str)
		{
			j++;
			cpno->GetLBText(j,str1);
		}*/
		//cpno->DeleteString(j);
		sql="DELETE FROM COURSE WHERE Cno="+str;
		m_AdoConn.ExecuteSQL(sql);
		
	}
	m_AdoConn.ExitConnect();
}

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

⌨️ 快捷键说明

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