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

📄 dao_example2view.cpp

📁 Visual C++数据库编程源代码 《Visual C++程序员成长攻略》一书的附带源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
}

void CDAO_EXAMPLE2View::OnModifyRecord() 
{
	// TODO: Add your command handler code here
	if(UserAffirm()==0)  	return;
	else
	{
        CListCtrl &example=GetListCtrl();
        POSITION position=example.GetFirstSelectedItemPosition();
        if(position==NULL)
		{
        	AfxMessageBox("对不起,您没有选中记录!",MB_ICONEXCLAMATION);
		}
       	else
		{
            int m_item=example.GetNextSelectedItem(position);
            m_exp1->Move(m_item);
            CModifyRecord Dlg;    //读取已有数据
            Dlg.m_name            = m_exp1->m_name;
            Dlg.m_english_score   = m_exp1->m_englishscore;
            Dlg.m_math_score      = m_exp1->m_mathscore;
            Dlg.m_chinese_score   = m_exp1->m_chinesescore;
            Dlg.m_history_score   = m_exp1->m_historyscore;
            Dlg.m_political_score = m_exp1->m_politicalscore;
            Dlg.m_average_score   = m_exp1->m_averagescore;
            if(Dlg.DoModal()==IDOK)
             {
	             m_exp1->Edit();          //修改数据
	             m_exp1->m_name           = Dlg.m_name;
                 m_exp1->m_englishscore   = Dlg.m_english_score;
                 m_exp1->m_mathscore      = Dlg.m_math_score;
                 m_exp1->m_chinesescore   = Dlg.m_chinese_score;
                 m_exp1->m_historyscore   = Dlg.m_history_score;
                 m_exp1->m_politicalscore = Dlg.m_political_score;
                 m_exp1->m_averagescore   = Dlg.m_average_score;
                 m_exp1->Update();
	             ShowStudentInformation();   //刷新数据
             }
		}
	}
}

void CDAO_EXAMPLE2View::OnUpdateModifyRecord(CCmdUI* pCmdUI) 
{
	//"加入自定义代码"
	//点击记录才能进行修改
	CListCtrl &example = GetListCtrl();
	POSITION  position  = example.GetFirstSelectedItemPosition();
	if(position==NULL)		pCmdUI->Enable(FALSE);
	else        		   pCmdUI->Enable();
}

void CDAO_EXAMPLE2View::OnSearchRecord() 
{
	//"加入自定义代码"
	CSearchRecord search;
	CString str;
    if(UserAffirm()==1)
	{
		if(search.DoModal()==IDCANCEL)
			return;
		else
		{
			search.m_name.MakeLower();
			m_flag2=FALSE;
			CDaoFieldInfo m_field;
			if(!search.m_name.IsEmpty())
			{
				m_field.m_strName="学生姓名";
	    		m_exp1->m_strFilter=m_field.m_strName+" = "+"'"+search.m_name+"'";
				m_exp1->Requery();
			}
			else if(!search.m_english_score.IsEmpty())
			{
				m_field.m_strName="英语成绩";
				m_exp1->m_strFilter=m_field.m_strName+" = "+"'"+search.m_english_score+"'";
				m_exp1->Requery();
			}
			else if(!search.m_math_score.IsEmpty())
			{
				m_field.m_strName="数学成绩";
				m_exp1->m_strFilter=m_field.m_strName+" = "+"'"+search.m_math_score+"'";
				m_exp1->Requery();
			}
			else if(!search.m_chinese_score.IsEmpty())
			{
				m_field.m_strName="语文成绩";
				m_exp1->m_strFilter=m_field.m_strName+" = "+"'"+search.m_chinese_score+"'";
				m_exp1->Requery();
			}
			else if(!search.m_history_score.IsEmpty())
			{
				m_field.m_strName="历史成绩";
				m_exp1->m_strFilter=m_field.m_strName+" = "+"'"+search.m_history_score+"'";
				m_exp1->Requery();
			}
			else if(!search.m_political_score.IsEmpty())
			{
				m_field.m_strName="政治成绩";
				m_exp1->m_strFilter=m_field.m_strName+" = "+"'"+search.m_political_score+"'";
				m_exp1->Requery();
			}
			else if(!search.m_average_score.IsEmpty())
			{
				m_field.m_strName="平均成绩";
				m_exp1->m_strFilter=m_field.m_strName+" = "+"'"+search.m_average_score+"'";
				m_exp1->Requery();
			}
			else
			{
				AfxMessageBox("请重新输入查询信息!", MB_ICONEXCLAMATION);
				OnSearchRecord();
			}
			ShowStudentInformation();
			}
	}
}

int CDAO_EXAMPLE2View::UserAffirm()
{
    CManageAffirm Dlg;           //用户确认类,将在后面给予详细介绍
	if(Dlg.DoModal()==IDCANCEL)  return 0;
	else
	{
		CUserManage *m_dlg=new CUserManage(&pDatabase);
	    CString m_sql, m_str;
		m_sql = _T("");
	    m_sql.Format("select * from login where user='%s' and passward='%s'",Dlg.m_User,Dlg.m_Password);
		m_dlg->Open(AFX_DAO_USE_DEFAULT_TYPE, m_sql);
	    if(m_dlg->GetRecordCount()==0)
		{
			m_str.Format("您好,对不起!\n您没有权限执行此功能!");
			AfxMessageBox(m_str,MB_ICONEXCLAMATION);
			return 0;
		}
		else return 1;
	}
}

void CDAO_EXAMPLE2View::OnAddUser() 
{
	//"加入自定义代码"
	CUserManage *m_dlg=new CUserManage(&pDatabase);   //初始化数据库指针
    CString m_sql = _T("");
	if(Manage()==0)  	return;      //用户权限验证,管理员才能添加用户
	else
	{
    	CAddUser m_adduser;     //实现用户添加
    	if(m_adduser.DoModal()==IDCANCEL)	    return;
    	else
		{
	    	m_dlg->Close();
			m_sql.Format("select * from LOGIN where user='%s'",m_adduser.m_UserName);
            m_dlg->Open(AFX_DAO_USE_DEFAULT_TYPE,m_sql);
            if(m_dlg->GetRecordCount()!=0)
			{
			AfxMessageBox("您好,对不起!\n"+ m_adduser.m_UserName + " 已经存在,请换用其他名字!", MB_ICONEXCLAMATION);
			}
			else
			{
		if(m_adduser.m_InitialPassword.Compare(m_adduser.m_AffirmPassword))
				{
			    	AfxMessageBox(_T("对不起,两次密码输入不一致!\n请重新输入!"),MB_ICONEXCLAMATION);
				}
		    	else
				{
			        m_adduser.m_UserName.TrimLeft(" ");
			        m_adduser.m_UserName.TrimRight(" ");
			    	m_dlg->AddNew();
			    	m_dlg->m_user=m_adduser.m_UserName;
			    	m_dlg->m_password = m_adduser.m_InitialPassword;
			    	CString str1,str2;
		    		str1.Format("%s",m_adduser.m_UserName);
			    	str2.Format("\n欢迎加入!");
				    str1=str1+str2;
		    		AfxMessageBox(str1,MB_ICONEXCLAMATION);
			    	m_dlg->Update();          //刷新数据库
				}
			}
		}
	}
}

int CDAO_EXAMPLE2View::Manage()    //自定义管理员确认函数
{
	CManageAffirm Dlg;
	if(Dlg.DoModal()==IDCANCEL)	  return 0;
	else
	{
    	CUserManage *m_dlg=new CUserManage(&pDatabase);
	    CString m_sql; 	CString user;
		user.Format("administrator");
		if(Dlg.m_User.Compare(user)!=0)
		{
			AfxMessageBox("对不起!\n您没有此权限!");
		    return 0;
		}
		else
		{
	     	m_sql.Format("select * from login where user = '%s' and passward = '%s' ", Dlg.m_User, Dlg.m_Password);
			CDaoRecordset *dlg=new CDaoRecordset(&pDatabase);
			m_dlg->Open(dbOpenDynaset, m_sql);
			m_dlg->MoveFirst();
	        if(m_dlg->GetRecordCount()==0)
			{
			    CString m_str;
			    m_str.Format("      对不起!\n您输入的密码不正确!");
			    AfxMessageBox(m_str,MB_ICONEXCLAMATION);
				return 0;
			}
			else
			{
				return 1;
			}
		}
	}
}

void CDAO_EXAMPLE2View::OnDeleteUser() 
{
	//"加入自定义代码"
	CUserManage *m_dlg=new CUserManage(&pDatabase);
    CString m_sql;  	CString user;
	user.Format("administrator");
	if(Manage()==0)   return;    //管理员确认
	else
	{
		CDeleteUser deluser;     //实现用户删除
		if(deluser.DoModal()==IDCANCEL)    return;
        else
		{
		    if(deluser.m_User.Compare(user)==0)
			{
				AfxMessageBox("您好,对不起!\n您无权删除用户 administrator!", MB_ICONEXCLAMATION);
			}
			else
			{
			    CString str;
				str.Format("%s",deluser.m_User);
				if(AfxMessageBox("确定要删除用户 "+str+"?",MB_YESNO|MB_ICONEXCLAMATION))
				{
       	           m_sql.Format("delete from LOGIN where user='%s'",deluser.m_User);
		           pDatabase.Execute(m_sql);
				}
			}
		}
	}
}

void CDAO_EXAMPLE2View::OnPasswordModify() 
{
	//"加入自定义代码"
	UpdateData(TRUE);
	CPasswordModify m_modify;
	if(m_modify.DoModal()==IDCANCEL)
	{
		return;
	}
	else
	{
        CUserManage *m_dlg=new CUserManage(&pDatabase);
		CString m_sql;
		m_sql.Format("select * from LOGIN where user='%s'",m_modify.m_UserName);
		m_dlg->Open(AFX_DAO_USE_DEFAULT_TYPE,m_sql);
		if(m_dlg->GetRecordCount() == 0)
		{
            AfxMessageBox("您好,对不起!\n数据库中没有此用户!", MB_ICONEXCLAMATION);
			m_dlg->Close();
			OnPasswordModify();
		}
        else
		{
		   m_dlg->Close();
		   m_sql.Format("select * from LOGIN where user='%s' and passward='%s'",m_modify.m_UserName,m_modify.m_InitialPassword);
		   m_dlg->Open(AFX_DAO_USE_DEFAULT_TYPE,m_sql);
		   if(m_dlg->GetRecordCount()==0)
		   {
              AfxMessageBox("初始密码错误!\n请您重新输入!", MB_ICONEXCLAMATION);
		   }
		   else
		   {
		     if(m_modify.m_ModifyPassword.Compare(m_modify.m_PasswordAffirm))
			   {
				   AfxMessageBox("对不起,两次新密码不一致!\n请您重新输入!", MB_ICONEXCLAMATION);
                   m_modify.m_ModifyPassword.Empty();
				   m_modify.m_PasswordAffirm.Empty();
				   UpdateData(FALSE);
			   }
			   else
			   {
                   m_dlg->Edit();
				   m_dlg->m_password = m_modify.m_ModifyPassword;
				   m_dlg->Update();
				 AfxMessageBox("密码修改成功!", MB_ICONEXCLAMATION);
				}
		   }
		}
	}
}

⌨️ 快捷键说明

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