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

📄 setdlg.cpp

📁 基于指纹技术的学生考勤系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// SetDlg.cpp : implementation file
//

#include "stdafx.h"
#include "FPSys.h"
#include "SetDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CSetDlg dialog
int m_PreID;
extern int m_iSetType;
extern CDatabase m_db;
extern CString FromIDToName(CString tabName,CString attr,int id);	//通过编号获得名字
extern int FromNameToID(CString tabName,CString attr,CString name);	//通过名字获得编号

CSetDlg::CSetDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CSetDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSetDlg)
	m_strName = _T("");
	m_strID = _T("");
	//}}AFX_DATA_INIT
}


void CSetDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSetDlg)
	DDX_Control(pDX, IDC_COMBO_DEPART, m_cDepart);
	DDX_Control(pDX, IDC_LIST_SHSET, m_listShSet);
	DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
	DDX_Text(pDX, IDC_EDIT_ID, m_strID);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSetDlg, CDialog)
	//{{AFX_MSG_MAP(CSetDlg)
	ON_BN_CLICKED(IDC_BTN_MOD, OnBtnMod)
	ON_BN_CLICKED(IDC_BTN_DEL, OnBtnDel)
	ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
	ON_NOTIFY(NM_CLICK, IDC_LIST_SHSET, OnClickListShset)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSetDlg message handlers

void CSetDlg::OnBtnMod() 
{
	// TODO: Add your control notification handler code here
	if(!UpdateData())
		return;
	if(m_strID.IsEmpty())
		return;
	int nItem=m_listShSet.GetNextItem(-1,LVNI_SELECTED);
	if(nItem==-1)
	{
		AfxMessageBox("没有选择要修改的信息!");
			return;
	}
	if(m_strID.IsEmpty() || m_strName.IsEmpty())
	{
		MessageBox("请完整填写信息!");
		return;
	}	
	int id=atoi(m_strID);
	TRY
	{
		int departId;
		CString departName;
		CRecordset rs(&m_db);
		CString sql;
		switch(m_iSetType)
		{
			case 1:
				sql.Format("select * from tab_Depart where DepartID=%d and DepartName='%s'",
								id,m_strName);
				break;
			case 2:
				m_cDepart.GetLBText(m_cDepart.GetCurSel(),departName);
				departId=FromNameToID("tab_Depart","DepartName",departName);
				sql.Format("Select *from tab_Class where ClassID=%d and ClassName='%s' and DepartID=%d",
							id,m_strName,departId);
				break;
			case 3:
				sql.Format("select * from tab_Course where CourseID=%d and CourseName='%s'",
								id,m_strName);
				break;
			case 4:
				sql.Format("select * from tab_Classroom where ClassroomID=%d and Classroom='%s'",
								id,m_strName);
				break;
		}
		rs.Open(CRecordset::dynaset,sql);
		if(!rs.IsEOF())
		{
			AfxMessageBox("该编号已经存在!");
			return;
		}
		rs.Close();
		switch(m_iSetType)
		{
			case 1:
				sql.Format("update tab_Depart set DepartID=%s,DepartName='%s'"
						"where DepartID=%d",m_strID,m_strName,m_PreID);
				break;
			case 2:
			//	m_cDepart.GetLBText(m_cDepart.GetCurSel(),departName);
			//	departId=FromNameToID("tab_Depart","DepartName",departName);
				sql.Format("update tab_Class set ClassID=%s,ClassName='%s',DepartID=%d"
						"where ClassID=%d",m_strID,m_strName,departId,m_PreID);
				break;
			case 3:
				sql.Format("update tab_Course set CourseID=%s,CourseName='%s'"
						"where CourseID=%d",m_strID,m_strName,m_PreID);
				break;
			case 4:
				sql.Format("update tab_Classroom set ClassroomID=%s,ClassroomName='%s'"
						"where ClassroomID=%d",m_strID,m_strName,m_PreID);
				break;
		}
		TRACE(sql);
		m_db.ExecuteSQL(sql);
		m_listShSet.SetItemText(nItem,0,m_strID);
		m_listShSet.SetItemText(nItem,1,m_strName);
		if(m_iSetType==2)
			m_listShSet.SetItemText(nItem,2,departName);
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox(ex->m_strError);
		AfxMessageBox(ex->m_strStateNativeOrigin);
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox(szError);
	}
	END_CATCH
}

void CSetDlg::OnBtnDel() 
{
	// TODO: Add your control notification handler code here
	int nItem=m_listShSet.GetNextItem(-1,LVNI_SELECTED);
	if(-1==nItem)
	{
		AfxMessageBox("请选择要删除的数据");
		return;
	}
	CString sql;
	int id;
	id=atoi(m_listShSet.GetItemText(nItem,0));
	TRY{
		switch(m_iSetType)
		{
			case 1:
				sql.Format("delete from tab_Depart where DepartID=%d",m_PreID);
				break;
			case 2:
				sql.Format("delete from tab_Class where ClassID=%d",m_PreID);
				break;
			case 3:
				sql.Format("delete from tab_Course where CourseID=%d",m_PreID);
				break;
			case 4:
				sql.Format("delete from tab_Classroom where ClassroomID=%d",m_PreID);
				break;
		}
		TRACE(sql);
		m_db.ExecuteSQL(sql);
		m_listShSet.DeleteItem(nItem);
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox(ex->m_strError);
		AfxMessageBox(ex->m_strStateNativeOrigin);
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox(szError);
	}
	END_CATCH
}

void CSetDlg::OnBtnAdd() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if(m_strID.IsEmpty()||m_strName.IsEmpty())
	{
		MessageBox("请完整填写信息!");
		return;
	}
	if(m_strID.GetLength()>5)
	{
		MessageBox("你输入的编号的长度太了。\r\n请输入小于6位的编号!");
		m_strID.Empty();
		UpdateData(FALSE);
		return;
	}
	
	CString id,name,m_strDepName;
	id=m_strID;name=m_strName;
	
		switch(m_iSetType)
		{
			case 1:
				InsertDb("tab_Depart",id,name);
				break;
			case 2:
				if(m_cDepart.GetCurSel()!=CB_ERR)
					m_cDepart.GetLBText(m_cDepart.GetCurSel(),m_strDepName);
				else
				{
					MessageBox("请选择系别!");
					return;
				}
				if(m_strID.IsEmpty()||m_strName.IsEmpty()||m_strDepName.IsEmpty())
				{
					MessageBox("请完整填写信息!");
					return;
				}
				InsertClassDb(m_strID,m_strName,m_strDepName);
				break;
			case 3:
				InsertDb("tab_Course",id,name);
				break;
			case 4:
				InsertDb("tab_Classroom",id,name);
				break;
		}
		int tempId;
		tempId=atoi(m_strID);
		m_strID.Format("%d",++tempId);
		m_strName.Empty();
		UpdateData(FALSE);
}

void CSetDlg::OnClickListShset(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int nItem=m_listShSet.GetNextItem(-1,LVNI_SELECTED);
	if(nItem!=-1)
	{
		CString id=m_listShSet.GetItemText(nItem,0);
		m_PreID=atoi(id);
		CString name=m_listShSet.GetItemText(nItem,1);
		GetDlgItem(IDC_EDIT_ID)->SetWindowText(id);
		GetDlgItem(IDC_EDIT_NAME)->SetWindowText(name);
		if(2==m_iSetType)
		{
			CString name2=m_listShSet.GetItemText(nItem,2);
			int i,iCount;
			iCount=m_cDepart.GetCount();
			for(i=0;i<iCount;i++)
			{
				CString str1;
				m_cDepart.GetLBText(i,str1);
				CString str;
				if(strcmp(name2,str1)==0)
					break;
			}
			m_cDepart.SetCurSel(i);
		}
		GetDlgItem(IDC_BTN_ADD)->EnableWindow(TRUE);
		GetDlgItem(IDC_BTN_MOD)->EnableWindow(TRUE);
		GetDlgItem(IDC_BTN_DEL)->EnableWindow(TRUE);
	}	
	*pResult = 0;
}

void CSetDlg::InsertClassItem(CString id1, CString name, CString id2)
{
	int nIndex=m_listShSet.GetItemCount();
	LV_ITEM lvItem;
	lvItem.mask=LVIF_TEXT;
	lvItem.iItem=nIndex;
	lvItem.iSubItem=0;
/*	CString temp;
	temp.Format("%d",id);*/
	lvItem.pszText=(char*)(LPCTSTR)id1;
	m_listShSet.InsertItem(&lvItem);
	m_listShSet.SetItemText(nIndex,1,name);
	m_listShSet.SetItemText(nIndex,2,id2);
}

void CSetDlg::InsertClassDb(CString id1, CString name, CString departName)
{
	CString sql;
	CRecordset rs(&m_db);

	TRY{
		sql.Format("select *from tab_Class where ClassID=%s",id1);
		rs.Open(CRecordset::dynaset,sql);
		if(!rs.IsEOF())
		{
			MessageBox("该编号已经存在!");
			m_strID.Empty();
			UpdateData(FALSE);
			return;
		}
		rs.Close();
		sql.Format("select *from tab_Class where ClassName='%s'",name);
		rs.Open(CRecordset::dynaset,sql);
		if(!rs.IsEOF())
		{
			MessageBox("该名称已经存在!");
			m_strName.Empty();
			UpdateData(FALSE);
			return;
		}
		int departId;

⌨️ 快捷键说明

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