SlideShare a Scribd company logo
1 of 262
Download to read offline
Phân công:
Họ và tên Công việc
Nguyễn Văn Tập (Nhóm trưởng) Code demo chương trình
Trịnh Thanh Sang Quay Video
Võ Thị Cẩm Ngân Soạn bài báo cáo
Dương Thị Ngọc Giàu Soạn slide báo cáo
Nguyễn Thị Phượng Hằng Soạn các câu hỏi củng cố
MỤC LỤC
I. Giới Thiệu............................................................................................................................................2
1. Giới thiệu về namespace System.xml (introduction to namespace System.xml) ............................2
2. Đọc và Ghi XML (Read and write Streamed XML).............................................................................4
2.1 Sử dụng lớp XmlTexReader ..........................................................................................................4
2.2 Các phương thức Read....................................................................................................................6
2.3 Lấy thuộc tính của dữ liệu:.............................................................................................................7
2.4 Sử dụng lớp XmlValidatingReader................................................................................................8
2.5 Sử dụng Schema property..............................................................................................................9
2.6 Sử dụng lớp XmlTextWriter ..........................................................................................................9
II. Hướng dẫn làm demo Chương trình kết nối C d ng ile hình .........................11
 Bước 1: Tạo project mới có tên là DemoKetNoiSQL.....................................................................11
 Bước 2: Tao form với các control như hình bên dưới.....................................................................11
 Bước 3: Tạo file xml trong thư mục debug của chương trình.........................................................12
 Bước 4: Thêm class DataProvide vào chương như hình bên dưới:.................................................13
 Bước 5:Tạo thêm class SQLInformation ........................................................................................16
 Bước 6: Ta viết các hàm sự kiện cho form .....................................................................................17
 Bước 7: Vào SQL tạo một cơ sở dữ liệu tên là QLBH vậy là chúng ta có thể kết nối thành công. 20
III. Câu hỏi...........................................................................................................................................20
1. Câu hỏi Thực hành:.........................................................................................................................20
2. Câu hỏi lý thuyết:............................................................................................................................20
3. Câu hỏi trắc nghiệm........................................................................................................................21
I. Giới Thiệu
XML (eXtensible Markup Langue) đóng một vai trò quan trọng trong .NET. Không chỉ
vì .NET cho phép bạn sử dụng XML trong các ứng dụng của bạn, mà bản thân nó cũng sử dụng
XML cho những file cấu hình và tài liệu mã nguồn, như SOAP, các dịch vụ web và Ado.net. Do
đó tìm hiểu về các xử lý XML trong .Net với ngôn ngữ C# là một điều nên làm. Bài viết này
1. Giới thiệu về namespace System.xml (introduction to namespace System.xml)
- namespace System.xml trong .NET cung cấp một số lớp hỗ trợ cho việc xử lý XML.
Dưới đây là những lớp đọc và ghi XML.
Tên lớp Giải thích
XmlReader
Một lớp đọc trừu tượng nhanh và non-cached dữ liệu XML.
XmlReader được thiết kế giống như bộ phân tách SAX.
XmlWriter
Một lớp viết trừu tượng nhanh và non-cached dữ liệu XML trong
một dòng hoặc định dạng file.
XmlTexReader
Mở rộng của XmlReader. Cung cấp chuỗi truy cập nhanh dữ liệu
XML.
XmlTexWriter Mở rộng của XmlWriter. Phát nhanh các dòng XML.
- Một vài lớp hữu ích khác trong XML:
Tên lớp Giải thích
XmlNode
Một lớp trừu tượng miêu tả một nút đơn trong một tài liệu XML.
Lớp cơ sở cho các lớp khác trong namespace XML.
XmlDocument
Mở rộng của XmlNode. Đây là một thực thi W3C Document
Object Model (DOM). Nó cung cấp một cây miêu tả tài liệu
XML trong bộ nhớ cho phép điều hướng và soạn thảo.
XmlDataDocument
Mở rộng của XmlDocument. Đây là một tài liệu có thể được tải
từ dữ liệu XML hoặc từ dữ liệu trong một ADO.NET DataSet.
Cho phép hòa trộn XML và dữ liệu quan hệ trong cùng một
view.
XmlResolver
Một lớp trừu tượng dùng giải quyết các tài nguyên XML ngoài
như DTD và tham chiếu sơ đồ. Cũng dùng để xử lí các thành
phần <xsl:include> và <xsl:import>.
XmlUrlResolver
Mở rộng của XmlResolver. Giải quyết các tài nguyên tên như
một URI (Uniform Resource Identifier).
- Lưu ý: namespace xml có sẵn cho bất kỳ ngôn ngữ nào biết .NET
2. Đọc và Ghi XML (Read and write Streamed XML)
- Cả 2 lớp XmlReader và XmlWriter đều là những lớp
trừu tượng. Hình dưới đây minh họa các lớp kế thừa từ 2
lớp này:
+ XmlTextReader và XmlTextWriter làm việc chung trên
các đối tượng stream hoặc các đối tượng
TextReader/TextWriter trong namespace System.IO.
+ XmlNodeReader sử dụng XmlNode cho một nguồn
thay cho một stream. XmlValidatingReader thêm DTD
với sơ đồ tích hợp và tất nhiên là cả dữ liệu hợp lệ.
2.1 Sử dụng lớp XmlTexReader
- XmlTexReader rất giống SAX. Một trong những khác biệt lớn nhất: SAX là một mô
hình kiểu push, còn XmlTextReader là một mô hình pull, ở đó dữ liệu được kéo vào ứng dụng
yêu cầu nó. Nó tạo ra một mô hình lập trình dễ dàng và trực quan hơn. Một lợi ích khác của mô
hình pull là có thể lựa chọn dữ liệu để gởi đến ứng dụng: nếu bạn không muốn tất cả các dữ liệu,
vì không cần xử lý tất cả chúng. Còn trong mô hình push, tất cả dữ liệu XML cần phải được xử
lý bởi ứng dụng, mặc cho nó có muốn hay không.
- Để sử dụng lớp này bạn cần khai báo :
using System.Xml;
- Bây giờ hãy mở visual studio của bạn lên:
+ Kéo vào một ListBox và một Button như
hình bên;
+ Sau đó viết sự kiện cho button Load XML
như sau:
- Kết quả khi chạy chương trình trên và click vào button LoadXML như hình bên dưới.
- XmlTextReader này sử dụng khá đơn giản.
+ Trước tiên chúng ta tạo ra một đối tượng string chứa dường dẫn tới file xml.
Sau đó tạo một đối tượng XmlTextReader mới với tham số là đường dẫn tới file xml.
+ Khi chương trình chạy đến vòng lặp while, phương thức Read sẽ được di
chuyển sang mục tiêu đầu tiên trong tài liệu. Nó tiêu biểu cho các mục khai báo XML.
Trong ví dụ này, chúng ta duyệt qua từng mục và so sánh xtr.NodeType với bộ
XmlNodeType, và thêm các mục được tìm thấy vào listbox.
2.2 Các phương thức Read
- Có một vài cách di chuyển trong tài liệu. Như bạn đã thấy trong ví dụ trên,
Read() có thể di chuyển sang mục tiếp theo. Chúng ta có thể xem nêu mục đó có giá trị
(HasValue()) , hoặc nếu mục đó có thuộc tính (HasAttributes()) . Chúng ta cũng có thể
dùng phương thức ReadStartElement(), để kiểm tra xem nếu mục hiện tại là thành phần
khởi đầu, và chuyển sang mục tiếp theo. Nếu không phải là mục khởi đầu một ngoại lệ
XmlException sẽ được phát ra. Việc gọi phương thức này giống như gọi phương thức
IsStartElement(), bởi một Read().
- Các phương thức ReadString() và ReadChars() đều đọc dữ liệu văn bản từ một
thành tố. ReadString() tra về một chuỗi dữ liệu, trong khi ReadChars() trả về một mảng
dữ liệu kiểu char.
- ReadElementString() cũng giống như ReadString(), ngoại trừ việc bạn không
phải truyền tên của một thành tố. Nếu nội dung của mục tiếp theo không phải là một start
tag, hoặc nếu tham số Name không không phải là Name của mục hiện hành, thì một
ngoại lệ sẽ được phát ra.
- Dưới đây là ví dụ chỉ ra cách sử dụng ReadElementString(), lưu ý khai báo:
1. using System.IO;
2. private void btnLoadXML_Click(object sender, EventArgs e)
3. {
4. string fileName = “Book.xml”;
5. FileStream fs = new FileStream(fileName, FileMode.Open);
6. XmlTextReader xtr = new XmlTextReader(fs);
7. while (!xtr.EOF)
8. {
9. if (xtr.MoveToContent() == XmlNodeType.Element && xtr.Name == “title”)
10. {
11. listBox1.Items.Add(xtr.ReadElementString());
12. }
13. Else
14. {
15. xtr.Read();
16. }
17. }
18. }
- Trong vòng lặp while chúng ta sử dụng MoveToContent() để tìm trên mỗi dòng
xem XmlNodeType.Element có giống với named title không. Chúng ta sử dụng thuộc
tính EOF của XmlTextReader như là một điều kiện lặp. Nếu mục không phải kiểu
Element của named title, mệnh đề else phát ra một phương thức Read() để di chuyển sang
mục tiếp theo. Khi chúng ta tìm thấy một mục thỏa điều kiện, chúng ta trả kết quả của
ReadElementString() cho listbox. Nó cho phép các tựa sách được liệt kê trong listbox.
Chú ý rằng chúng ta không tạo ra một lời gọi Read() sau khi một ReadElementString()
thực hiện thành công. Bởi vì ReadElementString() cũng sẽ di chuyển sang mục tiếp theo.
- Nếu bạn bỏ && tr.Name==”title” trong mệnh đề if, bạn sẽ nhận được ngoại lệ
XmlException. Nếu nhìn vào file dữ liệu, bạn sẽ thấy thành tố đầu tiên mà
MoveToContent() tìm ra là <bookstore>. Tất nhiên nó vì nó không chứa một kiểu text
chuẩn, nên ReadElementString() phát ra một ngoại lệ XmlException.
2.3 Lấy thuộc tính của dữ liệu:
- Khi bạn chạy các ví dụ trên, bạn nhận ra rằng khi các mục được đọc, bạn không
thấy bất kì thuộc tính nào cả. Đó là vì các thuộc tính không nằm trong tài liệu. Khi đang
đứng trên một mục, bạn có thể kiểm tra các thuộc
tính và có thể lấy giá trị của bất kì giá trị thuộc tính
nào.
- Thuộc tính HasAttributes sẽ trả về giá trị
true nếu có bất kì thuộc tính nào còn không sẽ trả về
false. Thuộc tính AttributeCount sẽ cho bạn biết có
bao nhiêu thuộc tính, và phương thức GetAttribute()
sẽ trả về một thuộc tính thông qua tên hoặc chỉ mục.
Nếu bạn muốn lặp qua các thuộc tính bạn có thể
dùng các phương thức MoveToFirstAttribute() và MoveToNextAttribute().
- Dưới đây là một ví dụ về việc lặp qua các thuộc tính.
1.string fileName = “Book.xml”;
2.FileStream fs = new FileStream(fileName, FileMode.Open);
3.XmlTextReader xtr = new XmlTextReader(fs);
4.while (xtr.Read())
5.{
6.if (xtr.NodeType == XmlNodeType.Element)
7.{
8.for (int i = 0; i < xtr.AttributeCount; i++)
9.{
10. listBox1.Items.Add(xtr.GetAttribute(i));
11. }
12. }
13. }
- Bây giờ chúng ta xem xét về các mục thành phần. Khi chúng ta tìm thấy một
mục, chúng ta lặp qua tất cả thuộc tính của nó, và dùng phương thức GetAttribute() để
load giá trị của thuộc tính vào listbox. Trong ví dụ này các thuộc tính đó là genre,
publicationdate, và ISBN.
2.4 Sử dụng lớp XmlValidatingReader
- Nếu bạn muốn xác nhận một tài liệu XML, bạn sẽ cần phải sử dụng lớp
XmlValidatingReader. Nó chứac các khả năng giống như XmlTextReader (Cả hai đều xuất phát
từ XmlReader) nhưng XmlValidatingReader có thêm thuộc tính ValidationType, thuộc tính
Schemas và SchemaType.
- Nếu bạn gán thuộc tính ValidationType giá trị xác nhận mà bạn muốn. Giá trị hợp lệ
của thuộc tính này được liệt kê trong bảng sau:
Property
value Description
Auto
Nếu một DTD được khai báo trong một khai báo <!DOCTYPE…>, điều
này cho phép DTD sẽ được load và xử lí. Giá trị mặc định cho các
DTD.Nếu một thuộc tính XSD schemalocation được tìm thấy, XSD được
load và xử lí, và sẽ trả về các giá trị mặc định trong sơ đồ.
Nếu một không gian tên với tiếp đầu ngữ MSXML x-schema được tìm
thấy, nó sẽ load và xử lí sơ đồ XDR và trả về các thuộc tính mặc định đã
được định nghĩa.
DTD Phù hợp theo chuẩn DTD.
Schema Phù hợp theo sơ đồ XSD.
XDR Phù hợp theo sơ đồ XDR
None Không giá trị hợp lệ nào được thực thi.
- Khi một thuộc tính trong này được chọn, Một ValidationEventHandler cần phải được gán. Đây
là một sự kiện được tạo ra do các lỗi. Bạn có thể tác động lại lỗi theo các mà bạn cho là phù hợp.
2.5 Sử dụng Schema property
Schemas property của XmlValidatingReader chứa một XmlSchemaCollection, có
thể tìm thấy trong không gian tên System.Xml.Schema. Tập hợp này tổ chức load lại
loaded XSD và XDR schemas. Nó cực nhanh đặc biệc là khi bạn cần kiểm tra sự hợp lệ
của nhiều tài liệu khác nhau, vì sơ đồ sẽ không được load mỗi khi kiểm tra. Các bước sử
dụng thuộc tính này như sau, bạn tạo một đối tượng XmlSchemaCollection. Phương thức
Add(), nằm trong một XmlSchemaCollection, có bốn quá tải. Bạn có thể truyền nó cho
một đối tượng xuất phát từ XmlSchema, một đối tượng xuất phát từ
XmlSchemaCollection, một chuỗi không gian tên với chuỗi URI của file sơ đồ và một đối
tượng xuất phát từ XmlReader chứa trong sơ đồ.
2.6 Sử dụng lớp XmlTextWriter
- Lớp XmlTextWriter cho phép bạn xuất XML thành một chuỗi, một file hoặc
một đối tượng a TextWriter. Giống như XmlTextReader, nó là một kiểu forward-only,
non-cached. XmlTextWriter có thể cấu hình cao, cho phép bạn chỉ rõ những thứ như cho
phép thục đầu dòng, số thục đầu dòng, kí tự chỉ dẫn nào được dùng trong các giá trị thuộc
tính cho phép namespace hỗ trợ.
- Hãy xem ví dụ sau, để biết cách sử dụng lớp XmlTextWriter
1. private void btnGhiXML_Click(object sender, EventArgs e)
2. {
3. SaveFileDialog sfd = new SaveFileDialog();
4. sfd.Filter = "XML file(*.xml)|*.xml";
5. sfd.RestoreDirectory = true;
6. if (sfd.ShowDialog() == DialogResult.OK)
7. {
8. XmlTextWriter xtw = new XmlTextWriter(sfd.FileName, null);
9. xtw.Formatting = Formatting.Indented;
10. xtw.WriteStartDocument();
11. // write to element HoTen
12. xtw.WriteStartElement("LyLich");
13. xtw.WriteAttributeString("QuocTich", "Viet Nam");
14. xtw.WriteElementString("HoTen", txtHoTen.Text);
15. xtw.WriteElementString("QueQuan", txtQueQuan.Text);
16. xtw.WriteElementString("NgaySinh", txtNgaySinh.Text);
17. xtw.WriteEndElement();
18. xtw.WriteEndDocument();
19. xtw.Flush();
20. xtw.Close();
21. }
22. }
- Chương trình demo có
giao diện như sau:
Khi nhấn button ghi ra file XML
thì hộp thoại saveFileDialog sẽ hiện ra
để bạn chọn đường dẫn lưu file. Bạn
điền tên file rồi sau đó chọn save thì file
sẽ lưu lại với đuôi mở rộng là .xml với
tên mà bạn đã đặt cho nó.
Sau đó bạn click chuột phải vào
file xml vừa được tạo ra chọn Edit thì sẽ
thấy nội dung mà chương trình đã ghi ra.
- Các thành phần được điều khiển bằng việc theo dõi khi nào bạn bắt đầu và kết thúc thao
tác viết các thành phần các thuộc tính. Bạn có thể bắt gặp chúng khi chúng ta thêm vào tên của
thành phần con cho các thành phần lớn. Chú ý việc các lời gọi phương thức WriteStartElement()
và WriteEndElement() được tổ chức như thế nào và các tổ chức các sản phẩm các bộ thành phần
trong file xuất.
- Các phương thức WriteElementString() và WriteAttributeString(), có một vài phương
thức ghi đặc biệc. WriteCData() sẽ xuất ra một đoạn CData (<!CDATA[...]]>), việc xuất ra các
text cần một tham số. WriteComment() xuất ra một ghi chú theo định dạng XML. WriteChars()
xuất ghi chi của của một chuỗi các kí tự. Điều này cũng tương tự phương thức ReadChars() mà
chúng ta đã biết; chúng đều sử dụng cùng các tham số. WriteChars() cần một vùng đệm (một
mảng kí tự) Vị trí bắt đầu đẻ ghi (một số integer) số các kí tự sẽ ghi (một số integer).
- Thao tác đọc và ghi XML dùng các lớp xuất phát từ XmlReader và XmlWriter đơn giản
và mềm dẻo đến hơn chúng ta tưởng tượng rất nhiều.
II. Hướng dẫn làm demo Chương trình kết nối C d ng ile hình
XML
Bước 1: Tạo project mới có tên là DemoKetNoiSQL
Bước 2: Tao form với các control như hình bên dưới
Combobox
Name: cbserver
na
Textbox
Name: txtUser,txtPass
Listbox
Name:
listBox1
Các button
chức năng
Bước 3: Tạo file xml trong thư mục debug của chương trình.
Tạo file notpad++ trong đó ghi các dòng sau:
1. <?xml version="1.0"?>
2. <cauhinh>
3. <servername>ADMINSQLEXPRESS</servername>
4. <database>QLBH</database>
5. <username>sa</username>
6. <password>sql2008</password>
7. <connectStr>Data Source=ADMINSQLEXPRESS; Initial Catalog =QLBH;
Integrated Security=SSPI;</connectStr>
8. </cauhinh>
Khi save as ta chọn đến thư mục debug của chương trình và phần mở rộng của nó ta để là
.xml. Cuối cùng ta được như hình bên dưới
Bước 4: Thêm class DataProvide vào chương như hình bên dưới:
Trong class này, đầu tiên tạo là lớp DataProvide sẽ kết thừa lớp DataTable:
1. class DataProvide : DataTable
Trong lớp DataProvide có các thuộc tính như:
1. public static string m_ConnectString;
2. private static SqlConnection m_Connection;
3. private SqlCommand m_Command;
4. private SqlDataAdapter m_DataAdapter;
Tiếp theo, tạo các hàm lấy dữ liệu cho thuộc tính:
1. public static SqlConnection Connection
2. { get { return m_Connection; } }
3. public SqlCommand SqlCmd
4. {
5. get { return m_Command; }
6. set { m_Command = value; }
7. }
8. public void CloseConnetion()
9. {
10. m_Connection.Close();
11. }
Tiếp theo trong class này tạo thêm các hàm mở, đóng kết nối,…
1. public bool OpenConnection()
2. {
3. try
4. {
5. if (m_Connection == null)
6. m_Connection = new SqlConnection(m_ConnectString);
7. if (m_Connection.State == ConnectionState.Closed)
8. m_Connection.Open();
9. return true;
10. }
11. catch (Exception e)
12. {
13. m_Connection.Close();
14. MessageBox.Show(e.Message);
15. return false;
16. }
17. }
18. public void CloseConnetion()
19. {
20. m_Connection.Close();
21. }
22. public DataProvide()
23. {
24. string patch = Application.StartupPath + "cauhinh.xml";
25. DocFileCauHinh(patch);
26. }
Sau cùng trong class này tạo 2 hàm đó là hàm Load() và hàm DocFileCauHinh()
1. public void Load(SqlCommand cmd)
2. {
3. m_Command = cmd;
4. try
5. {
6. this.Clear();
7. m_Command.Connection = m_Connection;
8. m_DataAdapter = new SqlDataAdapter();
9. m_DataAdapter.SelectCommand = m_Command;
10. m_DataAdapter.Fill(this);
11. }
12. catch (Exception e)
13. {
14. MessageBox.Show(e.Message);
15. }
16. }
17. public static void DocFileCauHinh(string patch)
18. {
19. XmlTextReader reader = new XmlTextReader(patch);
20. reader.MoveToElement();
21. while (reader.Read())
22. {
23. if (reader.NodeType == XmlNodeType.Element && reader.Name
== "cauhinh")
24. {
25. while (reader.Read())
26. {
27. if (reader.NodeType == XmlNodeType.Element &&
reader.Name == "connectStr")
28. {
29.
30. DataProvide.m_ConnectString = reader.ReadString();
31. break;
32. }
33. }
34. }
35. }
Bước 5:Tạo thêm class SQLInformation
Trong class SQLInformation này ta code như sau:
1. public static string m_SQLServer;
2. public static string m_Username;
3. public static string m_Password;
4. public ArrayList GetSQLServersDatabases()
5. {
6. ArrayList data = new ArrayList();
7. SqlConnection con = new SqlConnection("server=" + m_SQLServer +
";uid=" + m_Username + ";pwd=" + m_Password);
8. con.Open();
9. SqlCommand cmd = new SqlCommand();
10. cmd.Connection = con;
11. cmd.CommandType = CommandType.StoredProcedure;
12. cmd.CommandText = "sp_databases";
13. SqlDataReader dr = cmd.ExecuteReader();
14. while (dr.Read())
15. {
16. data.Add(dr.GetString(0));
17. }
18. con.Close();
19. return data;
20. }
21. string[] s;
22. public bool AttachDatabases(string patch)
23. {
24. try
25. {
26. char[] c = { '' };
27. s = patch.Split(c);
28. string ten = "";
29. ten = s[s.Length - 1];
30. string patch1 = "";
31. patch1 = patch.Substring(0, patch.Length - 4);
32. SqlConnection con = new SqlConnection(@"Data Source=" +
m_SQLServer + "; Initial Catalog = master; User=" + m_Username +
";Password=" + m_Password + ";");
33. con.Open();
34. SqlCommand cmd = new SqlCommand();
35. cmd.Connection = con;
36. cmd.CommandText = @"CREATE DATABASE [" + ten + "] ON (
FILENAME = N'" + patch + "' ),( FILENAME = N'" + patch1 + "_log.ldf' )
FOR ATTACH";
37. cmd.ExecuteNonQuery();
38. con.Close();
39. return true;
40. }
41. catch (Exception e)
42. {
43. MessageBox.Show(e.Message.ToString());
44. return false;
45. }
46. }
Bước 6: Ta viết các hàm sự kiện cho form
Để viết các hàm cho sự kiện click đầu tiên ta viết thêm các hàm hỗ trợ khác code như
sau:
1. SQLInformation sql = new SQLInformation();
2. DataProvide data = new DataProvide();
3. OpenFileDialog open = new OpenFileDialog();
4. private bool ktraHople()
5. {
6. if (cbServer.Text == "select")
7. {
8. MessageBox.Show("Please choose a SQL Server", "Khuvv -
NapolySoft", MessageBoxButtons.OK, MessageBoxIcon.Information);
9. cbServer.Focus();
10. return false;
11. }
12.
13. if (txtUser.Text == "")
14. {
15. MessageBox.Show("Please fill into left blank", "Khuvv -
NapolySoft", MessageBoxButtons.OK, MessageBoxIcon.Information);
16. txtUser.Focus();
17. return false;
18. }
19.
20. if (txtPass.Text == "")
21. {
22. MessageBox.Show("Please fill into left blank", "Khuvv -
NapolySoft", MessageBoxButtons.OK, MessageBoxIcon.Information);
23. txtPass.Focus();
24. return false;
25. }
26. return true;
27. }
28. private void loadServer()
29. {
30. listBox1.Items.Clear();
31. SQLInformation.m_Username = txtUser.Text;
32. SQLInformation.m_Password = txtPass.Text;
33. SQLInformation.m_SQLServer = cbServer.SelectedItem.ToString();
34. ArrayList data = sql.GetSQLServersDatabases();
35. for (int i = 0; i < data.Count; i++)
36. {
37. listBox1.Items.Add(data[i]);
38. }
39. listBox1.Show();
40. }
Tiếp theo nhấn đúp vào form để viết code cho sự kiện formload
1. private void Form1_Load(object sender, EventArgs e)
2. {
3. string cb = SystemInformation.ComputerName +
"SQL";//"SQLEXPRESS";
4. listBox1.Hide();
5. bt_dn.Enabled = false;
6. cbServer.Items.Add(cb);
7. }
Tương tự nhấn đúp vào nút Đăng nhập để viết code cho sự kiện Click của nút Đăng
nhập
1. private void bt_dn_Click(object sender, EventArgs e)
2. {
3. if (ktraHople())
4. {
5. loadServer();
6. }
7. }
Kế đến, nhấn đúp vào nút Truy cập để viết code cho sự kiện Click của nút Truy cập
1. private void btn_Load_Click(object sender, EventArgs e)
2. {
3. if (data.OpenConnection())
4. {
5. MessageBox.Show("Truy cập thành công", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Information);
6. data.CloseConnetion();
7. frmHangHoa f_hh = new frmHangHoa();
8. f_hh.Show();
9. }
10. else
11. MessageBox.Show("Truy cập thất bại", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Error);
12. }
Sau đó, nhấn đúp vào nút Thêm CSDL để viết code cho sự kiện Click của nút Thêm
CSDL
1. private void btnAttach_Click(object sender, EventArgs e)
2. {
3. open.Filter = "File (*.mdf)|*.mdf";
4. //Không cho phép chọn nhiều file
5. open.Multiselect = false;
6. //Set caption cho dialog
7. open.Title = "Chon CSDL";
8. //Set tên file mặc định
9. open.FileName = "";
10. //Hiển thị hộp thoại
11. DialogResult dgResult = open.ShowDialog();
12. if (dgResult == DialogResult.OK)
13. {
14. if (sql.AttachDatabases(open.FileName))
15. {
16. MessageBox.Show("Chèn thành công", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Information);
17. listBox1.Items.Clear();
18. bt_dn_Click(sender, e);
19. }
20. else
21. MessageBox.Show("Chèn thành thất", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Information);
22. }
23. }
Cuối cùng là các sự kiện nút xóa,thoát.
1. private void btn_Xoa_Click(object sender, EventArgs e)
2. {
3. txtPass.ResetText();
4. txtUser.ResetText();
5. listBox1.Hide();
6. }
7. private void btn_thoat_Click(object sender, EventArgs e)
8. {
9. Close();
10. }
Bước 7: Vào SQL tạo một cơ sở dữ liệu tên là QLBH vậy là chúng ta có thể kết
nối thành công.
=>Vậy là chương trình chúng ta đã hoàn thành sau đây là một số câu hỏi nhỏ dành cho các bạn.
III. Câu hỏi
1. Câu hỏi Thực hành:
Dựa vào word và video hướng dẫn các bạn hãy viết chương trình kết nối CSDL
dung file cấu hình XML(bài giải trong thư mục DemoKetNoiSQL của nhóm).
2. Câu hỏi lý thuyết:
A. XML là gì? Lợi ích của sử dụng XML trong ngôn ngữ C#?
Trả lời: XML (eXtensible Markup Langue) đóng một vai trò quan trọng
trong .NET. Không chỉ vì .NET cho phép bạn sử dụng XML trong các ứng
dụng của bạn, mà bản thân nó cũng sử dụng XML cho những file cấu hình
và tài liệu mã nguồn, như SOAP, các dịch vụ web và Ado.net. Do đó tìm
hiểu về các xử lý XML trong .Net với ngôn ngữ C# là một điều nên làm
B. Lớp XmlTextWriter dùng để làm gi?
Trả lời: Lớp XmlTextWriter cho phép bạn xuất XML thành một chuỗi,
một file hoặc một đối tượng a TextWriter. Giống như XmlTextReader, nó
là một kiểu forward-only, non-cached. XmlTextWriter có thể cấu hình
cao, cho phép bạn chỉ rõ những thứ như cho phép thục đầu dòng, số thục
đầu dòng, kí tự chỉ dẫn nào được dùng trong các giá trị thuộc tính cho
phép namespace hỗ trợ.
C. Nêu các tên lớp đọc và ghi file XML và giải thích các tên lớp đó
Trả lời:
Tên lớp Giải thích
XmlReader
Một lớp đọc trừu tượng nhanh và non-cached dữ liệu XML.
XmlReader được thiết kế giống như bộ phân tách SAX.
XmlWriter Một lớp viết trừu tượng nhanh và non-cached dữ liệu XML trong
một dòng hoặc định dạng file.
XmlTexReader
Mở rộng của XmlReader. Cung cấp chuỗi truy cập nhanh dữ liệu
XML.
XmlTexWriter Mở rộng của XmlWriter. Phát nhanh các dòng XML.
D. Bạn hãy viết một chuỗi kết nối trong file cấu hình để kết nối C# với CSDL
Trả lời: <connectStr>Data Source=ADMINSQLEXPRESS; Initial
Catalog =QLBH; Integrated Security=SSPI;</connectStr>
E. Hãy nêu cách sử dụng Schema property?
Trả lời: Schemas property của XmlValidatingReader chứa một
XmlSchemaCollection, có thể tìm thấy trong không gian
tên System.Xml.Schema. Tập hợp này tổ chức load lại loaded XSD và
XDR schemas. Nó cực nhanh đặc biệc là khi bạn cần kiểm tra sự hợp lệ
của nhiều tài liệu khác nhau, vì sơ đồ sẽ không được load mỗi khi kiểm
tra. Các bước sử dụng thuộc tính này như sau, bạn tạo một đối tượng
XmlSchemaCollection. Phương thức Add(), nằm trong một
XmlSchemaCollection, có bốn quá tải. Bạn có thể truyền nó cho một đối
tượng xuất phát từ XmlSchema, một đối tượng xuất phát từ
XmlSchemaCollection, một chuỗi không gian tên với chuỗi URI của file
sơ đồ và một đối tượng xuất phát từ XmlReader chứa trong sơ đồ.
F. Để sử dụng XmlTexReader cần khai báo thư viện nào?
Trả lời: using System.Xml;
3. Câu hỏi trắc nghiệm
1. Một lớp viết trừu tượng nhanh và non-cached dữ liệu XML trong một dòng
hoặc định dạng file.
A. XmlReader
B. XmlWriter
C. XmlTexReader
2. Một lớp trừu tượng miêu tả một nút đơn trong một tài liệu XML. Lớp cơ sở
cho các lớp khác trong namespace XML.
A. XmlDocument
B. XmlDataDocument
C. XmlNode
3. Thuộc tính HasAttributes sẽ????
A. Trả về giá trị tr e nế ó b t kì th ộ tính nào òn không sẽ trả về
false.
B. Cho bạn biết có bao nhiêu thuộc tính.
C. Trả về một thuộc tính thông qua tên hoặc chỉ mục.
4. Nếu bạn muốn xác nhận một tài liệu XML, bạn sẽ cần phải sử dụng lớp
XmlValidatingReader. Nó chứa các khả năng giống như XmlTextReader (Cả
hai đều xuất phát từ XmlReader) nhưng XmlValidatingReader có thêm thuộc
tính:
A. ValidationType.
B. Schemas.
C. SchemaType.
D. A,B,C đúng.
MỤC LỤC
PHẦN I: GIỚI THIỆU Error! Bookmark not defined.
I. Giới thiệu ........................................................................................................................... 23
II. Phân công nhóm................................................................................................................. 24
PHẦN II: NỘI DUNG 25
I. Giới thiệu thư viện thực thi................................................................................................ 25
II. Qui trình tạo thư viện thực thi............................................................................................ 26
PHẦN III: KẾT LUẬN 31
PHẦN I: GIỚI THIỆU
I. Giới thiệu
Ngày nay, với sự phát triển mạnh mẽ của khoa học kỹ thuật đã dẫn tới sự ra đời của chiếc
máy tính. Nó đã trở thành phương tiện không thể thiếu trong học tập cũng như giải trí…Phát
triển song song với nó là sự ra đời của nhiều chương trình ứng dụng giúp chúng ta quản lý, điều
khiền các hoạt động công việc, học tập của chúng ta nhanh hơn, hiệu quả và hiện đại hơn. Nhưng
nếu một chương trình không có thư viện thực thi thì sẽ thiếu đi tính chuyên nghiệp trong một
phần mềm quản lý và điều này sẽ gây khó khăn cho người quản lý khi phải quản lý nhiều loại
người dùng khác nhau trong hệ thống, khi phát sinh hư hỏng hay đánh mất dữ liệu thì sẽ rất khó
có thể tìm ra ai đã làm điều đó. Vì lý do trên, nhóm chúng em đã chọn đề tài “Thư viện thực thi
trong hương trình q ản lý”.
Trên cơ sở tự nghiên cứu, phát triển và sự giúp đỡ của thầy Huỳnh Lý Thanh Nhàn đã
đóng góp những ý kiến cho việc nghiên cứu của chúng em cũng như trong các thức lập trình. Bài
báo được viết với mục đích giúp cho các bạn đọc biết về công dụng, hiểu quả của thư viện thực
thi cũng như có thể thiết kế được một phần mềm hiệu quả và sáng tạo với những thư viện thực
thi của chính mình.
II. Phân công nhóm
STT Tên Công việc
1
Huỳnh Minh Phương
DTH114120
Viết code chương trình, quay video, kiểm tra
và tập hợp tài liệu
2
Võ Thị Thanh Hằng
DTH114094
Soạn word (Phần I: Giới thiệu, Phần II: Nội
dung)
3
Lê Trương Yến Khanh
DTH114103
Soạn word(Phần II: Nội dung, Phần III: Kết
luận)
4
Nguyễn Thị Linh Chi
DTH114154
Soạn slide
5
Nguyễn Văn Thành
DTH114193
Soạn slide
PHẦN II: NỘI DUNG
1. Giới thiệ thư viện thực thi
Thư viện thực thi là một file giúp cho người dùng có thể quản lý được những
đối tượng nào đã đăng nhập, đăng xuất ở thời điểm và thực hiện những chức năng nào
trên cơ sở dữ liệu. File thư viện thực thi có thể sử dụng nhiều loại file khác nhau để
lưu trữ nhưng ở đây mình sử dùng file .txt để lưu dữ liệu và truy xuất đơn giản hơn.
Ví dụ: file thực thi text.txt
Cơ chế hoạt động của file thư viện thực thi như sau: Đầu tiên file sẽ lưu lại tên
người dùng đang sử dụng chương trình với quyền tương ứng của họ, thời điểm đối
tượng đăng nhập vào hệ thống và thực hiện trên CSDL nào. Tiếp theo là đối tượng đã
sử dụng chức năng nào trong CSDL đó. Cuối cùng là thời gian đăng xuất.
2. Qui trình tạo thư viện thực thi
Bước 1: Tạo class thư viện với 2 phương thức ghi thông tin đăng nhập và ghi
thông tin đăng xuất.
Bước 2: Tạo phương thức GhiThongTinDangNhap() trong class thư viện.
Phương thức này có 5 đối số truyền vào và đều là kiểu string, phương thức này giúp lưu
lại những thông tin của đối tượng đã đăng nhập vào hệ thống với quyền nào, thời điểm
đăng nhập và thực hiện trên CSDL nào của hệ thống. Các đối số truyền vào có thể thay
đổi tùy vào từng hệ thống khác nhau.
1 public static int tam=0;
2 //khai bao bien cho lop FileStream
3 public FileStream fs;
4 //cac doi so chuyen vao
5 public void GhiThongTinDangNhap(string bang,
string them,string xoa,string luu, string inbang)
6 {
7 //luu file voi ten text va định dang la txt
8 fs = new FileStream("text.txt", FileMode.Append);
9 //khai bien cho lop StreamWriter
10 StreamWriter sw = new StreamWriter(fs);
11 if (tam == 0)
12 {
13 //lay ten nguoi dung tu lop DN_taikhoan va luu lai
14 sw.WriteLine("Người dùng: " + DN_taikhoan.ten);
15 //lay quyen nguoi dung tu lop DN_taikhoan và luu lai
16 sw.WriteLine("Quyền:" + DN_taikhoan.quyen);
17 //thoi gian dang nhap vao he thong
18 sw.WriteLine("Đăng nhập: " + DateTime.Now);
19 //doi so bang duoc truyen vao
20 sw.WriteLine("Thao tác trên bảng: " + bang);
21 }
22 if (tam == 1)
23 {
24 //luu cac doi so duoc truyen vao
25 sw.WriteLine("Thực hiện chức năng: " + them);
26 sw.WriteLine("Thực hiện chức năng: " + xoa);
27 sw.WriteLine("Thực hiện chức năng: " + luu);
28 sw.WriteLine("Thực hiện chức năng: " + inbang);
29 }
30 sw.WriteLine(".................................n");
31 sw.Close();
32 fs.Close();
33 }
Bước 3: Tạo phương thức GhiThongTinDangXuat() trong class thư viện. Phương
thức này không có đối số truyền vào, nó dùng để lưu lại thời gian đăng xuất của người
dùng sau khi đăng nhập và thực hiện các thao tác trên CSDL.
1 public void GhiThongTinDangXuat()
2 {
3 //luu file voi ten text va định dang la txt
4 fs = new FileStream("text.txt", FileMode.Append);
5 StreamWriter sw = new StreamWriter(fs);
6 //lay ten nguoi dung tu lop DN_taikhoan va luu lai
7 sw.WriteLine("Người dùng: " + (string)DN_taikhoan.ten);
8 sw.WriteLine("Đăng xuất: " + DateTime.Now);
9 sw.WriteLine("@--------------------------@n");
10 sw.Close();
11 fs.Close();
12 }
Bước 4: Tạo form thư viện để hiển thị file thực thi.
Bước 5: Tạo các control trong form.
Trong toolbox, ta kéo thả button và richtextbox vào form thư viện và đổi
tên thành btn_mofile và rtb_thuvien, cụ thể như sau:
Bước 6: Trong sự kiện click của button để thực hiện đổ dữ liệu từ file text.txt vào
richtextbox ta gõ dòng code sau:
1 private void btn_mofile_Click(object sender, EventArgs e)
2 {
3 //showdialog cho nguoi dung lua chon file can mo
4 if (openFileDialog1.ShowDialog() == DialogResult.OK)
5 {
6 rtb_thuvien.Text = File.ReadAllText("text.txt");
7 }
8 }
Bước 7: Tạo form main.
Bước 8: Tạo 1 buton để khi click vào sẽ hiển thị form thư viện.
Và khi ckick vào sẽ hiển thị form thư viện ta đã tạo trước đó.
1 fm_ThuVien f_tv;
2 private void mi_thuvien_ItemClick(object
sender,ItemClickEventArgs e)
3 {
4 if (f_tv == null || f_tv.IsDisposed == true)
5 {
6 //cac doi so truyen vao phuong thuc GhiThongTinDangNhap()
7 //tv la bien cua lop thu vien
8 tv.GhiThongTinDangNhap("THƯ VIỆN THỰC THI", null, null,
null,null);
9 f_tv = new fm_ThuVien();
10 f_tv.MdiParent = this;
11 f_tv.Show();
12 }
13 }
Bước 9: Gọi phương thức ghi thông tin đăng nhập hoặc ghi thông tin đăng xuất
trong form main, tùy vào yêu cầu của hệ thống mà ta sẽ gọi 2 phương thức này ở đâu và
các đối số truyền vào sẽ là gì?
1 private void mi_dangxuat_ItemClick(object sender,
ItemClickEventArgs e)
2 {
3 //có thể thêm các dòng code xữ lý thêm
4 . . . . . . . . . . . . . . . . .
5 tv1.GhiThongTinDangXuat();
6 . . . . . . . . . . . . . . . . .
7 }
Bước 10: Ngoài ra chúng ta có thể lưu các thao tác thêm, xóa, sửa, in của người
dùng khi thực hiện trên hệ thống vào file.
1 private void bnt_them_Click(object sender, EventArgs e)
2 {
3 //có thể thêm các dòng code xữ lý thêm
4 . . . . . . . . . . . .
5 tv.GhiThongTinDangNhap(null, "Thêm(Phòng)",null,null,null);
6 . . . . . . . . . . . . . . .
7 }
Tương tự cho các thao tác xóa, sửa, in.
PHẦN III: KẾT LUẬN
Qua bài viết, nhóm chúng em hy vọng sẽ giúp bạn đọc phần nào hiểu được cách
xây dựng được một thư viện thực thi.
Cuối cùng, chân thành cảm ơn đến thầy Huỳnh Lý Thanh Nhàn đã tạo điều kiện,
giúp đỡ nhóm trong quá trình nghiên cứu và phát triển đề tài. Mặc dù chương trình vẫn
chưa hoàn thiện như nhóm em mong muốn, nhóm chúng em mong đươc sự góp ý của
thầy và các bạn để xây dựng chương trình tốt hơn.
Xin chân thành cảm ơn !
Mục Lục
I. MÔ TẢ VÀ LỢI ÍCH CỦA ĐỀ TÀI. ...............................................................................................0
II. DANH SÁCH CÁC CHỨC NĂNG CHÍNH TRONG CHƯƠNG TRÌNH. ...............................1
1. Hệ thống...........................................................................................................................................1
2. Danh mục.........................................................................................................................................2
3. Nghiệp vụ. ........................................................................................................................................3
4. Tìm kiếm. .........................................................................................................................................3
5. Báo cáo – Thống kê. ........................................................................................................................3
6. Trợ gúp.............................................................................................................................................3
III. KHAI BÁO NGƯỜI DÙNG SỬ DỤNG VÀ PHÂN QUYỀN. ....................................................4
1. anh sá h người dùng và chứ năng được sử dụng tương ứng..................................................4
2. Thiết kế bảng người dùng (CSDL). ...............................................................................................5
3. Thực hiện phân quyền theo mô hình ba lớp. ................................................................................5
IV. HƯỚNG DẪN CÁC BƯỚC PHÂN QUYỀN CHI TIẾT...........................................................20
Bước 1:Thiết kế quan hệ NGUOIDUNG................................................................................................20
Bước 2:Thiết kế FormMain.....................................................................................................................21
Bước 3:Thiết kế form đăng nhập.............................................................................................................25
Bước 4:Xây dựng lớp người dùng DataLayer.........................................................................................28
Bước 5:Xây dựng lớp BusinessLayer. ....................................................................................................30
Bước 6: Viết code cho DangNhap.cs ( Lớp GUI)...................................................................................32
Bước 7: Phân quyền cho FornMain.cs ( Lớp GUI).................................................................................32
V. BẢNG PHÂN CÔNG........................................................................................................................35
VI. BÀI TẬP THỰC HÀNH...............................................................................................................35
VII. KẾT LUẬN....................................................................................................................................36
I. MÔ TẢ VÀ LỢI ÍCH CỦA ĐỀ TÀI.
1. Mô tả đề tài.
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 1 | 262
‒ Ở hầu hết các chương trình quản lý, để đảm bảo tính an toàn cho dữ
liệu cũng như tránh tình trạng ai cũng sủ dụng được những chức năng mang
quyền hạn cao, vấn đề đặt ra cho người lập trình là phải phân cấp tất cả các
chức năng trong chương trình, với mỗi người dùng đăng nhập vào hệ thống thì
họ có những quyền hạn để sử dụng chương trình, với mỗi quyền hạn tương
ứng với những chức năng cụ thể.
‒ Với đề tài trên, nhóm tiến hành phân quyền trên chương trình quản lý
nhân sự của một công ty (tự xây dựng) và tiến hành phân quyền người dùng
trên chính phần mềm này.
‒ Trong chương trình chúng ta sẽ có danh sách những người dùng sau
đây :
+ Người dùng Admin (Giám Đốc)
+ Người dùng Nhân Viên Quản Lý
+ Người dùng Nhân Viên
‒ Với người dùng Admin (Giám Đốc) : người dùng này sẽ có toàn
quyền, có nghĩa là Giám Đốc sẽ sử dụng được tất cả các chức năng trong
chương chình quản lý nhân sự.
‒ Với quyền là nhân viên quản lý thì người dùng này có quyền sử dủng
các chức năng quản lý như : quản lý nhân viên, quàn lý phòng ban, quản lý
lương của nhân viên, ..v.v.
‒ Quyền nhân viên bình thường thì hầu như chỉ được sử dụng các chức
năng cơ bản của hệ thống.
‒ Công việc phân quyền người dùng được thực hiện trên ngôn ngữ lập
trình cấp cao C# . Với mỗi loại người dùng sau khi đăng nhập vào hệ thống sẽ
lấy quyền người dùng dựa vào tên đăng nhập và cuối cùng là cho các tắt/bật
các chức năng tương ứng với quyền người dùng.
2. Mụ đí h ủa phân quyền người dùng.
Việc phân quyền ngày nay không còn nhằm chỉ là phân công công việc.
Phân quyền ngày nay còn có nhiều mục đích. Những mục đích của việc ủy
quyền, tránh thoái thác trách nhiệm của những nhân sự trong công ty :
+ Phân rõ chức năng và nhiệm vụ của mỗi nhân viên
+ Xác lập quyền hạn, trách nhiệm với tửng đầu công việc
II. DANH SÁCH CÁC CHỨC NĂNG CHÍNH TRONG CHƯƠNG TRÌNH.
1. Hệ thống.
STT Chứ năng Mô tả
1 Đăng nhập Cho phép người dùng sử dụng tài khoảng
của mình đăng nhập để giao tiếp với úng
dụng
2 Đăng xuất Thoát khỏi tài khoảng của người dùng đang
sử dụng chương trình
3 Đổi mật khẩu Cho phép người dùng đổi mật khẩu của tài
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 2 | 262
khoảng hiện tại đang đăng nhập vào hệ
thống.
4 Quản lý người dùng Cho phép nhà quản người dùng admin thực
hiện thêm xoá sửa thông tin người dùng.
5 Sao lưu dữ liệu Sao lưu dữ liệu của cơ sở dữ liệu để tránh
trường hợp hệ thống bị sự cố làm mất dữ liệu
của CSDL.
6 Phục hồi dữ liệu Khôi phục lại dữ liệu dựa vào mẫu tin đã
dược sao lưu trước đó. Phục hồi lại nguồn dữ
liệu có trạng thái lúc được sao lưu
7 Thoát Thoát khỏi ứng dụng (tắt chương trình)
2. Danh mục.
STT Chứ năng Mô tả
1 Danh mục Nhân viên Hiển thị form Nhân Viên cho phép nhà quản
trị thực hiện xoá, sửa thông tin nhân viên
trong công ty hoặc thêm một nhân viên mới
vào danh sách nhân viên của công ty.
2 Danh mục Phòng ban Cho phép người dùng là nhà quản trị quản lý
danh mục các phòng ban trong công ty.
3 Danh mục Chức vụ Cho phép người dùng là nhà quản trị quản lý
danh sách các chức vụ có trong công ty.
4 Danh mục Chuyên
môn
Cho phép người dùng là nhà quản trị quản lý
danh mục các chuyên môn của mỗi nhân
viên trong công ty.
5 Danh mục Trình độ Cho phép người dùng là nhà quản trị quản lý
danh mục trình độ trong công ty.
6 Danh mục Hợp đồng Cho phép người dùng là nhà quản trị quản lý
danh mục các hợp đồng trong công ty.
7 Danh mục Khen
thưởng
Cho phép người dùng là nhà quản trị quản lý
danh sách nhân viên được khen thưởng trong
công ty.
8 Danh mục Kỹ luật Cho phép người dùng là nhà quản trị quản lý
danh mục các phòng ban trong công ty.
9 Danh mục Bảo hiểm Cho phép người dùng là nhà quản trị quản lý
danh mục các bảo hiểm có trong công ty của
mỗi nhân viên.
10 Danh mục Nghỉ phép Cho phép người dùng là nhà quản trị quản lý
danh sách nhân viên đã nghỉ phép ban trong
công ty.
11 Danh mục Thân nhân Cho phép người dùng là nhà quản trị quản lý
danh mục các thân nhân của mỗi nhân viên
trong công ty.
12 Danh mục Dân tộc Cho phép người dùng là nhà quản trị quản lý
danh mục dân tộc trong công ty.
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 3 | 262
13 Danh mục Tôn giáo Cho phép người dùng là nhà quản trị quản lý
danh mục tôn giáo trong công ty.
3. Nghiệp vụ.
STT Chứ năng Mô tả
1 Quản lý Nhân Viên Quản lý thông tin nhân viên trong công ty.
2 Chuyển phòng ban Giải quyết chuyển phòng ban cho các nhân
viên khi được thay đổi chức vụ
3 Quản lý Lương Cho phép người dùng đổi mật khẩu của tài
khoảng hiện tại đang đăng nhập vào hệ
thống.
4 Giải quyết ứng lương Cho phép nhà quản người dùng admin thực
hiện thêm xoá sửa thông tin người dùng.
4. Tìm kiếm.
STT Chứ năng Mô tả
1 Tìm kiếm Nhân Viên Cho phép tìm kiếm thông tin của tất cả nhân
viên có trong công ty.
2 Tìm kiếm Thân nhân Thực hiện tìm kiếm thông tin thân nhân của
mỗi nhân viên thông qua mã của nhân viên
đó.
3 Tìm kiếm Bảng Lương Cho phép tìm kiếm bảng lương tháng của
các nhân viên, bảng lương theo quý hoặc
theo năm của các nhân viên, hay bảng lương
cá nhân của mỗi nhân viên.
5. Báo cáo – Thống kê.
STT Chứ năng Mô tả
1 Lập Bảng kỹ luật Cho phép xem, thêm, xoá, sửa hoặc in bảng
danh sách nhân viên bị kỹ luật.
2 Lập Bảng nghỉ phép Thực hiện xem, thêm, xoá, sửa hoặc in bảng
danh sách nhân viên được giải quyết nghỉ
phép.
3 Lập Bảng danh sách
khen thưởng
Cho phép xem, thêm, xoá, sửa hoặc in bảng
danh sách nhân viên được khen thưởng.
4 Lập Bảng lương Thực hiện xem, thêm, xoá, sửa bảng lương
tháng của các nhân viên, bảng lương theo
quý hoặc theo năm của các nhân viên, hay
bảng lương cá nhân của mỗi nhân viên.
6. Trợ gúp.
STT Chứ năng Mô tả
1 Thông tin chương trình Hiển thị form chứa thông tin của chương
trình.
2 Hướng dẫn sử dụng Xuất hiện file hướng dẫn sử dụng chương
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 4 | 262
trình.
III. KHAI BÁO NGƯỜI DÙNG SỬ DỤNG VÀ PHÂN QUYỀN.
1. anh sá h người dùng và chứ năng được sử dụng tương ứng.
STT Tên người dùng Danh sách chứ năng được sử dụng
1 Giám đốc ( Admin) Sử dụng được tất cả các chức năng của chương
trình
2 Nhân viên quản lý Đăng nhập
Đăng xuất
Đổi mật khẩu
Thoát
Danh mục Nhân viên
Danh mục Phòng ban
Danh mục Chức vụ
Danh mục Chuyên môn
Danh mục Trình độ
Danh mục Hợp đồng
Danh mục Khen thưởng
Danh mục Danh mục Kỹ luật
Danh mục Bảo hiểm
Danh mục Nghỉ phép
Danh mục Thân nhân
Danh mục Dân tộc
Danh mục Tôn giáo
Quản lý Nhân Viên
Chuyển phòng ban
Quản lý Lương
Giải quyết ứng lương
Tìm kiếm Nhân Viên
Tìm kiếm Thân nhân
Tìm kiếm Bảng Lương
Lập Bảng kỹ luật
Lập Bảng nghỉ phép
Lập Bảng danh sách khen thưởng
Lập Bảng lương
Thông tin chương trình
Hướng dẫn sử dụng
3 Nhân viên Đăng nhập
Đăng xuất
Đổi mật khẩu
Thoát
Danh mục Nhân viên
Danh mục Phòng ban
Danh mục Chức vụ
Danh mục Chuyên môn
Danh mục Trình độ
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 5 | 262
Danh mục Hợp đồng
Danh mục Khen thưởng
Danh mục Danh mục Kỹ luật
Danh mục Bảo hiểm
Danh mục Nghỉ phép
Danh mục Thân nhân
Danh mục Dân tộc
Danh mục Tôn giáo
Thông tin chương trình
Hướng dẫn sử dụng
2. Thiết kế bảng người dùng (CSDL).
STT Thuộc tính Kiểu dữ liệu Mô tả
1 TENDN Varchar(50) Tên đăng nhập
2 MATKHAU Varchar(50) Mật khẩu là dãy ký tự
không quy định về chiều
dài để tính bảo mật cao
hơn.
3 QUYEN Tinyint Quyền được quy định là
các số nguyên, được đánh
số từ 1 tới n (n là tổng số
quyền có trong công ty)
4 MOTAQUYEN Nvarchar(50) Chi tiết hoá các quyền
người dùng đăng nhập. hệ
thống hiện tại có các
quyền sau : Admin, nhân
viên quản lý, nhân viên
 Bảng người dùng trong mô hình quan hệ :
Hình 1
3. Thực hiện phân quyền theo mô hình ba lớp.
a) Phân quyền chi tiết trên form chính (frmMain).
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 6 | 262
‒ Với quyền Admin (Giám Đốc).
+ Danh sách các control của Ribon:
STT Tên control Trạng thái
Bật Tắt
1 tsbDangNhap 
2 tsbDangXuat 
3 tsbDoiMatKhau 
4 tsbQuanLyNguoiDung 
5 tsbThoat 
6 tsbSaoLuuDL 
7 tsbPhucHoiDL 
8 rgbiSkins 
9 tsbNhanVien 
10 tsbPhongBan 
11 tsbChucVu 
12 tsbChuyenMon 
13 tsbTrinhDo 
14 tsbHopDong 
15 tsbKhenThuong 
16 tsbKyLuat 
17 tsbLichCongTac 
18 tsbBaoHiem 
19 tsbNghiPhep 
20 tsbThanNhan 
21 tsbDanToc 
22 tsbTonGiao 
23 tsbNV_NhanVien 
24 tsbChuuyenPhongBan 
25 tsbLuong 
26 tsbUngLuong 
27 tsbTK_NhanVien 
28 tsbTK_ThanNhan 
29 tsbTK_Luong 
30 tsbBangKyLuat 
31 tsbBangNghiPhep 
32 tsbBangKhenThuong 
33 tsbBangLuong 
34 tsbThongTinPM 
35 tsbHuongDanSuDung 
+ Hình ảnh mô tả:
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 7 | 262
Hình 2.1 : Admin – Hệ thống
Hình 2.2 : Admin – Danh Mục
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 8 | 262
Hình 2.3 : Admin – Nghiệp Vụ
Hình 2.3 : Admin – Tìm Kiếm
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 9 | 262
Hình 2.4 : Admin – Báo Cáo –Thống Kê
Hình 2.4 : Admin – Trợ Giúp
‒ Quyền Nhân viên quản lý
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 10 | 262
+ Danh sách các control của Ribon:
STT Tên control Trạng thái
Bật Tắt
1 tsbDangNhap 
2 tsbDangXuat 
3 tsbDoiMatKhau 
4 tsbQuanLyNguoiDung 
5 tsbThoat 
6 tsbSaoLuuDL 
7 tsbPhucHoiDL 
8 rgbiSkins 
9 tsbNhanVien 
10 tsbPhongBan 
11 tsbChucVu 
12 tsbChuyenMon 
13 tsbTrinhDo 
14 tsbHopDong 
15 tsbKhenThuong 
16 tsbKyLuat 
17 tsbLichCongTac 
18 tsbBaoHiem 
19 tsbNghiPhep 
20 tsbThanNhan 
21 tsbDanToc 
22 tsbTonGiao 
23 tsbNV_NhanVien 
24 tsbChuuyenPhongBan 
25 tsbLuong 
26 tsbUngLuong 
27 tsbTK_NhanVien 
28 tsbTK_ThanNhan 
29 tsbTK_Luong 
30 tsbBangKyLuat 
31 tsbBangNghiPhep 
32 tsbBangKhenThuong 
33 tsbBangLuong 
34 tsbThongTinPM 
35 tsbHuongDanSuDung 
+ Hình ảnh mô tả:
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 11 | 262
Hình 3.1 :Nhân Viên QL – Hệ thống
Hình 3.2 : Nhân Viên QL – Danh Mục
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 12 | 262
Hình 3.3 : Nhân Viên QL –Nghiệp Vụ
Hình 3.4 :Nhân Viên QL – Tìm kiếm
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 13 | 262
Hình 3.5 : Nhân Viên QL – Báo Cáo – Thống Kê
Hình 3.6 : Nhân Viên QL – Trợ Giúp
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 14 | 262
‒ Quyền Nhân viên.
+ Danh sách các control của Ribon:
STT Tên control Trạng thái
Bật Tắt
1 tsbDangNhap 
2 tsbDangXuat 
3 tsbDoiMatKhau 
4 tsbQuanLyNguoiDung 
5 tsbThoat 
6 tsbSaoLuuDL 
7 tsbPhucHoiDL 
8 rgbiSkins 
9 tsbNhanVien 
10 tsbPhongBan 
11 tsbChucVu 
12 tsbChuyenMon 
13 tsbTrinhDo 
14 tsbHopDong 
15 tsbKhenThuong 
16 tsbKyLuat 
17 tsbLichCongTac 
18 tsbBaoHiem 
19 tsbNghiPhep 
20 tsbThanNhan 
21 tsbDanToc 
22 tsbTonGiao 
23 tsbNV_NhanVien 
24 tsbChuuyenPhongBan 
25 tsbLuong 
26 tsbUngLuong 
27 tsbTK_NhanVien 
28 tsbTK_ThanNhan 
29 tsbTK_Luong 
30 tsbBangKyLuat 
31 tsbBangNghiPhep 
32 tsbBangKhenThuong 
33 tsbBangLuong 
34 tsbThongTinPM 
35 tsbHuongDanSuDung 
+ Hình ảnh mô tả:
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 15 | 262
Hình 4.1 : Nhân Viên – Hệ Thống
Hình 4.2 : Nhân Viên – Danh Mục
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 16 | 262
Hình 4.3 :Nhân Viên –Nghiệp Vụ
Hình 4.4 :Nhân Viên –Tìm Kiếm
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 17 | 262
Hình 4.5 :Nhân Viên –Báo Cáo-Thống Kê
Hình 4.6 : Nhân Viên – Trợ Giúp
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 18 | 262
b) Form đăng nhập.
‒ Hình ảnh:
Hình 5 : Form đăng nhập
‒ Danh sách các control :
STT Control
1 reflabDangNhap
2 labTenDangNhap
3 txtTenDangNhap
4 labMatKhau
5 txtMatKhau
6 btnDongY
7 btnHuy
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 19 | 262
‒ Các xử lý :
STT Tên xử lý Mô tả
1 LayQuyen(string,string) Hàm trả về là một giá trị kiểu int thuộc 1
trong các giá trị sau (1,2,3) tương ứng với
các quyền đăng nhập vào hệ thống, hai
tham số truyền vào : txtTenDangNhap.Text
và txtMatKhau.Text.
2 KTDN(string) Hàm trả về kiều bool, có chức năng kiểm
tra sự tồn tại của tên đăng nhập. Tham số
duy nhất truyền vào là
txtTenDangNhap.Text. Nếu tên đăng nhập
hợp lệ hàm trả về giá trị là true, ngược lại
sẽ có giá trị là false.
3 KTMK(string, string) Hàm trả về kiểu bool, kiểm tra tính đúng
đắn của mật khẩu dựa vào tên đăng nhập
tương ứng, hai tham số truyền vào :
txtTenDangNhap.Text và
txtMatKhau.Text. Nếu mật khẩu hợp lệ
hàm trả về giá trị là true, ngược lại sẽ có
giá trị là false.
4 btnDongY_Click
(object, EventArgs)
Hàm không có giá trị trả về (void), hàm sử
dụng hai hàm thành viên khác :
KTDN(string) và KTMK(string, string) nếu
một trong hai hàm này có giá trị thì xuất
hiện thông báo lỗi tương ứng. Nếu cả hai
hàm thành viên đều có giá trị là true thì
Form Main sẽ được gọi, đồng thời thông
tin cùa hai textbox sẽ được lưu lại.
c) Người dùng BusinessLayer.
‒ Hàm kiểm tra tên đăng nhập: Hàm trả về kiều bool, có chức năng
kiểm tra sự tồn tại của tên đăng nhập. Tham số duy nhất truyền kiểu
string. Nếu tên đăng nhập hợp lệ hàm trả về giá trị là true, ngược lại sẽ
có giá trị là false.
‒ Hàm kiểm tra mật khầu dựa trên tên đăng nhập: Hàm trả về kiểu bool,
kiểm tra tính đúng đắn của mật khẩu dựa vào tên đăng nhập tương
ứng, hai tham số truyền vào kiểu string. Nếu mật khẩu hợp lệ hàm trả
về giá trị là true, ngược lại sẽ có giá trị là false.
‒ Hàm lấy quyền người dùng: Hàm trả về là một giá trị kiểu int thuộc 1
trong các giá trị sau (1,2,3) tương ứng với các quyền đăng nhập vào
hệ thống, hai tham số truyền vào kiểu string.
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 20 | 262
d) Người dùng DataLayer.
‒ Hàm kiểm tra tên đăng nhập: Hàm trả về kiều bool, có chức năng
kiểm tra sự tồn tại của tên đăng nhập. Tham số duy nhất truyền kiểu
string. Nếu tên đăng nhập hợp lệ hàm trả về giá trị là true, ngược lại sẽ
có giá trị là false.
‒ Hàm kiểm tra mật khầu dựa trên tên đăng nhập: Hàm trả về kiểu bool,
kiểm tra tính đúng đắn của mật khẩu dựa vào tên đăng nhập tương
ứng, hai tham số truyền vào kiểu string. Nếu mật khẩu hợp lệ hàm trả
về giá trị là true, ngược lại sẽ có giá trị là false.
‒ Hàm lấy quyền người dùng: Hàm trả về là một giá trị kiểu int thuộc 1
trong các giá trị sau (1,2,3) tương ứng với các quyền đăng nhập vào
hệ thống, hai tham số truyền vào kiểu string.
IV. HƯỚNG DẪN CÁC BƯỚC PHÂN QUYỀN CHI TIẾT
Bước 1:Thiết kế quan hệ NGUOIDUNG.
a) Code sql cho bảng người dùng :
Hình 6.1
b) Hình ảnh bảng người dùng trong CSDL
Hình 6.2
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 21 | 262
c) Nhập liệu cho bảng người dùng :
Hình 6.3
Bước 2:Thiết kế FormMain.
a) Tạo Project mới:
Mở Visual Studio chọn File -> New ->Project(hoặc Create Project)
Hình 7.1
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 22 | 262
Hình 7.2
Thực hiện 3 bước như hình 7.3
Chọn
vào đây
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 23 | 262
Hình 7.3
Ta được giao diện FormMain như sau :
Hình 7.4: Giao diện chính sao khi tạo
b) Chỉnh sửa lại theo mục đích của bản thân
Chọn vào Ribon -> click vào mũi tên bên phải -> Chọn RunDesign
1
2
3
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 24 | 262
Chỉnh sửa tên RibonPage
Hình 7.5
Sửa caption các button
Hình 7.6
Sửa Name cho Button
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 25 | 262
Hình 7.7
c) Sau khi chỉnh sửa tất cả ta được FormMain hoàn chỉnh như sau :
Hình 7.8 :Form Main
Bước 3:Thiết kế orm đăng nhập.
a) Vào cửa sổ Solution click chuột phải vào tên Solutoin -> add-
>Windows Form…
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 26 | 262
Hình 8.1: Chèn Form đăng nhập
Hình 8.2 Đặt tên cho form mới
b) Kéo các Control vào từ cửa sổ ToolBox
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 27 | 262
Hình 8.3 Control ReflectionImage
Hình 8.3 Chọn hình cho Control ReflectionImage
Hình 8.4 Control ReflectionLabel
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 28 | 262
Hình 8.4 Chỉnh sửa thuộc tính cho Control ReflectionLabel
Hình 8.5 Control Label,Button, Textbox
Bước 4:Xây dựng lớp người dùng DataLayer.
a) Chèn class người dùng DataLayer
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 29 | 262
Hình 9.1 Chèn class Người dùng
b) Hàm kiểm tra tên đăng nhập
Hình 9.2
c) Hàm kiểm tra mật khẩu
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 30 | 262
Hình 9.3
d) Hàm lấy quyền
Hình 9.4
Bước 5:Xây dựng lớp BusinessLayer.
a) Chèn class người dùng BusinessLayer
Hình 10.1
b) Hàm kiểm tra tên đăng nhập
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 31 | 262
Hình 10.2
c) Hàm kiểm tra mật khẩu.
Hình 10.3
d) Hàm lấy quyền người dùng.
Hình 10.4
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 32 | 262
Bước 6: Viết code cho DangNhap.cs ( Lớp GUI).
Bước 7: Phân quyền cho FornMain.cs ( Lớp GUI).
a) Quyền giám đốc( hàm Giamdoc() kiểu void)
STT Tên control Enable
true false
1 tsbDangNhap 
2 tsbDangXuat 
3 tsbDoiMatKhau 
4 tsbQuanLyNguoiDung 
5 tsbThoat 
6 tsbSaoLuuDL 
7 tsbPhucHoiDL 
8 rgbiSkins 
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 33 | 262
9 tsbNhanVien 
10 tsbPhongBan 
11 tsbChucVu 
12 tsbChuyenMon 
13 tsbTrinhDo 
14 tsbHopDong 
15 tsbKhenThuong 
16 tsbKyLuat 
17 tsbLichCongTac 
18 tsbBaoHiem 
19 tsbNghiPhep 
20 tsbThanNhan 
21 tsbDanToc 
22 tsbTonGiao 
23 tsbNV_NhanVien 
24 tsbChuuyenPhongBan 
25 tsbLuong 
26 tsbUngLuong 
27 tsbTK_NhanVien 
28 tsbTK_ThanNhan 
29 tsbTK_Luong 
30 tsbBangKyLuat 
31 tsbBangNghiPhep 
32 tsbBangKhenThuong 
33 tsbBangLuong 
34 tsbThongTinPM 
35 tsbHuongDanSuDung 
b) Quyền nhân viên quản lý(Hàm NhanVienQL() kieu void)
STT Tên control Enable
true false
1 tsbDangNhap 
2 tsbDangXuat 
3 tsbDoiMatKhau 
4 tsbQuanLyNguoiDung 
5 tsbThoat 
6 tsbSaoLuuDL 
7 tsbPhucHoiDL 
8 rgbiSkins 
9 tsbNhanVien 
10 tsbPhongBan 
11 tsbChucVu 
12 tsbChuyenMon 
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 34 | 262
13 tsbTrinhDo 
14 tsbHopDong 
15 tsbKhenThuong 
16 tsbKyLuat 
17 tsbLichCongTac 
18 tsbBaoHiem 
19 tsbNghiPhep 
20 tsbThanNhan 
21 tsbDanToc 
22 tsbTonGiao 
23 tsbNV_NhanVien 
24 tsbChuuyenPhongBan 
25 tsbLuong 
26 tsbUngLuong 
27 tsbTK_NhanVien 
28 tsbTK_ThanNhan 
29 tsbTK_Luong 
30 tsbBangKyLuat 
31 tsbBangNghiPhep 
32 tsbBangKhenThuong 
33 tsbBangLuong 
34 tsbThongTinPM 
35 tsbHuongDanSuDung 
c) Quyền nhân viên
STT Tên control Enable
true false
1 tsbDangNhap 
2 tsbDangXuat 
3 tsbDoiMatKhau 
4 tsbQuanLyNguoiDung 
5 tsbThoat 
6 tsbSaoLuuDL 
7 tsbPhucHoiDL 
8 rgbiSkins 
9 tsbNhanVien 
10 tsbPhongBan 
11 tsbChucVu 
12 tsbChuyenMon 
13 tsbTrinhDo 
14 tsbHopDong 
15 tsbKhenThuong 
16 tsbKyLuat 
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 35 | 262
17 tsbLichCongTac 
18 tsbBaoHiem 
19 tsbNghiPhep 
20 tsbThanNhan 
21 tsbDanToc 
22 tsbTonGiao 
23 tsbNV_NhanVien 
24 tsbChuuyenPhongBan 
25 tsbLuong 
26 tsbUngLuong 
27 tsbTK_NhanVien 
28 tsbTK_ThanNhan 
29 tsbTK_Luong 
30 tsbBangKyLuat 
31 tsbBangNghiPhep 
32 tsbBangKhenThuong 
33 tsbBangLuong 
34 tsbThongTinPM 
35 tsbHuongDanSuDung 
V. BẢNG PHÂN CÔNG
STT Tên công việc Thành viên thực hiện
1 Viết báo cáo(Word) Nguyễn Thiện An
2 Slide báo cáo(Powerpoint) Khưu Văn Hiền
3 Quay video hướng dẫn Nguyễn Thiện An
4 Viết demo(Source code) Khưu Văn Hiền
VI. BÀI TẬP THỰC HÀNH
Câu 01: Phân quyền người dùng có những lợi ích gì?
a) Phân rõ chức năng và nhiệm vụ của mỗi nhân viên
b) Xác lập quyền hạn cho từng nhân sự
c) Ủy quyền, tránh thoái thác trách nhiệm, giúp dữ liệu có tính bảo mật
hơn
d) Tất cả các ý trên
Câu 02: Danh sách các chứ năng ủa hệ thống hiện tại gồm bao nhiêu
danh mục?
a) 5
b) 6
c) 7
d) 9
Câ 03: Chương trình được nhóm chọn để phân quyền có tên :
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 36 | 262
a) Quản lý nhân viên
b) Quản lý tiền lương
c) Quản lý nhân sự
d) Quản lý nhà hàng
Câ 04: anh sá h người dùng của hệ thống hiện tại
a) 2
b) 3
c) 4
d) 5
Câu 05: Nhóm thực hiện phân quyền trên mô hình nào?
a) Trực tiếp
b) Hai lớp
c) Ba lớp
d) Bốn lớp
Câu 06: Bảng người dùng trong CSDL của nhóm thực hiện gồm các
trường nào?
a) STT, TENDN, MATKHAU, QUYEN, MOTAQUYEN
b) TENDN, MATKHAU, QUYEN, MOTAQUYEN, CHITIET
c) TENDN, MATKHAU, QUYEN, MOTAQUYEN
d) TENNGUOIDUNG, TENDN, MATKHAU, QUYEN,
MOTAQUYEN
Câu 07: Có m y phương thứ được thực hiện ơ tầng GUI?
a) 5
b) 6
c) 7
d) 9
VII. KẾT LUẬN.
‒ Thực hiện phân quyền người dùng trên môi trường C# .
‒ Ứng dụng trên chương trình quản lý nhân sự cho một công ty(ảo).
Nhóm chúng em xin gửi lời cám ơn chân thành tới thầy Huỳnh Lý Thanh Nhàn-
người trực tiếp hướng dẫn chúng em hoàn thành bài báo cáo này.
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 37 | 262
I.Giới thiệu sơ lược về Devexpress
Trong loạt bài về DevExpress tôi chủ yếu tập trung vào XPO và XAF, đây được xem là
xương sống của DevExpress.
DevExpress là một Framework được viết cho nền tảng .NET Framework. Nó cung cấp
các control và công nghệ để phục vụ cho quá trình phát triển phần mềm. Thành phần của
DevExpress gồm:
WinForms Controls: Cung cấp các control cho WinForms.
o ASP.NET Controls: Cung cấp các control cho WebForms.
o WPF Controls: Cung cấp các control cho WPF.
o Silverlight Controls: Cung cấp các control cho Silverlight.
o XtraCharts: Control cung cấp các loại biểu đồ.
o XtraReports: Cung cấp các control tạo báo cáo.
o XPO: Cung cấp môi trường làm việc với database.
o XAF: Một công nghệ mới giúp việc phát triển phần mềm một cách nhanh chóng
Trải qua hàng loạt phiên bản, DevExpress đã từng bước được nâng cấp, hoàn thiện và
thêm mới rất nhiều chức năng. Với phiên bản DevExpress 12.2 hiện tại, bạn đã được cung
cấp những công cụ, môi trường tuyệt vời để biến những ý tưởng của bạn thành hiện thực
một cách nhanh chóng, dễ dàng.
II.Hướng dẫn cài đặt Devexpress 12.2.7 và cách Crack phần mềm.
- Đầu tiên,bạn phải download phần mềm Devexpress phiên bản 12.2.7 về máy,nhớ
download thêm phần có tên là: DevExpress.Registration.Setup.v12.2.7.msi,vì đây là file
crack sau khi ta cài xong Devexpress,sẽ chạy file này để crack phần mềm.
- Sau khi download xong ,bạn chạy file DXperience-12.2.7.exe để tiến hành cài đặt
+ Lưu ý :trước khi cài,bạn phải tắt chương trình visual studio đi.
+ Khi cài đặt,màn hình sẽ xuất hiện như sau :
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 38 | 262
- Click vào chỗ khoanh tròn. Tiếp theo là:ta chọn accept &Install để tiến hành cài đặt.
-Chờ quá trình cài đặt
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 39 | 262
- Cuối cùng,nhấp vào Finish
Tiếp theo là đến phần crack
Bạn chạy file DevExpress.Registration.Setup.v12.2.7.msi
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 40 | 262
Check vào visual máy bạn đang dùng hoặc check vào tất cả nếu bạn muốn.Click Next,sau
đó finish là kết thúc công việc chạy file crack.Vậy là bạn vừa cài và crack xong
Devexpress 12.2.7.
b.Tạo dự án window form với Dev ExtraForm Wizard
- Để tạo được form Dev ExtraForm Wizard,bạn mở visual studio 2008
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 41 | 262
B2:
B3:
- Chọn loại Ribbon Style:Ribbon Office 2010 và Ribbon Office 2007
- Chọn loại NavigationBar:Explorer view và Navigation Pane View
- Chọn loại GridControl:Table View và Layout View.
1
2
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 42 | 262
B4:Sau khi chọn xong,click nút Create để tạo form,ta được kết quả:
-Từ hình ảnh minh họa cho thấy ,khi ta tạo ở chế độ form wizard,ta sẽ được bổ sung nhiều
thành phần trong form.Ví dụ như:NabarControl,Ribbon control,Image Collection.Và hơn
thế nữa ,trong form Wizard,ta sẽ có được thành phần Skin, dùng để thay đổi giao diện của
toàn form theo ý thích của người dùng.
Chọn ribbon
style
Chọn loại
navigation bar
Chọn loại
grid control
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 43 | 262
III.RibbonControl (Menu hiện đại)
i. Add danh sách hình ảnh sẵn vào một công cụ quản lý ImageCollection
- Khi bạn vừa tạo xong form,thì Image Collection sẽ tự tạo ra,nếu bạn vô tình xóa đi,bạn có
thể vào Toolbox chọn,rồi kéo thả vào form.
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 44 | 262
- Để chọn hình ảnh cho ImageCollection ,ta click chuột phải->Choose Image-
>ImageInfo Collection Editor->Add:Chọn hình ảnh cần thiết,sau đó ta click OK.
- Để thêm RibbonPage vào form,ta chọn bất kỳ đối tượng Ribbonpage ,click phải -
>Add Page
- Để thêm RibbonPageGroup ,ta chọn bất kỳ đối tượng RibbonPage,click phải->Add
PageGroup
- Để thêm BarButtonItem,ta chọn bất kỳ đối tượng RibbonPageGroup,click phải-
>Add Button
IV.Chọn hình ảnh trong imagecollection cho Ribbon
-Chọn hình ảnh cho RibbonPage, BarButtonItem.
-Chọn toàn bộ Ribbon,chọn Run Designer,màn hình sẽ xuất hiện
Lưu trữ
small image
Lưu trữ
Large image
Ribbon page
RibbonPageGroup
BarbuttonItem
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 45 | 262
Chọn vào đối tượng cần chèn hình vào,sẽ có 2 chế độ ImageIndex(chọn hình nhỏ) hoặc
LargeImageIndex(chọn hình lớn).Lưu ý:chọn theo index(vị trí) hình ảnh.
V. Set trạng thái IsMdiContainer
-Thuộc tính IsMdiContainer trong form:có 2 giá trị True hoặc False
- Nói cách khác thuộc tính IsMdiContainer là cách thiết lập form cha,form con giữa các
form với nhau.
- Nếu IsMdiContainer=True:chế độ form cha/form con được thiết lập,khi gọi bất kỳ
form nào ,nó sẽ nhảy vào form chính được thiết lập IsMdiContainer.
- Mặc định,khi vừa mới tạo form, IsMdiContainer =False,nghĩa là ở chế độ bình
thường.
- Muốn thiết lập thuộc tính IsMdiContainer cho form ,ta vào
Properties chọn,sẽ thấy thuộc tính IsMdiContainer ,tại đây,sẽ
thấy có 2 thuộc tính là True hoặc False.
1
2
2
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 46 | 262
VI.Sử dụng NavBar bên tay trái để làm thành phần Explorer
- Nếu sử dụng Project Wizard phải xóa split panel và layout lại – Dock Panel Left,
Main Panel trống để chứa form chương trình quản lý.
- Để tạo thêm NavBarGroup:click phải->add Group
- Để tạo thêm NavBarItem cho một Group nào đó->click phải->Add Item
VII.Cách thay đổi biểu tượng DX icon
- Chỉnh properties của RibbonControl là ApplicationIcon=image (chọn hình ảnh mình
muốn thay đổi)
NavbarControllNavBarControl
NavBarGroup
NavBarItem
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 47 | 262
VIII.Dàn form Quản lý nhân viên dựa trên Devexpress 12.2.7
 Hệ thống: đăng nhập, đăng xuất, thoát, sao lưu, phục hồi, đổi mật khẩu,quản người
dùng, cài đặt(thay đổi giao diện-Skin trong Devexpress).
 Danh mục:nhân viên,phòng ban,công việc,kỹ năng,thành phố,dự án,… (bảng trong
cơ sở dữ liệu).
 Nghiệp vụ :phân công dự án,cung cấp thiết bị,quản lý kỹ năng…. (use case của hệ
thống).
 Thống kê báo cáo: chi tiết cung cấp thiết bị,danh sách nhân viên trong công ty,danh
sách phòng ban cùng với nhân viên phòng ban đó,danh sách dự án của mỗi thành
phố,tổng kinh phí của dự án(sql để tổng kết – người dùng rất cần).
 Giúp đỡ: Tìm kiếm: tìm tất cả danh mục (nhiều) và nâng cao (google), thông tin
bản quyền, hướng dẫn sử dụng.
 Mô phỏng giao diện cho vấn đề dàn form quản lý bán hàng
- Hệ thống
Chọn hình ảnh khác để làm icon
trong ribbon form
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 48 | 262
Hình 1.Hình ảnh giao diện hệ thống bán hàng
Các thành phần giao diện
STT Tên đối tượng Mô tả Chức năng
1 skin Chứa giao diện form Thay đổi giao diện
2 Barbtn_dangnhap Dùng để đăng nhập vào hệ thống Đăng nhập
3 Barbtn_dangxuat Dùng để đăng xuất ra hệ thống Đăng xuất
4 Barbtn_doimatkhau Đổi mật khẩu người dùng Đổi mật khẩu
5 Barbtn_saoluu Sao lưu cơ sở dữ liệu hiện tại Sao lưu
6 Barbtn_phuchoi Phục hồi cơ sở dữ liệu đã sao lưu Phục hồi
7 Barbtn_thoat Thoát khỏi hệ thống Thoát
- Danh mục
1
2 3 4
5
6
7
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 49 | 262
Hình 2.hình ảnh giao diện danh mục quản lý bán hàng
 Các thành phần của giao diện
STT Loại Control Đặt tên Nội dung
Ghi
chú
1 Devexpress.XtraBar.BarButtonItem Barbtn_nhanvien Nhân viên
2 Devexpress.XtraBar.BarButtonItem Barbtn_hanghoa Hàng hóa
3 Devexpress.XtraBar.BarButtonItem Barbtn_donvitinh Đơn vị tính
4 Devexpress.XtraBar.BarButtonItem Barbtn_kho Kho
5 Devexpress.XtraBar.BarButtonItem Barbtn_hoadon Hóa đơn
6 Devexpress.XtraBar.BarButtonItem Barbtn_daily Đại lý
7 Devexpress.XtraBar.BarButtonItem Barbtn_nhacungcap Nhà cung cấp
8 Devexpress.XtraBar.BarButtonItem Barbtn_khachhang Khách hàng
- Nghiệp vụ
Hình 3.hình ảnh giao diện nghiệp vụ quản lý bán hàng
Các thành phần của giao diện
STT Loại Control Đặt tên Nội dung
Ghi
chú
1 Devexpress.XtraBar.BarButtonItem Barbtn_nhaphang Nhập hàng
2 Devexpress.XtraBar.BarButtonItem Barbtn_bansi Bán sỉ
3 Devexpress.XtraBar.BarButtonItem Barbtn_banle Bán lẻ
4 Devexpress.XtraBar.BarButtonItem Barbtn_phieuthu Phiếu thu
5 Devexpress.XtraBar.BarButtonItem Barbtn_phieuchi Phiếu chi
- Báo cáo-thống kê
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 50 | 262
Hình 4.Hình ảnh giao diện báo cáo thống kê quản lý bán hàng
-Từ hình minh họa,chia làm ba phần:doanh thu,thống kê về hàng hóa,thống kê về
khách hàng và đại lý .
Các thành phần của giao diện:
STT Loại Control Đặt tên Nội dung
Ghi
chú
1
Devexpress.XtraBar.BarButtonItem Barbtn_doanhthuhangth
ang
Doanh thu
hàng tháng
2
Devexpress.XtraBar.BarButtonItem Barbtn_thongketonkho Thống kê tồn
kho
3
Devexpress.XtraBar.BarButtonItem Barbtn_hangsaphethan Hàng sắp hết
hạn
4
Devexpress.XtraBar.BarButtonItem Barbtn_hanghetsoluong Hàng hết số
lượng
5
Devexpress.XtraBar.BarButtonItem Barbtn_hàng hư hỏng
và trả lại
Hàng hư hỏng
và trả lại
6
Devexpress.XtraBar.BarButtonItem Barbtn_daily_khachhan
g
Đại lý và
khách hàng
mua nhiều.
- Trợ giúp
Hình 5.hình ảnh giao diện trợ giúp của hệ thống quản lý bán hàng
-Các thành phần của giao diện.
STT Loại Control Đặt tên Nội dung
Ghi
chú
1
Devexpress.XtraBar.BarButtonItem Barbtn_thongtintacgia Thông tin tác
giả
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 51 | 262
2
Devexpress.XtraBar.BarButtonItem Barbtn_huongdansudung Hướng dẫn
sử dụng
IX.Tổ chức thư mục theo mô hình 3 lớp
i. Data, Bussiness, Presentation và tạo ra các lớp tương ứng
ii.Xử lý sự kiện
click trên form
main
-Ở đây,ta sẽ
không thiết lập
thuộc tính
IsMdiContainer
 BUSSINESSLAYER:Chứa các
lớp ở tầng Bussiness
 DATALAYER: Chứa các lớp ở
tầng Data
 DTO:chứa các thông tin get/set
của các thuộc tính
 KETNOI:chứa các lợp kết nối
của C# với sql server
 REPORT:chứa các báo cáo-
thống kê
 PRESENTATION:chứa các
giao diện.
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 52 | 262
,mà ta sẽ sử dụng xtratabControl để gọi các form khác vào form main.
XtraTabControl là control được sử dụng khá phổ
biến của người lập trình.Là lọa tab chuyên dụng khi gọi
các form khác nhau vào form chính,vừa cân bằng được
kích thước của form,vừa tạo ra các tabpage tùy
biến,khiến cho giao diện form trở nên bắt mắt và dễ
nhìn.Hơn thế nữa,hỗ trợ quản lý tốt các form khi gọi
đồng loạy các form vào formmain một cách ngẫu nhiên.
Khi sử dụng XtraTabControl ,bạn phải tùy
chỉnh thuộc tính ClosePageButtonShowMod trong
properties thành
InActiveTabPageAndTabControlHeader
Để xuất hiện nút tắt x trên form mỗi khi bạn mở
form.Hơn nữa ,bạn phải viết sự kiện CloseButtonClick
để khi tắt tabpage form nào đó,nó sẽ nhảy về vị trị form
trước đó.
 Mô phỏng khi gọi các form khác vào form main
bằng cách sử dụng đến thẻ control :Xtratabcontrol
 Khi click chuột gọi form vào,thì XtraTab sẽ tạo ra tabpage để chứa không gian của
form được gọi.
Click vào
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 53 | 262
Hình 6.Mô phỏng khi ta click vào Button nhân viên trong danh mục
Click vào
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 54 | 262
Hình 2.Mô phỏng khi ta click vào Button phân công dự án trong nghiệp vụ
Hình 3.Mô phỏng khi ta click vào Button danh sách phòng ban trong báo cáo-thống kê
X.Nói thêm về thành phần thường sử dụng,đó là control :GridControl
- Đây là một control được sử dụng phổ biến ,với hình ảnh bắt mắt ,hỗ trợ nhiều tính năng
hơn so với vấn đề load dữ liệu lên datagridview hay listview,GridControl có những tính
điểm vượt trội hơn,cùng việc hỗ trợ ở các dạng layoutview khác nhau,giúp hiển thị dữ liệu
một cách sinh động và đẹp mắt theo ý thích của người dùng.
Ảnh minh họa về GridControl
Click vào
XtraReport
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 55 | 262
 GridControl đang ở dạng gridview
 Chia thành các cột theo các thuộc tính trên form ,GridControl sẽ tạo các các cột
tương ứng và tùy chính theo người dùng.
 Dòng đầu tiên,là chức năng autofilter trong GridControl ,dùng để lọc dữ liệu theo
điều kiện người dùng nhập vào theo từng cột.
- Khi bạn muốn thiết lập chế độ cột trong GridControl,bạn vào click chuột phải-
>Run Designer để thiết lập column hoặc các tùy chỉnh trong Property Editor.
- Bạn có thể tùy chỉnh các dạng view trong gridcontrol theo ý cách nhìn của mình.
- Có các thẻ tùy chỉnh trong Property Editor
+ View:chế độ khung nhìn
+ Column:Tùy chỉnh các cột
+ Feature Browser :Tùy chỉnh các thuộc tính đặc trưng của các ô hay các cột như
font chữ,….
+ Layout:Có thể sao lưu,phục hồi dạng layout đã tạo trước đó.
+Group Sumary Items:Nhóm đối tượng thống kê.
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 56 | 262
- Ở GridControl bạn click vào dòng chữ màu xanh (Click here to change view) > Convert
to > LayoutView
Sau đó gridControl sẽ chuyển đổi như hình trên. Đối với trường hợp bạn load dữ liệu trực
tiếp vào grid thì các cột dữ liệu trong CSDL sẽ hiển thị vào grid để bạn có thể chỉnh sửa
luôn. Nhưng trường hợp này khi chạy lên grid mới được load dữ liệu nên không hiển thị gì
cả.
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 57 | 262
Đây là màn hình khi chạy lên của grid, bạn có thể click vào các icon ở thanh công cụ phía
trên để chọn kiểu hiển thị các mẫu dữ liệu.
Để chỉnh sửa bố cục của cách trình bày dữ liệu bạn click vào icon setting cuối cùng
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 58 | 262
Bạn có thể kéo thay đổi vị trí các cột dữ liệu trong cách hiển thị và nhấn nút Apply để áp
dụng thay đổi (lưu ý: trong trường hợp này chỉ là áp dụng tạm thời, nghĩa là bố cục này sẽ
mất khi đóng chương trình, nếu bạn muốn thay đổi vĩnh viễn thì phải load dữ liệu trực tiếp
vào grid và bạn làm tương tự bước này ngay trên design của grid thì mới được lưu áp dụng
vĩnh viển.
Nếu bạn muốn thay đổi nhãn của các cột dữ liệu thì click phải vào label rồi chọn Rename.
Sau khi xong rồi thì nhấn nút Apply để lưu. Đây là kết quả.
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 59 | 262
Bạn cũng có thể tạo nhóm dữ liệu, chèn khoảng trắng, phân cách,... nhiều thứ nữa trong đó.
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 60 | 262
Để thay đổi chế độ hiển thị dữ liệu bằng code bạn sử dụng câu lệnh sau:
XI.Giới thiệu sơ lược về XtraReport
-Một cách tạo Report cũng đang phổ biến sử dụng.Bằng cách thiết kế sẵn các lệnh,các
table chứa các control phù hợp,sau đó ta có thể gắn nguồn(source) cho các xrtable(được hỗ
trợ trong xtrareport).
-Một công cụ giúp tạo ra trang report đẹp mắt,lại mang tính tiện dụng.Tại vì nếu thông
thường,ta luôn thiết kế theo CrytallReport ,nếu thiết kế theo cách đó,khi chuyển chương
trình sang máy khác thì bắt buộc máy tính đó phải được cài CrytallReport trong máy.
Chúng ta sẽ xét cách tạo Xtrareport
- Click phải vào solution->Add->New Item->Reporting->DxExperience v12.2
Report Wizard
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 61 | 262
- Sau khi bạn đánh tên XtraReport ,chọn Add.
Bạn sẽ thấy một khung nhìn về XtraReport như sau:
- Để thiết kế các thành phần trong XtraReport,bạn sử dụng các thẻ
trong toolbox
- Trong XtraReport gồm có 7 phần:
+ Page header/footer :chứa tiều đề đầu trang và cuối trang.
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 62 | 262
+ Report header/footer:Tiêu đề đầu và cuối report ,nội dung đặt trong report
header/footer chỉ xuất hiện ở phần đầu của trang đầu tiên và phần cuối trang của
trang cuối cùng.Các nội dung thường đặt trong report header/Footer.
+ Detail:Chứa nguồn dữ liệu của report.
+Group Header/Footer: Đối với các report giống như dạng form dạng main_sub thì
phải có thêm phần kết nhóm là group header/footer.Nội dung của phần group
header/footer là tiêu đề của nhóm.Có thể thống kê dữ liệu theo nhóm.
XII.Đặt câu hỏi trắc nghiệm và lý thuyết.
A.Câu hỏi trắc nghiệm
1.Thanh menu chứa các mục như hệ thống,danh mục.nghiệp vụ,trợ giúp,…được gọi là gì?
A.RibbonControl B.RibbonForm
C.NavBarControl D.DevexpressRibbon
2.Để tạo ra RibbonPage trong form DevExpress,ta chọn:
A.Add Item B.Add Group
C.Add Page D.Add pageGroup
3.Đê thiết lập thuộc tính form cha/form con,ta chọn thuộc tính và giá trị gì trong properties.
A. IsMdiContainer:True B.ApplicationIcon:None
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 63 | 262
C. IsMdiContainer:False D.Tất cả đều sai
4.Để thiết lập report,ngoài cách chọn CrytalReport,ta có thể chọn Report gì trong
Devexpress.
A.XtraReport B.CreateDocument
C.PrintBarManager D.XtraTabControl
5.GridControl chỉ có một dạng hiển thị ở dạng GridView
A.Đúng B.Sai
6.GridControl có thuộc tính gì để lọc dữ liệu tự động.
A.AutoMark B.AutoControl
C.AutoFilter D.Tất cả đều đúng
7.Khi tạo Form Wizard,để lưu trữ hình ảnh và đặt các hình ảnh cho các BarButtonItem,ta
có thể sử dụng Control nào?
A.ImageCollectionSmall B.ImageCollectionLarge
C.ImageList D.A & B đúng
B.Câu hỏi lý thuyết
1.Để tạo ra ký hiệu tắt x trong XtraTabControl,ta chọn thuộc tính gì trong properties của
XtraTabControl.
2.XtraReport là một Item mình add vào form hay tồn tại sẵn trong ToolBox trong
Devexpress.
3.Để thay đổi dạng hiển thị của GridControl,ta làm như thế nào?Làm thế nào để chọn hình
ảnh cho các đối tượng trong RibbonControl?
XIII.Bảng phân công chi tiết công việc
STT Tên thành viên Phụ trách
1 Lê Hồng Tơ
+ Tìm hiểu về cách xây dựng form bằng UserControl
+ Phân tích cơ sở dữ liệu để thiết kế quản lý bán hàng
+ Xây dựng mô hình 3 lớp.
2 Phạm Văn Ây
+ Cách thay đổi ApplicationIcon của Ribbon
+ Cách AddGroup và AddItem trong NavBarControl
+ Cách thiết lập IsMdiContainer
+ Tìm kiếm tài liệu từ nhóm khác
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 64 | 262
3 Lê Nguyễn Thành Trung
+ Tìm hiểu về cách sử dụng XtraTabControl
+ Hỗ trợ đặt câu hỏi
+ Tìm hiểu về cách bố trí thành phần trong form
+ Tìm các tài liệu tham khảo trên Internet
4 Bùi Thị Chinh
+ Tìm hiểu và cài đặ phiên bản Devexpress 12.2.7
+ Tìm hiểu về cách add Image vào các đối tượng trong
form
+ Tìm hiểu về thành phần ImageCollection
+ Xây dựng thành công XtraReport trong form
+ Phân tích cơ sở dữ liệu
+ Chỉnh sửa Word.
+ Góp ý trang trí giao diện theo từng nhóm.
+ Thiết kế Powerpoint
5 Nguyễn Hữu Phước
+ Chỉnh sửa,góp ý
+ Code phần XtraTabControl và XtraReport
+ Phân tích cơ sở dữ liệu
+ Xây dựng mô hình dữ liệu quản lý khách hàng.
+ Quay Video
XIV.Thống kê chia sẻ tài liệu
STT Nhóm đã chia sẻ Ngày chia sẻ
1 Nhóm 3 11/04/2014
2 Nhóm 6 14/04/2014
XV.Kết luận và tài liệu tham khảo
A.Kết luận
Nhóm đã hoàn thành:
- Nhóm đã hoàn thành cơ bản về cách dàn form trên phiên bản Devexpress 12.2.7.Tìm hiểu
về cách xây dựng mô hình 3 lớp một cách cụ thể.
- Cách bố trí trên form menu hiện đại một cách phù hợp theo từng nhóm.Cách thiết kế Icon
cho form được đẹp và bắt mắt hơn.
- Hiểu được các chế độ view của GridControl và cách tùy chỉnh theo ý thích của người
dùng.
- Tìm hiểu được nhiều Control trong
Devexpress:NavBarControl,XtraTabControl,RibbonControl .
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 65 | 262
- Xây dựng được form quản lý bán hàng theo mô hình 3 lớp và cách bố trí theo menu hiện
đại.
B.Tài liệu tham khảo
[1].http://thuthuatso1.info/@forum/threads/huong-dan-addtab-con-dong-vao-
xtratabcontrol-trong-devexpress.4206.html
[2]. http://www.youtube.com/watch?v=h1f8ob0gSwQ
[3]. http://www.devexpress.com/
[4]. https://documentation.devexpress.com/#HomePage/CustomDocument9453
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 66 | 262
Trong ngành kỹ nghệ phần mềm, năm 1979, có một quy tắc nổi tiếng là: “Trong
một dự án lập trình điển hình, thì xấp xỉ 50% thời gian và hơn 50% tổng chi phí
được sử dụng trong kiểm thử các chương trình hay hệ thống đã được phát triển”. Và
cho đến nay, sau gần một phần 3 thế kỷ, quy tắc đó vẫn còn đúng. Đã có rất nhiều
ngôn ngữ, hệ thống phát triển mới với các công cụ tích hợp cho các lập trình viên sử
dụng phát triển ngày càng linh động. Nhưng kiểm thử vẫn đóng vai trò hết sức quan
trọng trong bất kỳ dự án phát triển phần mềm nào.
Rất nhiều các giáo sư, giảng viên đã từng than phiền rằng: “ Sinh viên của chúng ta
tốt nghiệp và đi làm mà không có được những kiến thực thực tế cần thiết về cách để
kiểm thử một chương trình. Hơn nữa, chúng ta hiếm khi có được những lời khuyên
bổ ích để cung cấp trong các khóa học mở đầu về cách một sinh viên nên làm về
kiểm thử và gỡ lỗi các bài tập của họ”.
Các tác giả của cuốn sách nổi tiếng “The Art of Software Testing” – Nghệ thuật
kiểm thử phần mềm, Glenford J. Myers, Tom Badgett, Todd M. Thomas, Corey
Sandler đã khẳng định trong cuốn sách của mình rằng: “ Hầu hết các thành phần
quan trọng trong các thủ thuật của một nhà kiểm thử chương trình là kiến thức về
cách để viết các ca kiểm thử có hiệu quả”. Việc xây dựng các test – case là một
nhiệm vụ rất khó khăn. Để có thể xây dựng được tập các test – case hữu ích cho
kiểm thử, chúng ta cần rất nhiều kiến thức và kinh nghiệm
Đó là những lý do thúc đẩy chúng em thực hiện đề tài này. Mục đích của đề tài là
tìm hiểu những kiến thức tổng quan nhất về kiểm thử, và cách thiết kế test – case
trong kiểm thử phần mềm. Việc thực hiện đề tài sẽ giúp chúng em tìm hiểu sâu hơn
và lĩnh vực rất hấp dẫn này, vận dụng được các kiến thức đã học để có thể thiết kế
được các test – case một cách có hiệu quả và áp dụng vào những bài toán thực tế.
Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 67 | 262
MỤC LỤC
CHƯƠNG 1. TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM .............................................................. 68
1.1 Các khái niệm cơ bản về kiểm thử phần mềm................................................................. 68
1.1.1 Kiểm thử phần mềm là gì? ........................................................................................... 68
1.1.2 Các phương pháp kiểm thử.......................................................................................... 68
1.1.3 Các chiến lược kiểm thử............................................................................................. 69
1.1.4 Các cấp độ kiểm thử phần mềm .................................................................................. 71
1.1.5 Các phương pháp kiểm thử con người ........................................................................ 76
1.2 Nguyên tắc kiểm thử phần mềm...................................................................................... 77
CHƯƠNG 2. THIẾT KẾ TEST – CASE........................................................................................... 79
2.1 Khái niệm.......................................................................................................................... 79
2.2 Vai trò của thiết kế test – case......................................................................................... 79
2.3 Quy trình thiết kế test – case ........................................................................................... 79
2.3.1 Kiểm thử hộp trắng - Kiểm thử bao phủ logic ............................................................. 13
2.3.2 Kiểm thử hộp đen......................................................................................................... 19
2.3.3 Chiến lược .................................................................................................................... 27
KẾT LUẬN.......................................................................................................................................... 28
TÀI LIỆU THAM KHẢO....................................................................................................................... 29
CÂU HỎI................................................................................................Error! Bookmark not defined.
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#
Hướng dẫn lập trình quản lý c#

More Related Content

What's hot

đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thịđồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thịThanh Hoa
 
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuậtĐề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuậtHưởng Nguyễn
 
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư viện
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư việnSlide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư viện
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư việnThe Nguyen Manh
 
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên nataliej4
 
Bài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL serverBài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL serverMasterCode.vn
 
Thuật toán mã hóa rsa
Thuật toán mã hóa rsaThuật toán mã hóa rsa
Thuật toán mã hóa rsaBảo Điệp
 
Báo cáo phân tích thiết kế đồ án game
Báo cáo phân tích thiết kế đồ án game Báo cáo phân tích thiết kế đồ án game
Báo cáo phân tích thiết kế đồ án game Tạ Thành Đạt
 
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)Trieu Nguyen
 
Hệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng onlineHệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng onlineHan Nguyen
 
Phân tích và thiết kế hệ thống quản lý quán Internet
Phân tích và thiết kế hệ thống quản lý quán InternetPhân tích và thiết kế hệ thống quản lý quán Internet
Phân tích và thiết kế hệ thống quản lý quán Internetnataliej4
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGTrường Phạm
 
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...MasterCode.vn
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGThùy Linh
 
Giới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagramGiới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagramHuy Vũ
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựleemindinh
 
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNHBÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNHHoà Đoàn
 
Xây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyếnXây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyếntrương dũng
 
Hd th sql server_tuan5_n_khanh
Hd th sql server_tuan5_n_khanhHd th sql server_tuan5_n_khanh
Hd th sql server_tuan5_n_khanhHai Rom
 

What's hot (20)

Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đĐề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
 
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thịđồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
đồ áN phân tích thiết kế hệ thống quản lý bán hàng siêu thị
 
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuậtĐề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
Đề thi mẫu trắc nghiệm cấu trúc dữ liệu cà giải thuật
 
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư viện
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư việnSlide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư viện
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư viện
 
BTL Lập trình C#
BTL Lập trình C#BTL Lập trình C#
BTL Lập trình C#
 
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
 
Bài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL serverBài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL server
 
Thuật toán mã hóa rsa
Thuật toán mã hóa rsaThuật toán mã hóa rsa
Thuật toán mã hóa rsa
 
Báo cáo phân tích thiết kế đồ án game
Báo cáo phân tích thiết kế đồ án game Báo cáo phân tích thiết kế đồ án game
Báo cáo phân tích thiết kế đồ án game
 
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
 
Hệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng onlineHệ thống quản lý bán hàng online
Hệ thống quản lý bán hàng online
 
Phân tích và thiết kế hệ thống quản lý quán Internet
Phân tích và thiết kế hệ thống quản lý quán InternetPhân tích và thiết kế hệ thống quản lý quán Internet
Phân tích và thiết kế hệ thống quản lý quán Internet
 
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
BÀI GIẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
 
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
 
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNGPHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG QUA MẠNG
 
Giới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagramGiới thiệu về Rational Rose và Các diagram
Giới thiệu về Rational Rose và Các diagram
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sự
 
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNHBÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
 
Xây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyếnXây dựng website tìm kiếm phòng trọ trực tuyến
Xây dựng website tìm kiếm phòng trọ trực tuyến
 
Hd th sql server_tuan5_n_khanh
Hd th sql server_tuan5_n_khanhHd th sql server_tuan5_n_khanh
Hd th sql server_tuan5_n_khanh
 

Similar to Hướng dẫn lập trình quản lý c#

Similar to Hướng dẫn lập trình quản lý c# (20)

Vb6 16 (8)
Vb6 16 (8)Vb6 16 (8)
Vb6 16 (8)
 
LinQ to XML
LinQ to XMLLinQ to XML
LinQ to XML
 
Bài tập thực hành C#
Bài tập thực hành C#Bài tập thực hành C#
Bài tập thực hành C#
 
Giới thiệu ngắn về DOM
Giới thiệu ngắn về DOMGiới thiệu ngắn về DOM
Giới thiệu ngắn về DOM
 
On thi kpdl
On thi kpdlOn thi kpdl
On thi kpdl
 
Android Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML ParsingAndroid Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML Parsing
 
Sơ lược về StAX
Sơ lược về StAXSơ lược về StAX
Sơ lược về StAX
 
Io trong java
Io trong javaIo trong java
Io trong java
 
IO trong Java
IO trong JavaIO trong Java
IO trong Java
 
File
FileFile
File
 
Bai Thuc hanh Tin học cơ sở nhom Kinh te-update.docx
Bai Thuc hanh Tin học cơ sở nhom Kinh te-update.docxBai Thuc hanh Tin học cơ sở nhom Kinh te-update.docx
Bai Thuc hanh Tin học cơ sở nhom Kinh te-update.docx
 
File trong c_
File trong c_File trong c_
File trong c_
 
Lappj trình hướng đối tượng
Lappj trình hướng đối tượngLappj trình hướng đối tượng
Lappj trình hướng đối tượng
 
On thitotnghiep
On thitotnghiepOn thitotnghiep
On thitotnghiep
 
209 008 ky thuat truy xuat file ini
209 008 ky thuat truy xuat file ini209 008 ky thuat truy xuat file ini
209 008 ky thuat truy xuat file ini
 
Giới thiệu về JAXP
Giới thiệu về JAXPGiới thiệu về JAXP
Giới thiệu về JAXP
 
Core java 9
Core java 9Core java 9
Core java 9
 
Core java 3
Core java 3Core java 3
Core java 3
 
nhập xuất file 2 c++
nhập xuất file 2 c++nhập xuất file 2 c++
nhập xuất file 2 c++
 
Asp control
Asp controlAsp control
Asp control
 

More from An Nguyen

Introduce to Git and Jenkins
Introduce to Git and JenkinsIntroduce to Git and Jenkins
Introduce to Git and JenkinsAn Nguyen
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD OverviewAn Nguyen
 
Introduce to Credstash
Introduce to CredstashIntroduce to Credstash
Introduce to CredstashAn Nguyen
 
Introduction To AWS & AWS Lambda
Introduction To AWS & AWS LambdaIntroduction To AWS & AWS Lambda
Introduction To AWS & AWS LambdaAn Nguyen
 
Introduction To Docker, Docker Compose, Docker Swarm
Introduction To Docker, Docker Compose, Docker SwarmIntroduction To Docker, Docker Compose, Docker Swarm
Introduction To Docker, Docker Compose, Docker SwarmAn Nguyen
 
Secret Management with Hashicorp Vault and Consul on Kubernetes
Secret Management with Hashicorp Vault and Consul on KubernetesSecret Management with Hashicorp Vault and Consul on Kubernetes
Secret Management with Hashicorp Vault and Consul on KubernetesAn Nguyen
 
Spring framework
Spring frameworkSpring framework
Spring frameworkAn Nguyen
 
Luận văn tìm hiểu Spring
Luận văn tìm hiểu SpringLuận văn tìm hiểu Spring
Luận văn tìm hiểu SpringAn Nguyen
 
Terminal Services and VPN
Terminal Services and VPNTerminal Services and VPN
Terminal Services and VPNAn Nguyen
 
Tân sinh viên TECH - AGU 2014
Tân sinh viên TECH - AGU 2014Tân sinh viên TECH - AGU 2014
Tân sinh viên TECH - AGU 2014An Nguyen
 
Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#An Nguyen
 
Nêu cao tinh thần trách nhiệm, chống chủ nghĩa cá nhân, nói đi đôi với làm
Nêu cao tinh thần trách nhiệm, chống chủ nghĩa cá nhân, nói đi đôi với làmNêu cao tinh thần trách nhiệm, chống chủ nghĩa cá nhân, nói đi đôi với làm
Nêu cao tinh thần trách nhiệm, chống chủ nghĩa cá nhân, nói đi đôi với làmAn Nguyen
 
Quản lý quan hệ khách hàng
Quản lý quan hệ khách hàngQuản lý quan hệ khách hàng
Quản lý quan hệ khách hàngAn Nguyen
 
Quản lý quan hệ khách hàng
Quản lý quan hệ khách hàngQuản lý quan hệ khách hàng
Quản lý quan hệ khách hàngAn Nguyen
 
RichTetxtBox control
RichTetxtBox controlRichTetxtBox control
RichTetxtBox controlAn Nguyen
 
Hội nghị học tốt CNTT 2013 - An Giang University
Hội nghị học tốt CNTT 2013 - An Giang UniversityHội nghị học tốt CNTT 2013 - An Giang University
Hội nghị học tốt CNTT 2013 - An Giang UniversityAn Nguyen
 

More from An Nguyen (17)

Terraform
TerraformTerraform
Terraform
 
Introduce to Git and Jenkins
Introduce to Git and JenkinsIntroduce to Git and Jenkins
Introduce to Git and Jenkins
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview
 
Introduce to Credstash
Introduce to CredstashIntroduce to Credstash
Introduce to Credstash
 
Introduction To AWS & AWS Lambda
Introduction To AWS & AWS LambdaIntroduction To AWS & AWS Lambda
Introduction To AWS & AWS Lambda
 
Introduction To Docker, Docker Compose, Docker Swarm
Introduction To Docker, Docker Compose, Docker SwarmIntroduction To Docker, Docker Compose, Docker Swarm
Introduction To Docker, Docker Compose, Docker Swarm
 
Secret Management with Hashicorp Vault and Consul on Kubernetes
Secret Management with Hashicorp Vault and Consul on KubernetesSecret Management with Hashicorp Vault and Consul on Kubernetes
Secret Management with Hashicorp Vault and Consul on Kubernetes
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
Luận văn tìm hiểu Spring
Luận văn tìm hiểu SpringLuận văn tìm hiểu Spring
Luận văn tìm hiểu Spring
 
Terminal Services and VPN
Terminal Services and VPNTerminal Services and VPN
Terminal Services and VPN
 
Tân sinh viên TECH - AGU 2014
Tân sinh viên TECH - AGU 2014Tân sinh viên TECH - AGU 2014
Tân sinh viên TECH - AGU 2014
 
Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#
 
Nêu cao tinh thần trách nhiệm, chống chủ nghĩa cá nhân, nói đi đôi với làm
Nêu cao tinh thần trách nhiệm, chống chủ nghĩa cá nhân, nói đi đôi với làmNêu cao tinh thần trách nhiệm, chống chủ nghĩa cá nhân, nói đi đôi với làm
Nêu cao tinh thần trách nhiệm, chống chủ nghĩa cá nhân, nói đi đôi với làm
 
Quản lý quan hệ khách hàng
Quản lý quan hệ khách hàngQuản lý quan hệ khách hàng
Quản lý quan hệ khách hàng
 
Quản lý quan hệ khách hàng
Quản lý quan hệ khách hàngQuản lý quan hệ khách hàng
Quản lý quan hệ khách hàng
 
RichTetxtBox control
RichTetxtBox controlRichTetxtBox control
RichTetxtBox control
 
Hội nghị học tốt CNTT 2013 - An Giang University
Hội nghị học tốt CNTT 2013 - An Giang UniversityHội nghị học tốt CNTT 2013 - An Giang University
Hội nghị học tốt CNTT 2013 - An Giang University
 

Hướng dẫn lập trình quản lý c#

  • 1. Phân công: Họ và tên Công việc Nguyễn Văn Tập (Nhóm trưởng) Code demo chương trình Trịnh Thanh Sang Quay Video Võ Thị Cẩm Ngân Soạn bài báo cáo Dương Thị Ngọc Giàu Soạn slide báo cáo Nguyễn Thị Phượng Hằng Soạn các câu hỏi củng cố MỤC LỤC I. Giới Thiệu............................................................................................................................................2 1. Giới thiệu về namespace System.xml (introduction to namespace System.xml) ............................2 2. Đọc và Ghi XML (Read and write Streamed XML).............................................................................4 2.1 Sử dụng lớp XmlTexReader ..........................................................................................................4 2.2 Các phương thức Read....................................................................................................................6 2.3 Lấy thuộc tính của dữ liệu:.............................................................................................................7 2.4 Sử dụng lớp XmlValidatingReader................................................................................................8 2.5 Sử dụng Schema property..............................................................................................................9 2.6 Sử dụng lớp XmlTextWriter ..........................................................................................................9 II. Hướng dẫn làm demo Chương trình kết nối C d ng ile hình .........................11  Bước 1: Tạo project mới có tên là DemoKetNoiSQL.....................................................................11  Bước 2: Tao form với các control như hình bên dưới.....................................................................11  Bước 3: Tạo file xml trong thư mục debug của chương trình.........................................................12  Bước 4: Thêm class DataProvide vào chương như hình bên dưới:.................................................13  Bước 5:Tạo thêm class SQLInformation ........................................................................................16  Bước 6: Ta viết các hàm sự kiện cho form .....................................................................................17  Bước 7: Vào SQL tạo một cơ sở dữ liệu tên là QLBH vậy là chúng ta có thể kết nối thành công. 20 III. Câu hỏi...........................................................................................................................................20 1. Câu hỏi Thực hành:.........................................................................................................................20 2. Câu hỏi lý thuyết:............................................................................................................................20 3. Câu hỏi trắc nghiệm........................................................................................................................21
  • 2. I. Giới Thiệu XML (eXtensible Markup Langue) đóng một vai trò quan trọng trong .NET. Không chỉ vì .NET cho phép bạn sử dụng XML trong các ứng dụng của bạn, mà bản thân nó cũng sử dụng XML cho những file cấu hình và tài liệu mã nguồn, như SOAP, các dịch vụ web và Ado.net. Do đó tìm hiểu về các xử lý XML trong .Net với ngôn ngữ C# là một điều nên làm. Bài viết này 1. Giới thiệu về namespace System.xml (introduction to namespace System.xml) - namespace System.xml trong .NET cung cấp một số lớp hỗ trợ cho việc xử lý XML. Dưới đây là những lớp đọc và ghi XML. Tên lớp Giải thích XmlReader Một lớp đọc trừu tượng nhanh và non-cached dữ liệu XML. XmlReader được thiết kế giống như bộ phân tách SAX. XmlWriter Một lớp viết trừu tượng nhanh và non-cached dữ liệu XML trong một dòng hoặc định dạng file. XmlTexReader Mở rộng của XmlReader. Cung cấp chuỗi truy cập nhanh dữ liệu XML. XmlTexWriter Mở rộng của XmlWriter. Phát nhanh các dòng XML.
  • 3. - Một vài lớp hữu ích khác trong XML: Tên lớp Giải thích XmlNode Một lớp trừu tượng miêu tả một nút đơn trong một tài liệu XML. Lớp cơ sở cho các lớp khác trong namespace XML. XmlDocument Mở rộng của XmlNode. Đây là một thực thi W3C Document Object Model (DOM). Nó cung cấp một cây miêu tả tài liệu XML trong bộ nhớ cho phép điều hướng và soạn thảo. XmlDataDocument Mở rộng của XmlDocument. Đây là một tài liệu có thể được tải từ dữ liệu XML hoặc từ dữ liệu trong một ADO.NET DataSet. Cho phép hòa trộn XML và dữ liệu quan hệ trong cùng một view. XmlResolver Một lớp trừu tượng dùng giải quyết các tài nguyên XML ngoài như DTD và tham chiếu sơ đồ. Cũng dùng để xử lí các thành phần <xsl:include> và <xsl:import>. XmlUrlResolver Mở rộng của XmlResolver. Giải quyết các tài nguyên tên như một URI (Uniform Resource Identifier). - Lưu ý: namespace xml có sẵn cho bất kỳ ngôn ngữ nào biết .NET
  • 4. 2. Đọc và Ghi XML (Read and write Streamed XML) - Cả 2 lớp XmlReader và XmlWriter đều là những lớp trừu tượng. Hình dưới đây minh họa các lớp kế thừa từ 2 lớp này: + XmlTextReader và XmlTextWriter làm việc chung trên các đối tượng stream hoặc các đối tượng TextReader/TextWriter trong namespace System.IO. + XmlNodeReader sử dụng XmlNode cho một nguồn thay cho một stream. XmlValidatingReader thêm DTD với sơ đồ tích hợp và tất nhiên là cả dữ liệu hợp lệ. 2.1 Sử dụng lớp XmlTexReader - XmlTexReader rất giống SAX. Một trong những khác biệt lớn nhất: SAX là một mô hình kiểu push, còn XmlTextReader là một mô hình pull, ở đó dữ liệu được kéo vào ứng dụng yêu cầu nó. Nó tạo ra một mô hình lập trình dễ dàng và trực quan hơn. Một lợi ích khác của mô hình pull là có thể lựa chọn dữ liệu để gởi đến ứng dụng: nếu bạn không muốn tất cả các dữ liệu, vì không cần xử lý tất cả chúng. Còn trong mô hình push, tất cả dữ liệu XML cần phải được xử lý bởi ứng dụng, mặc cho nó có muốn hay không. - Để sử dụng lớp này bạn cần khai báo : using System.Xml; - Bây giờ hãy mở visual studio của bạn lên: + Kéo vào một ListBox và một Button như hình bên; + Sau đó viết sự kiện cho button Load XML như sau:
  • 5. - Kết quả khi chạy chương trình trên và click vào button LoadXML như hình bên dưới. - XmlTextReader này sử dụng khá đơn giản. + Trước tiên chúng ta tạo ra một đối tượng string chứa dường dẫn tới file xml. Sau đó tạo một đối tượng XmlTextReader mới với tham số là đường dẫn tới file xml. + Khi chương trình chạy đến vòng lặp while, phương thức Read sẽ được di chuyển sang mục tiêu đầu tiên trong tài liệu. Nó tiêu biểu cho các mục khai báo XML.
  • 6. Trong ví dụ này, chúng ta duyệt qua từng mục và so sánh xtr.NodeType với bộ XmlNodeType, và thêm các mục được tìm thấy vào listbox. 2.2 Các phương thức Read - Có một vài cách di chuyển trong tài liệu. Như bạn đã thấy trong ví dụ trên, Read() có thể di chuyển sang mục tiếp theo. Chúng ta có thể xem nêu mục đó có giá trị (HasValue()) , hoặc nếu mục đó có thuộc tính (HasAttributes()) . Chúng ta cũng có thể dùng phương thức ReadStartElement(), để kiểm tra xem nếu mục hiện tại là thành phần khởi đầu, và chuyển sang mục tiếp theo. Nếu không phải là mục khởi đầu một ngoại lệ XmlException sẽ được phát ra. Việc gọi phương thức này giống như gọi phương thức IsStartElement(), bởi một Read(). - Các phương thức ReadString() và ReadChars() đều đọc dữ liệu văn bản từ một thành tố. ReadString() tra về một chuỗi dữ liệu, trong khi ReadChars() trả về một mảng dữ liệu kiểu char. - ReadElementString() cũng giống như ReadString(), ngoại trừ việc bạn không phải truyền tên của một thành tố. Nếu nội dung của mục tiếp theo không phải là một start tag, hoặc nếu tham số Name không không phải là Name của mục hiện hành, thì một ngoại lệ sẽ được phát ra. - Dưới đây là ví dụ chỉ ra cách sử dụng ReadElementString(), lưu ý khai báo: 1. using System.IO; 2. private void btnLoadXML_Click(object sender, EventArgs e) 3. { 4. string fileName = “Book.xml”; 5. FileStream fs = new FileStream(fileName, FileMode.Open); 6. XmlTextReader xtr = new XmlTextReader(fs); 7. while (!xtr.EOF) 8. { 9. if (xtr.MoveToContent() == XmlNodeType.Element && xtr.Name == “title”) 10. { 11. listBox1.Items.Add(xtr.ReadElementString()); 12. } 13. Else
  • 7. 14. { 15. xtr.Read(); 16. } 17. } 18. } - Trong vòng lặp while chúng ta sử dụng MoveToContent() để tìm trên mỗi dòng xem XmlNodeType.Element có giống với named title không. Chúng ta sử dụng thuộc tính EOF của XmlTextReader như là một điều kiện lặp. Nếu mục không phải kiểu Element của named title, mệnh đề else phát ra một phương thức Read() để di chuyển sang mục tiếp theo. Khi chúng ta tìm thấy một mục thỏa điều kiện, chúng ta trả kết quả của ReadElementString() cho listbox. Nó cho phép các tựa sách được liệt kê trong listbox. Chú ý rằng chúng ta không tạo ra một lời gọi Read() sau khi một ReadElementString() thực hiện thành công. Bởi vì ReadElementString() cũng sẽ di chuyển sang mục tiếp theo. - Nếu bạn bỏ && tr.Name==”title” trong mệnh đề if, bạn sẽ nhận được ngoại lệ XmlException. Nếu nhìn vào file dữ liệu, bạn sẽ thấy thành tố đầu tiên mà MoveToContent() tìm ra là <bookstore>. Tất nhiên nó vì nó không chứa một kiểu text chuẩn, nên ReadElementString() phát ra một ngoại lệ XmlException. 2.3 Lấy thuộc tính của dữ liệu: - Khi bạn chạy các ví dụ trên, bạn nhận ra rằng khi các mục được đọc, bạn không thấy bất kì thuộc tính nào cả. Đó là vì các thuộc tính không nằm trong tài liệu. Khi đang đứng trên một mục, bạn có thể kiểm tra các thuộc tính và có thể lấy giá trị của bất kì giá trị thuộc tính nào. - Thuộc tính HasAttributes sẽ trả về giá trị true nếu có bất kì thuộc tính nào còn không sẽ trả về false. Thuộc tính AttributeCount sẽ cho bạn biết có bao nhiêu thuộc tính, và phương thức GetAttribute() sẽ trả về một thuộc tính thông qua tên hoặc chỉ mục. Nếu bạn muốn lặp qua các thuộc tính bạn có thể dùng các phương thức MoveToFirstAttribute() và MoveToNextAttribute(). - Dưới đây là một ví dụ về việc lặp qua các thuộc tính. 1.string fileName = “Book.xml”;
  • 8. 2.FileStream fs = new FileStream(fileName, FileMode.Open); 3.XmlTextReader xtr = new XmlTextReader(fs); 4.while (xtr.Read()) 5.{ 6.if (xtr.NodeType == XmlNodeType.Element) 7.{ 8.for (int i = 0; i < xtr.AttributeCount; i++) 9.{ 10. listBox1.Items.Add(xtr.GetAttribute(i)); 11. } 12. } 13. } - Bây giờ chúng ta xem xét về các mục thành phần. Khi chúng ta tìm thấy một mục, chúng ta lặp qua tất cả thuộc tính của nó, và dùng phương thức GetAttribute() để load giá trị của thuộc tính vào listbox. Trong ví dụ này các thuộc tính đó là genre, publicationdate, và ISBN. 2.4 Sử dụng lớp XmlValidatingReader - Nếu bạn muốn xác nhận một tài liệu XML, bạn sẽ cần phải sử dụng lớp XmlValidatingReader. Nó chứac các khả năng giống như XmlTextReader (Cả hai đều xuất phát từ XmlReader) nhưng XmlValidatingReader có thêm thuộc tính ValidationType, thuộc tính Schemas và SchemaType. - Nếu bạn gán thuộc tính ValidationType giá trị xác nhận mà bạn muốn. Giá trị hợp lệ của thuộc tính này được liệt kê trong bảng sau: Property value Description Auto Nếu một DTD được khai báo trong một khai báo <!DOCTYPE…>, điều này cho phép DTD sẽ được load và xử lí. Giá trị mặc định cho các DTD.Nếu một thuộc tính XSD schemalocation được tìm thấy, XSD được load và xử lí, và sẽ trả về các giá trị mặc định trong sơ đồ. Nếu một không gian tên với tiếp đầu ngữ MSXML x-schema được tìm thấy, nó sẽ load và xử lí sơ đồ XDR và trả về các thuộc tính mặc định đã
  • 9. được định nghĩa. DTD Phù hợp theo chuẩn DTD. Schema Phù hợp theo sơ đồ XSD. XDR Phù hợp theo sơ đồ XDR None Không giá trị hợp lệ nào được thực thi. - Khi một thuộc tính trong này được chọn, Một ValidationEventHandler cần phải được gán. Đây là một sự kiện được tạo ra do các lỗi. Bạn có thể tác động lại lỗi theo các mà bạn cho là phù hợp. 2.5 Sử dụng Schema property Schemas property của XmlValidatingReader chứa một XmlSchemaCollection, có thể tìm thấy trong không gian tên System.Xml.Schema. Tập hợp này tổ chức load lại loaded XSD và XDR schemas. Nó cực nhanh đặc biệc là khi bạn cần kiểm tra sự hợp lệ của nhiều tài liệu khác nhau, vì sơ đồ sẽ không được load mỗi khi kiểm tra. Các bước sử dụng thuộc tính này như sau, bạn tạo một đối tượng XmlSchemaCollection. Phương thức Add(), nằm trong một XmlSchemaCollection, có bốn quá tải. Bạn có thể truyền nó cho một đối tượng xuất phát từ XmlSchema, một đối tượng xuất phát từ XmlSchemaCollection, một chuỗi không gian tên với chuỗi URI của file sơ đồ và một đối tượng xuất phát từ XmlReader chứa trong sơ đồ. 2.6 Sử dụng lớp XmlTextWriter - Lớp XmlTextWriter cho phép bạn xuất XML thành một chuỗi, một file hoặc một đối tượng a TextWriter. Giống như XmlTextReader, nó là một kiểu forward-only, non-cached. XmlTextWriter có thể cấu hình cao, cho phép bạn chỉ rõ những thứ như cho phép thục đầu dòng, số thục đầu dòng, kí tự chỉ dẫn nào được dùng trong các giá trị thuộc tính cho phép namespace hỗ trợ. - Hãy xem ví dụ sau, để biết cách sử dụng lớp XmlTextWriter 1. private void btnGhiXML_Click(object sender, EventArgs e) 2. { 3. SaveFileDialog sfd = new SaveFileDialog(); 4. sfd.Filter = "XML file(*.xml)|*.xml"; 5. sfd.RestoreDirectory = true;
  • 10. 6. if (sfd.ShowDialog() == DialogResult.OK) 7. { 8. XmlTextWriter xtw = new XmlTextWriter(sfd.FileName, null); 9. xtw.Formatting = Formatting.Indented; 10. xtw.WriteStartDocument(); 11. // write to element HoTen 12. xtw.WriteStartElement("LyLich"); 13. xtw.WriteAttributeString("QuocTich", "Viet Nam"); 14. xtw.WriteElementString("HoTen", txtHoTen.Text); 15. xtw.WriteElementString("QueQuan", txtQueQuan.Text); 16. xtw.WriteElementString("NgaySinh", txtNgaySinh.Text); 17. xtw.WriteEndElement(); 18. xtw.WriteEndDocument(); 19. xtw.Flush(); 20. xtw.Close(); 21. } 22. } - Chương trình demo có giao diện như sau: Khi nhấn button ghi ra file XML thì hộp thoại saveFileDialog sẽ hiện ra để bạn chọn đường dẫn lưu file. Bạn điền tên file rồi sau đó chọn save thì file sẽ lưu lại với đuôi mở rộng là .xml với tên mà bạn đã đặt cho nó. Sau đó bạn click chuột phải vào file xml vừa được tạo ra chọn Edit thì sẽ thấy nội dung mà chương trình đã ghi ra. - Các thành phần được điều khiển bằng việc theo dõi khi nào bạn bắt đầu và kết thúc thao tác viết các thành phần các thuộc tính. Bạn có thể bắt gặp chúng khi chúng ta thêm vào tên của thành phần con cho các thành phần lớn. Chú ý việc các lời gọi phương thức WriteStartElement() và WriteEndElement() được tổ chức như thế nào và các tổ chức các sản phẩm các bộ thành phần trong file xuất. - Các phương thức WriteElementString() và WriteAttributeString(), có một vài phương thức ghi đặc biệc. WriteCData() sẽ xuất ra một đoạn CData (<!CDATA[...]]>), việc xuất ra các text cần một tham số. WriteComment() xuất ra một ghi chú theo định dạng XML. WriteChars() xuất ghi chi của của một chuỗi các kí tự. Điều này cũng tương tự phương thức ReadChars() mà
  • 11. chúng ta đã biết; chúng đều sử dụng cùng các tham số. WriteChars() cần một vùng đệm (một mảng kí tự) Vị trí bắt đầu đẻ ghi (một số integer) số các kí tự sẽ ghi (một số integer). - Thao tác đọc và ghi XML dùng các lớp xuất phát từ XmlReader và XmlWriter đơn giản và mềm dẻo đến hơn chúng ta tưởng tượng rất nhiều. II. Hướng dẫn làm demo Chương trình kết nối C d ng ile hình XML Bước 1: Tạo project mới có tên là DemoKetNoiSQL Bước 2: Tao form với các control như hình bên dưới Combobox Name: cbserver na Textbox Name: txtUser,txtPass Listbox Name: listBox1 Các button chức năng
  • 12. Bước 3: Tạo file xml trong thư mục debug của chương trình. Tạo file notpad++ trong đó ghi các dòng sau: 1. <?xml version="1.0"?> 2. <cauhinh> 3. <servername>ADMINSQLEXPRESS</servername> 4. <database>QLBH</database> 5. <username>sa</username> 6. <password>sql2008</password> 7. <connectStr>Data Source=ADMINSQLEXPRESS; Initial Catalog =QLBH; Integrated Security=SSPI;</connectStr> 8. </cauhinh> Khi save as ta chọn đến thư mục debug của chương trình và phần mở rộng của nó ta để là .xml. Cuối cùng ta được như hình bên dưới
  • 13. Bước 4: Thêm class DataProvide vào chương như hình bên dưới: Trong class này, đầu tiên tạo là lớp DataProvide sẽ kết thừa lớp DataTable: 1. class DataProvide : DataTable Trong lớp DataProvide có các thuộc tính như: 1. public static string m_ConnectString; 2. private static SqlConnection m_Connection; 3. private SqlCommand m_Command; 4. private SqlDataAdapter m_DataAdapter; Tiếp theo, tạo các hàm lấy dữ liệu cho thuộc tính: 1. public static SqlConnection Connection 2. { get { return m_Connection; } } 3. public SqlCommand SqlCmd 4. { 5. get { return m_Command; } 6. set { m_Command = value; } 7. } 8. public void CloseConnetion() 9. { 10. m_Connection.Close(); 11. }
  • 14. Tiếp theo trong class này tạo thêm các hàm mở, đóng kết nối,… 1. public bool OpenConnection() 2. { 3. try 4. { 5. if (m_Connection == null) 6. m_Connection = new SqlConnection(m_ConnectString); 7. if (m_Connection.State == ConnectionState.Closed) 8. m_Connection.Open(); 9. return true; 10. } 11. catch (Exception e) 12. { 13. m_Connection.Close(); 14. MessageBox.Show(e.Message); 15. return false; 16. } 17. } 18. public void CloseConnetion() 19. { 20. m_Connection.Close(); 21. } 22. public DataProvide() 23. { 24. string patch = Application.StartupPath + "cauhinh.xml"; 25. DocFileCauHinh(patch); 26. }
  • 15. Sau cùng trong class này tạo 2 hàm đó là hàm Load() và hàm DocFileCauHinh() 1. public void Load(SqlCommand cmd) 2. { 3. m_Command = cmd; 4. try 5. { 6. this.Clear(); 7. m_Command.Connection = m_Connection; 8. m_DataAdapter = new SqlDataAdapter(); 9. m_DataAdapter.SelectCommand = m_Command; 10. m_DataAdapter.Fill(this); 11. } 12. catch (Exception e) 13. { 14. MessageBox.Show(e.Message); 15. } 16. } 17. public static void DocFileCauHinh(string patch) 18. { 19. XmlTextReader reader = new XmlTextReader(patch); 20. reader.MoveToElement(); 21. while (reader.Read()) 22. { 23. if (reader.NodeType == XmlNodeType.Element && reader.Name == "cauhinh") 24. { 25. while (reader.Read()) 26. { 27. if (reader.NodeType == XmlNodeType.Element && reader.Name == "connectStr") 28. { 29. 30. DataProvide.m_ConnectString = reader.ReadString(); 31. break; 32. } 33. } 34. } 35. }
  • 16. Bước 5:Tạo thêm class SQLInformation Trong class SQLInformation này ta code như sau: 1. public static string m_SQLServer; 2. public static string m_Username; 3. public static string m_Password; 4. public ArrayList GetSQLServersDatabases() 5. { 6. ArrayList data = new ArrayList(); 7. SqlConnection con = new SqlConnection("server=" + m_SQLServer + ";uid=" + m_Username + ";pwd=" + m_Password); 8. con.Open(); 9. SqlCommand cmd = new SqlCommand(); 10. cmd.Connection = con; 11. cmd.CommandType = CommandType.StoredProcedure; 12. cmd.CommandText = "sp_databases"; 13. SqlDataReader dr = cmd.ExecuteReader(); 14. while (dr.Read()) 15. { 16. data.Add(dr.GetString(0)); 17. } 18. con.Close(); 19. return data; 20. } 21. string[] s; 22. public bool AttachDatabases(string patch) 23. { 24. try 25. { 26. char[] c = { '' };
  • 17. 27. s = patch.Split(c); 28. string ten = ""; 29. ten = s[s.Length - 1]; 30. string patch1 = ""; 31. patch1 = patch.Substring(0, patch.Length - 4); 32. SqlConnection con = new SqlConnection(@"Data Source=" + m_SQLServer + "; Initial Catalog = master; User=" + m_Username + ";Password=" + m_Password + ";"); 33. con.Open(); 34. SqlCommand cmd = new SqlCommand(); 35. cmd.Connection = con; 36. cmd.CommandText = @"CREATE DATABASE [" + ten + "] ON ( FILENAME = N'" + patch + "' ),( FILENAME = N'" + patch1 + "_log.ldf' ) FOR ATTACH"; 37. cmd.ExecuteNonQuery(); 38. con.Close(); 39. return true; 40. } 41. catch (Exception e) 42. { 43. MessageBox.Show(e.Message.ToString()); 44. return false; 45. } 46. } Bước 6: Ta viết các hàm sự kiện cho form Để viết các hàm cho sự kiện click đầu tiên ta viết thêm các hàm hỗ trợ khác code như sau: 1. SQLInformation sql = new SQLInformation(); 2. DataProvide data = new DataProvide(); 3. OpenFileDialog open = new OpenFileDialog(); 4. private bool ktraHople() 5. { 6. if (cbServer.Text == "select") 7. { 8. MessageBox.Show("Please choose a SQL Server", "Khuvv - NapolySoft", MessageBoxButtons.OK, MessageBoxIcon.Information); 9. cbServer.Focus(); 10. return false; 11. } 12. 13. if (txtUser.Text == "") 14. { 15. MessageBox.Show("Please fill into left blank", "Khuvv - NapolySoft", MessageBoxButtons.OK, MessageBoxIcon.Information); 16. txtUser.Focus();
  • 18. 17. return false; 18. } 19. 20. if (txtPass.Text == "") 21. { 22. MessageBox.Show("Please fill into left blank", "Khuvv - NapolySoft", MessageBoxButtons.OK, MessageBoxIcon.Information); 23. txtPass.Focus(); 24. return false; 25. } 26. return true; 27. } 28. private void loadServer() 29. { 30. listBox1.Items.Clear(); 31. SQLInformation.m_Username = txtUser.Text; 32. SQLInformation.m_Password = txtPass.Text; 33. SQLInformation.m_SQLServer = cbServer.SelectedItem.ToString(); 34. ArrayList data = sql.GetSQLServersDatabases(); 35. for (int i = 0; i < data.Count; i++) 36. { 37. listBox1.Items.Add(data[i]); 38. } 39. listBox1.Show(); 40. } Tiếp theo nhấn đúp vào form để viết code cho sự kiện formload 1. private void Form1_Load(object sender, EventArgs e) 2. { 3. string cb = SystemInformation.ComputerName + "SQL";//"SQLEXPRESS"; 4. listBox1.Hide(); 5. bt_dn.Enabled = false; 6. cbServer.Items.Add(cb); 7. } Tương tự nhấn đúp vào nút Đăng nhập để viết code cho sự kiện Click của nút Đăng nhập 1. private void bt_dn_Click(object sender, EventArgs e) 2. { 3. if (ktraHople()) 4. { 5. loadServer(); 6. } 7. }
  • 19. Kế đến, nhấn đúp vào nút Truy cập để viết code cho sự kiện Click của nút Truy cập 1. private void btn_Load_Click(object sender, EventArgs e) 2. { 3. if (data.OpenConnection()) 4. { 5. MessageBox.Show("Truy cập thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); 6. data.CloseConnetion(); 7. frmHangHoa f_hh = new frmHangHoa(); 8. f_hh.Show(); 9. } 10. else 11. MessageBox.Show("Truy cập thất bại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); 12. } Sau đó, nhấn đúp vào nút Thêm CSDL để viết code cho sự kiện Click của nút Thêm CSDL 1. private void btnAttach_Click(object sender, EventArgs e) 2. { 3. open.Filter = "File (*.mdf)|*.mdf"; 4. //Không cho phép chọn nhiều file 5. open.Multiselect = false; 6. //Set caption cho dialog 7. open.Title = "Chon CSDL"; 8. //Set tên file mặc định 9. open.FileName = ""; 10. //Hiển thị hộp thoại 11. DialogResult dgResult = open.ShowDialog(); 12. if (dgResult == DialogResult.OK) 13. { 14. if (sql.AttachDatabases(open.FileName)) 15. { 16. MessageBox.Show("Chèn thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); 17. listBox1.Items.Clear(); 18. bt_dn_Click(sender, e); 19. } 20. else 21. MessageBox.Show("Chèn thành thất", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); 22. } 23. } Cuối cùng là các sự kiện nút xóa,thoát. 1. private void btn_Xoa_Click(object sender, EventArgs e)
  • 20. 2. { 3. txtPass.ResetText(); 4. txtUser.ResetText(); 5. listBox1.Hide(); 6. } 7. private void btn_thoat_Click(object sender, EventArgs e) 8. { 9. Close(); 10. } Bước 7: Vào SQL tạo một cơ sở dữ liệu tên là QLBH vậy là chúng ta có thể kết nối thành công. =>Vậy là chương trình chúng ta đã hoàn thành sau đây là một số câu hỏi nhỏ dành cho các bạn. III. Câu hỏi 1. Câu hỏi Thực hành: Dựa vào word và video hướng dẫn các bạn hãy viết chương trình kết nối CSDL dung file cấu hình XML(bài giải trong thư mục DemoKetNoiSQL của nhóm). 2. Câu hỏi lý thuyết: A. XML là gì? Lợi ích của sử dụng XML trong ngôn ngữ C#? Trả lời: XML (eXtensible Markup Langue) đóng một vai trò quan trọng trong .NET. Không chỉ vì .NET cho phép bạn sử dụng XML trong các ứng dụng của bạn, mà bản thân nó cũng sử dụng XML cho những file cấu hình và tài liệu mã nguồn, như SOAP, các dịch vụ web và Ado.net. Do đó tìm hiểu về các xử lý XML trong .Net với ngôn ngữ C# là một điều nên làm B. Lớp XmlTextWriter dùng để làm gi? Trả lời: Lớp XmlTextWriter cho phép bạn xuất XML thành một chuỗi, một file hoặc một đối tượng a TextWriter. Giống như XmlTextReader, nó là một kiểu forward-only, non-cached. XmlTextWriter có thể cấu hình cao, cho phép bạn chỉ rõ những thứ như cho phép thục đầu dòng, số thục đầu dòng, kí tự chỉ dẫn nào được dùng trong các giá trị thuộc tính cho phép namespace hỗ trợ. C. Nêu các tên lớp đọc và ghi file XML và giải thích các tên lớp đó Trả lời: Tên lớp Giải thích XmlReader Một lớp đọc trừu tượng nhanh và non-cached dữ liệu XML. XmlReader được thiết kế giống như bộ phân tách SAX. XmlWriter Một lớp viết trừu tượng nhanh và non-cached dữ liệu XML trong
  • 21. một dòng hoặc định dạng file. XmlTexReader Mở rộng của XmlReader. Cung cấp chuỗi truy cập nhanh dữ liệu XML. XmlTexWriter Mở rộng của XmlWriter. Phát nhanh các dòng XML. D. Bạn hãy viết một chuỗi kết nối trong file cấu hình để kết nối C# với CSDL Trả lời: <connectStr>Data Source=ADMINSQLEXPRESS; Initial Catalog =QLBH; Integrated Security=SSPI;</connectStr> E. Hãy nêu cách sử dụng Schema property? Trả lời: Schemas property của XmlValidatingReader chứa một XmlSchemaCollection, có thể tìm thấy trong không gian tên System.Xml.Schema. Tập hợp này tổ chức load lại loaded XSD và XDR schemas. Nó cực nhanh đặc biệc là khi bạn cần kiểm tra sự hợp lệ của nhiều tài liệu khác nhau, vì sơ đồ sẽ không được load mỗi khi kiểm tra. Các bước sử dụng thuộc tính này như sau, bạn tạo một đối tượng XmlSchemaCollection. Phương thức Add(), nằm trong một XmlSchemaCollection, có bốn quá tải. Bạn có thể truyền nó cho một đối tượng xuất phát từ XmlSchema, một đối tượng xuất phát từ XmlSchemaCollection, một chuỗi không gian tên với chuỗi URI của file sơ đồ và một đối tượng xuất phát từ XmlReader chứa trong sơ đồ. F. Để sử dụng XmlTexReader cần khai báo thư viện nào? Trả lời: using System.Xml; 3. Câu hỏi trắc nghiệm 1. Một lớp viết trừu tượng nhanh và non-cached dữ liệu XML trong một dòng hoặc định dạng file. A. XmlReader B. XmlWriter C. XmlTexReader 2. Một lớp trừu tượng miêu tả một nút đơn trong một tài liệu XML. Lớp cơ sở cho các lớp khác trong namespace XML. A. XmlDocument B. XmlDataDocument C. XmlNode
  • 22. 3. Thuộc tính HasAttributes sẽ???? A. Trả về giá trị tr e nế ó b t kì th ộ tính nào òn không sẽ trả về false. B. Cho bạn biết có bao nhiêu thuộc tính. C. Trả về một thuộc tính thông qua tên hoặc chỉ mục. 4. Nếu bạn muốn xác nhận một tài liệu XML, bạn sẽ cần phải sử dụng lớp XmlValidatingReader. Nó chứa các khả năng giống như XmlTextReader (Cả hai đều xuất phát từ XmlReader) nhưng XmlValidatingReader có thêm thuộc tính: A. ValidationType. B. Schemas. C. SchemaType. D. A,B,C đúng.
  • 23. MỤC LỤC PHẦN I: GIỚI THIỆU Error! Bookmark not defined. I. Giới thiệu ........................................................................................................................... 23 II. Phân công nhóm................................................................................................................. 24 PHẦN II: NỘI DUNG 25 I. Giới thiệu thư viện thực thi................................................................................................ 25 II. Qui trình tạo thư viện thực thi............................................................................................ 26 PHẦN III: KẾT LUẬN 31 PHẦN I: GIỚI THIỆU I. Giới thiệu Ngày nay, với sự phát triển mạnh mẽ của khoa học kỹ thuật đã dẫn tới sự ra đời của chiếc máy tính. Nó đã trở thành phương tiện không thể thiếu trong học tập cũng như giải trí…Phát triển song song với nó là sự ra đời của nhiều chương trình ứng dụng giúp chúng ta quản lý, điều khiền các hoạt động công việc, học tập của chúng ta nhanh hơn, hiệu quả và hiện đại hơn. Nhưng nếu một chương trình không có thư viện thực thi thì sẽ thiếu đi tính chuyên nghiệp trong một phần mềm quản lý và điều này sẽ gây khó khăn cho người quản lý khi phải quản lý nhiều loại người dùng khác nhau trong hệ thống, khi phát sinh hư hỏng hay đánh mất dữ liệu thì sẽ rất khó có thể tìm ra ai đã làm điều đó. Vì lý do trên, nhóm chúng em đã chọn đề tài “Thư viện thực thi trong hương trình q ản lý”. Trên cơ sở tự nghiên cứu, phát triển và sự giúp đỡ của thầy Huỳnh Lý Thanh Nhàn đã đóng góp những ý kiến cho việc nghiên cứu của chúng em cũng như trong các thức lập trình. Bài báo được viết với mục đích giúp cho các bạn đọc biết về công dụng, hiểu quả của thư viện thực thi cũng như có thể thiết kế được một phần mềm hiệu quả và sáng tạo với những thư viện thực thi của chính mình.
  • 24. II. Phân công nhóm STT Tên Công việc 1 Huỳnh Minh Phương DTH114120 Viết code chương trình, quay video, kiểm tra và tập hợp tài liệu 2 Võ Thị Thanh Hằng DTH114094 Soạn word (Phần I: Giới thiệu, Phần II: Nội dung) 3 Lê Trương Yến Khanh DTH114103 Soạn word(Phần II: Nội dung, Phần III: Kết luận) 4 Nguyễn Thị Linh Chi DTH114154 Soạn slide 5 Nguyễn Văn Thành DTH114193 Soạn slide
  • 25. PHẦN II: NỘI DUNG 1. Giới thiệ thư viện thực thi Thư viện thực thi là một file giúp cho người dùng có thể quản lý được những đối tượng nào đã đăng nhập, đăng xuất ở thời điểm và thực hiện những chức năng nào trên cơ sở dữ liệu. File thư viện thực thi có thể sử dụng nhiều loại file khác nhau để lưu trữ nhưng ở đây mình sử dùng file .txt để lưu dữ liệu và truy xuất đơn giản hơn. Ví dụ: file thực thi text.txt Cơ chế hoạt động của file thư viện thực thi như sau: Đầu tiên file sẽ lưu lại tên người dùng đang sử dụng chương trình với quyền tương ứng của họ, thời điểm đối tượng đăng nhập vào hệ thống và thực hiện trên CSDL nào. Tiếp theo là đối tượng đã sử dụng chức năng nào trong CSDL đó. Cuối cùng là thời gian đăng xuất.
  • 26. 2. Qui trình tạo thư viện thực thi Bước 1: Tạo class thư viện với 2 phương thức ghi thông tin đăng nhập và ghi thông tin đăng xuất. Bước 2: Tạo phương thức GhiThongTinDangNhap() trong class thư viện. Phương thức này có 5 đối số truyền vào và đều là kiểu string, phương thức này giúp lưu lại những thông tin của đối tượng đã đăng nhập vào hệ thống với quyền nào, thời điểm đăng nhập và thực hiện trên CSDL nào của hệ thống. Các đối số truyền vào có thể thay đổi tùy vào từng hệ thống khác nhau. 1 public static int tam=0; 2 //khai bao bien cho lop FileStream 3 public FileStream fs; 4 //cac doi so chuyen vao 5 public void GhiThongTinDangNhap(string bang, string them,string xoa,string luu, string inbang) 6 { 7 //luu file voi ten text va định dang la txt 8 fs = new FileStream("text.txt", FileMode.Append);
  • 27. 9 //khai bien cho lop StreamWriter 10 StreamWriter sw = new StreamWriter(fs); 11 if (tam == 0) 12 { 13 //lay ten nguoi dung tu lop DN_taikhoan va luu lai 14 sw.WriteLine("Người dùng: " + DN_taikhoan.ten); 15 //lay quyen nguoi dung tu lop DN_taikhoan và luu lai 16 sw.WriteLine("Quyền:" + DN_taikhoan.quyen); 17 //thoi gian dang nhap vao he thong 18 sw.WriteLine("Đăng nhập: " + DateTime.Now); 19 //doi so bang duoc truyen vao 20 sw.WriteLine("Thao tác trên bảng: " + bang); 21 } 22 if (tam == 1) 23 { 24 //luu cac doi so duoc truyen vao 25 sw.WriteLine("Thực hiện chức năng: " + them); 26 sw.WriteLine("Thực hiện chức năng: " + xoa); 27 sw.WriteLine("Thực hiện chức năng: " + luu); 28 sw.WriteLine("Thực hiện chức năng: " + inbang); 29 } 30 sw.WriteLine(".................................n"); 31 sw.Close(); 32 fs.Close(); 33 } Bước 3: Tạo phương thức GhiThongTinDangXuat() trong class thư viện. Phương thức này không có đối số truyền vào, nó dùng để lưu lại thời gian đăng xuất của người dùng sau khi đăng nhập và thực hiện các thao tác trên CSDL. 1 public void GhiThongTinDangXuat() 2 { 3 //luu file voi ten text va định dang la txt 4 fs = new FileStream("text.txt", FileMode.Append); 5 StreamWriter sw = new StreamWriter(fs);
  • 28. 6 //lay ten nguoi dung tu lop DN_taikhoan va luu lai 7 sw.WriteLine("Người dùng: " + (string)DN_taikhoan.ten); 8 sw.WriteLine("Đăng xuất: " + DateTime.Now); 9 sw.WriteLine("@--------------------------@n"); 10 sw.Close(); 11 fs.Close(); 12 } Bước 4: Tạo form thư viện để hiển thị file thực thi. Bước 5: Tạo các control trong form. Trong toolbox, ta kéo thả button và richtextbox vào form thư viện và đổi tên thành btn_mofile và rtb_thuvien, cụ thể như sau:
  • 29. Bước 6: Trong sự kiện click của button để thực hiện đổ dữ liệu từ file text.txt vào richtextbox ta gõ dòng code sau: 1 private void btn_mofile_Click(object sender, EventArgs e) 2 { 3 //showdialog cho nguoi dung lua chon file can mo 4 if (openFileDialog1.ShowDialog() == DialogResult.OK) 5 { 6 rtb_thuvien.Text = File.ReadAllText("text.txt"); 7 } 8 } Bước 7: Tạo form main.
  • 30. Bước 8: Tạo 1 buton để khi click vào sẽ hiển thị form thư viện. Và khi ckick vào sẽ hiển thị form thư viện ta đã tạo trước đó.
  • 31. 1 fm_ThuVien f_tv; 2 private void mi_thuvien_ItemClick(object sender,ItemClickEventArgs e) 3 { 4 if (f_tv == null || f_tv.IsDisposed == true) 5 { 6 //cac doi so truyen vao phuong thuc GhiThongTinDangNhap() 7 //tv la bien cua lop thu vien 8 tv.GhiThongTinDangNhap("THƯ VIỆN THỰC THI", null, null, null,null); 9 f_tv = new fm_ThuVien(); 10 f_tv.MdiParent = this; 11 f_tv.Show(); 12 } 13 } Bước 9: Gọi phương thức ghi thông tin đăng nhập hoặc ghi thông tin đăng xuất trong form main, tùy vào yêu cầu của hệ thống mà ta sẽ gọi 2 phương thức này ở đâu và các đối số truyền vào sẽ là gì? 1 private void mi_dangxuat_ItemClick(object sender, ItemClickEventArgs e) 2 { 3 //có thể thêm các dòng code xữ lý thêm 4 . . . . . . . . . . . . . . . . . 5 tv1.GhiThongTinDangXuat(); 6 . . . . . . . . . . . . . . . . . 7 } Bước 10: Ngoài ra chúng ta có thể lưu các thao tác thêm, xóa, sửa, in của người dùng khi thực hiện trên hệ thống vào file. 1 private void bnt_them_Click(object sender, EventArgs e) 2 { 3 //có thể thêm các dòng code xữ lý thêm 4 . . . . . . . . . . . .
  • 32. 5 tv.GhiThongTinDangNhap(null, "Thêm(Phòng)",null,null,null); 6 . . . . . . . . . . . . . . . 7 } Tương tự cho các thao tác xóa, sửa, in. PHẦN III: KẾT LUẬN Qua bài viết, nhóm chúng em hy vọng sẽ giúp bạn đọc phần nào hiểu được cách xây dựng được một thư viện thực thi. Cuối cùng, chân thành cảm ơn đến thầy Huỳnh Lý Thanh Nhàn đã tạo điều kiện, giúp đỡ nhóm trong quá trình nghiên cứu và phát triển đề tài. Mặc dù chương trình vẫn chưa hoàn thiện như nhóm em mong muốn, nhóm chúng em mong đươc sự góp ý của thầy và các bạn để xây dựng chương trình tốt hơn. Xin chân thành cảm ơn !
  • 33. Mục Lục I. MÔ TẢ VÀ LỢI ÍCH CỦA ĐỀ TÀI. ...............................................................................................0 II. DANH SÁCH CÁC CHỨC NĂNG CHÍNH TRONG CHƯƠNG TRÌNH. ...............................1 1. Hệ thống...........................................................................................................................................1 2. Danh mục.........................................................................................................................................2 3. Nghiệp vụ. ........................................................................................................................................3 4. Tìm kiếm. .........................................................................................................................................3 5. Báo cáo – Thống kê. ........................................................................................................................3 6. Trợ gúp.............................................................................................................................................3 III. KHAI BÁO NGƯỜI DÙNG SỬ DỤNG VÀ PHÂN QUYỀN. ....................................................4 1. anh sá h người dùng và chứ năng được sử dụng tương ứng..................................................4 2. Thiết kế bảng người dùng (CSDL). ...............................................................................................5 3. Thực hiện phân quyền theo mô hình ba lớp. ................................................................................5 IV. HƯỚNG DẪN CÁC BƯỚC PHÂN QUYỀN CHI TIẾT...........................................................20 Bước 1:Thiết kế quan hệ NGUOIDUNG................................................................................................20 Bước 2:Thiết kế FormMain.....................................................................................................................21 Bước 3:Thiết kế form đăng nhập.............................................................................................................25 Bước 4:Xây dựng lớp người dùng DataLayer.........................................................................................28 Bước 5:Xây dựng lớp BusinessLayer. ....................................................................................................30 Bước 6: Viết code cho DangNhap.cs ( Lớp GUI)...................................................................................32 Bước 7: Phân quyền cho FornMain.cs ( Lớp GUI).................................................................................32 V. BẢNG PHÂN CÔNG........................................................................................................................35 VI. BÀI TẬP THỰC HÀNH...............................................................................................................35 VII. KẾT LUẬN....................................................................................................................................36 I. MÔ TẢ VÀ LỢI ÍCH CỦA ĐỀ TÀI. 1. Mô tả đề tài.
  • 34. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 1 | 262 ‒ Ở hầu hết các chương trình quản lý, để đảm bảo tính an toàn cho dữ liệu cũng như tránh tình trạng ai cũng sủ dụng được những chức năng mang quyền hạn cao, vấn đề đặt ra cho người lập trình là phải phân cấp tất cả các chức năng trong chương trình, với mỗi người dùng đăng nhập vào hệ thống thì họ có những quyền hạn để sử dụng chương trình, với mỗi quyền hạn tương ứng với những chức năng cụ thể. ‒ Với đề tài trên, nhóm tiến hành phân quyền trên chương trình quản lý nhân sự của một công ty (tự xây dựng) và tiến hành phân quyền người dùng trên chính phần mềm này. ‒ Trong chương trình chúng ta sẽ có danh sách những người dùng sau đây : + Người dùng Admin (Giám Đốc) + Người dùng Nhân Viên Quản Lý + Người dùng Nhân Viên ‒ Với người dùng Admin (Giám Đốc) : người dùng này sẽ có toàn quyền, có nghĩa là Giám Đốc sẽ sử dụng được tất cả các chức năng trong chương chình quản lý nhân sự. ‒ Với quyền là nhân viên quản lý thì người dùng này có quyền sử dủng các chức năng quản lý như : quản lý nhân viên, quàn lý phòng ban, quản lý lương của nhân viên, ..v.v. ‒ Quyền nhân viên bình thường thì hầu như chỉ được sử dụng các chức năng cơ bản của hệ thống. ‒ Công việc phân quyền người dùng được thực hiện trên ngôn ngữ lập trình cấp cao C# . Với mỗi loại người dùng sau khi đăng nhập vào hệ thống sẽ lấy quyền người dùng dựa vào tên đăng nhập và cuối cùng là cho các tắt/bật các chức năng tương ứng với quyền người dùng. 2. Mụ đí h ủa phân quyền người dùng. Việc phân quyền ngày nay không còn nhằm chỉ là phân công công việc. Phân quyền ngày nay còn có nhiều mục đích. Những mục đích của việc ủy quyền, tránh thoái thác trách nhiệm của những nhân sự trong công ty : + Phân rõ chức năng và nhiệm vụ của mỗi nhân viên + Xác lập quyền hạn, trách nhiệm với tửng đầu công việc II. DANH SÁCH CÁC CHỨC NĂNG CHÍNH TRONG CHƯƠNG TRÌNH. 1. Hệ thống. STT Chứ năng Mô tả 1 Đăng nhập Cho phép người dùng sử dụng tài khoảng của mình đăng nhập để giao tiếp với úng dụng 2 Đăng xuất Thoát khỏi tài khoảng của người dùng đang sử dụng chương trình 3 Đổi mật khẩu Cho phép người dùng đổi mật khẩu của tài
  • 35. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 2 | 262 khoảng hiện tại đang đăng nhập vào hệ thống. 4 Quản lý người dùng Cho phép nhà quản người dùng admin thực hiện thêm xoá sửa thông tin người dùng. 5 Sao lưu dữ liệu Sao lưu dữ liệu của cơ sở dữ liệu để tránh trường hợp hệ thống bị sự cố làm mất dữ liệu của CSDL. 6 Phục hồi dữ liệu Khôi phục lại dữ liệu dựa vào mẫu tin đã dược sao lưu trước đó. Phục hồi lại nguồn dữ liệu có trạng thái lúc được sao lưu 7 Thoát Thoát khỏi ứng dụng (tắt chương trình) 2. Danh mục. STT Chứ năng Mô tả 1 Danh mục Nhân viên Hiển thị form Nhân Viên cho phép nhà quản trị thực hiện xoá, sửa thông tin nhân viên trong công ty hoặc thêm một nhân viên mới vào danh sách nhân viên của công ty. 2 Danh mục Phòng ban Cho phép người dùng là nhà quản trị quản lý danh mục các phòng ban trong công ty. 3 Danh mục Chức vụ Cho phép người dùng là nhà quản trị quản lý danh sách các chức vụ có trong công ty. 4 Danh mục Chuyên môn Cho phép người dùng là nhà quản trị quản lý danh mục các chuyên môn của mỗi nhân viên trong công ty. 5 Danh mục Trình độ Cho phép người dùng là nhà quản trị quản lý danh mục trình độ trong công ty. 6 Danh mục Hợp đồng Cho phép người dùng là nhà quản trị quản lý danh mục các hợp đồng trong công ty. 7 Danh mục Khen thưởng Cho phép người dùng là nhà quản trị quản lý danh sách nhân viên được khen thưởng trong công ty. 8 Danh mục Kỹ luật Cho phép người dùng là nhà quản trị quản lý danh mục các phòng ban trong công ty. 9 Danh mục Bảo hiểm Cho phép người dùng là nhà quản trị quản lý danh mục các bảo hiểm có trong công ty của mỗi nhân viên. 10 Danh mục Nghỉ phép Cho phép người dùng là nhà quản trị quản lý danh sách nhân viên đã nghỉ phép ban trong công ty. 11 Danh mục Thân nhân Cho phép người dùng là nhà quản trị quản lý danh mục các thân nhân của mỗi nhân viên trong công ty. 12 Danh mục Dân tộc Cho phép người dùng là nhà quản trị quản lý danh mục dân tộc trong công ty.
  • 36. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 3 | 262 13 Danh mục Tôn giáo Cho phép người dùng là nhà quản trị quản lý danh mục tôn giáo trong công ty. 3. Nghiệp vụ. STT Chứ năng Mô tả 1 Quản lý Nhân Viên Quản lý thông tin nhân viên trong công ty. 2 Chuyển phòng ban Giải quyết chuyển phòng ban cho các nhân viên khi được thay đổi chức vụ 3 Quản lý Lương Cho phép người dùng đổi mật khẩu của tài khoảng hiện tại đang đăng nhập vào hệ thống. 4 Giải quyết ứng lương Cho phép nhà quản người dùng admin thực hiện thêm xoá sửa thông tin người dùng. 4. Tìm kiếm. STT Chứ năng Mô tả 1 Tìm kiếm Nhân Viên Cho phép tìm kiếm thông tin của tất cả nhân viên có trong công ty. 2 Tìm kiếm Thân nhân Thực hiện tìm kiếm thông tin thân nhân của mỗi nhân viên thông qua mã của nhân viên đó. 3 Tìm kiếm Bảng Lương Cho phép tìm kiếm bảng lương tháng của các nhân viên, bảng lương theo quý hoặc theo năm của các nhân viên, hay bảng lương cá nhân của mỗi nhân viên. 5. Báo cáo – Thống kê. STT Chứ năng Mô tả 1 Lập Bảng kỹ luật Cho phép xem, thêm, xoá, sửa hoặc in bảng danh sách nhân viên bị kỹ luật. 2 Lập Bảng nghỉ phép Thực hiện xem, thêm, xoá, sửa hoặc in bảng danh sách nhân viên được giải quyết nghỉ phép. 3 Lập Bảng danh sách khen thưởng Cho phép xem, thêm, xoá, sửa hoặc in bảng danh sách nhân viên được khen thưởng. 4 Lập Bảng lương Thực hiện xem, thêm, xoá, sửa bảng lương tháng của các nhân viên, bảng lương theo quý hoặc theo năm của các nhân viên, hay bảng lương cá nhân của mỗi nhân viên. 6. Trợ gúp. STT Chứ năng Mô tả 1 Thông tin chương trình Hiển thị form chứa thông tin của chương trình. 2 Hướng dẫn sử dụng Xuất hiện file hướng dẫn sử dụng chương
  • 37. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 4 | 262 trình. III. KHAI BÁO NGƯỜI DÙNG SỬ DỤNG VÀ PHÂN QUYỀN. 1. anh sá h người dùng và chứ năng được sử dụng tương ứng. STT Tên người dùng Danh sách chứ năng được sử dụng 1 Giám đốc ( Admin) Sử dụng được tất cả các chức năng của chương trình 2 Nhân viên quản lý Đăng nhập Đăng xuất Đổi mật khẩu Thoát Danh mục Nhân viên Danh mục Phòng ban Danh mục Chức vụ Danh mục Chuyên môn Danh mục Trình độ Danh mục Hợp đồng Danh mục Khen thưởng Danh mục Danh mục Kỹ luật Danh mục Bảo hiểm Danh mục Nghỉ phép Danh mục Thân nhân Danh mục Dân tộc Danh mục Tôn giáo Quản lý Nhân Viên Chuyển phòng ban Quản lý Lương Giải quyết ứng lương Tìm kiếm Nhân Viên Tìm kiếm Thân nhân Tìm kiếm Bảng Lương Lập Bảng kỹ luật Lập Bảng nghỉ phép Lập Bảng danh sách khen thưởng Lập Bảng lương Thông tin chương trình Hướng dẫn sử dụng 3 Nhân viên Đăng nhập Đăng xuất Đổi mật khẩu Thoát Danh mục Nhân viên Danh mục Phòng ban Danh mục Chức vụ Danh mục Chuyên môn Danh mục Trình độ
  • 38. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 5 | 262 Danh mục Hợp đồng Danh mục Khen thưởng Danh mục Danh mục Kỹ luật Danh mục Bảo hiểm Danh mục Nghỉ phép Danh mục Thân nhân Danh mục Dân tộc Danh mục Tôn giáo Thông tin chương trình Hướng dẫn sử dụng 2. Thiết kế bảng người dùng (CSDL). STT Thuộc tính Kiểu dữ liệu Mô tả 1 TENDN Varchar(50) Tên đăng nhập 2 MATKHAU Varchar(50) Mật khẩu là dãy ký tự không quy định về chiều dài để tính bảo mật cao hơn. 3 QUYEN Tinyint Quyền được quy định là các số nguyên, được đánh số từ 1 tới n (n là tổng số quyền có trong công ty) 4 MOTAQUYEN Nvarchar(50) Chi tiết hoá các quyền người dùng đăng nhập. hệ thống hiện tại có các quyền sau : Admin, nhân viên quản lý, nhân viên  Bảng người dùng trong mô hình quan hệ : Hình 1 3. Thực hiện phân quyền theo mô hình ba lớp. a) Phân quyền chi tiết trên form chính (frmMain).
  • 39. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 6 | 262 ‒ Với quyền Admin (Giám Đốc). + Danh sách các control của Ribon: STT Tên control Trạng thái Bật Tắt 1 tsbDangNhap  2 tsbDangXuat  3 tsbDoiMatKhau  4 tsbQuanLyNguoiDung  5 tsbThoat  6 tsbSaoLuuDL  7 tsbPhucHoiDL  8 rgbiSkins  9 tsbNhanVien  10 tsbPhongBan  11 tsbChucVu  12 tsbChuyenMon  13 tsbTrinhDo  14 tsbHopDong  15 tsbKhenThuong  16 tsbKyLuat  17 tsbLichCongTac  18 tsbBaoHiem  19 tsbNghiPhep  20 tsbThanNhan  21 tsbDanToc  22 tsbTonGiao  23 tsbNV_NhanVien  24 tsbChuuyenPhongBan  25 tsbLuong  26 tsbUngLuong  27 tsbTK_NhanVien  28 tsbTK_ThanNhan  29 tsbTK_Luong  30 tsbBangKyLuat  31 tsbBangNghiPhep  32 tsbBangKhenThuong  33 tsbBangLuong  34 tsbThongTinPM  35 tsbHuongDanSuDung  + Hình ảnh mô tả:
  • 40. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 7 | 262 Hình 2.1 : Admin – Hệ thống Hình 2.2 : Admin – Danh Mục
  • 41. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 8 | 262 Hình 2.3 : Admin – Nghiệp Vụ Hình 2.3 : Admin – Tìm Kiếm
  • 42. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 9 | 262 Hình 2.4 : Admin – Báo Cáo –Thống Kê Hình 2.4 : Admin – Trợ Giúp ‒ Quyền Nhân viên quản lý
  • 43. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 10 | 262 + Danh sách các control của Ribon: STT Tên control Trạng thái Bật Tắt 1 tsbDangNhap  2 tsbDangXuat  3 tsbDoiMatKhau  4 tsbQuanLyNguoiDung  5 tsbThoat  6 tsbSaoLuuDL  7 tsbPhucHoiDL  8 rgbiSkins  9 tsbNhanVien  10 tsbPhongBan  11 tsbChucVu  12 tsbChuyenMon  13 tsbTrinhDo  14 tsbHopDong  15 tsbKhenThuong  16 tsbKyLuat  17 tsbLichCongTac  18 tsbBaoHiem  19 tsbNghiPhep  20 tsbThanNhan  21 tsbDanToc  22 tsbTonGiao  23 tsbNV_NhanVien  24 tsbChuuyenPhongBan  25 tsbLuong  26 tsbUngLuong  27 tsbTK_NhanVien  28 tsbTK_ThanNhan  29 tsbTK_Luong  30 tsbBangKyLuat  31 tsbBangNghiPhep  32 tsbBangKhenThuong  33 tsbBangLuong  34 tsbThongTinPM  35 tsbHuongDanSuDung  + Hình ảnh mô tả:
  • 44. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 11 | 262 Hình 3.1 :Nhân Viên QL – Hệ thống Hình 3.2 : Nhân Viên QL – Danh Mục
  • 45. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 12 | 262 Hình 3.3 : Nhân Viên QL –Nghiệp Vụ Hình 3.4 :Nhân Viên QL – Tìm kiếm
  • 46. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 13 | 262 Hình 3.5 : Nhân Viên QL – Báo Cáo – Thống Kê Hình 3.6 : Nhân Viên QL – Trợ Giúp
  • 47. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 14 | 262 ‒ Quyền Nhân viên. + Danh sách các control của Ribon: STT Tên control Trạng thái Bật Tắt 1 tsbDangNhap  2 tsbDangXuat  3 tsbDoiMatKhau  4 tsbQuanLyNguoiDung  5 tsbThoat  6 tsbSaoLuuDL  7 tsbPhucHoiDL  8 rgbiSkins  9 tsbNhanVien  10 tsbPhongBan  11 tsbChucVu  12 tsbChuyenMon  13 tsbTrinhDo  14 tsbHopDong  15 tsbKhenThuong  16 tsbKyLuat  17 tsbLichCongTac  18 tsbBaoHiem  19 tsbNghiPhep  20 tsbThanNhan  21 tsbDanToc  22 tsbTonGiao  23 tsbNV_NhanVien  24 tsbChuuyenPhongBan  25 tsbLuong  26 tsbUngLuong  27 tsbTK_NhanVien  28 tsbTK_ThanNhan  29 tsbTK_Luong  30 tsbBangKyLuat  31 tsbBangNghiPhep  32 tsbBangKhenThuong  33 tsbBangLuong  34 tsbThongTinPM  35 tsbHuongDanSuDung  + Hình ảnh mô tả:
  • 48. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 15 | 262 Hình 4.1 : Nhân Viên – Hệ Thống Hình 4.2 : Nhân Viên – Danh Mục
  • 49. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 16 | 262 Hình 4.3 :Nhân Viên –Nghiệp Vụ Hình 4.4 :Nhân Viên –Tìm Kiếm
  • 50. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 17 | 262 Hình 4.5 :Nhân Viên –Báo Cáo-Thống Kê Hình 4.6 : Nhân Viên – Trợ Giúp
  • 51. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 18 | 262 b) Form đăng nhập. ‒ Hình ảnh: Hình 5 : Form đăng nhập ‒ Danh sách các control : STT Control 1 reflabDangNhap 2 labTenDangNhap 3 txtTenDangNhap 4 labMatKhau 5 txtMatKhau 6 btnDongY 7 btnHuy
  • 52. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 19 | 262 ‒ Các xử lý : STT Tên xử lý Mô tả 1 LayQuyen(string,string) Hàm trả về là một giá trị kiểu int thuộc 1 trong các giá trị sau (1,2,3) tương ứng với các quyền đăng nhập vào hệ thống, hai tham số truyền vào : txtTenDangNhap.Text và txtMatKhau.Text. 2 KTDN(string) Hàm trả về kiều bool, có chức năng kiểm tra sự tồn tại của tên đăng nhập. Tham số duy nhất truyền vào là txtTenDangNhap.Text. Nếu tên đăng nhập hợp lệ hàm trả về giá trị là true, ngược lại sẽ có giá trị là false. 3 KTMK(string, string) Hàm trả về kiểu bool, kiểm tra tính đúng đắn của mật khẩu dựa vào tên đăng nhập tương ứng, hai tham số truyền vào : txtTenDangNhap.Text và txtMatKhau.Text. Nếu mật khẩu hợp lệ hàm trả về giá trị là true, ngược lại sẽ có giá trị là false. 4 btnDongY_Click (object, EventArgs) Hàm không có giá trị trả về (void), hàm sử dụng hai hàm thành viên khác : KTDN(string) và KTMK(string, string) nếu một trong hai hàm này có giá trị thì xuất hiện thông báo lỗi tương ứng. Nếu cả hai hàm thành viên đều có giá trị là true thì Form Main sẽ được gọi, đồng thời thông tin cùa hai textbox sẽ được lưu lại. c) Người dùng BusinessLayer. ‒ Hàm kiểm tra tên đăng nhập: Hàm trả về kiều bool, có chức năng kiểm tra sự tồn tại của tên đăng nhập. Tham số duy nhất truyền kiểu string. Nếu tên đăng nhập hợp lệ hàm trả về giá trị là true, ngược lại sẽ có giá trị là false. ‒ Hàm kiểm tra mật khầu dựa trên tên đăng nhập: Hàm trả về kiểu bool, kiểm tra tính đúng đắn của mật khẩu dựa vào tên đăng nhập tương ứng, hai tham số truyền vào kiểu string. Nếu mật khẩu hợp lệ hàm trả về giá trị là true, ngược lại sẽ có giá trị là false. ‒ Hàm lấy quyền người dùng: Hàm trả về là một giá trị kiểu int thuộc 1 trong các giá trị sau (1,2,3) tương ứng với các quyền đăng nhập vào hệ thống, hai tham số truyền vào kiểu string.
  • 53. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 20 | 262 d) Người dùng DataLayer. ‒ Hàm kiểm tra tên đăng nhập: Hàm trả về kiều bool, có chức năng kiểm tra sự tồn tại của tên đăng nhập. Tham số duy nhất truyền kiểu string. Nếu tên đăng nhập hợp lệ hàm trả về giá trị là true, ngược lại sẽ có giá trị là false. ‒ Hàm kiểm tra mật khầu dựa trên tên đăng nhập: Hàm trả về kiểu bool, kiểm tra tính đúng đắn của mật khẩu dựa vào tên đăng nhập tương ứng, hai tham số truyền vào kiểu string. Nếu mật khẩu hợp lệ hàm trả về giá trị là true, ngược lại sẽ có giá trị là false. ‒ Hàm lấy quyền người dùng: Hàm trả về là một giá trị kiểu int thuộc 1 trong các giá trị sau (1,2,3) tương ứng với các quyền đăng nhập vào hệ thống, hai tham số truyền vào kiểu string. IV. HƯỚNG DẪN CÁC BƯỚC PHÂN QUYỀN CHI TIẾT Bước 1:Thiết kế quan hệ NGUOIDUNG. a) Code sql cho bảng người dùng : Hình 6.1 b) Hình ảnh bảng người dùng trong CSDL Hình 6.2
  • 54. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 21 | 262 c) Nhập liệu cho bảng người dùng : Hình 6.3 Bước 2:Thiết kế FormMain. a) Tạo Project mới: Mở Visual Studio chọn File -> New ->Project(hoặc Create Project) Hình 7.1
  • 55. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 22 | 262 Hình 7.2 Thực hiện 3 bước như hình 7.3 Chọn vào đây
  • 56. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 23 | 262 Hình 7.3 Ta được giao diện FormMain như sau : Hình 7.4: Giao diện chính sao khi tạo b) Chỉnh sửa lại theo mục đích của bản thân Chọn vào Ribon -> click vào mũi tên bên phải -> Chọn RunDesign 1 2 3
  • 57. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 24 | 262 Chỉnh sửa tên RibonPage Hình 7.5 Sửa caption các button Hình 7.6 Sửa Name cho Button
  • 58. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 25 | 262 Hình 7.7 c) Sau khi chỉnh sửa tất cả ta được FormMain hoàn chỉnh như sau : Hình 7.8 :Form Main Bước 3:Thiết kế orm đăng nhập. a) Vào cửa sổ Solution click chuột phải vào tên Solutoin -> add- >Windows Form…
  • 59. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 26 | 262 Hình 8.1: Chèn Form đăng nhập Hình 8.2 Đặt tên cho form mới b) Kéo các Control vào từ cửa sổ ToolBox
  • 60. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 27 | 262 Hình 8.3 Control ReflectionImage Hình 8.3 Chọn hình cho Control ReflectionImage Hình 8.4 Control ReflectionLabel
  • 61. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 28 | 262 Hình 8.4 Chỉnh sửa thuộc tính cho Control ReflectionLabel Hình 8.5 Control Label,Button, Textbox Bước 4:Xây dựng lớp người dùng DataLayer. a) Chèn class người dùng DataLayer
  • 62. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 29 | 262 Hình 9.1 Chèn class Người dùng b) Hàm kiểm tra tên đăng nhập Hình 9.2 c) Hàm kiểm tra mật khẩu
  • 63. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 30 | 262 Hình 9.3 d) Hàm lấy quyền Hình 9.4 Bước 5:Xây dựng lớp BusinessLayer. a) Chèn class người dùng BusinessLayer Hình 10.1 b) Hàm kiểm tra tên đăng nhập
  • 64. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 31 | 262 Hình 10.2 c) Hàm kiểm tra mật khẩu. Hình 10.3 d) Hàm lấy quyền người dùng. Hình 10.4
  • 65. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 32 | 262 Bước 6: Viết code cho DangNhap.cs ( Lớp GUI). Bước 7: Phân quyền cho FornMain.cs ( Lớp GUI). a) Quyền giám đốc( hàm Giamdoc() kiểu void) STT Tên control Enable true false 1 tsbDangNhap  2 tsbDangXuat  3 tsbDoiMatKhau  4 tsbQuanLyNguoiDung  5 tsbThoat  6 tsbSaoLuuDL  7 tsbPhucHoiDL  8 rgbiSkins 
  • 66. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 33 | 262 9 tsbNhanVien  10 tsbPhongBan  11 tsbChucVu  12 tsbChuyenMon  13 tsbTrinhDo  14 tsbHopDong  15 tsbKhenThuong  16 tsbKyLuat  17 tsbLichCongTac  18 tsbBaoHiem  19 tsbNghiPhep  20 tsbThanNhan  21 tsbDanToc  22 tsbTonGiao  23 tsbNV_NhanVien  24 tsbChuuyenPhongBan  25 tsbLuong  26 tsbUngLuong  27 tsbTK_NhanVien  28 tsbTK_ThanNhan  29 tsbTK_Luong  30 tsbBangKyLuat  31 tsbBangNghiPhep  32 tsbBangKhenThuong  33 tsbBangLuong  34 tsbThongTinPM  35 tsbHuongDanSuDung  b) Quyền nhân viên quản lý(Hàm NhanVienQL() kieu void) STT Tên control Enable true false 1 tsbDangNhap  2 tsbDangXuat  3 tsbDoiMatKhau  4 tsbQuanLyNguoiDung  5 tsbThoat  6 tsbSaoLuuDL  7 tsbPhucHoiDL  8 rgbiSkins  9 tsbNhanVien  10 tsbPhongBan  11 tsbChucVu  12 tsbChuyenMon 
  • 67. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 34 | 262 13 tsbTrinhDo  14 tsbHopDong  15 tsbKhenThuong  16 tsbKyLuat  17 tsbLichCongTac  18 tsbBaoHiem  19 tsbNghiPhep  20 tsbThanNhan  21 tsbDanToc  22 tsbTonGiao  23 tsbNV_NhanVien  24 tsbChuuyenPhongBan  25 tsbLuong  26 tsbUngLuong  27 tsbTK_NhanVien  28 tsbTK_ThanNhan  29 tsbTK_Luong  30 tsbBangKyLuat  31 tsbBangNghiPhep  32 tsbBangKhenThuong  33 tsbBangLuong  34 tsbThongTinPM  35 tsbHuongDanSuDung  c) Quyền nhân viên STT Tên control Enable true false 1 tsbDangNhap  2 tsbDangXuat  3 tsbDoiMatKhau  4 tsbQuanLyNguoiDung  5 tsbThoat  6 tsbSaoLuuDL  7 tsbPhucHoiDL  8 rgbiSkins  9 tsbNhanVien  10 tsbPhongBan  11 tsbChucVu  12 tsbChuyenMon  13 tsbTrinhDo  14 tsbHopDong  15 tsbKhenThuong  16 tsbKyLuat 
  • 68. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 35 | 262 17 tsbLichCongTac  18 tsbBaoHiem  19 tsbNghiPhep  20 tsbThanNhan  21 tsbDanToc  22 tsbTonGiao  23 tsbNV_NhanVien  24 tsbChuuyenPhongBan  25 tsbLuong  26 tsbUngLuong  27 tsbTK_NhanVien  28 tsbTK_ThanNhan  29 tsbTK_Luong  30 tsbBangKyLuat  31 tsbBangNghiPhep  32 tsbBangKhenThuong  33 tsbBangLuong  34 tsbThongTinPM  35 tsbHuongDanSuDung  V. BẢNG PHÂN CÔNG STT Tên công việc Thành viên thực hiện 1 Viết báo cáo(Word) Nguyễn Thiện An 2 Slide báo cáo(Powerpoint) Khưu Văn Hiền 3 Quay video hướng dẫn Nguyễn Thiện An 4 Viết demo(Source code) Khưu Văn Hiền VI. BÀI TẬP THỰC HÀNH Câu 01: Phân quyền người dùng có những lợi ích gì? a) Phân rõ chức năng và nhiệm vụ của mỗi nhân viên b) Xác lập quyền hạn cho từng nhân sự c) Ủy quyền, tránh thoái thác trách nhiệm, giúp dữ liệu có tính bảo mật hơn d) Tất cả các ý trên Câu 02: Danh sách các chứ năng ủa hệ thống hiện tại gồm bao nhiêu danh mục? a) 5 b) 6 c) 7 d) 9 Câ 03: Chương trình được nhóm chọn để phân quyền có tên :
  • 69. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 36 | 262 a) Quản lý nhân viên b) Quản lý tiền lương c) Quản lý nhân sự d) Quản lý nhà hàng Câ 04: anh sá h người dùng của hệ thống hiện tại a) 2 b) 3 c) 4 d) 5 Câu 05: Nhóm thực hiện phân quyền trên mô hình nào? a) Trực tiếp b) Hai lớp c) Ba lớp d) Bốn lớp Câu 06: Bảng người dùng trong CSDL của nhóm thực hiện gồm các trường nào? a) STT, TENDN, MATKHAU, QUYEN, MOTAQUYEN b) TENDN, MATKHAU, QUYEN, MOTAQUYEN, CHITIET c) TENDN, MATKHAU, QUYEN, MOTAQUYEN d) TENNGUOIDUNG, TENDN, MATKHAU, QUYEN, MOTAQUYEN Câu 07: Có m y phương thứ được thực hiện ơ tầng GUI? a) 5 b) 6 c) 7 d) 9 VII. KẾT LUẬN. ‒ Thực hiện phân quyền người dùng trên môi trường C# . ‒ Ứng dụng trên chương trình quản lý nhân sự cho một công ty(ảo). Nhóm chúng em xin gửi lời cám ơn chân thành tới thầy Huỳnh Lý Thanh Nhàn- người trực tiếp hướng dẫn chúng em hoàn thành bài báo cáo này.
  • 70. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 37 | 262 I.Giới thiệu sơ lược về Devexpress Trong loạt bài về DevExpress tôi chủ yếu tập trung vào XPO và XAF, đây được xem là xương sống của DevExpress. DevExpress là một Framework được viết cho nền tảng .NET Framework. Nó cung cấp các control và công nghệ để phục vụ cho quá trình phát triển phần mềm. Thành phần của DevExpress gồm: WinForms Controls: Cung cấp các control cho WinForms. o ASP.NET Controls: Cung cấp các control cho WebForms. o WPF Controls: Cung cấp các control cho WPF. o Silverlight Controls: Cung cấp các control cho Silverlight. o XtraCharts: Control cung cấp các loại biểu đồ. o XtraReports: Cung cấp các control tạo báo cáo. o XPO: Cung cấp môi trường làm việc với database. o XAF: Một công nghệ mới giúp việc phát triển phần mềm một cách nhanh chóng Trải qua hàng loạt phiên bản, DevExpress đã từng bước được nâng cấp, hoàn thiện và thêm mới rất nhiều chức năng. Với phiên bản DevExpress 12.2 hiện tại, bạn đã được cung cấp những công cụ, môi trường tuyệt vời để biến những ý tưởng của bạn thành hiện thực một cách nhanh chóng, dễ dàng. II.Hướng dẫn cài đặt Devexpress 12.2.7 và cách Crack phần mềm. - Đầu tiên,bạn phải download phần mềm Devexpress phiên bản 12.2.7 về máy,nhớ download thêm phần có tên là: DevExpress.Registration.Setup.v12.2.7.msi,vì đây là file crack sau khi ta cài xong Devexpress,sẽ chạy file này để crack phần mềm. - Sau khi download xong ,bạn chạy file DXperience-12.2.7.exe để tiến hành cài đặt + Lưu ý :trước khi cài,bạn phải tắt chương trình visual studio đi. + Khi cài đặt,màn hình sẽ xuất hiện như sau :
  • 71. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 38 | 262 - Click vào chỗ khoanh tròn. Tiếp theo là:ta chọn accept &Install để tiến hành cài đặt. -Chờ quá trình cài đặt
  • 72. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 39 | 262 - Cuối cùng,nhấp vào Finish Tiếp theo là đến phần crack Bạn chạy file DevExpress.Registration.Setup.v12.2.7.msi
  • 73. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 40 | 262 Check vào visual máy bạn đang dùng hoặc check vào tất cả nếu bạn muốn.Click Next,sau đó finish là kết thúc công việc chạy file crack.Vậy là bạn vừa cài và crack xong Devexpress 12.2.7. b.Tạo dự án window form với Dev ExtraForm Wizard - Để tạo được form Dev ExtraForm Wizard,bạn mở visual studio 2008
  • 74. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 41 | 262 B2: B3: - Chọn loại Ribbon Style:Ribbon Office 2010 và Ribbon Office 2007 - Chọn loại NavigationBar:Explorer view và Navigation Pane View - Chọn loại GridControl:Table View và Layout View. 1 2
  • 75. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 42 | 262 B4:Sau khi chọn xong,click nút Create để tạo form,ta được kết quả: -Từ hình ảnh minh họa cho thấy ,khi ta tạo ở chế độ form wizard,ta sẽ được bổ sung nhiều thành phần trong form.Ví dụ như:NabarControl,Ribbon control,Image Collection.Và hơn thế nữa ,trong form Wizard,ta sẽ có được thành phần Skin, dùng để thay đổi giao diện của toàn form theo ý thích của người dùng. Chọn ribbon style Chọn loại navigation bar Chọn loại grid control
  • 76. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 43 | 262 III.RibbonControl (Menu hiện đại) i. Add danh sách hình ảnh sẵn vào một công cụ quản lý ImageCollection - Khi bạn vừa tạo xong form,thì Image Collection sẽ tự tạo ra,nếu bạn vô tình xóa đi,bạn có thể vào Toolbox chọn,rồi kéo thả vào form.
  • 77. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 44 | 262 - Để chọn hình ảnh cho ImageCollection ,ta click chuột phải->Choose Image- >ImageInfo Collection Editor->Add:Chọn hình ảnh cần thiết,sau đó ta click OK. - Để thêm RibbonPage vào form,ta chọn bất kỳ đối tượng Ribbonpage ,click phải - >Add Page - Để thêm RibbonPageGroup ,ta chọn bất kỳ đối tượng RibbonPage,click phải->Add PageGroup - Để thêm BarButtonItem,ta chọn bất kỳ đối tượng RibbonPageGroup,click phải- >Add Button IV.Chọn hình ảnh trong imagecollection cho Ribbon -Chọn hình ảnh cho RibbonPage, BarButtonItem. -Chọn toàn bộ Ribbon,chọn Run Designer,màn hình sẽ xuất hiện Lưu trữ small image Lưu trữ Large image Ribbon page RibbonPageGroup BarbuttonItem
  • 78. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 45 | 262 Chọn vào đối tượng cần chèn hình vào,sẽ có 2 chế độ ImageIndex(chọn hình nhỏ) hoặc LargeImageIndex(chọn hình lớn).Lưu ý:chọn theo index(vị trí) hình ảnh. V. Set trạng thái IsMdiContainer -Thuộc tính IsMdiContainer trong form:có 2 giá trị True hoặc False - Nói cách khác thuộc tính IsMdiContainer là cách thiết lập form cha,form con giữa các form với nhau. - Nếu IsMdiContainer=True:chế độ form cha/form con được thiết lập,khi gọi bất kỳ form nào ,nó sẽ nhảy vào form chính được thiết lập IsMdiContainer. - Mặc định,khi vừa mới tạo form, IsMdiContainer =False,nghĩa là ở chế độ bình thường. - Muốn thiết lập thuộc tính IsMdiContainer cho form ,ta vào Properties chọn,sẽ thấy thuộc tính IsMdiContainer ,tại đây,sẽ thấy có 2 thuộc tính là True hoặc False. 1 2 2
  • 79. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 46 | 262 VI.Sử dụng NavBar bên tay trái để làm thành phần Explorer - Nếu sử dụng Project Wizard phải xóa split panel và layout lại – Dock Panel Left, Main Panel trống để chứa form chương trình quản lý. - Để tạo thêm NavBarGroup:click phải->add Group - Để tạo thêm NavBarItem cho một Group nào đó->click phải->Add Item VII.Cách thay đổi biểu tượng DX icon - Chỉnh properties của RibbonControl là ApplicationIcon=image (chọn hình ảnh mình muốn thay đổi) NavbarControllNavBarControl NavBarGroup NavBarItem
  • 80. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 47 | 262 VIII.Dàn form Quản lý nhân viên dựa trên Devexpress 12.2.7  Hệ thống: đăng nhập, đăng xuất, thoát, sao lưu, phục hồi, đổi mật khẩu,quản người dùng, cài đặt(thay đổi giao diện-Skin trong Devexpress).  Danh mục:nhân viên,phòng ban,công việc,kỹ năng,thành phố,dự án,… (bảng trong cơ sở dữ liệu).  Nghiệp vụ :phân công dự án,cung cấp thiết bị,quản lý kỹ năng…. (use case của hệ thống).  Thống kê báo cáo: chi tiết cung cấp thiết bị,danh sách nhân viên trong công ty,danh sách phòng ban cùng với nhân viên phòng ban đó,danh sách dự án của mỗi thành phố,tổng kinh phí của dự án(sql để tổng kết – người dùng rất cần).  Giúp đỡ: Tìm kiếm: tìm tất cả danh mục (nhiều) và nâng cao (google), thông tin bản quyền, hướng dẫn sử dụng.  Mô phỏng giao diện cho vấn đề dàn form quản lý bán hàng - Hệ thống Chọn hình ảnh khác để làm icon trong ribbon form
  • 81. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 48 | 262 Hình 1.Hình ảnh giao diện hệ thống bán hàng Các thành phần giao diện STT Tên đối tượng Mô tả Chức năng 1 skin Chứa giao diện form Thay đổi giao diện 2 Barbtn_dangnhap Dùng để đăng nhập vào hệ thống Đăng nhập 3 Barbtn_dangxuat Dùng để đăng xuất ra hệ thống Đăng xuất 4 Barbtn_doimatkhau Đổi mật khẩu người dùng Đổi mật khẩu 5 Barbtn_saoluu Sao lưu cơ sở dữ liệu hiện tại Sao lưu 6 Barbtn_phuchoi Phục hồi cơ sở dữ liệu đã sao lưu Phục hồi 7 Barbtn_thoat Thoát khỏi hệ thống Thoát - Danh mục 1 2 3 4 5 6 7
  • 82. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 49 | 262 Hình 2.hình ảnh giao diện danh mục quản lý bán hàng  Các thành phần của giao diện STT Loại Control Đặt tên Nội dung Ghi chú 1 Devexpress.XtraBar.BarButtonItem Barbtn_nhanvien Nhân viên 2 Devexpress.XtraBar.BarButtonItem Barbtn_hanghoa Hàng hóa 3 Devexpress.XtraBar.BarButtonItem Barbtn_donvitinh Đơn vị tính 4 Devexpress.XtraBar.BarButtonItem Barbtn_kho Kho 5 Devexpress.XtraBar.BarButtonItem Barbtn_hoadon Hóa đơn 6 Devexpress.XtraBar.BarButtonItem Barbtn_daily Đại lý 7 Devexpress.XtraBar.BarButtonItem Barbtn_nhacungcap Nhà cung cấp 8 Devexpress.XtraBar.BarButtonItem Barbtn_khachhang Khách hàng - Nghiệp vụ Hình 3.hình ảnh giao diện nghiệp vụ quản lý bán hàng Các thành phần của giao diện STT Loại Control Đặt tên Nội dung Ghi chú 1 Devexpress.XtraBar.BarButtonItem Barbtn_nhaphang Nhập hàng 2 Devexpress.XtraBar.BarButtonItem Barbtn_bansi Bán sỉ 3 Devexpress.XtraBar.BarButtonItem Barbtn_banle Bán lẻ 4 Devexpress.XtraBar.BarButtonItem Barbtn_phieuthu Phiếu thu 5 Devexpress.XtraBar.BarButtonItem Barbtn_phieuchi Phiếu chi - Báo cáo-thống kê
  • 83. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 50 | 262 Hình 4.Hình ảnh giao diện báo cáo thống kê quản lý bán hàng -Từ hình minh họa,chia làm ba phần:doanh thu,thống kê về hàng hóa,thống kê về khách hàng và đại lý . Các thành phần của giao diện: STT Loại Control Đặt tên Nội dung Ghi chú 1 Devexpress.XtraBar.BarButtonItem Barbtn_doanhthuhangth ang Doanh thu hàng tháng 2 Devexpress.XtraBar.BarButtonItem Barbtn_thongketonkho Thống kê tồn kho 3 Devexpress.XtraBar.BarButtonItem Barbtn_hangsaphethan Hàng sắp hết hạn 4 Devexpress.XtraBar.BarButtonItem Barbtn_hanghetsoluong Hàng hết số lượng 5 Devexpress.XtraBar.BarButtonItem Barbtn_hàng hư hỏng và trả lại Hàng hư hỏng và trả lại 6 Devexpress.XtraBar.BarButtonItem Barbtn_daily_khachhan g Đại lý và khách hàng mua nhiều. - Trợ giúp Hình 5.hình ảnh giao diện trợ giúp của hệ thống quản lý bán hàng -Các thành phần của giao diện. STT Loại Control Đặt tên Nội dung Ghi chú 1 Devexpress.XtraBar.BarButtonItem Barbtn_thongtintacgia Thông tin tác giả
  • 84. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 51 | 262 2 Devexpress.XtraBar.BarButtonItem Barbtn_huongdansudung Hướng dẫn sử dụng IX.Tổ chức thư mục theo mô hình 3 lớp i. Data, Bussiness, Presentation và tạo ra các lớp tương ứng ii.Xử lý sự kiện click trên form main -Ở đây,ta sẽ không thiết lập thuộc tính IsMdiContainer  BUSSINESSLAYER:Chứa các lớp ở tầng Bussiness  DATALAYER: Chứa các lớp ở tầng Data  DTO:chứa các thông tin get/set của các thuộc tính  KETNOI:chứa các lợp kết nối của C# với sql server  REPORT:chứa các báo cáo- thống kê  PRESENTATION:chứa các giao diện.
  • 85. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 52 | 262 ,mà ta sẽ sử dụng xtratabControl để gọi các form khác vào form main. XtraTabControl là control được sử dụng khá phổ biến của người lập trình.Là lọa tab chuyên dụng khi gọi các form khác nhau vào form chính,vừa cân bằng được kích thước của form,vừa tạo ra các tabpage tùy biến,khiến cho giao diện form trở nên bắt mắt và dễ nhìn.Hơn thế nữa,hỗ trợ quản lý tốt các form khi gọi đồng loạy các form vào formmain một cách ngẫu nhiên. Khi sử dụng XtraTabControl ,bạn phải tùy chỉnh thuộc tính ClosePageButtonShowMod trong properties thành InActiveTabPageAndTabControlHeader Để xuất hiện nút tắt x trên form mỗi khi bạn mở form.Hơn nữa ,bạn phải viết sự kiện CloseButtonClick để khi tắt tabpage form nào đó,nó sẽ nhảy về vị trị form trước đó.  Mô phỏng khi gọi các form khác vào form main bằng cách sử dụng đến thẻ control :Xtratabcontrol  Khi click chuột gọi form vào,thì XtraTab sẽ tạo ra tabpage để chứa không gian của form được gọi. Click vào
  • 86. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 53 | 262 Hình 6.Mô phỏng khi ta click vào Button nhân viên trong danh mục Click vào
  • 87. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 54 | 262 Hình 2.Mô phỏng khi ta click vào Button phân công dự án trong nghiệp vụ Hình 3.Mô phỏng khi ta click vào Button danh sách phòng ban trong báo cáo-thống kê X.Nói thêm về thành phần thường sử dụng,đó là control :GridControl - Đây là một control được sử dụng phổ biến ,với hình ảnh bắt mắt ,hỗ trợ nhiều tính năng hơn so với vấn đề load dữ liệu lên datagridview hay listview,GridControl có những tính điểm vượt trội hơn,cùng việc hỗ trợ ở các dạng layoutview khác nhau,giúp hiển thị dữ liệu một cách sinh động và đẹp mắt theo ý thích của người dùng. Ảnh minh họa về GridControl Click vào XtraReport
  • 88. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 55 | 262  GridControl đang ở dạng gridview  Chia thành các cột theo các thuộc tính trên form ,GridControl sẽ tạo các các cột tương ứng và tùy chính theo người dùng.  Dòng đầu tiên,là chức năng autofilter trong GridControl ,dùng để lọc dữ liệu theo điều kiện người dùng nhập vào theo từng cột. - Khi bạn muốn thiết lập chế độ cột trong GridControl,bạn vào click chuột phải- >Run Designer để thiết lập column hoặc các tùy chỉnh trong Property Editor. - Bạn có thể tùy chỉnh các dạng view trong gridcontrol theo ý cách nhìn của mình. - Có các thẻ tùy chỉnh trong Property Editor + View:chế độ khung nhìn + Column:Tùy chỉnh các cột + Feature Browser :Tùy chỉnh các thuộc tính đặc trưng của các ô hay các cột như font chữ,…. + Layout:Có thể sao lưu,phục hồi dạng layout đã tạo trước đó. +Group Sumary Items:Nhóm đối tượng thống kê.
  • 89. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 56 | 262 - Ở GridControl bạn click vào dòng chữ màu xanh (Click here to change view) > Convert to > LayoutView Sau đó gridControl sẽ chuyển đổi như hình trên. Đối với trường hợp bạn load dữ liệu trực tiếp vào grid thì các cột dữ liệu trong CSDL sẽ hiển thị vào grid để bạn có thể chỉnh sửa luôn. Nhưng trường hợp này khi chạy lên grid mới được load dữ liệu nên không hiển thị gì cả.
  • 90. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 57 | 262 Đây là màn hình khi chạy lên của grid, bạn có thể click vào các icon ở thanh công cụ phía trên để chọn kiểu hiển thị các mẫu dữ liệu. Để chỉnh sửa bố cục của cách trình bày dữ liệu bạn click vào icon setting cuối cùng
  • 91. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 58 | 262 Bạn có thể kéo thay đổi vị trí các cột dữ liệu trong cách hiển thị và nhấn nút Apply để áp dụng thay đổi (lưu ý: trong trường hợp này chỉ là áp dụng tạm thời, nghĩa là bố cục này sẽ mất khi đóng chương trình, nếu bạn muốn thay đổi vĩnh viễn thì phải load dữ liệu trực tiếp vào grid và bạn làm tương tự bước này ngay trên design của grid thì mới được lưu áp dụng vĩnh viển. Nếu bạn muốn thay đổi nhãn của các cột dữ liệu thì click phải vào label rồi chọn Rename. Sau khi xong rồi thì nhấn nút Apply để lưu. Đây là kết quả.
  • 92. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 59 | 262 Bạn cũng có thể tạo nhóm dữ liệu, chèn khoảng trắng, phân cách,... nhiều thứ nữa trong đó.
  • 93. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 60 | 262 Để thay đổi chế độ hiển thị dữ liệu bằng code bạn sử dụng câu lệnh sau: XI.Giới thiệu sơ lược về XtraReport -Một cách tạo Report cũng đang phổ biến sử dụng.Bằng cách thiết kế sẵn các lệnh,các table chứa các control phù hợp,sau đó ta có thể gắn nguồn(source) cho các xrtable(được hỗ trợ trong xtrareport). -Một công cụ giúp tạo ra trang report đẹp mắt,lại mang tính tiện dụng.Tại vì nếu thông thường,ta luôn thiết kế theo CrytallReport ,nếu thiết kế theo cách đó,khi chuyển chương trình sang máy khác thì bắt buộc máy tính đó phải được cài CrytallReport trong máy. Chúng ta sẽ xét cách tạo Xtrareport - Click phải vào solution->Add->New Item->Reporting->DxExperience v12.2 Report Wizard
  • 94. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 61 | 262 - Sau khi bạn đánh tên XtraReport ,chọn Add. Bạn sẽ thấy một khung nhìn về XtraReport như sau: - Để thiết kế các thành phần trong XtraReport,bạn sử dụng các thẻ trong toolbox - Trong XtraReport gồm có 7 phần: + Page header/footer :chứa tiều đề đầu trang và cuối trang.
  • 95. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 62 | 262 + Report header/footer:Tiêu đề đầu và cuối report ,nội dung đặt trong report header/footer chỉ xuất hiện ở phần đầu của trang đầu tiên và phần cuối trang của trang cuối cùng.Các nội dung thường đặt trong report header/Footer. + Detail:Chứa nguồn dữ liệu của report. +Group Header/Footer: Đối với các report giống như dạng form dạng main_sub thì phải có thêm phần kết nhóm là group header/footer.Nội dung của phần group header/footer là tiêu đề của nhóm.Có thể thống kê dữ liệu theo nhóm. XII.Đặt câu hỏi trắc nghiệm và lý thuyết. A.Câu hỏi trắc nghiệm 1.Thanh menu chứa các mục như hệ thống,danh mục.nghiệp vụ,trợ giúp,…được gọi là gì? A.RibbonControl B.RibbonForm C.NavBarControl D.DevexpressRibbon 2.Để tạo ra RibbonPage trong form DevExpress,ta chọn: A.Add Item B.Add Group C.Add Page D.Add pageGroup 3.Đê thiết lập thuộc tính form cha/form con,ta chọn thuộc tính và giá trị gì trong properties. A. IsMdiContainer:True B.ApplicationIcon:None
  • 96. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 63 | 262 C. IsMdiContainer:False D.Tất cả đều sai 4.Để thiết lập report,ngoài cách chọn CrytalReport,ta có thể chọn Report gì trong Devexpress. A.XtraReport B.CreateDocument C.PrintBarManager D.XtraTabControl 5.GridControl chỉ có một dạng hiển thị ở dạng GridView A.Đúng B.Sai 6.GridControl có thuộc tính gì để lọc dữ liệu tự động. A.AutoMark B.AutoControl C.AutoFilter D.Tất cả đều đúng 7.Khi tạo Form Wizard,để lưu trữ hình ảnh và đặt các hình ảnh cho các BarButtonItem,ta có thể sử dụng Control nào? A.ImageCollectionSmall B.ImageCollectionLarge C.ImageList D.A & B đúng B.Câu hỏi lý thuyết 1.Để tạo ra ký hiệu tắt x trong XtraTabControl,ta chọn thuộc tính gì trong properties của XtraTabControl. 2.XtraReport là một Item mình add vào form hay tồn tại sẵn trong ToolBox trong Devexpress. 3.Để thay đổi dạng hiển thị của GridControl,ta làm như thế nào?Làm thế nào để chọn hình ảnh cho các đối tượng trong RibbonControl? XIII.Bảng phân công chi tiết công việc STT Tên thành viên Phụ trách 1 Lê Hồng Tơ + Tìm hiểu về cách xây dựng form bằng UserControl + Phân tích cơ sở dữ liệu để thiết kế quản lý bán hàng + Xây dựng mô hình 3 lớp. 2 Phạm Văn Ây + Cách thay đổi ApplicationIcon của Ribbon + Cách AddGroup và AddItem trong NavBarControl + Cách thiết lập IsMdiContainer + Tìm kiếm tài liệu từ nhóm khác
  • 97. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 64 | 262 3 Lê Nguyễn Thành Trung + Tìm hiểu về cách sử dụng XtraTabControl + Hỗ trợ đặt câu hỏi + Tìm hiểu về cách bố trí thành phần trong form + Tìm các tài liệu tham khảo trên Internet 4 Bùi Thị Chinh + Tìm hiểu và cài đặ phiên bản Devexpress 12.2.7 + Tìm hiểu về cách add Image vào các đối tượng trong form + Tìm hiểu về thành phần ImageCollection + Xây dựng thành công XtraReport trong form + Phân tích cơ sở dữ liệu + Chỉnh sửa Word. + Góp ý trang trí giao diện theo từng nhóm. + Thiết kế Powerpoint 5 Nguyễn Hữu Phước + Chỉnh sửa,góp ý + Code phần XtraTabControl và XtraReport + Phân tích cơ sở dữ liệu + Xây dựng mô hình dữ liệu quản lý khách hàng. + Quay Video XIV.Thống kê chia sẻ tài liệu STT Nhóm đã chia sẻ Ngày chia sẻ 1 Nhóm 3 11/04/2014 2 Nhóm 6 14/04/2014 XV.Kết luận và tài liệu tham khảo A.Kết luận Nhóm đã hoàn thành: - Nhóm đã hoàn thành cơ bản về cách dàn form trên phiên bản Devexpress 12.2.7.Tìm hiểu về cách xây dựng mô hình 3 lớp một cách cụ thể. - Cách bố trí trên form menu hiện đại một cách phù hợp theo từng nhóm.Cách thiết kế Icon cho form được đẹp và bắt mắt hơn. - Hiểu được các chế độ view của GridControl và cách tùy chỉnh theo ý thích của người dùng. - Tìm hiểu được nhiều Control trong Devexpress:NavBarControl,XtraTabControl,RibbonControl .
  • 98. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 65 | 262 - Xây dựng được form quản lý bán hàng theo mô hình 3 lớp và cách bố trí theo menu hiện đại. B.Tài liệu tham khảo [1].http://thuthuatso1.info/@forum/threads/huong-dan-addtab-con-dong-vao- xtratabcontrol-trong-devexpress.4206.html [2]. http://www.youtube.com/watch?v=h1f8ob0gSwQ [3]. http://www.devexpress.com/ [4]. https://documentation.devexpress.com/#HomePage/CustomDocument9453
  • 99. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 66 | 262 Trong ngành kỹ nghệ phần mềm, năm 1979, có một quy tắc nổi tiếng là: “Trong một dự án lập trình điển hình, thì xấp xỉ 50% thời gian và hơn 50% tổng chi phí được sử dụng trong kiểm thử các chương trình hay hệ thống đã được phát triển”. Và cho đến nay, sau gần một phần 3 thế kỷ, quy tắc đó vẫn còn đúng. Đã có rất nhiều ngôn ngữ, hệ thống phát triển mới với các công cụ tích hợp cho các lập trình viên sử dụng phát triển ngày càng linh động. Nhưng kiểm thử vẫn đóng vai trò hết sức quan trọng trong bất kỳ dự án phát triển phần mềm nào. Rất nhiều các giáo sư, giảng viên đã từng than phiền rằng: “ Sinh viên của chúng ta tốt nghiệp và đi làm mà không có được những kiến thực thực tế cần thiết về cách để kiểm thử một chương trình. Hơn nữa, chúng ta hiếm khi có được những lời khuyên bổ ích để cung cấp trong các khóa học mở đầu về cách một sinh viên nên làm về kiểm thử và gỡ lỗi các bài tập của họ”. Các tác giả của cuốn sách nổi tiếng “The Art of Software Testing” – Nghệ thuật kiểm thử phần mềm, Glenford J. Myers, Tom Badgett, Todd M. Thomas, Corey Sandler đã khẳng định trong cuốn sách của mình rằng: “ Hầu hết các thành phần quan trọng trong các thủ thuật của một nhà kiểm thử chương trình là kiến thức về cách để viết các ca kiểm thử có hiệu quả”. Việc xây dựng các test – case là một nhiệm vụ rất khó khăn. Để có thể xây dựng được tập các test – case hữu ích cho kiểm thử, chúng ta cần rất nhiều kiến thức và kinh nghiệm Đó là những lý do thúc đẩy chúng em thực hiện đề tài này. Mục đích của đề tài là tìm hiểu những kiến thức tổng quan nhất về kiểm thử, và cách thiết kế test – case trong kiểm thử phần mềm. Việc thực hiện đề tài sẽ giúp chúng em tìm hiểu sâu hơn và lĩnh vực rất hấp dẫn này, vận dụng được các kiến thức đã học để có thể thiết kế được các test – case một cách có hiệu quả và áp dụng vào những bài toán thực tế.
  • 100. Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 67 | 262 MỤC LỤC CHƯƠNG 1. TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM .............................................................. 68 1.1 Các khái niệm cơ bản về kiểm thử phần mềm................................................................. 68 1.1.1 Kiểm thử phần mềm là gì? ........................................................................................... 68 1.1.2 Các phương pháp kiểm thử.......................................................................................... 68 1.1.3 Các chiến lược kiểm thử............................................................................................. 69 1.1.4 Các cấp độ kiểm thử phần mềm .................................................................................. 71 1.1.5 Các phương pháp kiểm thử con người ........................................................................ 76 1.2 Nguyên tắc kiểm thử phần mềm...................................................................................... 77 CHƯƠNG 2. THIẾT KẾ TEST – CASE........................................................................................... 79 2.1 Khái niệm.......................................................................................................................... 79 2.2 Vai trò của thiết kế test – case......................................................................................... 79 2.3 Quy trình thiết kế test – case ........................................................................................... 79 2.3.1 Kiểm thử hộp trắng - Kiểm thử bao phủ logic ............................................................. 13 2.3.2 Kiểm thử hộp đen......................................................................................................... 19 2.3.3 Chiến lược .................................................................................................................... 27 KẾT LUẬN.......................................................................................................................................... 28 TÀI LIỆU THAM KHẢO....................................................................................................................... 29 CÂU HỎI................................................................................................Error! Bookmark not defined.