• 笔试在线考试系统-专业管理、自动组卷功能调整


    今日完成任务:

    1、自动组卷功能调整

    添加了生成试卷时选择专业,考试类型(统一考试、随机试题、模拟测试3种)。管理员根据考生考试模式可以采用不同生成试卷方式。

    页面效果:

     核心代码:

    /// <summary>
    /// 自动组卷-视图
    /// </summary>
    /// <returns></returns>
    public ActionResult AddPaper()
    {
    ViewBag.Course = GetCourseInfoForDDL();
    ViewBag.PaperLibrary = GetPaperLibraryForDDL();
    ViewBag.Major = GetMajorForDDL();
    return View();
    }

    /// <summary>
    /// 自动组卷-功能实现
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    [HttpPost]
    public ActionResult AddPaper(FormCollection frm)
    {
    int PaperLibrary_Id = Convert.ToInt32(frm["PaperLibrary_Id"]);
    using (OnLineExamDB db = new OnLineExamDB())
    {
    //修改试卷考试时长
    using (TransactionScope transaction = new TransactionScope())
    {
    //模拟测试不需要添加开考时间
    DateTime? beginTime = null;
    if (frm["beginTime"].ToString() !="")
    {
    beginTime =Convert.ToDateTime(frm["beginTime"]);
    }
    PaperLibraryDetail pld = new PaperLibraryDetail {

    beginTime = beginTime,
    status = 1,
    counts = 50,
    exam_Type = Convert.ToInt32(frm["exam_Type"]),
    major_Id= Convert.ToInt32(frm["major_Id"]),
    PaperLibrary_Id= Convert.ToInt32(frm["PaperLibrary_Id"]),
    Duration= Convert.ToInt32(frm["Duration"])
    };
    db.PaperLibraryDetail.Add(pld);
    db.SaveChanges();

    if (Convert.ToInt32(frm["exam_Type"]) == 1) {
    //根据设置的科目数量生成相应的试题
    string couse_Ids = frm["couse_Id"].ToString();//获取传递来的课程编号
    string[] ids = couse_Ids.Split(',');
    foreach (string item in ids)
    {
    int id = Convert.ToInt32(item);
    List<QuestionBank> listBank = db.QuestionBank.Where(a => a.course_Id == id).ToList();
    List<QuestionBank> newListBank = new List<QuestionBank>();
    //创建随机数
    Random r = new Random();
    //获取该科目的数量
    int course_count = Convert.ToInt32(frm["course_counts " + id]);
    int[] result = new int[course_count];//定义一个数组用来保存生成过的数
    for (int i = 0; i < course_count; i++)//循环遍历5个数值
    {
    int m = r.Next(1, listBank.Count);//产生随机值
    if (!result.Contains(m))//判断产生的新数是否存在result中,如果不存在则添加,否则重新生成
    {
    result[i] = m;
    //取出listBank中第m道题,并添加到试卷表中
    Paper p = new Paper();
    p.Detail_Id = pld.Detail_Id;
    p.createTime = DateTime.Now;
    p.PaperLibrary_Id = PaperLibrary_Id;
    p.question_Id = listBank[m].question_Id;
    p.status = 1;
    db.Paper.Add(p);
    db.SaveChanges();
    }
    else
    {
    i--;
    }
    }
    }
    }
    transaction.Complete();
    }
    }
    ViewBag.Course = GetCourseInfoForDDL();
    ViewBag.PaperLibrary = GetPaperLibraryForDDL();
    ViewBag.Major = GetMajorForDDL();
    return View();
    }

    2、专业管理

    2.1专业列表

    页面效果:

    核心代码:

    /// <summary>
    /// 专业列表
    /// </summary>
    /// <returns></returns>
    public ActionResult MajorList()
    {
    List<MajorListModel> list = GetAllMajorList().Select(a=>new MajorListModel {
    major_Id=a.major_Id,
    major_Name=a.major_Name
    }).ToList();
    return View(list);
    }

    2.2添加专业

    页面效果:

     核心代码:

    /// <summary>
    /// 添加专业-视图
    /// </summary>
    /// <returns></returns>
    public ActionResult AddMajor()
    {
    return View();
    }
    /// <summary>
    /// 添加视图-功能实现
    /// </summary>
    /// <param name="model">专业信息</param>
    /// <returns></returns>
    [HttpPost]
    public ActionResult AddMajor(AddMajorModel model)
    {
    major m = new major();
    m.major_Name = model.major_Name;
    using (OnLineExamDB db = new OnLineExamDB())
    {
    db.major.Add(m);
    db.SaveChanges();
    }
    return View("MajorList");
    }

    2.3修改专业

    页面效果:

    核心代码:

    /// <summary>
    /// 修改专业-视图
    /// </summary>
    /// <param name="id">编号</param>
    /// <returns></returns>
    public ActionResult UpdateMajor(int id)
    {
    using (OnLineExamDB db = new OnLineExamDB())
    {
    UpdateMajorModel model = db.major.Where(a => a.major_Id == id).Select(a=>new UpdateMajorModel
    {
    major_Id=a.major_Id,
    major_Name=a.major_Name
    }).FirstOrDefault();
    return View(model);
    }
    }
    /// <summary>
    ///修改专业信息
    /// </summary>
    /// <param name="model">专业信息</param>
    /// <returns></returns>
    [HttpPost]
    public ActionResult UpdateMajor(UpdateMajorModel model)
    {
    using (OnLineExamDB db = new OnLineExamDB())
    {
    major m = db.major.First(a => a.major_Id == model.major_Id);
    m.major_Name = model.major_Name;
    db.SaveChanges();
    }
    return View("MajorList");
    }

    2.4删除专业

    页面效果:

    核心代码:

    [HttpPost]
    public ActionResult DelMajor(int id)
    {
    using (OnLineExamDB db = new OnLineExamDB())
    {
    major m = db.major.First(a => a.major_Id == id);
    m.Status = 2;
    db.SaveChanges();
    }
    return View("MajorList");
    }

    暂无遇到问题

  • 相关阅读:
    动态规划解按摩师的最长预约时间
    C#中WinForm的Tab键顺序调整顺序
    内网穿透工具对比FRP+NPS+Zerotier与NAT服务器测试
    " " 和 ' ' 混用拼接html字符串,且含有事件,事件中有参数
    HAProxy在Windows下实现负载均衡与反向代理
    react 导入src外部的文件 Relative imports outside of src/ are not supported.
    11_实例
    C#删除指定目录下文件(保留指定几天前的日志文件)
    【转】系统创建定时执行任务bat批处理删除指定N天前文件夹的文件
    mariadb导如数据异常------Error Code: 1153
  • 原文地址:https://www.cnblogs.com/chengyp/p/13362098.html
Copyright © 2020-2023  润新知