LỜI NÓI ĐẦU
CHƯƠNG 1
Đặt vấn đề 3
I. Giới thiệu chung 3
II.Hướng xây dựng chương trình 4
CHƯƠNG 2
Các công cụ trợ giúp 5
I. Yêu cầu về môi trường làm việc của ứng dụng 5
II. Các công cụ trợ giúp trong lập trình 6
1. Jscript (Javascript) 6
2. VBScript (visual basic script) 6
3. ASP (active server page) 6
4. Visual InterDev (visual Internet Development) 8
5 . DHTML (dynamic html) 10
CHƯƠNG 3
Phân tích chương trình 11
I. Tổng quát về chức năng của diễn đàn trên web 11
II. Các vấn đề cần giải quyết khi xây dựng chương trình 12
1. Phân cấp ngưòi sử dụng 12
Sơ đồ qui trình hoạt động của các trang trong ứng dụng web forum 14
2. Hoạt động cuẩ chương trình 15
CHƯƠNG 4
Phân tích thiết kế hệ thống 17
I. Những thông tin cần quản lý trên cơ sở dữ liệu 17
II. Phân tích và thiết kế 18
1. Sơ đồ dòng dữ liệu 18
2. Dữ liệu thu thập được 21
3. Các cấu trúc kiểu 21
Mô hình thực thể kết hợp 24
Mô hình quan niêm dữ liệu 24
Chuyễn đổi mô hình quan niệm dữ liệu thành mô hình logic dữ liệu tệp 25
CHƯƠNG 5
Xây dựng chương trình 26
I. Quản lý các bài gởi lên diễn đàn 26
II. Xữ lý yêu cầu của người chưa đăng ký 29
1. Xem bài 30
2. Xem nội dung một bài 32
3. Gởi bài 32
4. Đăng ký trỏ thành thành viên của forum 33
5. Tìm kiếm 34
III. Xử lý yêu cầu của người đăng ký 39
IV. Xử lý yêu cầu của ngưòi quản lý 40
1. Xoá bài 40
2. Thêm người sử dụng 41
3. Xoá người sử dụng 42
4. Thêm chủ đề 42
5. Xoá chủ đề 43
Tính bảo mật cuẩ hệ thống 44
CHƯƠNG 6
Kết luận, đánh giá kết quả 45
Tài liệu tham khảo 47
48 trang |
Chia sẻ: huong.duong | Lượt xem: 2595 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng diễn đàn trên web - Web Forum, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
rang 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
Áp dụng đối với: Người sử dụng bình thường, người sử dụng có đăng ký, người quản lý.
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 đó
Kết quả trả về:
Nếu tìm thấy các bài có như nội dung người dùng cần tìm kiếm thì danh sách các bài được tìm thấy sẽ được liệt kê trên trang web
Nếu không tìm thấy sẽ hiển thị thông báo không tìm thấy
Qui trình đăng ký và login của người sử dụng, ghi nhớ bài
Áp dụng đối với: Người chưa đăng ký, người đã đăng ký, người quản lý.
Để 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 ưu thích.
Qui trình hoạt động của người quản lý:
Áp dụng đối với: 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
Chương trình cho phép người quản lý chọn bất cứ một bài nào đó để xoá và có thể xoá nhiều bài hoặc xoá một bài. Việc xoá bài thực hiện theo nguyên tắc: khi một bài cha được xoá thì tất cả các bài con của nó sẽ được xoá theo.
Thêm người sử dụng , xoá người sử dụng
Nhằm quản lý được người dùng trên hệ thống, chương trình cho phép người quản lý có thể thêm người sử dụng vào hệ thống và ngược lại có thể xoá người sử dụng ra khỏi hệ thống.
- Thêm chủ đề , xoá chủ đề
Để cho diễn đàn ngày càng phong phú, người quản lý có thể thêm vào diễn đàn những chủ đề cho phù hợp với yêu cầu thực tiễn. Ngược lại, nếu có một chủ đề nào đó mà quá lâu ngày không có người tham gia thì người quản lý có thể xoá chủ đề đó đi. Việc xoá chủ đề cũng theo nguyên tắc là tất cả các bài thuộc chủ đó cũng xoá theo.
CHƯƠNG 4
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
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.
I. 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...
II. PHÂN TÍCH VÀ THIẾT KẾ
1. Sơ đồ dòng dữ liệu DFD
User
Chưa đăng ký
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
1
Phân tích bài được gởi
3
Tìm kiếm
4
Xử lý yêu cầu của Admin
7
Login
5
Admin
User
đã đăng ký
Xử lý yêu cầu của User đã đăng ký
6
User Login
User gởi yêu cầu
Đăng ký
2
Đă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ý
Admin
Hình 12: DFD cấp 0
Hình 13: DFD cấp 1 của phần xem các bài đã được gửi (1)
Xem các bài đã được gửi
1
Các bài viết trên diễn đàn
Các chủ đề của diễn đàn
Sắp xếp bài theo tiêu đề, thời gian, chủ đề...
1.1
Hình 14: DFD cấp 1 của phân đăng ký (2)
Đăng ký
2
Danh sách người sử dụng
Kiểm tra cho phép đâng ký
2.1
Hình 15: DFD cấp 1 của phân tích bài được gởi lên diễn đàn (3)
Phân tích bài được gởi
3
Các bài viết trên diễn đàn
Các chủ đề của diễn đàn
Bảng chỉ mục, bảng từ khoá
phân tích nội dung của bài gởi
3.1
Phân tích các thông tin chủ đề; ngày tháng gởi, cấp bài gởi...
3.2
Hình 16: DFD cấp 2 của quá trình tìm kiếm (4)
Tìm kiếm
4
Tìm kiếm theo nội dung
4.1
Tìm kiếm theo chủ đề
4.2
Tìm kiếm theo tiêu đề
4.3
Các bài viết trên diễn đàn
Các chủ đề của diễn đàn
Bảng từ khoá, bảng chỉ mục
Dữ liệu các bài gởi
Hình 17: DFD cấp 1 của phân Login (5)
Login
5
Danh sách người sử dụng
Kiểm tra cho phép login
5.1
Hình 18: DFD cấp 1 của quá trình xử lý các yêu cầu của User đã đăng ký (6)
Danh sách người sử dụng
Các chủ đề của diễn đàn
Các bài viết trên diễn đàn
6.1
Đánh dấu các bài ưa thích.
6
Xử lý yêu cầu của User đã đăng ký
Hình 19: DFD cấp 1 của quá trình xử lý yêu cầu của Admin (7)
Xử lý yêu cầu của Admin
7
Thêm chủ đề
7.1
Xoá các bài đã gởi
7.5
Thêm User
7.3
Các chủ đề của forum
Dữ liệu nội dung bài gởi
Danh sách User
Xoá User
7.4
Xoá chủ đề
7.2
2. Dữ liệu 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ủ đề
3. Các cấu trúc kiểu
BàiGửi
MãBàiGửi
Cấp
BàiTrước
ThứTự
MãChủĐề
Tiêu Đề
NgườiGửi
Email
NgàyGiờGửi
NộiDung
Dựa vào các dữ liệu thu lượm được ta có xây dựng thành các cấu trúc kiểu. Từ các cấu trúc kiểu này ta có thể xây dựng được các mô hình biểu diễn hệ thống thông tin của web forum
a. Dữ liệu bài gửi:
Dữ liệu Mã bài gửi là khoá của thực thể BàiGửi vì nó cho phép chỉ định một bài duy nhất
Các kiểu dữ liệu khác đều là thuộc tính của thực thể BàiGửi vì có các phụ thuộc hàm giữa khoá là MãBàiGửi và mỗi thuộc tính của nó. Vậy ta nhận được cấu trúc kiểu phiếu là BAIGUI
Vậy mỗi giá trị của khoá MãBàiGửi tương ứng với một và chỉ một giá trị thuộc tính khác của thực thể BAIGUI
NgườiSD
MãNgườiSD
TênTruyNhập
Email
MậtKhẩu
QuyềnTruyCập
b. Người sử dụng:
MãNgườiSD là khoá của thực thể NGUOISD, đây cũng là cấu trúc kiểu phiếu và khoá MãNgườiSD cho phép chỉ định một người sử dụng duy nhất. Mỗi một giá trị của khoá MãNgườiSD chỉ tương ứng với một và chỉ một giá trị thuộc tính khác của thực thể NGUOISD.
c. Chủ đề:
ChủĐề
MãChủĐề
TênChủĐề
MãChủĐề là khoá của thực thể chủ đề, thuộc tính còn lại duy nhất của phiếu CHUDE là ChủĐề (tên của chủ đề). Mỗi một ChủĐề cho phép xác định duy nhất một chủ đề.
d. Dữ liệu Từ khoá:
TừKhoá
MãTừKhoá
TừKhoá
Từ khoá có nguồn gốc từ nội dung của bài gửi. Từ nội dung của bài gửi ta tách nội dung thành các từ riêng biệt, mỗi từ là một từ khoá. MãTừKhoá là khoá của thực thể TUKHOA. Trong cấu trúc của thực thể TUKHOA MãTừKhoá tương ứng với một và chỉ một giá trị thuộc tính TừKhoá.
4. Quan hệ giữa các thực thể
a. Quan hệ giữa BàiGửi và Từ khoá
Sau khi người sử dụng gửi một bài bất kỳ lên diễn đàn, nội dung của bài ngoài việc lưu giữ vào cơ sở dữ liệu còn được tách ra thành các từ, các từ này được gọi là các từ khoá và cũng được lưu trữ. Và để thể hiện mối quan hệ giữa các từ khoá ta có một kết hợp không phân cấp giữa hai thực thể BAIGUI và TUKHOA.
Thuộc về
1-n
0-n
BàiGửi
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
TừKhoá
MãTừKhoá
TừKhoá
b. Quan hệ giữa CHUDE và BAIGUI
Đây là một cấu trúc kiểu CHA_CON. Mỗi chủ đề có thể không có một bài nào nói về chủ đề đó hoặc cũng có thể có nhiều bài nói về chủ đề này. Và mỗi bài chỉ duy nhất nói về một chủ đề.
0_n
1_1
BàiGửi
MãBàiGửi
Cấp
MãBàiTrước
ThứTự
Tiêu Đề
NgườiGửi
Email
NgàyGiờGửi
NộiDung
ChủĐề
MãChủĐề
TênChủĐề
c. Quan hệ giữa người sử dụng và bài gửi:
Đối với người sử dụng có đăng ký một tên truy nhập và một mật khẩu trên hệ thống, thì chương trình cung cấp khả năng lưu trữ bất cứ một bài nào đó mà người dùng ưa thích, hoặc lưu nhớ lại để lần sau đọc các bài này được dễ dàng và nhanh chóng. Để thể hiện mối quan hệ trên ta có quan hệ sau:
GhiNhớBài
1-1
0-n
BàiGửi
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
NgườiSD
MãNgườiSD
TênTruyNhập
MậtKhẩu
QuyềnTruyCập
MãChủĐề
TênChủĐề
ChủĐề
MãBàiGửi
Cấp
MãBàiTrước
ThứTự
Tiêu Đề
NgườiGửi
Email
NgàyGiờGửi
NộiDung
BàiGửi
MãTừKhoá
TừKhoá
TừKhoá
MãNgườiSD
Tênđầyđủ
TênTruyNhập
MậtKhẩu
NgườiSD
Ghi nhớ bài
Thuộc về
1-1
0-n
0-n
1-1
1-n
1-n
Mô hình thực thể kết hợp:
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
Chuyển đổi mô hình quan niệm dữ liệu thành mô hình logic dữ liệu tệp:
Bảng BàiGửi: Bảng này được dùng để lưu trữ các bài được gửi lên diễn đàn
B¶ng 5
B¶ng 2
B¶ng 1
Dữ liệu
Mô tả kiểu dữ liệu
Mô tả
MãBàiGửi
N
Mã (Số thứ tự) của bài được gửi.
Cấp
N
Dùng chứa cấp của bàI gửi.
MãBàiTrước
N
Chứa MãBàiGửi của bàI mà nó trả lời.
ThứTự
N
MãChủĐề
N
Chứa mã chủ đề của bài gửi đó
TiêuĐề
M
Chứa tiêu đề của bài gửi
NgườiGửi
C50
Tên của người gửi
Email
C100
Địa chỉ Email của người gửi
NgàyGiờGửi
D
Ngày giờ lúc gửi
NộiDung
M
Nội dung của bài gửi
Bảng ChỉMục:
Dữ liệu
Mô tả kiểu dữ liệu
Mô tả
MãChỉMục
N
MãBàiGửi
N
MãTừKhoá
N
B¶ng 3
Bảng TừKhoá:
Dữ liệu
Mô tả kiểu dữ liệu
Mô tả
MãTừKhoá
N
TừKhoá
C30
B¶ng 4
Bảng NgườiSD:
Dữ liệu
Mô tả kiểu dữ liệu
Mô tả
MãNgườiSD
N
TênTruyNhập
C30
MậtKhẩu
C30
MãQuyềnTruyNhập
N
Bảng GhiNhớBài:
Dữ liệu
Mô tả kiểu dữ liệu
Mô tả
Mã
N
MãNgườiSD
N
MãBàiGửi
C30
CHƯƠNG 5
XÂY DỰNG CHƯƠNG TRÌNH
Chương này trình bày 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
I. 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
Để giải quyết các vấn đề trên ta đưa ra các cách giải quyết sau:
Có nhiều cách quản lý bài khác nhau, trong phần này em xin được trình bày hai cách tổ chức quản lý bài, phân tích ưu nhược điểm của hai phương pháp, cuối cùng rút ra phương pháp nổi trội hơn.
Cách 1:
Cách dữ liệu của bài gửi được lưu trữ trong bảng có cấu trúc như sau:
Tên trường
Kiểu
Diễn giải
Mãbài
Number
Số bài viết
Thứtự
Char(40)
Thứ tự bài viết trên diễn đàn
Chủđề
Char(255)
Chủ đề bài viết
Trong đó:
Mãbài: tự động tăng lên 1 khi thêm 1 bài viết mới
Thứtự: đây là chuỗi ký tự gồm một hoặc nhiều cụm 4 chữ số, và số cụm từ cho biết cấp của bài đó:
Số cụm = 1 (cấp 1): đây là một bài viết mới.
Số cụm = n, n>1 (cấp n): đây là bài trả lời cho bài cấp n-1
Cách xây dựng trường Thứtự
Nếu là bài viết mới: Thứtự = Mãbài
Nếu là bài trả lời:Thứtự = Thứtự của bài trả lời + Mãbài
Nếu mã bài không đủ bốn chữ số thì thêm các chữ số 0 vào đầu cho đủ bốn chữ số.
Ví dụ:
Ta có 4 bài viết được gửi lên diễn đàn và được lưu trữ trong cơ sở dữ liệu như sau:
Mãbài
Thứtự
Tiêu đề
1
0001
Tiêu đề 1
2
00020001
Trảlời: Tiêu đề 1
3
000300020001
Trảlời:Trảlời: Tiêu đề 1
4
00040001
Trảlời: Tiêu đề 1
Với cách lưu trữ như trên ta đễ dàng nhận ra được qui luật tổ chức các bài trên được gửi lên diễn đàn. Cụ thể: bài số 1 có trường Thứtự là một cụm bốn chữ số vậy đây là bài cấp 1, bài viết số 2 có Thứtự là một chuỗi có 2 cụm bốn chữ số, vậy đây là bài cấp 2 đồng thời chuỗi ký tự cuối (trừ 4 ký tự đầu) là chuỗi Thứtự của bài 1 nên đây là bài trả lời cho bài 1....
Tuy nhiên với cách quản lý như trên, về mặt hình thức nhìn vào rất khó hiểu, về mặt nội dung cách tổ chức trường nội dung như vậy là tốn kém (như khi có một bài cấp = 10 thì số ký tự của trường này sẽ lên đến 4 x 10 = 40 ký tự). Hay để tìm một bài xem nó là bài con của bài nào thì phải phân tích một chuỗi ký tự khá dài sau đó lại phải đi so sánh với trường thứ tự của tất cả các bài mới tìm được...
Cách 2
Để 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ừ: 150 đến 157 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:
Hình 20: Trang hiển thị các bài viết
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.
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ộidung
...
150
1
0
1
...
...
...
...
...
151
1
0
1
...
...
...
...
...
152
2
151
1
...
...
...
...
153
2
151
2
...
...
...
...
154
3
152
1
...
...
...
...
155
4
154
1
...
...
...
...
156
1
0
1
...
...
...
...
157
2
156
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...
Ví dụ: như trong hình trên các bài có dấu cộng phía trước có cấp là 1, các bài còn lại cấp của bài được xác định bằng các dấu mũi tên ở phía trước (có 2 mũi tên sẽ là bài cấp 2...)
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 150, 151, 156 là các câu hỏi, bài đầu tiên. Bài 152, 153 là bài trả lời của bài 151, 154 là bài trả lời của bài 152...
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
156
157
151
152
154
155
153
150
Bài cha
Thứ tự
1
0
1
2
156
1
3
0
1
4
151
1
5
152
1
6
154
1
7
151
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 156 có một bài con là bài 157. 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 151 có tất cả 4 bài trả lời, trong đó có hai bài trả lời cùng cấp là 152 và 153, 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 152).
Vậy ta có thể thấy cách quản lý bài thứ hai hiệu quả và rõ ràng hơn nhiều so với cách quản lý thứ nhất. Do vậy trong chương trình cách thứ hai sẽ được chọn để quản lý các bài viết trên diễn đàn.
Trên là phần tóm tắt cách quản lý và cách hiển thị các bài như thế nào trên trang web, sau đây chúng ta đi sâu vào cách xây dựng từng trang web.
Xây dựng các trang web dựa vào yêu cầu của người sử dụng
II. XỬ LÝ YÊU CẦU CỦA NGƯỜI CHƯA ĐĂNG KÝ
Xin được nhắc lại người sử dụng chưa đăng ký có thể có các yêu cầu sau:
- Xem bài
- Gửi một bài mới
- Trả lời một bài đã có
- Sắp xếp các bài đã hiển thị trên trang web theo nhiều cách: sắp xếp theo thời gian, sắp xếp theo thứ tự abc của tiêu đề, sắp xếp theo thứ tự abc của người gửi.
Hiển thị bài theo một tháng nào đó tuỳ ý.
- Tìm kiếm
Trang web phải cho phép người sử dụng thực hiện được tất cả các yêu cầu trên. Đầu tiên ta dùng hình vẽ của trang web để minh hoạ, sau đó sẽ đi sâu vào thuật toán được xây dựng như thế nào để thực hiện các yêu cầu đó.
Hình 21: Các chức năng chính trên trang web
Tìm kiếm
Sắp xếp bài theo tháng
Danh sách các bài
Chọn cách sắp xếp
Gởi bài mới
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. Từ đây người sử dụng bắt đầu chọn chủ đề mà mình quan tâm. Sau khi chọn chủ đề xong nếu có bài thuộc chủ đề đó thì danh sách bài sẽ được hiển thị, trong hình trên là danh sách bài thuộc chủ đề “Lập trình”. Và số bài hiển thị chỉ là các các bài gửi trong tháng, ví dụ: hiện tại đang là tháng 5 thì các bài trong tháng 5 được hiển thị lê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
Để có được đầu vào ta dùng các truyền biến theo liên kết, ví dụ: nếu người sử dụng cần hiển thị bài theo chủ đề là “Lập trình” tương ứng với chủ đề lập trình sẽ có một mã cho chủ đề đó (các giá trị này nằm trong bảng “Chủ đề”), chủ đề lập trình có mã là “10” vậy ta truyền biến bằng như sau: sdachbai.asp?chude=10 trang dsachbai.asp sẽ nhận được biến chủ đề này bằng cách dùng đối tượng Request.QueryString(“chude”), sau đó dùng biến này để hiển thị các bài chủ đề = 10
Thuật toán hiển thị bài:
Chọn những bài có cấp = 1, theo thứ tự thời gian, theo chủ đề có trước
Lưu tất cả các bài cấp 1 vào trong một mảng có tên mangCap1
Chọn những bài có cấp > 2
Lưu tất cả các bài cấp 2 vào mảng có tên mangCap2
Hiển thị bài:
IF số bài cấp 1 > 0 thì
For i = 0 to số phần tử của mangCap1
Hiển thị bài cấp 1
Kiểm tra xem bài này có bài trả lời hay không
Nếu có: hiển thị bài con
ELSE
Thông báo [Không có bài
Thuật toán tìm bài con của một bài cấp 1:
- Đầu vào: mã bài của bài cấp 1 cần tìm bài con
- Đầu ra: tất cả các bài con (bao gồm tất cả bài con của bài con)
- Để có thể hiển thị được tất cả các bài con, ta dùng một thủ tục đệ qui.
Thủ tục tìmbaicon (mabaicha)
For i = 0 to số phần tử của mảng mangCap2
If bài con có BàiCha = mãbàicha thì
In bài con
Gọi đệ qui timbaicon(mabaicon) {mã bài con vừa tìm thấ
Các file đính kèm theo tài liệu này:
- LV0921.doc