📄 sc1.cpp
字号:
// SC1.cpp : implementation file
//
#include "stdafx.h"
#include "SC.h"
#include "SC1.h"
#include "SCSearch.h"
#include "SCCalculate.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSC dialog
CSCSearch scs;
CSC::CSC(CWnd* pParent /*=NULL*/)
: CDialog(CSC::IDD, pParent)
{
//{{AFX_DATA_INIT(CSC)
m_strGrade = _T("");
//}}AFX_DATA_INIT
}
void CSC::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSC)
DDX_Control(pDX, IDC_CLIST, m_Clist);
DDX_Control(pDX, IDC_SLIST, m_Slist);
DDX_Control(pDX, IDC_SC_LIST, m_SClist);
DDX_Text(pDX, IDC_GRADE, m_strGrade);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSC, CDialog)
//{{AFX_MSG_MAP(CSC)
ON_NOTIFY(NM_CLICK, IDC_SC_LIST, OnClickScList)
ON_BN_CLICKED(IDC_SC_ADD, OnScAdd)
ON_BN_CLICKED(IDC_SC_CHANGE, OnScChange)
ON_BN_CLICKED(IDC_SC_DELETE, OnScDelete)
ON_BN_CLICKED(IDC_SC_SEARCH, OnScSearch)
ON_BN_CLICKED(IDC_SC_SEARCH_2, OnScSearch2)
ON_BN_CLICKED(IDC_SC_CALCULATE, OnScCalculate)
ON_BN_CLICKED(IDC_SC_ALL, OnScAll)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSC message handlers
BOOL CSC::OnInitDialog()
{
CDialog::OnInitDialog();
m_SClist.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
m_SClist.InsertColumn(0,"学号(Sno)",LVCFMT_CENTER,100,0);
m_SClist.InsertColumn(1,"课程号(Cno)",LVCFMT_CENTER,100,1);
m_SClist.InsertColumn(2,"成绩(Grade)",LVCFMT_CENTER,100,2);
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);
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 CSC::DisplayRecord()
{
CComboBox *sno=(CComboBox*)GetDlgItem(IDC_SNO);
CComboBox *cno=(CComboBox*)GetDlgItem(IDC_CNO);
//显示记录
m_AdoConn.OnInitADOConn();
CString sql;
sql.Format("select * from SC");
//打开记录集
m_pRecordset=m_AdoConn.GetRecordSet((_bstr_t)sql);
m_pRecordset->MoveFirst();
int i=0;
m_SClist.DeleteAllItems();
while(m_AdoConn.m_pRecordset->adoEOF==0)
{
m_SClist.InsertItem(i,"");
m_SClist.SetItemText(i,0,(char*)(_bstr_t)m_pRecordset->GetCollect("Sno"));
m_SClist.SetItemText(i,1,(char*)(_bstr_t)m_pRecordset->GetCollect("Cno"));
m_SClist.SetItemText(i,2,(char*)(_bstr_t)m_pRecordset->GetCollect("Grade"));
m_pRecordset->MoveNext();
i++;
}
sql.Format("select * from Student");
m_pRecordset=m_AdoConn.GetRecordSet((_bstr_t)sql);
m_pRecordset->MoveFirst();
i=0;
while(m_AdoConn.m_pRecordset->adoEOF==0)
{
CString temp=(char*)(_bstr_t)m_pRecordset->GetCollect("Sno");
CString temp2=(char*)(_bstr_t)m_pRecordset->GetCollect("Sname");
sno->InsertString(i,temp+" "+temp2);
m_pRecordset->MoveNext();
i++;
}
sql.Format("select * from Course");
m_pRecordset=m_AdoConn.GetRecordSet((_bstr_t)sql);
m_pRecordset->MoveFirst();
i=0;
while(m_AdoConn.m_pRecordset->adoEOF==0)
{
CString temp=(char*)(_bstr_t)m_pRecordset->GetCollect("Cno");
CString temp2=(char*)(_bstr_t)m_pRecordset->GetCollect("Cname");
cno->InsertString(i,temp+" "+temp2);
m_pRecordset->MoveNext();
i++;
}
m_AdoConn.ExitConnect();
}
void CSC::OnClickScList(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CListCtrl *sc=(CListCtrl*)GetDlgItem(IDC_SC_LIST);
CListCtrl *s=(CListCtrl*)GetDlgItem(IDC_SLIST);
CListCtrl *c=(CListCtrl*)GetDlgItem(IDC_CLIST);
CComboBox *sno=(CComboBox*)GetDlgItem(IDC_SNO);
CComboBox *cno=(CComboBox*)GetDlgItem(IDC_CNO);
CEdit *grade=(CEdit*)GetDlgItem(IDC_GRADE);
//获得当前选中项的编号
int i=sc->GetNextItem(-1,LVNI_SELECTED);
if(i>=sc->GetItemCount()) return;
CString temp_Sno=sc->GetItemText(i,0);
CString temp_Cno=sc->GetItemText(i,1);
m_AdoConn.OnInitADOConn();
CString sql;
sql.Format("select * from SC");
//打开记录集
m_pRecordset=m_AdoConn.GetRecordSet((_bstr_t)sql);
m_pRecordset->MoveFirst();
int j=0;
while((char*)(_bstr_t)m_pRecordset->GetCollect("Sno")!=temp_Sno
||(char*)(_bstr_t)m_pRecordset->GetCollect("Cno")!=temp_Cno
&&m_AdoConn.m_pRecordset->adoEOF==0)
{
m_pRecordset->MoveNext();
}
//改变编辑框显示
i=0;
sno->GetLBText(i,temp_Sno);
CString temp1=temp_Sno.Mid(0,5);
while(temp1!=(char*)(_bstr_t)m_pRecordset->GetCollect("Sno"))
{
i++;
sno->GetLBText(i,temp_Sno);
temp1=temp_Sno.Mid(0,5);
}
j=0;
cno->GetLBText(j,temp_Cno);
CString temp2=temp_Cno.GetAt(0);
while(temp2!=(char*)(_bstr_t)m_pRecordset->GetCollect("Cno"))
{
j++;
cno->GetLBText(j,temp_Cno);
temp2=temp_Cno.GetAt(0);
}
sno->SetCurSel(i);
cno->SetCurSel(j);
grade->SetWindowText((char*)(_bstr_t)m_pRecordset->GetCollect("Grade"));
_bstr_t sql2;
sql2="select * from Student where Sno="+temp1;
//MessageBox(sql2);
m_pRecordset=m_AdoConn.GetRecordSet(sql2);
s->DeleteAllItems();
s->InsertItem(0,"");
s->SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("Sno"));
s->SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("Sname"));
s->SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("Sage"));
s->SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect("Ssex"));
s->SetItemText(0,4,(char*)(_bstr_t)m_pRecordset->GetCollect("Sdept"));
sql2="select * from Course where Cno="+temp2;
m_pRecordset=m_AdoConn.GetRecordSet(sql2);
//MessageBox(sql2);
m_Clist.DeleteAllItems();
m_Clist.InsertItem(0,"");
m_Clist.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("Cno"));
m_Clist.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("Cname"));
if(m_pRecordset->GetCollect("Cpno").vt!=VT_NULL)
m_Clist.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("Cpno"));
else m_Clist.SetItemText(0,2,"");
m_Clist.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect("Ccredit"));
UpdateData(TRUE);
*pResult = 0;
}
void CSC::OnScAdd()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString strSno,strCno;
CComboBox *sno=(CComboBox*)GetDlgItem(IDC_SNO);
CComboBox *cno=(CComboBox*)GetDlgItem(IDC_CNO);
sno->GetLBText(sno->GetCurSel(),strSno);
cno->GetLBText(cno->GetCurSel(),strCno);
strSno=strSno.Mid(0,5);
strCno=strCno.GetAt(0);
if(strSno.IsEmpty()==1||strCno.IsEmpty()==1||m_strGrade.IsEmpty()==1) return;
m_AdoConn.OnInitADOConn();
_bstr_t sql;
sql="select * from SC";
m_pRecordset=m_AdoConn.GetRecordSet(sql);
while(m_AdoConn.m_pRecordset->adoEOF==0)
{
if((char*)(_bstr_t)m_pRecordset->GetCollect("Sno")==strSno
&&(char*)(_bstr_t)m_pRecordset->GetCollect("Cno")==strCno)
return;
else m_pRecordset->MoveNext();
}
sql="INSERT INTO SC VALUES('"+strSno+"','"+strCno+"','"+m_strGrade+"')";
m_AdoConn.ExecuteSQL(sql);
int count=m_SClist.GetItemCount();
m_SClist.InsertItem(count,"");
m_SClist.SetItemText(count,0,strSno);
m_SClist.SetItemText(count,1,strCno);
m_SClist.SetItemText(count,2,m_strGrade);
return;
}
void CSC::OnScChange()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString strSno,strCno;
CComboBox *sno=(CComboBox*)GetDlgItem(IDC_SNO);
CComboBox *cno=(CComboBox*)GetDlgItem(IDC_CNO);
sno->GetLBText(sno->GetCurSel(),strSno);
cno->GetLBText(cno->GetCurSel(),strCno);
strSno=strSno.Mid(0,5);
strCno=strCno.GetAt(0);
if(strSno.IsEmpty()==1||strCno.IsEmpty()==1||m_strGrade.IsEmpty()==1) return;
m_AdoConn.OnInitADOConn();
_bstr_t sql;
sql="select * from SC";
m_pRecordset=m_AdoConn.GetRecordSet(sql);
while(m_AdoConn.m_pRecordset->adoEOF==0)
{
if((char*)(_bstr_t)m_pRecordset->GetCollect("Sno")==strSno
&&(char*)(_bstr_t)m_pRecordset->GetCollect("Cno")==strCno)
{
sql="UPDATE SC SET Sno="+strSno+",Cno="+strCno+",Grade="
+m_strGrade+" WHERE Sno="+strSno+" AND Cno="+strCno;
m_AdoConn.ExecuteSQL(sql);
m_AdoConn.ExitConnect();
int count=m_SClist.GetNextItem(-1,LVNI_SELECTED);
m_SClist.SetItemText(count,0,strSno);
m_SClist.SetItemText(count,1,strCno);
m_SClist.SetItemText(count,2,m_strGrade);
return;
}
else m_pRecordset->MoveNext();
}
m_AdoConn.ExitConnect();
}
void CSC::OnScDelete()
{
// TODO: Add your control notification handler code here
CListCtrl *s=(CListCtrl*)GetDlgItem(IDC_SC_LIST);
CString strSno,strCno;
CComboBox *sno=(CComboBox*)GetDlgItem(IDC_SNO);
CComboBox *cno=(CComboBox*)GetDlgItem(IDC_CNO);
sno->GetLBText(sno->GetCurSel(),strSno);
cno->GetLBText(cno->GetCurSel(),strCno);
strSno=strSno.Mid(0,5);
strCno=strCno.GetAt(0);
int i=0;
m_AdoConn.OnInitADOConn();
_bstr_t sql;
CString str1,str2;
while(m_SClist.GetSelectedCount()!=0)
{
i=m_SClist.GetNextItem(-1,LVNI_SELECTED);
str1=m_SClist.GetItemText(i,0);
str2=m_SClist.GetItemText(i,1);
m_SClist.DeleteItem(i);
sql="DELETE FROM SC WHERE Sno="+str1+" AND Cno="+str2;
MessageBox(sql);
m_AdoConn.ExecuteSQL(sql);
}
m_AdoConn.ExitConnect();
}
void CSC::OnScSearch()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if(scs.m_SQL.IsEmpty()==1)
{
AfxMessageBox("请设置查询条件!");
return;
}
m_AdoConn.OnInitADOConn();
_bstr_t sql;
sql=scs.m_SQL;
m_AdoConn.ExecuteSQL(sql);
int i=0;
m_pRecordset=m_AdoConn.GetRecordSet(sql);
m_SClist.DeleteAllItems();
while(m_AdoConn.m_pRecordset->adoEOF==0)
{
m_SClist.InsertItem(i,"");
m_SClist.SetItemText(i,0,(char*)(_bstr_t)m_pRecordset->GetCollect("Sno"));
m_SClist.SetItemText(i,1,(char*)(_bstr_t)m_pRecordset->GetCollect("Cno"));
m_SClist.SetItemText(i,2,(char*)(_bstr_t)m_pRecordset->GetCollect("Grade"));
m_pRecordset->MoveNext();
i++;
}
m_AdoConn.ExitConnect();
}
void CSC::OnScSearch2()
{
// TODO: Add your control notification handler code here
scs.DoModal();
}
void CSC::OnScCalculate()
{
// TODO: Add your control notification handler code here
CSCCalculate scc;
scc.DoModal();
}
void CSC::OnScAll()
{
// TODO: Add your control notification handler code here
DisplayRecord();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -