HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
PHÂN TÍCH THIẾT KẾ
HỆ THỐNG THÔNG TIN
Hệ Thống Thi Trắc Nghiệm
Chức năng Ôn Thi Trắc Nghiệm
Nhóm 4 – D08CNTT4
Võ Thanh Nga
Phạm Bích Ngọc
Khuất Thị Nụ
Trần Việt Phương
11/2011
Thành viên nhóm 4 - D08CN4 :
1. Võ Thanh Nga
2. Phạm Bích Ngọc
3. Khuất Thị Nụ
4. Trần Việt Phương
Mục lục
Mục lục 2
I. Khảo sát yêu cầu : 3
1.1. Giới thiệu : 3
1.2. Một số hình ảnh khảo sát các hệ thống làm bài ôn bằng phương pháp trắc nghiệm :. 3
1.3. Yêu cầu chức năng : 5
II. Phân Tích Hệ Thống : 5
2.1. Biểu đồ use case : 5
2.2. Kịch bản phân tích 5
2.3. Biểu đồ lớp và đặc tả chi tiết lớp 6
2.4. Biểu đồ tuần tự 8
2.5. Biểu đồ cộng tác 8
2.6. Biểu đồ trạng thái : 9
2.7. Biểu đồ hành động 10
III. Thiết kế Hệ Thống : 10
3.1. Thiết Kế Giao Diện : 10
3.2. Thiết kế cơ sở dữ liệu : 16
IV. Cài đặt : 20
4.1. Cài đặt giao diện : 20
4.2. Cài đặt lớp thực thể : 22
2
I. Khảo sát yêu cầu :
1.1. Giới thiệu :
Chức năng ôn thi trắc nghiệm theo yêu cầu, hay nói một cách khác thì đây là hệ thống hỗ trợ
kiểm tra đánh giá trình độ của học sinh sinh viên bằng phương pháp trắc nghiệm khách quan
và có tính chất tùy biến theo yêu cầu của người sử dụng. Đây là hệ thống dành cho học sinh,
phụ huynh, giáo viên và các đơn vị giáo dục, các cá nhân/tổ chức như một công cụ hữu ích
trong việc kiểm tra đánh giá chất lượng cũng như kết quả học tập của các học viên theo
ngành học của mình một cách hiệu quả, chuyên nghiệp và hiện đại với chi phí rất thấp.
1.2. Một số hình ảnh khảo sát các hệ thống làm bài ôn bằng phương pháp trắc nghiệm :
3
4
1.3. Yêu cầu chức năng :
Hệ thống cho phép sinh viên làm bài ôn thi trắc nghiệm
Sinh viên được chọn môn học, phần ôn tập
Sinh viên chỉ được chọn 1 trong 4 câu trả lời trong phần hướng dẫn trả lời
Sau khi sinh viên hoàn thành bài ôn, hệ thống đưa ra kết quả và đáp án.
II. Phân Tích Hệ Thống :
2.1. Biểu đồ use case :
2.2. Kịch bản phân tích
2.2.1. Kịch bản chính
1- Sinh viên chọn chức năng ôn thi trắc nghiệm ở giao diện chính.
2- Sinh viên chọn môn học cần ôn tập và phần ôn tập.
3- Hệ thống hiển thị các câu hỏi trong phần ôn mà sinh viên đã chọn ra màn hình
4- Sinh viên xem thông tin câu hỏi: số hiệu câu, nội dung câu hỏi, hướng dẫn trả lời.
5- Sinh viên trả lời câu hỏi.
6- Hệ thống kiểm tra số câu đúng, sai.
7- Đáp án, kết quả được hiển thị ra màn hình cho SV xem lại.
5
2.2.2. Kịch bản ngoại lệ
a. Ngoại lệ 1:
Hệ thống báo lỗi khi SV chưa hoàn thành bài ôn, SV thoát khỏi hệ thống.
1- Sinh viên chọn chức năng ôn thi trắc nghiệm
2- Sinh viên chọn môn học cần ôn tập và phần ôn tập.
3- Các câu hỏi trong phần ôn mà sinh viên đã chọn được hiển thị ra màn hình
4- Sinh viên xem thông tin câu hỏi: số hiệu câu, nội dung câu hỏi, hướng dẫn trả lời.
5- Sinh viên trả lời một số câu hỏi.
6- Hệ thống kiểm tra bài ôn của sv, báo lỗi sinh viên chưa hoàn thành bài ôn.
7- SV thoát.
b. Ngoại lệ 2:
Hệ thống báo lỗi khi SV chưa hoàn thành bài ôn, SV tiếp tục làm bài.
1- Sinh viên chọn chức năng ôn thi trắc nghiệm
2- Sinh viên chọn môn học cần ôn tập và phần ôn tập.
3- Các câu hỏi trong phần ôn mà sinh viên đã chọn được hiển thị ra màn hình
4- Sinh viên xem thông tin câu hỏi: số hiệu câu, nội dung câu hỏi, hướng dẫn trả lời.
5- Sinh viên trả lời một số câu hỏi.
6- Hệ thống kiểm tra bài ôn của sv, báo lỗi sinh viên chưa hoàn thành bài ôn.
7- SV tiếp tục làm tiếp những câu còn thiếu.
8- Hệ thống kiểm tra số câu đúng, sai.
9- Đáp án, kết quả được hiển thị ra màn hình cho SV xem lại.
2.3. Biểu đồ lớp và đặc tả chi tiết lớp
2.3.1 Biểu đồ lớp
2.3.2 Đặc tả chi tiết lớp
6
Lớp CauHoiVaTraLoi là chi tiết (thành phần) của lớp BaiOnThi.
2.3.2.1. Lớp CauHoiVaTraLoi :
Các thuộc tính của lớp này :
- ma_mon
- ma_phan
- ten_mon
- ten_phan
- so_hieu_cau_hoi
- noi_dung_cau_hoi
- huong_dan_tra_loi
- tra_loi_cau
- tong_cau_sai
- tong_cau_dung
Trong đó so_hieu_cau_hoi là thuộc tính khóa. So_hieu_cau_hoi để phân biệt
CauHoiVaTraLoi này với CauHoiVaTraLoi khác.
Các thuộc tính còn lại là thuộc tính mô tả và cũng là thuộc tính suy diễn từ thuộc tính
so_hieu_cau_hoi.
Lớp CauHoiVa TraLoi có các phương thức sau :
- xem câu hỏi : SV xem nội dung câu hỏi và hướng dẫn trả lời câu hỏi.
- xem đáp án câu hỏi : SV xem đáp án cho câu hỏi.
2.3.2.2. Lớp BaiOnThi:
a. Các thuộc tính của lớp này :
- ma_bai_on
- ma_phan
- ten_phan
- ma_mon
- ten_mon
- so_hieu_cau_hoi
- noi_dung_cau_hoi
- tra_loi_cau
- tong_cau_sai
- tong_cau_dung
Thuộc tính mã bài ôn (ma_bai_on) là thuộc tính khóa.
Thuộc tính tên phần được suy diễn từ thuộc tính mã phần.
Thuộc tính tên môn được suy diễn từ thuộc tính mã môn.
Thuộc tính nội dung câu hỏi được suy diễn từ số hiệu câu hỏi.
Còn lại là các thuộc tính mô tả.
b. Các phương thức :
- Chọn môn : sinh viên chọn môn học để ôn tập.
- Chọn phần : sinh viên tiến hành chọn phần ôn tập.
- Trả lời câu hỏi : sinh viên trả lời câu hỏi ở phần ôn.
7
2.4. Biểu đồ tuần tự
2.5. Biểu đồ cộng tác
8
2.6. Biểu đồ trạng thái :
Biểu đồ trạng thái cho lớp Bài ôn (BaiOn):
2.6.1. Trạng thái làm bài:
2.6.2. Trạng thái đánh giá:
9
2.7. Biểu đồ hành động
III. Thiết kế Hệ Thống :
3.1. Thiết Kế Giao Diện :
3.1.1. Thiết kế giao diện và kịch bản thiết kế :
3.1.1.1. Kịch bản chính :
1. Sinh viên chọn chức năng ôn thi trên giao diện chính.
10
2. Hệ thống hiển thị các môn học & phần ôn có trong chương trình ôn:
- Môn Học (JLabel):
Phân tích thiết kế HTTT, Công nghệ phần mềm,… : JCombo Box
- Phần ôn (JLabel):
Phần 1: Chương 1+2+3, Phần 2: Chương 4+5,…: JCombo Box
- OK: JButton
Giao diện:
11
3. Sinh viên chọn môn học cần ôn: Công nghệ phần mềm… ,chọn phần ôn: Phần 1 và
nhấn nút OK.
4. Hệ thống hiển thị Giao Diện bài ôn_các câu hỏi và các câu trả lời của phần ôn tập.
- BÀI ÔN TẬP MÔN PHÂN TÍCH THIẾT KẾ HTTT : JLabel
- Câu Hỏi 1: … :JLabel
- Câu Trả Lời: A. B. C. D. : JCombo Box
- Xem Đáp Án: JButton
- Thoát: JButton
Giao diện:
12
5. Sinh viên chọn các câu trả lời cho từng câu hỏi.
6. Kết thúc làm bài, sinh viên nhấn nút Xem đáp án .
7. Hệ thống kiểm tra sv đã làm hết các câu hỏi trong phần ôn tập chưa, hiển thị đáp án
đúng của từng câu và kết quả bài ôn của sinh viên.
- Đáp án đúng: JLabel
- Icon: JLabel
- Kết quả bài ôn của bạn là: 20/30: JTextField
- 1A : JTextField
…
- 30A: JTextField
Giao diện:
13
3.1.1.2. Kịch bản ngoại lệ :
a. Kịch bản ngoại lệ 1 : Sv nhấn nút Thoát khi hệ thống
báo lỗi chưa làm xong bài.
1. Sinh viên chọn chức năng ôn thi trên giao diện chính.
2. Hệ thống hiển thị các môn học & phần ôn có trong chương trình ôn
3. Sinh viên chọn môn học cần ôn. VD: Công nghệ phần mềm… ,chọn phần ôn. VD:
Phần 1 và nhấn nút OK
4. Hệ thống hiển thị Giao Diện bài ôn_các câu hỏi và các câu trả lời của phần ôn tập.
5. Sinh viên chọn các câu trả lời cho từng câu hỏi.
6. Chưa kết thúc làm bài, sinh viên nhấn nút xem đáp án .
7. Hệ thống kiểm tra thấy sv chưa làm hết các câu hỏi trong phần ôn tập, hiển thị thông
báo lỗi.
14
• [JFrame]
• jPannel1[JPanel]
• jPannel2[JPanel]
• icon: jLabel1[JLabel]
• Bạn chưa hoàn thành các câu hỏi!: jLabel2[JLabel]
• Nhấn enter để tiếp tục: jButton1[JButton]
• Thoát: jButton2[JButton]
8. Sinh viên nhấn nút Thoát.
b. Kịch bản ngoại lệ 2: Sv nhấn nút Enter khi hệ thống báo lỗi chưa làm xong bài.
1. Sinh viên chọn chức năng ôn thi trên màn hình giao diện chính.
2. Hệ thống hiển thị các môn học & phần ôn có trong chương trình ôn
3. Sinh viên chọn môn học cần ôn. VD: Công nghệ phần mềm… ,chọn phần ôn. VD:
Phần 1 và nhấn nút OK
4. Hệ thống hiển thị Giao Diện bài ôn_các câu hỏi và các câu trả lời của phần ôn tập.
6. Chưa kết thúc làm bài, sinh viên nhấn nút xem đáp án .
7. Hệ thống kiểm tra thấy sv chưa làm hết các câu hỏi trong phần ôn tập, hiển thị thông
báo lỗi.
• [JFrame]
15
• jPannel1[JPanel]
• jPannel2[JPanel]
• icon: jLabel1[JLabel]
• Bạn chưa hoàn thành các câu hỏi!: jLabel2[JLabel]
• Nhấn enter để tiếp tục: jButton1[JButton]
• Thoát: jButton2[JButton]
8. Sinh viên nhấn nút Enter.
9. Hệ thống hiển thị lại giao diện bài ôn cho sv tiếp tục làm.
10. Sinh viên tiếp tục chọn các câu trả lời cho các câu hỏi của bài ôn.
11. Kết thúc làm bài, sinh viên nhấn nút Xem đáp án.
12. Hệ thống kiểm tra bài ôn của siinh viên, hiển thị đáp án đúng của từng câu và kết quả
bài ôn của sinh viên.
3.1.2. Biểu đồ trình tự :
3.2. Thiết kế cơ sở dữ liệu :
3.2.1. Tên bảng, tên trường, thuộc tính các trường :
Các bảng :
- Bài Ôn (PhanOn)
- Phần Ôn (PhanOn)
16
- Môn Học (MonHoc)
- Câu Hỏi Và Trả Lời (CauHoiVaTraLoi)
17
3.2.2. Sơ đồ lớp :
18
3.2.3. Đặc tả chi tiết lớp :
Lớp Môn Học và lớp Phần Ôn là quan hệ 1-N: 1 môn học có nhiều phần ôn.
Lớp Phần Ôn và Bài Ôn là quan hệ 1-N: 1 phần ôn có nhiều bài ôn.
Lớp Bài Ôn và Lớp Câu Hỏi và Trả Lời là quan hệ 1-N: 1 bài ôn có nhiều câu hỏi và
trả lời.
a. Lớp Bài Ôn có các thuộc tính:
• Ma_bai_on
• So_hieu_cau_hoi
• Noi_dung_cau_hoi
• Tra_loi_cau_hoi
• Tong_cau_sai
• Tong_cau_dung
Trong đó ma_bai_on là khóa chính các thuộc tính còn lại là thuộc tính suy diễn từ
ma_bai_on.
Ma_phan là khóa ngoại : Do PhanOn và BaiOn có quan hệ 1-N. Vì vậy, khóa chính của bảng
1 được chuyển sang làm khóa ngoại của bảng N.
b. Lớp Phần Ôn có các thuộc tính
• Ma_phan
• Ten_phan
Trong đó ma_phan là khóa chính, ten_phan là thuộc tính suy diễn từ ma_phan. Ma_mon là
khóa ngoại : Do MonHoc và PhanOn có quan hệ 1-N. Vì vậy khóa chính của bảng MonHoc
(là ma_mon) phải chuyển sang làm khóa ngoại của bảng PhanOn.
c. Lớp Môn Học có các thuộc tính sau
• Ma_mon
19
• Ten_mon
Trong đó ma_mon là khóa chính, ten_mon là thuộc tính suy diễn từ ma_mon
d. Lớp Câu Hỏi Và Trả Lời có các thuộc tính sau:
• So_hieu_cau_hoi
• Noi_dung_cau_hoi
• Huong_dan _tra_loi
• Dap_an_dung
Trong đó so_hieu_cau_hoi là khóa chính các thuộc tính còn lại là thuộc tính suy diễn từ
so_hieu_cau_hoi. Ma_bai_on là khóa ngoại : do BaiOn và CauHoiVaTraLoi có quan hệ 1 –
N nên khóa chính của bảng BaiOn (là ma_bai_on) là khóa ngoại của bảng CauHoiVaTraLoi.
IV. Cài đặt :
4.1. Cài đặt giao diện :
Các giao diện chính trong chương trình :
20
21
4.2. Cài đặt lớp thực thể :
4.2.1. Lớp BaiOn :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
22
package viduInput;
/**
*
* @author Sapphire
*/
public class BaiOn {
private int ma_bai_on;
private int so_hieu_cau_hoi;
private String noi_dung_cau_hoi;
private String tra_loi_cau_hoi;
private int tong_cau_sai;
private int tong_cau_dung;
private int ma_phan;
public BaiOn(){}
public BaiOn (int ma_bai_on, int so_hieu_cau_hoi, String noi_dung_cau_hoi, String
tra_loi_cau_hoi, int tong_cau_sai, int tong_cau_dung, int ma_phan){
this.ma_bai_on = ma_bai_on;
this.so_hieu_cau_hoi = so_hieu_cau_hoi;
this.noi_dung_cau_hoi = noi_dung_cau_hoi;
this.tra_loi_cau_hoi = tra_loi_cau_hoi;
this.tong_cau_sai = tong_cau_sai;
this.tong_cau_dung = tong_cau_dung;
this.ma_phan = ma_phan;
}
public boolean kiemTraBaiOn(int ma_bai_on){
return true;
}
public String traLoiCauHoi(String noi_dung_cau_hoi, String huong_dan_tra_loi){
String traloi = null;
return traloi;
}
public int getMa_bai_on() {
return ma_bai_on;
}
public void setMa_bai_on(int ma_bai_on) {
this.ma_bai_on = ma_bai_on;
}
23
public int getMa_phan() {
return ma_phan;
}
public void setMa_phan(int ma_phan) {
this.ma_phan = ma_phan;
}
public String getNoi_dung_cau_hoi() {
return noi_dung_cau_hoi;
}
public void setNoi_dung_cau_hoi(String noi_dung_cau_hoi) {
this.noi_dung_cau_hoi = noi_dung_cau_hoi;
}
public int getSo_hieu_cau_hoi() {
return so_hieu_cau_hoi;
}
public void setSo_hieu_cau_hoi(int so_hieu_cau_hoi) {
this.so_hieu_cau_hoi = so_hieu_cau_hoi;
}
public int getTong_cau_dung() {
return tong_cau_dung;
}
public void setTong_cau_dung(int tong_cau_dung) {
this.tong_cau_dung = tong_cau_dung;
}
public int getTong_cau_sai() {
return tong_cau_sai;
}
public void setTong_cau_sai(int tong_cau_sai) {
this.tong_cau_sai = tong_cau_sai;
}
public String getTra_loi_cau_hoi() {
return tra_loi_cau_hoi;
}
24
public void setTra_loi_cau_hoi(String tra_loi_cau_hoi) {
this.tra_loi_cau_hoi = tra_loi_cau_hoi;
}
}
4.2.2. Lớp MonHoc :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package viduInput;
/**
*
* @author Sapphire
*/
public class MonHoc {
private int ma_mon;
private String ten_mon;
//ham khoi tao khong tham so
public MonHoc() {}
//ham khoi tao co day du tham so
public MonHoc (int ma_mon, String ten_mon){
this.ma_mon = ma_mon;
this.ten_mon = ten_mon;
}
public void chonMon(String ten_mon){
}
public int getMa_mon() {
return ma_mon;
}
public void setMa_mon(int ma_mon) {
this.ma_mon = ma_mon;
}
25