zoukankan      html  css  js  c++  java
  • 笔试考试系统 ____试卷管理

    1.今日任务:

    试卷管理  组卷规则管理

     

     

     

    2.核心代码

    控制器代码:

      1 using Exam.BLL;
      2 using Exam.Model;
      3 using Exam.UI.Filter;
      4 using PagedList;
      5 using System;
      6 using System.Collections.Generic;
      7 using System.Data;
      8 using System.Linq;
      9 using System.Web;
     10 using System.Web.Mvc;
     11 
     12 
     13 namespace Exam.UI.Controllers
     14 {
     15     [StudentFilter]
     16     public class PaperRuleController : Controller
     17     {
     18         // GET: PaperRule
     19         public ActionResult Index(int page = 1)
     20         {
     21             IPagedList list = PaperRuleService.GetList(page);
     22             return View(list);
     23         }
     24         public ActionResult DeleteRuleDetail(int id)
     25         {
     26             try
     27             {
     28                 RuleDetailService.Delete(id);
     29             }
     30             catch (Exception ex)
     31             {
     32 
     33                 return Json(new { msg = "删除失败" + ex, success = false });
     34             }
     35             return Json(new { msg = "删除成功", success = false });
     36         }
     37         public ActionResult AddPaper()
     38         {
     39             return View();
     40         }
     41         public ActionResult RuleDetail(int id)
     42         {
     43             ViewBag.Paper =PaperRuleService.FindPaperRuleByID(id);
     44             ViewData["Num"] = RuleDetailService.GetDetailQuestionCount(id).ToString();
     45            
     46             var list = RuleDetailService.GetList(id);
     47             return View(list);
     48         }
     49         /// <summary>
     50         /// 编辑试卷规则详情信息
     51         /// </summary>
     52         /// <param name="id"></param>
     53         /// <returns></returns>
     54         public ActionResult EditRuleDetail(int id)
     55         {
     56             var list = LibraryService.GetAll();
     57             ViewBag.data = RuleDetailService.GetDetailByID(id);
     58             return View(list);
     59         }
     60         [HttpPost]
     61         public ActionResult EditRuleDetail(int questionnum, int libraryid, int ruleid,int paperruleid,int oldnum)
     62         {
     63             try
     64             {
     65                 ///查询规则详情中 试卷题目数量
     66                 int num = RuleDetailService.GetDetailQuestionCount(paperruleid);
     67                 //查询试卷规则 题目总数
     68 
     69                 var data = PaperRuleService.FindPaperRuleByID(paperruleid);
     70                 if (questionnum > data.QuestionNum - num+ oldnum)
     71                 {
     72                     return Json(new { msg = "修改失败,要添加的题目数量大于试卷题目总数", success = false });
     73                 }
     74                 else
     75                 {
     76                     Exam_RuleDetail detail = new Exam_RuleDetail { QuestionNum = questionnum, LibraryID = libraryid, PaperRuleID = paperruleid, RuleID=ruleid };
     77                     RuleDetailService.Update(detail);
     78                 }
     79             }
     80             catch (Exception ex)
     81             {
     82                 return Json(new { msg = "修改失败" + ex, success = false });
     83 
     84             }
     85             return Json(new { msg = "修改成功", success = false });
     86         }
     87 
     88         [HttpPost]
     89         public ActionResult AddPaper(string rulename, string rulestarttime, int time, int Score, int questionnum)
     90         {
     91             try
     92             {
     93                 DateTime dt = Convert.ToDateTime(rulestarttime);
     94                 Exam_PaperRule paperRule = new Exam_PaperRule
     95                 {
     96                     QuestionNum = questionnum,
     97                     RuleStartDate = dt,
     98                     RuleEndDate = dt.AddMinutes(time),
     99                     RuleName = rulename,
    100                     Score = Score,
    101                     States = true
    102                 };
    103                 PaperRuleService.InsertPaperRule(paperRule);
    104             }
    105             catch (Exception ex)
    106             {
    107                 return Json(new { msg = "添加失败" + ex, success = false });
    108 
    109             }
    110             return Json(new { msg = "添加成功", success = true });
    111         }
    112         /// <summary>
    113         /// 编辑试卷规则
    114         /// </summary>
    115         /// <param name="id"></param>
    116         /// <returns></returns>
    117         public ActionResult EditPaper(int id)
    118         {
    119             var list = PaperRuleService.FindPaperRuleByID(id);
    120             return View(list);
    121         }
    122         [HttpPost]
    123         public ActionResult EditPaper(int id,string rulename, string rulestarttime, int time, int Score, int questionnum)
    124         {
    125             try
    126             {
    127                 DateTime dt = Convert.ToDateTime(rulestarttime);
    128                 Exam_PaperRule paperRule = new Exam_PaperRule
    129                 {
    130                     QuestionNum = questionnum,
    131                     RuleStartDate = dt,
    132                     RuleEndDate = dt.AddMinutes(time),
    133                     RuleName = rulename,
    134                     Score = Score,
    135                     States = true,
    136                     PaperRuleID=id
    137                 };
    138                 PaperRuleService.Update(paperRule);
    139             }
    140             catch (Exception ex)
    141             {
    142                 return Json(new { msg = "添加失败" + ex, success = false });
    143 
    144             }
    145             return Json(new { msg = "添加成功", success = true });
    146         }
    147         public ActionResult AddPaperRule()
    148         {
    149 
    150             ViewBag.Library = LibraryService.GetAllEnable();
    151             var list = PaperRuleService.GetAll();
    152             
    153             return View(list);
    154         }
    155         [HttpPost]
    156         public ActionResult AddPaperRule(int questionnum, int libraryid, int paperruleid)
    157         {
    158             try
    159             {
    160                 int libraryquestionnum = QuestionService.GetCountByLibraryID(libraryid);
    161 
    162                 ///查询规则详情中 试卷题目数量
    163                 int num = RuleDetailService.GetDetailQuestionCount(paperruleid);
    164                 //查询试卷规则 题目总数
    165 
    166                 var data = PaperRuleService.FindPaperRuleByID(paperruleid);
    167                 if (questionnum > data.QuestionNum - num)
    168                 {
    169                     return Json(new { msg = "添加失败,要添加的题目数量大于试卷题目总数", success = false });
    170                 }
    171                 else if(libraryquestionnum < questionnum)
    172                 {
    173                     return Json(new { msg = "添加失败,题库中的题目数量小于您输入的数量", success = false });
    174                 }
    175                 else
    176                 {
    177                     Exam_RuleDetail detail = new Exam_RuleDetail { QuestionNum = questionnum, LibraryID = libraryid, PaperRuleID = paperruleid };
    178                     RuleDetailService.AddRuleDetail(detail);
    179                 }
    180             }
    181             catch (Exception ex)
    182             {
    183                 return Json(new { msg = "添加失败" + ex, success = false });
    184 
    185             }
    186             return Json(new { msg = "添加成功", success = true });
    187         }
    188 
    189         /// <summary>
    190         /// 禁用试卷
    191         /// </summary>
    192         /// <param name="id"></param>
    193         /// <returns></returns>
    194         public ActionResult EnablePaper(int id)
    195         {
    196             try
    197             {
    198                 int res = PaperRuleService.EnablePaperRule(id);
    199             }
    200             catch (Exception ex)
    201             {
    202                 return Json(new { msg = "启用失败" + ex, success = false });
    203 
    204             }
    205             return Json(new { msg = "启用成功", success = true });
    206         }
    207         /// <summary>
    208         /// 禁用试卷
    209         /// </summary>
    210         /// <param name="id"></param>
    211         /// <returns></returns>
    212         public ActionResult DisablePaper(int id)
    213         {
    214             try
    215             {
    216                 int res = PaperRuleService.DisablePaperRule(id);
    217             }
    218             catch (Exception ex)
    219             {
    220                 return Json(new { msg = "禁用失败" + ex, success = false });
    221 
    222             }
    223             return Json(new { msg = "禁用成功", success = true });
    224         }
    225     }
    226 }

    Service层方法:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Threading.Tasks;
      6 using Exam.Model;
      7 using Exam.DAL;
      8 using PagedList;
      9 
     10 namespace Exam.BLL
     11 {
     12     public class PaperRuleService
     13     {
     14         /// <summary>
     15         /// 获取所有试卷
     16         /// </summary>
     17         /// <param name="lmid"></param>
     18         /// <param name="page"></param>
     19         /// <returns></returns>
     20         public static IPagedList GetList(int page = 1)
     21         {
     22             using (ExamSysDBContext db = new ExamSysDBContext())
     23             {
     24                 int pagesize = 10;
     25                 IPagedList list = db.Exam_PaperRule.OrderBy(x => x.PaperRuleID).ToPagedList(page, pagesize);
     26                 return list;
     27             }
     28 
     29         }
     30 
     31         /// <summary>
     32         /// 获取所有试卷 状态正常的
     33         /// </summary>
     34         /// <param name="lmid"></param>
     35         /// <param name="page"></param>
     36         /// <returns></returns>
     37         public static IPagedList GetListEnable(int page = 1)
     38         {
     39             using (ExamSysDBContext db = new ExamSysDBContext())
     40             {
     41                 int pagesize = 10;
     42                 IPagedList list = db.Exam_PaperRule.Where(x=>x.States==true).OrderBy(x => x.PaperRuleID).ToPagedList(page, pagesize);
     43                 return list;
     44             }
     45 
     46         }
     47         public static List<Exam_PaperRule> GetAll()
     48         {
     49             using (ExamSysDBContext db = new ExamSysDBContext())
     50             {
     51                 var list = db.Exam_PaperRule.ToList();
     52                 return list;
     53             }
     54 
     55         }
     56         /// <summary>
     57         /// 增加试卷
     58         /// </summary>
     59         /// <param name="library"></param>
     60         /// <returns></returns>
     61         public static int InsertPaperRule(Exam_PaperRule paperRule)
     62         {
     63             using (ExamSysDBContext dBContext = new ExamSysDBContext())
     64             {
     65                 dBContext.Exam_PaperRule.Add(paperRule);
     66                 return dBContext.SaveChanges();
     67             }
     68 
     69         }
     70 
     71         /// <summary>
     72         /// 通过ID找到该试卷
     73         /// </summary>
     74         /// <param name="id"></param>
     75         /// <returns></returns>
     76         public static Exam_PaperRule FindPaperRuleByID(int id)
     77         {
     78             using (ExamSysDBContext dBContext = new ExamSysDBContext())
     79             {
     80                 var data = dBContext.Exam_PaperRule.Where(x => x.PaperRuleID == id).FirstOrDefault();
     81                 return data;
     82             }
     83 
     84         }
     85         /// <summary>
     86         /// 禁用试卷
     87         /// </summary>
     88         /// <param name="id"></param>
     89         /// <returns></returns>
     90         public static int DisablePaperRule(int id)
     91         {
     92             using (ExamSysDBContext dBContext = new ExamSysDBContext())
     93             {
     94                 var data = dBContext.Exam_PaperRule.Where(x => x.PaperRuleID == id).FirstOrDefault();
     95 
     96                 data.States = false;
     97                 return dBContext.SaveChanges();
     98             }
     99         }
    100         /// <summary>
    101         /// 启用试卷
    102         /// </summary>
    103         /// <param name="id"></param>
    104         /// <returns></returns>
    105         public static int EnablePaperRule(int id)
    106         {
    107             using (ExamSysDBContext dBContext = new ExamSysDBContext())
    108             {
    109 
    110                 var data = dBContext.Exam_PaperRule.Where(x => x.PaperRuleID == id).FirstOrDefault();
    111 
    112                 data.States = true;
    113                 return dBContext.SaveChanges();
    114             }
    115 
    116         }
    117         /// <summary>
    118         /// 修改试卷信息
    119         /// </summary>
    120         /// <param name="library"></param>
    121         /// <returns></returns>
    122         public static int Update(Exam_PaperRule paperRule)
    123         {
    124             using (ExamSysDBContext dBContext = new ExamSysDBContext())
    125             {
    126 
    127                 var data = dBContext.Exam_PaperRule.Where(x => x.PaperRuleID == paperRule.PaperRuleID).FirstOrDefault();
    128                 data.RuleName = paperRule.RuleName;
    129                 data.RuleStartDate = paperRule.RuleStartDate;
    130                 data.RuleEndDate = paperRule.RuleEndDate;
    131                 data.Score = paperRule.Score;
    132                 data.QuestionNum = paperRule.QuestionNum;
    133 
    134                 return dBContext.SaveChanges();
    135             }
    136         }
    137     }
    138 }
      1 using Exam.DAL;
      2 using Exam.Model;
      3 using PagedList;
      4 using System;
      5 using System.Collections.Generic;
      6 using System.Data;
      7 using System.Linq;
      8 using System.Text;
      9 using System.Threading.Tasks;
     10 
     11 namespace Exam.BLL
     12 {
     13     public class RuleDetailService
     14     {
     15         /// <summary>
     16         /// 获取当前规则试题数量总和
     17         /// </summary>
     18         /// <param name="ruleid"></param>
     19         /// <returns></returns>
     20         public static int GetDetailQuestionCount(int ruleid)
     21         {
     22             using (ExamSysDBContext db = new ExamSysDBContext())
     23             {
     24                 int num = db.Exam_RuleDetail.Where(x => x.PaperRuleID == ruleid).Select(x => x.QuestionNum).DefaultIfEmpty().Sum();
     25 
     26                 return num;
     27             }               
     28         }
     29         /// <summary>
     30         /// 查询试题规则详情
     31         /// </summary>
     32         /// <param name="ruleid"></param>
     33         /// <returns></returns>
     34         public static List<Exam_RuleDetail> GetDetailQuestion(int ruleid)
     35         {
     36             using (ExamSysDBContext db = new ExamSysDBContext())
     37             {
     38                 return db.Exam_RuleDetail.Where(x => x.PaperRuleID == ruleid).ToList();
     39             }
     40         }
     41         /// <summary>
     42         /// 添加规则详情
     43         /// </summary>
     44         /// <param name="detail"></param>
     45         /// <returns></returns>
     46         public static int AddRuleDetail(Exam_RuleDetail detail)
     47         {
     48             using (ExamSysDBContext db = new ExamSysDBContext())
     49             {
     50                 db.Exam_RuleDetail.Add(detail);
     51                 return db.SaveChanges();
     52             }
     53                 
     54         }
     55         /// <summary>
     56         /// 删除规则详情
     57         /// </summary>
     58         /// <param name="detailid"></param>
     59         /// <returns></returns>
     60         public static int Delete(int detailid)
     61         {
     62             using (ExamSysDBContext db = new ExamSysDBContext())
     63             {
     64                 var detai = db.Exam_RuleDetail.Where(x => x.RuleID == detailid).FirstOrDefault();
     65                 db.Exam_RuleDetail.Remove(detai);
     66                 return db.SaveChanges();
     67             }
     68                
     69         }
     70         /// <summary>
     71         /// 更新规则详情信息
     72         /// </summary>
     73         /// <param name="detail"></param>
     74         /// <returns></returns>
     75         public static int Update(Exam_RuleDetail detail)
     76         {
     77             using (ExamSysDBContext db = new ExamSysDBContext())
     78             {
     79 
     80                 var detai = db.Exam_RuleDetail.Where(x => x.RuleID == detail.RuleID).FirstOrDefault();
     81                 detai.LibraryID = detai.LibraryID;
     82                 detai.QuestionNum = detai.QuestionNum;
     83                 return db.SaveChanges();
     84             }
     85         }
     86         public static Exam_RuleDetail GetDetailByID(int id)
     87         {
     88             using (ExamSysDBContext db = new ExamSysDBContext())
     89             {
     90                 var data = db.Exam_RuleDetail.Where(x => x.RuleID == id).FirstOrDefault();
     91                 return data;
     92             }
     93                
     94         }
     95         public static IPagedList GetList(int id,int page = 1)
     96         {
     97             using (ExamSysDBContext db = new ExamSysDBContext())
     98             {
     99                 int pagesize = 10;
    100 
    101                 IPagedList list = db.Exam_RuleDetail.Where(x => x.PaperRuleID == id).OrderBy(x => x.RuleID).ToPagedList(page, pagesize);
    102 
    103 
    104                 return list;
    105             }
    106                 
    107         }
    108     }
    109 }

    3.遇到问题

    4.解决方案

  • 相关阅读:
    设计模式之一(策略模式)
    电脑开机进入不了XP界面
    IBM X系列笔记本通过U盘安装系统方法全攻略
    DELPHI 访问其它电脑文件(局域网)
    笔记本维修小插曲 屏幕不亮处理方式
    delphi 笔记
    电脑小子的新婚夜
    如何得到动态链接库的输出函数(delphi tdump.exe)
    sql server重复数据处理
    如何使用jQuery向asp.net Mvc传递复杂json数据Filter篇
  • 原文地址:https://www.cnblogs.com/zhangdongwei/p/13426446.html
Copyright © 2011-2022 走看看