BÁO CÁO TỐT NGHIỆP
đồ án “ Xây dựng diễn đàn
trên mạng”
Thuật toán như sau:
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}
Cấp bài = 1
Bài cha = 1
Thứ tự = 1
Đưa tất cả các biến vừa có vào cơ sở dữ liệu
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đầủ, 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ủ đề
Hình 27: Keát quaû tìm kieám theo chuû ñeà
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á
- Đưa tất cả các từ khoá vừa tách được vào trong một bảng tạm
SQLQuery = "Select * from chude where chude.chude like '%"&chuoicantim&"%';
- 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
Tự
100
học
100
Visual
100
Basic
100
6
100
Trong
100
6
100
Ngày
Đư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)
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:
sqlQuery = "INSERT INTO ChiMuc ([mabai], [matukhoa] )SELECT
DISTINCT TuKhoaTam.ma, TuKhoa.matukhoa FROM TuKhoaTam LEFT
JOIN TuKhoa ON TuKhoaTam.tukhoa=TuKhoa.tukhoa;"
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 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
Hình 28: Quan hệ giữa bảng “Bài Gửi”, “Chỉ Mục”, “TừKhoá “
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">
<option selected value="dsachbai.asp?sapxep=binhthuong">[Chọn cách
Sxếp]</option>
<option value="chude.asp">Chủ đề
<option value="dsachbai.asp?sapxep=tieude">Tiêu đề
<option value="dsachbai.asp?sapxep=cauhoi_only">Câu hỏi
<option value="dsachbai.asp?sapxep=ngaygio">Thời gian
<option value="dsachbai.asp?sapxep=nguoigoi">Người gửi
<option value="dsachbai.asp?sapxep=binhthuong">Bình thường
</select>
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 xoaù baø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.
Thuật toán:
Nhận dữ liệu: tênđầủ, 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
Hình 32: Trang đăng ký người sử dụng
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.
Hình 33: Xoá người sử dụng ra khỏi hệ thống
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}
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:
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ư: