Quá trình xây dựng website

Một phần của tài liệu Xây dựng website tuyển sinh đại học cao đẳng (Trang 25 - 48)

CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG THÔNG TIN ĐĂNG KÝ TUYỂN SINH

2.2 Quá trình xây dựng website

2.2.1. Sơ đồ Usecase hình thành ý tưởng

Usecase là một kỹ thuật được dùng trong kỹ thuật phần mềm và hệ thống để nắm bắt yêu cầu chức năng của hệ thống. Usecase mô tả sự tương tác đặc trưng giữa người dùng bên ngoài (actor) và hệ thống. Nó thể hiện ứng xử của hệ thống đối với bên ngoài, trong một hoàn cảnh nhất định, xét từ quan điểm của người sử dụng. Nó mô tả các yêu cầu đối với hệ thống, có nghĩa là những gì hệ thống phải làm chứ không phải mô tả hệ thống làm như thế nào. Tập hợp tất cả Usecase của hệ thống sẽ mô tả tất cả các trường hợp mà hệ thống có thể được sử dụng.

Mỗi Usecase mô tả cách thức actor tương tác với hệ thống để đạt được mục tiêu nào đó. Một hoặc nhiều kịch bản có thể được tạo ra từ mỗi Usecase, tương ứng với chi tiết về mỗi cách thức đạt được mục tiêu nào đó.

Các ký hiệu của các sơ đồ phân rã chức năng được hiểu như sau:

Usercase gồm các chức năng Chức năng của các Usercase

Chức năng

Đối tượng sử dụng website

26 2.2.1.1. Sơ đồ phân rã chức năng mức đỉnh

Website hướng đến 2 đối tượng chính là các cán bộ trong công tác tuyển sinh và thí sinh. Với mỗi đối tượng, chức năng sẽ khác nhau.

Các cán bộ trong công tác tuyển sinh gồm các chức năng: Đăng ký tài khoản, đăng nhập, xem hồ sơ cá nhân, chỉnh sửa hồ sơ cá nhân, xem hồ sơ tuyển sinh, trường-ngành-khối thi, thành phố-quận-huyện, đăng xuất.

Thí Sinh gồm các chức năng: Đăng ký tài khoản, đăng nhập, xem hồ sơ tuyển sinh, đăng ký hồ sơ tuyển sinh, đăng xuất.

Hình 2.2: Sơ đồ phân rã chức năng mức đỉnh

27

2.2.1.2. Sơ đồ phân rã chức năng mức dưới đỉnh về Trường, Ngành, Khối Thi Sơ đồ phân rã chức năng về Trường, Ngành, Khối Thi gồm các Usercase chính là: Ngành, Trường, Khối Thi.

Hình 2.3: Sơ đồ phân rã chức năng mức dưới đỉnh về Trường, Ngành, Khối Thi

2.2.1.3. Sơ đồ phân rã chức năng mức dưới đỉnh về Tỉnh-Thành Phố, Quận- Huyện, Xã-Phường

Sơ đồ phân rã chức năng về Tỉnh-Thành Phố, Quận-Huyện, Xã-Phường gồm các Usercase chính là: Tỉnh-Thành Phố, Quận-Huyện, Xã-Phường

Hình 2.4: Sơ đồ phân rã chức năng mức dưới đỉnh về Tỉnh-Thành Phố, Quận-Huyện, Xã-Phường

28 2.2.1.4. Phân rã Usecase về Trường

Trường gồm các chức năng: Thêm Trường, Xóa Trường, Sửa Trường, Xem Trường.

2.2.1.5. Phân rã Usecase về Ngành

Ngành gồm các chức năng: Thêm Ngành, Xóa Ngành, Sửa Ngành, Xem Ngành.

Hình 2.5: Sơ đồ Usecase về Trường

Hình 2.6: Sơ đồ Usecase về Ngành

29 2.2.1.6. Phân rã Usecase về Khối Thi

Khối Thi gồm các chức năng: Thêm Khối Thi, Xóa Khối Thi, Sửa Khối Thi, Xem Khối Thi.

2.2.1.7. Phân rã Usecase về Tỉnh Thành Phố

Tỉnh – Thành Phố gồm các chức năng: Thêm Tỉnh – Thành Phố, Xóa Tỉnh – Thành Phố, Sửa Tỉnh – Thành Phố, Xem Tỉnh – Thành Phố.

Hình 2.7: Sơ đồ Usecase về Khối Thi

Hình 2.8: Sơ đồ Usecase về Tỉnh – Thành Phố

30 2.2.1.8. Phân rã Usecase về Quận Huyện

Quận – Huyện gồm các chức năng: Thêm Quận – Huyện, Xóa Quận – Huyện, Sửa Quận – Huyện, Xem Quận – Huyện.

2.2.1.9. Phân rã Usecase về Xã Phường

Xã – Phường gồm các chức năng: Thêm Xã – Phường, Xóa Xã – Phường, Sửa Xã – Phường, Xem Xã – Phường.

Hình 2.9: Sơ đồ Usecase về Quận – Huyện

Hình 2.10: Sơ đồ Usecase về Xã – Phường

31 2.2.1.10. Phân rã Usecase về Phòng Ban

Phòng Ban gồm các chức năng: Thêm Phòng Ban, Xóa Phòng Ban, Sửa Phòng Ban, Xem Phòng Ban.

2.2.1.11. Phân rã Usecase về Users

Users gồm các chức năng: Thêm Users, Xóa Users, Xem Users, Thêm Năm Tuyển Sinh.

Hình 2.11: Sơ đồ Usecase về Phòng Ban

Hình 2.12: Sơ đồ Usecase về Users

32 2.2.1.12. Phân rã Usecase về Thí Sinh

Thí Sinh gồm các chức năng: Xuất danh sách Thí Sinh, Thêm Thí Sinh, Xem Thí Sinh.

Xây dựng cơ sở dữ liệu

Dựa vào sơ đồ phân rã chức năng như đã nêu ở mục 2.2.1.1, cơ sở dữ liệu đã được xây dựng với tên trường và kiểu dữ liệu tương ứng. Các kiểu dữ liệu trong các bảng đã được tính toán phù hợp với chức năng và yêu cầu đặc thù của từng bảng. Các kiểu dữ liệu được dùng là Int, Char. Những số ở trong dấu ngoặc đơn phía sau các kiểu dữ liệu. Ví dụ như: Int(3), Char(30), Int(11),… có ý nghĩa là bề rộng hiển thị số (size): Int(size) hay Char(size). Tất cả các bảng đều có thể viết tiếng Việt với các trường dữ liệu có kiểu dữ liệu là Char. Ví dụ: trường dữ liệu SDT có kiểu dữ liệu là Char với kích thước là 11, được viết là Char(14) có dữ liệu là +840906148477.

Trường Gioitinh có kiểu dữ liệu Int(1) vì khi User đăng ký tại khoản, khi chọn giới tính của mình, User chọn Nam thì dữ liệu sẽ trả về giá trị 1, Nữ thì trả về giá trị

Hình 2.13: Sơ đồ Usecase về Thí Sinh

33

là 0. Trường SDT có kiểu dữ liệu là Char(14) vì khi User đăng ký số điện thoại thì hệ thống sẽ thêm mã quốc gia “+84” vào trước số điện thoại của User.

Bảng 2.1(tbl_users): Cơ sở dữ liệu về Users

Đối với bảng 2.1, user có số id_users = 1 thì sẽ được thao tác một số chức năng mà các user khác không làm được.

Khóa chính: Id_users

Khóa ngoại: Id_phongban, Id_chucvu

Name Type Data

Id_users Int(3) 001

Name Char(30) Lê Song Toàn

B_Day Int(2) 21

B_Month Int(2) 05

B_Year Int(4) 1992

Diachi Char(50) K54/35 Ông Ích Khiêm

SDT Char(14) +840906148477

Quequan Char(50) Điện Dương, Điện Bàn,

Quảng Nam

CMND Int(9) 201657426

Id_phongban Int(2) 01

Id_chucvu Int(2) 02

Email Char(50) Lesongtoan21@gmail.com

Password Char(16) 123456

Gioitinh Int(1) 1

Bảng 2.2 (tbl_phongban): Cơ sở dữ liệu về Phòng Ban Khóa chính: Id_phongban

Name Type Data

Id_phongban Int(3) 001

Name_phongban Char(50) Công Tác Tuyển Sinh

SDT_phongban Int(14) +84511.3888882

Diachi_phongban Char(50) 41 Lê Duẩn

34

Bảng 2.3 (tbl_chucvu): Cơ sở dữ liệu về Chức Vụ Khóa chính: Id_chucvu

Name Type Data

Id_chucvu Int(2) 02

Name_ chucvu Char(50) Cán Bộ

Bảng 2.4 (tbl_truong): Cơ sở dữ liệu về Trường Khóa chính: Id_truong

TT có nghĩa là trường có tổ chức thi tuyển. Khi User thêm trường Đại học – Cao Đẳng. Trường nào có tổ chức thi truyển thì trả về giá trị là 1, không tổ chức thi tuyển thì trả về giá trị là 0.

Name Type Data

Id_truong Int(2) 01

Tentruong Char(30) Đại Học Sư Phạm

Matruong Char(3) DDS

TT Int(1) 1

Bảng 2.5 (tbl_nganh): Cơ sở dữ liệu về Ngành Khóa chính: Id_nganh

Name Type Data

Id_nganh Int(2) 01

Tennganh Char(10) CNTT

Manganh Char(8) 01020002

Bảng 2.6 (tbl_khoithi): Cơ sở dữ liệu về Khối Thi Khóa chính: Id_khoithi

Name Type Data

Id_khoithi Int(2) 02

Tenkhoithi Char(2) A1

35

Bảng 2.7 (tbl_truong_nganh): Cơ sở dữ liệu về Trường và Ngành

Đối với bảng 2.7 thì không có khóa chính. Vì bảng tbl_nganh và bảng tbl_truong quan hệ với n-n với nhau nên bảng 2.7 sinh ra để giải quyết vấn đề n-n trên.

Nên bảng 2.7 chỉ có 2 khóa ngoại là: Id_truong, Id_nganh.

Name Type Data

Id_truong Int(2) 01

Id_nganh Int(2) 02

Bảng 2.8 (tbl_nganh_khoithi): Cơ sở dữ liệu về Ngành và Khối Thi

Tương tự như bảng 2.7. Vì bảng tbl_nganh và tbl_khoithi quan hệ n-n nên bảng 2.8 được sinh ra để giải quyết mối quan hệ n-n trên. Nên bảng 2.8 không có khóa chỉnh mà chỉ có 2 khóa ngoại là: Id_khoithi, Id_nganh.

Name Type Data

Id_khoithi Int(2) 02

Id_nganh Int(2) 02

Bảng 2.9 (tbl_tinhtp): Cơ sở dữ liệu về Tỉnh – Thành Phố Khóa chính: Id_tinhtp

Name Type Data

Id_tinhtp Int(2) 01

Name_tinhtp Char(30) TP. Đà Nẵng

Ma_tinhtp Char(2) 04

Bảng 2.10 (tbl_quan_huyen): Cơ sở dữ liệu về Quận – Huyện Khóa chinh: Id_quan_huyen

Khóa ngoại: Id_tinhtp

Name Type Data

Id_quan_huyen Int(3) 001

Name_quan_huyen Char(30) Q. Hải Châu

Ma_quan_huyen Char(4) 0401

Id_tinhtp Int(2) 01

36

Bảng 2.11 (tbl_xa_phuong): Cơ sở dữ liệu về Xã – Phường Khóa chỉnh: Id_xa_phuong

Khóa ngoại: Id_quan_huyen

Name Type Data

Id_xa_phuong Int(3) 002

Name_xa_phuong Char(30) P. Thanh Bình

Ma_xa_phuong Char(6) 040102

Id_quan_huyen Int(3) 001

Bảng 2.12 (tbl_namts): Cơ sở dữ liệu về Năm Tuyển Sinh

Đối với bảng này, giá trị của trường YearTS chỉ có 1 giá trị. Ý nghĩa của bảng này là năm tuyển sinh là năm nào thì giá trị của trường YearTS là năm đó. Khi qua năm khác tuyển sinh thì giá trị của trường YearTS cũng sẽ thay đổi theo. Ví dụ: hiện tại năm tuyển sinh năm nay là năm 2014. Qua năm sau, là năm 2015 thì giá trị của trường YearTS sẽ là 2015. Việc giá trị này thay đổi thì trong cơ sở dữ liệu, một bảng tương ứng với năm đó sẽ được tạo. Vì vậy, bảng này sẽ không có khóa chính cũng như khóa ngoại.

Name Type Data

YearTS Int(4) 2014

Bảng 2.13 (tbl_dk): Cơ sở dữ liệu về Tài Khoản Thí Sinh

Bảng này được tạo ra nhằm mục đích là giảm thiểu số lượng hồ sơ ảo. Khi một thí sinh muốn đăng ký dự thi Đại học – Cao đẳng thì cần tạo tài khoản trước khi đăng ký. Thí sinh phải đăng nhập vào tài khoản của mình với số chứng minh nhân dân và mật khẩu đã đăng ký trước đó. Trong quá trình đăng ký, để giảm thiểu số lượng hồ sơ ảo thì số chứng minh nhân dân trên hồ sơ phải trùng với số chứng minh nhân dân mà thí sinh đã đăng ký trước đó, nếu sai thì thí sinh đó không được đăng ký hồ sơ và thực hiện lại thao tác nhập hồ sơ dự thi.

37 Khóa chính: Id_tk

Name Type Data

Id_tk Int(6) 2014

Name_tk Char(30) Lê Song Toàn

CMND Int(9) 201657426

Pass_tk Char(16) 123456

Bảng 2.14 (tbl_ts): Cơ sở dữ liệu về Thí Sinh

Đối với bảng này, đây chỉ là bảng mẫu. Trên thực tế, với trang web này, tùy vào từng năm, User có id_users = 1 thì sẽ được thao tác trên bảng tbl_namts. Giá trị của trường YearTs trong bảng tbl_namts thay đổi thì sẽ có một bảng mới được sinh ra với tên là tbl_<YearTS>. Ví dụ: User có id_users = 1 là ông Nguyễn Văn A. Năm 2020, Đại học Đà Nẵng tổ chức thi đại học, cao đẳng, ông A vào thao tác với bảng này, chọn năm tuyển sinh là năm 2020. Ngay lập tức, một bảng tbl_2020 sẽ được tạo trong cơ sở dữ liệu. Những thí sinh đăng ký dự tuyển thi đại học, cao đẳng vào Đại học Đà Nẵng, khi đăng ký, toàn bộ thông tin thí sinh đăng ký sẽ được lưu vào bảng này.

Với mục đích là giữ nguyên hiện trạng đúng một bộ hồ sơ của thí sinh đăng ký thì khi đăng ký hồ sơ, thí sinh chọn địa chỉ, quê quán, nơi sinh hay các nguyện vọng học thì tôi xây dựng bảng này riêng rẻ, không liên kết với các bảng khác. Nên bảng này sẽ không có khóa ngoại.

Giả sử, bảng này có khóa ngoại là “id_tinhtp” thay cho thuộc tính “quequan”.

Một hồ sơ của một thí sinh đăng ký có địa chỉ ở tỉnh Hà Tây (id_tinhtp=13), khi lưu lại hồ sơ trên cơ sở dữ liệu sẽ là id_tinhtp = 13. Sau đó, tỉnh Hà Tây gộp vào Hà Nội, đương nhiên cán bộ trong công tác tuyển sinh sẽ xóa tỉnh Hà Tây ra khỏi bảng tbl_tinhtp. Như vậy trong hồ sơ của thí sinh vẫn sẽ lưu phần id_tinhtp = 13 nhưng thật chất khi thể hiện hồ sơ cho thí sinh và cán bộ trong công tuyển sinh xem thì phần địa chỉ trở thành rỗng.

Để khắc phục điểm trên, tôi đã để bảng tbl_ts được riêng lẻ, không có liên kết với các bảng khác, website sẽ lấy dữ liệu từ các bảng khác ra nhờ phương thức GET

38

trong PHP và lưu lại tên của các thuộc tính Tỉnh – Thành Phố, Quận – Huyện, Xã – Phường, Nguyện vọng học, Ký hiệu trường, Tên ngành, Mã ngành bằng phương thức Insert do tôi xây dựng.

Đối với các thuộc tính Quequan, Diachi, Noisinh, giá trị của những thuộc tính này sẽ được ghép bới 3 thuộc tính Name_tinhtp, Name_quan_huyen, Name_xa_phuong của 3 bảng tbl_tinhtp, tbl_quan_huyen, tbl_xa_phuong.

Khóa chính: Id_thisinh

Name Type Data

Id_thisinh Int(6) 000001

Fname Char(30) Lê Song

Lname Char(10) Toàn

Gioitinh Int(1) 1

B_day Int(2) 21

B_month Int(2) 05

B_year Int(4) 1992

Noisinh Char(50) P. Thanh Bình, Q. Hải

Châu, TP. Đà Nẵng

Dantoc Char(10) Kinh

DTUT Int(2) 01

Diachi Char(100)

K54/35 Ông Ích Khiêm, P. Thanh Bình, Q. Hải Châu, TP. Đà Nẵng

Khuvuc Char(6) KV01

CMND Int(9) 201657426

SDT Char(14) +840906148477

Quequan Char(100) Điện Dương, Điện Bàn,

Quảng Nam

NV1 Char(50) Đại Học Sư Phạm

Kyhieutruong1 Char(3) DDS

Khoithi1 Char(2) A

Manganh1 Char(5) 01020002

Tennganh1 Char(10) CNTT

NV2 Char(50)

Kyhieutruong2 Char(3)

Khoithi2 Char(2)

Manganh2 Char(5)

Tennganh2 Char(10)

39

Lienthong Int(1) 0

THPT_10 Char(50) THPT Nguyễn Hiền

THPT_11 Char(50) THPT Nguyễn Hiền

THPT_12 Char(50) THPT Nguyễn Hiền

YearTN Int(4) 2010

DuthiTai Char(1)

TruongTn Char(60)

Như vậy sẽ có 3 bảng không có khóa ngoại, riêng bảng tbl_namts sẽ không có khóa chính và khóa ngoại

Liên kết giữa các bảng: Các bảng liên kết với nhau thông qua khóa ngoại của các bảng:

Hình 2.14: Mối liên hệ giữa các bảng

40

Hình 2.14: Mối liên hệ giữa các bảng

41

2.2.2. Xây dựng mô hình MVC dựa trên cơ sở dữ liệu trên PHP 2.2.3.1. Các lớp Model

Lớp này đóng vai trò là cầu nối đến một lớp khác đó là lớp Model, lớp Controller sẽ gọi các phương thức để đáp ứng cho các yêu cầu, sự kiện đến từ phía người dùng (lớp View) và các phương thức này gọi đến các phương thức tương ứng trên lớp Model để thực thi việc truy xuất Database một cách phù hợp.

Các lớp model:

 Class.khoithi.php

 Class.nganh.php

 Class.truong.php

 Class.nganh.khoithi.php

 Class.truong.nganh.php

 Class.tinhTP.php

 Class.quan.huyen.php

 Class.xa.phuong.php

 Class.phongban.php

 Class.chucvu.php

 Class.namts.php

 Class.users.php

 Class.thisinh.php

 Class.connect.php

Trong đó, class.connect.php là lớp dùng để kết nối giữa MySQL Xampp với trang web (Xem nội dung của lớp nạy tại phụ lục [5]).

Website sử dụng localhost có:

User: root Password: null

Database: TuyenSinh

42 2.2.3.2. Các lớp View

Lớp View đóng vai trò tạo giao diện cho người dùng. Người dùng ở đây được hiểu là thí sinh và cán bộ trong công tác tuyển sinh. Tương tác với ứng dụng web của người dùng là tương tác trên giao diện đó là những thứ được tạo ra, trình bày bởi lớp này.

Các lớp Viewer:

a. Cán bộ trong công tác tuyển sinh

 Login.php

 Logout.php

 Admin.php

 Hoso.view.php

 ThiSinh.view.php

 HosoUser.View.php

 Khoithi.view.php

 Nganh.view.php

 Truong.view.php

 Tinh.ThanhPho.php

 Quan.Huyen.view.php

 Xa.Phuong.view.php

 Users.View.php

 Phongban.view.php

 CreateTable_TS.php

Trong đó, trang login dùng để cho cán bộ đăng nhập trước khi vào làm việc.

Như đã nói ở mục 2.1.2, chỉ có tài khoản có id_users = 1 thì mới có thể thao tác trên bảng tbl_namts và một số chức năng ở bảng tbl_users.

 Bảng tbl_namts tương ứng với trang CreateTable_TS.php

 Bảng tbl_ts tương ứng với trang Users.View.php và HoSoUser.View.php.

Chức năng được hạn chế bởi id_users (Phần này sẽ được nói kỹ hơn trong mục 2.1.3.3):

 Thêm User

 Xóa User b. Thí sinh

 Dangkyhoso.php

43

Ở đây, có lẻ bạn sẽ thắc mắc vì sao về phần thí sinh dự thi chỉ có một trang duy nhất. Tôi xin giải thích như sau:

Đây là trang web hướng đến đối tượng thí sinh và cán bộ trong công tác tuyển sinh. Đối với thí sinh, nó chỉ tinh giảm đi các bước rườm rà khi đăng ký một bộ hồ sơ.

Trang web tập trung chủ yếu xây dựng công cụ hỗ trợ cho cán bộ trong công tác tuyển sinh trong việc thu gom số lượng hồ sơ lớn trong thời gian ngắn.

Đây là trang web chỉ sử dụng để đăng ký tuyển sinh, nó có thể tích hợp thêm vào trang web của các trường đại học, cao đẳng có thi tuyển, hay nói cách khác nó là modul. Chính vì vậy nên nó không có chức năng đăng bài báo hay đăng hình ảnh.

Hệ thống giáo dục nước ta còn khá phức tạp, trang web này được phát triển đồng nghĩa với việc nó có thể ảnh hưởng đến các trang web của các trường Đại học, Cao đẳng khi nó được áp dụng vào thực tế, nên với trang web này, tôi chỉ dừng ở mức độ đối với thí sinh chỉ có 1 trang đăng ký hồ sơ.

Việc người dùng hỏi có nên hay không nên tạo thêm trang thông tin hay hình ảnh tuyển sinh sẽ gây ảnh hưởng không hề nhỏ đến thí sinh. Họ có thể sẽ bị nhầm giữa thông tin được đăng trên website này và website của các trường Đại Học, Cao đẳng có thi tuyển hoặc không có thi tuyển.

2.2.3.3. Các lớp Controller

Nếu chỉ có output ra mà bạn không thể biết được người dùng làm gì, click, submit, gởi các HTTP request... thì ứng dụng web của bạn cũng chẳng có gì ngoài cái xác vô hồn. Khi đó để bắt đc, xử lí các sự kiện này chúng ta sẽ cần đến lớp Controller.

Lớp Controller dùng để quản lí, quyết định phương thức mà ứng dụng web sẽ đáp ứng cho các sự kiện, yêu cầu đến từ phía giao diện web của người dùng.

Một phần của tài liệu Xây dựng website tuyển sinh đại học cao đẳng (Trang 25 - 48)

Tải bản đầy đủ (PDF)

(65 trang)