- XML có thể tạo ra các tập ngôn ngữ con khác(ngôn ngữ định dạng dựa trên XML hay XML-based Language).
- Ứng dụng XML mang ý nghĩa cho biết một tập hợp các thẻ hay tập con XML hoạt động trong riêng một lĩnh vực nào đó.Ví dụ MathML là một ứng dụng của XML trong lĩnh vực toán học.
- CML –Ngôn ngữđịnh dang hóa học. - MathMl – Ngôn ngữđịnh dạng toán học. - CDF – Khuôn dạng định nghĩa kênh.
- SMIL – Ngôn ngữ tích hợp multimedia đồng bộ. - HTML+TIME.
- XHTML.
Chương trình XML đơn giản: Ví dụ 1: Hình 2.5 Đoạn mã của hình 2.5. <?xml version="1.0" standalone="yes"?> <DOCUMENT> <CUSTOMER> <NAME> <LAST_NAME>Smit </LAST_NAME> <FIRST_NAME>Sam </FIRST_NAME> </NAME>
<DATE> Ngay 18 thang 3 nam 2008</DATE> <ORDERS>
<ITEM>
<PRODUCT>Tomatoes</PRODUCT> <NUMBER>8</NUMBER>
<PRICE>$1 .25</PRICE>
</ITEM> </ORDERS> </CUSTOMER> </DOCUMENT> Ví dụ 2: Hình 2.6 Đoạn mã của hình 2.6: <HTML> <HEAD> <TITLE>
Data Binding With the XML DSO </TITLE>
</HEAD> <BODY>
<CENTER> <H1>
Data Binding With the XML DSO
</H1>
<XML ID="dsoCustomer"
SRC="customer.xml" HEIGHT="0" WIDTH="0"> </XML>
Name:<INPUT TYPE="TEXT" DATASRC="#dsoCustomer" DATAFLD="NAME" SIZE="10">
<P>
ID:<INPUT TYPE="TEXT" DATASRC="#dsoCustomer" DATAFLD="CUSTOMER_ID" SIZE="5">
<P>
Purchase date:<SPAN DATASRC="#dsoCustomer" DATAFLD="PURCHASE_DATE"></SPAN> <P> Department:<SPAN DATASRC="#dsoCustomer" DATAFLD="DEPARTMENT" SIZE="1"> <OPTION VALUE="Product">Product <OPTION VALUE="Meat"Meat
<OPTION VALUE="Frozen" Frozen </SELECT>
<P>
Product:<SPAN DATASRC="#dsoCustomer" DATAFLD="PRODUCT_NAME"></SPAN>
<P>
<BUTTON ONCLICK=”dsCustomer.recordset.movrFirst()”>< <
</BUTTON> <BUTTON ONCLICK=”if(!dsoCustomer.recordset.BOF) dsoCustomer. recordset.movePrevious()”>< </BUTTON> <BUTTON ONCLICK=”if(!dsoCustomer.recordset.EOF) dsoCustomer. recordset.moveNext()”>> </BUTTON>
<BUTTON ONCLICK=”dsoCustomer.recordset.moveLast() ”>> > </BUTTON>
</CENTER> </BODY> </HTML>
CHƯƠNG 3 GIẢI QUYẾT BÀI TOÁN 3.1 PHÂN TÍCH THIẾT KẾ HỆ THỐNG THÔNG TIN
3.1.1 Sơ Đồ Use Case
3.1.1.1 Use Case Nhà Cung Cấp Các chức năng của nhà cung cấp:
- Đăng ký. - Đăng nhập.
- Quản lý thông tin. - Xem phản hồi.
Hình 3.1 Sơđồ Use Case Nhà Cung Cấp
3.1.1.2 Sơ Đồ Use Case Thực Khách Và Hệ Thống Các chức năng của thực khách: Đăng nhập. Viết phản hồi. Tìm kiếm. Hình 3.2 Sơđồ Use Case Thực Khách
3.1.1.3 Sơ Đồ Use Case Ban Quản Trị
Các chức năng chính của ban quản trị và hệ thống là: Đăng nhập. Quản lý nhà cung cấp. Quản lý món ăn. Quản lý tin tức. Quản lý phản hồi.
Quản lý danh mục: tin tức, loại nhà cung cấp, khu vực nhà cung cấp.
Hình 3.3 Sơ đồ Use Case Ban Quản Trị
3.1.1.4 Sơ đồ Use Case Khách Hàng Vãng lai Các chức năng của khách hàng vãng lai Các chức năng của khách hàng vãng lai Đăng ký thành viên.
Xem thông tin ẩm thực. Tìm kiếm.
Hình 3.4 Sơđồ Use Case Khách Hàng Vãng lai
3.1.1.5 Sơ đồ Use Case Của Toàn Hệ Thống
Hình 3.5 Use Case Của Toàn Hệ Thống
3.1.2 Đặc tả Use case
Đăng nhập:
Use case này mô tả cách thức người dùng đăng nhập vào hệ thống. Các luông sự kiện
Use case này bắt đầu khi hệ thống yêu cầu người dùng đăng nhập. Luồng sự kiện chính:
- Hệ thống hiển thị một màn hình yêu cầu người sử dụng nhập tên và mật khẩu. - Người dùng nhập tên và mật khẩu.
- Sau khi nhập xong nhấn đồng ý.
- Hệ thống sẽ chuyển thông tin lên server để xử lý.
- Hệ thống sẽ kiểm tra tên và mật khẩu có trong cơ sở dữ liệu hay không. - Hệ thống sẽ dựa vào quyền của người đăng nhập để cấp cho những chức năng
tương ứng.
- Sau đó hệ thống sẽ thông báo cho người dùng biết là đã đăng nhập thành công. Luồng sự kiện phụ
- Nếu trong luông sự kiện chính, người dùng nhập sai tên hoặc mật khẩu thì hệ thống sẽ thông báo là nhập tên và mật khẩu sai. Hệ thống sẽ hiển thị lại màn hình đăng nhập yêu cầu người dùng đăng nhập lại.
- Người dùng có thểđăng nhập lại hoặc là hủy bỏ việc đăng nhập. - Điều kiện tiên quyết.
- Hệ thống phải kết nối thành công với server. Kết quả
Nếu đăng nhập thành công sẽ xuất hiện màn hình quản lý chính và tùy theo từng quyền của người dùng sẽ xuất hiện những chức năng tương ứng.
3.2 SƠĐỒ TRÌNH TỰ CÁC CHỨC NĂNG CHÍNH
3.2.1 Sequence diagram cho Use Case Login
Hình 3.6 Sequence diagram cho Use Case Login
3.2.2 Sequence diagram cho Use Case Đăng ký thành viên
Hình 3.7 Sequence diagram cho Use Case Đăng ký thành viên
Chức năng: Cho phép nhà cung cấp có thểđăng ký làm thành viên của website.
Đối tượng: Nhà cung cấp (khách sạn, nhà hàng, quán ăn).
Thông tin đầu vào: Ảnh minh hoạ, tên đăng nhập, mật khẩu, xác nhận mật khẩu, tên nhà hàng, khu vực, loại hình, địa chỉ nhà hàng, sốđiện thoại, email (nếu có), câu hỏi bí mật, câu trả lời, giới thiệu về nhà hàng, xác nhận dãy số an toàn.
Cách thức xử lý: Kiểm tra form: Tên đăng nhập phải từ 6 tới 24 ký tự và chưa có trong cơ sở dữ liệu, Mật khẩu phải từ 6 tới 24 ký tự, Mật khẩu xác nhận phải giống với mật khẩu chính, Địa chỉ không quá 100 ký tự, Số điện thoại phải là số và có từ 8 đến 12 số, Địa chỉ email phải đúng mẫu, Câu hỏi bí mật phải được chọn, câu trả lời phải được điền. Kiểm tra ràng buộc dữ liệu trong CSDL.
Dữ liệu cần lưu trữ: Tất cả các giữ liệu nhập vào được lưu vào trong database và sẽ có thêm trạng thái của dữ liệu (được ban quản trị xác nhận hay chưa?).
Thông tin đầu ra: Hiện thông báo lỗi nếu các form nhập không đúng mẫu hoặc không hợp lệ. Hiện form thông báo đăng ký thành công và chờ Ban quản trị xác nhận nếu các thông tin đầy đủ và hợp lệ.
3.2.3 Sequence diagram cho Use Case Cập nhật Thông Tin Nhà Cung Cấp
Hình 3.8 sequence diagram cho Use Case Cập nhật Thông Tin Nhà Cung Cấp
Chức năng: Cho phép nhà cung cấp có thể thêm, sửa chữa lại các thông tin của mình.
Đối tượng: Nhà cung cấp (khách sạn, nhà hàng, quán ăn ).
Thông tin đầu vào: Ảnh minh hoạ, tên đăng nhập, mật khẩu, xác nhận mật khẩu, tên nhà hàng, khu vực, loại hình, địa chỉ nhà hàng, sốđiện thoại, email (nếu có), câu hỏi bí mật, câu trả lời, giới thiệu về nhà hàng.
Cách thức xử lý: Kiểm tra ràng buộc dữ liệu mới nhập vào, sau đó cập nhật vào CSDL thông tin mới.
Dữ liệu cần lưu trữ: Các thông tin mới của nhà cung cấp.
Thông tin đầu ra: Hiện thông báo lỗi nếu các form nhập không đúng mẫu hoặc không hợp lệ. Hiện form thông báo cập nhật thành công nếu các thông tin điền vào hợp lệ.
3.2.4 Sequence diagram Use Case Đăng Bài Giới Thiệu Món Ăn
Hình 3.9 Sequence diagram Use Case Đăng Bài Giới Thiệu Món Ăn
: Cho phép nhà cung cấp đăng bài giới thiệu về món ăn.
Chức năng
Đối tượng: Nhà cung cấp (Khách sạn, nhà hàng, quán ăn...).
Thông tin đầu vào: Ảnh minh hoạ, tên món ăn, thể loại món ăn, nội dung giới thiệu món ăn.
Cách Cách thức xử lý: Kiểm tra ràng buộc dữ liệu mới nhập vào, sau đó cập nhật vào CSDL dữ liệu mới.
Thông tin đầu ra: Trưng bày món ăn mới lên trang chủ của thực khách.
3.2.5 Sequence diagram cho Use Case Tìm kiếm Món Ăn, Nhà Hàng, Tin tức
Hình 3.10 Sequence diagram cho Use Case Tìm kiếm Món Ăn, Nhà Hàng, Tin tức.
Chức năng: Cho phép thực khách tìm kiếm các món ăn theo danh mục, nhà hàng, thông tin.
Đối tượng: Thực khách.
Thông tin đầu vào: Nhập vào từ khóa cần tìm và loại tìm kiếm.
Cách thức xử lý: Kiểm tra từ khoá trong CSDL xem có không.
Thông tin đầu ra: Hiện ra các thông tin có chứa từ khóa được tìm thấy trong CSDL.
3.3 SƠĐỒ TIẾN TRÌNH 3.3.1 Sơ Đồ Tiến Trình Của Nhà Cung Cấp 3.3.1 Sơ Đồ Tiến Trình Của Nhà Cung Cấp Hình 3.11 Sơ Đồ Tiến Trình Của Nhà Cung Cấp 3.3.2 SơĐồ Tiến Trình Của Món Ăn Hình 3.12 SơĐồ Tiến Trình Của Món Ăn
3.3.3 Sơ Đồ Tiến Trình Của Thông Tin Phản Hồi
Hình 3.13 SơĐồ Tiến Trình Của Thông Tin Phản Hồi
3.4 MÔ HÌNH THỰC THỂ KẾT HỢP Nhà Cung Cấp Phân Loại Nhà Cung Cấp Khu Vực Nhà Cung Cấp Thuôc 1 n 1 n 1 Ban Quản Trị Có Có Có n Món Ăn Thuộc n 1 Có Thuộc Tin Tức Phân Loại Tin Tức 1 n Phản Hồi Từ Thực Khách 1 1 n n Có Phân Loại Món Ăn Hình 3.14 Sơđồ quan hệ thực thể
3.5 MÔ HÌNH DỮ LIỆU QUAN HỆ
Cơ sở dữ liệu có cấu trúc như sau:
3.5.1 Bảng PhanLoaiNCC
PhanLoaiNCC(MaLoaiNCC, TenLoaiNCC)
Đây là bảng lưu trữ dữ liệu về phân loại nhà cung cấp, mỗi một nhà cung cấp thuộc một loại nhà cung cấp.
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaLoaiNCC Tinyint Mã loại nhà cung cấp 2 TenLoaiNCC Nvarchar Tên loại nhà cung cấp
Bảng 1: PhanLoaiNCC
3.5.2 Bảng KhuVucNCC
KhuVucNCC(MaKhuVuc, TenKhuVuc)
Đây là bảng lưu trữ dữ liệu về khu vực nhà cung cấp.
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaKhuVuc Tinyint Mã Khu Vực
2 TenKhuVuc Nvarchar Tên Khu Vực Bảng 2: KhuVucNCC
3.5.3 Bảng NhaCungCap
NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,
MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai)
Đây là bảng lưu trữ dữ liệu về thông tin nhà cung cấp.
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaNhaCungCap Int Mã nhà cung cấp
2 MaKhuVuc Tinyint Mã khu vực
3 MaLoaiNCC Tinyint Mã loại nhà cung cấp
4 TenNCC Nvarchar Tên nhà cung cấp
5 TenDangNhap Varchar Tên đăng nhập
6 MatKhau Varchar Mật khẩu
7 DiaChiNCC Nvarchar Địa chỉ nhà cung cấp 8 SoDienThoai Varchar Sốđiện thoại
9 DiaChiEmail Varchar Địa chỉ Email 10 GioiThieu Nvarchar Giới thiệu
11 HinhAnh Varchar Hình ảnh
12 CauHoiBiMat Nvarchar Câu hỏi bí mật 13 CauTraLoi Nvarchar Câu trả lời 14 NgayDangKy Datetime Ngày đăng ký
15 TrangThai Tinyint Trạng thái
Bảng 3: Nhà cung cấp
3.5.4 Bảng PhanLoaiMonAn
PhanLoaiMonAn(MaLoaiMonAn, TenLoaiMonAn )
Đây là bảng lưu trữ dữ liệu phân loại món ăn. Nó cung cấp thể loại cho các món ăn.
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaLoaiMonAn Tinyint Mã loại món ăn 2 TenLoaiMonAn Nvarchar Tên loại món ăn
Bảng 4: Phân loại món ăn
3.5.5 Bảng MonAn
MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh,
GioiThieu, NgayDangBai, TrangThai)
Đây là bảng lưu trữ dữ liệu về món ăn, cho biết thông tin đầy đủ và chi tiết đến các món ăn.
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaMonAn Int Mã món ăn
2 MaNhaCungCap Int Mã nhà cung cấp
3 MaLoaiMonAn Tinyint Mã loại món ăn
4 TenMonAn Nvarchar Tên món ăn
5 HinhAnh Varchar Hình ảnh
6 GioiThieu Nvarchar Giới thiệu 7 NgayDangBai Datetime Ngày đăng bài
8 TrangThai Bit Trạng thái
Bảng 5 : Món ăn
3.5.6 Bảng PhanLoaiTinTuc
PhanLoaiTinTuc(MaLoaiTT, TenLoaiTT )
Đây là bảng lưu trữ dữ liệu loại tin tức.
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaLoaiTT Tinyint Mã loại tin tức 2 TenLoaiTT Nvarchar Tên loại tin tức
Bảng 6: Phân loại tin tức
3.5.7 Bảng TinTuc
TinTuc(MaTinTuc, MaLoaiTT, TieuDe, NoiDung, NgayDangTin )
Đây là bảng lưu trữ dữ liệu về tin tức.
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaTinTuc Int Mã tin tức
2 MaLoaiTT Tinyint Mã loại tin tức
3 TieuDe Nvarchar Tiêu đề
4 NoiDung Nvarchar Nội dung 5 NgayDangTin Datetime Ngày đăng tin
Bảng 7: Tin tức
3.5.8 Bảng BanQuanTri
BanQuanTri(MaQuanTri, TenDangNhap, MatKhau, HoTen, DiaChi, SoDienThoai,
DiaChiEmail, LoaiQuanTri )
Đây là bảng lưu trữ dữ liệu về ban quản trị.
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaQuanTri Int Mã quản trị
2 TenDangNhap Varchar Tên đăng nhập
3 MatKhau Varchar Mật khẩu
4 HoTen Nvarchar Họ tên
5 DiaChi Nvarchar Địa chỉ
6 SoDiaChi Varchar Sốđiện thoại 7 DiaChiEmail Varchar Địa chỉ Email 8 LoaiQuanTri Bit Loại quản trị
Bảng 8: Ban quản trị
3.5.9 Bảng PhanHoiTuThucKhach
PhanHoiTuThucKhach(MaPhanHoi, MaNhaCungCap, MaQuanTri, TenThucKhach,
DiaChi, SoDienThoai, DiaChiEmail, TieuDe, NoiDung, TraLoi, NgayGui, TrangThai) Đây là bảng lưu trư dữ liệu về phản hồi từ thực khách.
STT Thuộc tính Kiểu dữ liệu Diễn giải
1 MaPhanHoi Int Mã phản hồi
2 MaNhaCungCap Int Mã nhà cung cấp
3 MaQuanTri Int Mã quản trị 4 TenThucKhach Nvarchar Tên thực khách
5 DiaChi Nvarchar Địa chỉ
6 SoDienThoai Varchar Sốđiện thoại 7 DiaChiEmail Varchar Địa chỉ Email
8 TieuDe Nvarchar Tiêu đề
9 NoiDung Nvarchar Nội dung
10 TraLoi Nvarchar Trả lời
11 NgayGui Datetime Ngày gửi
12 TrangThai Bit Trạng thái
Bảng 9: Phản hồi từ thực khách
3.6 QUAN HỆ GIỮA CÁC BẢNG
3.7 Ràng buộc toàn vẹn
3.7.1 Ràng buộc toàn vẹn trên một bảng
Ràng buộc 1:
BanQuanTri(MaQuanTri, TenDangNhap, MatKhau, HoTen, DiaChi, SoDienThoai,
DiaChiEmail, LoaiQuanTri)
Nội dung: Mỗi một ban quản trị phải có một mã số phân biệt với các ban quản trị
Bối cảnh: BanQuanTri
Điều kiện: ∀q1, q2 ∈ BanQuanTri
q1.MaQuanTri<> q2.MaQuanTri
Tầm ảnh hưởng:
Thêm Xoá Sửa
BanQuanTri + - +[MaQuanTri]
Ràng buộc 2:
NhaCungCap(MaNhaCungCap, MaKhuVuc, MaLoaiNCC, TenNCC, TenDangNhap,
MatKhau, DiaChiNCC, SoDienThoai, DiaChiEmail, GioiThieu, HinhAnh, CauHoiBiMat, CauTraLoi, NgayDangKy, TrangThai)
Nội dung: Mỗi nhà cung cấp phải có một mã nhà cung cấp phân biệt với các nhà cung cấp.
Bối cảnh: NhaCungCap
Điều kiện: ∀q1, q2 ∈ NhaCungCap
q1.MaNhaCungCap<>q2.MaNhaCungCap
Tầm ảnh hưởng:
Thêm Xoá Sửa
NhaCungCap + - +[NhaCungCap]
Ràng buộc 3:
MonAn(MaMonAn, MaNhaCungCap, MaLoaiMonAn, TenMonAn, HinhAnh,
GioiThieu, NgayDangBai, TrangThai)
Nội dung: Mỗi một món ăn phải có một mã số phân biệt với các món ăn khác SVTH: Đỗ Thị Hiền, Nguyễn Thị Thuý Loan. 55
Bối cảnh: MonAn
Điều kiện: ∀q1, q2 ∈ MonAn q1.MonAn<> q2.MonAn
Tầm ảnh hưởng:
Thêm Xoá Sửa
MonAn + - +[MonAn]
Ràng buộc 4:
TinTuc(MaTinTuc, MaLoaiTT, TieuDe, NoiDung, NgayDangTin) Nội dung: Mỗi một tin tức có một mã số phân biệt với các tin tức khác
Bối cảnh: TinTuc
Điều kiện: ∀q1, q2 ∈ TinTuc q1.TinTuc<> q2.TinTuc
Tầm ảnh hưởng:
Thêm Xoá Sửa
TinTuc + - +[TinTuc]
Ràng buộc 5:
PhanHoiTuThucKhach(MaPhanHoi, MaNhaCungCap, MaQuanTri, TenThucKhach,
DiaChi, SoDienThoai, DiaChiEmail, TieuDe, NoiDung, TraLoi, NgayGui,TrangThai)
Nội dung: Mỗi một phản hồi từ thực khách có một mã phản hồi phân biệt với các phản hồi khác
Bối cảnh: PhanHoiTuThucKhach
Điều kiện: ∀q1, q2 ∈ PhanHoiTuThucKhach
q1.PhanHoiTuThucKhach<> q2.PhanHoiTuThucKhach Tầm ảnh hưởng: Thêm Xoá Sửa PhanHoiTuThucKhach + - +[PhanHoiTuThucKhach] Ràng buộc 6: KhuVucNCC(MaKhuVuc, TenKhuVuc)
Nội dung: Mỗi một khu vực nhà cung cấp phải có một mã số khu vực phân biệt với các khu vực
Bối cảnh: KhuVucNCC
Điều kiện: ∀q1, q2 ∈ KhuVucNCC
q1.KhuVucNCC<> q2.KhuVucNCC Tầm ảnh hưởng: Thêm Xoá Sửa KhuVucNCC + - +[KhuVucNCC] 3.7.2 Ràng buộc toàn vẹn về miền giá trị Ràng buộc 7:
Mô tả: Ngày viết phải nhỏ hơn hoặc bằng ngày trên mạng.
Thuật toán:
Ngày viết bài <= Ngày đăng bài
Ràng buộc 8: Mô tả:
Số ký tự của tiêu đề phải nhỏ hơn hoặc bằng 200
Câu trả lời không được để trống và phải dài không quá 50 ký tự. Số ký tự của trích dẫn giới thiệu dài không quá 4000 ký tự. Chiều dài , chiều cao của ảnh đại diện >0.
Thuật toán: Length(TieuDe)<=200 and Length(CauTraLoi )<=50 and TieuDe >0 and HinhAnh >0 Ràng buộc 9: Mô tả: Số ký tự của tên đăng nhập phải khác rỗng và có ký tự từ 6 đến 24. Số ký tự của mật khẩu không được để rỗng và có ký tự từ 6 đến 24. Thuật toán:
Length(ID) >= 6 and Length(ID)<=24 and Length(MK) >=6 and Length(MK) <=24.
Ràng buộc 10:
Mô tả:
Sốđiện thoại phải là chữ số có từ 8-12 ký tự Email không được để trống và phải hợp lệ. Thuật toán:
Length(SoDienThoai)>=8 and Length(SoDienThoai)<=12 and Length(Email) <> 0.
3.7.3 Ràng buộc liên bộ