Giáo trình lập trình quản lý

262 1.9K 4
Giáo trình lập trình quản lý

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý Giáo trình lập trình quản lý

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.  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   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   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à [...]... trong công ty 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 2 | 262 13 Danh mục Tôn giáo 3 Nghiệp vụ STT Chứ năng Quản lý Nhân Viên 1 Chuyển phòng ban 2 3 Quản lý Lương 4 Giải quyết ứng lương 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 Mô tả Quản lý thông tin nhân viên trong công ty... 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 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 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 Cho phép người dùng là nhà quản trị quản lý danh mục trình độ trong công ty Cho phép người dùng là nhà quản trị quản lý danh mục các hợp đồng... là nhà quản trị quản lý danh sách nhân viên được khen thưởng trong công ty 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 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 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 Cho phép người dùng là nhà quản trị quản lý danh... 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... 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ơ... ĐỀ TÀI 1 Mô tả đề tài ‒ Ở 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... 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ẽ... mật khẩu Cho phép người dùng đổi mật khẩu của tài 3 Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 1 | 262 4 Quản lý người dùng 5 Sao lưu dữ liệu 6 Phục hồi dữ liệu 7 Thoát 2 Danh mục STT Chứ năng Danh mục Nhân viên 1 2 Danh mục Phòng ban 3 Danh mục Chức vụ 4 Danh mục Chuyên môn 5 Danh mục Trình độ 6 Danh mục Hợp đồng 7 Danh mục Khen thưởng 8 Danh mục Kỹ luật 9 Danh mục Bảo hiểm 10 Danh... ơ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 MÔ TẢ VÀ LỢI ÍCH CỦA ĐỀ TÀI 0 I II DANH SÁCH CÁC CHỨC NĂNG CHÍNH TRONG CHƯƠNG TRÌNH 1 1 Hệ... 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ả Thông tin chương trình Hiển thị form chứa thông tin của chương 1 trình Hướng dẫn sử dụng Xuất hiện file hướng dẫn sử dụng chương 2 Đề tài: Kỹ thuật test trong một chương trình quản lý P a g e 3 | 262 . 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ả. 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. 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

Ngày đăng: 13/07/2014, 21:03

Từ khóa liên quan

Mục lục

  • I. Giới Thiệu

    • 1. Giới thiệu về namespace System.xml (introduction to namespace System.xml)

    • 2. Đọc và Ghi XML (Read and write Streamed XML)

      • 2.1 Sử dụng lớp XmlTexReader

      • 2.2 Các phương thức Read

      • 2.3 Lấy thuộc tính của dữ liệu:

      • 2.4 Sử dụng lớp XmlValidatingReader

      • 2.5 Sử dụng Schema property

      • 2.6 Sử dụng lớp XmlTextWriter

      • II. Hướng dẫn làm demo Chương trình kết nối CSDL dùng file cấu 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

        •  Bước 3: Tạo file xml trong thư mục debug của chương trình.

        •  Bước 4: Thêm class DataProvide vào chương như hình bên dưới:

        •  Bước 5:Tạo thêm class SQLInformation

        •  Bước 6: Ta viết các hàm sự kiện cho form

        •  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.

        • III. Câu hỏi

          • 1. Câu hỏi Thực hành:

          • 2. Câu hỏi lý thuyết:

          • 3. Câu hỏi trắc nghiệm

          • I. Giới thiệu

          • II. Phân công nhóm

          • PHẦN II: NỘI DUNG

            • 1. Giới thiệu thư viện thực thi

Tài liệu cùng người dùng

Tài liệu liên quan