BÁO CÁO TIỂU LUẬN MÔN LẬP TRÌNH C# 2 ĐỀ TÀI : Chương trình trắc nghiệm Thi giấy phép lái xe 2 bánh

30 4.6K 33
BÁO CÁO TIỂU LUẬN MÔN LẬP TRÌNH C# 2  ĐỀ TÀI : Chương trình trắc nghiệm     Thi giấy phép lái xe 2 bánh

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BÁO CÁO TIỂU LUẬN MÔN LẬP TRÌNH C# 2 ĐỀ TÀI : Chương trình trắc nghiệm Thi giấy phép lái xe 2 bánh

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM Khoa Cơng Nghệ Thơng Tin  BÁO CÁO TIỂU LUẬN MƠN LẬP TRÌNH C# ĐỀ TÀI : Chương trình trắc nghiệm Thi giấy phép lái xe bánh GVHD : Trần Thị Anh Thi SVTH : Phan Thế Tuấn – 10147611 TP.HCM Ngày 18 tháng 11 năm 2012 GV : Trần Thị Anh Thi Mơn : Lập Trình Window MỤC LỤC Trang GV : Trần Thị Anh Thi Mơn : Lập Trình Window CHƯƠNG : GIỚI THIỆU SƠ LƯỢC ĐỀ TÀI Mục đích đề tài Tạo phần mềm thi trắc nghiệm thi giấy phép lái xe bánh, giúp người dùng tạo đề thi, nhập câu hỏi, quản lý tài khoản phân quyền cho tài khoản, tùy theo quyền hạn mà tài khoản hạn chế thao tác thực phần mềm thêm, xóa, sửa Phần mềm thực thao tác in ấn xuất tập tin liệu câu hỏi, đáp án, danh sách người dùng thí sinh dạng file Excel, PDF, Word … Phần mềm giúp cho người dùng đánh trắc nghiệm máy, câu hỏi có đến đáp án, người dùng thi thật thi thử, thi thật người dùng phải có mã thí sinh vào thi được, thi xong điểm lưu vào database, thi lần điểm thí sinh update lại Thi thử thí sinh nhập mã số tùy ý đc thi thử liệu không lưu vào databse, thi xong thí sinh đc biết kết Yêu cầu đặt • • • • • • • • • Tạo đề thi, xóa đề thi Thêm, xóa, sửa người dùng, thay đổi mật Thêm, xóa, sửa thí sinh Xem danh sách câu hỏi theo đề thi, sửa câu hỏi đáp án In danh sách câu hỏi đáp án In danh sách thí sinh, người dùng, danh sách kết Tạo chức thi thi thử Cho phép chọn câu thi để người dùng di chuyển nhanh đến câu chưa làm Đáp án câu hỏi load lên form theo cách khơng có thứ tự Trang GV : Trần Thị Anh Thi Môn : Lập Trình Window CHƯƠNG : PHÂN TÍCH CƠ SỞ DỮ LIỆU Sơ đồ liệu Cơ sở liệu gồm bảng : - Bảng thí sinh : tbthisinh - Bảng kết : tbketqua - Bảng để thi : tbdethi - Bảng câu hỏi : tbcauhoi - Bảng đáp án : tbdapan - Bảng người dùng : tbnguoidung 1.1.Bảng thí sinh Chứa thơng tin thí sinh gồm mã thí sinh, tên thí sinh, số điện thoại, ngày sinh, địa quê quán STT Tên cột mathisinh tenthisinh sodienthoai ngaysinh diachi Kiểu liều nchar (20) nvarchar (50) nchar (20) date nvarchar (100) Ghi Là khóa để phân biệt thí sinh Họ tên thí sinh Số điện thoại thí sinh có Ngày tháng năm sinh thí sinh Địa thí sinh Trang GV : Trần Thị Anh Thi quequan Mơn : Lập Trình Window nvarchar (100) Q qn thí sinh VD : 1.2 Bảng kết Chứa thơng tin kết thi thí sinh gồm mã kết quả, điểm, kết quả, mã thí sinh, mã đề Mã thí sinh mã đề khóa phụ tham chiếu tới bảng tbthisinh bảng tbdethi STT Tên cột maketqua diem ketqua mathisinh made Kiểu liều nchar (20) numeric nvarchar(10) nchar(20) nchar(20) Ghi Là khóa để phân biệt KQ khác Số điểm thí sinh Kết thí sinh “Rớt” “Đậu” Mã thí sinh Mã đề thi VD : 1.3.Bảng đề thi Chứa thông tin đề thi gồm mã đề thi nội dung đề thi STT Tên cột madethi noidungdethi Kiểu liều nchar (20) ntext Ghi Là khóa để phân biệt DT khác Nội dung đề thi VD : 1.4.Bảng câu hỏi Chứa thông tin câu hỏi gồm mã câu hỏi, nội dung câu hỏi, mã đề thi Trang GV : Trần Thị Anh Thi STT Tên cột macauhoi noidungcauhoi madethi Môn : Lập Trình Window Kiểu liều nchar (20) ntext nchar (20) Ghi Là khóa để phân biệt CH khác Nội dung câu hỏi Mã đề thi tham chiếu đến tbdethi VD : 1.5.Bảng đáp án Chứa thông tin đáp án gồm mã đáp án, nội dung đáp án, đáp án đúng, mã câu hỏi STT Tên cột madapan noidungdapan dapandung macauhoi Kiểu liều nchar (20) ntext bit nchar (20) Ghi Là khóa để phân biệt DA khác Nội dung đáp án Là đáp án sai (1,0) Mã câu hỏi tham chiếu đển bảng tbcauhoi VD : 1.6.Bảng người dùng Chứa thông tin người dùng gồm id, mật quyền hạn người dùng STT Tên cột tennguoidung password quyenadmin Kiểu liều varchar (50) varchar (50) bit Ghi Là khóa để phân biệt người dùng Password người dùng quyền admin Trang GV : Trần Thị Anh Thi xemnguoidung them xoa sua Môn : Lập Trình Window bit bit bit bit quyền xem người dùng quyền thêm quyền xóa quyền sửa VD : Các ràng buộc toàn vẹn 2.1.Bảng câu hỏi bảng đáp án Bảng tbcauhoi liên kết với bảng tbdapan theo macauhoi, macauhoi bên bảng tbdapan foreign key bên bảng câu hỏi primary key, mối quan hệ nhiều, câu hỏi có nhiều đáp án 2.2.Bảng đề thi bảng câu hỏi Bảng tbdethi liên kết với bảng tbcauhoi theo madethi, madethi bên bảng tbcauhoi foreign key bên bảng tbdethi primary key mối quan hệ nhiều, đề thi có nhiều câu hỏi Trang GV : Trần Thị Anh Thi Mơn : Lập Trình Window 2.3.Bảng kết bảng thí sinh Bảng tbthisinh liên kết với bảng tbketqua theo mathisinh, mathisinh bên bảng tbketqua foreign key bên bảng tbthisinh primary key mối quan hệ 1-1, thí sinh có kết quả, rớt đậu 2.4.Bảng đề thi bảng kết Bảng tbdethi liên kết với bảng tbketqua theo madethi, made bên bảng tbketqua foreign key madethi bên bảng tbdethi primary key mối quan hệ nhiều, đề thi có nhiều đáp án Trang GV : Trần Thị Anh Thi Môn : Lập Trình Window CHƯƠNG : CÀI ĐẶT CHƯƠNG TRÌNH Màn Hình Chính - Màn hình chi phép người dùng chọn vào quyền admin, thi thi thử Màn hình đăng nhập Khi nhấn vào button Admin xuất form đăng nhập để người dùng nhập tài khoản mật Trang GV : Trần Thị Anh Thi Mơn : Lập Trình Window Người dùng phải nhập mật cho truy xuất vào bên trong, sai tài khoản form báo sai tài khoản, sai mật form báo sai mật private void btnDangnhap_Click(object sender, EventArgs e) { if (txtTendangnhap.Text == "") { MessageBox.Show("Bạn Chưa Nhập Vào Tên Tài Khoản"); txtTendangnhap.Focus(); return; } DataTable tbNguoiDung = objNguoiDung.LayBangNguoiDung_TheoID(txtTendangnhap.Text).Tables["tbnguoidung"]; //đểm số dịng bảng lấy được, ==0 thơng báo sai tài khoản //nếu ta bắt đầu kiểm tra mật người dùng int n = tbNguoiDung.Rows.Count; if (n == 0) { txtTendangnhap.Focus(); MessageBox.Show("Sai tên tài khoản"); } else { if (txtMatkhau.Text == "") { txtMatkhau.Focus(); MessageBox.Show("Bạn chưa nhập vào mật khẩu"); } else if (txtMatkhau.Text != tbNguoiDung.Rows[0]["matkhau"].ToString()) { txtMatkhau.Focus(); MessageBox.Show("Sai mật khẩu"); } else { this.Visible = false; frmAdmin frm_Admin = new frmAdmin(tbNguoiDung); DialogResult result = frm_Admin.ShowDialog(); this.Close(); } Trang 10 GV : Trần Thị Anh Thi Mơn : Lập Trình Window DataRow r_C = tbDapAn.NewRow(); DataRow r_D = tbDapAn.NewRow(); r_C["madapan"] = tbDapAn.Rows[0] ["madapan"].ToString().Replace("_A_", "_C_"); r_C["noidungdapan"] = txtdapanC.Text; r_C["macauhoi"] = macauhoi; r_D["madapan"] = tbDapAn.Rows[0] ["madapan"].ToString().Replace("_A_", "_D_"); r_D["noidungdapan"] = txtdapanD.Text; r_D["macauhoi"] = macauhoi; tbDapAn.Rows.Add(r_C); tbDapAn.Rows.Add(r_D); } else if (dongthem == 1) { //nếu có dịng ta kiểm tra xem đáp C hay D, để thêm vào cho if (txtdapanD.Enabled == true) { DataRow r_D = tbDapAn.NewRow(); r_D["madapan"] = tbDapAn.Rows[0] ["madapan"].ToString().Replace("_A_", "_D_"); r_D["noidungdapan"] = txtdapanD.Text; r_D["macauhoi"] = macauhoi; tbDapAn.Rows.Add(r_D); } if (txtdapanC.Enabled == true && txtdapanD.Enabled==false) { DataRow r_C = tbDapAn.NewRow(); r_C["madapan"] = tbDapAn.Rows[0] ["madapan"].ToString().Replace("_A_", "_C_"); r_C["noidungdapan"] = txtdapanC.Text; r_C["macauhoi"] = macauhoi; tbDapAn.Rows.Add(r_C); } } //cịn nhỏ ta thực xóa bớt else if (dongthem == -2) { tbDapAn.Rows[3].Delete(); tbDapAn.Rows[2].Delete(); } else if (dongthem == -1) { if (txtdapanD.Enabled == false&&txtdapanC.Enabled==true) tbDapAn.Rows[3].Delete(); else tbDapAn.Rows[2].Delete(); Trang 16 GV : Trần Thị Anh Thi Mơn : Lập Trình Window } //kiểm tra đáp án switch (dapandung) { case "A": dung[0] = true; break; case "B": dung[1] = true; break; case "C": dung[2]= true; break; case "D": dung[3] = true; break; } for (int i = 0; i < dem; i++) { tbDapAn.Rows[i]["dapandung"] = dung[i]; } //thực update bảng câu hỏi đáp án objDapAn.Update_DapAn(tbDapAn); objCauHoi.Update_CauHoi(tbcauhoi); MessageBox.Show("Lưu thành công"); } catch (Exception) { MessageBox.Show("Lưu thất bại"); } this.Close(); } } • Khi nhần vào button xóa xuất danh sách đề thi để người dùng xóa Code nhấn vào nút xóa : private void btnXoa_Click(object sender, EventArgs e) { DialogResult result= MessageBox.Show("Bạn có muốn xóa hay khơng","Thơng báo",MessageBoxButtons.OKCancel,MessageBoxIcon.Question); try { if (result == DialogResult.OK) { tbDeThi.Rows[comboBox1.SelectedIndex].Delete(); objDeThi.Update_DeThi(tbDeThi); Trang 17 GV : Trần Thị Anh Thi Mơn : Lập Trình Window MessageBox.Show("Xóa thành cơng"); this.Close(); } } catch (Exception) { MessageBox.Show("Xóa thất bại"); this.Close(); } } • Khi nhấn vào button In DS hiển thị sau : người dùng xuất file theo định đạng pdf, xlc, doc … Để load liệu ta phải có đoạn code sau DataTable tb = objCauHoi.LayBangCauHoi_TheoDapAn().Tables["tbcauhoi"]; crtCauHoi obj = new crtCauHoi(); obj.SetDataSource(tb); crystalReportViewer1.ReportSource = obj; crystalReportViewer1.Refresh(); Trang 18 GV : Trần Thị Anh Thi Mơn : Lập Trình Window Màn hình tạo đề thi - Khi load lên giao diện xuất sau - Form cho phép người dùng tạo đề thi với câu hỏi đáp án nhập vào • Khi nhấn vào nút tạo form tự động xuất control động, • Sau nhập vào đề thi xong nhấn vào tạo đề thi Trang 19 GV : Trần Thị Anh Thi Mơn : Lập Trình Window Người dùng ko cần nhập vào mã câu hỏi, mà tự phát sinh theo mã đề thứ tự câu hỏi, người dùng nhập xong quay lại giữ nội dung câu hỏi đáp án cho người dùng, sau quay lại người dùng bỏ check vào đáp án đáp án xóa ko cập nhật vào CSDL Trang 20 GV : Trần Thị Anh Thi Môn : Lập Trình Window Form thí sinh  Form có chức :  Thêm, xóa, sửa thí sinh  Xem kết thí sinh  Nạp lại danh sách  In danh sách thí sinh  In danh sách kết thí sinh  Tìm kiếm Trang 21 GV : Trần Thị Anh Thi Mơn : Lập Trình Window • Form cịn có menucontext cho việc xóa, sửa xem kết thí sinh • Form nhấn vào button thêm Trang 22 GV : Trần Thị Anh Thi Môn : Lập Trình Window code nhấn vào nút thêm private void btnthem_Click(object sender, EventArgs e) { if(kiemtrarong()) { try { tbThiSinh = objThiSinh.LayBangThiSinh_Rong().Tables["tbthisinh"]; DataRow r_new = tbThiSinh.NewRow(); r_new["mathisinh"] = txtmathisinh.Text; r_new["tenthisinh"] = txttenthisinh.Text; r_new["sodienthoai"] = txtsodienthoai.Text; r_new["ngaysinh"] = Convert.ToDateTime(dateTimePicker1.Value).ToShortDateString(); r_new["diachi"] = txtdiachi.Text; r_new["quequan"] = txtquequan.Text; tbThiSinh.Rows.Add(r_new); objThiSinh.Update_ThiSinh(tbThiSinh); MessageBox.Show("Thêm thành công"); } catch (Exception) { Trang 23 GV : Trần Thị Anh Thi Mơn : Lập Trình Window MessageBox.Show("Thêm thất bại"); } this.Close(); } } • Form nhấn vào button sửa Code nhấn vào nút lưu : try { if (kiemtrarong()) { tbThiSinh.Rows[0]["tenthisinh"] = txttenthisinh.Text; tbThiSinh.Rows[0]["sodienthoai"] = txtsodienthoai.Text; tbThiSinh.Rows[0]["quequan"] = txtquequan.Text; tbThiSinh.Rows[0]["diachi"] = txtdiachi.Text; tbThiSinh.Rows[0]["ngaysinh"] = dateTimePicker1.Value; objThiSinh.Update_ThiSinh(tbThiSinh); Trang 24 GV : Trần Thị Anh Thi Môn : Lập Trình Window } MessageBox.Show("Lưu thành cơng"); } catch (Exception) { MessageBox.Show("Lưu thất bại"); } this.Close(); • Form nhấn vào nút xem KQ • Form In danh sách thí sinh nhấn vào nút In DS • Form In danh sách kết nhấn vào nút In KQ Trang 25 GV : Trần Thị Anh Thi Mơn : Lập Trình Window From user  Gồm có chức là:  Thêm user  Xóa user  Sửa User  Tìm User  In danh sách User • Các quyền User quyền Admi, xem người dùng, thêm, xóa sửa để hạn chế quyền user, vd user khơng có quyền thêm button thêm khơng cho thực Trang 26 GV : Trần Thị Anh Thi Môn : Lập Trình Window thi Quyền Admin quyền cao nhất, có quyền admin thực quyền khác • Ngồi form cịn có contextmenu cho việc xóa sửa người dùng • Nếu user khơng có quyền xem người dùng xem tài khoản mình, khơng xem tài khoản khác • Form xuất nhấn vào nút thêm • Form xuất nhấn vào nút sửa Trang 27 GV : Trần Thị Anh Thi Môn : Lập Trình Window • Form nhấn vào nút In DS Form Thi thi thử Khi load lên form emty có background màu đen xuất trước gọi form thi lên theo kiểu dialog, độ xuốt form emty 80%, maximum ko có nút đóng form Thời gian mặc định cho thí sinh thi 10 phút, số điểm để thí sinh đậu 10 điểm Trang 28 GV : Trần Thị Anh Thi Mơn : Lập Trình Window Khi nhấn vào chọn câu xuất form chọn câu, form cho phép người dùng chọn vào câu để di chuyển tới câu đó, form cho người dùng biết câu làm chưa làm làm Code để dịch chuyển tới vị trí câu check private void rad1_CheckedChanged(object sender, EventArgs e) { RadioButton rad=(RadioButton)sender; //lấy tên rad lấy số ví dụ rad12 ta lấy 12 string vitri = rad.Name.Replace("rad",""); Trang 29 GV : Trần Thị Anh Thi Môn : Lập Trình Window //chuyển thành số -1 dem = Convert.ToInt32(vitri)-1; //nếu form thi gán gán cho form thi ngược lại gán cho form thi thử if (thi == 1) frmThi.dem = dem; else frmThiThu.dem = dem; this.Close(); } Trang 30 ... : Trần Thị Anh Thi Mơn : Lập Trình Window MỤC LỤC Trang GV : Trần Thị Anh Thi Mơn : Lập Trình Window CHƯƠNG : GIỚI THI? ??U SƠ LƯỢC ĐỀ TÀI Mục đích đề tài Tạo phần mềm thi trắc nghiệm thi giấy phép. .. Thị Anh Thi Mơn : Lập Trình Window Form Xem sửa đề thi  Có chức :  xem tất câu hỏi tất đề thi  xem theo đề thi  sửa câu hỏi  xóa đề thi  in danh sách đề thi gồm câu hỏi đáp án đề thi  Tìm... Mã đề thi VD : 1.3.Bảng đề thi Chứa thông tin đề thi gồm mã đề thi nội dung đề thi STT Tên cột madethi noidungdethi Kiểu liều nchar (20 ) ntext Ghi Là khóa để phân biệt DT khác Nội dung đề thi

Ngày đăng: 07/01/2014, 15:02

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan