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