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

📄 studentinfodlg.cpp

📁 基于指纹技术的学生考勤系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			if(strcmp(sex,str)==0)
				break;
		}
		m_cSex.SetCurSel(i);

		CString departName=m_listStudentInfo.GetItemText(nItem,3);	//设置当前系别
		iCount=m_cDepart.GetCount();
		for(i=0;i<iCount;i++)
		{
			CString str;
			m_cDepart.GetLBText(i,str);
			if(strcmp(departName,str)==0)
				break;
		}
		m_cDepart.SetCurSel(i);
		m_iDepFrm=1;
		RefreshClass(departName);		//通过系名来更新班级名
		CString className=m_listStudentInfo.GetItemText(nItem,4);	//设置当前班级
		iCount=m_cClass.GetCount();
		for(i=0;i<iCount;i++)
		{
			CString str;
			m_cClass.GetLBText(i,str);
			if(strcmp(className,str)==0)
				break;
		}
		m_cClass.SetCurSel(i);
	}	
	*pResult = 0;
}

BOOL CStudentInfoDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_cSDepart.AddString("所有系别");
	m_cSDepart.SetCurSel(0);
	m_cSClass.AddString("所有班级");
	m_cSClass.SetCurSel(0);

	DWORD dwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|
					LVS_EX_ONECLICKACTIVATE|LVS_EX_UNDERLINEHOT;
	m_listStudentInfo.SetExtendedStyle(dwExStyle);
	m_listStudentInfo.InsertColumn(0,"学号",LVCFMT_CENTER,70);
	m_listStudentInfo.InsertColumn(1,"姓名",LVCFMT_CENTER,80);
	m_listStudentInfo.InsertColumn(2,"性别",LVCFMT_CENTER,60);
	m_listStudentInfo.InsertColumn(3,"系别",LVCFMT_CENTER,120);
	m_listStudentInfo.InsertColumn(4,"班级",LVCFMT_CENTER,100);
	m_listStudentInfo.InsertColumn(5,"备注",LVCFMT_CENTER,80);
	m_listStudentInfo.InsertColumn(6,"考勤号",LVCFMT_CENTER,80);
	
	m_cSSex.AddString("男&女");
	m_cSSex.AddString("男");
	m_cSSex.AddString("女");
	m_cSSex.SetCurSel(0);

//	GetDlgItem(IDC_EDIT_SID)->ShowWindow(SW_HIDE);
//	GetDlgItem(IDC_EDIT_SNAME)->ShowWindow(SW_HIDE);
//	GetDlgItem(IDC_BTN_QUERY)->ShowWindow(SW_HIDE);

	InitCtrlData();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CStudentInfoDlg::InitCtrlData()
{
	m_cSex.AddString("男");
	m_cSex.AddString("女");
	m_cSex.SetCurSel(0);

	if(!m_db.IsOpen())
	{
		MessageBox("数据没有打开!");
		return;
	}
	CString sql;
	CRecordset rs(&m_db);
	//下面通过获得数据库中的数据初始化控件
	TRY{
		sql.Format("select *from tab_depart");
		rs.Open(CRecordset::dynaset,sql);
		while(!rs.IsEOF()){		//显示系别控件
			int id;
			CString temp,name;
			CDBVariant var;
			rs.GetFieldValue((short)0,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				id=var.m_iVal;
			var.Clear();
			temp.Format("%d",id);
				rs.GetFieldValue(1,name);
			m_cDepart.AddString(name);
			m_cSDepart.AddString(name);
			rs.MoveNext();
		}
		rs.Close();
		sql.Format("select *from tab_Class");
		rs.Open(CRecordset::dynaset,sql);
		while(!rs.IsEOF()){		
			int id;
			CString temp,name;
			CDBVariant var;
			rs.GetFieldValue((short)0,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				id=var.m_iVal;
			var.Clear();
			temp.Format("%d",id);
				rs.GetFieldValue(1,name);
	//		m_cClass.AddString(name);
			m_cSClass.AddString(name);
			rs.MoveNext();
		}
		rs.Close();
		sql.Format("select *from tab_Student order by sId");
		rs.Open(CRecordset::dynaset,sql);
		while(!rs.IsEOF())
		{
			int tempId;
			CString id,tempName,tempSex,tempId2,tempId3,tempId4,tempMemo;
			CDBVariant var;
			rs.GetFieldValue((short)0,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				tempId=var.m_lVal;
			var.Clear();
			id.Format("%d",tempId);
		//	MessageBox(id);return;
			rs.GetFieldValue(1,tempName);
			rs.GetFieldValue(2,tempSex);
		//	rs.GetFieldValue(3,tempId2);	//系别编号
			rs.GetFieldValue(3,tempId3);	//班级编号
			rs.GetFieldValue(4,tempId4);	//考勤号
			rs.GetFieldValue(5,tempMemo);
			//由班级编号获得系编号,再由系编号获取系名称
			tempId2=ReturnDepartID(tempId3);
			CString sClassName;
			CString sDepartName;
			if(tempId2!=-1)
			{
				sDepartName=FromIDToName("tab_Depart","DepartID",atoi(tempId2));
				sClassName=FromIDToName("tab_Class","ClassID",atoi(tempId3));
			}
		//	MessageBox(sDepartName);return;
			InsertToItem(id,tempName,tempSex,sDepartName,sClassName,tempMemo,tempId4);
			rs.MoveNext();
		}
	}
	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
}

CString CStudentInfoDlg::ReturnDepartID(CString ClassID)
{
	CRecordset rs(&m_db);
	CString sql;
	sql.Format("Select DepartID from tab_Class where ClassID=%d",atoi(ClassID));
	rs.Open(CRecordset::dynaset,sql);
	if(!rs.IsEOF())
	{
		int departId;
		CString sId;
		CDBVariant var;
		rs.GetFieldValue((short)0,var,SQL_C_SLONG);
		if(var.m_dwType!=DBVT_NULL)
			departId=var.m_lVal;
		var.Clear();
		sId.Format("%d",departId);
		return sId;
	}
	return -1;
}

void CStudentInfoDlg::InsertToDb(CString id, CString name, CString sex, CString depart, CString classes, CString memo)
{
	if(!m_db.IsOpen())
		return;
	int tempId,tempId2,tempId3;
	tempId=atoi(id);
	TRY{
		CRecordset rs(&m_db);
		CString sql;
		sql.Format("select *from tab_Student where sID=%d",tempId);
		rs.Open(CRecordset::dynaset,sql);
		if(!rs.IsEOF())
		{
			MessageBox("该学号已在存在!");
			m_strID.Empty();
			return;
		}
		rs.Close();
		tempId2=FromNameToID("tab_Depart","DepartName",depart);
		tempId3=FromNameToID("tab_Class","ClassName",classes);
		sql.Format("insert into tab_Student(sID,sName,sSex,ClassID,AttendID,Memo) "
					"values('%d','%s','%s',%d,%d,'%s')",
					tempId,name,sex,tempId3,atoi(""),memo);
		TRACE(sql);
		m_db.ExecuteSQL(sql);
		InsertToItem(id,name,sex,depart,classes,memo,_T(""));
	}
	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 CStudentInfoDlg::InsertToItem(CString id, CString name, CString sex, CString depart, CString classes, CString memo, CString id2)
{
	if(strcmp(id2,"0")==0)
		id2=_T("");
	int nIndex=m_listStudentInfo.GetItemCount();
	LV_ITEM lvItem;
	lvItem.mask=LVIF_TEXT;
	lvItem.iItem=nIndex;
	lvItem.iSubItem=0;
	lvItem.pszText=(char*)(LPCTSTR)id;
	m_listStudentInfo.InsertItem(&lvItem);
	m_listStudentInfo.SetItemText(nIndex,1,name);
	m_listStudentInfo.SetItemText(nIndex,2,sex);
	m_listStudentInfo.SetItemText(nIndex,3,depart);
	m_listStudentInfo.SetItemText(nIndex,4,classes);
	m_listStudentInfo.SetItemText(nIndex,5,memo);
	m_listStudentInfo.SetItemText(nIndex,6,id2);
}

void CStudentInfoDlg::RefreshClass(CString departname)
{
	int departId=FromNameToID("tab_Depart","DepartName",departname);
	CString sql;
	sql.Format("Select *from tab_Class where DepartID=%d",departId);//选择属于某个系别的所有班级
	CString sCount;
	
	if(m_iDepFrm==1)					//删除更新模块中的班级数据
	{
		int iCount=m_cClass.GetCount();
		for(int i=0;i<iCount;i++)
		{	
			m_cClass.DeleteString(0);	//每删除一个,下一个就又变为第一个
		}
	}
	else								//删除查询模块中的班级数据
	{
		if(strcmp(departname,"所有系别")==0)//如果选定的是“所有系别”,更新查询条件
			sql.Format("Select *from tab_Class");
		int iCount=m_cSClass.GetCount();
		for(int i=0;i<iCount;i++)
		{	
			m_cSClass.DeleteString(0);	//每删除一个,下一个就又变为第一个
		}
		m_cSClass.AddString("所有班级");
	}
		
	TRY{
		CRecordset rs(&m_db);
		rs.Open(CRecordset::dynaset,sql);
		if(rs.IsEOF())					//所选系别没有班级
		{
			if(m_iDepFrm==1)
				m_cClass.Clear();
			else
				m_cSClass.Clear();
		}
		while(!rs.IsEOF())
		{
			CString className;
			rs.GetFieldValue(1,className);
			if(m_iDepFrm==1)
				m_cClass.AddString(className);
			else
				m_cSClass.AddString(className);
			rs.MoveNext();
		}
	}
	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
}

⌨️ 快捷键说明

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