Ứng dụng của XML

Một phần của tài liệu Ứng dụng AJAX xây dựng website văn hóa ẩm thực (Trang 30)

- 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()”>&lt; &lt;

</BUTTON> <BUTTON ONCLICK=”if(!dsoCustomer.recordset.BOF) dsoCustomer. recordset.movePrevious()”>&lt; </BUTTON> <BUTTON ONCLICK=”if(!dsoCustomer.recordset.EOF) dsoCustomer. recordset.moveNext()”>&gt; </BUTTON>

<BUTTON ONCLICK=”dsoCustomer.recordset.moveLast() ”>&gt; &gt; </BUTTON>

</CENTER> </BODY> </HTML> (adsbygoogle = window.adsbygoogle || []).push({});

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 Đồ 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ả (adsbygoogle = window.adsbygoogle || []).push({});

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. (adsbygoogle = window.adsbygoogle || []).push({});

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 Đồ Tiến Trình Của Nhà Cung Cấp 3.3.1 Đồ 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 Đồ 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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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ộ

Một phần của tài liệu Ứng dụng AJAX xây dựng website văn hóa ẩm thực (Trang 30)