筆試考試系統-參加考試的驗證、歷史錯題集、考試管理、實時監控


今日任務:

1、參加考試的驗證

1.1頁面效果:

如果該校區/機構未開放次考試模式,則給與相應提示,並且不能進入考試頁面。

 

1.2核心代碼:

前台ajax請求

<script type="text/javascript">
function gotoIndex(types) {
var id = $("#PaperLibrary").val();
$.ajax({
type: "post",
url: "/Exam/CheckPaperDetails",
dataType: "json",
data: { "id": id ,"types":types},
success: function (result) {
if (result.states != 0) {
alert(result.t);
}
else {
if (types == 1) {
window.top.location.href = "/Exam/ExamIndex/" + id;
}
else if (types == 2) {
window.top.location.href = "/Exam/Index/" + id;
} else {
window.top.location.href = "/Exam/ExamTest/" + id;
}
}
}
})

}

</script>

 

controller核心代碼:

/// <summary>
/// 進入考試界面驗證是否有資格加入考試
/// </summary>
/// <param name="id">卷庫編號</param>
/// <param name="types">考試類型</param>
/// <returns></returns>
public ActionResult CheckPaperDetails(int id, int types)
{
OnLineExamDB db = new OnLineExamDB();
if (types == 2)
{
//1:該校區/機構未設置該模式 2:該校區/機構未到考試開放時間 3:該校區/機構模式未設置任何考試科目
//獲取卷庫、專業,查詢到要生成的試卷規則,根據規則生成試卷並添加到表中、顯示在頁面
StuInfo stu = System.Web.HttpContext.Current.Session["StuInfo"] as StuInfo;
if (stu == null)
{
return RedirectToAction("/Exam/UserCenter");
}

List<PaperLibraryDetail> pdlist = db.PaperLibraryDetail.ToList();
if (pdlist == null)
{
return Json(new { t = "該校區/機構未設置該模式", states = 1 });
}
PaperLibraryDetail p = pdlist.First(a => a.major_Id == stu.major_Id && a.PaperLibrary_Id == id && a.exam_Type == 2);
DateTime? typeTime = p.beginTime;
TimeSpan tbegin = Convert.ToDateTime(typeTime).TimeOfDay;
TimeSpan tend = Convert.ToDateTime(typeTime).AddHours(1).TimeOfDay;
TimeSpan tnow = DateTime.Now.TimeOfDay;
if (tnow < tbegin && tnow > tend)
{
return Json(new { t = "該校區/機構未到考試開放時間", states = 2 });
}
List<PaperLibraryDetailCourse> pc = db.PaperLibraryDetailCourse.Where(a => a.Detail_Id == p.Detail_Id).ToList();
if (pc.Count <= 0)
{
return Json(new { t = "該校區/機構的隨機試題模式未設置任何考試科目", states = 3 });
}
}
else if (types == 1)
{

List<PaperLibraryDetail> pdlist = db.PaperLibraryDetail.ToList();
if (pdlist == null)
{
return Json(new { t = "該校區/機構未設置該模式", states = 1 });
}
StuInfo stu = System.Web.HttpContext.Current.Session["StuInfo"] as StuInfo;
List<Paper> list = db.Paper.Where(a => a.status == 1 && a.PaperLibrary_Id == id).ToList();
if (list.Count <= 0)
{
return Json(new { t = "沒有任何試題,請聯系管理員添加試題!", states = 3 });
}
PaperLibraryDetail p = pdlist.First(a => a.major_Id == stu.major_Id && a.PaperLibrary_Id == id && a.exam_Type == 2);
DateTime? typeTime = p.beginTime;
TimeSpan tbegin = Convert.ToDateTime(typeTime).TimeOfDay;
TimeSpan tend = Convert.ToDateTime(typeTime).AddHours(1).TimeOfDay;
TimeSpan tnow = DateTime.Now.TimeOfDay;
if (tnow < tbegin && tnow > tend)
{
return Json(new { t = "該校區/機構未到考試開放時間", states = 2 });
}
}
return Json(new { t = "正常", states = 0 });

}

2、歷史錯題集

2.1頁面效果

 

 2.2核心代碼

/// <summary>
/// 歷史錯題集
/// </summary>
/// <returns></returns>
public ActionResult ErrorList()
{
using (OnLineExamDB db = new OnLineExamDB())
{
StuInfo stu = System.Web.HttpContext.Current.Session["StuInfo"] as StuInfo;
var list = from a in db.ScoreInfo
from b in db.Paper
from c in db.QuestionBank
where a.result == 2 && b.stu_Id == stu.stu_Id && c.question_Id == b.question_Id && a.paper_Id == b.paper_Id
select new {
a,
b,
c
};
List<ErrorQuestionModel> resultlist = new List<ErrorQuestionModel>();
foreach (var item in list)
{
ErrorQuestionModel errorquestion = new ErrorQuestionModel();
errorquestion.paper_Id =Convert.ToInt32(item.a.paper_Id);
errorquestion.answer_Owner = item.a.answer_Owner;
errorquestion.createTime = item.a.createTime;
errorquestion.question_Title = item.c.question_Title;
errorquestion.question_Id = item.b.question_Id;
errorquestion.question_Option1 = item.c.question_Option1;
errorquestion.question_Option2 = item.c.question_Option2;
errorquestion.question_Option3 = item.c.question_Option3;
errorquestion.question_Option4 = item.c.question_Option4;
errorquestion.result = item.a.result;
errorquestion.rightAnswer = item.c.rightAnswer;
resultlist.Add(errorquestion);
}
return View(resultlist);
}
}

3、考試管理

3.1頁面效果

 

 3.2核心代碼

/// <summary>
/// 考試管理列表頁
/// </summary>
/// <returns></returns>
public ActionResult ExamManager()
{
using (OnLineExamDB db = new OnLineExamDB())
{
List<StudentListModel> list = db.StuInfo.Where(a => a.Status != 2).Select(a => new StudentListModel
{
stu_Id = a.stu_Id,
stu_No = a.stu_No,
stu_Name = a.stu_Name,
password = a.password,
LoginTimes = a.LoginTimes,
LoginDate = a.LoginDate,
Status = a.Status,
ClassName = a.ClassName,
Institution_Name = a.Institution.i_Name,
major_Name = a.major.major_Name
}).ToList();
return View(list);
}
}
/// <summary>
/// 修改考生狀態-視圖
/// </summary>
/// <param name="id">主鍵編號</param>
/// <returns></returns>
public ActionResult UpdateExamState(int id)
{
using (OnLineExamDB db = new OnLineExamDB())
{
UpdateStudentModel model = db.StuInfo.Where(a => a.stu_Id == id).Select(a => new UpdateStudentModel
{
institution_Id = a.institution_Id,
stu_Id = a.stu_Id,
LoginDate = a.LoginDate,
LoginTimes = a.LoginTimes,
password = a.password,
Status = a.Status,
stu_Name = a.stu_Name,
stu_No = a.stu_No,
major_Id = a.major_Id,
ClassName=a.ClassName
}).FirstOrDefault();
ViewBag.Institution = GetInstitutionForDDL();
ViewBag.Major = GetMajorForDDL();
return View(model);
}
}
/// <summary>
/// 修改考生狀態-實現功能
/// </summary>
/// <param name="model">學生信息</param>
/// <returns></returns>
[HttpPost]
public ActionResult UpdateExamState(UpdateStudentModel model)
{
using (OnLineExamDB db = new OnLineExamDB())
{
StuInfo stu = db.StuInfo.First(a => a.stu_Id == model.stu_Id);
stu.Status = model.Status;
db.SaveChanges();
ViewBag.Major = GetMajorForDDL();
return RedirectToAction("ExamManager");
}
}

4、實施監控

為防止學生考試期間出現作弊行為,禁止學生操作復制粘貼功能,禁止右鍵操作

4.1核心代碼:

//禁用右鍵、復制粘貼
document.oncontextmenu = new Function("event.returnValue=false");
document.onselectstart = new Function("event.returnValue=false");

 

5、燃盡圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM