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

📄 memberview.cpp

📁 VC大作业
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// memberView.cpp : implementation of the CMemberView class
//

#include "stdafx.h"
#include "member.h"

#include "memberDoc.h"
#include "memberView.h"
#include "MainFrm.h"
#include "MemberReSet.h"
#include "MemberDialog.h"
#include "MemberEditDlg.h"
#include "ScoreDlg.h"
#include "ScoreReSet.h"
#include "MemberAdd.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMemberView

IMPLEMENT_DYNCREATE(CMemberView, CListView)

BEGIN_MESSAGE_MAP(CMemberView, CListView)
	//{{AFX_MSG_MAP(CMemberView)
	ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CListView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CListView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CListView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMemberView construction/destruction

CMemberView::CMemberView()
{
	// TODO: add construction code here

}

CMemberView::~CMemberView()
{
}

BOOL CMemberView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
	//设置CListCtrl的格式为:LVS_REPORT并且LVS_SINGLESEL
	cs.style|=LVS_REPORT|LVS_SINGLESEL;

	return CListView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMemberView drawing

void CMemberView::OnDraw(CDC* pDC)
{
	CMemberDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

void CMemberView::OnInitialUpdate()
{
	//创建一个CListCtrl指针
	CListCtrl *ctl;
	ctl=&GetListCtrl(); //指向CListView的CListCtrl
	//表格风格
	ctl->SetExtendedStyle(ctl->GetExtendedStyle()|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);   
	//利用CLisrCtrl设置列的题头
	ctl->InsertColumn(0,"学号",LVCFMT_LEFT,100);
	ctl->InsertColumn(1,"姓名",LVCFMT_LEFT,100);
	ctl->InsertColumn(2,"性别",LVCFMT_LEFT,80);
	ctl->InsertColumn(4,"学院",LVCFMT_LEFT,100);
	ctl->InsertColumn(5,"专业",LVCFMT_LEFT,100);
	ctl->InsertColumn(6,"所在年级",LVCFMT_LEFT,100);
	ctl->InsertColumn(7,"联系号码",LVCFMT_LEFT,100);
	ctl->InsertColumn(8,"寝室地址",LVCFMT_LEFT,200);
	OnPaint();
	CListView::OnInitialUpdate();
	//获取CMainFrame的指针
	CMainFrame *m_Frm=(CMainFrame*)::AfxGetMainWnd();
	//将CMainFrame的m_ListViet指针变量指向CMemberView的实列
	m_Frm->m_ListView=this;
	// TODO: You may populate your ListView with items by directly accessing
	//  its list control through a call to GetListCtrl().
}

/////////////////////////////////////////////////////////////////////////////
// CMemberView printing

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CMemberView diagnostics

#ifdef _DEBUG
void CMemberView::AssertValid() const
{
	CListView::AssertValid();
}

void CMemberView::Dump(CDumpContext& dc) const
{
	CListView::Dump(dc);
}

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

/////////////////////////////////////////////////////////////////////////////
// CMemberView message handlers

void CMemberView::RemoveAll()
{
	//增加指针变量指向ListView的CListCtrl	
	CListCtrl *ctl;
	ctl=&GetListCtrl();
	//删除CListCtrl中的所有记录
	ctl->DeleteAllItems();

}
//strSearch查询条件  strMember关键字
void CMemberView::ListMember(CString strSearch,CString strMember)
{
   //前此输出的用户记录
	RemoveAll();
   //建立一个指针,用以操作ListCtrl输出用户记录
	CListCtrl *ctl;
	ctl=&GetListCtrl();
	//创建CMemberReSet的实例
	CMemberReSet m_MemberReSet;
	//记录用户序号
	int i=0;
	//定义一个变量来保存"%"以便设置SQL语句
	char chrTemp='%';
	CString strTemp;
	try
	{
		if(m_MemberReSet.IsOpen())
			m_MemberReSet.Close();
		//设置查询条件"MemName=strMemberName"
		if(strMember=="")
		{
			AfxMessageBox("请输入关键字");
		    return;
		}

		if(strSearch=="学号")
		{ 
	        CString str;
		    str.Format("select * from member where MemID = '%s' order by MemID ASC",strMember);
		    m_MemberReSet.Open(CRecordset::snapshot,str,CRecordset::none);
 		}
		else if(strSearch=="姓名")
		{
		    m_MemberReSet.m_strFilter.Format("MemName LIKE '%c%s%c' order by MemID ASC",chrTemp,strMember.operator LPCTSTR(),chrTemp);
	        m_MemberReSet.Open(CRecordset::snapshot,NULL,CRecordset::none);
		}
		else if(strSearch=="学院")
		{
	    	m_MemberReSet.m_strFilter.Format("MemIns = '%s' order by MemID ASC",strMember.operator LPCTSTR());
	    	m_MemberReSet.Open(CRecordset::snapshot,NULL,CRecordset::none);
		}
		else if(strSearch=="专业")
		{
    		m_MemberReSet.m_strFilter.Format("MemSpe LIKE '%c%s%c' order by MemID ASC",chrTemp,strMember.operator LPCTSTR(),chrTemp);
    		m_MemberReSet.Open(CRecordset::snapshot,NULL,CRecordset::none);
		}
		else if(strSearch=="年级")
		{
    		m_MemberReSet.m_strFilter.Format("MemYear LIKE '%c%s%c' order by MemID ASC",chrTemp,strMember.operator LPCTSTR(),chrTemp);
    		m_MemberReSet.Open(CRecordset::snapshot,NULL,CRecordset::none);
		}
		else if(strSearch=="年级tree")
		{
	    	m_MemberReSet.m_strFilter.Format("MemYear = %s order by MemID ASC",strMember.operator LPCTSTR());
	    	m_MemberReSet.Open(CRecordset::snapshot,NULL,CRecordset::none);
		}
		else
		{
			AfxMessageBox("条件选择错误");
		    return;
		}

        //输出匹配上查询到的用户记录,直到记录为空
		while(!m_MemberReSet.IsEOF())
		{
		    ctl->InsertItem(i,m_MemberReSet.m_MemID);
			ctl->SetItemText(i,1,m_MemberReSet.m_MemName);
			ctl->SetItemText(i,2,m_MemberReSet.m_MemSex);
			ctl->SetItemText(i,3,m_MemberReSet.m_MemIns);
			ctl->SetItemText(i,4,m_MemberReSet.m_MemSpe);
			ctl->SetItemText(i,5,m_MemberReSet.m_MemYear);
			ctl->SetItemText(i,6,m_MemberReSet.m_MemPhone);
			ctl->SetItemText(i,7,m_MemberReSet.m_MemBed);


            m_MemberReSet.MoveNext();
		}
		if(m_MemberReSet.IsOpen())
			m_MemberReSet.Close();
	}
	catch(CDBException *e)
	{
		e->Delete();
		return;
	}
}

void CMemberView::EditCurUser()
{
	//建立一个指针,用以操作ListCtrl输出用户记录
	CListCtrl *ctl;
	ctl=&GetListCtrl();
	//寻找当前选中的记录的位置
	POSITION pos=ctl->GetFirstSelectedItemPosition();
	if (pos==NULL)
	{
		//如果没有选择记录,则提示并退出
		AfxMessageBox("请先选择一条信息!");
		return;
	}
	//获取当前记录的位置游标
	int m_CurUser=ctl->GetNextSelectedItem(pos);
	
	//创建一个MemberEditDlg的实例
	CMemberEditDlg m_MemberEditDlg;
	CMemberReSet m_MemberReSet;
	//创建一个临时字符串来保存当前用户信息
	char chrTemp[201] = {'\0'};
        //查找学号
	ctl->GetItemText(m_CurUser,0,chrTemp,sizeof(char[20]));
    	if(m_MemberReSet.IsOpen())
			m_MemberReSet.Close();
	m_MemberReSet.m_strFilter.Format("MemID LIKE '%s'",chrTemp);
	m_MemberReSet.Open(CRecordset::snapshot,NULL,CRecordset::none);
	//输出匹配上条件用户记录,直到记录为空
    if(m_MemberReSet.IsOpen() && !m_MemberReSet.IsEOF())
	{	
			//开始显示记录的内容
		m_MemberEditDlg.m_MemID=m_MemberReSet.m_MemID;
        m_MemberEditDlg.m_MemName=m_MemberReSet.m_MemName;
        m_MemberEditDlg.m_MemSex=m_MemberReSet.m_MemSex;
	    m_MemberEditDlg.m_MemBorn=m_MemberReSet.m_MemBorn;
		m_MemberEditDlg.m_MemPolity=m_MemberReSet.m_MemPolity;
		m_MemberEditDlg.m_MemNative=m_MemberReSet.m_MemNative;
		m_MemberEditDlg.m_MemPlace=m_MemberReSet.m_MemPlace;
		m_MemberEditDlg.m_MemIns=m_MemberReSet.m_MemIns;
		m_MemberEditDlg.m_MemSpe=m_MemberReSet.m_MemSpe;
		m_MemberEditDlg.m_MemSchool=m_MemberReSet.m_MemSchool;
		m_MemberEditDlg.m_MemBed=m_MemberReSet.m_MemBed;
		m_MemberEditDlg.m_MemEmail=m_MemberReSet.m_MemEmail;
		m_MemberEditDlg.m_MemYear=m_MemberReSet.m_MemYear;
		m_MemberEditDlg.m_MemCard=m_MemberReSet.m_MemCard;
		m_MemberEditDlg.m_MemPhone=m_MemberReSet.m_MemPhone;
		m_MemberEditDlg.m_MemHadd=m_MemberReSet.m_MemHadd;
		m_MemberEditDlg.m_MemHphone=m_MemberReSet.m_MemHphone;
		m_MemberEditDlg.m_Remark=m_MemberReSet.m_Remark;
     }
	if(m_MemberEditDlg.DoModal()!=IDOK)
	{
		//如果用户选择取消按钮,则退出
		return;
	}
	UpdateData(FALSE);
	if(MessageBox("确定修改记录?","修改确认",MB_YESNO|MB_ICONQUESTION)==IDYES)
	{
        try
		{
	    	if(m_MemberReSet.IsOpen())
		    	m_MemberReSet.Close();
	    	//设置查询条件"MemID=chrTemp"
		    m_MemberReSet.m_strFilter.Format("MemID='%s'",chrTemp);
	       	m_MemberReSet.Open(CRecordset::snapshot,NULL,CRecordset::none);
	     	//如果用户记录存在,则进行修改操作
	    	if(m_MemberReSet.IsOpen()&&!m_MemberReSet.IsEOF())
			{	
		    	//设置编辑当前记录
		    	m_MemberReSet.Edit();
		    	//开始编辑该条记录的内容
		    	m_MemberReSet.m_MemID=m_MemberEditDlg.m_MemID;
                m_MemberReSet.m_MemName=m_MemberEditDlg.m_MemName;
                m_MemberReSet.m_MemSex=m_MemberEditDlg.m_MemSex;
		    	m_MemberReSet.m_MemBorn=m_MemberEditDlg.m_MemBorn;
		    	m_MemberReSet.m_MemPolity=m_MemberEditDlg.m_MemPolity;
		    	m_MemberReSet.m_MemNative=m_MemberEditDlg.m_MemNative;

⌨️ 快捷键说明

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