コード例 #1
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);
        }
コード例 #2
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);
                    }
                }
            }
        }
コード例 #3
0
 public void Update(CauHoiDeThi cauHoiDeThi)
 {
     _cauHoiDeThiRepository.Update(cauHoiDeThi);
 }
コード例 #4
0
 public CauHoiDeThi Add(CauHoiDeThi cauHoiDeThi)
 {
     return(_cauHoiDeThiRepository.Add(cauHoiDeThi));
 }
コード例 #5
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();
                }
            }
        }