Tải bản đầy đủ (.pdf) (58 trang)

Xây dựng website thi trắc nghiệm trực tuyến

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.34 MB, 58 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC SƯ PHẠM
KHOA TIN
----------

NGUYỄN ĐỨC QUANG KIM

XÂY DỰNG WEBSITE THI TRẮC
NGHIỆM TRỰC TUYẾN

KHÓA LUẬN TỐT NGHIỆP


MỤC LỤC
LỜI MỞ ĐẦU
PHẦN I:

CƠ SỞ LÝ THUYẾT ....................................................... 1

I.TÌM HIỂU VỀ FRAMEWORK CAKEPHP: ................................................... 1
II. CẤU TRÚC CỦA FRAMEWORK CAKEPHP: ........................................... 2
III. GIỚI THIỆU MƠ HÌNH MVC: .................................................................... 3
1.Mơ hình MVC:.............................................................................................. 3
2. Hoạt động của MVC: ................................................................................... 4
2.1. Model: ................................................................................................... 4
2.2. View: ..................................................................................................... 5
2.3. Controller: ............................................................................................. 5
IV. TẠO CƠ SỞ DỮ LIỆU TRONG CAKE PHP: ............................................. 7
V. CÀI ĐẶT CAKE PHP- XÂY DỰNG TÀI LIỆU KỸ THUẬT VỀ CÁCH
XÂY DỰNG MỘT ỨNG DỤNG TRÊN FRAMEWORK CAKE PHP THEO
MƠ HÌNH MVC: ................................................................................................ 8


1. Cài đặt CakePHP: ........................................................................................ 8
2.Xây dựng một ứng dụng trên Framework cakephp theo mơ hình MVC: ... 10
PHẦN II:

PHÂN TÍCH THIẾT KẾ HỆ THỐNG ..................................... 18

I. KHẢO SÁT BÀI TỐN: .............................................................................. 18
1. Mơ tả bài tốn: ........................................................................................... 18
2. Phương pháp: ............................................................................................. 19
3. Phạm vi sản phẩm: ..................................................................................... 20
II. MƠ TẢ CHUNG: ......................................................................................... 20
1. Các chức năng chính của ứng dụng: .......................................................... 20
2. Phân loại người dùng sản phẩm:................................................................ 21
3. Các ràng buộc trong thiết kế và thực hiện: ................................................ 21
4. Giao diện người dùng: ............................................................................... 21
5. Yêu cầu thực thi: ........................................................................................ 21
6. Yêu cầu an toàn: ........................................................................................ 22
7. Yêu cầu bảo mật: ....................................................................................... 22
III. THIẾT KẾ HỆ THỐNG: ............................................................................. 22


1. Phân tích yêu cầu: ...................................................................................... 22
2. Sơ đồ phân rã chức năng:........................................................................... 24
3. Xây dựng biểu đồ Use Case tổng quát: ..................................................... 24
4. Biểu đồ hoạt động một vài Use Case: ........................................................ 24
4.1. Đăng nhập: .......................................................................................... 24
4.2. Biểu đồ cập nhật sinh viên: ................................................................. 25
4.3.Biểu đồ cập nhật khoa: ......................................................................... 27
5. Xây dựng biểu đồ lớp: ............................................................................... 28
PHẦN III:


XÂY DỰNG CHƯƠNG TRÌNH ........................................ 28

I. THIẾT KẾ CƠ SỞ DỮ LIỆU: ....................................................................... 29
1. Các bảng: ................................................................................................... 29
2. Từ điển dữ liệu: .......................................................................................... 29
3. Lược đồ quan hệ: ....................................................................................... 31
II. DEMO ỨNG DỤNG : .................................................................................. 32
1. Giao diện chính: ......................................................................................... 32
2. Giao diện từng chức năng: ......................................................................... 33
2.1.Sinh viên đăng nhập: ............................................................................ 33
2.2.Giao diện bắt đầu thi: ........................................................................... 34
2.3.Thực hiện bài thi: ................................................................................. 35
2.4.Kết quả sau khi thi: .............................................................................. 36
2.5.Đăng nhập quản trị: .............................................................................. 37
2.6.Giao diện quản lý của quản trị: ............................................................ 38
2.7.Giao diện quản lý học kỳ : ................................................................... 38
2.8.Giao diện quản lý môn học: ................................................................. 39
2.9.Giao diện quản lý học phần: ................................................................ 40
2.10.Giao diện quản lý đề thi: .................................................................... 41
2.11.Giao diện quản lý câu hỏi: ................................................................. 42
2.12.Giao diện quản lý phương án trả lời: ................................................. 43
2.13.Giao diện quản lý sinh viên: .............................................................. 44
2.14.Giao diện quản lý quản trị: ................................................................. 45
2.15. Giao diện quản lý sinh viên đăng kí thi học phần: ............................ 46


PHẦN IV:

KIỂM THỬ ............................................................. 47


I. YÊU CẦU KIỂM THỬ: ................................................................................ 48
1. Mục đích: ................................................................................................... 48
2. Mục tiêu và phạm vi tổ chức dự án: .......................................................... 48
3. Tính năng của sản phẩm ............................................................................ 48
4. Môi trường vận hành: ................................................................................ 49
5. Yêu cầu về chất lượng sản phẩm ............................................................... 49
II. XÂY DỰNG KẾ HOẠCH KIỂM THỬ:...................................................... 49
1. Mục đích .................................................................................................... 49
2. Mơ tả kế hoạch ........................................................................................... 50
3. Tài nguyên yêu cầu .................................................................................... 50
4. Quy trình thực hiện .................................................................................... 50
* Kết luận: ................................................................................................ 51
KẾT LUẬN ......................................................................................................... 52
TÀI LIỆU THAM KHẢO .................................................................................. 53


LỜI MỞ ĐẦU
Trong thế giới điện toán, các ứng dụng Web đã thực sự phát triển rất
mạnh, nhanh. Hàng loạt cơng nghệ mới ra đời để đáp ứng những địi hỏi của
những người sử dụng muốn có mỗi khi họ bật trình duyệt Web của mình lên. Gần
như những gì mà phần mềm truyền thống có thể làm được thì Web cũng làm
được. Từ nghe nhạc, xem phim, đọc báo, cả những cơng việc mà trước đây chỉ có
phần mềm truyền thống mới có thể thực hiện được như soạn thảo văn bản, các
sản phầm chế bản văn phòng, chuyển đổi định dạng các file, hay thậm chí cả
những bài toán quản lý phức tạp của các doanh nghiệp cũng có thể triển khai trên
Web. Rõ ràng, Web là tương lai của điện tốn hiện đại.
Ngày nay, cơng nghệ thơng tin đang đóng vai trị quan trọng trong hầu hết
các ngành nghề và ở mọi lĩnh vực như giáo dục, kinh tế, y khoa, cơng
nghiệp…dần dần được tin học hóa và làm cho cơng việc trở lên dễ dàng, nhanh

chóng và chính xác hơn. Đặc biệt trong cơng tác giáo dục, việc tin học hóa góp
phần nâng cao chất lượng dạy học và ngày càng được quan tâm và chú trọng.
Chính vì xuất phát từ nhu cầu thực tế tơi đã chọn đề tài ”Xây dựng website thi
trắc nghiệm trực tuyến” nhằm giúp cho công tác thi cử trở nên dễ dàng hơn,
thuận tiện hơn, đảm bảo tính khách quan, công bằng. Đồng thời phần mềm cũng
giúp cho giáo viên chấm điểm cho học sinh một cách đơn giản và nhanh chóng.
Do cịn nhiều hạn chế về trình độ cũng như thời gian nên đề tài này sẽ
không tránh khỏi sai sót. Em rất mong nhận được sự chỉ bảo góp ý của các thầy
cơ và các bạn để giúp em hồn thiện nó tốt hơn.
Đà nẵng, ngày .... tháng.... năm 2012
Sinh viên thực hiện
Nguyễn Đức Quang Kim


PHẦN I:

CƠ SỞ LÝ THUYẾT

I.TÌM HIỂU VỀ FRAMEWORK CAKEPHP:
CakePHP là một framework để lập trình web
bằng ngơn ngữ PHP, nguồn mở và miễn phí. Có thể
coi nó là một thư viện cho lập trình viên dùng để
tạo ra một ứng dụng web. Mục đích chính của
CakePHP là tạo ra cách viết code có cấu trúc và
nhanh chóng nhưng khơng mất đi tính linh hoạt của
việc lập trình.
CakePHP cung cấp tất cả các cơng cụ với một tiêu chí: cho các lập trình viên
có thể hồn tồn khơng phải nghĩ đến những điều quá vụn vặt, mà chỉ áp dụng
logic nghiệp vụ của họ vào chương trình, bằng cách sử dụng các cơng cụ của
CakePHP.

CakePHP có một đội ngũ phát triển và một cộng đồng năng động, mang lại giá
trị rất lớn cho dự án. Ngồi ra, nó giúp cho người lập trình khơng phải viết lại rất
nhiều code, việc sử dụng CakePHP mang lại cho ứng dụng web một cái lõi đã
được kiểm tra rất kỹ lưỡng và không ngừng phát triển.
Có khả năng tương thích PHP 4 và 5.Tích hợp các thao tác CRUD với CSDL:
các thao tác Thêm/ Xem/ Sửa/ Xóa được hỗ trợ thực hiện tự động.
Có khả năng tự hiểu và nhận biết một số tên trường dữ liệu (created, modified,
username, password...). Ngoài ra, với CakePHP, chỉ cần tuân theo quy ước đặt
tên đối với các bảng và các trường dữ liệu, CakePHP đã có thể hỗ trợ rất nhiều
thao tác và bảo đảm toàn vẹn dữ liệu.
Cung cấp khả năng tự sinh mã lệnh: khả năng này hỗ trợ lập trình viên có thể
bỏ qua một số câu lệnh phải lặp đi lặp lại nhiều lần.
Bộ biên dịch yêu cầu với URL rất thân thiện và rõ ràng, dễ hiểu: giúp cho các
yêu cầu theo dạng QueryString trở nên dễ đọc hơn.
Tích hợp bộ kiểm tra dữ liệu đầu vào: VD như kiểm tra địa chỉ email phải có
@, hay một trường nào đó khơng được trống, số điện thoại không được bao gồm
chữ...

-1-


Áp dụng khuân mẫu dễ dàng và linh hoạt: có thể thay đổi và áp dụng các
khuân mẫu một cách nhanh chóng.
Cung cấp các Helper hỗ trợ AJAX và Javascript, HTML Form và hơn thế nữa,
giúp cho các lập trình viên có thể dễ dàng viết các thẻ HTML và Javascript một
cách nhanh chóng và đúng cú pháp.
Cung cấp các Component hỗ trợ Email, Cookie, Security, Session và Request
Handling.
Hỗ trợ Danh sách Điều khiển Truy cập linh hoạt.
Cung cấp một thư viện giúp chống các lỗi liên quan đến Injection.

Caching linh hoạt.
Hỗ trợ bản địa hóa: cung cấp giải pháp và các thư viện liên quan để có thể thay
đổi ngôn ngữ một cách linh hoạt và triệt để.
Hoạt động trong bất kỳ thư mục web nào, với rất ít hoặc hồn tồn khơng cần
cấu hình Apache.
II. CẤU TRÚC CỦA FRAMEWORK CAKEPHP:
Sau khi download CakePHP, ta sẽ có 3 thư mục chính. Thư mục app sẽ là nơi
chúng ta đặt các dòng lệnh: đây là nơi mà ta sẽ phát triển ứng dụng. Thư mục
cake là thư mục chứa các dòng lệnh mà các nhà phát triển CakePHP đã làm cho
chúng ta. Đó là lõi của CakePHP. Cuối cùng, thư mục vendors là nơi ta có thể đặt
các thư viện PHP khác mà có thể ta cần trong ứng dụng CakePHP của mình.
Trong thư mục giải nén sẽ có (phiên bản: cakephp1x-1.2.6-0)
/Cake
/app
/cake
/vendors
.gitgnore
.htaccess
.index.php
Thư mục app là nơi ta sẽ phát triển ứng dụng. Hãy xem xét kỹ hơn thư mục
app:

-2-


Thư mục

Mơ tả
Lưu trữ một vài file cấu hình mà CakePHP sử dụng. Thơng


config

tin kết nối CSDL, file cấu hình lõi và các file khác có thể
được lưu trữ ở đây.

controllers
locale
models
plugins

Chứa các controller của ứng dụng và các components của
chúng.
Chứa các file chứa chuỗi sử dụng cho quốc tế hóa ứng dụng.
Chứa các model của ứng dụng, các behavior và các nguồn dữ
liệu (datasources).
Chứa các gói mở rộng (plugin).
Đây là nơi CakePHP chứa các dữ liệu tạm. Dữ liệu thực tế
được lưu trữ ở đây phụ thuộc vào CakePHP được cấu hình

tmp

thế nào, nhưng thư mục này thường được sử dụng để lưu các
mô tả về các model, nhật ký, và đôi khi là các thông tin về
session.
Mọi class hay thư viện nào khác phải được đặt ở đây. Điều
đó sẽ giúp cho chúng có thể được truy cập sử dụng hàm

vendors

App::import('vendor', 'name'). Thư mục này hoàn toàn khác

với thư mục vendors đã nói ở trên. Ta sẽ thấy rõ điều này khi
quản lý nhiều ứng dụng và việc cài đặt các hệ thống phức
tạp.

views

Các file trình diễn được đặt ở đây: elements, trang báo lỗi,
helpers, layours, và các file view.
Khi cài đặt ứng dụng, thư mục này đóng vai trò là thư mục

webroot

gốc của ứng dụng. Các thư mục con được tạo ra để chỉ dẫn
cho các file CSS, hình ảnh và Javascript.

III. GIỚI THIỆU MƠ HÌNH MVC:
1.Mơ hình MVC:
Mơ hình MVC (hay Model – View – Controller) là mẫu kiến trúc được sử
dụng trong công nghệ phát triển phần mềm. Điểm thành cơng của mơ hình này là
làm tách rời giữa logic của chương trình với giao diện của người sử dụng. Mô
-3-


hình giúp người ta có thể tạo ra một ứng dụng mà trong đó, ta có thể dễ dàng
thay đổi logic của chương trình hay chỉnh sửa giao diện của người dùng mà hồn
tồn khơng ảnh hưởng đến nhau.
CakePHP tn theo mơ hình thiết kế phần mềm chuẩn (design pattern) MVC.
MVC chia chương trình thành 3 phần riêng lẻ:
 Model: Mô tả dữ liệu của ứng dụng.
 View: Hiển thị dữ liệu của model.

 Controller: Xử lý và điều hướng các yêu cầu của client.

Hình 1: Một yêu cầu đơn giản của mơ hình MVC
2. Hoạt động của MVC:
2.1. Model:
Model là các lớp cung cấp dữ liệu, dịch vụ liên quan đến dữ liệu và business
logic. Chúng có thể là:
 Đánh giá tính hợp lệ của dữ liệu.
 Chuyển đổi dữ liệu.
 Đưa ra quyết định về nghiệp vụ.
 Thực hiện việc xử lý dữ liệu theo một quy trình (workflows).
 Business logic thường là xử lý rule hay policy của nghiệp vụ cũng như
business workflows. Tầng này có sự góp mặt của các rule engine và các
integration engine (trong đó có Spring bên Java và Flow3, Scarlet, Seasar,
PHPCrafty bên PHP).
 Domain data: Cung cấp/lưu trữ dữ liệu và việc chuyển đổi dữ liệu thành
các dạng khác nhau theo yêu cầu. Các tầng như Persistent Layer nằm ở đây. Vì

-4-


thế chúng ta sẽ gặp các lớp của PDO (PHP Data Object), Pear MDB2, PHP
Doctrine, JDBC, JTA, JPA, Hibernate, JDO ... và cả các lớp thực hiện DAO.
Tương tự như trong trường hợp Controller lấy state từ Model, khi Controller
cung cấp thông số cho Model để Model trả lại state theo hướng mà Controller
mong muốn từ Controller cũng phải định nghĩa được 1 common interface.
2.2. View:
View là các lớp định nghĩa cách thức trình bày dữ liệu (khơng update dữ liệu).
Trong các web framework, nó gồm 2 phần chính:
 Template file định nghĩa cấu trúc và cách thức trình bày dữ liệu cho user.

 Logic xử lý cách áp dụng dữ liệu vào cấu trúc trình bày. Logic này có thể
bao gồm việc kiểm tra định dạng dữ liệu, chuyển đổi định dạng dữ liệu sang một
dạng dữ liệu trung gian để có thể hiển thị với cấu trúc template đang có..., kiểm
tra trạng thái và đặc tính của dữ liệu để lựa chọn một cấu trúc hiển thị phù hợp.
Tất nhiên là trong Passive View thì việc lựa chọn cấu trúc hiện thị đơi khi lại do
Controller.
Vai trị của View cần thay đổi đặc biệt là các ứng dụng web thiên về View
phức tạp khi vai trò của Model đã trở nên ổn định.
2.3. Controller:
Controller là các lớp điều khiển application flow, tiếp nhận user input thông
qua HTTP header, chuyển tiếp nó đến các lớp phụ trách trực tiếp xử lý yêu cầu.
Tùy theo cách thiết kế kế lớp mà chúng ta thường thấy Controller gồm:
 Front Controller.
 Dispatcher.
 Action Mapping.
 Action Filter.
 Action: lớp xử lý các sự kiện chính, nơi dẫn đến application flow chủ yếu
(Main Event Handler).
 Response.
 Request: xử lý một phần user input ở mức GET, POST và PUT.
 Session: xử lý một phần user input ở mức SESSION.

-5-


Tùy theo user input, Controller sẽ thực hiện các phép lọc (với dịch vụ lấy từ
Model), các tính tốn lựa chọn (Action Mapping) dựa trên kiến trúc và cấu hình
nhằm xác định thành phần lớp chính sẽ thực hiện yêu cầu của user. Đây chính là
chức năng điều khiến application flow của Controller. Vì là nơi đón nhận user
input cho nên thường thì các thành phần xử lý form (ví dụ ActionForm trong

Struts) sẽ thuộc về Controller. Controller cũng sẽ có chức năng validate form đơn
giản nhằm thực hiện chức năng điều khiển luồng của mình.
Một khi xuất hiện các Event phức tạp, như là một Observer, Controller cần bổ
sung thêm các lớp mới vào để xử lý chúng theo các quy trình độc lập, giúp phân
tán bớt code tập trung vào lớp Action. Do là thành phần điều phối, Controller
không nhất thiết phải tương tác với Model rồi mới tương tác với View. Bất cứ lỗi
ngoại lệ nào xảy ra hay một trạng thái request không mong muốn xuất hiện thì
Controller có thể phản ứng bằng cách chọn View trực tiếp.
Khi giao tiếp với Model, Controller sẽ tiến hành 2 cách:
 extract dữ liệu hay state.
 update dữ liệu.
Sau khi có được dữ liệu, theo cách hành xử thơng thường, View thích hợp sẽ
được lựa chọn. Controller sẽ chuyển tiếp dữ liệu vào View để nó xử lý.Do tính
chất công việc của Controller là khá phức tạp và đa dạng cho nên việc Event
Handler Controller có thể tiếp tục tách ra nhỏ hơn cũng là điều cần tính đến thay
vì thực hiện việc xử lý tất cả các signal, user input ... trên cùng một lớp.
Ví dụ: Hình 1 ở trên là một ví dụ về yêu cầu cơ bản của MVC trong
CakePHP. Giả sử một client tên là "Ricardo" click vào link "Buy A Custom Cake
Now" trên trang chủ của ứng dụng.
Ricardo click vào link trỏ đến địa chỉ và
tình duyệt của Ricardo gửi một yêu cầu đến máy chủ web (web server).
Bộ phận điều vận (dispatcher) của máy chủ web sẽ kiểm tra URL gửi đến
(/cakes/buy) và giao nó cho controller chịu trách nhiệm xử lý yêu cầu này.
Controller sẽ tiến hành xử lý các logic của ứng dụng. Ví dụ như kiểm tra xem
Ricardo đã đăng nhập hay chưa.

-6-


Controller cũng có thể sử dụng model để truy cập đến dữ liệu của ứng dụng.

Model thường mô tả các bảng của cơ sở dữ liệu, nhưng cũng có thể mô tả các
mục của LDAP (LDAP entries), hoặc mô tả RSS feed, hoặc là file trên ổ cứng.
Trong ví dụ này controller sử dụng model để lấy thông tin về lần mua hàng gần
nhất của Ricardo từ cơ sở dữ liệu.
Một khi controller xử lý xong, nó sẽ chuyển các dữ liệu cho view. View sẽ
tiếp nhận dữ liệu và hiển thị cho client. View trong CakePHP thường ở dạng
HTML, nhưng view cũng có thể ở dạng PDF, XML hoặc JSON, tùy theo nhu
cầu.
IV. TẠO CƠ SỞ DỮ LIỆU TRONG CAKE PHP:
Lưu ý, ngay từ giai đoạn tạo CSDL trên MySQL, chưa động gì đến PHP,
chúng ta đã phải lưu ý đến quy tắc đặt tên bảng của CakePHP. Vì quy tắc đặt tên
là theo tiếng Anh, nên toàn bộ tên bảng và tên trường dưới đây sẽ bằng Tiếng
Anh.
Dựa vào các yêu cầu như trên, ta xây dựng một CSDL như sau:
 Formats ( id, name, slug, description, created, modified, status).
 Types ( id, name, slug, description, created, modified, status).
 Locations ( id, name, slug, description, created, modified, status).
 DVDs ( id, format_id, type_id, location_id, name, slug, image, website,
imdb, rating, discs, episodes, created, modified, status)
 Genres ( id, name, slug, created, modified, status).
 DVDS_Genres ( id, dvd_id, genre_id).
 Templates ( id, name, layout_name, description, image, created,
modified, status).
 Admins ( id, username, password, last_login, status)
Trong các bảng ở trên, các tên bảng và tên trường đã được đặt đúng theo quy
ước. Cụ thể, các quy ước đã được tuân theo là:
Tên bảng phải là số nhiều (có thêm S).
Các khóa chính của các bảng đều phải có tên là id.
Với quan hệ 1-n, VD là quan hệ giữa Locations – DVDs, thì trong bảng DVDs
phải có trường tên là location_id.


-7-


Với quan hệ n-n, VD là quan hệ giữa Genres – DVDs, thì tạo một bảng mới
với 2 trường dvd_id và genre_id.
Status là biến dùng để nhận biết các bản ghi có được đăng lên hay khơng.
Status = 1 là có đăng, status = 0 tức là khơng đăng.
Slug, nếu bạn chưa biết, thì nó là một giá trị để giúp cho người dùng dễ hiểu
hơn.
Khi bạn có một địa chỉ sử dụng ID của bản ghi:
bạn sẽ làm cho người đọc rất khó kiểm sốt.
Thay vào đó, bạn dùng slug, nghĩa là địa chỉ của bạn sẽ trở thành
/>Điều này giúp cho người truy cập biết được là họ đang xem phần nào.
V. CÀI ĐẶT CAKE PHP- XÂY DỰNG TÀI LIỆU KỸ THUẬT VỀ CÁCH
XÂY DỰNG MỘT ỨNG DỤNG TRÊN FRAMEWORK CAKE PHP THEO
MƠ HÌNH MVC:
1. Cài đặt CakePHP:
CakePHP cũng giống với một số framework về các cài đặt.
Ta phải cài đặt một webserver để cho web hoạt động: Vertrigo, wampserver,
apache.
Sau khi download mã nguồn cakePHP về, ta tiến hành giải nén và tiến hành
đổi tên thành ứng dụng mà ta đang tiến hành.
Ví dụ: cakephp-cakephp1x-1.2.6-0 đổi thành eduportal sau đó copy folder
eduportal vào trong thư mục www của webser của ta.

Sau đó vào folder app/config chỉnh sửa 2 file sau:
 Mở file core.php di chuyển đến dòng:

-8-



Configure::write('Security.salt',DYhG93b0qyJfIxfs2guVoUubWwvni
R2G0FgaC9mi')
Đổi

chuỗi

DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi

thành một chuổi khác. Chuỗi này có tác dụng hỗ trợ trịn q trình mã hóa dữ liệu
-> Lưu file này lại.
 Đổi tên fiel database.php.default thành database.php
Sau đó di chuyển đến dòng:
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',

< localhost

'login' => 'root',


'password' => 'vertrigo', 'database' => 'test_cake', 'prefix' => '',
);

Mở Vertrigo lên. Vào địa chỉ: http://127.0.0.1/phpmyadmin/ sau đó tạo
một database có tên test_cake
Sau đó truy cập vào địa chỉ http://127.0.0.1/eduportal. Nếu bạn thấy xuất
hiện như hình sau thì bạn đã cài đặt cakePHP kết nối đến database thành công

Bước tiếp theo, ta tạo các table cho database test_cake đúng theo qui tắt
tạo table trong cake. Ta có Table: users có nội dung sau
-9-


2.Xây dựng một ứng dụng trên Framework cakephp theo mô hình MVC:
Ta tiến hành xây dựng một framework cakePHP theo mơ hình MVC với
database test_cake. Tạo các lớp Model, View, Controller bằng cake bake
console:
 Bước 1. Cấu hình biến mơi trường cho cake bake hoạt động. Cick phải
lên My Computer chọn properties -> chọn tab Advanced -> chọn button
Environment Variables -> Một hộp thoại xuất hiện:

Chọn new một hộp thoại xuất hiện:

Gõ vào nội dung như trên trong đó:
- Variable name: path
- Variable value:
C:\ProgramFiles\VertrigoServ\Php;C:\ProgramFiles\VertrigoServ\www\eduporta
l\cake\console. C:\ProgramFiles\VertrigoServ\Php chứa một số file thực thi của
PHP.

- 10 -



C:\ProgramFiles\VertrigoServ\www\eduportal\cake\console chứa console của
cakePHP.
 Bước 2: Vào Start Run gõ cmd di chuyển đến đường dẫn
C:\ProgramFiles \VertrigoServ \www \eduportal\cake\console. Gõ lệnh: cake
bake all.

Gõ 1 chọn table users để tạo các Model, View, Controller .
Bây giờ ta vào đường dẫn:
C:\Program Files\VertrigoServ\www\eduportal\app\models thấy 1 file user.php
nội dung file đó như sau:
class User extends AppModel {

var $name = 'User';
var $validate = array(
'username' => array('notempty'),
'password' => array('notempty')
);

}
?>
Model là lớp tiếp xúc trực tiếp với cơ sở dữ liệu của chúng ta, tên của mỗi model
thể hiện một bảng trong cơ sở dữ liệu của chương trình. Model Customer được
viết đơn giản như sau:
Users.php C:\Program Files\VertrigoServ\www\eduportal\app\models (Lưu ý tất
cả các model của chương trình đều được đặt trong:

- 11 -



C:\Program Files\VertrigoServ\www\eduportal\app\models ngoại trừ các model
của plugins)
Vào C:\Program Files\VertrigoServ\www\eduportal\app\controllers thấy files
users_controller.php có nội dung như sau:
class UsersController extends AppController {

var $name = 'Users';
var $helpers = array('Html', 'Form');

function index() {
$this->User->recursive = 0;
$this->set('users', $this->paginate());
}

function view($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid User', true));
$this->redirect(array('action' => 'index'));
}
$this->set('user', $this->User->read(null, $id));
}
function add() {
if (!empty($this->data)) {
$this->User->create();
if ($this->User->save($this->data)) {
$this->Session->setFlash(__('The User has been saved',
true));
$this->redirect(array('action' => 'index'));
} else {


- 12 -


$this->Session->setFlash(__('The User could not be saved.
Please, try again.', true));
}
}
}
function edit($id = null) {
if (!$id && empty($this->data)) {
$this->Session->setFlash(__('Invalid User', true));
$this->redirect(array('action' => 'index'));
}
if (!empty($this->data)) {
if ($this->User->save($this->data)) {
$this->Session->setFlash(__('The User has been saved',
true));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The User could not be saved.
Please, try again.', true));
}
}
if (empty($this->data)) {
$this->data = $this->User->read(null, $id);
}
}
function delete($id = null) {
if (!$id) {

$this->Session->setFlash(__('Invalid id for User', true));
$this->redirect(array('action' => 'index'));
}
if ($this->User->del($id)) {
$this->Session->setFlash(__('User deleted', true));

- 13 -


$this->redirect(array('action' => 'index'));
}
$this->Session->setFlash(__('The User could not be deleted. Please,
try again.', true));
$this->redirect(array('action' => 'index'));
}
}
?>
Controller là các lớp điều khiển application flow, tiếp nhận user input thơng qua
HTTP header, chuyển tiếp nó đến các lớp phụ trách trực tiếp xử lý yêu cầu. Ví
dụ: them (add), xóa (del), sửa (edit), xem (view).
Vào C:\Program Files\VertrigoServ\www\eduportal\app\views\users
Thấy 4 file: Add.ctp, Edit.ctp, Index.ctp, View.ctp nội dung 4 file đó như sau:
Add.ctp
<div class="users form">
<?php echo $form->create('User');?>
<fieldset>
<legend><?php __('Add User');?></legend>
echo $form->input('username');
echo $form->input('password');

?>
</fieldset>
<?php echo $form->end('Submit');?>
</div>
<div class="actions">
<ul>
<li><?php echo $html->link(__('List Users', true), array('action' =>
'index'));?></li>
</ul>
</div>

- 14 -


Edit.ctp
<div class="users form">
<?php echo $form->create('User');?>
<fieldset>
<legend><?php __('Edit User');?></legend>
echo $form->input('id');
echo $form->input('username');
echo $form->input('password');
?>
</fieldset>
<?php echo $form->end('Submit');?>
</div>
<div class="actions">
<ul>
<li><?php echo $html->link(__('Delete', true), array('action' =>

'delete', $form->value('User.id')), null, sprintf(__('Are you sure you want to
delete # %s?', true), $form->value('User.id'))); ?></li>
<li><?php echo $html->link(__('List Users', true), array('action' =>
'index'));?></li>
</ul>
</div>
View.ctp
<div class="users view">

<?php __('User');?>


<dl><?php $i = 0; $class = ' class="altrow"';?>
<?php echo $user['User']['id']; ?>
 
</dd>

- 15 -


?></dt>
<?php echo $user['User']['username']; ?>
 
</dd>
?></dt>
<?php echo $user['User']['password']; ?>
 

</dd>
</dl>
</div>
<div class="actions">
<ul>
<li><?php echo $html->link(__('Edit User', true), array('action' =>
'edit', $user['User']['id'])); ?> </li>
<li><?php echo $html->link(__('Delete User', true), array('action' =>
'delete', $user['User']['id']), null, sprintf(__('Are you sure you want to delete #
%s?', true), $user['User']['id'])); ?> </li>
<li><?php echo $html->link(__('List Users', true), array('action' =>
'index')); ?> </li>
<li><?php echo $html->link(__('New User', true), array('action' =>
'add')); ?> </li>
</ul>
</div>
Bây giờ ta vào địa chỉ sau: http://127.0.0.1/eduportal/users

- 16 -


Bây giờ ta có thể thêm, sửa xóa một user một cách dễ dàng

Xem danh sách các Users

Đây là những bước cơ bản để cài đặt 1 framework cakePHP. Để xây dựng một
trang web hồn thiện thì ta cần phải nghiên cứu các đặc tính của cake.
- 17 -



PHẦN II: PHÂN TÍCH THIẾT KẾ HỆ THỐNG
I. KHẢO SÁT BÀI TỐN:
1. Mơ tả bài tốn:
Hệ thống thi trắc nghiệm trực tuyến cho phép các sinh viên vào làm bài thi
trên máy tính.
- Mỗi sinh viên sẽ được cấp 1 tài khoản truy cập duy nhất trên hệ thống, tài
khoản này bao gồm các thông tin: mã số sinh viên (dùng để đăng nhập), mật
khẩu (dùng để đăng nhập). Mỗi sinh viên chỉ thuộc vào một khoa, trong mỗi
khoa sẽ có học kì, mỗi học kì mơn học của học kì đó và mỗi mơn học sẽ có học
phần tương ứng, việc quản lý các sinh viên sẽ thông qua đơn vị học phần mà
sinh viên đó học.
- Khi sinh viên đăng nhập vào hệ thống, hệ thống sẽ cho biết thời gian thi và
cho phép sinh viên làm bài thi. Bài thi sẽ theo từng học phần trong một kì. Bài thi
của một mơn học nào sẽ do giáo viên dạy mơn học đó ra đề thi, đề thi bao gồm:
mã đề thi, mã học phần và thời gian thi. Câu hỏi sẽ bao gồm phần hỏi và phần
thông tin trả lời để sinh viên chọn (a,b,c,d). Mỗi đề thi đều có phần phương án trả

- 18 -


lời, bao gồm: mã phương án, mã câu hỏi và tên phương án (a hoặc b hoặc c hoặc
d). Sau khi sinh viên nộp bài thi (hết thời gian, hệ thống tự chấm dứt), hệ thống
sẽ thực hiện lưu thông tin bài làm của sinh viên, hệ thống chấm điểm bài thi khi
người quản trị tương tác yêu cầu chấm bài thi, điểm của bài thi sẽ được lưu lại
theo từng học phần thi của sinh viên.
- Giáo viên cũng được quản lý thông tin tương tự sinh viên, giáo viên là
những người giảng dạy các học phần, giáo viên có các thơng tin quản trị: mã
quản trị (để đăng nhập), mật khẩu (để đăng nhập), tên quản trị.
- Giáo viên sau khi đăng nhập vào hệ thống có quyền nhập đề thi cho các học
phần mình dạy, đề thi của một học phần có thể được dùng chung cho nhiều lớp

học phần mà giáo viên dạy hoặc sẽ riêng mỗi lớp sẽ có một đề, điều này sẽ do
giáo viên qui định. Cùng với nhập đề thi giáo viên phải nhập thông tin của đáp
án, sau khi lưu thông tin lai thì giáo viên khơng được phép sửa lại các thơng tin
trên. Một câu hỏi trong đề thi có tối đa 4 phương án trả lời, học sinh sẽ chọn 1
trong 4 phương án này, và đáp án sẽ lưu phương án trả lời đúng cho câu hỏi.
- Quản trị hệ thống có quyền tạo, quản lý các tài khoản trên hệ thống cho sinh
viên và giáo viên, tạo, cập nhật, thay đổi thông tin cá nhân của các tài khoản trên
hệ thống. Quản trị có quyền yêu cầu hệ thống chấm điểm bài thi theo từng học
phần(đề thi). Quản trị có quyền thiết lập thời gian bắt đầu thi 1 đề thi nào đó của
một lớp học phần, để khi sinh viên đăng nhập vào làm bài thi họ chỉ có 1 đề thi
duy nhất để làm bài, quản trị viên có trách nhiệm nhập đúng thời gian thi. Quản
trị có các chức năng quản lý khoa, học kỳ, môn học, học phần, sinh viên: tạo
mới, cập nhật và trước mắt là khơng cho phép xóa các thơng tin này. Khi xóa
thơng tin một sinh viên thì đồng thời phải xóa tồn bộ thơng tin điểm thi, bài làm
của sinh sinh khỏi hệ thống.
2. Phương pháp:
Qua tìm hiểu các phương pháp, em đã chọn thực hiện theo phương pháp
hướng đối tượng. Đây là phương thức thực hiện thiết kế hướng đối tượng qua
việc sử dụng một ngôn ngữ lập trình có hỗ trợ các tính năng hướng đối tượng .
Phương pháp này có một số ưu điểm như:
 Đơn giản hóa độ phức tạp khi bảo trì.

- 19 -


 Giảm nhẹ các thao tác viết mã cho người lập trình.
 Phản ánh được quan hệ giữa các thực thể có thực.
 Có tính đóng gói và che giấu thơng tin.
 Tính đa hình.
 Tính kế thừa.

 Ngồi ra, đối với người mới học về lập trình thì phương pháp này
dể tiếp thu hơn so với những phương pháp trước đó.
3. Phạm vi sản phẩm:
Website thi trắc nghiệm trực tuyến cho trường ĐHSP-ĐN là một website
nhằm tự động hóa một phần công tác thi cử tạo ra sự công bằng cũng như tăng
cường khả năng quản lý, đánh giá sinh viên.
II. MƠ TẢ CHUNG:
1. Các chức năng chính của ứng dụng:
 Admin :
 Đăng nhập hệ thống
 Quản lý khoa
 Quản lý quản trị
 Quản lý giáo viên
 Quản lý sinh viên
 Quản lý môn học
 Quản lý học phần
 Quản lý học kỳ
 Quản lý điểm
 Quản lý đề thi
 Quản lý câu hỏi
 Quản lý phương án trả lời
 Giáo viên :
 Đăng nhập hệ thống
 Quản lý đề thi, câu hỏi

- 20 -


×