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

📄 ccdlg.cpp

📁 学生请假管理系统,用ADO写的,很不错的代码,界面美观,大方请使用
💻 CPP
字号:
// RecordsDlg.cpp : implementation file
//

#include "stdafx.h"
#include "cc.h"
#include "ccdlg.h"

#include "LogonDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
extern CCcApp theApp;

CCcDlg::CCcDlg(CWnd* pParent /*=NULL*/): CDialog(CCcDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCcDlg)
	m_radio =0;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CCcDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCcDlg)
	DDX_Control(pDX, IDC_LIST, m_list);
	DDX_Control(pDX, IDC_RADIO4, m_radio4);
	DDX_Radio(pDX, IDC_RADIO4, m_radio);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CCcDlg, CDialog)
//{{AFX_MSG_MAP(CCcDlg)
ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
ON_BN_CLICKED(IDC_BUTTON_EDIT, OnButtonEdit)
ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
ON_NOTIFY(NM_DBLCLK, IDC_LIST, OnDblclkList)
ON_BN_CLICKED(IDC_BUTTON_SEARCH, OnButtonSearch)
ON_BN_CLICKED(IDC_RADIO4, OnRadio4)
	ON_COMMAND(ID_MENU_SETFLAG, OnMenuSetflag)
	ON_NOTIFY(NM_RCLICK, IDC_LIST, OnRclickList)
	ON_COMMAND(ID_MENU_DELETE, OnMenuDelete)
	ON_COMMAND(ID_MENU_ADDNEW, OnMenuAddnew)
	ON_COMMAND(ID_MENU_MODIFY, OnMenuModify)
ON_BN_CLICKED(IDC_RADIO5, OnRadio4)
ON_BN_CLICKED(IDC_RADIO6, OnRadio4)
	ON_COMMAND(ID_MENU_ADMIN, OnMenuAdmin)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCcDlg message handlers

BOOL CCcDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);
	
	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}
	
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

/*-----------------------------------------------------------*/	
	m_font1.CreateFont(12, 0,0,0,FW_BOLD, 0,0,0,
		DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
		DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "宋体");
/*	m_font2.CreateFont(14, 0,0,0,FW_NORMAL, 0,0,0,
		DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
		DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "宋体");
*/	
	m_imagelist.Create(16,16,TRUE,2,2);
	m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_YES));
	m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_NO));
	m_list.SetImageList(&m_imagelist,LVSIL_SMALL);
	
	m_list.SetExtendedStyle(0x21);
//	m_list.SetFont(&m_font2);
	m_list.GetHeaderCtrl()->SetFont(&m_font1);
	m_list.SetBkColor(RGB(247,247,255));
	m_list.SetTextColor(RGB(0,0,255));
	m_list.SetTextBkColor(RGB(247,247,255));
	
	m_list.InsertColumn(0,"批准",LVCFMT_LEFT,50);
	m_list.InsertColumn(1,"姓名",LVCFMT_CENTER,70);
	m_list.InsertColumn(2,"学院系别",LVCFMT_CENTER,110);
	m_list.InsertColumn(3,"请假理由",LVCFMT_CENTER,200);
	m_list.InsertColumn(4,"开始日期",LVCFMT_CENTER,70);
	m_list.InsertColumn(5,"结束日期",LVCFMT_CENTER,70);
	m_list.InsertColumn(6,"备注",LVCFMT_CENTER,80); 
	
	m_radio4.SetCheck(1); 	//设置显示所有记录的按钮为选中状态。

	CLogonDlg dlglogon;
	if(dlglogon.DoModal()==IDOK)
	{
		List("SELECT * FROM Records"); 	//显示此用户的数据
	}	
	return TRUE;	
}




void CCcDlg::List(CString sql)  //将SQL语句查询的结果显示在列表框中
{
	m_list.DeleteAllItems(); 
	
	int nItem=0;
	try
	{
		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
		if(!m_pRecordset->adoEOF) //如果记录不为空
		{	
			while(!m_pRecordset->adoEOF)
			{	
				if(strcmp((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("YorN"),"Y")==0) //是否批准
					nItem=m_list.InsertItem(0xffff,"Y",0);
				else
					nItem=m_list.InsertItem(0xffff,"N",1);				
				m_list.SetItemText(nItem,1,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Name"));
				m_list.SetItemText(nItem,2,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("College"));
				m_list.SetItemText(nItem,3,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Reason"));
				m_list.SetItemText(nItem,4,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("date1"));
				m_list.SetItemText(nItem,5,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("date2"));
				m_list.SetItemText(nItem,6,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Remark"));
				m_pRecordset->MoveNext();
			}
		}
		m_pRecordset->Close();
	}
	catch (_com_error e)
	{						
		CATCH_ERROR;
		return;
	}
	
	
	CString strTitle;  
	strTitle.Format("学生请假管理系统  共有%d条记录",nItem+1);
	SetWindowText(strTitle);
}


#include "AddDlg.h"
void CCcDlg::OnButtonAdd()  //添加请假记录
{  		
	CAddDlg dlgadd;
	dlgadd.m_bAddOrModify=0; //添加记录的标志 
	
	dlgadd.DoModal();
}


#include "SearchDlg.h"
void CCcDlg::OnButtonSearch() //查询记录
{	
	CSearchDlg sd;
	sd.DoModal();

}


void CCcDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult)  //双击list控件的函数
{
	
	POSITION pos = m_list.GetFirstSelectedItemPosition(); 	//得到当前选中的行
	if(pos) 	//如果选中一行
	{
		int nItem = m_list.GetNextSelectedItem(pos);
	
		CAddDlg dlgadd;
		dlgadd.m_bAddOrModify=1;   //修改记录的标志
		
		if(m_list.GetItemText(nItem,0)=="N")
			dlgadd.m_bPassed=false;
		else
			dlgadd.m_bPassed=true;

		dlgadd.m_strName=m_list.GetItemText(nItem,1);
		dlgadd.m_strCollege		=m_list.GetItemText(nItem,2);
		dlgadd.m_strReason	=m_list.GetItemText(nItem,3);
		dlgadd.m_date1	=m_list.GetItemText(nItem,4);
		dlgadd.m_date2	=m_list.GetItemText(nItem,5);
		dlgadd.m_strRemark	=m_list.GetItemText(nItem,6);
		
		dlgadd.DoModal();			
	} 	
	*pResult = 0;
}


void CCcDlg::OnButtonEdit() 
{	
	POSITION pos = m_list.GetFirstSelectedItemPosition(); 
	if(pos) 	//如果选中一行
	{
		int nItem = m_list.GetNextSelectedItem(pos);
	
		CAddDlg dlgadd;
		dlgadd.m_bAddOrModify=1;   //修改
		
		if(m_list.GetItemText(nItem,0)=="N")
			dlgadd.m_bPassed=false;
		else
			dlgadd.m_bPassed=true;

		dlgadd.m_strName=m_list.GetItemText(nItem,1);
		dlgadd.m_strCollege		=m_list.GetItemText(nItem,2);
		dlgadd.m_strReason	=m_list.GetItemText(nItem,3);
		dlgadd.m_date1	=m_list.GetItemText(nItem,4);
		dlgadd.m_date2	=m_list.GetItemText(nItem,5);
		dlgadd.m_strRemark	=m_list.GetItemText(nItem,6);
		
		dlgadd.DoModal();			
	} 
}


void CCcDlg::OnButtonDel()  //删除一条记录
{
	try
	{
		POSITION pos = m_list.GetFirstSelectedItemPosition();
		if(pos) 	//如果选中一行,则生成动态的sql语句
		{
			if(MessageBox("你确定要删除此记录吗?","警告",MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2)==IDYES)
			{
				int nItem = m_list.GetNextSelectedItem(pos);
				theApp.m_strSQL="DELETE FROM Records WHERE name='"
					+m_list.GetItemText(nItem,1)+"' and College='"
					+m_list.GetItemText(nItem,2)+"' and Reason='"
					+m_list.GetItemText(nItem,3)+"' and date1='"
					+m_list.GetItemText(nItem,4)+"' and date2='"
					+m_list.GetItemText(nItem,5)+"' and Remark='"
					+m_list.GetItemText(nItem,6)+"'";
				_variant_t RecordsAffected;
				
				theApp.m_pConnection->Execute((_bstr_t)theApp.m_strSQL,&RecordsAffected,adCmdText); 	//执行此sql语句
				List("SELECT * FROM Records");
			}
		}
		else
			AfxMessageBox("请选择一行数据!");
	}
	catch(_com_error e)
	{
		CATCH_ERROR;
	}
}

//显示三种的状态。
//0:显示所有记录
//1:显示未批准记录
//2:显示已批准记录	 
void CCcDlg::OnRadio4() 
{
	UpdateData();
 	switch(m_radio)
	{
	case 0:
		theApp.m_strSQL="SELECT * FROM  Records";
		break;
	case 1:
		theApp.m_strSQL="SELECT * FROM Records WHERE  YorN='N'";
		break;
	case 2:
		theApp.m_strSQL="SELECT * FROM Records  WHERE YorN='Y'";
		break;
	}
	
	List(theApp.m_strSQL); 	//根据上面的动态生成的sql语句列出数据
}




BOOL CCcDlg::PreTranslateMessage(MSG* pMsg) 
{
	
    if(pMsg -> message == WM_KEYDOWN)
	{
        if(pMsg -> wParam == VK_ESCAPE)
		{
			SetFocus();
			return TRUE;
		}
		if(pMsg -> wParam == VK_RETURN)
		{
			SetFocus();
			return TRUE;
		}
	}	
	
	
	return CDialog::PreTranslateMessage(pMsg);
}


void CCcDlg::OnRclickList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	POSITION pos = m_list.GetFirstSelectedItemPosition(); 	//得到当前选中的行
	if(pos)				
	{
		int nItem = m_list.GetNextSelectedItem(pos);
			
		CPoint pt;
		::GetCursorPos(&pt);
		COfficeXPMenu m_menu;
		m_menu.LoadMenu(IDR_MENU_LIST);
		COfficeXPMenu::SetType(TYPE_XP); //设置菜单的风格,(TYPE_XP,  TYPE_NORMAL)	
		
		COfficeXPMenu *psub = (COfficeXPMenu *)m_menu.GetSubMenu(0); 	
		DWORD dwID =psub->TrackPopupMenu(TPM_RIGHTBUTTON,pt.x,pt.y ,this); 
		m_menu.DestroyMenu();	
	}
		
	*pResult = 0;
}


void CCcDlg::OnMenuSetflag() 
{
	//暂时没有。。
}


void CCcDlg::OnMenuDelete() 
{

	this->OnButtonDel();
}

void CCcDlg::OnMenuAddnew() 
{
	this->OnButtonAdd();
}

void CCcDlg::OnMenuModify() 
{

	this->OnButtonEdit();
}

void CCcDlg::OnMenuAdmin() 
{
	//设置管理员的密码。。。

}

⌨️ 快捷键说明

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