📄 student.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 + -