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

📄 studentview.cpp

📁 基于ODBC的数据库模式
💻 CPP
字号:
// studentView.cpp : implementation of the CStudentView class
//

#include "stdafx.h"
#include "student.h"
#include"Select.h"

#include "studentSet.h"
#include "studentDoc.h"
#include "studentView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CStudentView

IMPLEMENT_DYNCREATE(CStudentView, CRecordView)

BEGIN_MESSAGE_MAP(CStudentView, CRecordView)
	//{{AFX_MSG_MAP(CStudentView)
	ON_BN_CLICKED(IDC_SHOW_BUTTON, OnShowButton)
	ON_BN_CLICKED(IDC_ADD_BUTTON2, OnAddButton2)
	ON_BN_CLICKED(IDC_DELETE_BUTTON, OnDeleteButton)
	ON_BN_CLICKED(IDC_MODIFY_BUTTON, OnModifyButton)
	ON_BN_CLICKED(IDC_QUERY_BUTTON, OnQueryButton)
	ON_BN_CLICKED(IDC_SORT_BUTTON, OnSortButton)

	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStudentView construction/destruction

CStudentView::CStudentView()
	: CRecordView(CStudentView::IDD)
{
	//{{AFX_DATA_INIT(CStudentView)
		// NOTE: the ClassWizard will add member initialization here
	m_pSet = NULL;
	//}}AFX_DATA_INIT
	// TODO: add construction code here
   
}

CStudentView::~CStudentView()
{
}

void CStudentView::DoDataExchange(CDataExchange* pDX)
{
	CRecordView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStudentView)
	DDX_Control(pDX, IDC_RECORD_LIST, m_Record_List);
	//}}AFX_DATA_MAP
}

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

	return CRecordView::PreCreateWindow(cs);
}

void CStudentView::OnInitialUpdate()
{
	m_pSet = &GetDocument()->m_studentSet;
	CRecordView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();
	m_Record_List.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	LV_COLUMN h;
	h.mask=LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;
	h.fmt=LVCFMT_CENTER;
	h.cx=90;

	h.pszText="学号";
	m_Record_List.InsertColumn(0,&h);
	 
	h.pszText="姓名";
	m_Record_List.InsertColumn(1,&h);

	h.pszText="数学";
	m_Record_List.InsertColumn(2,&h);

	h.pszText="语文";
	m_Record_List.InsertColumn(3,&h);

	h.pszText="英语";
	m_Record_List.InsertColumn(4,&h);
	OnShowButton();

}

/////////////////////////////////////////////////////////////////////////////
// CStudentView printing

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CStudentView diagnostics

#ifdef _DEBUG
void CStudentView::AssertValid() const
{
	CRecordView::AssertValid();
}

void CStudentView::Dump(CDumpContext& dc) const
{
	CRecordView::Dump(dc);
}

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

/////////////////////////////////////////////////////////////////////////////
// CStudentView database support
CRecordset* CStudentView::OnGetRecordset()
{
	return m_pSet;
}


/////////////////////////////////////////////////////////////////////////////
// CStudentView message handlers

void CStudentView::OnShowButton() 
{
	// TODO: Add your control notification handler code here
    m_Record_List.DeleteAllItems();
	CString s;
	i=0;
	m_pSet->MoveFirst();
	while(!m_pSet->IsEOF())
	{
		s.Format("%d",m_pSet->m_column1);
		m_Record_List.InsertItem(i,s);
		m_Record_List.SetItemText(i,1,m_pSet->m_column2);
        s.Format("%d",m_pSet->m_column3);
		m_Record_List.SetItemText(i,2,s);
		s.Format("%d",m_pSet->m_column4);
		m_Record_List.SetItemText(i,3,s);
		s.Format("%d",m_pSet->m_column5);
		m_Record_List.SetItemText(i,4,s);

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



void CStudentView::OnAddButton2() 
{
	// TODO: Add your control notification handler code here

    CAdddlg dlg;	
	CString s;
	if(dlg.DoModal()==IDOK)
	{
		m_pSet->AddNew();
		m_pSet->m_column1=atol(dlg.m_num);
		m_pSet->m_column2=dlg.m_name;
		m_pSet->m_column3=atol(dlg.m_math);
		m_pSet->m_column4=atol(dlg.m_chi);
		m_pSet->m_column5=atol(dlg.m_eng);
		
		s.Format("%d",m_pSet->m_column1);
		m_Record_List.InsertItem(i,s);
		m_Record_List.SetItemText(i,1,m_pSet->m_column2);
		s.Format("%d",m_pSet->m_column3);
		m_Record_List.SetItemText(i,2,s);
		s.Format("%d",m_pSet->m_column4);
		m_Record_List.SetItemText(i,3,s);
		s.Format("%d",m_pSet->m_column5);
		m_Record_List.SetItemText(i,4,s);
		m_pSet->Update();

		i++;
	}
}

void CStudentView::OnDeleteButton() 
{
	// TODO: Add your control notification handler code here
	CString s;
	m_pSet->MoveFirst();
	int index=m_Record_List.GetNextItem(-1,LVNI_SELECTED);
	if(index!=-1)
	{	
		while(!m_pSet->IsEOF())
		{
			s.Format("%ld",m_pSet->m_column1);
			if(s==m_Record_List.GetItemText(index,0))
			{
				m_pSet->Delete();
				i--;
			}
			m_pSet->MoveNext();
		}
		MessageBox("记录已经删除!");
		m_Record_List.DeleteItem(index);
	}
	else	
	MessageBox("请选中删除记录!");
}
	


void CStudentView::OnModifyButton() 
{
	// TODO: Add your control notification handler code here
   	CString s;
	int j=0;
	CAdddlg dlg;
	m_pSet->MoveFirst();
	int index=m_Record_List.GetNextItem(-1,LVNI_SELECTED);
	if(index!=-1)
	{
		dlg.m_num=m_Record_List.GetItemText(index,0);
		dlg.m_name=m_Record_List.GetItemText(index,1);
		dlg.m_math=m_Record_List.GetItemText(index,2);
		dlg.m_chi=m_Record_List.GetItemText(index,3);
		dlg.m_eng=m_Record_List.GetItemText(index,4);
		if(dlg.DoModal()==IDOK)
			{
				while(!m_pSet->IsEOF())
				{
					if(m_pSet->m_column1==atol(dlg.m_num))
						{
						m_pSet->Edit();
						m_pSet->m_column1=atoi(dlg.m_num);
						m_pSet->m_column2=dlg.m_name;
						m_pSet->m_column3=atoi(dlg.m_math);
						m_pSet->m_column4=atoi(dlg.m_chi);
						m_pSet->m_column5=atoi(dlg.m_eng);
						m_pSet->Update();
					
						MessageBox("记录已经修改!");
						m_Record_List.DeleteItem(j);
						s.Format("%d",m_pSet->m_column1);
						m_Record_List.InsertItem(j,s);
						m_Record_List.SetItemText(j,1,m_pSet->m_column2);
						s.Format("%d",m_pSet->m_column3);
						m_Record_List.SetItemText(j,2,s);
						s.Format("%d",m_pSet->m_column4);
						m_Record_List.SetItemText(j,3,s);
						s.Format("%d",m_pSet->m_column5);
						m_Record_List.SetItemText(j,4,s);
						break;
						}	
					else
						{
						j++;
						m_pSet->MoveNext();
						}
				}
		}
	}
		else	
		MessageBox("请选中修改记录!");		

}



void CStudentView::OnQueryButton() 
{
	// TODO: Add your control notification handler code here
    CString s;
    CSelect dlg;
    bool b=0;
	int j=0;
	m_pSet->MoveFirst();
	if(dlg.DoModal()==IDOK)
	{
		m_Record_List.DeleteAllItems();
		int j=0;
		while(!m_pSet->IsEOF())
		{
			if(m_pSet->m_column2==dlg.m_name)
			{
				s.Format("%d",m_pSet->m_column1);
		        m_Record_List.InsertItem(j,s);
		        m_Record_List.SetItemText(j,1,m_pSet->m_column2);
		    	s.Format("%d",m_pSet->m_column3);
				m_Record_List.SetItemText(j,2,s);
				s.Format("%d",m_pSet->m_column4);
				m_Record_List.SetItemText(j,3,s);
				s.Format("%d",m_pSet->m_column5);
				m_Record_List.SetItemText(j,4,s);
				j++;
			}
			m_pSet->MoveNext();
		}
		if(!j)MessageBox("你所要的记录不存在!");
	}


}
	


void CStudentView::OnSortButton() 
{
	// TODO: Add your control notification handler code here
	CSort dlg;
	if(dlg.DoModal()==IDOK)
	{
		m_Record_List.DeleteAllItems();
		m_pSet->m_strSort=dlg.m_Getstring;
		m_pSet->Requery();//重新建立记录集时使用 
		OnShowButton();
	}
}


void CStudentView::OnDraw(CDC* pDC) 
{
	
	// TODO: Add your specialized code here and/or call the base class
	CStudentDoc*pDoc=GetDocument();
	ASSERT_VALID(pDoc);
	CDC MemDC;
	MemDC.CreateCompatibleDC(NULL);
	MemDC.SelectObject(pDoc->m_Bitmap);
	pDC->BitBlt(0,0,pDoc->m_nWidth,pDoc->m_nHeight,&MemDC,0,0,SRCCOPY);

	
}

⌨️ 快捷键说明

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