Thiết kế hệ thống website tự học

Một phần của tài liệu thiết kế website hỗ trợ tự học môn hóa lớp 1o ban nâng cao ở trường trung học phổ thông (Trang 73)

8. Những đóng góp mới của đề tài

2.6. Thiết kế hệ thống website tự học

Sau đây, chúng tôi sẽ trình bày chi tiết về các table bên trong CSDL.

- Table có tên Answer: dùng để lưu các câu trả lời cho một chủ đề nào đó trên diễn đàn.

Bảng 2.2. Table Answer

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

Id real no Dùng để phân biệt các câu

trả lời với nhau.

Ques int no Id của chủ đề mà câu trả

lời này thuộc về.

Mem int no Id của thành viên post câu

trả lời này.

Cont nvarchar(MAX) no Nội dung câu trả lời.

Date datetime no Thời điểm câu trả lời

được post.

- Table có tên City: dùng để lưu các địa phương (cấp tỉnh/thành) trên lãnh thổ Việt Nam.

Bảng 2.3. Table City

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

Id int no Dùng để phân biệt các địa

phương với nhau.

City nvarchar(50) no Tên của địa phương.

- Table có tên Comment: dùng để lưu các ý kiến đánh giá cho một tin tức hay một tư liệu nào đó.

Bảng 2.4. Table Comment

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

kiến đánh giá với nhau.

Type nvarchar(50) no Dùng để phân biệt tin Hóa

học, tin giáo dục, tư liệu.

News int no Id của tin tức hay tư liệu

mà ý kiến này thuộc về.

Title nvarchar(MAX) no Tiêu đề của ý kiến.

Cont nvarchar(MAX) no Nội dung của ý kiến.

Name nvarchar(MAX) no Tên người post ý kiến.

Date datetime no Thời điểm ý kiến được

post.

- Table có tên Document: dùng để lưu thông tin tư liệu “Kiến thức Hóa học”, “Lịch sử Hóa học”, “Học mà vui, vui mà học” và “Các nhà Hóa học”.

Bảng 2.5. Table Document

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

Id int no Dùng để phân biệt các tư

liệu với nhau.

Avatar nvarchar(MAX) yes Địa chỉ lưu ảnh kèm theo

của tư liệu.

Title nvarchar(MAX) no Tiêu đề của tư liệu.

Cont nvarchar(MAX) no Nội dung của tư liệu.

Date datetime no Thời điểm tư liệu được

post.

Type int no

Dùng để phân biệt loại tự liệu: 1 – Kiến thức Hóa học, 2 – Lịch sử Hóa học, 3 – Học mà vui, vui mà học, 4 – Các nhà Hóa học.

- Table có tên Ebook: dùng để lưu thông tin tư liệu “Sách và bài tập tham khảo”.

Bảng 2.6. Table Ebook

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

Id int no Dùng để phân biệt các tư liệu

với nhau.

Title nvarchar(MAX) no Tiêu đề của tư liệu.

FName nvarchar(MAX) no Tên file tư liệu.

Date datetime no Thời điểm tư liệu được post.

Status int no

Tình trạng của tư liệu: 0 – không dùng nữa, 1 – bình thường.

- Table có tên Exercise: dùng để lưu thông tin các bài tập. Bảng 2.7. Table Exercise

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

Id int no Dùng để phân biệt các

bài tập với nhau.

Part int no Chương mà bài tập đó

thuộc về (1 – 7).

Type int no Loại bài tập: 1 – biết, 2

– hiểu, 3 – vận dụng.

Require nvarchar(MAX) no Đề bài.

Ans1 nvarchar(MAX) no Đáp án 1.

Ans2 nvarchar(MAX) no Đáp án 2.

Ans3 nvarchar(MAX) no Đáp án 3.

Ans4 nvarchar(MAX) no Đáp án 4.

RightAns int no Số thứ tự của đáp án

BadWarning int no Trạng thái phản ánh về bài tập: 0 – bình thường, 1 – bài tập có vấn đề.

Date datetime no Thời điểm bài tập được

upload lên website.

Status int no Tình trạng của bài tập:

0 – đã hủy, 1 – đang dùng.

Reference nvarchar(MAX) yes Thông tin nguồn bài

tập.

Pics nvarchar(MAX) yes Địa chỉ ảnh kèm theo.

- Table có tên LogHistory: dùng để lưu các log đăng nhập vào website của thành viên, tránh trường hợp nhiều người dùng khác nhau dùng chung 1 tài khoản đăng nhập vào website vào cùng một thời điểm.

Bảng 2.8. Table LogHistory

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

Mem int no Id của thành viên.

LogIn datetime no Thời điểm đăng nhập vào

website.

LogOut datetime yes Thời điểm đăng xuất khỏi

website.

Status int no

Tình trạng: 0 – chưa thoát khỏi website, 1 – đã thoát khỏi website.

- Table có tên Member: dùng để lưu thông tin các thành viên cũng như quản trị viên của website.

Bảng 2.9. Table Member

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

Id int no Dùng để phân biệt thành

viên, quản trị viên.

Name varchar(50) no Tên đăng nhập.

Pass varchar(50) no Mật khẩu đăng nhập.

Admin int no

Dùng để phân biệt thành viên và quản trị viên: 0 – thành viên, 1 – quản trị viên.

Class nvarchar(MAX) yes Thông tin lớp.

School nvarchar(MAX) yes Thông tin trường.

District nvarchar(MAX) yes Thông tin quận/huyện.

City int yes Id của địa phương.

Email varchar(MAX) yes Thông tin email.

Phone varchar(50) yes Thông tin số điện thoại.

Avatar nvarchar(MAX) yes Địa chỉ ảnh hiện thị của

thành viên, quản trị viên.

SecQues1 nvarchar(MAX) yes Câu hỏi bảo mật 1.

SecAns1 nvarchar(MAX) yes Câu trả lời bảo mật 1.

SecQues2 nvarchar(MAX) yes Câu hỏi bảo mật 1.

SecAns2 nvarchar(MAX) yes Câu trả lời bảo mật 2.

SumMark real yes Tổng điểm của thành viên.

DisQues int yes Số chủ đề thành viên đã

tạo trên diễn đàn.

DisAns int yes Số trả lời thành viên post

trên diễn đàn.

Date datetime yes Thời điểm trở thành thành

- Table có tên Message: dùng để lưu các tin nhắn do người dùng gởi đến cho ban quản trị.

Bảng 2.10. Table Message

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

Id int no Dùng để phân biệt các tin

nhắn với nhau.

Name nvarchar(MAX) no Tên người gởi.

Subject nvarchar(MAX) no Tiêu đề của tin nhắn.

Cont nvarchar(MAX) no Nội dung của tin nhắn.

Date datetime no Ngày tin nhắn được gởi

đến.

Status int no Trạng thái tin nhắn: 0 –

chưa xem, 1 – đã xem. - Table có tên Multimedia: dùng để lưu các tư liệu “Mô hình flash” và “Video thí nghiệm”.

Bảng 2.11. Table Multimedia

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

Id int no Dùng để phân biệt các tư

liệu với nhau.

Title nvarchar(MAX) no Tiêu đề của tư liệu.

FName nvarchar(MAX) no Tên file tư liệu.

Date datetime no Thời điểm tư liệu được

post.

Status int no

Tình trạng của tư liệu: 0 – không dùng nữa, 1 – bình thường.

Type varchar(10) no Dùng để phân biệt loại tư

- Table có tên là News: dùng để lưu các tin Hóa học (“Hóa học và đời sống”, “Hóa học và môi trường” và “Hóa học hiện đại”).

Bảng 2.12. Table News

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

Id int no Dùng để phân biệt các tin

với nhau.

Avatar nvarchar(MAX) yes Địa chỉ ảnh kèm theo của

tin.

Title nvarchar(MAX) no Tiêu đề của tin.

Cont nvarchar(MAX) no Nội dung của tin.

Date datetime no Thời điểm tin được post.

Type int no

Dùng để phân biệt loại tin: 1 – Hóa học và đời sống, 2 – Hóa học và môi trường, 3 – Hóa học hiện đại. - Table có tên PedagogyNews: dùng để lưu các tin giáo dục.

Bảng 2.13. Table PedagogyNews

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

Id int no Dùng để phân biệt các tin

với nhau

Avatar nvarchar(MAX) yes Địa chỉ ảnh kèm theo của

tin

Title nvarchar(MAX) no Tiêu đề của tin

Cont nvarchar(MAX) no Nội dung của tin

Date datetime no Thời điểm tin được post

Bảng 2.14. Table Question

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

Id int no Dùng để phân biệt các chủ

đề với nhau

Mem int no Id của thành viên hay quản

trị viên post chủ đề

Title nvarchar(MAX) no Tiêu đề của chủ đề

Cont nvarchar(MAX) no Nội dung của chủ đề

Date datetime no Thời điểm chủ đề được

post

Type int no Dùng để phân biệt loại chủ

đề

- Table có tên Round: dùng để lưu thông tin mỗi lần tham gia làm bài của thành viên.

Bảng 2.15. Table Round

Tên cột Loại dữ liệu Cho phép rỗng Chú giải

Id real no Dùng để phân biệt các lần

làm bài với nhau.

Mem int no Id của thành viên thực hiện

bài làm.

Part int no Số thứ tự của chương mà

bài làm này thuộc về.

STT int no Số thứ tự vòng của bài làm

ứng với chương (Part).

Mark real no Điểm được tính cho lần

làm bài này.

Date datetime no Thời điểm kết quả bài làm

2.6.2. Thiết kế bố cục website

Website gồm có tất cả 26 trang, dưới đây là sơ đồ bố cục các trang và đường đi nối kết giữa các trang.

Hình 2.4. Sơ đồ bố cục các trang Trang diễn đàn chi tiết (2.3) Trang diễn đàn (2.3) Trang đăng nhập vào diễn đàn (2.3) Trang quản lý bài tập (3) Trang quản lý tư liệu (3) Trang quản lý tin tức (3) Trang quản lý thành viên (3) Trang quản lý chung (3) Trang chủ Trang tin tức chi tiết Trang tin tức Trang tin giáo dục Trang tư

liệu chi tiết Trang đăng kí thành viên

Trang mô hình flash Trang video thí nghiệm Trang sách và bài tập tham khảo Trang tìm lại mật khẩu (2) Trang danh sách thành viên Trang chi tiết thành viên Trang tư liệu Trang liên hệ Trang cập nhật thông tin cá nhân (2) Trang làm bài (2) Trang chọn chương bài tập (2) Trang cá nhân của

Trên sơ đồ, chúng tôi dùng (2) để biểu thị trang đó chỉ có thành viên tham gia. Tương tự, (3) biểu thị trang đó chỉ có quản trị viên tham gia, và (2,3) là trang mà cả thành viên và quản trị viên đều tham gia. Các trang không đánh số là các trang mà tất cả người dùng đều có thể tham gia.

- Trang chủ được xem như trung tâm của toàn bộ 26 trang. Trang chủ có các link đến các trang sau: trang tin tức, trang tư liệu, trang liên hệ, trang tin giáo dục, trang đăng ký thành viên, trang tìm lại mật khẩu, trang danh sách thành viên. Ở trang chủ có form đăng nhập vào website. Nếu người dùng là thành viên, sau khi đăng nhập thành công, thành viên có thể đến trực tiếp trang chọn chương bài tập để làm bài tập trực tuyến, hoặc thành viên có thể đến trang cá nhân của chính thành viên đó. Nếu người dùng là quản trị viên, quản trị viên sẽ đến trang quản lý chung.

- Từ trang tin tức, để xem chi tiết nội dung một tin nào đó và gởi ý kiến đánh giá về bản tin thì người dùng phải đến trang tin tức chi tiết.

- Từ trang tư liệu, người dùng có 4 đường link đến 4 trang khác nhau. Đối với các tư liệu kiến thức Hóa học, lịch sử Hóa học, học mà vui, vui mà học và các nhà Hóa học, người dùng muốn xem chi tiết về mẫu tư liệu nào đó và góp ý kiến đánh giá về tư liệu thì phải đến trang tư liệu chi tiết. Đối với tư liệu mô hình flash, người dùng đến trang mô hình flash để xem và download tư liệu (nếu có nhu cầu). Tương tự, người dùng đến trang video thí nghiệm để xem và download các video thí nghiệm; và người dùng đến trang sách và bài tập tham khảo để download các file tư liệu tham khảo.

- Từ trang danh sách thành viên, nếu người dùng muốn xem thông tin chi tiết về một thành viên nào đó thì đến trang chi tiết thành viên.

- Khi người dùng là thành viên, tại trang cá nhân của thành viên, có link đến trang chọn chương bài tập để làm bài tập trực tuyến và trang cập nhật thông tin cá nhân. Thành viên muốn đến được trang làm bài, bắt buộc phải đi qua trang chọn chương bài tập.

- Khi người dùng là quản trị viên, tại trang quản lý chung, có link đến trang quản lý thành viên, trang quản lý tin tức, trang quản lý tư liệu và trang quản lý bài tập.

Trên đây, chúng tôi đã đi qua 3 bước đầu tiên, cũng là 3 bước đặt nền móng vững chắc cho website trong quy trình thiết kế website. Tiếp theo sau, chúng tôi sẽ trình bày tiếp 2 bước sau trong quy trình.

2.7. Thực hiện viết code

Chúng tôi chỉ trích một vài đoạn code hay trong quá trình viết code.

a) Sử dụng RegularExpressions để viết hàm kiểm tra tính hợp lý của số điện thoại

Khi người dùng muốn trở thành thành viên của website, người dùng phải thực hiện thao tác đăng ký thành viên. Một trong nhưng thông tin khi đăng ký là số điện thoại. Tất nhiên thông tin này là không bắt buộc, nhưng nếu người dùng điền thông tin này thì website phải kiểm tra tính hợp lệ của thông tin.

Có rất nhiều cách xử lý cho trường hợp này, và theo chúng tôi cách dùng RegularExpressions của thư viện lập trình .Net là một cách hay, ít tốn công sức và có hiệu quả cao.

1 using System.Text.RegularExpressions; 2 protectedbool checkphone(string str) 3 {

4 if (str == "") 5 returntrue;

6 string pattern = @"^0[0-9]{9,10}$"; 7 Regex check = new Regex(pattern, RegexOptions.IgnorePatternWhitespace); 8 return check.IsMatch(str); 9 }

- Dòng số 4 và số 5 cho thấy nếu số điện thoại có giá trị rỗng, hay nói cách khác người dùng không điền thông tin này, thì hàm xử lý trên sẽ cho biết thông tin số điện thoại là hợp lệ mà không cần kiểm tra gì nữa.

- Sức mạnh của hàm xử lý này nằm ở dòng số 6 và số 7. Hai dòng này tạo ra một mẫu so trùng có dạng chuỗi chỉ có các ký tự số, độ dài chuỗi tối thiểu là 10 và tối đa là 11, chuỗi bắt đầu ký tự 0. Điều này xuất phát từ quy định của website, ở Việt Nam hiện nay, số điện thoại có độ dài tối thiểu là 10 và tối đa là 11, bắt đầu bằng số 0. Công việc còn lại là so trùng mẫu được tạo ra với thông tin số điện thoại, nếu thông tin khớp với mẫu thì đây là một thông tin hợp lệ, ngược lại là không hợp lệ.

Cách sử dụng này còn được dùng để kiểm tra tính hợp lệ của thông tin tên đăng nhập, và ngay cả thông tin mật khẩu đăng nhập.

b) Hàm xử lý lấy ngẫu nhiên bài tập từ cơ sở dữ liệu để ra đề bài tập cho thành viên

Như yêu cầu chức năng của website, mỗi vòng làm bài đòi hỏi về mức độ tư duy có 3 bài biết, 9 bài hiểu, 8 bài vận dụng của cùng 1 chương. Các bài này phải được lấy ngẫu nhiên trong tập bài cùng phân loại trong CSDL. Chúng tôi xin trích hàm xử lý lấy ngẫu nhiên 3 bài thuộc loại bài tập biết. Đối với hai loại bài tập còn lại thì tương tự.

1 using System.Data.SqlClient; 2 using System.Collections.Generic;

3 protected Queue<int> exercise = new Queue<int>(20); 4 protectedvoid getKnowExer()

5 {

6 string chuoiketnoi =

ConfigurationManager.ConnectionStrings["khanhConnect"].ConnectionS tring;

7 SqlConnection ketnoi = new SqlConnection(chuoiketnoi); 8 ketnoi.Open();

9 string chuoitruyvan = "select Id from Exercise where Part=" + Request.Cookies["ExerPart"].Value + " and Type=1 and Status=1"; 10 SqlCommand truyvan = new SqlCommand(chuoitruyvan, ketnoi); 11 SqlDataReader reader = truyvan.ExecuteReader();

12 Queue<int> temp = new Queue<int>(exerCount); 13 if (reader.HasRows)

14 while (reader.Read()) 15 {

16 temp.Enqueue(int.Parse(reader["Id"].ToString())); 17 }

18 reader.Close(); 19 ketnoi.Close();

20 Random rand = new Random(); 21 int flag = 0;

22 while (flag < 3) 23 {

24 int number = rand.Next(1, exerCount);

25 if (temp.Contains(number) && !exercise.Contains(number)) 26 { 27 szExer += number.ToString() + ","; 28 exercise.Enqueue(number); 29 flag++; 30 } 31 } 32 }

Hàm xử lý trên chia làm hai phần, phần đầu tiên từ dòng 5 đến dòng 18 làm nhiệm vụ lấy các Id bài tập theo đúng loại cất vào vùng nhớ tạm temp, và phần sau từ dòng 20 đến dòng 32 làm nhiệm vụ chọn ngẫu nhiên 3 trong số Id bài tập lưu

trong temp. Ở đây, chúng tôi sử dụng lớp Random của thư viện .Net, và đây thực sự là một lớp hữu ích, khả năng trùng lắp bài tập ở các lần chạy là rất thấp.

c) Hàm xử lý upload bài tập vào cơ sở dữ liệu từ file excel

Hàm cuối cùng chúng tôi muốn trích dẫn ra trong cuốn luận văn này là hàm xử lý upload bài tập vào CSDL từ file excel. Bài tập sẽ phải có cách nào đó upload vào CSDL, để website có cơ sở bài tập mà ra đề bài cho thành viên làm bài. Vậy thì bằng cách nào các quản trị viên upload bài tập vào CSDL?

Chúng tôi chọn cách upload bài tập từ một file excel được soạn sẵn theo đúng định dạng mà chúng tôi quy định. File excel đó phải là một file excel có định dạng

Một phần của tài liệu thiết kế website hỗ trợ tự học môn hóa lớp 1o ban nâng cao ở trường trung học phổ thông (Trang 73)

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

(158 trang)