Xây dựng chương trình tạo ngân hàng câu hỏi trắc nghiệm

- 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.

doc51 trang | Chia sẻ: lylyngoc | Ngày: 26/11/2013 | Lượt xem: 1546 | Lượt tải: 4download
Bạn đang xem nội dung tài liệu Xây dựng chương trình tạo ngân hàng câu hỏi trắc nghiệm, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HCM CƠ SỞ ĐÀO TẠO MIỀN TRUNG KHOA CÔNG NGHỆ XÂY DỰNG CHƯƠNG TRÌNH TẠO NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM GVHD: Th.s Bùi Văn Đồng SVTH: MSSV: Nguyễn Tấn Bình 11024015 Nguyễn Văn Kỷ 11019325 Trần Ngọc Tân 11028065 Lớp: DHTH7LTQN Khoá: 2011 – 2013 Quảng Ngãi, tháng 4 năm 2013 LỜI CẢM ƠN Chúng em xin gửi lời cảm ơn chân thành đến thầy Bùi Văn Đồng người tận tình hướng dẫn, giúp đỡ chúng em hoàn thành đồ án này. Xin tri ân tất cả các Thầy Cô, những người dày công dạy dỗ, truyền cho chúng em rất nhiều tri thức quý báu. Cảm ơn tất cả bạn bè của chúng tôi, những người đã sát cánh, chia sẻ những khó khăn của chúng tôi và giúp đỡ chúng tôi rất nhiều trong quá trình thực hiện đồ án này. Do vốn kiến thức và lượng thời gian có hạn nhóm em không thể tránh khỏi những thiếu sót, rất mong nhận được sự đóng góp ý kiến của Thầy, Cô và các bạn! Sinh viên thực hiện Nguyễn Tấn Bình Nguyễn Văn Kỷ Trần Ngọc Tân NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN Về thái độ, ý thức của sinh viên ……………………………………………………………………………….……… ………………………………………………………………………………………. ……………………………………………………………………………………… Về đạo đức, tác phong ……………………………………………………………………………………….…….………………………………………………………………………………… ………………………………………………………………………………………. Về năng lực chuyên môn ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… Kết luận : Nhận xét: ………………………………………………………………..……....... ……………………………………………………………………………………… ……………………………………………………………………………………… Điểm:……………………………………………………………………………….……..……….……………………………………………………………………… …………….., ngày tháng năm 2013 Giảng viên hướng dẫn Bùi Văn Đồng DANH MỤC CÁC BIỂU ĐỒ, HÌNH VẼ Số hiệu hình Tên hình Trang 1.1 Sơ đồ chức năng của chương trình 4 2.1 Mô hình ngữ cảnh 7 2.2 Mô hình Use Case tổng quát. 9 2.3 Mô hình ca sử dụng (Use Case Người Quản trị) 10 2.4 Mô hình ca sử dụng (Use Case Nhân viên) 10 2.5 Mô hình luồng dữ liệu - Chức năng thêm câu hỏi 11 2.6 Mô hình luồng dữ liệu - Chức năng xuất đề thi 12 2.7 Sơ đồ lớp của hệ thống 13 2.8 Sơ đồ quan hệ thực thể (ERD) 14 2.9 Hình: Bảng nhân viên 15 2.10 Bảng môn học. 15 2.11 Bảng câu hỏi. 15 2.12 Bảng chương. 16 2.13 Bảng loại thi. 16 2.14 Bảng đề thi. 16 2.15 Bảng chi tiết đề thi 16 2.16 Sơ đồ Relationship diagram 17 2.17 Chức năng đăng nhập 17 2.18 Chức năng thêm câu hỏi 18 2.19 Chức năng tạo đề thi 19 2.20 Chức năng quản lý đề thi. 20 2.21 Chức năng quản lý người dùng. 21 2.22 Chức năng quản lý môn hoc. 22 2.23 Chức năng quản lý câu hỏi. 23 2.24 Chức năng cài đặt kết nối. 24 2.25 Chức năng cài đặt sao lưu. 24 2.26 Chức năng in đề thi 25 2.27 Đổi mật khẩu 26 3.1 Chạy file setup 27 3.2 Quá trình cài đặt(tt) 28 3.3 Quá trình cài đặt(tt) 28 3.4 Quá trình cài đặt(tt) 29 3.5 Quá trình cài đặt(tt) 29 MỤC LỤC MỞ ĐẦU Hiện nay, giáo dục đang là quốc sách hàng đầu của đất nước. Nhiệm vụ của giáo dục là đào tạo con người trở thành các nhân lực hữu ích cho các ngành kinh tế của đất nước. Trong quá trình đào tạo, đo lường và đánh giá là công đoạn quan trọng nhất vì nó cho biết kết quả đào tạo. Từ trước đến nay, trong giáo dục đã có những hình thức đo lường kết quả học tập như vấn đáp, quan sát, viết … Trong thời gian gần đây, hình thức thi trắc nghiệm đã được áp dụng rộng rãi để đo lường và đánh giá kết quả học tập của học sinh, sinh viên. Đặc biệt là hiện nay, các trường đại học và cao đẳng cũng như THPT đang có kế hoạch triển khai áp dụng trắc nghiệm vào các kỳ thi. Đến lúc này, một vấn đề nảy sinh là việc tập hợp và quản lý các câu hỏi trắc nghiệm không thể quản lý thủ công, mà phải có sự trợ giúp của hệ thống máy tính. Với suy nghĩ đó, chúng em đã tiến hành xây dựng chương trình “Tạo ngân hàng câu hỏi trắc nghiệm” phục vụ cho nhu cầu thi trắc nghiệm của trường. Mục tiêu: xây dựng được hệ thống: nhập các câu hỏi trắc nghiệm từ văn bản vào cơ sở dữ liệu, xuất ra đề thi, quản lý đề thi và đáp án. Đối tượng cần nghiên cứu: hệ thống các câu hỏi trắc nghiệm bao gồm lý thuyết, hình ảnh, công thức toán học. Phạm vi nghiên cứu của đề tài: chuyển hệ thống câu hỏi trắc nghiệm từ file văn bản vào cơ sở dữ liệu, lưu câu hỏi, tạo và lưu đề thi, quản lý đề thi Đồ án bao gồm: +Chương 1 – Khảo sát hiện trạng và xác định yêu cầu. +Chương 2 – Phân tích - Thiết kế. +Chương 3 – Cài đặt chương trình. +Chương 4 – Kết luận. Chương 1: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 1.1 Khảo sát hiện trạng 1.1.1 Khảo sát Trường đaị học ABC là một trường chuyên đào tạo đa ngành đa nghề. Với quy mô 10000 sinh viên trên năm, hiên tại trường đang cố gắn mở rộng lên 15000 sinh viên trên năm, với nhu cầu phát triển đó, việc quản lý sinh viên ngày càng khó khăn hơn, kèm theo đó là việc quản lý chất lượng đào tạo cũng gặp nhiều khó khăn đặc biệt là trong việc thi cữ với hình thức trắc nghiệm trên giấy. Hiện tại trường có khối lượng câu hỏi lớn câu hỏi trên file word, để việc thi cử của trường được thuận lợi và chất lượng hơn, trường có nhu cầu xây dựng một hệ thống đưa các câu hỏi trắc nghiệm này vào cơ sơ dữ liệu (CSDL) để dễ dàng trong việc quản lý. 1.1.2 Nghiên cứu hiện trạng và chức năng của hệ thống Giáo viên của từng môn học gởi lên phòng khảo thí các câu hỏi trắc nghiệm và đề thi để cập nhật vào CSDL và yêu cầu xuất đề thi. Phòng khảo thí chịu trách nhiệm quản lý ngân hàng câu hỏi, xuất đề thi, quản lý đề thi và đáp án. Chức năng của hệ thống: Quản lí câu hỏi: thêm , xóa, sửa câu hỏi. Quản lí đề thi: tạo đề thi, trộn đề thi, lưu đề thi, in đề thi, in đáp án, tìm kiếm đề thi. Sao lưu phục hồi dữ liệu: sao lưu dữ liệu, phục hồi dữ liệu. Quản lý người dùng: thêm, xóa, sửa người dùng. Quản lý môn học: thêm, xóa sửa người dùng. 1.2. Xác định yêu cầu 1.2.1 Yêu cầu chức năng Quản lý câu hỏi: Thêm câu hỏi: Kiểm tra câu hỏi trắc nghiệm trước phù hợp với mẫu câu hỏi định dạng của chương trình khi cập nhập vào cơ sở dữ liệu. Chuyển câu hỏi trắc nghiệm vào cơ sở dữ liệu Xóa câu hỏi: Yêu cầu xóa những câu hỏi quá cũ hoặc không cần thiết. Sửa câu hỏi: Chỉnh sửa những câu lỗi hoặc không đúng với mẫu câu hỏi định dạng của chương trình. Quản lý đề thi: Tạo Đề thi: Thiết lập các thông tin cho đề thi như môn thi, mã đề, kì thi, năm thi, ... sau đó chọn số câu trong từng chương (mỗi lần chọn trong một chương thì Click vào Button “Chấp Nhận” để lưu số câu trong chương đó vào đề thi và kết thúc ta có thể xuất ra đề thi. Trộn Đề Thi: Từ bộ đề thi ban dầu ta thiết lập mã đề mới, chọn kiểu trộn đề thi như trộn câu, trộn theo đáp án hay chọ cả 2 kiểu tùy ý ( lưu ý: khi xuất mỗi đề thi mới thì cần phải thay đổi mã đề thi. Lưu Đề Thi: Hệ thống tự động lưu khi ta xuất đề thi. In đề thi, in đáp án, kiểm tra để thi và đáp án trước khi in. Tìm kiếm đề Thi: hỗ trợ tìm kiếm đề thi theo môn học, theo hoc kì , theo năm học hay tất cả các phương án trên. Quản lý môn học; Kiểm tra môn học theo năm, thêm vào những môn học mới, xóa đi những môn qua cũ hay ít sử dụng, để giảm tải bộ nhớ cho server Quản lý người dùng: người quản trị có thể thêm nhân nhân viên mới, hay xóa đi nhân viên đã nghỉ. 1.2.2 Yêu cầu phi chức năng Cho phép kết nối với Microsoft Word, Microsoft SQL Server. Hệ thống hoạt động trên máy đơn, mạng LAN 1.3 Chức năng chính của hệ thống 1.3.1 Sơ đồ chức năng của hệ thống Hình 1.1 Sơ đồ chức năng của chương trình 1.3.2 Mô tả chức năng của hệ thống Thêm câu hỏi: cập nhật câu hỏi trắc nghiệm vào CSDL. Xóa Câu hỏi: xóa những câu hỏi dư thừa, sai hoặc đã cũ không sử dụng nữa. Sửa Câu Hỏi: chỉnh sửa câu hỏi cần thiết để lưu vào CSDL Tạo Đề Thi: từ những câu hỏi đã có trong CSDL, ta có thể lựa chọn từng môn, chương để tạo ra một đề thi theo yêu cầu. Trộn Đề Thi: chức năng trộn đề thi có nghĩa là từ đề thi đã tạo ban đầu, ta có thể đảo câu hỏi, đảo đáp án hoặc kết hợp cả 2 để xuất ra đề thi mới. Đề thi này có cùng nội dung với đề cũ nhưng thứ tự câu và đáp án đã được xáo trộn, điều này có thể góp phần quan trọng trong việc chống tiêu cực trong thi cử. Lưu đề thi: đề thi tự động lưu khi ta xuất đề thi. In đề thi, đáp án: có thể in đề khi đề thi được tạo ra. Thêm môn học: nhân viên hay người quản trị có thể thêm môn học, môn học được thêm vào trước khi thêm câu hỏi vào. Xóa môn học: chức năng này dành cho người quản trị xóa môn học hay người dung khi cần thiết. Sao lưu dữ liệu: chức năng này giúp ta sao lưu dữ liệu thành một bản, khi dữ liệu bị mất hay có vấn đề gì ta có thể phục hồi lại từ dữ liệu đã sao lưu. Phục hồi dữ liệu: tương tự như trên, chức năng này dung để phục hồi lại dữ liệu khi cần thiết. 1.4 Các ràng buộc trong chương trình Một câu hỏi phải có đầy đủ 4 đáp án A B C D và đáp án đúng Câu hỏi có dạng: Câu [câu số]. [nội dung câu hỏi] Đáp án có dạng: A. [Nội dung đáp án A] B. [Nội dung đáp án B] C. [Nội dung đáp án C] D. [Nội dung đáp án D] Đáp án đúng có dạng: C. [Nội dung đáp án C](**) Ví dụ: Câu 2: Chọn lựa nào sai khi bàn đến các lý do làm cho khâu Thu nhận yêu cầu trở nên quan trọng. A.Thu nhận yêu cầu là cơ sở để phát triển phần mềm B.Công nghệ không ngừng thay đổi(**) (đáp án đúng) C.Tính chất chuyên môn hóa cao D.Sự gắn kết chặt chẽ giữa yêu cầu nghiệp vụ và phần mềm File chứa câu hỏi phải là file word. Chương 2: PHÂN TÍCH - THIẾT KẾ 2.1 Phân tích 2.1.1 Mô hình ngữ cảnh Hình 2.1: Mô hình ngữ cảnh Phân tích mô hình Hệ thống tạo đề thi: cho phép người dùng tạo đề thi khi có nhu cầu. Hệ thống nhập câu hỏi: cho phép người dùng nhập câu hỏi mới vào cơ sở dữ liệu. Hệ thống quản lý câu hỏi:sửa thông tin câu hỏi nhập, xóa câu hỏi ra khỏi ngân hàng. Hệ thống quản lý đề thi: xóa đề thi khi không đề thi không còn khả dụng, in lại đề thi. Hệ thống quản lý môn học: cho phép người dùng thêm, xóa, sửa môn học khi cần thiết. Hệ thống quản lý người dùng: cho phép quản trị quản lý thông tin nhân viên cũng như tài khoản của nhân viên, cấp quyền cho nhân viên. Hệ thống sao lưu phục hồi dữ liệu: cho phép sao lưu và phục hồi dữ liệu khi cần thiết. CSDL nhân viên: lưu trữ thông tin nhân viên (mã nhân viên, tên nhân viên, chức vụ, tài khoản, mật khẩu). CSDL câu hỏi: lưu trữ thông tin câu hỏi (mã câu hỏi, nội dung, đáp án a, đáp án b, đáp án c, đáp án d, đáp án đúng, mã chương). CSDL chương: lưu trữ thông tin về chương trong tường môn học (mã chương, tên chương, mã môn học). CSDL môn học: lưu trữ thông tin về môn học (mã môn học, tên môn học) CSDL loại thi: lưu trữ thông tin về lại thi (mã loại thi, tên loại thi, mã môn học) CSDL đề thi: lưu trữ thông tin về đề thi (id, mã đề thi, mã loại thi, kì thi, ngày thi, năm học, ghi chú, mã nhân viên). CSDL chi tiết đề thi: lưu trữ thông tin chi tiết về đề thi (mã câu hỏi, id, cơ số 1, cơ số 2, cơ số 3, cơ số 4, stt). 2.1.2 Danh sách các Actor. Người quản trị: Đăng nhập hệ thống Quản lí hệ thống câu hỏi (thêm, xóa, sửa câu hỏi). Quản lý đề thi (tạo đề thi, xóa đề, in đáp án)  Quản lý người dùng (thêm, xóa, sửa) Sao lưu, phục hồi dữ liệu Quản lý môn học (thêm, xóa, sửa) Nhân viên: Đăng nhập hệ thống Thêm câu hỏi vào cơ sở dữ liệu Tạo đề thi Quản lý đề thi (những đề chính nhân viên đó tạo ra). Quản lý môn học (thêm, xóa, sửa) 2.1.3 Mô hình ca sử dụng (Use Case) Mô hình Use Case tổng quát. Hình 2.2 Mô hình Use Case tổng quát. Mô hình Use Case người quản trị Hình 2.3 Mô hình ca sử dụng (Use Case Người Quản trị) Mô hình Use Case Nhân viên Hình 2.4 Mô hình ca sử dụng (Use Case Nhân viên) 2.1.4 Mô hình luồng dữ liệu của chức năng chính Người quản trị hệ thống Chức năng thêm câu hỏi Hình 2.5: Mô hình luồng dữ liệu - Chức năng thêm câu hỏi Nhân viên Chức năng xuất đề thi Hình 2.6: Mô hình luồng dữ liệu - Chức năng xuất đề thi 2.1.5 Mô hình cơ sở dữ liệu 2.1.5.1 Xác định các thực thể (các lớp) và các thuộc tính Môn học: mã môn học, tên môn học. Chương: mã chương, tên chương. Câu hỏi: mã câu hỏi, nội dung, đáp án A, đáp án B, đáp án C, đáp án D, đáp án đúng. Loại thi: mã loại thi, tên loại thi. Đề thi: id, mã đề thi, kì thi, ngày thi, năm học, Ghi chú. Chi tiết đề thi: id, cơ số 1, cơ số 2, cơ số 3, cơ số 4, STT. Nhân viên: mã nhân viên, tên nhân viên, chức vụ, tài khoản, mật khẩu. 2.1.5.2 Sơ đồ lớp Mục đích của sơ đồ lớp: Làm tài liệu cho các lớp cấu thành hệ thống và hệ thống con. Mô tả kết hợp, tổng quát hóa và các quan hệ kết tập giữa lớp trong biểu đồ. Chỉ rõ đặc trưng của lớp, các thuộc tính và tác vụ chính của mỗi lớp. Biểu đồ lớp được dùng khắp nơi trong chu trình phát triển từ bài toán đến mô hình cài đặt. Sơ đồ lớp của hệ thống Hình 2.7 Sơ đồ lớp của hệ thống 2.1.5.3 Sơ đồ ERD tương ứng Hình 2.8: Sơ đồ quan hệ thực thể (ERD) 2.1.5.4 Lược đồ quan hệ CAUHOI(MaCauHoi, NoiDung, DapAnA, DapAnB, DapAnC, DapAnD, DapAnDung, MaChuong). MONHOC(MaMH, TenMH). NHANVIEN(MaNV, TenNV, ChucVu, TaiKhoan, MatKhau). CHUONG(MaChuong, TenChuong, MaMH). LOAITHI(MaLoaiThi, TenLoaiThi, MaMH). DETHI(Id, MaDeThi, KiThi, NgayThi, NamHoc, GhiChu, MaNV, MaLoaiThi) CHITIETDETHI(Id, MaCauHoi,CoSo1, CoSo2, CoSo3, CoSo4, STT) 2.2 Thiết kế 2.2.1 Thiết kế cơ sở dữ liệu Nhân viên Hình 2.9: Bảng nhân viên. Môn học Hình 2.10: Bảng môn học. Câu hỏi Hình 2.11: Bảng câu hỏi. Chương Hình 2.12: Bảng chương. Loại thi Hình 2.13: Bảng loại thi. Đề thi Hình 2.14: Bảng đề thi. Chi tiết đề thi Hình 2.15: Bảng chi tiết đề thi 2.2.2 Mô hình RelationShip Diagram Hình 2.16 Sơ đồ Relationship diagram 2.2.3 Thiết kế giao diện 2.2.3.1 Đăng nhập Cho phép người dùng đăng nhập vào hệ thống Hình 2.17: Chức năng đăng nhập 2.2.3.2 Chương trình chính- Chức năng thêm câu hỏi Cho phép thêm câu hỏi vào ngân hàng câu hỏi, với chức năng đọc file word cho phép người dùng có thể lấy nội dung câu hỏi từ file word vào trong hệ thống một cách dễ dàng với nút “Mở”. Nhấn nút “Thêm” để hoàn tất việc nhập câu hỏi.(1) Hình 2.18: Chức năng thêm câu hỏi 2.2.2.3 Chức năng tạo đề thi. Cho phép người dùng tạo đề thi với nhiều tùy chọn kèm theo: Tạo đề thi theo từng chương hoặc toàn bộ nội dung môn hoc, người dùng có thể đảo câu hỏi, đáp án giữa các đề thi trên cùng một môn, in đề thi, cho phép người dùng lưu lại đề thi đã xuất phục vụ cho việc quản lý đề thi cũng như người xuất đề thi(2) Hình 2.19: Chức năng tạo đề thi. 2.2.3.4 Chức năng quản lý đề thi. Cho phép người dùng quản lý các đề thi đã tạo trước đó, người dùng có thể xem lại, xóa đi, in lại đề thi một lần nửa, cho phép tìm kiếm đề thi. Hình 2.20: Chức năng quản lý đề thi. 2.2.3.5 Chức năng quản lý người dùng Cho phép người quản trị thêm nhân viên khi có nhân viên mới bằng cách nhập đầy đủ thông tin rồi chọn chức năng thêm nhân viên để thêm nhân viên, chức năng xóa để xóa nhân viên khi nhân viên đó không còn tương tác đến hệ thống. Hình 2.21: Chức năng quản lý người dùng. 2.2.3.6 Chức năng quản lý môn học. Cho phép ta quản lý được những môn học được giảng dạy trưc tiếp ở trường. Chức năng “Thêm” cho phép thêm môn học mới. Chức năng “Xóa” cho phép xóa môn học khi không còn giảng dạy ở trường, khi xóa môn học đồng nghĩa với việc xóa tất cả thông tin liên quan đến môn học đó: đề thi, các hình thức thi, ngân hàng câu hỏi... Chức năng “Sửa” cho phép sửa thông tin khi cần thiết. Hình 2.22: Chức năng quản lý môn hoc. 2.2.3.7 Chức năng quản lý câu hỏi. Cho phép người quản trị quản lý một cách tốt nhất ngân hàng câu hỏi của mình thông qua các chức năng: Liệt kê tất cả câu hỏi của từng môn, cho phép hiển thị từng câu hoặc một số câu theo nhu cầu, cho phép xóa một hay nhiều câu hỏi cùng lúc, người dùng có thể sửa nội dung câu hỏi khi cần thiết. Hình 2.23: Chức năng quản lý câu hỏi. 2.2.3.8 Chức năng sao lưu dữ liệu Cho phép người quản trị sao lưu dữ liệu khi cần thiết, nhằm tránh những tình huấn cơ sở dữ liệu gốc bị mất hoặc bị đánh cắp. 2.2.3.9 Chức năng phục hồi dữ liệu Cho phép người quản trị phục hồi lại dữ liệu đã sao lưu trước đó. 2.2.3.10 Form cài đặt kết nối Cho phép người quản trị thiết đặt lại thông tin về SQL cũng như thông tin về máy chủ. Hình 2.24: Chức năng cài đặt kết nối. 2.2.3.11 Form cài đặt sao lưu Cho phép người quản trị thiết đặt lịch sao lưu tự động hay bằng tay cho hệ thống sao lưu dữ liệu. Hình 2.25: Chức năng cài đặt sao lưu. 2.2.3.12 Thiết kế Report Cho phép người dùng in đề thi khi có nhu cầu. Hình 2.26: Chức năng in đề thi 2.2.3.13 Form đổi mật khẩu Cho phép người dùng đổi mật khẩu khi có nhu cầu, nhằm bảo mật hơn cho tài khoản của mình. Hình 2.27: Đổi mật khẩu. Chương 3 – CÀI ĐẶT CHƯƠNG TRÌNH 3.1 Một số yêu cầu cần thiết đối với hệ thống Microsoft Word 2003, 2007, 2010. Netframework 4.0 trở lên. Microsoft SQL Server. Máy tính cấu hình tương đối. 3.2 Cài đặt chương trình Cài đặt Client Bước 1: Chạy file cài đặt Hình 3.1: Chạy file setup 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. Hình 3.3: Quá trình cài đặt(tt) 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. Hình 3.5: Quá trình cài đặt(tt) 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 dapAnA = i[2].ToString().Trim(); 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; } dang1 = false; 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++) { if (giatri.Substring(k, 4).ToString() == @"\par") { 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.

Các file đính kèm theo tài liệu này:

  • docdoan_tot_nghiep_sua_2943.doc
Luận văn liên quan