📄 memberview.cpp
字号:
m_MemberReSet.m_MemPlace=m_MemberEditDlg.m_MemPlace;
m_MemberReSet.m_MemIns=m_MemberEditDlg.m_MemIns;
m_MemberReSet.m_MemSpe=m_MemberEditDlg.m_MemSpe;
m_MemberReSet.m_MemSchool=m_MemberEditDlg.m_MemSchool;
m_MemberReSet.m_MemBed=m_MemberEditDlg.m_MemBed;
m_MemberReSet.m_MemEmail=m_MemberEditDlg.m_MemEmail;
m_MemberReSet.m_MemYear=m_MemberEditDlg.m_MemYear;
m_MemberReSet.m_MemCard=m_MemberEditDlg.m_MemCard;
m_MemberReSet.m_MemPhone=m_MemberEditDlg.m_MemPhone;
m_MemberReSet.m_MemHadd=m_MemberEditDlg.m_MemHadd;
m_MemberReSet.m_MemHphone=m_MemberEditDlg.m_MemHphone;
m_MemberReSet.m_Remark=m_MemberEditDlg.m_Remark;
//如果可以更新,则更新到数据库
if(m_MemberReSet.CanUpdate())
{
m_MemberReSet.Update();
}
//更新完毕,关闭数据库
m_MemberReSet.Close();
}
else
{
//关闭数据库
if(m_MemberReSet.IsOpen())
m_MemberReSet.Close();
//提示用户
AfxMessageBox("该记录不存在,无法修改!");
return;
}
}
catch(CDBException*e)
{
e->ReportError ();
return;
}
//将用户信息及时更新到ListCtrl中
ctl->SetItemText(m_CurUser,0,m_MemberEditDlg.m_MemID);
ctl->SetItemText(m_CurUser,1,m_MemberEditDlg.m_MemName);
ctl->SetItemText(m_CurUser,2,m_MemberEditDlg.m_MemSex);
ctl->SetItemText(m_CurUser,3,m_MemberEditDlg.m_MemIns);
ctl->SetItemText(m_CurUser,4,m_MemberEditDlg.m_MemSpe);
ctl->SetItemText(m_CurUser,5,m_MemberEditDlg.m_MemYear);
ctl->SetItemText(m_CurUser,6,m_MemberEditDlg.m_MemPhone);
ctl->SetItemText(m_CurUser,7,m_MemberEditDlg.m_MemBed);
}
}
void CMemberView::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
EditCurUser();
}
void CMemberView::LookMember()
{
//创建一个MemberDialog的实例
CMemberDialog m_MemberDialog;
CMemberReSet m_MemberReSet;
CString chrTemp=FindPosition();
if(chrTemp=="")
return;
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_MemberDialog.m_MemID=m_MemberReSet.m_MemID;
m_MemberDialog.m_MemName=m_MemberReSet.m_MemName;
m_MemberDialog.m_MemSex=m_MemberReSet.m_MemSex;
m_MemberDialog.m_MemBorn=m_MemberReSet.m_MemBorn;
m_MemberDialog.m_MemPolity=m_MemberReSet.m_MemPolity;
m_MemberDialog.m_MemNative=m_MemberReSet.m_MemNative;
m_MemberDialog.m_MemPlace=m_MemberReSet.m_MemPlace;
m_MemberDialog.m_MemIns=m_MemberReSet.m_MemIns;
m_MemberDialog.m_MemSpe=m_MemberReSet.m_MemSpe;
m_MemberDialog.m_MemSchool=m_MemberReSet.m_MemSchool;
m_MemberDialog.m_MemBed=m_MemberReSet.m_MemBed;
m_MemberDialog.m_MemEmail=m_MemberReSet.m_MemEmail;
m_MemberDialog.m_MemYear=m_MemberReSet.m_MemYear;
m_MemberDialog.m_MemCard=m_MemberReSet.m_MemCard;
m_MemberDialog.m_MemPhone=m_MemberReSet.m_MemPhone;
m_MemberDialog.m_MemHadd=m_MemberReSet.m_MemHadd;
m_MemberDialog.m_MemHphone=m_MemberReSet.m_MemHphone;
m_MemberDialog.m_Remark=m_MemberReSet.m_Remark;
}
if(m_MemberDialog.DoModal()==IDCANCEL)
{
//如果用户选择取消按钮,则退出
return;
}
UpdateData(FALSE);
}
void CMemberView::DelCurUser()//删除
{
//建立一个指针,用以操作ListCtrl输出用户记录
CListCtrl *ctl;
ctl=&GetListCtrl();
//寻找当前选中的记录的位置
POSITION pos=ctl->GetFirstSelectedItemPosition();
if (pos==NULL)
{
//如果没有选择记录,则提示并退出
AfxMessageBox("请先选中一条记录!");
return;
}
//获取当前记录的位置游标
int m_CurUser=ctl->GetNextSelectedItem(pos);
//创建一个临时字符串来保存当前用户信息
char chrTemp[21] = {'\0'};
//取得用户ID
ctl->GetItemText(m_CurUser,0,chrTemp,sizeof(char[20]));
//创建CMemberReSet的实例
CMemberReSet m_MemberReSet;
if(MessageBox("删除该学生同时会删除该生所有成绩记录,确定删除记录?","删除确认",MB_YESNO|MB_ICONQUESTION)==IDYES)
{
try
{
//删除个人信息
if(m_MemberReSet.IsOpen())
m_MemberReSet.Close();
m_MemberReSet.m_strFilter.Format("MemID LIKE '%s' order by MemID",chrTemp);
m_MemberReSet.Open(CRecordset::snapshot,NULL,CRecordset::none);
//如果用户记录存在,则进行修改操作
if(m_MemberReSet.IsOpen() && !m_MemberReSet.IsEOF())
{
//设置编辑当前记录
m_MemberReSet.Delete();
//更新完毕,关闭数据库
m_MemberReSet.Close();
}
else //考虑特例,如果操作中用户信息不存在了
{
//关闭数据库
if(m_MemberReSet.IsOpen())
m_MemberReSet.Close();
//提示用户
AfxMessageBox("该记录不存在,无法删除!");
return;
}
//删除对应的所有个人成绩
CScoreReSet m_ScoreReSet;
if(m_ScoreReSet.IsOpen())
m_ScoreReSet.Close();
CString sql;
sql.Format("select * from score where MemID='%s'",chrTemp);
m_ScoreReSet.Open(CRecordset::snapshot,sql,CRecordset::none);
//如果用户记录存在,则进行修改操作
while(!m_ScoreReSet.IsEOF())
{
//设置编辑当前记录
m_ScoreReSet.Delete();
m_ScoreReSet.MoveNext();
}
//更新完毕,关闭数据库
m_ScoreReSet.Close();
}
catch(CDBException*e)
{
e->ReportError ();
return;
}
//在ListCtrl中删除当前用户信息
ctl->DeleteItem(m_CurUser);
}
}
void CMemberView::OnPaint()
{
RemoveAll();
//创建一个CListCtrl指针
CListCtrl *ctl;
ctl=&GetListCtrl(); //指向CListView的CListCtrl
//记录用户序号
int i = 0;
CString strTemp;
CMemberReSet m_MemberReSet;
try
{
//关闭记录集
if(m_MemberReSet.IsOpen())
m_MemberReSet.Close();
m_MemberReSet.Open(CRecordset::snapshot,NULL,CRecordset::none);
//如果用户记录存在,则进行修改操作
while(!m_MemberReSet.IsEOF())
{
//设置ListCtrl记录的Item值
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->ReportError ();
return;
}
}
CString CMemberView::FindPosition()
{
//建立一个指针,用以操作ListCtrl输出用户记录
CListCtrl *ctl;
ctl=&GetListCtrl();
CString chrTemp;
//寻找当前选中的记录的位置
int row=ctl->GetSelectionMark();
chrTemp=ctl->GetItemText(row,0);
if (chrTemp=="")
{
//如果没有选择记录,则提示并退出
AfxMessageBox("请先选中一条记录的学号!");
// return chrTemp;
}
return chrTemp;
}
void CMemberView::MemberAdd()
{
CMemberAdd m_MemberEditDlg;
if(m_MemberEditDlg.DoModal()!=IDOK)
return;
CMemberReSet m_MemberReSet;
try
{
if(m_MemberReSet.IsOpen())
m_MemberReSet.Close();
m_MemberReSet.m_strFilter.Format("MemID like '%s' order by MemID ASC",m_MemberEditDlg.m_MemID.operator LPCTSTR());
m_MemberReSet.Open(CRecordset::snapshot,NULL,CRecordset::none);
//输出匹配上查询到的用户记录,直到记录为空
if(!m_MemberReSet.IsEOF())
{
m_MemberReSet.Close();
AfxMessageBox("学号已存在!");
return;
}
m_MemberReSet.AddNew();
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;
m_MemberReSet.m_MemPlace=m_MemberEditDlg.m_MemPlace;
m_MemberReSet.m_MemIns=m_MemberEditDlg.m_MemIns;
m_MemberReSet.m_MemSpe=m_MemberEditDlg.m_MemSpe;
m_MemberReSet.m_MemYear=m_MemberEditDlg.m_MemYear;
m_MemberReSet.m_MemSchool=m_MemberEditDlg.m_MemSchool;
m_MemberReSet.m_MemBed=m_MemberEditDlg.m_MemBed;
m_MemberReSet.m_MemEmail=m_MemberEditDlg.m_MemEmail;
m_MemberReSet.m_MemCard=m_MemberEditDlg.m_MemCard;
m_MemberReSet.m_MemPhone=m_MemberEditDlg.m_MemPhone;
m_MemberReSet.m_MemHadd=m_MemberEditDlg.m_MemHadd;
m_MemberReSet.m_MemHphone=m_MemberEditDlg.m_MemHphone;
m_MemberReSet.m_Remark=m_MemberEditDlg.m_Remark;
//添加成功刷新到表中显示
AfxMessageBox("添加成功!");
CListCtrl *ctl;
ctl=&GetListCtrl();
ctl->InsertItem(0,m_MemberReSet.m_MemID);
ctl->SetItemText(0,1,m_MemberReSet.m_MemName);
ctl->SetItemText(0,2,m_MemberReSet.m_MemSex);
ctl->SetItemText(0,3,m_MemberReSet.m_MemIns);
ctl->SetItemText(0,4,m_MemberReSet.m_MemSpe);
ctl->SetItemText(0,5,m_MemberReSet.m_MemYear);
ctl->SetItemText(0,6,m_MemberReSet.m_MemPhone);
ctl->SetItemText(0,7,m_MemberReSet.m_MemBed);
if(m_MemberReSet.CanUpdate())
{
m_MemberReSet.Update();
}
if(m_MemberReSet.IsOpen())
m_MemberReSet.Close();
}
catch(CDBException *e)
{
e->Delete();
return;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -