Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
555,8 KB
Nội dung
BÁO CÁO ASSIGNMENT SOF 101 Sinh viên : Lê Xuân Anh Giảng viên hướng dẫn: Lê Thanh Hải LỜI MỞ ĐẦU Để hoàn phần mềm ghi câu hỏi và chấm thi trắc nghiệm cũng là bài Assignment này. Em xin được gửi lời cảm ơn đến thầy Lê Thanh Hải và trợ giảng Nguyễn Huy Toản là những người đã tận tình giúp đỡ em từ những bước đầu cho đến khi phần mềm được hoàn thành. Em xin chân thành cảm ơn! Phần I : Giới thiệu về bài Assignment Đề tài em đã chọn là phần mềm thi trắc nghiệm, với phần mềm này chúng ta có thể ghi thêm câu hỏi và làm bài trắc nghiệm. Phần mềm thi trắc nghiệm này sẽ gồm 3 form chính là: Form đăng nhập, Form ghi và test câu hỏi và form làm bài. Từ form đăng nhập chúng ta có thể truy nhập với tài khoản admin và user, với tài khoản admin thì sẽ được dẫn tới form Ghi và test câu hỏi Còn tài khoản User sẽ được dẫn tới form làm bài: Phần II: Phần Design của các form Form 1: Về phần Design của form 1 sẽ có 3 phần chính: - Textbox tên đăng nhập - Textbox password - Button Login Ngoài ra còn có thêm 2 Label để chú thích cho Textbox đăng nhập và password Form 2: Ghi và test câu hỏi, về phần Design gồm: - Textbox ghi tên file - Textbox ghi câu hỏi - Textbox các câu trả lời ( 4 Textbox) - 4 radiobutton tương ứng cho 4 câu trả lời, dùng để đánh dấu câu trả lời đúng - Button Next có chức năng để lưu lại câu hỏi vừa tạo và chuẩn bị cho việc viết câu hỏi mới - Button Test giúp cho người viết câu hỏi có thể kiểm tra lại các câu hỏi vừa tạo - Button trở về form đăng nhập để đăng nhập với 1 tài khoản khác - Button Exit để thoát tất cả chương trình đang chạy - Và các Label để chú thích Form 3: Phần dành cho người làm bài, phần design gồm có: - Button browse để chọn file câu hỏi - Label hiển thị tên file và đường dẫn tới file câu hỏi - Button bắt đầu làm bài - Label hiển thị số lượng câu hỏi - Label hiển thị câu hỏi - RadioButton để hiển thị đáp án và chọn đáp án - Button quay lại câu hỏi liền trước - Button câu hỏi tiếp theo - Button kết thúc làm bài và xem kết quả - Button Exit để thoát tất cả chương trình đang chạy - Các Label chú thích Phần 3: Code cho các thành phần của các form: 1 – Form đăng nhập Private Sub btnLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLog.Click If txtUser.Text = "admin" And txtPass.Text = "admin" Then Me.Hide() Form2.Show() ElseIf txtUser.Text = "sinhvien" And txtPass.Text = "sinhvien" Then Me.Hide() Form3.Show() End If txtUser.Focus() End Sub Về phần viết code cho form đăng nhập thì chúng ta chỉ cần viết code cho button Login, Ý nghĩa của phần code đó sẽ là : - Nếu phần text nhập vào trong txtUser.text và txtPass.text trùng với dữ liệu được lưu sẵn, khớp với tài khoản “admin” thì khi click vào button đăng nhập sẽ được dẫn tới form 2, form này dùng để viết và kiểm tra các câu hỏi. Và form đăng nhập sẽ vẫn chạy nhưng bị ẩn đi. - Nếu khớp với tài khoản “sinhvien” thì sẽ được dẫn tới form 3, form 3 dành cho việc làm bài. Và form đăng nhập cũng sẽ bị ẩn đi. - Ngoài ra chúng ta sẽ chỉnh thuộc tính PasswordChar cho textbox password, và dùng thuộc tính Focus để con trỏ mặc định trỏ vào txxUser.text 2- Form viết và kiểm tra câu hỏi ( dành cho tài khoản admin) Imports System.IO Imports System Public Class Form2 Đầu tiên chúng ta khai báo Namespace là System.IO có chức năng “đọc” và “viết” files và các datastreams khác, classes điển hình của namespace này là FileStream, Path, StreamReader, StreamWriter. Dim FW As StreamWriter Khai báo 1 biến thuộc lớp StreamWriter dùng để ghi văn bản ra file, và bắt đầu việc định nghĩa cho sự kiện Button_Click. Trong chế độ Design nhấn đúp vào Button cần định nghĩa ( ở đây là btnNext) Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click FW = New StreamWriter(txtLuu.Text, True) Cho phép ghi Nơi ghi tên file lưu FW.Write(txtCH.Text & ControlChars.Tab) Ghi phần text của phần câu hỏi ra file, còn với các textbox chứa nội dung đáp án thì khai báo để có thể phục vụ cho việc dễ dàng tách các mảng, bản ghi và chấm điểm. If radDA1.Checked = True Then FW.Write("#" & txtDA1.Text & ControlChars.Tab) Else FW.Write(txtDA1.Text & ControlChars.Tab) End If If radDA2.Checked = True Then FW.Write("#" & txtDA2.Text & ControlChars.Tab) Else FW.Write(txtDA2.Text & ControlChars.Tab) End If If radDA3.Checked = True Then FW.Write("#" & txtDA3.Text & ControlChars.Tab) Else FW.Write(txtDA3.Text & ControlChars.Tab) End If If radDA4.Checked = True Then FW.Write("#" & txtDA4.Text & Chr(13)) Else FW.Write(txtDA4.Text & Chr(13)) End If FW.Close() End Sub Khi RadioButton trước textbox đáp án được đánh dấu ( Checked ) thì phần text đáp án được ghi vào file sẽ có thêm dấu “ # “ đường trước để đánh dấu đáp án đúng, ControlChars.Tab tương ứng với Tab trong Microsoft Word office và có chức năng tách các bản ghi ( Chú ý: FW.Close ( ) kết thúc việc ghi ) 'Xoá dữ liệu cũ để nhập dữ liệu mới vào txtCH.Clear() txtDA1.Clear() txtDA2.Clear() txtDA3.Clear() txtDA4.Clear() FW.Close() Thêm phần code này để sau khi click vào button để lưu thì dữ liệu cũ sẽ bị xóa để ghi dữ liệu mới. Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCH.TextChanged, txtDA4.TextChanged, txtDA3.TextChanged, txtDA2.TextChanged, txtDA1.TextChanged If txtLuu.Text = "" Or txtCH.Text = "" Or txtDA1.Text = "" Or txtDA2.Text = "" Or txtDA3.Text = "" Or txtDA4.Text = "" Then btnNext.Enabled = False Else btnNext.Enabled = True End If End Sub Khi chưa nhập đủ dữ liệu vào các textbox thì ẩn button dùng để lưu và ngược lại khi đủ dữ liệu rồi button đó sẽ không bị ẩn nữa. Tiếp tục định nghĩa cho sự kiện Button_Click cho các button còn lại trong form 2, Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click Form3.Show() End Sub Vì hoàn thành được form test nên em sẽ tạm thời lấy form 3 (form dành cho user vào làm bài) cho sự kiện này. Khi Click vào button “ Test” thì form3 sẽ được chạy. Private Sub btnTrove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTrove.Click Me.Close() Form1.Show() End Sub Tạo cho form2 một button để quay trở lại với form đăng nhập, điều này rất cần thiết khi muốn đăng nhập lại bằng tài khoản khác. Form2 sẽ được đóng lại để chạy form1. Lúc đầu khi cho hiện form2 em không đóng form1 bởi vì form2 chạy dựa trên form1, nếu form1 bị đóng lại thì form2 sẽ ko chạy được. Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click Me.Close() Form1.Close() Form3.Close() End Sub Với button Exit thì sẽ dùng để đóng tất cả các chương trình vừa được chạy. Và như vậy là Form2 để ghi câu hỏi đã hoàn thành, tiếp tục với form3 dùng để làm bài. 3 – Form Làm bài Imports System.IO Giống như form2, đầu tiên sẽ là khai báo Namespace [...]... hỏi và ghi các câu hỏi thì đây sẽ là phần quan trọng nhất, phần chấm điểm cho bài vừa làm Khai báo 1 thủ tục để chấm điểm cho bài thi: Public Function Chambai(ByVal str As String) As Boolean If Microsoft.VisualBasic.Left(Trim(str), 1) = "#" Then Return True Else Return False End If End Function Việc khai báo thủ tục này có thể làm trên phần code của form hoặc chúng ta có thể tạo 1 Moduel riêng để tiện... If Microsoft.VisualBasic.Left(Trim(str), 1) = "#" Then Return Microsoft.VisualBasic.Right(Trim(str), str.Length - 1) Else Return str End If End Function End Module Thủ tục này sẽ chọn các chuỗi ký tự có ký tự “ # “ ở đầu và thực hiện việc lấy tất cả các ký tự bên phải của chuỗi trừ đi ký tự đầu tiên chính là ký tự “ # ” Thực hiện việc chấm điểm trên form 3 như sau: Dim diem As Double Khai báo một biến...Public Class Form3 Dim FR As StreamReader Khai báo 1 biến thuộc lớp StreamReader để đọc câu hỏi Tiếp theo sẽ là định nghĩa cho button tìm file thì chúng ta sẽ định nghĩa như sau: Dim CH, i As Integer Dim mangCH() As String Khai báo các biến cần thiết để quản lý số câu hỏi lấy ra, mảng câu hỏi, và vị trí các bản ghi Private Sub btnBro_Click(ByVal... phần ghi file của form2 thì mỗi một câu hỏi và các đáp án sẽ được ghi trên 1 dòng, cuối dòng sẽ là (Chr(13)), tương ứng như Enter trong Microsoft Word office, câu hỏi và các đáp án sẽ được phân tách bằng (Controlchar.Tab) tương ứng với khi ta dùng “Tab” trong Microsoft Word office Từ cách ghi file thì chúng ta sẽ thực hiện những bước ngược lại để đọc file Một dòng bất kỳ trong file text sẽ được lấy ra, . BÁO CÁO ASSIGNMENT SOF 101 Sinh viên : Lê Xuân Anh Giảng viên hướng dẫn: Lê Thanh Hải LỜI MỞ ĐẦU Để hoàn phần mềm ghi câu hỏi và chấm thi trắc nghiệm cũng là bài Assignment này Làm bài Imports System.IO Giống như form2, đầu tiên sẽ là khai báo Namespace Public Class Form3 Dim FR As StreamReader Khai báo 1 biến thuộc lớp StreamReader để đọc câu hỏi. Tiếp theo sẽ là. (Chr(13)), tương ứng như Enter trong Microsoft Word office, câu hỏi và các đáp án sẽ được phân tách bằng (Controlchar.Tab) tương ứng với khi ta dùng “Tab” trong Microsoft Word office. Từ cách ghi file