步确定各类的属性和操作,特别是确定类对使用者提供的接口协议是十分关键的。同时为各种系统功能的算法设计和代码实现提供最重要的依据。下面从每个模块中抽取1到3个功能进行详细介绍。
3.4.2.1 登录
在登录窗口选择登录方式、键入用户名和密码后进行登录,登录信息正确进入系统主界面。用户名或密码输入错误3次则自动退出系统。代码如下所示。
UpdateData(TRUE);
if(m_strPurview.IsEmpty())
{
AfxMessageBox("请先选择登录方式!");
return;
}
if(m_username.IsEmpty() || m_password.IsEmpty())
{
AfxMessageBox("用户名或密码未填写!");
return;
}
CString strSql;
strSql.Format("SELECT * FROM tbTeacher where Username='%s'",m_username);
pRs->Open(strSql,CADORecordset.openQuery);
if(!pRs->IsOpen())
return;
if(pRs->GetRecordCount()<=0)
{
AfxMessageBox("用户不存在!");
wrong_num++;
if(wrong_num == 3)
OnCancel();
return;
}
// pRs->MoveFirst();
CString strPassword;
pRs->GetFieldValue("Username",strUsername);
pRs->GetFieldValue("Password",strPassword);
pRs->GetFieldValue("Purview",strPurview);
pRs->GetFieldValue("Subject",strSubject);
pRs->GetFieldValue("ManageSubject",strManageSubject);
if(m_strPurview != strPurview)
{
AfxMessageBox("用户不存在!");
wrong_num++;
if(wrong_num == 3)
OnCancel();
return;
}
if(m_password != strPassword)
{
AfxMessageBox("密码不正确,请重新输入!");
m_password.Empty();
UpdateData(FALSE);
wrong_num++;
if(wrong_num == 3)
OnCancel();
return;
}
CDialog::OnOK();
3.4.2.2 抽取现有试卷-预览试卷及答案
在"抽取现有试卷"界面选定试卷后单击"预览试卷及答案"按钮,从数据库中读取当前选中试卷的内容和答案并将其赋值给"预览试卷及答案"模块中的相应属性,进入该模块后在相应位置显示试卷的内容及答案。代码如下所示。
CBrowseAllDlg browseallDlg;
CString strID = Now_ID;
if(strID.IsEmpty())
return;
CString strType;
if(strID.GetLength() % 2)
strType = "成套试卷";
else
strType = "已组试卷";
CString strAnswer,strPaper;
CString strChineseName = m_strSubject;
CString strTableName;
if(strType == "已组试卷")
strTableName = FindtbPaper(strChineseName);
else
strTableName = FindtbExist(strChineseName);
CADORecordset *pRs = new CADORecordset(pDB);
CString strSql;
strSql.Format("select * from %s where ID='%s'",strTableName,strID);
pRs->Open(_bstr_t(strSql),CADORecordset.openQuery);
if(pRs->IsOpen())
{
pRs->GetFieldValue("答案",strAnswer);
pRs->GetFieldValue("内容",strPaper);
browseallDlg.m_strTitleAnswer = "试卷ID:";
browseallDlg.m_strTitleAnswer += strID;
browseallDlg.m_strTitleAnswer += "答案";
browseallDlg.m_strTitlePaper = "试卷ID:";
browseallDlg.m_strTitlePaper += strID;
browseallDlg.m_strTitlePaper += "内容";
browseallDlg.m_strAnswer = strAnswer;
browseallDlg.m_strPaper = strPaper;
browseallDlg.strID = strID;
browseallDlg.DoModal();
pRs->Close();
}
delete pRs;
3.4.2.3 自动组卷
在"自动组卷"模块中完成所有组卷信息的设置后点击"开始组卷"按钮完成自动组卷的工作。设置信息中难度章节的限制设置为可选项。代码如下所示。
CString question_ID = ""; //要添加的试卷信息
CString question_score ="";
CString question_answer = "";
CString fangan_ID = "";
CString content_answer = SetTitle();
for(int i = 0 ; i < m_nNumber+1 ; i++)
{
//方案ID
CString str;
m_combo[i].GetLBText(m_combo[i].GetCurSel(),str);
fangan_ID += FindType(str);
fangan_ID += IntToString(m_nCount[i]);
CString temp;
//大题
m_strPaper += Number_Chinese[i];
m_strPaper += "、";
m_strPaper += m_str[i];
m_strPaper += "(共";
content_answer += Number_Chinese[i];
content_answer += "、";
content_answer += m_str[i];
content_answer += "(共";
temp.Format(_T("%d"),m_nCount[i]);
m_strPaper += temp;
content_answer += temp;
m_strPaper += "小题,共";
cont
上一篇:
网络程序设计课程设计论文(2003doc)
下一篇:
超市进销存管理系统的开发