예제 #1
0
        internal void OptionStudent(De_Thi examQuestion)
        {
            var ListOptionStudent = db.Da_SVLuaChon.Where(x => x.MaDeThi == examQuestion.MaDeThi).ToList();

            if (ListOptionStudent.Count > 0)
            {
                foreach (var item in ListOptionStudent)
                {
                    db.Da_SVLuaChon.Remove(item);
                    db.SaveChanges();
                }
            }
            foreach (var item in examQuestion.CauHoiDeThis)
            {
                foreach (var item1 in item.Kho_CauHoi.Dap_AN)
                {
                    if (item1.TrangThai == true)
                    {
                        Da_SVLuaChon da_SVLuaChon = new Da_SVLuaChon();
                        da_SVLuaChon.Ma_DAN  = item1.MA_DAN;
                        da_SVLuaChon.MaDeThi = examQuestion.MaDeThi;
                        db.Da_SVLuaChon.Add(da_SVLuaChon);
                        db.SaveChanges();
                    }
                }
            }
        }
예제 #2
0
        public JsonResult KetQuaHocTap()
        {
            try
            {
                var    session = (TaiKhoan)Session[ComMonStants.UserLogin];
                De_Thi thi     = (De_Thi)Session["dethi"];
                var    arr     = from c in thi.CauHoiDeThis.ToList()
                                 select new
                {
                    Ma_CH   = c.Kho_CauHoi.Ma_CauHoi,
                    NoiDung = c.Kho_CauHoi.NoiDung,
                    HinhAnh = c.Kho_CauHoi.HinhAnh,
                    Dapan   = from d in new TracNghiemOnlineDB().Dap_AN.Where(x => x.Ma_CauHoi == c.MaCauHoi).ToList()
                              select new
                    {
                        Ma_Dan  = d.MA_DAN,
                        NoiDung = d.NoiDung,
                        d.HinhAnh,
                        d.TrangThai,
                    }
                };

                Session["dethi"] = "";
                return(Json(new { arr, result = false }, JsonRequestBehavior.AllowGet));
            }
            catch { }
            return(Json(new { result = false }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Loald(string id)
        {
            string tgbd    = (string)Session["TGTHI"];
            var    ngay    = tgbd.Split('/');
            var    session = (TaiKhoan)Session[ComMon.ComMonStants.UserLogin];
            var    list    = new BoDeDao().ChapterStudy(long.Parse(id));
            var    Exem    = new De_Thi();

            try
            {
                Exem = (De_Thi)Session[ComMon.ComMonStants.ExamQuesTion];


                if (Exem == null)
                {
                    Exem = new BoDeDao().MixExemQuestion(list, session.TaiKhoan1);
                }
            }
            catch
            {
                Exem = new BoDeDao().MixExemQuestion(list, session.TaiKhoan1);
            }

            Session[ComMon.ComMonStants.ExamQuesTion] = Exem;
            DateTime data = new DateTime(int.Parse(ngay[0]), int.Parse(ngay[1]), int.Parse(ngay[2]), int.Parse(ngay[3]), int.Parse(ngay[4]), int.Parse(ngay[5])).AddMinutes(double.Parse(list.ThoiGianThi));

            ViewBag.GioThi = data.ToString("yyyy/MM/dd HH:mm:ss");
            ViewBag.DeThi  = (De_Thi)Exem;
            return(View());
        }
예제 #4
0
        internal void CreateTopic(De_Thi bo_De1, long mabai, TaiKhoan tk, LopHocPhan lopHocPhan)
        {
            bo_De1.CauHoiDeThis = new List <CauHoiDeThi>();
            TracNghiemOnlineDB db = new TracNghiemOnlineDB();
            var danhgia           = db.DS_BaiHoc.SingleOrDefault(x => x.Ma_Bai == mabai && x.MaSV.Equals(tk.TaiKhoan1));

            string[] ListCH = danhgia.ListCauHoi.Split('/');
            if ((ListCH.Length) == 40)
            {
                danhgia.SoCauDung  = 0;
                danhgia.SoCauSai   = 0;
                danhgia.ListCauHoi = "";
                ListCH             = danhgia.ListCauHoi.Split('/');
                db.SaveChanges();
            }

            else if (danhgia.SoCauSai - danhgia.SoCauDung > 30 && danhgia.SoCauSai + danhgia.SoCauDung > 55)
            {
                danhgia.SoCauDung  = 0;
                danhgia.SoCauSai   = 0;
                danhgia.ListCauHoi = "";
                ListCH             = danhgia.ListCauHoi.Split('/');
                db.SaveChanges();
            }

            Random(bo_De1, mabai, 2, "Nhận Biết", ListCH, lopHocPhan);
            Random(bo_De1, mabai, 2, "Thông Hiểu", ListCH, lopHocPhan);
            Random(bo_De1, mabai, 1, "Vận Dụng", ListCH, lopHocPhan);
            Random(bo_De1, mabai, 1, "Vận Dụng Cao", ListCH, lopHocPhan);
        }
예제 #5
0
 private void LuuDe(De_Thi deThi, NoiDungThi noiDungThi, int max, int min, LopHocPhan lopHocPhan)
 {
     for (int i = min; i < max; i++)
     {
         for (int j = 0; j < 4; j++)
         {
             if (j == 0)
             {
                 Random(deThi, (long)noiDungThi.noidung.Ma_Chuong, noiDungThi.BanMucDo()[i, j], "Nhận Biết", null, lopHocPhan);
             }
             if (j == 1)
             {
                 Random(deThi, (long)noiDungThi.noidung.Ma_Chuong, noiDungThi.BanMucDo()[i, j], "Thông Hiểu", null, lopHocPhan);
             }
             if (j == 2)
             {
                 Random(deThi, (long)noiDungThi.noidung.Ma_Chuong, noiDungThi.BanMucDo()[i, j], "Vận Dụng", null, lopHocPhan);
             }
             if (j == 3)
             {
                 Random(deThi, (long)noiDungThi.noidung.Ma_Chuong, noiDungThi.BanMucDo()[i, j], "Vận Dụng Cao", null, lopHocPhan);
             }
         }
     }
 }
예제 #6
0
        public De_Thi SearDethi(long?maDeThi)
        {
            De_Thi de_Thi = new De_Thi();

            de_Thi = db.De_Thi.Find(maDeThi);

            if (de_Thi != null)
            {
                de_Thi.CauHoiDeThis = db.CauHoiDeThis.Where(x => x.MaDeThi == de_Thi.MaDeThi).ToList();
                de_Thi.Da_SVLuaChon = db.Da_SVLuaChon.Where(x => x.MaDeThi == de_Thi.MaDeThi).ToList();

                foreach (var item1 in de_Thi.CauHoiDeThis)
                {
                    foreach (var item2 in item1.Kho_CauHoi.Dap_AN)
                    {
                        if (de_Thi.Da_SVLuaChon.ToList().Exists(x => x.Ma_DAN == item2.MA_DAN))
                        {
                            item2.TrangThai = true;
                        }
                        else
                        {
                            item2.TrangThai = false;
                        }
                    }
                }
            }
            return(de_Thi);
        }
예제 #7
0
        internal void UpdateDsThi(Phong_Thi phong, De_Thi deThi, string Masv, string trangthai)
        {
            var dSSV = db.DS_SVThi.SingleOrDefault(x => x.MaPhong == phong.MaPhong && x.Ma_SV.Equals(Masv));

            dSSV.MaDeThi   = deThi.MaDeThi;
            dSSV.TrangThai = trangthai;
            db.SaveChanges();
        }
        public ActionResult EditDethi(De_Thi de_Thi)
        {
            TracNghiemOnlineDB db = new TracNghiemOnlineDB();
            var de = db.De_Thi.Find(de_Thi.MaDeThi);

            de.DiemTru = de_Thi.DiemTru.Value;
            //    de.ThoiGianThi = de.ThoiGianThi;
            de.CanhCao = de_Thi.CanhCao;
            de.ChiTiet = de_Thi.ChiTiet;
            db.SaveChanges();
            var classRoom = (Phong_Thi)Session[ComMon.ComMonStants.ExamRoom];

            return(RedirectToAction("ToChucThi/" + classRoom.MaPhong));
        }
예제 #9
0
        public De_Thi MixExemQuestion(Bo_De bo_De, string SV)
        {
            Random random = new Random();
            De_Thi de_Thi = new De_Thi();

            de_Thi.Ma_BoDe = bo_De.Ma_BoDe;
            de_Thi.Ma_SV   = SV;

            de_Thi.TrangThai = true;
            var lisQuestion = (List <CauHoi>)bo_De.CauHois;
            int Lenght      = lisQuestion.Count;

            for (int i = 0; i < Lenght; i++)
            {
                int vt = random.Next(lisQuestion.Count);

                CauHoiDeThi cauHoi = new CauHoiDeThi();
                cauHoi.MaCauHoi = lisQuestion[vt].Ma_CauHoi;

                de_Thi.CauHoiDeThis.Add(cauHoi);
                lisQuestion.RemoveAt(vt);
            }
            de_Thi.ThoiGianThi = bo_De.ThoiGianThi;
            de_Thi.TrangThai   = true;

            de_Thi.DiemTru = 0;
            db.De_Thi.Add(de_Thi);
            db.SaveChanges();
            de_Thi.MaDeThi      = db.De_Thi.Select(x => x).ToList().Last().MaDeThi;
            de_Thi.CauHoiDeThis = db.CauHoiDeThis.Where(x => x.MaDeThi == de_Thi.MaDeThi).ToList();
            foreach (var item in de_Thi.CauHoiDeThis)
            {
                item.Kho_CauHoi = new CauHoiDao().Question(long.Parse(item.MaCauHoi.ToString()));
                foreach (var item1 in item.Kho_CauHoi.Dap_AN)
                {
                    item1.TrangThai = false;
                }
            }
            de_Thi.SinhVien           = db.SinhViens.SingleOrDefault(x => x.MaSV.Equals(SV));
            de_Thi.SinhVien.Lop       = new TracNghiemOnlineDB().Lops.Find(de_Thi.SinhVien.Ma_Lop);
            de_Thi.SinhVien.Lop.Nganh = new TracNghiemOnlineDB().Nganhs.Find(de_Thi.SinhVien.Lop.Ma_Nganh);
            de_Thi.Bo_De = bo_De;
            return(de_Thi);
        }
예제 #10
0
        private void Random(De_Thi De1, long mabai, int sl, string v, string[] ListCH, LopHocPhan lopHocPhan)
        {
            List <Kho_CauHoi> kho_CauHois = Nuberofquestion(mabai, v, lopHocPhan);

            Random random = new Random();

            if (kho_CauHois.Count > 0)
            {
                for (int i = 0; i < sl; i++)
                {
                    while (true)
                    {
                        int dem = 0;
                        int vt  = random.Next(kho_CauHois.Count);
                        try
                        {
                        }
                        catch
                        {
                            for (int j = 0; j < ListCH.Length - 1; j++)
                            {
                                if (kho_CauHois[vt].Ma_CauHoi == long.Parse(ListCH[j]))
                                {
                                    dem++;
                                    break;
                                }
                            }
                        }

                        if (dem == 0)
                        {
                            CauHoiDeThi cauHoi = new CauHoiDeThi();
                            cauHoi.MaDeThi    = De1.MaDeThi;
                            cauHoi.MaCauHoi   = kho_CauHois[vt].Ma_CauHoi;
                            cauHoi.Kho_CauHoi = kho_CauHois[vt];
                            De1.CauHoiDeThis.Add(cauHoi);
                            kho_CauHois.RemoveAt(vt);
                            break;
                        }
                        kho_CauHois.RemoveAt(vt);
                    }
                }
            }
        }
예제 #11
0
        internal void TaoDe(DanhGia da, int sl, int mucdo, LopHocPhan lopHocPhan)
        {
            De_Thi deThi = new De_Thi();

            foreach (var item in da.DanhGiaMucDo1)
            {
                item.SoCau = sl / da.DanhGiaMucDo1.Count;
            }
            for (int i = 0; i < sl % da.DanhGiaMucDo1.Count; i++)
            {
                da.DanhGiaMucDo1[i].SoCau++;
            }
            foreach (var item in da.DanhGiaMucDo1)
            {
                if (mucdo == 1)
                {
                    LuuDe(deThi, item, 1, 0, lopHocPhan);
                }
                if (mucdo == 2)
                {
                    LuuDe(deThi, item, 2, 1, lopHocPhan);
                }
                if (mucdo == 3)
                {
                    LuuDe(deThi, item, 3, 2, lopHocPhan);
                }
                if (mucdo == 4)
                {
                    LuuDe(deThi, item, 3, 4, lopHocPhan);
                }
            }
            foreach (var item1 in da.DanhGiaMucDo1)
            {
                item1.noidung.Kho_CauHoi = new List <Kho_CauHoi>();
                foreach (var item in deThi.CauHoiDeThis)
                {
                    if (item.Kho_CauHoi.Ma_Chuong == item1.noidung.Ma_Chuong)
                    {
                        item1.noidung.Kho_CauHoi.Add(item.Kho_CauHoi);
                    }
                }
            }
            da.ketQuaThi1 = deThi;
        }
예제 #12
0
        public JsonResult CauHoi(long id)
        {
            try
            {
                LopHocPhan lopHocPhan = (LopHocPhan)Session["LopHP"];
                var        session    = (TaiKhoan)Session[ComMonStants.UserLogin];
                //  TaiKhoan tk = (TaiKhoan)Session["user"];
                De_Thi   thi     = new De_Thi();
                var      danhgia = new TracNghiemOnlineDB().DS_BaiHoc.SingleOrDefault(x => x.Ma_Bai == id && x.MaSV.Equals(session.TaiKhoan1));
                string[] ListCH  = danhgia.ListCauHoi.Split('/');
                if (new TracNghiemOnlineDB().Kho_CauHoi.Where(x => x.Ma_Chuong == id && (x.NguoiTao.Equals(lopHocPhan.MaGV) && x.TrangThai == false) && x.Xoa == true).ToList().Count - ListCH.Length < 6)
                {
                    return(Json(new { code = 200 }, JsonRequestBehavior.AllowGet));
                }
                ;

                new TaoDeDao().CreateTopic(thi, id, session, lopHocPhan);
                var arr = from c in thi.CauHoiDeThis.ToList()
                          select new
                {
                    Ma_CH   = c.Kho_CauHoi.Ma_CauHoi,
                    NoiDung = c.Kho_CauHoi.NoiDung,
                    HinhAnh = c.Kho_CauHoi.HinhAnh,
                    Dapan   = from d in new TracNghiemOnlineDB().Dap_AN.Where(x => x.Ma_CauHoi == c.MaCauHoi).ToList()
                              select new
                    {
                        Ma_Dan    = d.MA_DAN,
                        NoiDung   = d.NoiDung,
                        TrangThai = false,
                        d.HinhAnh,
                    }
                };

                Session["dethi"] = thi;

                return(Json(new { arr, code = 100 }, JsonRequestBehavior.AllowGet));
            }
            catch { }
            return(Json(new { code = 200 }, JsonRequestBehavior.AllowGet));
        }
예제 #13
0
        public void Mark(DanhGia exam, int a)
        {
            TracNghiemOnlineDB db = new TracNghiemOnlineDB();
            // exam.Da_SVLuaChon = db.Da_SVLuaChon.Where(x => x.MaDeThi == exam.MaDeThi).ToList();
            int socauDung   = 0;
            var kho_CauHoi2 = new List <Kho_CauHoi>();
            var kho_CauHoi1 = new List <Kho_CauHoi>();
            var noiDungThis = new List <NoiDungThi>();

            foreach (var item in exam.ketQuaThi1.CauHoiDeThis)
            {
                var khocauhoi = db.Kho_CauHoi.Find(item.Kho_CauHoi.Ma_CauHoi);
                item.Kho_CauHoi = khocauhoi;
                kho_CauHoi2.Add(khocauhoi);
                foreach (var item1 in khocauhoi.Dap_AN)
                {
                    if (exam.ketQuaThi1.Da_SVLuaChon.ToList().Exists(x => x.Ma_DAN == item1.MA_DAN && item1.TrangThai == true))
                    {
                        socauDung++;
                        kho_CauHoi1.Add(khocauhoi);
                    }
                }
            }
            // Lay Ra So Cau sv da lam dung cua moi chuong
            foreach (var item0 in exam.DanhGiaMucDo1)
            {
                noiDungThis.Add(item0);

                item0.noidung.Kho_CauHoi = kho_CauHoi1.Where(x => x.Ma_Chuong == item0.noidung.Ma_Chuong).ToList();
            }
            DanhGia danhGia = new DanhGia();

            //danhGia.DanhGiaMucDo = new List<SoLuongChuong>();
            //danhGia.ketQuaThi = new KetQuaThi();
            exam.ketQuaThi1.Danh_Gia = new List <Modell.Danh_Gia>();
            for (int i = 0; i < exam.DanhGiaMucDo1.Count; i++)
            {
                db = new TracNghiemOnlineDB();
                double a1 = (double)(kho_CauHoi1.Where(X => X.MucDo.Equals("Nhận Biết") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)1;
                double a2 = (double)(kho_CauHoi1.Where(X => X.MucDo.Equals("Thông Hiểu") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)2;
                double a3 = (double)(kho_CauHoi1.Where(X => X.MucDo.Equals("Vận Dụng") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)3;
                double a4 = (double)(kho_CauHoi1.Where(X => X.MucDo.Equals("Vận Dụng Cao") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)4;



                exam.DanhGiaMucDo1[i].nhanbiet   = (kho_CauHoi1.Where(X => X.MucDo.Equals("Nhận Biết") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) + "/" + (kho_CauHoi2.Where(X => X.MucDo.Equals("Nhận Biết") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count);
                exam.DanhGiaMucDo1[i].Thonghieu  = (kho_CauHoi1.Where(X => X.MucDo.Equals("Thông Hiểu") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) + "/" + (kho_CauHoi2.Where(X => X.MucDo.Equals("Thông Hiểu") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count);
                exam.DanhGiaMucDo1[i].vandung    = (kho_CauHoi1.Where(X => X.MucDo.Equals("Vận Dụng") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) + "/" + (kho_CauHoi2.Where(X => X.MucDo.Equals("Vận Dụng") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count);
                exam.DanhGiaMucDo1[i].vandungcao = (kho_CauHoi1.Where(X => X.MucDo.Equals("Vận Dụng Cao") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) + "/" + (kho_CauHoi2.Where(X => X.MucDo.Equals("Vận Dụng Cao") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count);

                double b1 = (double)(kho_CauHoi2.Where(X => X.MucDo.Equals("Nhận Biết") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)1;
                double b2 = (double)(kho_CauHoi2.Where(X => X.MucDo.Equals("Thông Hiểu") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)2;
                double b3 = (double)(kho_CauHoi2.Where(X => X.MucDo.Equals("Vận Dụng") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)3;
                double b4 = (double)(kho_CauHoi2.Where(X => X.MucDo.Equals("Vận Dụng Cao") && X.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)4;



                double DG = 0;
                double A  = a1 + a2 + a3 + a4;
                double b  = b1 + b2 + b3 + b4;
                DG = (double)(A / b) * 10;
                double tile = 0;

                tile = (double)((double)(kho_CauHoi1.Where(x => x.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) / (double)(kho_CauHoi2.Where(x => x.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) * (double)100);

                Danh_Gia danhGia1 = new Danh_Gia();
                danhGia1.Diem     = DG;
                danhGia1.MaChuong = exam.DanhGiaMucDo1[i].noidung.Ma_Chuong;
                exam.ketQuaThi1.Danh_Gia.Add(danhGia1);
                tile = Math.Round(tile, 3);
                exam.DanhGiaMucDo1[i].danh_Gia           = new DanhGia1();
                exam.DanhGiaMucDo1[i].danh_Gia.NhanXet   = new string[100];
                exam.DanhGiaMucDo1[i].danh_Gia.SoCauDung = (kho_CauHoi1.Where(x => x.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count);
                exam.DanhGiaMucDo1[i].danh_Gia.TongCau   = kho_CauHoi2.Where(x => x.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count;

                exam.DanhGiaMucDo1[i].danh_Gia.NhanXet[0] = "Bạn làm đúng (" + (kho_CauHoi1.Where(x => x.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count) + "/" + kho_CauHoi2.Where(x => x.Ma_Chuong == exam.DanhGiaMucDo1[i].noidung.Ma_Chuong).ToList().Count + " đạt tỉ lệ " + tile + " %) \n";
                if (DG < 5)
                {
                    exam.DanhGiaMucDo1[i].danh_Gia.DanhGia = 1;

                    exam.DanhGiaMucDo1[i].danh_Gia.NhanXet[1] = "-Kiến thức phần này của bạn còn rất hạn chế điểm phần này bài test còn chưa cao.Bạn cần cố gắng cải thiện hơn nữa";
                }
                else if (DG >= 5 && DG < 7)
                {
                    exam.DanhGiaMucDo1[i].danh_Gia.DanhGia    = 2;
                    exam.DanhGiaMucDo1[i].danh_Gia.NhanXet[1] = "Kiến thức của bạn ở phần này chỉ ở mức trung bình. Bạn cần cố gắng hơn để cải thiện thành tích của mình";
                }

                else if (DG >= 7 && DG < 8.5)
                {
                    exam.DanhGiaMucDo1[i].danh_Gia.DanhGia    = 3;
                    exam.DanhGiaMucDo1[i].danh_Gia.NhanXet[1] = "Kiến thức của bạn ở phần này khá tốt. Bạn cố gắng thêm để đặt được số điểm cao hơn nữa";
                }
                else if (DG >= 8.5)
                {
                    exam.DanhGiaMucDo1[i].danh_Gia.DanhGia    = 4;
                    exam.DanhGiaMucDo1[i].danh_Gia.NhanXet[1] = "Kiến thức của bạn ở phần bạn rất làm rất tốt. Bạn cố gắng duy trì phong độ nhé";
                }
            }

            db = new TracNghiemOnlineDB();

            double Hediem = (double)((double)10 / (double)(exam.ketQuaThi1.CauHoiDeThis.Count));

            exam.ketQuaThi1.DiêmSo = Math.Round((double)((double)(socauDung) * (double)(Hediem)), 3);
            if (a == 1)
            {
                De_Thi deThi = new De_Thi();
                deThi.Ma_SV       = exam.ketQuaThi1.Ma_SV;
                deThi.NgayThi     = exam.ketQuaThi1.NgayThi;
                deThi.DiêmSo      = Math.Round((double)((double)(socauDung) * (double)(Hediem)), 3);
                deThi.ThoiGianThi = exam.ketQuaThi1.ThoiGianThi;
                deThi.MaMon       = exam.ketQuaThi1.MaMon;
                db.De_Thi.Add(deThi);
                db.SaveChanges();
                deThi.MaDeThi = db.De_Thi.Where(x => x.Ma_SV.Equals(deThi.Ma_SV)).ToList().Last().MaDeThi;
                int i = 0;
                foreach (var item in exam.ketQuaThi1.Danh_Gia)
                {
                    Danh_Gia danhGia1 = new  Danh_Gia();
                    danhGia1.Diem      = item.Diem;
                    danhGia1.MaDeThi   = deThi.MaDeThi;
                    danhGia1.MaChuong  = item.MaChuong;
                    danhGia1.TongCau   = exam.DanhGiaMucDo1[i].danh_Gia.SoCauDung;
                    danhGia1.SoCauDung = exam.DanhGiaMucDo1[i].danh_Gia.TongCau;
                    db.Danh_Gia.Add(danhGia1);
                    i++;
                    db.SaveChanges();
                }

                foreach (var item in exam.ketQuaThi1.CauHoiDeThis)
                {
                    CauHoiDeThi cau_Hoi = new CauHoiDeThi();
                    cau_Hoi.MaDeThi  = deThi.MaDeThi;
                    cau_Hoi.MaCauHoi = item.MaCauHoi;
                    db.CauHoiDeThis.Add(cau_Hoi);
                    db.SaveChanges();
                }
                foreach (var item in exam.ketQuaThi1.Da_SVLuaChon)
                {
                    Da_SVLuaChon da_Lua = new Da_SVLuaChon();
                    da_Lua.MaDeThi = deThi.MaDeThi;
                    da_Lua.Ma_DAN  = item.Ma_DAN;
                    db.Da_SVLuaChon.Add(da_Lua);
                    db.SaveChanges();
                }
            }
        }
예제 #14
0
        public DanhGia Mark(De_Thi exam)
        {
            exam.Da_SVLuaChon = db.Da_SVLuaChon.Where(x => x.MaDeThi == exam.MaDeThi).ToList();
            int socauDung = 0;
            var Bode      = db.Bo_De.Where(x => x.Ma_BoDe == exam.Ma_BoDe).ToList().First();

            List <Kho_CauHoi> kho_CauHois = new List <Kho_CauHoi>();
            List <Chuong_Hoc> chuonghoc1  = new List <Chuong_Hoc>();
            List <Chuong_Hoc> chuong2     = new List <Chuong_Hoc>();

            foreach (var item in exam.CauHoiDeThis)
            {
                kho_CauHois.Add(item.Kho_CauHoi);
            }
            //Lay Ra So Cau HOI cua moi chuong
            foreach (var item in db.Chuong_Hoc.Where(x => x.Ma_Mon == Bode.Ma_Mon).ToList())
            {
                Chuong_Hoc chuong = new Chuong_Hoc();
                chuong.Ma_Chuong  = item.Ma_Chuong;
                chuong.TenChuong  = item.TenChuong;
                chuong.Kho_CauHoi = new List <Kho_CauHoi>();
                chuonghoc1.Add(chuong);
            }

            foreach (var item in db.Chuong_Hoc.Where(x => x.Ma_Mon == Bode.Ma_Mon).ToList())
            {
                Chuong_Hoc chuong = new Chuong_Hoc();
                chuong.Ma_Chuong  = item.Ma_Chuong;
                chuong.Kho_CauHoi = new List <Kho_CauHoi>();
                chuong2.Add(chuong);
            }
            foreach (var item in chuonghoc1)
            {
                foreach (var item1 in kho_CauHois.Where(x => x.Ma_Chuong == item.Ma_Chuong).ToList())
                {
                    item.Kho_CauHoi.Add(item1);
                }
            }

            //Lay Ra So Cau sv da lam  dung cua moi chuong
            var kho_CauHoi1 = new List <Kho_CauHoi>();

            foreach (var item in exam.CauHoiDeThis)
            {
                item.Kho_CauHoi = new CauHoiDao().Question(item.Kho_CauHoi.Ma_CauHoi);
                foreach (var item1 in item.Kho_CauHoi.Dap_AN)
                {
                    if (exam.Da_SVLuaChon.ToList().Exists(x => x.Ma_DAN == item1.MA_DAN && item1.TrangThai == true))
                    {
                        socauDung++;
                        kho_CauHoi1.Add(item.Kho_CauHoi);
                    }
                }
            }
            //  Lay Ra So Cau sv da lam dung cua moi chuong
            foreach (var item0 in chuong2)
            {
                item0.Kho_CauHoi = kho_CauHoi1.Where(x => x.Ma_Chuong == item0.Ma_Chuong).ToList();
            }
            DanhGia danhGia = new DanhGia();

            danhGia.DanhGiaMucDo = new List <SoLuongChuong>();
            danhGia.ketQuaThi    = new KetQuaThi();
            for (int i = 0; i < chuonghoc1.Count; i++)
            {
                if (chuonghoc1[i].Kho_CauHoi.Count > 0)
                {
                    db = new TracNghiemOnlineDB();
                    Danh_Gia      danh_Gia      = new Danh_Gia();
                    SoLuongChuong soLuongChuong = new SoLuongChuong();
                    danh_Gia.MaChuong       = chuonghoc1[i].Ma_Chuong;
                    danh_Gia.MaDeThi        = exam.MaDeThi;
                    danh_Gia.SoCauDung      = chuong2[i].Kho_CauHoi.Count;
                    danh_Gia.TongCau        = chuonghoc1[i].Kho_CauHoi.Count;
                    soLuongChuong.TongSoCau = "" + danh_Gia.SoCauDung + "/" + danh_Gia.TongCau;
                    double a1 = (double)(chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Nhận Biết")).ToList().Count * 1);
                    double a2 = (double)(chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Thông Hiểu")).ToList().Count * 2);
                    double a3 = (double)(chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng")).ToList().Count * 3);
                    double a4 = (double)(chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng Cao")).ToList().Count * 4);


                    soLuongChuong.Chuong   = chuonghoc1[i];
                    soLuongChuong.nhanBiet = chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Nhận Biết")).ToList().Count + "/" +
                                             chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Nhận Biết")).ToList().Count;


                    soLuongChuong.thongHieu = chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Thông Hiểu")).ToList().Count + "/" +
                                              chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Thông Hiểu")).ToList().Count;

                    soLuongChuong.vandung = chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng")).ToList().Count + "/" +
                                            chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng")).ToList().Count;

                    soLuongChuong.vandungcao = chuong2[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng Cao")).ToList().Count + "/" +
                                               chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng Cao")).ToList().Count;
                    danhGia.DanhGiaMucDo.Add(soLuongChuong);

                    double b1 = (double)(chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Nhận Biết")).ToList().Count * 1);
                    double b2 = (double)(chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Thông Hiểu")).ToList().Count * 2);
                    double b3 = (double)(chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng")).ToList().Count * 3);
                    double b4 = (double)(chuonghoc1[i].Kho_CauHoi.Where(X => X.MucDo.Equals("Vận Dụng Cao")).ToList().Count * 4);

                    double DG = 0;
                    double A  = a1 + a2 + a3 + a4;
                    double b  = b1 + b2 + b3 + b4;
                    DG = (double)(A / b) * 10;
                    double tile = ((double)danh_Gia.SoCauDung / (double)danh_Gia.TongCau) * 100;
                    tile             = Math.Round((double)tile, 2);
                    danh_Gia.NhanXet = "Bạn làm đúng (" + soLuongChuong.TongSoCau + " đạt tỉ lệ " + tile + " %) \n                                                      ";
                    if (DG < 5)
                    {
                        danh_Gia.DanhGia = "Yếu";

                        danh_Gia.NhanXet += "-Kiến thức phần này của bạn còn rất hạn chế điểm phần này bài test còn chưa cao.Bạn cần cố gắng cải thiện hơn nữa";
                    }
                    if (DG >= 5 && DG < 7)
                    {
                        danh_Gia.DanhGia  = "Trung Bình";
                        danh_Gia.NhanXet += "Kiến thức của bạn ở phần này chỉ ở mức trung bình. Bạn cần cố gắng hơn để cải thiện thành tích của mình";
                    }

                    if (DG >= 7 && DG < 8.5)
                    {
                        danh_Gia.DanhGia  = "Khá";
                        danh_Gia.NhanXet += "Kiến thức của bạn ở phần này khá tốt. Bạn cố gắng thêm để đặt được số điểm cao hơn nữa";
                    }
                    if (DG >= 8.5)
                    {
                        danh_Gia.DanhGia  = "Giỏi";
                        danh_Gia.NhanXet += "Kiến thức của bạn ở phần bạn rất làm rất tốt. Bạn cố gắng duy trì phong độ nhé";
                    }

                    danh_Gia.Chuong_Hoc = db.Chuong_Hoc.Find(danh_Gia.MaChuong);
                    exam.Danh_Gia.Add(danh_Gia);
                }
            }


            double Hediem = (double)((double)10 / (double)(exam.CauHoiDeThis.Count));

            KetQuaThi ketQuaThi = new KetQuaThi();

            ketQuaThi.Ma_DeThi  = exam.MaDeThi;
            ketQuaThi.NgayThi   = DateTime.Now;
            ketQuaThi.SoCauDung = socauDung;
            ketQuaThi.SoCauSai  = exam.CauHoiDeThis.Count - socauDung;
            ketQuaThi.DiemSo    = (double)(socauDung) * (double)(Hediem);
            exam.Bo_De          = Bode;
            //    exam.Bo_De.
            ketQuaThi.De_Thi          = exam;
            ketQuaThi.De_Thi.SinhVien = db.SinhViens.Find(exam.Ma_SV);
            danhGia.ketQuaThi         = ketQuaThi;
            try
            {
                if (ketQuaThi.DiemSo >= 1 && exam.DiemTru != 0)
                {
                    var pt = (ketQuaThi.DiemSo * exam.DiemTru) / (double)100;
                    ketQuaThi.DiemSo = ketQuaThi.DiemSo - pt;
                }
            }
            catch { }
            ketQuaThi.DiemSo = Math.Round((double)ketQuaThi.DiemSo, 2);

            return(danhGia);
        }