studentinfoview.cpp

来自「学生信息管理系统」· C++ 代码 · 共 335 行

CPP
335 行
字号
// StudentInfoView.cpp : implementation of the CStudentInfoView class
//

#include "stdafx.h"
#include "StudentInfo.h"
#include "MainFrm.h"
#include "StudentInfoView.h"
#include "ModifyPassDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CStudentInfoView

IMPLEMENT_DYNCREATE(CStudentInfoView, CFormView)

BEGIN_MESSAGE_MAP(CStudentInfoView, CFormView)
	//{{AFX_MSG_MAP(CStudentInfoView)
	ON_WM_DESTROY()
	ON_WM_CREATE()
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_REFRESH, OnRefresh)
	ON_BN_CLICKED(IDC_ADD, OnAdd)
	ON_BN_CLICKED(IDC_MODIFY, OnModify)
	ON_BN_CLICKED(IDC_DELETE, OnDelete)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStudentInfoView construction/destruction

CStudentInfoView::CStudentInfoView()
	: CFormView(CStudentInfoView::IDD)
{
	//{{AFX_DATA_INIT(CStudentInfoView)
	m_eStudentID = _T("");
	m_eStudentName = _T("");
	//}}AFX_DATA_INIT
	// TODO: add construction code here
    m_bFirstTime = FALSE;
	m_bExist = FALSE;
	m_pResult.CreateInstance(__uuidof(Recordset));
}

CStudentInfoView::~CStudentInfoView()
{
}

void CStudentInfoView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStudentInfoView)
	DDX_Control(pDX, IDC_COMBO1, m_ComSex);
	DDX_Control(pDX, IDC_LSTINFO, m_listInfo);
	DDX_Text(pDX, IDC_ESTUDENTID, m_eStudentID);
	DDX_Text(pDX, IDC_ESTUDENTNAME, m_eStudentName);
	//}}AFX_DATA_MAP
}

BOOL CStudentInfoView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}

void CStudentInfoView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	ResizeParentToFit();

}

/////////////////////////////////////////////////////////////////////////////
// CStudentInfoView printing

BOOL CStudentInfoView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CStudentInfoView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CStudentInfoView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

void CStudentInfoView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{

}

/////////////////////////////////////////////////////////////////////////////
// CStudentInfoView diagnostics

#ifdef _DEBUG
void CStudentInfoView::AssertValid() const
{
	CFormView::AssertValid();
}

void CStudentInfoView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CStudentInfoDoc* CStudentInfoView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CStudentInfoDoc)));
	return (CStudentInfoDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CStudentInfoView message handlers

void CStudentInfoView::OnDestroy() 
{	
	CFormView::OnDestroy();

	((CMainFrame*)AfxGetMainWnd())->m_pStudentInfo=NULL;
	delete ((CMainFrame*)AfxGetMainWnd())->m_pStudentInfo;
	
}

int CStudentInfoView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CFormView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	return 0;
}

void CStudentInfoView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	if(!m_bFirstTime)
	{
		if(!m_bExist)
		{
		    m_listInfo.InsertColumn(0,_T("学生ID"),LVCFMT_LEFT);
		    m_listInfo.InsertColumn(1,_T("学生名"),LVCFMT_LEFT);
		    m_listInfo.InsertColumn(2,_T("性别"),  LVCFMT_LEFT);
            for(int i = 0;i < 3;i++)
			{
			    m_listInfo.SetColumnWidth(i,150);
			}

			m_ComSex.AddString("男");
			m_ComSex.AddString("女");
			
			m_bExist = TRUE;
		}
		
		int i = 0;
		_variant_t var; 
		CString strMsg, strStudentID, strStudentName, strSex;
        
		strMsg = "SELECT * FROM student";
		m_pResult = m_pConn.GetRS(strMsg);
		m_pResult->MoveFirst();
		while(!m_pResult->adoEOF)
		{
            char buff[10];
			int nItem = m_listInfo.InsertItem(LVIF_TEXT|LVIF_STATE,i,itoa(i,buff,10),LVIS_SELECTED,
				        LVIS_SELECTED,0,0);
			var = m_pResult->GetCollect("studentID");
			if(var.vt != VT_NULL)
			{
                strStudentID = (LPCSTR)_bstr_t(var);
			    m_listInfo.SetItemText(nItem,0,strStudentID);
			}

			var = m_pResult->GetCollect("studentName");
			if(var.vt != VT_NULL)
			{
                strStudentName = (LPCSTR)_bstr_t(var);
			    m_listInfo.SetItemText(nItem,1,strStudentName);
			}

			var = m_pResult->GetCollect("studentSex");
			if(var.vt != VT_NULL)
			{
                strSex = (LPCSTR)_bstr_t(var);
				if(strSex == "1")
				{
			        m_listInfo.SetItemText(nItem,2,"男");
				}
				else
				{
                    m_listInfo.SetItemText(nItem,2,"女");
				}
			}

			i++;
			m_pResult->MoveNext();
		}

		m_bFirstTime = TRUE;
	}
}

void CStudentInfoView::OnRefresh() 
{
	m_listInfo.DeleteAllItems();
    m_bFirstTime = FALSE;
	Invalidate();
}

void CStudentInfoView::OnAdd() 
{
    UpdateData(TRUE);
    CString strMsg;
    
	strMsg = "SELECT * FROM student WHERE studentID = " + m_eStudentID;
	m_pResult = m_pConn.GetRS(strMsg);
	if(m_pResult->adoEOF)
	{
		CString strInfo;
		if(m_ComSex.GetCurSel() == 0)
		{
			strInfo = "1";
		}
		else
		{
			strInfo = "0";
		}

		strMsg = "INSERT INTO student VALUES(" + m_eStudentID + ",'" + m_eStudentName + "'," + 
			     strInfo + ",'')";
		if(m_pConn.Execute(strMsg))
		{
			AfxMessageBox("数据插入成功!");
			OnRefresh();
			if(MessageBox("用户还为设密码,是否设置!","人事管理系统",MB_YESNO|MB_ICONQUESTION)== IDYES)
			{
                CModifyPassDlg dlg;
				dlg.m_eUserName = m_eStudentName;
				dlg.m_strStuID = m_eStudentID;
				dlg.DoModal();
			}
		}
		else
		{
			AfxMessageBox("数据插入失败!");
		}
	}
	else
	{
		AfxMessageBox("你输入的ID号以存在,你重新输入新的ID号!");
	}
	
}

void CStudentInfoView::OnModify() 
{
    UpdateData(TRUE);
    CString strMsg;
    
	strMsg = "SELECT * FROM student WHERE studentID = " + m_eStudentID;
	m_pResult = m_pConn.GetRS(strMsg);
	if(!m_pResult->adoEOF)
	{
		CString strInfo;
		if(m_ComSex.GetCurSel() == 0)
		{
			strInfo = "1";
		}
		else
		{
			strInfo = "0";
		}

		strMsg = "UPDATE student SET student.studentName = '" + m_eStudentName + "',student.studentSex = " + 
			     strInfo + " WHERE student.studentID = " + m_eStudentID;
		if(m_pConn.Execute(strMsg))
		{
			AfxMessageBox("数据修改成功!");
			OnRefresh();
		}
		else
		{
			AfxMessageBox("数据修改失败!");
		}
	}
	else
	{
		AfxMessageBox("你输入的ID号不存在,你重新输入新的ID号!");
	}    	
}

void CStudentInfoView::OnDelete() 
{
    UpdateData(TRUE);
    CString strMsg;
    if(MessageBox("你要删除该条记录吗?","人事管理系统",MB_YESNO|MB_ICONQUESTION) == IDYES)
	{
	    strMsg = "SELECT * FROM student WHERE studentID = " + m_eStudentID;
	    m_pResult = m_pConn.GetRS(strMsg);
	    if(!m_pResult->adoEOF)
		{
		    strMsg = "DELETE FROM  student WHERE student.studentID = " + m_eStudentID;
		    if(m_pConn.Execute(strMsg))
			{
			    AfxMessageBox("数据删除成功!");
				OnRefresh();
			}
		    else
			{
			    AfxMessageBox("数据删除失败!");
			} 
		} 
	    else
		{
	    	AfxMessageBox("你输入的ID号不存在,你重新输入新的ID号!");
		}   
	}
}

⌨️ 快捷键说明

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