笔试考试系统 ____题目管理及选项管理

1.今日任务

题目管理及选项管理

在题库管理中 点击查看详情 可查看该题库下的所有题目信息

 

 

 

 

 控制器代码

 1 using Exam.BLL;
 2 using Exam.Model;
 3 using Exam.UI.Filter;
 4 using System;
 5 using System.Collections.Generic;
 6 using System.Linq;
 7 using System.Web;
 8 using System.Web.Mvc;
 9 
10 namespace Exam.UI.Controllers
11 {
12     [StudentFilter]
13     public class QuestionController : Controller
14     {
15         public ActionResult Index(int id = 0, int page = 1)
16         {
17             ViewBag.ID = id;
18             var list = QuestionService.GetList(id, page);
19             return View(list);
20         }
21        
22         // GET: Question
23         [HttpPost]
24         public ActionResult Index(string questionname = "", int page = 1)
25         {   
26             var list = QuestionService.GetList(questionname, page);
27             return View(list);
28         }
29         /// <summary>
30         /// 删除题目   会将挂题目的选项删除
31         /// </summary>
32         /// <param name="id"></param>
33         /// <returns></returns>
34         public ActionResult DeleteQuestion(int id)
35         {
36             try
37             {
38                 int res = QuestionService.Delete(id);
39             }
40             catch (Exception ex)
41             {
42                 return Json(new { msg = "删除失败" + ex, success = false });
43 
44             }
45             return Json(new { msg = "删除成功", success = true });
46         }
47 
48         public ActionResult Edit(int questionid)
49         {
50             //获取试题信息
51             var data = QuestionService.GetdataByID(questionid);
52             //获取题库信息
53             ViewBag.Lib = LibraryService.GetAll();
54             //获取选项信息
55             ViewBag.option = QuestionOptionsService.GetOptions(questionid);
56 
57             return View(data);
58         }
59         [HttpPost]
60         public ActionResult Edit(int questionid, int score, string questionparse, string questionanswer, int libraryid, string questiondescribe)
61         {
62             try
63             {
64                 Exam_Question question = new Exam_Question
65                 {
66                     LibraryID = libraryid,
67                     QuestionAnswer = questionanswer,
68                     QuestionDescribe = questiondescribe,
69                     QuestionID = questionid,
70                     QuestionParse = questionparse,
71                     Score = score
72                 };
73                 QuestionService.Update(question);
74             }
75             catch (Exception ex)
76             {
77 
78                 return Json(new { msg = "修改失败" + ex, success = false });
79             }
80 
81             return Json(new { msg = "修改成功", success = true });
82 
83         }
84     }
85 }

Service层对应代码;

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using Exam.Model;
  6 using Exam.DAL;
  7 using System.Threading.Tasks;
  8 using PagedList;
  9 
 10 namespace Exam.BLL
 11 {
 12     public class QuestionService
 13     {
 14         /// <summary>
 15         /// 试题列表
 16         /// </summary>
 17         /// <param name="page"></param>
 18         /// <returns></returns>
 19 
 20         public static IPagedList GetList(string questionname, int page)
 21         {
 22             using (ExamSysDBContext db = new ExamSysDBContext())
 23             {
 24                 int pagesize = 10;
 25                 IPagedList list = db.Exam_Question.Where(x => x.QuestionDescribe.Contains(questionname)).OrderBy(x => x.QuestionID).ToPagedList(page, pagesize);
 26                 return list;
 27             }
 28 
 29         }
 30         public static IPagedList GetList(int id, int page)
 31         {
 32             using (ExamSysDBContext db = new ExamSysDBContext())
 33             {
 34                 int pagesize = 10;
 35                 IPagedList list;
 36                 if (id != 0)
 37                 {
 38                     list = db.Exam_Question.Where(x => x.LibraryID == id).OrderBy(x => x.QuestionID).ToPagedList(page, pagesize);
 39                 }
 40                 else
 41                 {
 42                     list = db.Exam_Question.OrderBy(x => x.QuestionID).ToPagedList(page, pagesize);
 43                 }
 44                 return list;
 45             }
 46 
 47         }
 48         public static Exam_Question GetdataByID(int id)
 49         {
 50 
 51             ExamSysDBContext db = new ExamSysDBContext();
 52 
 53             return db.Exam_Question.Where(x => x.QuestionID == id).FirstOrDefault();
 54 
 55 
 56         }
 57         /// <summary>
 58         /// 添加试题
 59         /// </summary>
 60         /// <param name="question"></param>
 61         /// <returns></returns>
 62         public static int Add(Exam_Question question)
 63         {
 64             using (ExamSysDBContext db = new ExamSysDBContext())
 65             {
 66                 db.Exam_Question.Add(question);
 67                 db.SaveChanges();
 68                 return question.QuestionID;
 69             }
 70 
 71         }
 72         /// <summary>
 73         /// 更新试题信息
 74         /// </summary>
 75         /// <param name="question"></param>
 76         /// <returns></returns>
 77         public static int Update(Exam_Question question)
 78         {
 79             using (ExamSysDBContext db = new ExamSysDBContext())
 80             {
 81                 var data = db.Exam_Question.Where(x => x.QuestionID == question.QuestionID).FirstOrDefault();
 82                 data.QuestionAnswer = question.QuestionAnswer;
 83                 data.Score = question.Score;
 84                 data.QuestionParse = question.QuestionParse;
 85                 data.QuestionDescribe = question.QuestionDescribe;
 86                 return db.SaveChanges();
 87             }
 88 
 89         }
 90 
 91         public static int GetCountByLibraryID(int id)
 92         {
 93             using (ExamSysDBContext db = new ExamSysDBContext())
 94             {
 95                 //删除当前题目下所有选项
 96                 var list = db.Exam_Question.Where(x => x.LibraryID == id);
 97                 if(list==null)
 98                 {
 99                     return 0;
100                 }
101                 else
102                 {
103                     return list.Count();
104                 }
105             }
106         }
107         public static int Delete(int id)
108         {
109 
110             using (ExamSysDBContext db = new ExamSysDBContext())
111             {
112                 //删除当前题目下所有选项
113                 var list = db.Exam_QuestionOptions.Where(x => x.QuestionID == id).ToList();
114                 db.Exam_QuestionOptions.RemoveRange(list);
115                 //删除题目
116                 var data = db.Exam_Question.Where(x => x.QuestionID == id).FirstOrDefault();
117                 db.Exam_Question.Remove(data);
118                 return db.SaveChanges();
119             }
120 
121         }
122         /// <summary>
123         /// 获得题目的分值
124         /// </summary>
125         /// <param name="questionid"></param>
126         /// <returns></returns>
127         public static int GetScore(int questionid)
128         {
129             using (ExamSysDBContext db = new ExamSysDBContext())
130             {
131                 var data = db.Exam_Question.Where(x => x.QuestionID == questionid).FirstOrDefault();
132                 return data.Score;
133             }
134         }
135 
136     }
137 }

选项管理

在题目列表内点击查看详情即可查看改题目下的选项信息:

 

 

 

 

 

 可对选项进行修改或者删除操作

控制器对应代码:

 1 using Exam.BLL;
 2 using Exam.Model;
 3 using Exam.UI.Filter;
 4 using System;
 5 using System.Collections.Generic;
 6 using System.Linq;
 7 using System.Web;
 8 using System.Web.Mvc;
 9 
10 namespace Exam.UI.Controllers
11 {
12     [StudentFilter]
13     public class QuestionOptionController : Controller
14     {
15         // GET: QuestionOption    
16         public int questiuonid = 0;
17         public ActionResult Index(int id, int page = 1)
18         {
19             questiuonid = id;
20             var list = QuestionOptionsService.GetList(id, page);
21             return View(list);
22         }
23 
24         public ActionResult Edit(int optionid)
25         {
26             ViewBag.Questionid = questiuonid;
27             ViewBag.Optionid = optionid;
28             var data = QuestionOptionsService.GetOption(optionid);
29 
30             return View(data);
31         }
32         [HttpPost]
33         public ActionResult Edit(int id, string optioncode, string optiondescribe)
34         {
35             try
36             {
37                 Exam_QuestionOptions option = new Exam_QuestionOptions
38                 {
39                     OptionCode = optioncode,
40                     OptionDescribe = optiondescribe,
41                     OptionID = id
42                 };
43                 QuestionOptionsService.Update(option);
44             }
45             catch (Exception ex)
46             {
47 
48                 return Json(new { msg = "修改失败" + ex, success = false });
49             }
50             return Json(new { msg = "修改成功", success = false });
51         }
52 
53         /// <summary>
54         /// 删除题目选项
55         /// </summary>
56         /// <param name="id"></param>
57         /// <returns></returns>
58         public ActionResult Delete(int id)
59         {
60             try
61             {
62                 QuestionOptionsService.Delete(id);
63             }
64             catch (Exception ex)
65             {
66 
67                 return Json(new { msg = "删除失败" + ex, success = false });
68             }
69             return Json(new { msg = "删除成功", success = true });
70         }
71     }
72 }

Service对应方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Exam.DAL;
using Exam.Model;
using System.Threading.Tasks;
using System.Data.Entity;
using PagedList;
using System.Security.Cryptography.X509Certificates;

namespace Exam.BLL
{
    public class QuestionOptionsService
    {
        public static IPagedList GetList(int questionid, int page)
        {
            using (ExamSysDBContext db = new ExamSysDBContext())
            {
                int pagesize = 10;
                IPagedList list;
                if (questionid != 0)
                {
                    list = db.Exam_QuestionOptions.Where(x => x.QuestionID == questionid).OrderBy(x => x.OptionID).ToPagedList(page, pagesize);
                }
                else
                {
                    list = db.Exam_QuestionOptions.OrderBy(x => x.OptionID).ToPagedList(page, pagesize);
                }
                return list;
            }

        }
        /// <summary>
        /// 通过选项值 和题目编号获取正确选项编号
        /// </summary>
        /// <param name="optioncode"></param>
        /// <param name="questionID"></param>
        /// <returns></returns>
        public static string GetOptionID(string optioncode, int questionID)
        {
            using (ExamSysDBContext db = new ExamSysDBContext())
            {
                var data = db.Exam_QuestionOptions.Where(X => optioncode.Contains(X.OptionCode) && X.QuestionID == questionID).ToList();
                string Temp = "";
                string temp2 = "";
                foreach (var item in data)
                {
                    Temp += item.OptionID + ",";
                }
                if (Temp.Length>0)
                {
                     temp2 = Temp.Remove(Temp.Length - 1, 1);
                }
               
                return temp2;
            }
           
        }
        /// <summary>
        /// 批量添加试题
        /// </summary>
        /// <param name="lists"></param>
        public static void AddOptions(List<Exam_QuestionOptions> lists)
        {
            using (ExamSysDBContext db = new ExamSysDBContext())
            {
                db.Exam_QuestionOptions.AddRange(lists);
                db.SaveChanges();
            }

        }
        /// <summary>
        /// 通过题目编号查询 下面的选项
        /// </summary>
        /// <param name="questionid"></param>
        /// <returns></returns>
        public static List<Exam_QuestionOptions> GetOptions(int questionid)
        {
            using (ExamSysDBContext db = new ExamSysDBContext())
            {
                return db.Exam_QuestionOptions.Where(x => x.QuestionID == questionid).ToList();
            }

        }

        /// <summary>
        /// 根据选项ID获取
        /// </summary>
        /// <param name="optionid"></param>
        /// <returns></returns>
        public static Exam_QuestionOptions GetOption(int optionid)
        {
            using (ExamSysDBContext db = new ExamSysDBContext())
            {
                return db.Exam_QuestionOptions.Where(x => x.OptionID == optionid).FirstOrDefault();
            }

        }
        /// <summary>
        /// 更新选项
        /// </summary>
        /// <returns></returns>
        public static int Update(Exam_QuestionOptions option)
        {
            using (ExamSysDBContext db = new ExamSysDBContext())
            {
                var data = db.Exam_QuestionOptions.Where(x => x.OptionID == option.OptionID).FirstOrDefault();

                data.OptionDescribe = option.OptionDescribe;
                data.OptionCode = option.OptionCode;
                data.UpdateTime = DateTime.Now;
                return db.SaveChanges();
            }


        }
        public static int Delete(int id)
        {
            using (ExamSysDBContext db = new ExamSysDBContext())
            {
                var data = db.Exam_QuestionOptions.Where(x => x.OptionID == id).FirstOrDefault();
                db.Exam_QuestionOptions.Remove(data);
                return db.SaveChanges();
            }

        }
    }
}

修改选项信息页面效果

 

 

 

 

 

 

 

 3.遇到问题

4.解决方案

 

posted @ 2020-08-03 15:00  Wilson_it  阅读(230)  评论(0编辑  收藏  举报