📄 userdlg.cpp
字号:
// UserDlg.cpp : implementation file
//
#include "stdafx.h"
#include "library.h"
#include "UserDlg.h"
#include "UserAdd.h"
#include "UserFind.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CUserDlg dialog
CUserDlg::CUserDlg(CWnd* pParent /*=NULL*/)
: CDialog(CUserDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CUserDlg)
m_Address = _T("");
m_BorrowNum = 0;
m_Identity = _T("");
m_Password = _T("");
m_Sex = _T("");
m_StartTime = 0;
m_Type = _T("");
m_UserID = _T("");
m_UserName = _T("");
//}}AFX_DATA_INIT
}
void CUserDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CUserDlg)
DDX_Control(pDX, IDC_User_View, m_UserView);
DDX_Text(pDX, IDC_ADDRESS, m_Address);
DDX_Text(pDX, IDC_BORROW_NUMBER, m_BorrowNum);
DDX_Text(pDX, IDC_IDENTITY, m_Identity);
DDX_Text(pDX, IDC_PASSWORD, m_Password);
DDX_CBString(pDX, IDC_SEX, m_Sex);
DDX_DateTimeCtrl(pDX, IDC_START_TIME, m_StartTime);
DDX_CBString(pDX, IDC_TYPE, m_Type);
DDX_Text(pDX, IDC_USERID, m_UserID);
DDX_Text(pDX, IDC_USER_NAME, m_UserName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CUserDlg, CDialog)
//{{AFX_MSG_MAP(CUserDlg)
ON_NOTIFY(NM_CLICK, IDC_User_View, OnClickUserView)
ON_BN_CLICKED(IDC_RECORD_ADD, OnRecordAdd)
ON_BN_CLICKED(IDC_RECORD_DEL, OnRecordDel)
ON_BN_CLICKED(IDC_RECORD_EDIT, OnRecordEdit)
ON_BN_CLICKED(IDC_REFRESH, OnRefresh)
ON_BN_CLICKED(IDC_USER_FIND, OnUserFind)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CUserDlg message handlers
BOOL CUserDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
InitListView();
TextShow();
ListShow();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CUserDlg::OnClickUserView(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
//当鼠标单击列表中的记录时,在基本数据区中显示相应数据
POSITION pos;
pos=m_UserView.GetFirstSelectedItemPosition();
if(pos!=NULL)
{
int nItem=m_UserView.GetNextSelectedItem(pos);
m_UserID=m_UserView.GetItemText(nItem,0);
m_UserSet.m_strFilter="userid='"+m_UserID+"'";
m_UserSet.Open();
TextShow();
m_UserSet.Close();
m_UserView.SetHotItem(nItem);
}
*pResult = 0;
}
void CUserDlg::InitListView()
{
//初始化浏览列表
m_UserView.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_UserView.InsertColumn(0,"借书证号");
m_UserView.InsertColumn(1,"身份证号");
m_UserView.InsertColumn(2,"姓名");
m_UserView.InsertColumn(3,"密码");
m_UserView.InsertColumn(4,"性别");
m_UserView.InsertColumn(5,"用户类型");
m_UserView.InsertColumn(6,"办证日期");
m_UserView.InsertColumn(7,"已借本数");
m_UserView.InsertColumn(8,"家庭住址");
m_UserView.SetColumnWidth(0,100);
m_UserView.SetColumnWidth(1,120);
m_UserView.SetColumnWidth(2,80);
m_UserView.SetColumnWidth(3,70);
m_UserView.SetColumnWidth(4,50);
m_UserView.SetColumnWidth(5,80);
m_UserView.SetColumnWidth(6,90);
m_UserView.SetColumnWidth(7,80);
m_UserView.SetColumnWidth(8,150);
}
void CUserDlg::ListShow()
{
//在列表中显示用户的信息
int i=0;
char buffer[20]; //用于存放格式化后的借书本数
if(!m_UserSet.IsOpen())
{
m_UserSet.m_strSort="userid";
m_UserSet.Open();
m_UserSet.MoveFirst();
}
m_UserView.DeleteAllItems();
while(!m_UserSet.IsEOF())
{
m_UserView.InsertItem(i,m_UserSet.m_userid);
m_UserView.SetItemText(i,1,m_UserSet.m_identity);
m_UserView.SetItemText(i,2,m_UserSet.m_username);
m_UserView.SetItemText(i,3,m_UserSet.m_password);
m_UserView.SetItemText(i,4,m_UserSet.m_sex);
m_UserView.SetItemText(i,5,m_UserSet.m_type);
m_UserView.SetItemText(i,6,m_UserSet.m_starttime.Format("%Y-%m-%d"));
//格式化借书本数
ltoa(m_UserSet.m_borrownum,buffer,10);
m_UserView.SetItemText(i,7,buffer);
m_UserView.SetItemText(i,8,m_UserSet.m_address);
m_UserSet.MoveNext();
i++;
}
if(m_UserView.GetItemCount()!=0)
m_UserView.SetHotItem(0);
m_UserSet.Close();
}
void CUserDlg::TextShow()
{
if(!m_UserSet.IsOpen())
{
m_UserSet.Open();
m_UserSet.MoveFirst();
}
//显示基本数据
m_UserID=m_UserSet.m_userid;
m_Identity=m_UserSet.m_identity;
m_UserName=m_UserSet.m_username;
m_Password=m_UserSet.m_password;
m_Sex=m_UserSet.m_sex;
m_Type=m_UserSet.m_type;
m_StartTime=m_UserSet.m_starttime;
m_Address=m_UserSet.m_address;
m_BorrowNum=m_UserSet.m_borrownum;
m_UserSet.Close();
UpdateData(false);
}
void CUserDlg::OnRecordAdd()
{
// TODO: Add your control notification handler code here
//添加新纪录
CUserAdd m_UserAdd;
m_UserAdd.DoModal();
}
void CUserDlg::OnRecordDel()
{
// TODO: Add your control notification handler code here
//删除所选择的纪录
if(AfxMessageBox("您确定要删除此纪录吗?",MB_OKCANCEL)==IDCANCEL)
return;
UpdateData();
m_UserSet.Open();
m_UserSet.m_strFilter="userid='"+m_UserID+"'";
m_UserSet.Requery();
m_UserSet.Delete();
m_UserSet.Close();
m_UserSet.Open();
m_UserSet.m_strFilter="";
m_UserSet.Requery();
ListShow();
TextShow();
UpdateData(false);
}
void CUserDlg::OnRecordEdit()
{
// TODO: Add your control notification handler code here
//对数据纪录进行修改操作
//先找到所要修改的纪录,然后再进行数据的更新
m_UserSet.Open();
m_UserSet.m_strFilter="userid='"+m_UserID+"'";
m_UserSet.Requery();
UpdateData();
//保存数据到数据库
m_UserSet.Edit();
m_UserSet.m_userid=m_UserID;
m_UserSet.m_identity=m_Identity;
m_UserSet.m_username=m_UserName;
m_UserSet.m_password=m_Password;
m_UserSet.m_sex=m_Sex;
m_UserSet.m_type=m_Type;
nYear=m_StartTime.GetYear();
nMonth=m_StartTime.GetMonth();
nDay=m_StartTime.GetDay();
CTime startTime(nYear,nMonth,nDay,0,0,0);
m_UserSet.m_starttime=startTime;
m_UserSet.m_address=m_Address;
m_UserSet.m_borrownum=m_BorrowNum;
m_UserSet.Update();
m_UserSet.m_strFilter="";
m_UserSet.Requery();
m_UserSet.Close();
int nItem=m_UserView.GetSelectionMark();
ListShow();
//把纪录重新定位到所修改的纪录上
m_UserView.SetSelectionMark(nItem);
m_UserView.SetHotItem(nItem);
m_UserSet.Open();
m_UserSet.Move(nItem);
TextShow();
UpdateData(false);
}
void CUserDlg::OnRefresh()
{
// TODO: Add your control notification handler code here
//刷新基本数据区和列表中的数据
m_UserSet.Open();
m_UserSet.m_strFilter="";
m_UserSet.Requery();
ListShow();
TextShow();
UpdateData(false);
}
void CUserDlg::OnUserFind()
{
// TODO: Add your control notification handler code here
//完成图书的查询
CUserFind m_UserFind;
CString strSql;
if(m_UserFind.DoModal()!=IDOK)
return;
switch(m_UserFind.m_Selection)
{
case 0:
//按借书证号查询
m_UserSet.Open();
m_UserSet.m_strFilter="userid"+m_UserFind.m_Condition+"'"+m_UserFind.m_UserID+"'";
m_UserSet.Requery();
if(m_UserSet.GetRecordCount()==0)
{
AfxMessageBox("没有找到您所要查询的用户!");
m_UserSet.Close();
}
else
{
ListShow();
TextShow();
}
break;
case 1:
//按用户姓名查询
strSql.Format("select * from user where username like '%%%s%%'",m_UserFind.m_UserName);
m_UserSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSql);
if(m_UserSet.GetRecordCount()==0)
{
AfxMessageBox("没有找到您所要查询的用户!");
m_UserSet.Close();
}
else
{
ListShow();
TextShow();
}
break;
case 2:
//按身份证号查询
m_UserSet.Open();
m_UserSet.m_strFilter="identity='"+m_UserFind.m_Identity+"'";
m_UserSet.Requery();
if(m_UserSet.GetRecordCount()==0)
{
AfxMessageBox("没有找到您所要查询的用户!");
m_UserSet.Close();
}
else
{
ListShow();
TextShow();
}
break;
case 3:
//按办证日期查询
nYear=m_UserFind.m_StartTime.GetYear();
nMonth=m_UserFind.m_StartTime.GetMonth();
nDay=m_UserFind.m_StartTime.GetDay();
CTime m_Time(nYear,nMonth,nDay);
strSql.Format("select * from user where publishtime=m_Time");
m_UserSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSql);
if(m_UserSet.GetRecordCount()==0)
{
AfxMessageBox("没有找到您所要查询的用户!");
m_UserSet.Close();
}
else
{
ListShow();
TextShow();
}
break;
} //end switch
UpdateData(false);
m_UserSet.Open();
m_UserSet.m_strFilter="";
m_UserSet.Requery();
m_UserSet.Close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -