Tài liệu Đồ án Xây dựng diễn đàn trên mạng: ĐỒ ÁN:
Xây dựng diễn đàn trên mạng
Như tất cả chúng ta đều biết, nếu ai đã từng sử dụng Internet chắc sẽ không ít lần nghe
hoặc sử dụng dịch vụ nhóm thảo luận trên Internet (NewsGroup), đây là dịch vụ khá phổ
biến hiện nay. Khi ta gặp một vấn đề thắc mắc, hoặc đang tìm kiếm một thông tin gì đó,
thì NewsGroup sẽ là người trợ giúp đắc lực cho chúng ta. Dịch vụ này cho phép người
dùng gửi lên mạng Internet những câu hỏi hoặc những thắc mắc của mình, sau đó nếu
một người nào đó, ở đâu đó trên thế giới cũng tham gia vào nhóm thảo luận đó nếu họ
đọc được được mẩu tin của chúng ta và biết về thông tin về vấn đề đó họ sẽ trả lời cho ta
và ngược lại ta cũng có thể trở thành một người trả lời.
Tác dụng lớn nhất của Diễn đàn trên web là mọi người khi tham gia vào mạng có
thể đặt ra một vấn đề gì đó theo một chủ đề nhất định để có thể nhận được câu trả lời của
nhiều người trên toàn thế giới.
Và hướng xây dựng chương trình của em là: Khi nói đến diễn đàn mọi người liên
...
45 trang |
Chia sẻ: haohao | Lượt xem: 1180 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Đồ án Xây dựng diễn đàn trên mạng, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
ĐỒ ÁN:
Xây dựng diễn đàn trên mạng
Như tất cả chúng ta đều biết, nếu ai đã từng sử dụng Internet chắc sẽ không ít lần nghe
hoặc sử dụng dịch vụ nhóm thảo luận trên Internet (NewsGroup), đây là dịch vụ khá phổ
biến hiện nay. Khi ta gặp một vấn đề thắc mắc, hoặc đang tìm kiếm một thông tin gì đó,
thì NewsGroup sẽ là người trợ giúp đắc lực cho chúng ta. Dịch vụ này cho phép người
dùng gửi lên mạng Internet những câu hỏi hoặc những thắc mắc của mình, sau đó nếu
một người nào đó, ở đâu đó trên thế giới cũng tham gia vào nhóm thảo luận đó nếu họ
đọc được được mẩu tin của chúng ta và biết về thông tin về vấn đề đó họ sẽ trả lời cho ta
và ngược lại ta cũng có thể trở thành một người trả lời.
Tác dụng lớn nhất của Diễn đàn trên web là mọi người khi tham gia vào mạng có
thể đặt ra một vấn đề gì đó theo một chủ đề nhất định để có thể nhận được câu trả lời của
nhiều người trên toàn thế giới.
Và hướng xây dựng chương trình của em là: Khi nói đến diễn đàn mọi người liên
tưởng đến ngay đến các cuộc bàn luận, phân tích về một vấn đề gì đó của một nhóm
người nào đó. Trong diễn đàn mọi người đưa ra ý kiến của mình, các câu hỏi của mình
để mọi người tham gia phân tích tìm câu trả lời, đó là diễn đàn trong cuộc sống hằng
ngày chỉ diễn ra trong nội bộ một nhóm người.
Ngày nay, với sự phát triển của mạng Internet ý tưởng đưa các cuộc nói chuyện,
bàn luận xung quanh một vấn đề gì đó cũng được đưa lên mạng. Như vậy, khi tham gia
diễn đàn trên mạng các thành viên không cần phải tập trung tại một địa điểm nào đó mà
chỉ cần ngồi tại nhà cùng với chiếc máy tính và tham gia vào mạng là có thể tham gia
được diễn đàn. ưu điểm của phương pháp này là ở chổ sẽ có nhiều người và rất nhiều nơi
trên thế giới tham gia vào diễn đàn và vấn đề đặt ra trên diễn đàn chắc chắn sẽ mau
chóng được giải thích.
Diễn đàn trên web là một chương trình ứng dụng được xây dựng dưới dạng các
trang web. Với web, mọi người sử dụng có thể truy xuất đến các trang ứng dụng này để
trao đổi thông tin với người khác.
Do chương trình xây dựng trên web có trao đổi thông tin giữa các người sử dụng
với nhau nên các trang web của ứng dụng nhất thiết phải là các trang web có nội dung
động. Trong những năm gần đây để xây dựng các trang web động người ta thường hay
sử dụng các ngôn ngữ như: VBScript, Jscript, ASP. Ngoài ra các trang web cho phép
người sử dụng trao đổi thông tin với nhau nên phải có một cơ sở dữ liệu để lưu trữ các
thông tin mà người sử dụng trao đổi với nhau.
Và đây là một số công cụ trợ giúp
1. Môi trường làm việc của ứng dụng:
- PWS (Personal Web Server)
- Cơ sở dữ liệu: Microsoft Access 98
- Chuẩn kết nối: ODBC
Web Server là một chương trình ứng dụng. Trên web server chứa những site mà
các máy con có thể truy xuất đến các site này. Thông thường trên máy có hệ điều hành
Windows 98 thì web server là Personal Web Server, trên máy WindowsNT Server thì
dùng phần mềm IIS 4.0.
Về cơ sở dữ liệu, các ứng dụng thực tế hiện nay người ta thường hay sử dụng SQL
Server. Nhưng trong chương trình ta chỉ dùng cơ sở dữ liệu để lưu trữ thông tin vào các
bảng nên việc chọn SQL Server hay MS Access là không quan trọng.
Về chuẩn ODBC, ODBC là viết tắt của Open Database Connectivity (hệ thống kết
nối CSDL mở). ODBC được coi như là một giao thức chuẩn để giao tiếp giữa chương
trình ứng dụng với hệ thống các bảng của cơ sở dữ liệu.
Các công cụ lập trình
- Jscript: Jscript được phát triển bởi Microsoft nhằn làm tăng tính năng cho trình
duyệt Internet Explorer.
- Vbscript: Vbscript cũng do Microsoft phát triển. Cũng như Jscript, Vbscript được
chèn vào trang web để làm tăng thêm tính năng tương tác cho trang web.
- ASP: Microsoft Active Server Page (ASP) là một môi trường kịch bản trên máy
chủ dùng để tạo ra những ứng dụng Web động và có tương tác. ASP có một tập các đối
tượng có sẵn với nhiều tính năng phong phú, khả năng hỗ trợ VBScript và JScript cùng
với một số thành phần ActiveX khác kèm theo.
- Visual Inter Dev: Visual InterDev là một phần mềm được phát triển bởi
Microsoft. Đây là một phần mềm có hỗ trợ cho lập trình thiết kế web đặc biệt phần mềm
có cho phép người lập trình có thể nhìn thấy trực tiếp trang web của mình đang thiết kế.
Visual InterDev hỗ trợ rất mạnh cho việc lập trình các trang web có tương tác.
- DHTML: Là sự kết hợp giữa các thuộc tính của HTML, JavaScript và Vbscript.
Sau khi đã trình bày những khái niệm cơ bản cũng như những công cụ trợ giúp
để xây dựng đề án này thì bây giờ em xin được phân tích chương trình:
Phân tích chương trình bao gồm :
Đầu tiên là tổng quát về chức năng: Bao gồm
- Gửi bài lên diễn đàn.
- Xem bài đã được gửi theo các chủ đề khác nhau
- Trả lời bài đã được gửi
- Tìm kiếm một bài
- Đăng ký trở thành thành viên của diễn đàn
- Đánh dấu bài ưa thích
- Xoá các bài đã có trên diễn đàn
- Thêm người sử dụng
- Xoá người sử dụng
- Thêm chủ đề cho diễn đàn
- Xoá chủ đề.
Các vấn đề khi quyết các chức năng này là:
Thiết kế tổng quát ứng dụng: nhằm giúp người lập trình dễ phát triển ứng dụng một
cách có tổ chức, đúng hướng, đúng yêu cầu đã đề ra.
Thiết kế cơ sở dữ liệu: đây là phần quan trọng, có liên quan đến tính tối ưu của hệ
thống.
Xây dựng giao diện: tạo điều kiện thuận lợi cho người sử dụng khi gửi các yêu cầu
của mình đến web server.
Viết các trang web để thực hiện các chức năng của chương trình: dựa vào ASP và
các ngôn ngữ script để tạo ra những modul cho chương trình.
Kiểm tra, sửa lỗi chương trình
SƠ ĐỒ QUI TRÌNH HOẠT ĐỘNG CỦA CÁC TRANG TRONG ỨNG DỤNG
WEB FORUM
Xem nội dung 1 bài
Gửi bài mới
Quay về trang
hiển thị
Xem, gửi bài
Hiển thị các bài
Nội dung bài
Soạn và gửi bài
Cụ thể qui trình hoạt động như sau:
- Qui trình gửi và xem bài: Trang đầu tiên sẽ là trang hiển thị danh sách các bài
được gửi dưới dạng các siêu liên kết. Người sử dụng muốn xem nội dung của một bài
nào đó thì kích vào tiêu đề của bài. ở trang xem nội dung người sử dụng có thể trả lời
cho bài có nội dung vừa đọc. Ngoài ra người sử dụng có thể gửi một bài mới.
- Qui trình tìm kiếm bài: Khi người sử dụng muốn tìm kiếm một bài nào đó, sẽ có
một trang tìm kiếm và ở trang tìm kiếm
+ Tìm kiếm theo chủ đề của bài gửi
+ Tìm kiếm theo nội dung của bài gửi
+ Tìm kiếm những bài trong một khoảng thời gian giới hạn nào đó
- Qui trình đăng ký và login của người sử dụng, ghi nhớ bài: Để trở thành một
thành viên của diễn đàn, người sử dụng phải đăng ký một account và sẽ được hệ thống
cấp một tên truy nhập và mật khẩu riêng cho người đó.
Khi yêu cầu được đăng ký, một trang đăng ký bao gồm các ô để nhập thông tin
được hiện ra, người sử dụng sẽ nhập các thông tin vào các ô này và gửi đi, nếu được hệ
thống chấp nhận thì người đăng ký sẽ nhận được một thông báo chúc mừng thành công,
nếu không thành công hệ thống sẽ thông báo lỗi và hiện ra lại trang đăng ký cho người
sử dụng sửa lại các thông tin đăng ký cho phù hợp.
Khi đã trở thành một thành viên của diễn đàn người sử dụng ngoài việc có thể sử
dụng các trang giống như một người sử dụng bình thường còn có thể đánh dấu những bài
mà mình ưa thích.
- Qui trình hoạt động của người quản lý:
Để forum hoạt động tốt cần phải có một người quản lý, chức năng của người quản
lý bao gồm:
+ Xoá bài
+ Thêm người sử dụng, xóa người sử dụng
+ Thêm chủ đề, xóa chủ đề
Và em xin tiếp tục được trình bày phần phân tích thiết kế hệ thống của chương
trình
Như đã nói trong phần giới thiệu tổng quan về hoạt động của diễn đàn, người sử
dụng khi gửi một bài lên diễn đàn thì các thành phần của một bài gửi: thông tin về người
gửi, tiêu đề bài gửi, nội dung... đều phải được lưu trữ trong cơ sở dữ liệu trên máy chủ.
Thông thường người ta thường dùng các mô hình cơ sở dữ liệu quan hệ để chứa các
thông tin về bài gửi như SQL Server hay MS Access.
Trong đồ án này em chọn cơ sở dữ liệu là Access để lưu các thông tin về bài gửi.
Do có liên quan nhiều đến cơ sở dữ liệu, đồng thời các thông tin của bài gửi đòi hỏi phải
được tổ chức một cách hợp lý và chặt chẽ nên trong phần này chủ yếu trình bày về phần
phân tích và thiết kế hệ thống.
Những thông tin cần quản lý trên cơ sở dữ liệu
Thông tin các bài mà người sử dụng gửi lên diễn đàn, mỗi bài phải có mã riêng, cấp
của bài đó, nội dung của bài là gì.
Thông tin về người dùng, khi người sử dụng đăng ký thì các thông tin về người sử
dụng như: tên truy nhập, mật khẩu, cấp của người sử dụng (cấp Admin và cấp User) phải
được lưu trữ trên cơ sở dữ liệu.
Nội dung của bài sau khi gửi sẽ được tách ra thành các từ khoá, các từ khoá này sẽ
tạo nên các bảng chỉ mục dùng cho mục đích tìm kiếm thông tin về các bài gửi đã gửi
lên diễn đàn. Do vậy các từ khoá, các chỉ mục cũng phải được lưu giữ.
Quản lý các chủ đề của bài gửi, các chủ đề này do người quản lý diễn đàn qui định
và có thể thêm bớt.
Quản lý các thông tin ghi nhớ bài của tất cả các thông tin về người sử dụng: họ tên,
e-mail...
Và đây là mô hình Sơ đồ dòng dữ liệu
SƠ ĐỒ DÒNG DỮ LIỆU DFD
U
s
e Gởi bài lên diễn àn
Admin
gởi yêu cầu
Yêu cầu tìm kiếm các
thông tin trên diễn đàn
Yêu cầu xem các bài
trên diễn àn
Các bài viết trên diễn àn
Kết quả tìm kiếm
Các trang Web
Admin Login
Xem các bài
ã ược gởi
Phân tích bài
được gởi
Tìm kiếm
Xử lý yêu
cầu của Admin
Login
A
d
U
s
e
r
Xử lý yêu
cầu của User
ã ăng ký
User Login
User gởi yêu cầu
Đăng ký
Đăng ký
Bảng chỉ mục, bảng từ khoá
Dữ liệu các bài gởi
Danh sách User Các chủ ề của forum
User
chưa
ăng ký
User ã
ăng ký
Admi
n
Qua sơ đồ dòng dữ liệu ta thu thập được :
a. Dữ liệu về bài gửi
Mỗi bài gửi bao gồm các thuộc tính như sau:
- Mã bài gửi
- Cấp của bài gửi
- Mã bài cha (nếu là bài mới trường này có giá trị là 0, bài trả lời trường này chứa
mã bài của bài được nó trả lời)
- Thứ tự
- Thuộc chủ đề nào
- Tiêu đề của bài viết
- Họ tên người gửi
- Địa chỉ mail của người gửi
- Ngày giờ gửi
- Nội dung của bài gửi.
b. Dữ liệu về người sử dụng
Mỗi người sử dụng khi đăng ký sẽ có những thuộc tính sau:
- Mã người sử dụng
- Tên truy nhập
- Mật khẩu
- Quyền truy cập (Admin hay User)
- Địa chỉ Email
c. Dữ liệu về chủ đề của các bài gửi
Các chủ đề của các bài trên web forum có các thuộc tính sau:
- Mã chủ đề
- Tên chủ đề
Từ đó ta xây dựng Mô Hình Quan Niệm Dữ Liệu:
ChủĐề
Ghinhớbài
BàiGửi
MãChủĐề
TênChủĐề
Mã
Mãbài
MãNgườiSD
MãNgườiSD
TênTruyNhập
MậtKhẩu
QuyềnTruyCập
NgườiSD
MãTừKhoá
TừKhoá
TừKhoá
MãChỉMục
MãBàiGửi
MãTừKhoá
ChỉMục
MãBàiGửi
Cấp
MãBàiTrước
ThứTự
MãChủĐề
Tiêu Đề
NgườiGửi
Email
NgàyGiờGửi
NộiDung
1-1
0-n
1-1 0-n 1-1 0-n
1-n
1-1
1-1 0-n
Và sau đây là phần XÂY DỰNG CHƯƠNG TRÌNH
Phần này gồm hai phần chính:
Phần 1: Phân tích các chức năng chung như thuật toán quản lý các bài như thế
nào, trật tự cách hiển thị thông tin về các bài lên web.
Phần 2: Đi sâu vào cách viết các trang theo yêu cầu của người sử dụng: ví dụ các
trang đáp ứng yêu cầu của người quản lý, của người sử dụng
Đầu tiên em xin trình bày việc quản lý các bài gởi lên diễn đàn:
Tất cả các bài viết gửi lên diễn đàn đều có đặc điểm chung giống nhau như sau:
- Thuộc về một chủ đề nào đó
- Có thể là câu hỏi hoặc là câu trả lời cho một vấn đề nào đó.
Vậy để quản lý các bài viết trên diễn đàn ta phải biết:
- Bài đó thuộc chủ đề nào
- Phải phân biệt được đâu là câu hỏi đâu là câu trả lời
- Nếu là câu trả lời thì phải biết trả lời cho bài nào
Để dễ hình dung cách quản lý các bài viết trên diễn đàn ta đưa ra ví dụ sau:
Giả sử ta đã có các bài gửi có mã bài từ: 1 đến 8 trong đó có cả các câu hỏi và câu
trả lời. Khi tham gia vào diễn đàn, muốn xem các bài đã gửi chúng ta sẽ thấy xuất hiện
một trang trông giống như hình sau:
Như đã thấy trong hình, một bài viết được hiển hiện lên trang web bao gồm các
thông tin về: tiêu đề của bài viết, người gửi, ngày giờ gửi. Tiêu đề được hiển thị dưới
dạng một siêu liên kết và khi người sử dụng nhắp vào đây sẽ xem được nội dung của bài
viết.
Hình 20: Trang hiển thị các bài viết
Và các bài viết sẽ được lưu trữ trong cơ sở dữ liệu như sau:
Mãb
ài
Cấpbà
i
Bàicha Thứt
ự
Tiêuđề Chủđề Ngườig
ưi
Nộidun
g
...
1 1 0 1 ... ... ... ... ...
2 1 0 1 ... ... ... ... ...
3 2 2 1 ... ... ... ...
4 2 2 2 ... ... ... ...
5 3 3 1 ... ... ... ...
6 4 5 1 ... ... ... ...
7 1 0 1 ... ... ... ...
8 2 7 1 ... ... ... ...
Cấp của bài viết
Để có thể quản lý được bài viết gửi lên diễn đàn thì mỗi một bài được gửi sẽ được
gán cho một mã số, nhưng để có thể quản lý theo kiểu phân cấp giữa bài cha, bài con thì
phải có thêm một trường phân bài ra thành các cấp khác nhau.
Cấp của bài phải tuân theo qui tắc sau đây:
- Bài được gửi lần đầu tiên không trả lời cho bài nào cả sẽ là cấp 1
- Các bài trả lời cho bài cấp 1 sẽ có cấp là 2
- Bài trả lời cho bài cấp 2 sẽ có cấp là 3...
Lưu trữ mã bài cha
Đây là cách đi kèm với cách xác định cấp bài để xem bài nào là bài cha, bài nào là
bài con và bài con đó thuộc về bài cha nào.
Trường bài cha được tổ chức theo cách:
- Nếu là bài gửi đầu tiên, không trả lời cho một bài nào cả thì giá trị của trường này
bằng 0
- Nếu là bài trả lời thì giá trị của trường này là số mã bài của bài cha (bài mà nó trả
lời).
Ví dụ:
Nhìn vào trong bảng sau ta có thể thấy được qui luật tổ chức trường bài cha như thế
nào. Bài 1, 2, 7 là các câu hỏi, bài đầu tiên. Bài 3, 4 là bài trả lời của bài 2, 5 là bài trả lời
của bài 3...
Cách tổ chức trường thứ tự
Để giúp cho việc xác định thứ tự của các bài gửi lên diễn đàn. Được tổ chức theo
luật sau: câu hỏi (không trả lời cho bài nào cả) có thứ tự bằng 1.
Câu trả lời cho một bài theo luật sau:
- Nếu có một câu trả lời thì thứ tự của câu trả lời bằng 1
- Nếu có từ hai câu trả lời cho một bài (hai câu trả lời có cấp bài bằng nhau) thì bài
trả lời thứ nhất cũng có giá trị thứ tự bằng 1, bài trả lời thứ hai sẽ có thứ tự bằng 2...
Chúng ta sẽ thấy được tác dụng của trường này một cách rõ rệt là khi in danh sách
các bài theo qui luật cây thư mục.
Hiển thị bài theo qui luật cây thư mục
Với cách quản lý trên ta có thể viết những đoạn chương trình cho phép hiển thị các
bài viết theo luật hiển thị của một cây thư mục, tức là bài con hiển thị ngay sau dưới bài
cha. Hình vẽ sau hiển thị tất cả các bài trong bảng trên.
1 2 3 4 5 7
8
2
3
5
6
4
1
Bài cha Thứ tự
1 0 1
2 7 1
3 0 1
4 2 1
5 3 1
6 5 1
7 2 2
8 0 1
Cấp bài Mã bài
Trong hình trên, đầu tiên bài cấp 1 sẽ được hiển thị đầu tiên, sau đó là các cấp lớn
hơn nhưng phải là bài con của bài đã hiển thị. Ví dụ bài 7 có một bài con là bài 8. Tương
tự cho các bài khác. Trong các hiển thị trên ta thấy bài bài 2 có tất cả 4 bài trả lời, trong
đó có hai bài trả lời cùng cấp là 3 và 4, như vậy trường thứ tự của chúng khác nhau để có
thể in ra được đúng trật tự (in ngang hàng với bài 3).
Tiếp theo em xin trình bày việc xây dựng trang web dựa vào yêu cầu người sử
dụng
1. Xem bài: Để xem được nội dung một bài cần phải biết bài đó thuộc chủ đề nào và
có mã số bằng bao nhiêu. Do vậy, khi một người tham gia vào diễn đàn thì trang đầu
tiên mà người sử dụng nhìn thấy là một danh sách các chủ đề của diễn đàn.
Thuật toán hiển thị danh sách các bài theo chủ đề
Đầu vào: chủ đề cần hiển thị
Đầu ra:
Nếu có tồn tại chủ đề:
danh sách các bài theo chủ đề đã chọn
Nếu không tồn tại chủ đề:
hiển thị thông báo không tìm thấy
Hình 22: Chủ đề của diễn đàn
2. Xem nội dung một bài: Để xem nội dung một bài, người sử dụng nhắp vào liên kết
của bài được hiển thị, ví dụ nhắp vào liên kết “Hay dung len” sẽ đọc được nội dung như
hình:
3. Gởi bài:
- Khi người dùng muốn gửi một bài mới lên diễn đàn, người dùng nhắp vào nút gửi
bài
- Có hai hình thức gửi bài đó là gửi bài mới và gửi bài trả lời.
Hình 23: Xem nội dung bài gửi
Thuật toán như sau:
Hình 24: Trả lời một bài
Kiểm tra tính chính xác của các thông tin {email,
người gửi, tiêu đề đã nhập đủ chưa}
Kiểm tra có tồn tại mã bài của câu hỏi hay không
Nếu có { đây là bài trả lời }
Dựa vào mã bài của câu hỏi xác định:
Cấp của câu hỏi
Thứ tự của câu hỏi
Gán các biến cho bài con:
Cấp bài = cấp bài cha + 1
Bài cha = mã bài cha
ELSE {đây là bài mới}
4. Đăng ký trở thành thành viên: Khi người sử dụng tham gia vào diễn đàn, nếu đăng
ký một tên truy nhập trên hệ thống thì người sử dụng ngoài các quyền giống như một
người sử dụng bình thường (người sử dụng chưa đăng ký) thì còn có khả năng ghi nhớ
các bài viết trên diễn đàn.
Khi dăng ký yêu cầu người đăng ký phải điền đầy đủ các thông tin như hình sau:
Hình 25: Đăng ký sử dụng
Thuật toán đăng ký như sau:
Nhận thông tin về Tênđầyđủ, Têntruynhập, MậtKhẩu, E-mail
Kiểm tra phát hiện lỗi (thiếu thông tin, nhập sai yêu cầu)
IF có lỗi then báo lỗi
Quay lại trang nhập
ELSE
Truy xuất cơ sở dữ liệu chứa dữ liệu người dùng của
hệ thống
If tìm thấy một Têntruynhập giống tên vừa đăng ký
THEN
Báo lỗi
Quay lại trang nhập
Else {thông tin đăng ký hợp lệ}
Nhập tất cả các thông tin vừa đăng ký vào CSDL
END IF
5. Tìm kiếm: Ứng dụng cho phép người sử dụng tìm kiếm thông tin về bất cứ một bài
viết nào đó trên diễn đàn theo những lựa chọn: tìm kiếm theo chủ đề của bài gửi, tìm
kiếm theo tiêu đề của bài gửi, tìm kiếm theo nội dung bài gửi.
a. Tìm kiếm theo chủ đề: Để tìm kiếm theo chủ đề, người sử dụng gõ một chuỗi ký tự
bất kỳ thuộc chủ đề đó, sau đó bấm nút “Search”, nếu có chủ đề nào có chứa chuỗi ký tự
của người sử dụng vừa nhập thì sẽ có kết quả trả về như hình 27
Hình 26: Tìm kiếm theo chủ đề
Thuật toán tìm kiếm theo chủ đề:
Ta dùng câu lệnh SQL sau để thực hiện tìm kiếm
b. Tìm kiếm theo nội dung: Xây dựng bảng chỉ mục phục vụ cho việc tìm kiếm
Để xây dựng bảng chỉ mục đầu tiên ta xây dựng bảng từ khóa. Từ khóa có được là
do nội dung của bài viết được tách thành các từ.
Qui trình thực hiện xây dựng bảng từ khóa có thể tóm tắc như sau:
- Đầu tiên ta tách nội dung của bài viết thành các từ khoá
SQLQuery = "Select * from chude where chude.chude like '%"&chuoicantim&"%';
- Đưa tất cả các từ khoá vừa tách được vào trong một bảng tạm
- Dùng ngôn ngữ truy vấn dữ liệu để cập nhật các từ khoá trong bảng tạm vào trong
bảng từ khoá chính theo nguyên tắc: không thêm vào bảng chính những từ mà
bảng chính đã có.
Ví dụ
Ta có một bài gửi có các tham số sau:
Mãbàigửi = 100
Nộidung: Tự học Visual-Basic 6 trong 6 ngày
Sau khi tách ra lưu vào trong bảng tạm như sau:
Mãbàigử Từ
100 6
Đưa từ khoá trong bảng tạm vào bảng chính:
Đưa các từ khoá vào trong bảng từ khoá theo nguyên tắc, từ khoá nào đã có thì
không thêm vào, ngược lại từ chưa có thì thêm vào cuối bảng.Ta dùng ngôn ngữ truy vấn
dữ liệu để thực hiện điều này
Sau khi thực hiện câu lệnh sql trên bảng từ khoá sẽ thêm vào những từ chưa có.
Ví dụ: bảng từ khoá trước đã có từ: Visual, học, sau khi thêm các từ khoá của bài
có mã bài gửi là 100 vào thì như sau:
sqlQuery = "INSERT INTO TuKhoa ([tukhoa])SELECT DISTINCT
TuKhoaTam.tukhoa FROM TuKhoaTam LEFT JOIN TuKhoa ON
TuKhoaTam.tukhoa=TuKhoa.tukhoa WHERE (((TuKhoa.tukhoa) is
null));"
Mãtừkhoá Từkhoá
1 Visual
2 Học
3 Tự
4 Basic
5 Trong
6 6
7 Ngày
Thủ tục tách nội dung của bài gửi thành các từ khoá và đưa các từ khoá này vào
bảng tạm:
sub AddKeyWordtoTempTable(theString, IDMsg)
delim_ = ",.?/""!#$%^&*()-_=+\|;:"
On error resume next
delim = delim_ & chr(13) & chr(10)& chr(32)
sql= "Delete * from TuKhoaTam;"
Set Conn = Session("DBConn")
Conn.Execute(sql)
str = trim(theString)
length = len(str)
if length = 0 then exit sub
start = 1
for i = 1 to length
ch = mid(str, i, 1)
if InStr(delim, ch) > 0 then
KeyWord = trim(mid(str, start, i - start))
if KeyWord "" and not Isnull(KeyWord) then
Set Cn = Session("Connect")
sqlNew = "INSERT INTO TuKhoaTam ( ma, tukhoa
)SELECT "&IDMsg&", '"&KeyWord&"';"
Cn.Execute(sqlNew)
end if
start = i + 1
end if
next
if start < i then
KeyWord = Trim(Mid(str, start, i-start))
if KeyWord "" and not IsNull(KeyWord) then
Set Conn = Session("Connect")
sqlNew = "INSERT INTO TuKhoaTam ( ma, tukhoa)SELECT
"&IDMsg&", '"&KeyWord&"';"
Conn.Execute(sqlNew)
end if
end if
end sub
Tạo bảng chỉ mục:
Để có thể tìm kiếm được bài viết theo tiêu đề và theo nội dung, chương trình xây
dựng các bảng chỉ mục để tìm kiếm cụ thể như sau:
Sau khi đã có được bảng từ khoá tạm và bảng từ khoá ta tiếp tục xây dựng bảng chỉ
mục. Bảng từ khoá tạm được dùng để lấy các từ khoá của một bài mới được gửi và số
mã bài của bài gửi đó kết hợp với bảng từ khoá mỗi từ khoá sẽ ứng với một mã từ khoá.
Vậy ta đã có được 2 giá trị là mãbàigửi và mãtừkhoá để chèn vào bảng chỉ mục.
Tên trường Kiểu dữ liệu Giải thích
Mãbàigửi Number
Mãtừkhoá Number
Câu lệnh SQL dùng để xây dựng bảng chỉ mục
Vậy ta đã có được bảng chỉ mục
Tìm kiếm như thế nào?
Để tìm kiếm được một bài nào đó theo nội dung ta cần phải kết hợp ba bảng “BàiGửi”
bảng “TừKhoá” và bảng “ChỉMục” theo quan hệ như hình sau:
c. Tìm kiếm theo tiêu đề: các tiêu đề của bài gửi sau khi được gửi lên diễn đàn cũng
được tách ra thành các từ khoá và cũng được lưu trữ trong các bảng từ khoá và bảng chỉ
mục dành riêng cho từ khoá. Cách xây dựng các bảng chỉ mục, xây dựng bảng từ khóa
sqlQuery = "INSERT INTO ChiMuc ([mabai], [matukhoa] )SELECT
DISTINCT TuKhoaTam.ma, TuKhoa.matukhoa FROM TuKhoaTam LEFT
JOIN TuKhoa ON TuKhoaTam.tukhoa=TuKhoa.tukhoa;"
Hình 28: Quan hệ giữa bảng “Bài Gửi”, “Chỉ Mục”, “TừKhoá “
và cách thức xây dựng thuật toán tìm kiếm hoàn toàn tương tự như cách xây dựng thuật
toán tìm kiếm thao nội dung.
d. Sắp xếp bài:
Có nhiều lựa chọn sắp xếp cho phép lựa chọn các cách phù hợp với yêu cầu của
người sử dụng. Mỗi một cách sắp xếp khác nhau chẳng qua xuất ra màn hình danh sách
các bài theo các cách khác nhau. Do vậy, trong chương trình sẽ có nhiều thủ tục xuất các
bài gửi ra màn hình trên cùng một trang, khi người sử dụng chọn một trong các cách sắp
xếp thì trang web này sẽ được chạy lại và có cách xuất hiện bài viết theo thủ tục khác.
Khi có một tác động từ người dùng, chương trình sẽ xuất ra một biến “sapxep” đi
kèm với địa chỉ của trang hiển thị bài
select name="list"
onchange="window.open(this.options[this.selectedIndex].value,'_top');
list.options[0].selected=true" style="FONT-FAMILY: .VNTime; FONT-SIZE: 10pt">
[Chọn cách
Sxếp]
Chủ đề
Tiêu đề
Câu hỏi
Thời gian
Người gửi
Bình thường
Với cách truyền biến kèm theo địa chỉ cho phép ta chỉ cần sử dụng một trang hiển
thị mà có thể dùng nhiều cách hiển thị bài khác nhau vào từng thời điểm khác nhau.
Ví dụ: Người sử dụng chọn cách hiển thị “Câu hỏi” thì trang sẽ chạy lại trang
dsachbai.asp nhưng có kèm theo biến sapxep = cauhoi. Trang dsachbai.asp dùng
Request.QueryString(“sapxep”) sẽ lấy được biến sapxep và dùng biến này để chọn ra
những bài là câu hỏi để hiển thị.
Xử lý yêu cầu của người đã đăng ký:Đối với người đã đăng ký ngoài các quyền
như một người sử dụng chưa đăng ký như: gửi bài, xem bài, tìm kiếm ... còn có thêm
được chức năng ghi nhớ bài
Ghi nhớ bài
Khi người sử dụng có đăng ký trên hệ thống một tên truy nhập thì hệ thống cho
phép người sử dụng sau khi login vào hệ thống có thể lưu lại được những bài mà họ cảm
thấy cần phải nhớ.
Các bài được chọn sẽ được lưu vào trong bảng ghi nhớ sau:
Tên trường Kiểu dữ liệu Giải thích
MãngườiSD Number
Mãbàigửi Number
Sau khi người sử dụng login chương trình sẽ tự động thiết lập một số biến Session
để lưu trữ thông tin của người sử dụng bao gồm:
- Mã người sử dụng
- Tên người sử dụng
Nhờ các biến này mà trong suốt phiên làm việc của người sử dụng chương trình
luôn luôn sử dụng được biến “mã người sử dụng” do vậy khi người sử dụng xem một bài
nào đó muốn lưu lại bài đó thì kết hợp giữa biến Session(“manguoiSD”) và mã của bài
gửi đó và lưu hai giá trị này vào bảng trên.
Để bảo mật thông tin sau khi người sử dụng chủ động logout thì biến
Session(“manguoiSD”) sẽ được xoá.
Xử lý yêu cầu của người quản lý:Đối với người quản lý ngoài các chức năng giống
như người sử dụng chưa đăng ký, người sử dụng đã đăng ký còn có những chức năng
khác nhằm duy trì cho hệ thống hoạt động tốt hơn.
1. Xoá bài
Để một quản lý được nội dung của diễn đàn, hệ thống cho phép người quản lý diễn
đàn có thể xoá bất cứ bài nào trên diễn đàn.
Thuật toán xoá bài thực hiện như sau:
<Từ danh sách các bài
Chọn bài để xoá {lấy được mãbài}
Dò tìm tất cả các bài trả lời cho bài đó {thuật toán tìm bài
con}
Xoá bài & xoá luôn cả bài con
Xoá mãbài đó trong bảng chỉ mục
Hình 31: Trang xoá bài
2. Thêm người sử dụng
Người quản lý có quyền thêm người sử dụng cũng như thêm người quản lý vào hệ
thống. Để phân biệt được người sử dụng và người quản lý, chương trình chia người sử
dụng thành hai cấp:
Cấp 2: đây là cấp người sử dụng, với người sử dụng loại này có thể thực hiện các
yêu cầu giống như người sử dụng chưa đăng ký đồng thời có thể ghi nhớ bài mà họ ưu
thích.
Cấp 1: đây là cấp quản lý, ngoài quyền giống như một người sử dụng cấp 2 còn có
quyền cao hơn so với người sử dụng cấp 2. Người sử dụng ở cấp này có thể thực hiện
được 5 chức năng của người quản lý đó là: xoá bài, thêm người sử dụng, xoá người sử
dụng, thêm chủ đề cho diễn đàn, xoá chủ đề của diễn đàn.
Hình 32: Trang đăng ký người sử dụng
Thuật toán:
3. Xoá người sử dụng
Để quản lý được số lượng người sử dụng cũng như số lượng người quản lý của hệ
thống. Người quản lý có quyền xoá người sử dụng ra khỏi hệ thống.
Nhận dữ liệu: tênđầyđủ, têntruynhập, mậtkhẩu, email, cấp
If thiếu thông tin then
Báo lỗi
Else
If tên truy nhập trùng tên đã có trước then
Thông báo
Mở lại form đăng ký
Else
Đưa dữ liệu vào cơ sở dữ liệu
End if
End if
4. Thêm chủ đề
Để có thể đáp ứng được nhu cầu trao đổi thông tin về nhiều lĩnh vực khác nhau của
người sử dụng. Chương trình cho phép người quản lý thêm chủ đề cho diễn đàn.
Hình 34: Thêm chủ đề
Thuật toán:
Nhận dữ liệu về tên chủ đề, giải thích về chủ đề
If thiếu tên chủ đề
Báo lỗi
Else
Kiểm tra trên cơ sở dữ liệu đã có chủ đề chưa
If có
Thông báo trùng chủ đề
Mở lại form đăng ký
Else {thành công}
Đưa vào cơ sở dữ liệu
End if
End if
5. Xoá chủ đề
Nếu có thêm chủ đề thì phải có xoá chủ đề, hay những chủ đề đã cũ không còn ai
quan tâm đến thì người quản lý có thể xoá đi.
Tính bảo mật của hệ thống:
Tất cả các trang web dành cho người quản lý thì chỉ được truy xuất bởi người quản
lý. Do vậy các trang này phải có tính bảo mật. Để thực hiện điều nay ta làm như sau:
Hình 35: Xoá chủ đề
Sau khi người quản lý Login thành công thì thiết lập biến Session(“capNguoiSD”),
biến này tồn tại trong suốt phiên làm việc của người quản lý và tất cả các trang web được
xây dựng cho người quản lý khi được mở sẽ kiểm tra biến session này đầu tiên, nếu biến
này không phù hợp thì không cho mở trang này.
Kết luân và đánh giá kết quả:
Trong suốt quá trình làm đồ án, nhờ sự tích cực tìm tòi của bản thân cộng với sự
giúp đỡ tận tình của thầy hướng dẫn nên đã đem đạt được một số kết quả sau:
Đã nắm bắt được cách sử dụng các công cụ, các ngôn ngữ lập trình tương đối mới
và áp dụng thành công vào trong chương trình.
Hoàn thành nội dung của yêu cầu đồ án đề ra
Đưa ra được thuật toán quản lý phân cấp các bài viết dễ hiểu, dễ quản lý.
Xây dựng được trang tìm kiếm theo chỉ mục, đây là phương pháp tìm kiếm nhanh
và hiệu quả.
Đảm bảo được tính bảo mật cho các trang thuộc quyền của người quản lý.
Đã đưa được Tiếng Việt vào hầu hết các trang web, trong các form nhập dữ liệu,
các nút trong chương trình, tạo thuận lợi cho người sử dụng.
Tuy nhiên do trình độ và thời gian có hạn nên vẫn còn nhiều thiếu sót tồn tại như:
Trong trang hiển thị bài gửi, nhằm hạn chế số bài hiển thị quá nhiều trên một trang
em đã chia ra cho hiển thị theo tháng, lẽ ra ngoài hiển thị theo tháng còn phải cho hiển
thị thành các trang khác nhau nếu có quá nhiều bài.
Thiếu phần thống kê: theo số người truy cập, theo chủ đề, ngày tháng từ đó giúp
cho người quản lý có thể tổ chức lại diễn đàn cho phù hợp hơn.
Hướng phát triển của đồ án
Xử lý các lỗi chặt chẽ hơn trước khi đưa vào sử dụng.
Về vấn đề tìm kiếm, có thể liên kết đến các địa chỉ khác khi không tìm thấy trên
diễn đàn này. Ví dụ như có thể gửi các yêu cầu đến các Search Engine khác trên mạng
Internet (nếu web server kết nối với Internet) như: Yahoo, AntaVista, InfoSeek...
Xây dựng thêm một số chức năng cho người đăng ký như: nhận được các thông tin
mới, các câu hỏi hay bài trả lời về một đề tài nào đó.
ứng dụng này có tính tổng quát và khá linh hoạt, có thể áp dụng cho nhiều môi trường
người sử dụng khác nhau (cơ quan, trường học...). Tuỳ theo đặc thù của người sử dụng,
ta có thể điều chỉnh lại một số phần để ứng dụng hoàn thiện hơn
Kết luận
Sau thời gian tương đối ngắn vừa phải nghiên cứu những công cụ mới vừa phải lập
trình, em đã hoàn thành đồ án và đã giải quyết các yêu cầu đề ra. Nếu có thêm thời gian
khắc phục và đưa vào thử nghiệm thì ứng dụng sẽ hoàn thiện hơn.
Tuy còn nhiều thiếu sót nhưng em tin rằng với kiến thức mình có được em có thể
phát triển được những chương trình khác lớn hơn.
Các file đính kèm theo tài liệu này:
- Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - Xây dựng diễn đàn trên mạng.pdf