mydemoview.cpp
来自「一个简单的用户信息管理系统」· C++ 代码 · 共 468 行
CPP
468 行
// MyDemoView.cpp : implementation of the CMyDemoView class
//
#include "stdafx.h"
#include "MyDemo.h"
#include "MyDemoDoc.h"
#include "MyDemoView.h"
#include "addDLG.h"
#include "searchDLG.h"
#include "departDLG.h"
#include "titleDLG.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyDemoView
IMPLEMENT_DYNCREATE(CMyDemoView, CListView)
BEGIN_MESSAGE_MAP(CMyDemoView, CListView)
//{{AFX_MSG_MAP(CMyDemoView)
ON_COMMAND(ID_USER_ADD, OnUserAdd)
ON_COMMAND(ID_USER_EDIT, OnUserEdit)
ON_COMMAND(ID_USER_DEL, OnUserDel)
ON_COMMAND(ID_USER_LIST, OnUserList)
ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
ON_COMMAND(ID_DWXX, OnDwxx)
ON_COMMAND(ID_TITLE, OnTitle)
//}}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()
/////////////////////////////////////////////////////////////////////////////
// CMyDemoView construction/destruction
CMyDemoView::CMyDemoView()
{
// TODO: add construction code here
ctrl=&CMyDemoView::GetListCtrl();
}
CMyDemoView::~CMyDemoView()
{
}
BOOL CMyDemoView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CListView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMyDemoView drawing
void CMyDemoView::OnDraw(CDC* pDC)
{
CMyDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
void CMyDemoView::OnInitialUpdate()
{
ctrl->InsertColumn(0,"用户ID",LVCFMT_LEFT,60);
ctrl->InsertColumn(1,"用户名",LVCFMT_LEFT,100);
ctrl->InsertColumn(2,"密码",LVCFMT_LEFT,50);
ctrl->InsertColumn(3,"权限",LVCFMT_LEFT,60);
ctrl->InsertColumn(4,"性别",LVCFMT_LEFT,60);
ctrl->InsertColumn(5,"住址",LVCFMT_LEFT,60);
ctrl->InsertColumn(6,"单位",LVCFMT_LEFT,60);
ctrl->InsertColumn(7,"电子邮箱",LVCFMT_LEFT,60);
ctrl->InsertColumn(8,"职务",LVCFMT_LEFT,60);
ctrl->InsertColumn(9,"电话",LVCFMT_LEFT,60);
ctrl->InsertColumn(10,"个人介绍",LVCFMT_LEFT,100);
SetWindowLong(ctrl->m_hWnd,GWL_STYLE,WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT);
ctrl->SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_db.Open(_T("Demo02"));
m_rs.m_pDatabase=&m_db;
CListView::OnInitialUpdate();
//ListAllUser();
CMyDemoView::ListAllUser();
// TODO: You may populate your ListView with items by directly accessing
// its list control through a call to GetListCtrl().
}
/////////////////////////////////////////////////////////////////////////////
// CMyDemoView printing
BOOL CMyDemoView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CMyDemoView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CMyDemoView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CMyDemoView diagnostics
#ifdef _DEBUG
void CMyDemoView::AssertValid() const
{
CListView::AssertValid();
}
void CMyDemoView::Dump(CDumpContext& dc) const
{
CListView::Dump(dc);
}
CMyDemoDoc* CMyDemoView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDemoDoc)));
return (CMyDemoDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMyDemoView message handlers
void CMyDemoView::ListAllUser()
{
if(!m_rs.IsOpen())
m_rs.Open();
ctrl->DeleteAllItems();
int i=0;
CString strtemp;
m_rs.MoveLast();
while (!m_rs.IsBOF())
{
strtemp.Format("%d",m_rs.m_UserID);//m_userID是long类型
ctrl->InsertItem(i,strtemp);
ctrl->SetItemText(i,1,m_rs.m_UserName);
ctrl->SetItemText(i,2,m_rs.m_UserPwd);
ctrl->SetItemText(i,3,m_rs.m_UserAble);
ctrl->SetItemText(i,4,m_rs.m_UserSex);
ctrl->SetItemText(i,5,m_rs.m_UserAddr);
ctrl->SetItemText(i,6,m_rs.m_UserDep);
ctrl->SetItemText(i,7,m_rs.m_UserEmail);
ctrl->SetItemText(i,8,m_rs.m_UserTitle);
ctrl->SetItemText(i,9,m_rs.m_UserPhone);
ctrl->SetItemText(i,10,m_rs.m_UserInfo);
m_rs.MovePrev();
}
if(m_rs.IsOpen())
m_rs.Close();
}
void CMyDemoView::OnUserAdd()
{
// TODO: Add your command handler code here
CaddDLG dlg;
if(dlg.DoModal()!=IDOK)
return;
//保存前先判断有无同名用户
if(m_rs.IsOpen())
m_rs.Close();
//匹配变量是字符型,两边加''
m_rs.m_strFilter.Format("UserName = '%s' order by UserID ASC",dlg.m_UserName.operator LPCTSTR());
m_rs.Open();
if(!m_rs.IsEOF())
{AfxMessageBox("同名用户已经存在,请重新输入!",MB_ICONEXCLAMATION);
return;
m_rs.Close();
}
//******************************
try
{
m_rs.AddNew();
m_rs.m_UserName=dlg.m_UserName;
m_rs.m_UserAble = dlg.m_UserAble;
m_rs.m_UserAddr = dlg.m_UserAddr;
m_rs.m_UserDep = dlg.m_UserDep;
m_rs.m_UserEmail = dlg.m_UserEmail;
m_rs.m_UserInfo = dlg.m_UserInfo;
m_rs.m_UserPhone = dlg.m_UserPhone;
m_rs.m_UserPwd = dlg.m_UserPwd;
m_rs.m_UserSex = dlg.m_UserSex;
m_rs.m_UserTitle = dlg.m_UserTitle;
if(m_rs.CanUpdate())
m_rs.Update();
MessageBox("用户信息增加成功!");
}
catch(CDBException* e)
{AfxMessageBox(e->m_strError,MB_ICONEXCLAMATION);
e->Delete();
return;
}
//关闭数据库
m_rs.Close();
//刷新界面显示
CMyDemoView::ListAllUser();
}
void CMyDemoView::OnUserEdit()
{
CaddDLG dlg;
//判断是否选中记录
POSITION pos=ctrl->GetFirstSelectedItemPosition();
if(pos==NULL)
{AfxMessageBox("请先选中一条记录!");
return;
}
//记录当前行的主项目的信息
int m_CurUser=ctrl->GetNextSelectedItem(pos);
//int m_CurUser=ctrl->GetNextItem(-1,LVNI_SELECTED);
//在显示前初始化对话框的内容
// char chrTemp[201] = {'\0'};
//char* chrTemp={'\0'};//函数要求字符型指针,并初始化
//ctrl->GetItemText(m_CurUser,1,chrTemp,sizeof(char[20]));
// dlg.m_UserName=chrTemp;
/*
ctrl->GetItemText(m_CurUser,2,chrTemp,sizeof(char[20]));
dlg.m_UserPwd = chrTemp;
ctrl->GetItemText(m_CurUser,3,chrTemp,sizeof(char[20]));
dlg.m_UserAble = chrTemp;
ctrl->GetItemText(m_CurUser,4,chrTemp,sizeof(char[4]));
dlg.m_UserSex = chrTemp;
ctrl->GetItemText(m_CurUser,5,chrTemp,sizeof(char[50]));
dlg.m_UserAddr = chrTemp;
ctrl->GetItemText(m_CurUser,6,chrTemp,sizeof(char[50]));
dlg.m_UserDep = chrTemp;
ctrl->GetItemText(m_CurUser,7,chrTemp,sizeof(char[50]));
dlg.m_UserEmail = chrTemp;
ctrl->GetItemText(m_CurUser,8,chrTemp,sizeof(char[20]));
dlg.m_UserTitle = chrTemp;
ctrl->GetItemText(m_CurUser,9,chrTemp,sizeof(char[20]));
dlg.m_UserPhone = chrTemp;
ctrl->GetItemText(m_CurUser,10,chrTemp,sizeof(char[200]));
dlg.m_UserInfo = chrTemp;
*/
dlg.m_UserName=ctrl->GetItemText(m_CurUser,1);
dlg.m_UserPwd=ctrl->GetItemText(m_CurUser,2);
dlg.m_UserAble=ctrl->GetItemText(m_CurUser,3);
dlg.m_UserSex=ctrl->GetItemText(m_CurUser,4);
dlg.m_UserAddr=ctrl->GetItemText(m_CurUser,5);
dlg.m_UserDep=ctrl->GetItemText(m_CurUser,6);
dlg.m_UserEmail=ctrl->GetItemText(m_CurUser,7);
dlg.m_UserTitle=ctrl->GetItemText(m_CurUser,8);
dlg.m_UserPhone=ctrl->GetItemText(m_CurUser,9);
dlg.m_UserInfo=ctrl->GetItemText(m_CurUser,10);
//UpdateData(FALSE);
dlg.m_title="修改用户信息";
if(dlg.DoModal()!=IDOK)
return;
//保存修改后的信息
// ctrl->GetItemText(m_CurUser,0,chrTemp,sizeof(char[20]));
//int m_id=atoi(chrTemp);
CString strm_id;
strm_id=ctrl->GetItemText(m_CurUser,0);
int m_id=atoi(strm_id);
//定义表中的记录
if(m_rs.IsOpen())
m_rs.Close();
m_rs.m_strFilter.Format("UserID= %d order by UserID",m_id);
m_rs.Open();
if(m_rs.IsEOF())
{m_rs.Close();
AfxMessageBox("没有该记录,不能修改!");
}
try
{
m_rs.Edit();
//把对话框上的值赋给数据库
m_rs.m_UserAble = dlg.m_UserAble;
m_rs.m_UserAddr = dlg.m_UserAddr;
m_rs.m_UserDep = dlg.m_UserDep;
m_rs.m_UserEmail = dlg.m_UserEmail;
m_rs.m_UserInfo = dlg.m_UserInfo;
m_rs.m_UserName = dlg.m_UserName;
m_rs.m_UserPhone = dlg.m_UserPhone;
m_rs.m_UserPwd = dlg.m_UserPwd;
m_rs.m_UserSex = dlg.m_UserSex;
m_rs.m_UserTitle = dlg.m_UserTitle;
if(m_rs.CanUpdate())
m_rs.Update();
AfxMessageBox("修改成功!");
}
catch(CDBException* e)
{
AfxMessageBox(e->m_strError,MB_ICONEXCLAMATION);
e->Delete();
}
//将用户信息及时更新到ListCtrl中
ctrl->SetItemText(m_CurUser,1,dlg.m_UserName);
ctrl->SetItemText(m_CurUser,2,dlg.m_UserPwd);
ctrl->SetItemText(m_CurUser,3,dlg.m_UserAble);
ctrl->SetItemText(m_CurUser,4,dlg.m_UserSex);
ctrl->SetItemText(m_CurUser,5,dlg.m_UserAddr);
ctrl->SetItemText(m_CurUser,6,dlg.m_UserDep);
ctrl->SetItemText(m_CurUser,8,dlg.m_UserTitle);
ctrl->SetItemText(m_CurUser,7,dlg.m_UserEmail);
ctrl->SetItemText(m_CurUser,9,dlg.m_UserPhone);
ctrl->SetItemText(m_CurUser,10,dlg.m_UserInfo);
}
void CMyDemoView::OnUserDel()
{
POSITION pos=ctrl->GetFirstSelectedItemPosition();
if(pos==NULL)
{AfxMessageBox("请选中一条记录!");
return;
}
int m_CurUser=ctrl->GetNextSelectedItem(pos);
char chartemp[21]={'\0'};
ctrl->GetItemText(m_CurUser,0,chartemp,sizeof(char[20]));
int m_id=atoi(chartemp);
m_rs.m_strFilter.Format("UserID = %d order by UserID",m_id);
m_rs.Open();
if(m_rs.IsEOF())
{AfxMessageBox("没有该记录!");
return;
}
//匹配后台数据库,在表中删除该记录信息
if(AfxMessageBox("您确认要删除该记录吗?一旦删除则永久不能恢复!",MB_YESNO|MB_ICONEXCLAMATION)==IDYES)
{
try{
m_rs.Delete();
}
catch(CDBException* e)
{e->ReportError();
e->Delete();
}
//删除视图显示
ctrl->DeleteItem(m_CurUser);
}
}
void CMyDemoView::OnUserList()
{
CsearchDLG dlg;
CdemoSet m_ds;
CString strtemp;
char chrTemp='%';
int i=0;
if(dlg.DoModal()!=IDOK)
return;
if(m_ds.IsOpen())
m_ds.Close();
//m_ds.m_strFilter.Format("UserName like '%c%s%c' order by UserID",chrTemp,dlg.m_strSearch.operator LPCTSTR(),chrTemp);
m_ds.m_strFilter="UserName like '%"+dlg.m_strSearch+"%' order by UserID";
MessageBox(m_ds.m_strFilter);
m_ds.Open();
//long l=m_ds.GetRecordCount();
if(m_ds.IsEOF())
{AfxMessageBox("没有符合条件的记录!");
return;
}
//CListCtrl* ctrl;
//ctrl=&CMyDemoView::GetListCtrl();
ctrl->DeleteAllItems();
m_ds.MoveLast();
while (!m_ds.IsBOF())
{strtemp.Format("%d",m_ds.m_UserID);//m_userID是long类型
ctrl->InsertItem(i,strtemp);
ctrl->SetItemText(i,1,m_ds.m_UserName);
ctrl->SetItemText(i,2,m_ds.m_UserPwd);
ctrl->SetItemText(i,3,m_ds.m_UserAble);
ctrl->SetItemText(i,4,m_ds.m_UserSex);
ctrl->SetItemText(i,5,m_ds.m_UserAddr);
ctrl->SetItemText(i,6,m_ds.m_UserDep);
ctrl->SetItemText(i,7,m_ds.m_UserEmail);
ctrl->SetItemText(i,8,m_ds.m_UserTitle);
ctrl->SetItemText(i,9,m_ds.m_UserPhone);
ctrl->SetItemText(i,10,m_ds.m_UserInfo);
m_ds.MovePrev();
//i++;
}
m_ds.Close();
}
void CMyDemoView::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
CMyDemoView::OnUserEdit();
}
void CMyDemoView::OnDwxx()
{
// TODO: Add your command handler code here
CdepartDLG dlg;
dlg.DoModal();
}
void CMyDemoView::OnTitle()
{
// TODO: Add your command handler code here
CtitleDLG dlg;
dlg.DoModal();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?