笔试考试系统 ____试卷管理

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.解决方案

原文地址:https://www.cnblogs.com/zhangdongwei/p/13426446.html