BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN
MÔN: CÔNG NGHỆ XML
Đề tài: Quản Lý Bán Vé Máy Bay
Gio viên hưng dn: Th.S Đỗ Thị Tâm
Nhóm sinh viên thực hiện:
1. Lưu Văn Hưởng
2. Nguyễn B Nguyện
Lp: ĐH KHMT3_K4
Thng 06, 2012
LỜI MỞ ĐẦU
Thế kỷ 21 - thế kỷ của sự bùng nổ công nghệ thông tin, các công nghệ tiên tiến
phát triển như vũ bão, mang một luồng gió mới thổi vào nhận thức của mỗi người.
Song song đó, thế giới đang trong xu thế toàn cầu hóa, tất cả đều mang ý nghĩa
hội nhập. Lúc này, các doanh nghiệp và chính phủ không chỉ cạnh tranh với các
doanh nghiệp trong một quốc gia mà còn cạnh tranh với các doanh nghiệp, chính
phủ ở khắp thế giới.
Trong bối cảnh phát triển mạnh mẽ của Internet nói chung, thương mại điện tử và
chính phủ điện tử nói riêng, việc ứng dụng công nghệ thông tin vào lĩnh vực dịch
vụ không là mới trên thế giới nhưng là mới ở Việt Nam. Nhiều vấn đề đặt ra là
làm thế nào đem đến cho khách hàng sự phục vụ tốt nhất, tiện lợi và hiệu quả
nhất. Chính vì vậy đề tài”” nhóm chúng em mong muốn sẽ xây dựng được một hệ
thống hỗ trợ các công ty và các trung tâm giao dịch giảm chi phí về nhân sự và
viễn thông, thời gian hỗ trợ ngắn hơn trong việc quản lý hệ thống bán vé máy bay,
thông tin hỗ trợ chính xác theo yêu cầu và không bỏ sót yêu cầu của khách hàng.
Do thời gian có hạn, kinh nghiệm phân tích, thiết kế, cài đặt còn hạn chế nên chắc
chắn không tránh khỏi một số sai sót nhất định. Rất mong nhận được sự đóng góp
ý kiến quý Cô và bạn bè để chúng em hoàn thiện đề tài này.
vé và phòng vé sẽ xóa tên trong danh sách đặt vé nếu cần.
Khách hàng đã mua vé cho một chuyến bay nào đó nhưng vì một lý do nào đó mà
không đi được thì có thể xác định lại chuyến bay ở bất kỳ chuyến bay cùng tuyến nào
đó. Trong trường hợp khách hàng không thể đi được thì có thể trả lại vé đã mua bất kỳ
lúc nào trong vòng một năm kể từ ngày mua.
Mỗi ngày bộ phận bán vé và đặt chỗ sẽ duyệt lại tình hình bán vé cho các chuyến bay
trong hai ngày tới. Nếu có trường hợp hủy vé đã đặt hoặc trả lại vé thì phải thông báo
cho khách hàng đăng ký chờ đến mua vé. Nếu những vé cờ không thể đáp ứng được thì
thông báo cho khách hàng để họ có thể lựa chọn chuyến sau.
Cuối mỗi ngày bộ phận kế toán in bảng tổng hợp tình hình bán vé trong ngày theo mẫu
đã định.
I. TỔNG QUAN VỀ XML
1. Giới thiệu.
XML (Extensible Markup Language) ra đời vào tháng 2/1998, là ngôn ngữ có kiến
trúc gần giống với HTML nhưng XML nhanh chóng trở thành một chuẩn phổ biến
trong việc chuyển đổi thông tin qua các trang web sử dụng giao thức HTTP. Trong
khi HTML chỉ là ngôn ngữ chủ yếu về hiển thị dữ liệu thì XML lại đang phát triển
mạnh về việc chuyển tải, trao đổi và thao tác dữ liệu bằng XML. XML đưa ra một
dạng chuẩn cho cấu trúc dữ liệu hoặc thông tin bằng việc tự định nghĩa định dạng của
dữ liệu. Bằng cách này dữ liệu được lưu trữ bằng XML sẽ độc lập với việc xử lý. Vì
vậy XML ra đời sẽ đáp ứng được yêu cầu ngày càng cao của các nhà lập trình trong
vấn đề trao đổi và xử lý thông tin.
2. Mục tiêu ra đời của XML.
Ngày nay, XML đang trở thành một chuẩn chung cho việc trao đổi dữ liệu cho các
ứng dụng chạy trên môi trường Internet. Vì XML cho phép người dùng có thể tự định
nghĩa các thẻ(tag)-những thẻ này làm cho tài liệu XML đa dạng hơn nhưng ngôn ngữ
thông thường như HTML. Như vậy mục tiêu đặt ra cho sự ra đời XML là gì? Đó là,
đầu tiên nó sẽ tương thích với SGML, và dễ dàng viết thành chương trình để sử lý
cho những tài liệu XML. Kế tiếp, những tài liệu XML rõ ràng, dễ đọc và dễ dàng tạo
lập. Và điều quan trọng là nó được hỗ trợ trong nhiều ứng dụng. Nói tóm lại, XML dễ
chứa tất cả những phần tử của tài liệu XML do chúng tạo ra.
<root>
<child>
<subchild>….</subchild>
……………
< /child >
…….
</root>
<? xml version = ”1.0” ?
>
< ! chú thích >
Thuộc tính(Attributes): Như đã trình bày ở trên, một phần tử có thể chứa dữ liệu hoặc
chứa các phần tử khác hoặc cả hai. Bên cạnh đó, phần tử có thể rỗng, khi đó nó có thể
chứa thuộc tính. Một thuộc tính chỉ là một sự lựa chọn để gắn dữ liệu đến phần tử.
Một thuộc tính đặt trong thẻ mở của phần tử và chỉ ra các giá trị của nó bằng các sử
dụng cặp “name=value”.
3. Một tài liệu hợp lệ.
Như chúng ta đã đề cập ở trên, một tài liệu XML hợp khuôn dạng là yếu tố đầu
tiên khi tạo lập tài liệu. Hợp khuôn dạng có nghĩa là mỗi tài liệu chỉ có một nút
gốc, mỗi phần tử phải có thẻ mở và thẻ đóng, và phải lồng nhau chính xác, và cuối
cùng là tên thuộc tính chỉ xuất hiện một lần trong thẻ mở. Nhưng một tài liệu
XML hợp khuôn dạng không có nghĩa là nó hợp lệ. Muốn kiểm tra sự hợp lệ
của một tài liệu XML ta phải dựa vào DTD (Document Type Definition) hoặc
Schema XML.
4. DTD (Document Type Definition)
DTD và Schema là hai cách khác nhau để qui định những luật về nội dung của
<?xml version="1.0"?>
<Catalog>
<Product Type="SpinningReel"SupplierId="5">
<ProductID>F10</ProductID>
5. Lược đồ XML (Schema XML)
5.1 Định nghĩa lược đồ XML
Một lược đồ đơn giản chỉ là một tập những luật được định nghĩa lại để mô tả
nội dung dữ liệu c
ủ
a
mộ
t tài liệu XML. Nó tương tự như một định nghĩa cấu trúc
bảng trong cơ sở dữ liệu quan hệ. Trong lược đồ XML, chúng ta định nghĩa một tài
liệu XML, những phần tử của nó, những kiểu dữ liệu của phần tử và những thuộc
tính liên quan, và điều quan trọng nhất là mối quan hệ “cha-con” giữa những
phần t
ử.
Chúng
ta có thể tạo lược đồ trong nhiều cách khác nhau. Cách đơn giản
nhất là sử dụng Notepad. Sau đây là một ví dụ một
lược đồ XML:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="QLbanvemaybay"
targetNamespace=" /> elementFormDefault="qualified"
xmlns=" /> xmlns:mstns=" /> xmlns:xs=" /> <! Kieu ma >
<xs:simpleType name="kieuma">
<xs:restriction base="xs:ID">
<xs:maxLength value="5"/>
</xs:restriction>
</xs:simpleType>
<! Kiểu xâu >
<xs:simpleType name="kieuxau">
<xs:restriction base="xs:string">
không nhất thiết
phả
i
giống
với một số cơ sở dữ liệu khác. Sau đây là danh
sách các kiểu dữ liệu của lược đồ XML.
String normalizedString length
Boolean Token minLength
Decimal Language maxLength
Float NMTOKEN pattern
Các kiểu dữ liệu cơ bản
Kiểu dữ liệu mở rộng
Kiểu ràng buộc
Double NMTOKENS enumeration
dateTime NCName maxInclusive
Time ID maxExclusive
Date IDREF minExclusive
base64Binary negativeInteger
gYearMonth IDREFS minInclusive
gMonthDay ENTITY totalDigits
GMonth Integer
GDay ENTITIES fractionDigits
long
int
short
byte
6. Xpath
Qua phần trình bày trên, chúng ta biết được cấu trúc và cú pháp của XML tương
đối đơn giản. Bước tiếp theo là tìm hiểu cách nào để xử lý một tài liệu XML.
Như vậy để xử lý một tài liệu XML, chương trình ứng dụng phải có cách di
quan bao gồm XML DOM, XPath, XSL, và XML Schema. Trong đó XML DOM
được sử dụng để tạo, thay đổi, và duyệt qua tài liệu XML. XPath là ngôn ngữ dùng
để truy vấn trên tài liệu XML. XSL dùng để chuyển đổi tài liệu XML từ dạng này
sang
dạng
khác. XML Schema định nghĩa cấu trúc và kiểu dữ liệu cho những nút
trong một tài liệu XML.
Tấ
t c
ả
những công nghệ này đã tạo nên sức mạnh cho
XML. Vì thế, XML ngày nay đang được sử dụng
rấ
t
phổ
biến và tương lai sẽ là một
chuẩn duy nhất được dùng trên web.
III. Sử dụng tài liệu XML.
Dưới đấy là một số kỹ thuật được sử dụng trong môi trường Visual Studio.NET
để làm việc với tập tin XML.
1. Đọc và phân tích tài liệu XML
1.1 Đọc và ghi một file XML
//Địa chỉ file
public string file = "";
private static string strFilename = "E:\\QLbanveMB.xml";
void tenfile()
{
if (file != "")
//Tạo kết nối đến CSDL
public SqlConnection taoketnoi()
{
return new SqlConnection("Data Source=.;Initial
Catalog=BanVeMayBay;Integrated Security=True");
}
//Trả về bảng dữ liệu
public DataTable getTable(string sql)
{
SqlConnection sqlcon = taoketnoi();
sqlcon.Open();
SqlDataAdapter ada = new SqlDataAdapter(sql,
sqlcon);
sqlcon.Close();
DataSet ds1 = new DataSet();
ada.Fill(ds1);
return ds1.Tables[0];
}
//Truy vấn đến CSDL
public void truyvan(string sql)
{
SqlConnection con = taoketnoi();
SqlCommand cmd = new SqlCommand(sql, con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
cmd.Dispose();
}
1.3Xử lý dữ liệu trên file XML(bảng MAYBAY)
//Tự động tăng mã
XmlDocument doc = dgxml.DocTaiLieu();
XmlNode goc = doc.DocumentElement;
XmlNode cu =
doc.SelectSingleNode("//maybay[@ma_maybay='" + mamaybay +
"']");
XmlElement nutthem =
doc.CreateElement("maybay");
XmlAttribute thuoctinh =
doc.CreateAttribute("ma_maybay");
thuoctinh.InnerText = mamaybay;
nutthem.SetAttributeNode(thuoctinh);
XmlNode ten_maybay =
doc.CreateElement("ten_maybay");
ten_maybay.InnerText = tenmaybay;
nutthem.AppendChild(ten_maybay);
goc.ReplaceChild(nutthem, cu);
dgxml.GhiTaiLieu(doc);
//hienmaybay();
}
//Xóa một node trong tài liệu sử dụng hàm RemoveChild
public void xoamaybay(string mamaybay)
{
XmlDocument doc = dgxml.DocTaiLieu();
XmlNode goc = doc.DocumentElement;
XmlNode cu =
doc.SelectSingleNode(".//maybay[@ma_maybay='" + mamaybay +
"']"); ;
goc.RemoveChild(cu);
}
}
}
//Lưu bảng MAYBAY ra file Xml nếu thỏa mãn điều kiện
public void luurafileXML()
{
DataTable table = dsma_MayBay();
//int i = 0, sodong = table.Rows.Count-1;
string mamb = "", tenmb = "";
//while (i != sodong)
//{
for (int i = 0; i < table.Rows.Count; i++)
{
mamb = table.Rows[i][1].ToString(); tenmb =
table.Rows[i][0].ToString();
if
(fct.kiemtrama(".//maybay[@*]/@ma_maybay", mamb) == false)
{
luumaybay(mamb, tenmb);
}
else suamaybay(mamb, tenmb);
}
2. File XML đầy đủ
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl"
href="banvemaybayXSLT.xslt"?>
<QLbanvemaybay>
<! Bảng 0_Danh sách Phân quyền >
<phanquyen ma_nhom="PQ001">
<loai_duongbang>bê tông</loai_duongbang>
<chieudaiduongbang>3000m/3000m</chieudaiduongbang>
<bay_dem>Có</bay_dem>
<thanhpho>Đà Nẵng</thanhpho>
<quocgia>Việt Nam</quocgia>
</sanbay>
<sanbay masanbay="SB004">
<ten_sanbay>Sân bay Cà Mau</ten_sanbay>
<so_duong_bang>1</so_duong_bang>
<loai_duongbang>nhựa đường</loai_duongbang>
<chieudaiduongbang>1500m</chieudaiduongbang>
<bay_dem>Không</bay_dem>
<thanhpho>Hà Nội</thanhpho>
<quocgia>Việt Nam</quocgia>
</sanbay>
<! Bảng 2_Danh sách máy bay >
<maybay ma_maybay ="MB001">
<ten_maybay>Boeing 777</ten_maybay>
</maybay>
<maybay ma_maybay ="MB002">
<ten_maybay>Boeing 737</ten_maybay>
</maybay>
<maybay ma_maybay ="MB003">
<ten_maybay>Boeing 787</ten_maybay>
</maybay>
<maybay ma_maybay ="MB004">
<ten_maybay>Airbus</ten_maybay>
</maybay>
<! Bảng 3_Danh sách nhân viên >
<nhanvien ma_nhanvien="NV001" ma_nhom="PQ003">
<! Bảng 4_Danh sách khách hàng >
<khachhang ma_khachhang="KH001">
<HoDem>Nguyễn Văn</HoDem>
<ten>Lượng</ten>
<gioitinh>Nam</gioitinh>
<CMND_hochieu>125698987</CMND_hochieu>
<ngaysinh>2012-02-05</ngaysinh>
<diachi>Bắc Ninh</diachi>
<email></email>
<dienthoai>0986589745</dienthoai>
<quoctich>Việt Nam</quoctich>
</khachhang>
<! Bảng 5_Danh sách loại vé >
<loaive ma_loaive="LV001">
<tenloaive>Vé loại 1</tenloaive>
<dongia>3000000</dongia>
</loaive>
<loaive ma_loaive="LV002">
<tenloaive>Vé loại 2</tenloaive>
<dongia>2500000</dongia>
</loaive>
<loaive ma_loaive="LV003">
<tenloaive>Vé loại 3</tenloaive>
<dongia>2300000</dongia>
</loaive>
<loaive ma_loaive="LV004">
<tenloaive>Vé giảm giá</tenloaive>
<dongia>2000000</dongia>
</loaive>
<! Bảng 6_Danh sách các tuyến bay >
<thoigianbay>2 giờ</thoigianbay>
<tinhtrang>Chưa bay</tinhtrang>
</chuyenbay>
<! Bảng 8_Danh sách Vé >
<ve ma_ve="VE001" ma_chuyenbay="CB001" ma_loaive
="LV001">
<tinhtrang>Đã được đặt</tinhtrang>
</ve>
<! Bảng 9_Danh sách đặt vé >
<datve ma_datve="DV001" ma_khachhang="KH001"
ma_ve="VE001">
<ngaydat>2012-05-10</ngaydat>
<soghedat>1</soghedat>
</datve>
<! Bảng 10_Danh sách hóa đơn >
<hoadon ma_hoadon="HD001" ma_datve="DV001"
ma_nhanvien="NV001">
<ngaylap>2012-05-13</ngaylap>
</hoadon>
</QLbanvemaybay>
3. File xslt cho thông tin lên trình duyệt.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl=" />xmlns:msxsl="urn:schemas-microsoft-com:xslt"
>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<head>
<style type="text/css">
<script language = "JavaScript">
$(document).ready(function(){
$(".tabContents").hide(); // Ẩn toàn bộ nội dung
của tab
$(".tabContents:first").show(); // Mặc định sẽ
hiển thị tab1
$("#tabContaier ul li a").click(function(){
//Khai báo sự kiện khi click vào một tab nào đó
var activeTab = $(this).attr("href");
$("#tabContaier ul li a").removeClass("active");
$(this).addClass("active");
$(".tabContents").hide();
$(activeTab).fadeIn();
});
});
</script>
</head>
<body>
<div id="deadline">
<h1> Quản lý bán vé máy bay</h1>
</div>
<div id="tabContaier">
<ul>
<li>
<a class="active" href="#tab1">Sân bay</a>
</li>
<li>
<a href="#tab2">Máy bay</a>
</li>
<div id="tab1" class="tabContents">
<h2> Thông tin về sân bay</h2>
<table>
<tr>
<th align="center" >STT</th>
<th align="center">Mã sân bay</th>
<th align="center">Tên sân bay</th>
<th align="center">Số đường băng</th>
<th align="center">Loại đường băng</th>
<th align="center">Chiều dài</th>
<th align="center">Bay đêm</th>
<th align="center">Thành phố</th>
<th align="center">Quốc gia</th>
</tr>
<xsl:apply-templates
select="QLbanvemaybay/sanbay"/>
</table>
</div>
<div id="tab2" class="tabContents">
<h2> Thông tin về Máy bay</h2>
<table>
<tr>
<th align="center">STT</th>
<th align="center">Mã máy bay</th>
<th align="center">Tên máy bay</th>
</tr>
<xsl:apply-templates
select="QLbanvemaybay/maybay"/>
</table>
</div>