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

📄 cpaper.cpp

📁 考试管理系统
💻 CPP
字号:
#include "main.h"

/**************************************************
* 函数名:  GetPaper ()
* 参数:
* 形参:     无
* 返回值:	int
* 功能:
*		抽取随机数,保证系统所给的试卷是随机出来的,同时又是符合考试要求的,防止作弊。
* 作者:		范帅帅
* 编写明细:

*		完成时间	2009/02/18	范帅帅
*		修改时间	2009/02/21	范帅帅		试卷的查找方式
**************************************************/

void CPaper::RandGetPaper()//随机数
{

	for (;;)
	{
		srand((unsigned)time(NULL));

		int nNum=rand();

		int m_nCur = nNum % 5;

		m_nCurPaper = m_nCur;

		++m_arrNum[m_nCurPaper];

		for (int i = 0; i < 5; ++i)
		{

			if (m_arrNum[i] > 1)
			{

				--m_arrNum[i];

				break;

			}

		}

		if (i == 5)
		{

			nTestNum = m_nCur;

			return;

		}

	}
	
}

/**************************************************
* 函数名:  GetPaper ()
* 参数:
* 形参:     无
* 返回值:	int
* 功能:
*		保证试卷时符合考试要求的。
* 作者:		范帅帅
* 编写明细:

*		完成时间	2009/02/18	范帅帅
*		修改时间	2009/02/21	范帅帅		
**************************************************/

int CPaper::GetPaper ()//判断卷子是否合格
{

	int nCnt=0;//计数器,判断是否满足10题要求

	const int CNT=1024;

	char szRead[CNT];//储存读取的文件,最大容量为CNT

	char szBuf[10];//储存转换为char型m_nCurPaper

	memset(szBuf,'\0',10);

	memset(szRead,'\0',1024);

	itoa(nTestNum+1,szBuf,10);

	ifstream Fr(READEXAM,ios::in|ios::binary);

	if(Fr.fail())
	{

		CShow* pTempCShow = new CShow;

		pTempCShow->ShowFailRead();

		delete pTempCShow;

		exit(-1);

	}
	
	do 
	{

		memset(szRead,'\0',1024);

		Fr.getline(szRead,CNT);

		if((szRead[31]==szBuf[0]&&szRead[32]==szBuf[1])||szRead[31]==szBuf[0])//找到该套卷子
		{

			do
			{	
				
				memset(szRead,'\0',1024);

				Fr.getline(szRead,CNT);

				if(!strcmp(szRead,"[QScore]\r"))
				{
					memset(szRead,'\0',1024);

					Fr.getline(szRead,CNT);

					//nT[nCnt]=atoi((char*)&szRead[nCnt]);

					//if(nT[nCnt]!=10)//试卷不符合要求

					if (strcmp(szRead, "10\r") != 0)
					{

						RandGetPaper();

						GetPaper();

						return -1;
					}
					else
					{

						++nCnt;

					}

				}

			}while(szRead[0]!='#');

			if (nCnt == 10)
			{

				return m_nCurPaper;

			}

		}

	} while(!Fr.eof());

	Fr.close();

	return -2;
} 

/**************************************************
* 函数名:  GetPaper ()
* 参数:
* 形参:     无
* 返回值:	int
* 功能:
*		返回随机数。
* 作者:		范帅帅
* 编写明细:

*		完成时间	2009/02/18	范帅帅
*		修改时间	2009/02/21	范帅帅		
**************************************************/

int CPaper::GetCurPaper()
{

	if(m_nCurPaper==1)
	{

		return m_nCurPaper;

	}

	else
	{

		return 0;

	}

}

⌨️ 快捷键说明

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