📄 view.cpp
字号:
#include <iostream>
using namespace std;
#include <conio.h>
#include "View.h"
#include "CPaperMgr.h"
#include "MyTextMgr.h"
const int XPOS = 3;
const int YPOS = 14;
CView::CView(CPaperMgr* pPaperMgr)
{
m_pPaperMgr = pPaperMgr;
}
CView::~CView()
{
}
int CView::Run()
{
int nCnt = 0;
while(nCnt ++ < 3 && LogIn() == 2);
if(nCnt == 4)
{
ClsLine(14);
CMyText::GotoXY(0, 14);
cout << "登录失败,程序现在退出!" << endl;
return -1;
}
while(DoPageHome() != VKEY_ESC);
return 0;
}
void CView::PrintLogIn()
{
system("cls");
CMyText::GotoXY(0,0);
cout << "=======^^=========[LDCI]=========^^======="<< endl;
cout << "* *"<< endl;
cout << "| |"<< endl;
cout << "* 用户名: *"<< endl;
cout << "* 密 码: *"<< endl;
cout << "| |"<< endl;
cout << "* *"<< endl;
cout << "=======@@========================@@======="<< endl;
cout << endl;
cout << endl;
cout << endl;
cout << " 确定(Enter) 取消(ESC)"<< endl;
}
void CView::ClsLine(int nLine)
{
CMyText::GotoXY(0, nLine);
for(int i=0; i<80; i++)
{
putchar(' ');
}
}
int CView::LogIn()
{
PrintLogIn();
CMyText edUserName(3, 20, 29);
CMyText edPassword(4, 20, 25, true);
CMyTextMgr myTxtMgr;
myTxtMgr.AddTextCtrl(&edUserName);
myTxtMgr.AddTextCtrl(&edPassword);
string strUserName;
string strPassword;
int nKey = 0;
nKey=myTxtMgr.Handle();
int nRet = 0;
switch(nKey)
{
case VKEY_ESC:
ClsLine(14);
CMyText::GotoXY(0, 14);
cout << "退出\n" << endl;
nRet = 1;
break;
case VKEY_ENTER:
strUserName = edUserName.GetText();
strPassword = edPassword.GetText();
if(strUserName == "admin" && strPassword == "123456")
{
ClsLine(14);
CMyText::GotoXY(0, 14);
cout << "登录成功,请开始您愉快的旅程!\n" << endl;
Sleep(1000);
}
else
{
ClsLine(14);
CMyText::GotoXY(0, 14);
cout << "登录失败,请重新登录!" << endl;
nRet = 2;
}
break;
default:
break;
}
return nRet;
}
void CView::PrintPageHome()
{
system("cls");
CMyText::GotoXY(0,0);
cout << "=======^^=========[LDCI]=========^^======="<< endl;
cout << "* *"<< endl;
cout << "| |"<< endl;
cout << "* 1. 试题管理 *"<< endl;
cout << "* 2. 考生管理 *"<< endl;
cout << "* *"<< endl;
cout << "* ESC. 退 出 *"<< endl;
cout << "| |"<< endl;
cout << "* *"<< endl;
cout << "=======@@========================@@======="<< endl;
cout << endl;
cout << endl;
cout << endl;
cout << "请选择:";
}
int CView::DoPageHome()
{
PrintPageHome();
int nKey = getch();
if(nKey == '1')
{
bool bEdit = FALSE;
while((nKey = DoTestBrowse(bEdit)) != VKEY_ESC)
{
switch(nKey)
{
case VKEY_F1:
case VKEY_F2:
bEdit = FALSE;
break;
case VKEY_F3:
case VKEY_F4:
bEdit = TRUE;
break;
default:
break;
}
}
}
else if(nKey == '2')
{
}
else if(nKey == VKEY_ESC)
{
return VKEY_ESC;
}
return 0;
}
void CView::PrintTestBrowse()
{
// system("cls");
int nPaperIdx = 0;
int nTestIdx = 0;
int nRet = m_pPaperMgr->GetTestPos(nPaperIdx, nTestIdx);
string strPaper;
string strTest;
if(nRet == 1)
strPaper = "无试题";
else
{
int nTestNum = m_pPaperMgr->GetCurTestNum();
int nScore = m_pPaperMgr->GetCurTotalScore();
char szNum[10];
itoa(nPaperIdx, szNum, 10);
strPaper = "第";
strPaper += szNum;
strPaper += "套试卷(目前共";
itoa(nTestNum, szNum, 10);
strPaper += szNum;
strPaper += "道题, 总分";
itoa(nScore, szNum, 10);
strPaper += szNum;
strPaper += ")";
itoa(nTestIdx, szNum, 10);
strTest = "第";
strTest += szNum;
strTest += "题";
}
CMyText::GotoXY(0,0);
cout << "=============^^===============[LDCI]===============^^============="<< endl;
cout << "* F1(上一题) F2(下一题) F3(录入) F4(修改) F5(删除) *"<< endl;
cout << "* ****************************************************************"<< endl;
cout << "* 题 干: *"<< endl;
cout << "* *"<< endl;
cout << "* 选 项 A: *"<< endl;
cout << "* 选 项 B: *"<< endl;
cout << "* 选 项 C: *"<< endl;
cout << "* 选 项 D: *"<< endl;
cout << "* 选 项 E: *"<< endl;
cout << "* 选 项 F: *"<< endl;
cout << "* 选 项 G: *"<< endl;
cout << "* *"<< endl;
cout << "* 正确答案: 分数: *"<< endl;
cout << "=============@@====================================@@============="<< endl;
CMyText::GotoXY(4,2);
cout << strPaper;
CMyText::GotoXY(45,2);
cout << strTest;
}
int CView::DoTestBrowse(bool bEdit)
{
PrintTestBrowse();
string strTitle, strAns, strScore;
string strOptA, strOptB, strOptC, strOptD, strOptE, strOptF, strOptG;
m_pPaperMgr->GetContext(strTitle, strAns, strScore, strOptA,
strOptB, strOptC, strOptD, strOptE, strOptF, strOptG);
CMyText edTitle(XPOS, YPOS, 50);
CMyText edOptA(XPOS+2, YPOS, 25);
CMyText edOptB(XPOS+3, YPOS, 25);
CMyText edOptC(XPOS+4, YPOS, 25);
CMyText edOptD(XPOS+5, YPOS, 25);
CMyText edOptE(XPOS+6, YPOS, 25);
CMyText edOptF(XPOS+7, YPOS, 25);
CMyText edOptG(XPOS+8, YPOS, 25);
CMyText edAns(XPOS+10, YPOS, 25);
CMyText edScore(XPOS+10, YPOS+27, YPOS+29);
edTitle.SetText(strTitle);
edOptA.SetText(strOptA);
edOptB.SetText(strOptB);
edOptC.SetText(strOptC);
edOptD.SetText(strOptD);
edOptE.SetText(strOptE);
edOptF.SetText(strOptF);
edOptG.SetText(strOptG);
edAns.SetText(strAns);
edScore.SetText(strScore);
if(bEdit)
{
edTitle.Enable();
edOptA.Enable();
edOptB.Enable();
edOptC.Enable();
edOptD.Enable();
edOptE.Enable();
edOptF.Enable();
edOptG.Enable();
edAns.Enable();
edScore.Enable();
}
else
{
edTitle.Disable();
edOptA.Disable();
edOptB.Disable();
edOptC.Disable();
edOptD.Disable();
edOptE.Disable();
edOptF.Disable();
edOptG.Disable();
edAns.Disable();
edScore.Disable();
}
CMyTextMgr myTxtMgr;
myTxtMgr.AddTextCtrl(&edTitle);
myTxtMgr.AddTextCtrl(&edOptA);
myTxtMgr.AddTextCtrl(&edOptB);
myTxtMgr.AddTextCtrl(&edOptC);
myTxtMgr.AddTextCtrl(&edOptD);
myTxtMgr.AddTextCtrl(&edOptE);
myTxtMgr.AddTextCtrl(&edOptF);
myTxtMgr.AddTextCtrl(&edOptG);
myTxtMgr.AddTextCtrl(&edAns);
myTxtMgr.AddTextCtrl(&edScore);
int nKey = 0;
nKey=myTxtMgr.Handle();
strTitle = edTitle.GetText();
strOptA = edOptA.GetText();
strOptB = edOptB.GetText();
strOptC = edOptC.GetText();
strOptD = edOptD.GetText();
strOptE = edOptE.GetText();
strOptF = edOptF.GetText();
strOptG = edOptG.GetText();
strAns = edAns.GetText();
strScore = edScore.GetText();
switch(nKey)
{
case VKEY_F1:
m_pPaperMgr->Edit(strTitle, strAns, strScore, strOptA, strOptB,
strOptC, strOptD, strOptE, strOptF, strOptG);
m_pPaperMgr->MovePrev();
break;
case VKEY_F2:
m_pPaperMgr->Edit(strTitle, strAns, strScore, strOptA, strOptB,
strOptC, strOptD, strOptE, strOptF, strOptG);
m_pPaperMgr->MoveNext();
break;
case VKEY_F3:
m_pPaperMgr->Edit(strTitle, strAns, strScore, strOptA, strOptB,
strOptC, strOptD, strOptE, strOptF, strOptG);
m_pPaperMgr->AddTest();
break;
case VKEY_F4:
break;
case VKEY_F5:
m_pPaperMgr->DelTest();
break;
// case VKEY_ENTER:
// break;
default:
break;
}
return nKey;
}
void CView::SetPaperMgr(CPaperMgr* pPaperMgr)
{
m_pPaperMgr = pPaperMgr;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -