3. Về năng lực chuyên môn
3.2 Cài đặt chương trình
•Cài đặt Client
Bước 1: Chạy file cài đặt
Bước 2: Nhấn “Next” để tiếp tục
Hình 3.2: Quá trình cài đặt
Bước 3: Chọn thư mục lưu trữ chương trình trên ỗ đĩa, nhấn “Next” để tiếp tục.
Bước 4: Nhấn “Next” để tiếp tục
Hình 3.4: Quá trình cài đặt(tt)
Bước 5: Nhấn “Close” để kết thúc quá trình cài đặt, người dùng vào thư mục chứa chương trình chạy file “XuLyTracNghiem.exe” để mở chương trình.
•Cài đặt Server: chạy file SettupServer.msi để thực hiện quá trình cài đặt, các bước cài đặc tương tự như cài đặt ở client.
Chương 4: KẾT LUẬN 4.1 Kết quả đạt được
- Vận dụng những kiến thức đã học vào thực tiễn.
- Cơ bản chúng em đã xây dựng được một hệ thống mà trong đó ta có thể lưu trữ được ngân hàng câu hỏi với định dạng: văn bản, công thức toán học, hình ảnh. Hệ thống có khả năng tạo đề thi và quản lý đề thi.
- Vì chưa khảo sát thực tế được nên hệ thống không thể tránh khỏi việc thiếu sót các chức năng khác của hệ thống.
4.2 Hạn chế
- Các chức năng còn thô sơ.
-Tốc độ sử lý tác vụ còn chậm, các dòng lệnh còn rờm rà và khó hiểu.
4.3 Hướng phát triển
- Hoàn thiện hồ sơ, chuyển hệ thống lên Internet. - Phát triển thêm chức năng thi trắc nghiệm online
-Tăng tính hiệu quả, tăng tốc độ tìm kiếm, tăng tính ổn định và tính bảo mật của chương trình.
PHỤ LỤC Một số code tiêu biểu của chương trình (1)Thêm câu hỏi
private void ReadWord(TextControl _tbNoidung) {
OpenFileDialog opd = new OpenFileDialog();
opd.Filter = "Word 2007-2010(*.docx)|*.docx|Word
2003(*.doc)|*.doc|Text(*.txt)|*.txt|RTF File(*.rtf)|*.rtf|All files(*.*)|*.*"; opd.FilterIndex = 1;
if (opd.ShowDialog() == DialogResult.OK && opd.FileName.Length > 0) {
_tbNoidung.Text = null;
Microsoft.Office.Interop.Word.Application wordApp = new
Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document doc = null;
object missing = System.Reflection.Missing.Value; object FileName = opd.FileName;
try
{
object nullobj = System.Reflection.Missing.Value; doc = wordApp.Documents.Open(
ref FileName, ref missing, ref missing, ref missing, ref nullobj, ref missing, ref missing, ref nullobj, ref missing, ref missing, ref missing, ref missing );
doc.ActiveWindow.Selection.WholeStory(); doc.ActiveWindow.Selection.Copy();
_tbNoidung.Focus(); _tbNoidung.Paste();
doc.Close(ref missing, ref missing, ref missing); } catch { } finally { if (doc != null) { doc = null; } if (wordApp != null) {
wordApp.Quit(ref missing, ref missing, ref missing); wordApp = null;
} } } }
public string xuly(string _noiDungCauHoi, string _maChuong) {
string cau = @"\'e2u"; string ketqua = "";
_noiDungCauHoi = _noiDungCauHoi.Substring(0, _noiDungCauHoi.Length - 2) + " " + cau + " 2:}";
string cauhoi = "",dapanA = "",dapanB = "",dapanC = "",dapanD = ""; int dauA = -1,dauB = -1,dauC = -1,dauD = -1,cuoiA = -1,cuoiB = -1,
cuoiC = -1,cuoiD = -1; int kitubatdaucau = -1; int kituketthuccau = -1; string dapanDung = ""; int demcauhoi = -1; int socauxuly = 0;
for (int i = 0; i < _noiDungCauHoi.Length - 5; i++) {
if (_noiDungCauHoi.Substring(i, 5).ToString() == cau)//tim thay cau hoi
{ try { if (_noiDungCauHoi.Substring(i + 5, 1).ToString() == ":") { kitubatdaucau = i + 6; demcauhoi++; } else if (_noiDungCauHoi.Substring(i + 6, 1).ToString() == ":") { kitubatdaucau = i + 7; demcauhoi++; } else if (_noiDungCauHoi.Substring(i + 7, 1).ToString() ==":") { kitubatdaucau = i + 8; demcauhoi++; } else
if (_noiDungCauHoi.Substring(i + 8, 1).ToString() =":") { kitubatdaucau = i + 9; demcauhoi++; } else if (_noiDungCauHoi.Substring(i + 9,1).ToString() == ":") { kitubatdaucau = i + 10; demcauhoi++; } } catch { } if (demcauhoi > 0) { cuoiD = i - 1; try {
dapanD = _noiDungCauHoi.Substring(dauD, cuoiD - dauD).ToString(); for (int t = dapanD.Length; t > 0; t--)
{ if (dapanD.Substring(t - 3, 3) == "par") { dapanD = dapanD.Substring(0, t + 3); break; } } } catch { } if (dapanD != "")
{
if (kiemtradapan(dapanD, "D") == "D") dapanDung = "D";
importDatabase(cauhoi, dapanA, dapanB, dapanC, dapanD, dapanDung,
int.Parse(_maChuong)); socauxuly++;
cauhoi = ""; dapanA = ""; dapanB = ""; dapanC = ""; dapanD = ""; dauA = -1; dauB = -1; dauC = -1; dauD = -1; cuoiA = -1; cuoiB = -1; cuoiC = -1; cuoiD = -1; kituketthuccau = -1; } } }
if (_noiDungCauHoi.Substring(i, 2).ToString() == "A." && kitubatdaucau != -1)
{
kituketthuccau = i - 1;
cauhoi = _noiDungCauHoi.Substring(kitubatdaucau, kituketthuccau - kitubatdaucau).ToString(); dauA = i + 2;
}
if (_noiDungCauHoi.Substring(i, 2).ToString() == "B." && dauA != -1) {
cuoiA = i - 1;
dapanA = _noiDungCauHoi.Substring(dauA, cuoiA - dauA).ToString(); dauB = i + 2;
if (kiemtradapan(dapanA, "A") == "A") dapanDung = "A";
}
if (_noiDungCauHoi.Substring(i, 2).ToString() == "C." && dauB != -1) {
cuoiB = i - 1;
dapanB = _noiDungCauHoi.Substring(dauB, cuoiB - dauB).ToString(); dauC = i + 2;
if (kiemtradapan(dapanB, "B") == "B") dapanDung = "B";
}
if (_noiDungCauHoi.Substring(i, 2).ToString() == "D." && dauC != -1) {
cuoiC = i - 1;
dapanC = _noiDungCauHoi.Substring(dauC, cuoiC - dauC).ToString(); dauD = i + 2; if (kiemtradapan(dapanC, "C") == "C") dapanDung = "C"; } } _noiDungCauHoi = "";
return ketqua = demcauhoi.ToString() + "," + socauxuly.ToString(); }
private string kiemtradapan(string caudapan, string dapan) {
string giatri = "";
for (int i = 0; i < caudapan.Length - 4; i++) { if (caudapan.Substring(i, 4).ToString() == "(**)") giatri = dapan; } return giatri; }
public void importDatabase(string cauhoi, string dapanA,
string dapanB, string dapanC, string dapanD, string
dapanDung, int _maChuong )
{ try
{
DataTable datatable = GetData("select * from Cauhoi"); DataRow dr = datatable.NewRow(); dr["noidung"] = cauhoi; dr["dapana"] = dapanA; dr["dapanb"] = dapanB; dr["dapanc"] = dapanC; dr["dapand"] = dapanD; dr["dapandung"] = dapanDung; dr["machuong"] = _maChuong.ToString(); datatable.Rows.Add(dr); Update(datatable); }
catch (Exception err) {
_error = err.Message.ToString(); }
(2) Hàm xuất đề thi
public string XuatDeThi(int[] _mangIDcauHoiXuat, string _maMonHoc, string[] _thongTinDeThi, int [] _coSo)
{
int ID = 0;//giá trị id trong bảng dethi
ID = getID("select * from Dethi");
luuDeThi(ID, _thongTinDeThi);//tiến hành lưu thông tin đề thi
for (int j = 0; j < _mangIDcauHoiXuat.Length; j++) {
luuChiTiet(ID, _mangIDcauHoiXuat[j], _coSo); }
string sql = "select macauhoi, noidung, dapana,
dapanb,dapanc,dapand,dapandung, cauhoi.machuong "; sql += "from monhoc,chuong,Cauhoi ";
sql += "where monhoc.mamh='" + _maMonHoc + "' and (monhoc.mamh=chuong.mamh and chuong.machuong=cauhoi.machuong)";
dtb = GetData(sql); int cauThu = 0;
string noidungFull = ""; string noiDungAllCauHoi = "";
for (int j = 0; j < _mangIDcauHoiXuat.Length; j++) {
foreach (DataRow i in dtb.Rows) {
if (int.Parse(i["macauhoi"].ToString()) == _mangIDcauHoiXuat[j]) {
cauThu++;
string noiDung1Cau = "";
string dapAnC = i[4].ToString() ;
bool dang1 = false;
for (int n = 1; n <=dapAnA.Length - 4; n++) { if (dapAnA.Substring(n,4) == @"\par") { dang1 = true; } } if (dang1 == true) {
noiDung1Cau = cauMH + cauThu.ToString() + ": "
+ i["noidung"].ToString() + @"\plain\f1\fs26 "; noiDung1Cau += "A. " + locdauhieunhanbiet(i[_coSo[0] + 1].ToString()) + @"\par "; noiDung1Cau += "B. " + locdauhieunhanbiet(i[_coSo[1] + 1].ToString()) + @"\par "; noiDung1Cau += "C. " + locdauhieunhanbiet(i[_coSo[2] + 1].ToString()) + @"\par "; noiDung1Cau += "D. " + locdauhieunhanbiet(i[_coSo[3] + 1].ToString()) + @"\par\par" + dauTAB;
} else
{
noiDung1Cau = cauMH + cauThu.ToString() + ": "
+ i["noidung"].ToString().Trim() + @"\plain\f1\fs26 "; noiDung1Cau += "A. " + locdauhieunhanbiet(i[_coSo[0] + 1].ToString()) + @"\tab\tab "; noiDung1Cau += "B. " + locdauhieunhanbiet(i[_coSo[1] + 1].ToString()) + @"\par ";
noiDung1Cau += "C. " + locdauhieunhanbiet(i[_coSo[2] + 1].ToString()) + @"\tab\tab "; noiDung1Cau += "D. " + locdauhieunhanbiet(i[_coSo[3] + 1].ToString()) + @"\par\par " + dauTAB;
}
noiDungAllCauHoi += noiDung1Cau; noiDung1Cau = null; } } } noidungFull = noiDungAllCauHoi + "}"; return noidungFull; }
private string locdauhieunhanbiet(string _caudapan) {
_caudapan = _caudapan.Trim(); string giatri = "";
bool dapandung = false; //lọc dấu hiệu nhận biết
for (int i = _caudapan.Length - 1; i >= 3; i--) {
if (_caudapan.Substring(i - 3, 4).ToString() == "(**)") {
giatri = _caudapan.Substring(0, i - 3).ToString() + _caudapan.Substring(i + 1, _caudapan.Length - i - 1).ToString(); dapandung = true; } } if (dapandung == false) giatri = _caudapan; //lọc \par
for (int k = 1; k <= giatri.Length-4; k++) {
{
giatri = giatri.Substring(0, k).ToString(); }
}
//Lọc \tab
string ketqua = giatri;
for (int k = giatri.Length - 1; k >= 3; k--) {
if (giatri.Substring(k - 3, 4).ToString() == @"\tab" && (k - 3) == (ketqua.Length - 4))
{
ketqua = giatri.Substring(0, k - 3).ToString(); }
}
giatri = ketqua; return giatri; }
public void luuDeThi(int _ID, string[] _thongTinDeThi) {
DataTable dtbDT = GetData("select * from Dethi"); DataRow dr = dtbDT.NewRow();
dr["id"] = _ID;
dr["madethi"] = int.Parse(_thongTinDeThi[0]); dr["maloaithi"] =int.Parse(_thongTinDeThi[1]); dr["kithi"] = _thongTinDeThi[2].ToString();
dr["ngaythi"] =Convert.ToDateTime(_thongTinDeThi[3]); dr["namhoc"] = _thongTinDeThi[4].ToString(); dr["ghichu"] = _thongTinDeThi[5].ToString(); dr["manv"] = _thongTinDeThi[6].ToString(); dtbDT.Rows.Add(dr); Update(dtbDT); }
public void luuChiTiet(int _ID,int _maCauHoi, int [] _coSo) {
DataTable dtbCT = GetData("select * from Chitietdethi"); DataRow dr = dtbCT.NewRow(); dr["macauhoi"] = _maCauHoi; dr["id"] = _ID; dr["coso1"] = _coSo[0].ToString(); dr["coso2"] = _coSo[1].ToString(); dr["coso3"] = _coSo[2].ToString(); dr["coso4"] = _coSo[3].ToString(); dtbCT.Rows.Add(dr); Update(dtbCT); }
TÀI LIỆU THAM KHẢO
[1] Các giải pháp lập trình C# của Nguyễn Ngọc Bình Dương và Thái Thanh Phong- Đại Học Dân Lập Văn Lang.
[2] Giáo tình công nghệ phần mềm của Thầy Phan Huy Khánh – Khoa công nghệ thông tin - Đại học bách khoa Đà Nẵng.
[3] Giáo trình phân tích thiết kế hệ thống của Th.S Trần Đắc Phiến. Nguồn Trường Đại học công nghiệp TP.HCM.
[4] Tìm hiểu C# và các ứng dụng của Phạm Văn Việt và Trương Lập Vỹ-Trường Đại Học Khoa Học Tự Nhiên.