Tải bản đầy đủ (.docx) (28 trang)

Bài tập lớn XML: áp dụng công nghệ XML vào trong việc xây dựng chương trình “Quản lý bán đĩa”

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (643.5 KB, 28 trang )

LỜI MỞ ĐẦU

 !"#$%&'() 
*+,-%".&'/
01*23 #45651
7,+8+5!9/:&;<=>
++0?1 @9,
 @9#&'"AB@BB5C1 
5("&D &6*E:#F<5E:#F5E:#F2!
2G5E:#F2 H,I8&'9
E1*)(",
J58#&'@9: @"&'
91&7AK*@:#AL,-+9M'#)1 
#4,J+5NOP#
+++@&6#)M' :
@9+,I*Q5+RE!/ @ABNOP
<A&6*ST:#F2 4U2Q@#)&'
,T<R2.#?:6<=)9VM-W65
&7G*X2:RE *,
R<:6Y
-+Y
1
MỤC LỤC
2
Chương 1: Giới thiệu
I. Ích Lợi Khi Sử Dụng XML
- NOP+8 7AZ#5[ABNOPAZ#\&'#&Z
ZQ@NOP2,
- NOP+8:1Z&'@"C@W]PE
8:E!&'
- NOPAK8^AZ#)ZQ@_2:AL8


- NOP+8AK88(AZ#Z &6
0
- NOPAK8#&ZAZ##AZ#1Z06
II. Mục tiêu
- J*85: C9CE:#F2 4
178C,
- J!!@9E:#F2 4)B&)&7[AB
E:DAL[AB5E:#F5A2==5 5AL
AH,
III. Phạm vi đề tài, yêu cầu
`9&'<A@CS-NOPU
I)RA#I#WAabcb6;AZ#ACd#RNOP,
ef9D
g 6;AZ#
g NW]h#&'ij
g NOP
g NWPJ
g k]lRm#
g J
g W[+
g n8/*A
g Q@QAZ#A2R
g o8'@#
Chương 2: Nội dung
I. Khảo Sát Nghiệp Vụ
3
1. Khảo sát và đánh giá hiện trạng
Op4@#Z:@qp2 
pAC63 @"9[AB19#)@
#45+2i #C4&DV4@C*54@*

:<#F54@H
I*Q2 E:#F2 4@#2 [#F!'@ZE:#F
AB)E:#F<@,]:@q[AB6/A.5
p 5pAXA#C2_4#4@52
 &' /E:#FAB452 4
"Q@!6/@5 &6*,
l Q@ D
g T:#F<[
g T:#F +62 
g T:#F 4@
g T:#F:&7AK@9
f9&6*@9D
g`9@:AL[AB5ALp5CQ#'&7AK
 @9[AB,
g`9@:!@ALA)&7[AB5A<0
") @9"1 0,
g`9+@<E<&7E:#F8E:#F
+8E8 ,
f9AZ#D
g ]Z#@:&'!!0 5&'!E:#F,
g N[#F&' "_,
2. Mô hình hoạt động nghiệp vụ của quản lý bán đĩa phim
-6;2 2_49@<+ 2_4R8#C5 
+,Q@QA  +4 05@<K 4
&2C6 AL*!8Q#'"
 ,
&7A@:&7!!&2 2:B#BA
  45A 4iZ*5'@ !"
*!4@,
4

&7A 2 5r@( QF
2 ,nM' "4,
-J6;AZ#( !A  4@9@:2(
Q@
-o8/sA  4#&'5#&'2 &'5#&'Q@
#&6i,
-T+5<=@!@5@<#C2_4 @"C@5#CAL<
9#t&7A,IE #F2 4%+[#F5+
",I*Q5C@9T:#F2 4p9 @"&'
9@B,
5
II. Phân tích thiết kế hệ thống
1. Mô tả vấn đề
-I)@9@BBE:#F2 4@5+8QD
eOB01D+A/B2 4%&E:#F1
[,
e "_0D
 T:#F<1[,
 T:#F4,
 T:#F:&7AK
eV&'[AB?1M&'D
 1[DE:#F<5Q2  
><,
 -<DT:#F+62 4
2. Đặc tả yêu cầu
gT:#F<D
+8<)A 5[(+Z2!
(:+2.<2/:, <i+D
OG<5J<5VC# : ,
gT:#F4@D

V4@\&'[Q@),W\&'+
M+4@&'2 ,o<*!4@R
54@\&'Q@Q#&'\&'[M++,
J4@2iDOG455CAL5G:545
 ,
gT:#F+6D
OM !4\&'Q+6,J+2iD
G+65G45#&'5G<5#Q@,
gT:#F:D
6
OM<[AB@9\&'@:,J:
2iDJ:5QqEC,
7
III. Thiết kế cơ sở dữ liệu
1. Mô hình phân cấp chức năng
2. Mô hình luồng dữ liệu mức khung cảnh
3. Mô hình dữ liệu mức đỉnh
8
4. Xác định các thực thể
J8 J0
-<  OG<
 n
 V/X
 WC
J:  J:
 OQq
 TC
V4@  OG4
 J
 nG:

 VCAL
 W4
 u 4
9
n+6  OG+6
 OG<
 -#Q@
!+6  OG+6
 OG4
 W#&'
 J
10
5. Mô hình dữ liệu mức quan hệ
6. Các bảng dữ liệu
l::D
WJJ J
0
o8hV
j
v2 o+0w
o+`B
h`owkoj
O:
c Jo -hxbj -## `o J:
a  -hxbj -## OQq
y TR z -## TC
11
l:<D
WJJ J
0

o8hV
j
v2 o+0w
o+`B
h`owkoj
O:
c O-I -Ihxj -## `o OG<
a nJR -Ihcbb
j
-## J<
y ] -Ihcxb
j
-## V/X
{ W]J-I -Ihccj -## W]J<
l:4@D
WJJ J
0
o8hV
j
v2 o+0w
o+`B
h`owkoj
O:
c O] -Ihxj -## `o OG4
a J]R -Ihaxbj -## J
y nWN -Ihcxbj -## nGWN
{ ]]R -Ihcbbj -## VCAL
x W] z -## W4
| u ]R#hc}5b
j

-## u
l:+6D
WJJ J
0
o8hV
j
v2 o+0w
o+`B
h`owkoj
O:
c Oon -hcbj -## `o OG 
a JRon -hcbbj -## Jon
y ~# -hcxbj -## ~#
{ uJ -hcbj -## u)0
x W]J -hccj -## WC
| JJ -habj -## JC 
12
l:!+6D
WJJ J
0
o8hV
j
v2 o+0w
o+`B
h`owkoj
O:
c Oon -hcbj -## `o OG 
a JRon -hcbbj -## Jon
y ~# -hcxbj -## ~#
{ uJ -hcbj -## u)0

IV. Thiết kế và cài đặt chương trình
1. Các module chính
#JNOPhui@&6"5[5+5*!58
CNOP5PA#]uAR•j
class TaoXML
{
string strCon = " Data Source =.; Initial Catalog = QLDiaPhim; Integrated
Security = True";
public void taoXML(string sql, string bang, string _FileXML)
{
SqlConnection con = new SqlConnection(strCon);
con.Open();
SqlDataAdapter ad = new SqlDataAdapter(sql, con);
DataTable dt = new DataTable(bang);
ad.Fill(dt);
dt.WriteXml(Application.StartupPath + _FileXML,
XmlWriteMode.WriteSchema);
}
public DataTable loadDataGridView(string _FileXML)
{
DataTable dt = new DataTable();
string FilePath = Application.StartupPath + _FileXML;
if (File.Exists(FilePath))
{
//tao luong xu ly file xml
FileStream fsReadXML = new FileStream(FilePath, FileMode.Open);
//doc file xml vao datatable
dt.ReadXml(fsReadXML);
fsReadXML.Close();
}

else
{
MessageBox.Show("File không tồn tại");
}
13
return dt;
}
public void Them(string FileXML, string xml)
{
try
{
XmlTextReader textread = new XmlTextReader(FileXML);
XmlDocument doc = new XmlDocument();
doc.Load(textread);
textread.Close();
XmlNode currNode;
XmlDocumentFragment docFrag = doc.CreateDocumentFragment();
docFrag.InnerXml = xml;
currNode = doc.DocumentElement;
currNode.InsertAfter(docFrag, currNode.LastChild);
doc.Save(FileXML);
}
catch
{
MessageBox.Show("lỗi");
}
}
public void xoa(string _FileXML, string xml)
{
try

{
string fileName = Application.StartupPath + _FileXML;
XmlDocument doc = new XmlDocument();
doc.Load(fileName);
XmlNode nodeCu= doc.SelectSingleNode(xml);
doc.DocumentElement.RemoveChild(nodeCu);
doc.Save(fileName);
}
catch
{
MessageBox.Show("lỗi");
}
}
public void sua(string FileXML, string sql, string xml, string bang)
{
XmlTextReader reader = new XmlTextReader(FileXML);
XmlDocument doc = new XmlDocument();
doc.Load(reader);
reader.Close();
XmlNode oldValue;
XmlElement root = doc.DocumentElement;
oldValue = root.SelectSingleNode(sql);
XmlElement newValue = doc.CreateElement(bang);
newValue.InnerXml = xml;
root.ReplaceChild(newValue, oldValue);
doc.Save(FileXML);
}
public void TimKiem(string _FileXML, string xml, DataGridView dgv)
{
14

XmlDocument xDoc = new XmlDocument();
xDoc.Load(Application.StartupPath + _FileXML);
string xPath = xml;
XmlNode node = xDoc.SelectSingleNode(xPath);
DataSet ds = new DataSet();
DataTable dt = new DataTable();
XmlNodeReader nr = new XmlNodeReader(node);
ds.ReadXml(nr);
dgv.DataSource = ds.Tables[0];
nr.Close();
}
public string LayGiaTri(string duongDan, string truongA, string giaTriA,
string truongB)
{
string giatriB = "";
DataTable dt = new DataTable();
dt = loadDataGridView(duongDan);
int soDongNhanVien = dt.Rows.Count;
for (int i = 0; i < soDongNhanVien; i++)
{
if (dt.Rows[i][truongA].ToString().Trim().Equals(giaTriA))
{
giatriB = dt.Rows[i][truongB].ToString();
return giatriB;
}
}
return giatriB;
}
public bool KiemTra(string _FileXML, string truongKiemTra, string
giaTriKiemTra)

{
DataTable dt = new DataTable();
dt = loadDataGridView(_FileXML);
dt.DefaultView.RowFilter = truongKiemTra + " ='" + giaTriKiemTra + "'";
if (dt.DefaultView.Count > 0)
return true;
return false;
}
public string txtMa(string tienTo, string _FileXML, string tenCot)
{
string txtMa = "";
DataTable dt = new DataTable();
dt =loadDataGridView(_FileXML);
int dem = dt.Rows.Count;
if (dem == 0)
{
txtMa = tienTo + "001";//HD001
}
else
{
int duoi = int.Parse(dt.Rows[dem - 1]
[tenCot].ToString().Substring(2, 3)) + 1;
string cuoi = "00" + duoi;
txtMa = tienTo + "" + cuoi.Substring(cuoi.Length - 3, 3);
15
}
return txtMa;
}
public bool KTMa(string _FileXML, string cotMa, string ma)
{

bool kt = true;
DataTable dt = new DataTable();
dt = loadDataGridView(_FileXML);
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i][cotMa].ToString().Trim().Equals(ma))
{
kt = false;
}
else
{
kt = true;
}
}
return kt;
}
public void exCuteNonQuery(string sql)
{
SqlConnection con = new SqlConnection(strCon);
con.Open();
SqlCommand com = new SqlCommand(sql, con);
com.ExecuteNonQuery();
}
public void Them_Database(string tenBang, string _FileXML) {
string duongDan = _FileXML;
DataTable table = loadDataGridView(duongDan);
int dong = table.Rows.Count - 1;
string sql = "insert into " + tenBang + " values(";
for (int j = 0; j < table.Columns.Count - 1; j++)
{

sql += "N'" + table.Rows[dong][j].ToString().Trim() + "',";
}
sql += "N'" + table.Rows[dong][table.Columns.Count -
1].ToString().Trim() + "'";
sql += ")";
exCuteNonQuery(sql);
}
public void Sua_Database(string tenBang, string _FileXML, string tenCot,
string giaTri)
{
string duongDan = _FileXML;
DataTable table = loadDataGridView(duongDan);
int dong = -1;
for (int i = 0; i < table.Rows.Count; i++)
{
if (table.Rows[i][tenCot].ToString().Trim() == giaTri)
{ dong = i; }
}
if (dong > -1)
16
{
string sql = "update " + tenBang + " set ";
for (int j = 0; j < table.Columns.Count-1; j++)
{
sql += table.Columns[j].ToString() + " = N'" + table.Rows[dong]
[j].ToString().Trim() + "', ";
}
sql += table.Columns[table.Columns.Count - 1].ToString() + " = N'" +
table.Rows[dong][table.Columns.Count - 1].ToString().Trim() + "' ";
sql += "where " + tenCot + "= '" + giaTri +"'";

exCuteNonQuery(sql);
}
}
public void Xoa_Database(string _FileXML, string tenCot, string
giaTri,string tenBang)
{
string duongDan = _FileXML;
DataTable table = loadDataGridView(duongDan);
int dong = -1;
for (int i = 0; i < table.Rows.Count; i++)
{
if (table.Rows[i][tenCot].ToString().Trim() == giaTri)
{ dong = i; }
}
if (dong > -1)
{
string sql = "delete from " + tenBang + " where ";
for (int j = 0; j < table.Columns.Count - 1; j++)
{
if (table.Rows[dong][tenCot].ToString().Trim() == giaTri)
{
sql += tenCot + " = '" + giaTri+ "'";
}
}
exCuteNonQuery(sql);
}
}
public void CapNhapTungBang(string tenBang, string _FileXML)
{
string duongDan= _FileXML;

DataTable table= loadDataGridView(duongDan);
for (int i = 0; i < table.Rows.Count; i++)
{
string sql = "insert into " + tenBang + " values(";
for (int j = 0; j < table.Columns.Count - 1; j++)
{
sql += "N'" + table.Rows[i][j].ToString().Trim() + "',";
}
sql += "N'" + table.Rows[i][table.Columns.Count -
1].ToString().Trim() + "'";
sql += ")";
exCuteNonQuery(sql);
}
17
}
public void TimKiemXSLT(string data,string tenFileXML,string tenfileXSLT)
{
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(""+tenfileXSLT+".xslt");
XsltArgumentList argList = new XsltArgumentList();
argList.AddParam("Data", "", data);
XmlWriter writer = XmlWriter.Create(""+tenFileXML+".html");
xslt.Transform(new XPathDocument("" + tenFileXML + ".xml"), argList,
writer);
writer.Close();
System.Diagnostics.Process.Start("" + tenFileXML + ".html");
}
}
AR*!8/#€R223NWPJ
!+6

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl=" /> xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:param name="Data"></xsl:param>
<xsl:template match="/NewDataSet">
<html>
<body>
<br />
<br />
<center>
<h1>DANH SÁCH CHI TIẾT HÓA ĐƠN</h1>
</center>
<br />
<br />
<table border="1" width="100%">
<tr>
<th>STT</th>
<th>Mã hóa đơn</th>
<th>Mã đĩa</th>
<th>Số lượng mua</th>
<th>Thành tiền</th>
</tr>
<xsl:for-each select="CTHoaDon">
<xsl:if test="MaHD[.=$Data]">
<tr>
<td>
<xsl:value-of select="position()"/>
</td>
<td>

<xsl:value-of select="MaHD"/>
</td>
18
<td>
<xsl:value-of select="MaDia"/>
</td>
<td>
<xsl:value-of select="SLMua"/>
</td>
<td>
<xsl:value-of select="ThanhTien"/>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
NWPJ]`
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl=" /> xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-
prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:param name="Data"></xsl:param>
<xsl:template match="/NewDataSet">
<html>

<body>
<br />
<br />
<center>
<h1>DANH SÁCH ĐĨA PHIM</h1>
</center>
<br />
<br />
<table border="1" width="100%">
<tr>
<th>STT</th>
<th>Mã đĩa phim</th>
<th>Tựa đề</th>
<th>Hãng sản xuất</th>
<th>Đạo điễn</th>
<th>Số đĩa</th>
<th>Giá</th>
</tr>
<xsl:for-each select="DiaPhim">
<xsl:if test="MaDia[.=$Data]">
<tr>
<td>
<xsl:value-of select="position()"/>
</td>
19
<td>
<xsl:value-of select="MaDia"/>
</td>
<td>
<xsl:value-of select="TuaDe"/>

</td>
<td>
<xsl:value-of select="HangSX"/>
</td>
<td>
<xsl:value-of select="DaoDien"/>
</td>
<td>
<xsl:value-of select="SoDia"/>
</td>
<td>
<xsl:value-of select="Gia"/>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
NWPJ]Wn]
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl=" /> xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:param name="Data"></xsl:param>
<xsl:template match="/NewDataSet">
<html>
<body>

<br />
<br />
<center>
<h1>DANH SÁCH HÓA ĐƠN</h1>
</center>
<br />
<br />
<table border="1" width="100%">
<tr>
<th>STT</th>
<th>Mã hóa đơn</th>
<th>Mã nhân viên</th>
<th>Ngày lập</th>
</tr>
<xsl:for-each select="HoaDon">
<xsl:if test="MaHD[.=$Data]">
<tr>
<td>
<xsl:value-of select="position()"/>
</td>
<td>
20
<xsl:value-of select="MaHD"/>
</td>
<td>
<xsl:value-of select="MaNV"/>
</td>
<td>
<xsl:value-of select="NgayLap"/>
</td>

</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
NWPJ-IR
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl=" /> xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:param name="Data"></xsl:param>
<xsl:template match="/NewDataSet">
<html>
<body>
<br />
<br />
<center>
<h1>DANH SÁCH NHÂN VIÊN</h1>
</center>
<br />
<br />
<table border="1" width="100%">
<tr>
<th>STT</th>
<th>Mã nhân viên</th>
<th>Họ và tên</th>
<th>Địa chỉ</th>

<th>số điện thoại</th>
</tr>
<xsl:for-each select="NhanVien">
<xsl:if test="MaNV[.=$Data]">
<tr>
<td>
<xsl:value-of select="position()"/>
</td>
<td>
<xsl:value-of select="MaNV"/>
</td>
<td>
<xsl:value-of select="HoTen"/>
</td>
<td>
<xsl:value-of select="DiaChi"/>
</td>
<td>
21
<xsl:value-of select="SDTNV"/>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
NWPJJo

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl=" /> xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:param name="Data"></xsl:param>
<xsl:template match="/NewDataSet">
<html>
<body>
<br />
<br />
<center>
<h1>DANH SÁCH TÀI KHOẢN</h1>
</center>
<br />
<br />
<table border="1" width="100%">
<tr>
<th>STT</th>
<th>Tên tài khoản</th>
<th>Mật khẩu</th>
<th>quyền</th>
</tr>
<xsl:for-each select="TaiKhoan">
<xsl:if test="TaiKhoan[.=$Data]">
<tr>
<td>
<xsl:value-of select="position()"/>
</td>
<td>
<xsl:value-of select="TaiKhoan"/>

</td>
<td>
<xsl:value-of select="matkhau"/>
</td>
<td>
<xsl:value-of select="quyen"/>
</td>
</tr>
</xsl:if>
</xsl:for-each>
22
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
2. Giao diện chương trình
k_Q@
23
k

kE:#F4@
24
kA +6
kE:#F<
25

×