Đề tài Phân tích thiết kế và xây dựng phần mềm quản lý bán hàng nội thất của công ty F.GOUP

Tài liệu Đề tài Phân tích thiết kế và xây dựng phần mềm quản lý bán hàng nội thất của công ty F.GOUP: LỜI NÓI ĐẦU Ngày nay, công nghệ thông tin đã và đang đóng vai trò quan trọng trong đời sống kinh tế, xã hội của nhiều quốc gia trên thế giới, là một phần không thể thiếu trong một xã hội ngày càng hiện đại hoá. Đặc biệt đối với nước ta trong hoàn cảnh hiện nay, trong tiến trình hội nhập của nền kinh tế vào các tổ chức thương mại quốc tế nhu AFTA, WTO …tạo ra một môi trường cạnh tranh bình đẳng nhưng hết sức mạnh mẽ giữa các doanh nghiệp không phân biệt quốc gia hay khu vực. Đây là thời điểm quan trọng đối với các doanh nghiệp để buộc phải tìm mọi biện pháp để tự nâng cao năng lực quản lý, tạo cơ hội và nắm bắt triệt để các cơ hội nhằm thúc đẩy hoạt động kinh doanh, sản xuất của mình. Với sự phát triển không ngừng của hạ tầng cơ sở công nghệ thông tin của Việt Nam trong những năm gần đây, khoảng cách về công nghệ giữa Việt Nam với thế giới đã được rút ngắn một cách đáng kể. Các tổ chức, doanh nghiệp cũng đã rất chủ động áp dụng các tiến bộ khoa học công nghệ hỗ trợ cho việc quản lý t...

doc59 trang | Chia sẻ: hunglv | Lượt xem: 1178 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Phân tích thiết kế và xây dựng phần mềm quản lý bán hàng nội thất của công ty F.GOUP, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
LỜI NÓI ĐẦU Ngày nay, công nghệ thông tin đã và đang đóng vai trò quan trọng trong đời sống kinh tế, xã hội của nhiều quốc gia trên thế giới, là một phần không thể thiếu trong một xã hội ngày càng hiện đại hoá. Đặc biệt đối với nước ta trong hoàn cảnh hiện nay, trong tiến trình hội nhập của nền kinh tế vào các tổ chức thương mại quốc tế nhu AFTA, WTO …tạo ra một môi trường cạnh tranh bình đẳng nhưng hết sức mạnh mẽ giữa các doanh nghiệp không phân biệt quốc gia hay khu vực. Đây là thời điểm quan trọng đối với các doanh nghiệp để buộc phải tìm mọi biện pháp để tự nâng cao năng lực quản lý, tạo cơ hội và nắm bắt triệt để các cơ hội nhằm thúc đẩy hoạt động kinh doanh, sản xuất của mình. Với sự phát triển không ngừng của hạ tầng cơ sở công nghệ thông tin của Việt Nam trong những năm gần đây, khoảng cách về công nghệ giữa Việt Nam với thế giới đã được rút ngắn một cách đáng kể. Các tổ chức, doanh nghiệp cũng đã rất chủ động áp dụng các tiến bộ khoa học công nghệ hỗ trợ cho việc quản lý tổ chức, sản xuất, kinh doanh… Trong lĩnh vực quản lý, việc lưu trữ và xử lý các thông tin là một vấn đề rất phức tạp vì lượng thông tin nhận được ngày càng lớn và thường xuyên. Nhu cầu đó đòi hỏi một hệ thống chương trình đáp ứng đầy đủ yêu cầu quản lý doanh nghiệp. Hệ thống chương trình quản lý bán hàng bao gồm: quản lý bán lẻ, quản lý bán buôn, quản lý kho… Bài toán quản lý các thông tin dạng không có cấu trúc (văn bản, hình ảnh, …) luôn luôn là một bài toán rất phức tạp, nhất là trong việc tổ chức Cơ sở dữ liệu. Đề tài em nhận được là “phân tích thiết kế và xây dựng phÇn mÒm qu¶n lý b¸n hµng néi thÊt cña c«ng ty F.GOUP”. Dựa trên một số công cụ và chức năng mạnh mẽ của SQL Server Enterprice 2000 và Visual Basic.net đề tài đã giải quyết tốt vấn đề tổ chức, lưu trữ và tra cứu các dữ liệu vể quản lý bán hàng, giúp nâng cao hiệu quả quản lý và tổ chức kinh doanh của c«ng ty Trong khuẩn khổ của đề tài, luận văn được trình bày trong 4 chương, bao gồm: Chương I – Giíi thiÖu hÖ qu¶n trÞ c¬ së d÷ liÖu SQL server2000 vµ ng«n ng÷ lËp tr×nh Visual Basic.net8 Chương II – Kh¶o s¸t vµ ph©n tÝch thiÕt kÕ hÖ thèng Chương III – Cµi ®Æt ch­¬ng tr×nh Được thực hiện trong một thời gian ngắn, mặc dù đã cố gắng hoàn thành đề tài với tất cả sự nổ lực của bản thân nhưng chắc chắn không tránh khỏi những thiếu sót nhất định. Kính mong sự cảm thông và sự đóng góp những ý kiến vô cùng quý báu của các thầy cô, các bạn đồng nghành, nhằm tạo tiền đề thuận lợi cho việc phát triển đề tài trong tương lai. Cuèi cïng em xin ch©n thµnh c¶m ¬n c« gi¸o Th.S §Æng Thu HiÒn cïng toµn thÓ c¸c thÇy c« trong khoa c«ng nghÖ th«ng tin tr­êng §¹i Häc Giao Th«ng VËn T¶i ®· tËn t×nh h­íng dÉn em hoµn thµnh ®Ò tµi nµy. Xin c¶m ¬n «ng NguyÔn Trung HiÕu Gi¸m §èc c«ng ty F.GROUP ®· gióp ®ì em rÊt nhiÒu trong viÖc thu thËp vµ ph©n tÝch d÷ liÖu. Xin c¸m ¬n c«ng ty phÇn mÒm VUA ®· gióp ®ì em trong qua tr×nh thùc hiÖn viÕt code cña ch­¬ng tr×nh nµy. SV thực hiện TrÇn V¨n Méc CHƯƠNG I GIỚI THIỆU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU SQL SERVER VÀ NGÔN NGỮ VISUAL BASIC.NET A. Giới thiệu hệ quản trị cơ sở dữ liệu SQL Server Tổng quan về SQL Server. SQL Server là hệ thống quản lý cơ sở dữ liệu quan hệ client/server hay còn được gọi là Relational Database Management System (RDBMS). RDBMS là một trong những mô hình cơ sở dữ liệu thông dụng và là cách thức cơ bản để lưu trữ dữ liệu cho hầu hết các ứng dụng hiện nay. Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS ): Mỗi cơ sở dữ liệu quan hệ là một tập hợp dữ liệu được tổ chức trong những bảng hai chiều cã quan hệ với nhau. Mỗi bảng bao gồm c¸c cột cã tªn và c¸c hàng. Mỗi cột là một thuộc tÝnh của quan hệ, mỗi hàng là một bộ (tuple) c¸c gi¸ trị của những thuộc tÝnh của quan hệ. Một RDBMS có nhiệm vụ: Lưu trữ và tạo dữ liệu sẵn cã trong c¸c bảng. Duy tr× quan hệ giữa c¸c bảng trong cơ sở dữ liệu. Bảo đảm t¸ch hợp dữ liệu bằng c¸ch tạo c¸c qui tắc quản lý gi¸ trị dữ liệu. Kh«i phục mọi dữ liệu trong trường hợp hệ thống cã sự cố. Kiến tróc client / server: Server: Một tập hợp c¸c mục dữ liệu và đối tượng trợ gióp được tổ chức và tr×nh bày để thuận tiện phục vụ như :t×m kiếm, sắp thứ tự, kh«i phục, cập nhật và ph©n tÝch dữ liệu. CSDL bao gồm bộ nhớ dữ liệu vật lý và c¸c dịch vụ CSDL. Mọi dữ liệu đều được truy xuất qua hệ phục vụ, kh«ng bao giờ được truy xuất trực tiếp. Client: Một chương trình có thể tác động qua lai với người hoặc một quá trình tự động. Nó bao gồm tất cả những phần mềm có liên quan đến server, yêu cầu dữ liệu từ CSDL hoặc gửi dữ liệu đến CSDL. M« h×nh d÷ liÖu ®a ng­êi sö dông trong SQL Server: Client Application Serverer Client Application Client Application C¸c thành phần của SQL Server 2000 gồm: Database : Cơ sở dữ liệu của SQL Server. Tập tin log : Tập tin lưu trữ những chuyển tác của SQL Server. Tables : bảng dữ liệu. Filegroups : Tập tin nhãm. Diagrams : Sơ đồ thực thể quan hệ. View : Khung nhìn số liệu dựa trên bảng. Stored Procedure : Thủ tục và hàm nội. User defined Function : hàm do người dùng tự định nghĩa. User : Người sử dụng cơ sở dữ liệu. Roles : C¸c quy định vai trß và chức năng trong hệ thống SQL Server. Rules : Những quy tắc. Defaults : C¸c gi¸ trị mặc nhiªn. User defined data type : Kiểu dữ liệu do người dùng định nghĩa Full text catalogs : Tập ph©n loại dữ liệu text. Kho¸ và ràng buộc dữ liệu (Keys and Constraints) Kh¸i niệm cơ bản về ràng buộc. Constrains cßn gọi là ràng buộc. Nã dùng để kiểm tra khi cã sự biến đổi từ phÝa dữ liệu như thªm, xo¸, cập nhật từ bất kỳ một nguồn nào kh¸c nhau chẳng hạn do chương tr×nh C++, Visual Basic, Java, … truy cập đến cơ sở dữ liệu. Một bảng cã thay đổi về lượng và chất của dữ liệu phải theo một qui định nhất định nào đã nhằm bảo toàn được tÝnh ràng buộc trọn vẹn đối với dữ liệu đang tồn tại trong những bảng cã quan hệ với nhau. Mỗi khi cã hành động thay đổi dữ liệu xảy ra, qu¸ tr×nh kiểm tra c¸c ràng buộc được thực hiện như một phương thức rà so¸t tất cả c¸c điều kiện và qui luật được thiết lập khi x©y dựng cơ sở dữ liệu. C¸c loại ràng buộc Ở mức cao bao gồm: Ràng buộc miền – Domain Constraints. Ràng buộc thực thể - Entity Constraints. Ràng buộc dữ liệu toàn vẹn. Ở mức đặc thï Ràng buộc khãa chÝnh - Primary Key constraints. Ràng buộc kho¸ ngoại - Foreign Key constraints . Ràng buộc duy nhất – Unique constraints. Ràng buộc kiểm tra - Check constraints. Ràng buộc mặc nhiªn - Default constraints. Ràng buộc theo qui tắc hay qui luật – Rules. Bảng ảo (Views) Sử dụng view như là một đối tượng trong SQL Server. Nếu sử dụng ph¸t biểu SQL, khi truy vấn trực tuyến sẽ kh«ng cho phÐp bạn lưu trữ cấu tróc ph¸t biểu SQL như là một đối tượng của SQL Server. Mục đÝch sử dụng view: Hạn chế tÝnh phức tạp của dữ liệu đến với người sử dụng. Kết nỗi dữ liệu từ nhiều bảng lại với nhau. Sử dụng tài nguyên Server để thực hiện việc truy vấn. Tạo ra một bảng ảo cã dữ liệu như yªu cầu. Kết hợp một số hàm với phương thức tạo ra c¸c cột mới. Khi cần thiết cã những c©u lệnh SQL dùng cho trong qóa tr×nh viết chương tr×nh trªn c¸c platform kh¸c như Visual Basic, Java,… bạn cã thể dùng View để tạo ra c©u lệnh SQL theo như ý m×nh, sau đã copy sang ứng dụng để sử dụng. Thủ tục thường trú (Stored Procedure) Stored Procedure là một đối tượng xây dựng bởi những phát biểu của SQL Server và TSQL. Stored Procedure bao gồm hai loại là Stored Procedure do người dùng định nghĩa và Stored Procedure hệ thống. Stored Procedure được lữu trữ như một phần của cơ sở dữ liệu, cấu trúc của chúng như một văn bản. Mỗi khi muốn thực thi chúng chỉ cần goi chúng tương tự như gọi thực thi thủ tục hoặc hàm. Bẫy lỗi (Triggers) Trigger gồm một đoạn mµ được gắn vào bảng dữ liệu, chóng tự động thực thi cã một sự kiện xảy ra tương ứng với trigger được g¾n với sự kiện ®ã. Một vài ứng dụng th«ng thường của trigger: Referential Integrity. Audit Trails. Check. Kiểm chứng khi xo¸ mẩu tin trong bảng. C¸c loại trigger: INSERT Triggers. UDPATE Triggers. DELETE Triggers. Tập hợp cả ba trigger trªn. Bảo mật trong hệ thống SQL Server SQL Server cung cấp một hệ thống bảo mật khá cao, gồm nhiều mức, và cho phép dùng nhiều phương thức bảo mật khác nhau như bảo mật theo quyền sử dụng Windows. SQL Server có thể phân quyền cho người dùng hoàn toàn độc lập với hệ điều hành, theo cách này thì những tài khoản được cấp quyền mới có thể thao tác trên cơ sở dữ liệu và những quyền đó cũng được giới hạn theo từng nhóm quyến. B. Giới thiệu ngôn ngữ lập trình Visual Basic.Net I.Giới thiệu .Net FrameWork .Net được phát triển từ đầu năm 1998 lúc đầu có tên là Next Generation Windown Services (NGWS). Mục tiêu của Microsoft là xây dựng một Globally Distributed System, dùng XML (chứa những database tí hon) là chất keo để kết hợp chức năng của những Computer khác nhau trong cùng một tổ chức hay trên khắp thế giới.Những Computer này có thể là Desktop, Server, Notebook hay Pockets Computer, đều có thể chạy Software trên cùng một Platform duy nhất độc lập với hardwave và ngôn ngữ lập trình. Đó là .Net Framwork. Nó sẽ trở thành một phần của MS Windows và có thể port qua các platform khác và ngay cả Unix. .Net Application được chia ra làm hai loại : Cho Internet gọi là ASP.NET gồm có Web Forms và Web Services. Điểm khác biệt giữa ASP và ASP.NET là trong ASP.NET, phần đại diện Visual Components và code nằm riêng nhau không lộn xộn như trong ASP. Ngoài ra ASP.Net hoàn toàn là Object Oriented.Web Services giống như những Function mà ta có thể gọi dùng từ các URL trên Internet. Cho Desktop gọi là Window Forms. Window Forms giống như form của VB6, hỗ trợ Unicode hoàn toàn, rất tiện cho chữ Việt và thật sự là Object Oriented. Web Forms có những Server Controls làm việc giống như các Controls trong Window Forms, nhất là có thể dùng code để sử lý như trong Window Forms. ADO.Net là một loại cache database nhỏ ( gọi là disconnected database) để thay thế ADO. Thay vì Application connects vĩnh viễn đối với database mẹ qua ADO, úng dụng trong .Net làm việc với các portable database chỉ một vài bảng, sao chép từ database mẹ. Các bảng trong ADO.Net có thể được tạo quan hệ với nhau trong Master/Details Relationship. Nằm phía sau ADO.Net là XML. TCP\IP và HTTP là hai protocol thông dụng nhất trong .Net, chúng giúp ta có một Remote Procedure (nằm trên computer khác) dễ dàng như một Local Procedure. Kỹ thuật ấy gọi là Remoting. Metadata là các dữ kiện cắt nghĩa cho ta biết về dữ kiện. Các .Net Application Component, gọi là Assembly, chứa rất nhiều metadata để cắt nghĩa về chính nó (Self describing). Common Language Runtime (CLR) là Trung tâm điều khiển của .Net FrameWork, nó là hầm máy để chạy các tính năng của .Net . Trong .Net mọi ngôn ngữ lập trình đều được compiled ra Microsoft Intermediate Language (IL), giống như bycode của Java.Nhờ bắt buộc các ngôn ngữ lập trình đều phải dùng các loại datatype (Common Type System) nên CLR có thể kiểm soát mọi Interface, gọi giữa các Component và cho phép các ngôn ngữ có thể hợp tác với nhau một cách thông suốt. .Net được xây dựng từ các Assemblies. Mỗi Assembly phải có một manifest. Có thể nó nằm trong một file hay trong một module. Cài đặt đơn giản và an toàn (no more DLL) : chỉ cần Xcopy file, giống như thời vàng son của DOS. Lý do là .Net application chạy trên môi trường Net FrameWork, khi ta đã cài Net FrameWork vào máy rồi thì sẽ có đầy đủ các DLL cần thiết. Dùng cho từ WindowsCE đến Desktop, đến Web (scalability). Hỗ trợ và phối hợp mọi ng«n ngữ lập tr×nh. II.Giới thiệu ng«n ngữ lập tr×nh Visual Basic.Net Visual Basic.Net, còn gọi là VB7, chính là C# viết theo lối Visual Basic, do vậy Visual Basic.Net hoàn toàn hướng đối tượng. Namespaces. Namespaces là một cách đặt tên để giúp sắp đặt các Classes ta dùng trong program một cách thứ tự hầu dễ tìm kiếm chúng. Tất cả code trong .NET, viết bằng VB.NET, C# hay ngôn ngữ nào khác, đều được chứa trong một namespace. Điểm này cũng áp dụng cho code trong .NET system class libraries. Chẳng hạn, các classes của WinForms đều nằm trong System.Windows.Forms namespace. Và các classes dùng cho collections như Queue, Stack, Hashtable… đều nằm trong System.Collections namespace. Tất cả code ta viết trong program của mình cũng đều nằm trong các namespaces. Namespaces trong .NET khắc phục được mọi giới hạn trong VB6. Nhiều assemblies có thể nằm trong cùng một namespace, nghĩa là classes tuyên bố trong các components khác nhau có thể có chung một namespace. Điều này cũng áp dụng xuyên qua các ngôn ngữ, giúp cho một class viết trong VB.NET có thể nằm trong cùng một namespace với một class viết trong C#. Hơn nữa, trong một assembly có thể có nhiều namespaces, dù rằng thông thường ta chỉ dùng một namespace duy nhất cho tất cả các classes trong ấy. Một assembly trong .NET tương đương với một COM component.Tất cả code trong .NET đều nằm trong những assemblies. Namespaces có thể được phân chia thứ bậc giống như Folders trong một File Directory. Nó sẽ giúp user sắp đặt các classes theo đúng nhóm cho trong sáng và dễ đọc. Một số namespaces thông dụng: Namespace Chức năng Classes điển hình System.IO Đọc/Viết files và các data streams khác FileStream, Path, StreamReader, StreamWriter System.Drawing Đồ họa Bitmap, Brush, Pen Color, Font, Graphics System.Data Quản lý data DataSet, DataTable, DataRow, SQLConnection, ADOConnection System.Collection Tạo và quản lý các loại collections ArrayList, BitArray, Queue, Stack, HashTable System.Math Tính toán Sqrt, Cos, Log, Min System.Diagnostics Debug Debug, Trace System.XML Làm việc với XML, Document Object Model XMLDocument, XMLElement, XMLReader, XMLWriter System.Security Cho phép kiểm soát an ninh Cryptography, Permission, Policy Truy cập Variable/Class/Structure Trong Visual Basic.Net ta có thể quyết định giới hạn việc truy cập một Variable, Class, Structure ... bằng cách dùng các keywords sau: Loại truy cập Thí dụ Chú thích Public Public Class Class ForEverybody Cho phép ở đâu cũng dùng nó được. Ta chỉ có thể dùng Public ở mức độ Module, Namespace hay File. Tức là ta không thể dùng Public trong một Sub/Function. Protected Protected Class ClassForMyHeirs Cho phép các classes con, cháu được dùng. Ta chỉ có thể dùng Protected ở mức độ Class. Friend Friend StringForThisProject As String Cho phép code trong cùng một Project được dùng. Private Private NumberForMeOnly As Integer Cho phép code trong cùng module, class, hay structure được dùng. Lưu ý là Dim coi như tương đương với Private, do đó ta nên dùng Private cho dễ đọc. Arithmetic Operators. VB.NET cho ta thêm cách viết Arithmetic Operator mới giống ngôn ngữ C Arithmetic Operation Trong VB6 Cách viết tắt mới Cộng X = X +5 X += 5 Trừ X = X - 10 X -= 10 Nhân X = X * 7 X *= 7 Chia X = X / 19 X /= 19 Chia Integer X = X \ 13 X \= 13 Lũy thừa X = X ^ 3 X ^= 3 Ghép Strings X = X & "more text" X &= "more text" CHƯƠNG II Kh¶o s¸t vµ ph©n tÝch thiÕt kÕ hÖ thèng a. Kh¶o s¸t hÖ thèng I. Giíi thiÖu vÒ c«ng ty TNHH F.GROUP C«ng ty F.GROUP lµ c«ng ty TNHH do mét nhãm gåm 5 ng­êi ®øng ra thµnh lËp n¨m 1998, vµ lÊy tªn lµ F.GROUP. C«ng viÖc chñ yÕu cña c«ng ty lµ thiÕt kÕ kiÕn tróc vµ cung cÊp c¸c s¶n phÈm néi thÊt cho c¸c c¸ nh©n còng nh­ c¸c c«ng tr×nh. VÒ c«ng viÖc b¸n hµng: Víi c¸c s¶n phÈm nhËp ngo¹i cïng c¸c s¶n phÈm tù s¶n xuÊt c«ng ty cung cÊp nh÷ng s¶n phÈm cã chÊt l­îng cao, mÉu m· ®Ñp, phï hîp c¸c lo¹i kiÕn tróc nhµ hiÖn ®¹i hiÖn nay. Víi mÉu m· phong phó vµ ®a d¹ng kh¸ch hµng cã thÓ lùa chän tuú thÝch cho phï hîp víi néi thÊt gia ®×nh m×nh. C«ng ty cung cÊp nh÷ng s¶n phÈm chñ yÕu nh­: C¸c bé Salon c¸c lo¹i, c¸c lo¹i bµn ghÕ ¨n, c¸c lo¹i bµn trang trÝ, c¸c lo¹i ghÕ víi rÊt nhiÒu mÉu m· trang träng cã thÓ dïng trong v¨n phßng c«ng ty, nhµ ë, qu¸n bar… II. Khảo sát hiện trạng c«ng ty F.GROUP 2.1. Kh¶o s¸t HiÖn nay c«ng ty vÉn ch­a cã phÇn mÒm qu¶n lý b¸n hµng cña c«ng ty. TÊt c¶ mäi viÖc sæ s¸ch giÊy tê ®Òu do nh©n viªn kÕ to¸n lËp b»ng tay, hoÆc lµ dïng c«ng cô word, excel ®Ó qu¶n lý. §iÒu nµy ®· dÉn ®Õn rÊt nhiÒu bÊt cËp khi tiÕn hµnh c«ng viÖc: - HÖ thèng sæ s¸ch giÊy tê cång kÒnh, rÊt khã qu¶n lý. - Qu¶n lý c¸c lo¹i mÆt hµng cña c«ng ty rÊt khã, do sè l­îng hµng ho¸ thay ®æi th­êng xuyªn nªn kÕ to¸n ph¶i th­êng xuyªn cËp nhËt d÷ liÖu ®Ó thay ®æi cho ®óng. - VÊn ®Ò t×m kiÕm hµng hãa cña c«ng ty còng lµ vÊn ®Ò ®­îc quan t©m rÊt nhiÒu. Mçi khi muèn tra th«ng tin vÒ mÆt hµng nµo ®ã th× nh©n viªn b¸n hµng ph¶i kh¸ vÊt v¶ víi c«ng viÖc t×m kiÕm th«ng qua sæ s¸ch cña m×nh. - T­¬ng tù nh­ vËy c«ng viÖc qu¶n lý kho hµng còng gÆp khã kh¨n kh«ng kÐm, c«ng viÖc xuÊt nhËp hµng tån vÉn do nh©n viªn kÕ to¸n thùc hiÖn lËp sæ s¸ch chøng tõ….. - C«ng viÖc lËp b¸o c¸o th¸ng ®Òu do nh©n viªn kÕ to¸n thùc hiÖn. ViÖc nµy còng rÊt vÊt v¶ ®èi víi nh©n viªn kÕ to¸n do ph¶i kiÓm tra l¹i toµn bé hµng ho¸ cña c«ng ty trong thêi gian ®· qua. Do ®ã gÆp rÊt nhiÒu bÊt cËp. 2.2. Đánh giá Hiện nay c«ng ty phải trực tiếp quản lý một số lượng hàng rất lớn, lưu lượng xuất nhập kho của mặt hàng, lượng hàng bán ra còng như tình hình mua bán hàng của c«ng ty, từ đó ph¶i cã chiến lược kinh doanh có hiệu quả. Hiện nay tốc độ tăng trưởng ngày càng nhanh của kinh tế, xã hội, văn hoá làm cho thị trường kinh doanh cũng thay đôi theo, đòi hỏi cao hơn trong công tác quản lý kinh doanh, bán hàng của c«ng ty. Do đó để phù hợp với hoàn cảnh mới việc hiện đại hoá cũng như hiện đại hoá trong công tác quản lý kinh doanh là điều cần thiết đối với c«ng ty. Mặt khác công tác quản lý hoạt động kinh doanh mà chủ yếu là công tác quản lý b¸n hàng là công việc phức tạp được các chủ kinh doanh quan tâm hơn. Hơn nữa công tác quản lý không chỉ quản lý về mặt hàng, số lượng,…mà phải nắm rõ tình hình thị trường, nhu cầu người tiêu dùng, thống kê số liệu về mặt hàng doanh thu để định hướng, lập kế hoạch hợp lý cho kế hoach kinh doanh. Đây là kho dữ liệu lớn, không thể lưu trữ một cách thñ c«ng như trước mà phải sử dụng máy tính lưu trữ là hiệu quả nhất và khoa học nhất. Ngoài ra việc quản lý này sẽ đáp ứng cho việc tìm kiếm thông tin một mặt hàng nhanh chóng và hiệu quả. Với chương trình “QUẢN LÝ BÁN HÀNG” này sẽ đáp ứng được các yêu cầu của các nội dung trên và hỗ trợ cho công tác quản lý đạt hiệu quả cao. Ngoài ra chương trình được viết trên m«i trường Windows nên tận dụng được khả năng đồ hoạ, có giao diện đẹp, thân thiện với người dùng. III. Yªu cÇu hÖ thèng 3.1. Yêu cầu của hệ thống “Quản lý bán hàng” Việc mua bán hàng là một việc rất quen thuộc đối với mọi người, nên các yêu cầu, của hệ thống bán hàng cũng rất dễ được hình dung. Nhưng để những yêu cầu thực sự trở thành yêu cầu cho việc phân tích thiết kế một hệ bán hàng, thì nó phải rõ ràng, không trùng lặp, diễn tả được các mục đích của hệ thống. Các yêu cầu của người sử dụng xây dựng một hệ thống quản lý bán hàng gồm: Hệ thống phải quản lý nhân viên bán hàng, các mặt hàng. Đối với mỗi phiên bán hàng, phải biết tính tiền, trừ bớt hàng hóa trong kho, in hóa đơn nếu cần. Hệ thống phải cho phép cập nhật hàng hóa, cũng như thay đổi các nhân sự nhân viên. Hệ thống cho cập nhật các tỷ giá hối đoái để có nhiều cách thức thanh toán khác nhau. Hệ thống phải hoạch toán được lãi xuất hàng tháng. Hệ thống phải quản lý luân chuyển hàng hóa trong kho, kiểm kê hàng hóa trong kho và cảnh báo khi hàng đó đã không còn hàng tồn trong kho hoặc hàng tồn đã vượt quá mức cho phép. Xây dựng một hệ thống báo cáo đầy đủ và toàn diện. Dựa trên các yêu cầu này chúng ta xây dựng bài toán như sau: “Hệ thống phần mềm phục vụ và quản lý hoạt động kinh doanh cña c«ng ty. Hệ thống cần phải ghi nhận c¸c hoạt động nhập hàng, b¸n hàng và xử lý c¸c c«ng việc thanh to¸n với kh¸ch hµng. Ngoài ra hệ thống cÇn gióp Người quản lý theo dâi được c¸c hoạt động kinh doanh, tự động kiểm tra c¸c mặt hàng tồn đọng trong kho, c¸c mặt hàng b¸n chạy, v.v. để hỗ trợ ra quyết định trong c¸c hoạt động kinh doanh, hỗ trợ người quản lý quản lý nh©n viªn b¸n hàng. Trong c«ng ty cã c¸c thiết bị như: m¸y tÝnh, phần mềm hệ thống để chạy hệ thống sẽ được x©y dựng”. 3.2.Nhiệm vụ của Hệ thống bán hàng Quản lý nhân viên bán hàng : Mỗi nhân viên bán hàng đều có mật khẩu khi đăng nhập chương trình, do đó ta có thể dễ dàng biết được ai đã thực hiện phiên bán hàng. Quản lý hàng hóa gồm: Tªn chñng lo¹i hµng, Tªn lo¹i mÆt hàng, Mã hàng, Loại hàng, Mô tả hàng, Ngày sản xuất, Ngày nhập kho, Số lượng còn, Số lượng đã bán, Giá nhập, Giá bán. Thanh toán với khách hàng bằng các phương thức: tiền mặt. Thực hiện tự động kiểm kê các mặt hàng trong kho, theo dõi được những mặt hàng bán chạy, những mặt hàng tồn kho để có được những quyết định kịp thời trong kinh doanh. Trên cơ sở định nghĩa bài toán, và các nhiệm vụ của hệ thống bắt đầu phân tích, các yêu cầu, các thành phần, các công cụ, chức năng cần thiết cho hệ thống. B. Ph©n tÝch vµ thiÕt kÕ hÖ thèng I. S¬ ®å chøc n¨ng §Ó ®¸p øng nhu cÇu qu¶n lý b¸n hµng cña c«ng ty hÖ thèng cÇn cã c¸c chøc n¨ng nh­ sau: Qu¶n lý b¸n hµng Danh môc B¸n hµng DM hµng Theo sè tiÒn Chñng lo¹i Danh s¸ch kh¸ch hµng DM nhµ cung cÊp Danh s¸ch nh©n viªn DM kho B¸n hµng Tr¶ hµng b¸n Cho nî b¸n hµng §Æt hµng ChÝnh s¸ch khuyÕn m¹i Theo sè l­îng Tr¶ hµng NhËp hµng chi tiÕt NhËp hµng Kh¸ch hµng Nh©n viªn NhËp hµng §Æt gi¸ b¸n II. S¬ ®å luång d÷ liÖu S¬ ®å luång d÷ liÖu møc khung c¶nh Qu¶n lý b¸n hµng c«ng ty F.GROUP Gi¸m ®èc c«ng ty Hµng hãa c«ng ty III. S¬ ®å quan hÖ IV. C¸c b¶ng chÝnh 4.1.1. Bảng dmChungLoai: Các chủng loại mặt hàng MaChungLoai: Mã chủng loại mặt hµng TenChungLoai: Tên chủng loại mặt hang MaNhaCungCap: M· nhµ cung cÊp. 4.1.2. Bảng tblDonVi: Lưu trữ các đơn vị hàng hóa MaDVT: Mã đơn vị tính TenDVT: Tên đơn vị tính 4.1.3. Bảng tblLoaiKho: Các loại kho hàng hóa MaLoai: Mã Loại kho TenLoai: Tên loại kho 4.1.4. Bảng tblDonViThanhToan MaDVTT: Mã đơn vị tính toán (dùng để tính đơn vị tiền tệ) TenDVTT: Tên đơn vị tính toán NgayDoi: Ngày quy đổi đơn vị tiền tệ HeSo: Hệ số quy đổi 4.2. Mảng hàng hóa (Đưa ra các bảng chính) 4.2.1. Bảng dsMatHang: Lưu trữ các mặt hàng TenHang: Tên của mặt hµng MaMatHang: M· mÆt hµng MaChungLoai: Mặt hàng trên thuộc chủng loại nào 4.2.2. Bảng NhapHang: Lưu trữ thông tin vÒ nhập hàng SoHieuNhap: Số hoá đơn nhập hàng MaNhanVien: M· nh©n viªn nhËp hµng. NgayNhap: Ngµy nhËp hµng. Nguoigiao: Ng­êi giao hµng. 4.2.3. Bảng NhapHangChiTiet: Lưu trữ thông tin chi tiết của từng lần nhập hàng Tương tự như b¶ng NhapHang, nhưng bảng này lưu giữ những thông tin của từng lần nhập hµng. Th«ng qua sè hiÖu ho¸ ®¬n ®Ó truy nhËp ®Õn b¶ng nµy. MaHang: M· sè hµng nhËp. SoLuong: Sè l­îng hµng nhËp. DonGia: §¬n gi¸ hµng nhËp. MaKho: M· sè kho nhËp hµng vÒ. 4.2.4. Bảng tblHangTrongKho: Lưu trữ dữ liệu hàng hóa trong các kho hàng MaHang: Mã của mặt hàng trong kho SoLuongTon: Số lượng tồn của mặt hàng trong kho MaKho: Mã kho chứa hµng 4 .3.1. B¶ng BanHang: L­u tr÷ th«ng tin vÒ hµng b¸n SoHieuHoaDon: Sè ho¸ ®¬n b¸n hµng MaNhanVien: M· nh©n viªn b¸n hµng. ConNo: Sè tiÒn kh¸ch hµng cßn nî. MaKhachHang: M· sè kh¸ch hµng mua hµng. 4.3.2. B¶ng ChiTietBanHang: L­u tr÷ th«ng tin chi tiÕt cña tõng ®ît b¸n hµng T­¬ng tù nh­ b¶ng BanHang, nh­ng b¶ng nµy l­u gi÷ th«ng tin cña tõng ®ît b¸n hµng. Th«ng qua SoHieuHoaDon ®Ó truy nhËp ®Õn b¶ng nµy. SoHieuHoaDon: T­¬ng tù nh­ trong b¶ng BanHang. MaMatHang: M· sè mÆt hµng b¸n trong ®ît. SoLuong: Sè l­îng hµng b¸n. DonGia: §¬n gi¸ hµng b¸n lµ bao nhiªu. 4.3.3. B¶ng dsDatHang: Cho biÕt danh s¸ch kh¸ch hµng ®Æt hµng DatHangID: Sè thø tù ®Æt hµng SoHieuDatHang: Sè ho¸ ®¬n ®Æt hµng. MaKhachHang: M· sè kh¸ch hµng ®Æt mua hµng. TienDatHang: Sè tiÒn mµ kh¸ch hµng ®Æt ®Ó mua hµng. NgayGiaoHang: Ngay kh¸ch hµng ®Æt hµng. NgayTraHang: Ngµy kh¸ch hµng yªu cÇu tr¶ hµng ®Æt. 4.3.4. B¶ng DatHangChiTiet: L­u gi÷ th«ng tin chi tiÕt cña ®ît ®Æt hµng §atHangChiTietID: Sè thø tù ®¬n ®Æt hµng chi tiÕt. MaHang: M· sè hµng ®Æt. 4. 4.1. Bảng TraHang: Lưu trữ dữ liệu về trả hàng (theo ngày trả hàng) SoHieuTra: Hoá đơn trả hµng SoHieuNhap: Hoá đơn nhập hang NgayTra: Ngày trả hàng 4.4.2. Bảng ChiTietTraHang: Lưu trữ dữ liệu trong từng lần trả hàng TraHangChiTietID: Hoá đơn cho từng lần trả MaMatHang: Mã hàng trả SoLuongTra: Số lượng trả 4.5. Mảng quán lý kho Bảng tblHangToiThieu: Thiết lập hàng tối thiểu ở trong kho MaHang: Mã hàng thiết lập số lượng tối thiểu MaKho: Mã kho hµng SoLuong: Số lượng tối thiểu V. THIẾT KẾ CHI TIẾT MỘT SỐ MODULE CHÍNH 5.1. Chñng lo¹i hµng Chức năng này được dùng để nhËn biÕt chñng lo¹i c¸c mÆt hµng - M· chñng lo¹i: Mçi chñng lo¹i cã mét m· nhÊt ®Þnh. Cho biÕt mÆt hµng ®ã thuéc chñng lo¹i g×. - Nhµ cung cÊp: Cho biÕt hµng ®ã cña nhµ cung cÊp nµo. H×nh ¶nhform minh ho¹: 5.2. Nhập hàng Chức năng này cho phép nhập số hàng vào trong kho: - Sè hiÖu nhËp : Mçi ®ît nhËp hµng sÏ cã mét sè hiÖu nhËp hµng kh¸c nhau. Dùa vµo sè hiÖu nhËp hµng nay sÏ truy nhËp ®Õn chi tiÕt nhËp hµng. - Ngày nhËp: Cho phép người dùng nhập ngày nhập - Ng­êi giao: Cho biÕt ®ît nhËp hµng nµy la do ng­êi nao giao. H×nh ¶nh Form minh ho¹ Víi mçi ®ît nhËp ta ph¶i cã chi tiÕt nhËp hµng. Cho biÕt chi tiÕt cu thÓ tõng lo¹i mÆt hµng nhËp vÒ trong ®ît nh­: Tªn mÆt hµng,sè l­îng, ®¬n gi¸, tiÒn khuyÕn m·i, thµnh tiÒn. H×nh ¶nh Form minh ho¹ - Số lượng: Nhập số lượng cho lần nhập này - Đơn giá: Nhập đơn giá của mặt hàng - Kho: Chọn kho để nhập hµng - TiÒn khuyÕn m·i: Sè tiÒn ®­îc khuyÕn m·i trong ®ît nhËp hµng nµy - PhÇn tr¨m khuyÕn m·i : Sè phÇn tr¨m ®­îc khuyÔn m·i - Thành tiền: Nó sẽ tự động nhập khi nhập số lượng và đơn giá 5.3. Bán hµng Chức năng này dùng trong việc bán hàng hóa Sè hiÖu ho¸ ®¬n: L­u tr÷ th«ng tin chi tiÕt cña ®ît b¸n hµng. Ngày bán: Lấy ngày hệ thống Mã hàng: Dùa vµo m· hµng sÏ cho biÕt c¸c th«ng sè cña hµng nh­: Tªn mÆt hµng,®ơn giá, Thành Tiền,Khuyến mãi, Tổng tiền hµng…sẽ tự động được đưa ra. Tiền khách trả: Số tiền khách trả - TiÒn khuyÕn m·i: Cho biÕt sè tiÒn kh¸ch hµng ®­îc khuyÕn m·i khi chän mua hµng. Tiền trả lại khách: Cho biÕt sè tiÒn ph¶i tr¶ l¹i kh¸ch khi kh¸ch tr¶ tiÒn. Kh¸ch cßn nî: Cho biÕt sè tiÒn kh¸ch cßn nî khi mua hµng. Hình ảnh form minh họa: 5.4. §Æt hµng Cho phÐp kh¸ch hµng ®Æt hµng tr­íc khi mua hµng Sè hiÖu ®Æt hµng: Mçi kh¸ch hµng ®Æt hµng cã sè hiÖu ®Æt hµng riªng TiÒn ®Æt hµng: Cho biÕt sè tiÒn kh¸ch hµng ®Æt tr­íc lµ bao nhiªu M· hµng: Th«ng qua m· hµng sÏ cho biÕt chi tiÕt cô thÓ vÒ mÆt hµng mµ kh¸ch hµng ®Æt tr­íc Sè l­îng: Cho biÕt sè l­îng mµ kh¸ch hµng ®Æt mua lµ bao nhiªu Ngµy ®Æt hµng: Ngµy kh¸ch hµng ®Æt hµng lµ khi nµo. Ngµy giao hµng: Ngµy ph¶i giao hµng cho kh¸ch. H×nh ¶nh Form minh ho¹ 55. Tr¶ hµng 5.5.1 Tr¶ hµng b¸n Cho biÕt chi tiÕt vÒ ®ît tr¶ hµng cña c«ng ty cho nhµ cung cÊp Sè hiÖu tr¶: Mçi ®ît tr¶ hµng cã mét m· sè x¸c ®Þnh cho ®ît tr¶ hµng ®ã. Sè hiÖu nhËp: Cho biÕt ®ît tr¶ hµng ®ã lµ hµng cña ®ît nhËp hµng nµo. Ngµy tr¶: Cho biÕt ngµy tr¶ hµng lµ khi nµo. Sè l­îng tr¶: Cho biÕt sè l­îng tr¶ hµng lµ bao nhiªu. H×nh ¶nh Form minh ho¹ 5.5.2 Tr¶ hµng b¸n Cho biÕt chi tiÕt vÒ ®ît tr¶ hµng cña kh¸ch hµng ®èi víi c«ng ty Sè hiÖu tr¶: Mçi ®ît tr¶ hµng cã mét m· sè x¸c ®Þnh cho ®ît tr¶ hµng ®ã. Sè hiÖu nhËp: Cho biÕt ®ît tr¶ hµng ®ã lµ hµng cña ®ît nhËp hµng nµo. Ngµy tr¶: Cho biÕt ngµy tr¶ hµng lµ khi nµo. Sè l­îng tr¶: Cho biÕt sè l­îng tr¶ hµng lµ bao nhiªu. Hinh ¶nh Form minh ho¹ 5.6 Nî kh¸ch hµng L­u danh s¸ch kh¸ch hµng cßn nî tiÒn cña c«ng ty. Sè tiÒn cßn nî, cña ®ît mua hµng nµo. H×nh ¶nh Form minh ho¹ Ch­¬ng III Cµi ®Æt ch­¬ng tr×nh Môi trường cài đặt chương trình Chương tr×nh Quản lý b¸m hµng ®· x©y dựng được viết trªn nền Visual Basic .Net kết nối cơ sở dữ liệu SQL server 2000 nªn cần chạy trên m«i trường sau: M¸y ph¶i ®¹t chip P4 2.4 trở lªn, Ram 256MB trở lªn, Ổ cứng 40G trở lªn. M¸y cài Windows XP hoặc Windows 2003 Server + SQL server 2000. M¸y ph¶i ®­îc cài .Net FrameWork và Crystal report 9.0 for .Net. Giao diện chương trình Sau đ©y là giao diện một số chức năng chÝnh của chương tr×nh: Phô lôc Mét sè thñ tôc hµm sö dông trong ch­¬ng tr×nh 1. fgmMain Private Sub mnuDatHang_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuDatHang.Click Dim frm As New DatHang frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuThoat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuThoat.Click Me.Close() End Sub Private Sub mnuChungLoaiMatHang_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuChungLoaiMatHang.Click Dim frm As New frmChungLoaiHang frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuDmCaLamViec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuDmCaLamViec.Click Dim frm As New frmDmCaLamViec frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuDmTienTe_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuDmTienTe.Click Dim frm As New frmDmTienTe frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuDmKho_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuDmKho.Click Dim frm As New frmKho frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuNhaCungCap_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuNhaCungCap.Click Dim frm As New frmNhaCungCap frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuKhachHang_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuKhachHang.Click Dim frm As New frmKhachHang frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuNhanVien_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuNhanVien.Click Dim frm As New frmNhanVien frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuNhapHang_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuNhapHang.Click Dim frm As New frmNhapHang frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuTraHangNhap_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuTraHangNhap.Click Dim frm As New frmTraHangNhap frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuKMHang_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuKMHang.Click Dim frm As New frmKMMatHang frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuKMTien_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuKMTien.Click Dim frm As New frmKMTien frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuBanHang_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuBanHang.Click Dim frm As New frmBanHang frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuTraHangBan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuTraHangBan.Click Dim frm As New frmTraHangBan frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuChoNoBanHang_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuChoNoBanHang.Click Dim frm As New frmChungLoaiHang 'frm.FormBorderStyle = FormBorderStyle.None 'frm.MdiParent = Me 'ViewForm(frm) frm.ShowDialog() 'frm.Dock = DockStyle.Fill End Sub Private Sub mnuDangNhap_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuDangNhap.Click Dim frm As New frmDangNhap 'frm.FormBorderStyle = FormBorderStyle.None 'frm.MdiParent = Me 'ViewForm(frm) frm.ShowDialog() 'frm.Dock = DockStyle.Fill End Sub Private Sub mnuDangXuat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuDangXuat.Click Dim frm As New frmDangXuatHT 'frm.FormBorderStyle = FormBorderStyle.None 'frm.MdiParent = Me 'ViewForm(frm) frm.ShowDialog() 'frm.Dock = DockStyle.Fill End Sub Private Sub MenuItem6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuDmHang.Click Dim frm As New frmDsMatHang frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuDatGiaBan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuDatGiaBan.Click Dim frm As New DatGiaBan frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub mnuChiTietNhapHang_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuChiTietNhapHang.Click Dim frm As New frmChiTietNhapHang frm.FormBorderStyle = FormBorderStyle.None frm.MdiParent = Me ViewForm(frm) frm.Show() frm.Dock = DockStyle.Fill End Sub Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Try Dim frm2 As New frmAnh frm2.FormBorderStyle = FormBorderStyle.None frm2.MdiParent = Me ViewForm(frm2) frm2.Show() frm2.Dock = DockStyle.Fill 'Goi tien ich - Word Catch End Try End Sub Private Sub mnuWork_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuWork.Click Try System.Diagnostics.Process.Start("winword.exe") Catch ex As Exception MsgBox("Không tìm th?y ?ng d?ng c?n ch?y !", MsgBoxStyle.Exclamation, "Thông báo") End Try End Sub Private Sub mnuExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuExcel.Click 'Goi tien ich - Exel Try System.Diagnostics.Process.Start("Excel.exe") Catch ex As Exception MsgBox("Không tìm th?y ?ng d?ng c?n ch?y !", MsgBoxStyle.Exclamation, "Thông báo") End Try End Sub Private Sub mnuAccess_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuAccess.Click 'Goi tien ich - Access Try System.Diagnostics.Process.Start("MSACCESS.EXE") Catch ex As Exception MsgBox("Không tìm th?y ?ng d?ng c?n ch?y !", MsgBoxStyle.Exclamation, "Thông báo") End Try End Sub Private Sub mnuNotepad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuNotepad.Click ''Goi tien ich - NotePad Try System.Diagnostics.Process.Start("Notepad.exe") Catch ex As Exception MsgBox("Không tìm th?y ?ng d?ng c?n ch?y !", MsgBoxStyle.Exclamation, "Thông báo") End Try End Sub Private Sub mnuMayTinh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuMayTinh.Click 'Goi tien ich - Calculator Try System.Diagnostics.Process.Start("Calc.exe") Catch ex As Exception MsgBox("Không tìm th?y ?ng d?ng c?n ch?y !", MsgBoxStyle.Exclamation, "Thông báo") End Try End Sub End Class NhËp hµng: Private Sub frmNhapHang_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Load_Luoi() Me.Lock_Text() Me.Load_NhanVien() End Sub Private Sub Load_ComBo(ByVal cmbName As Janus.Windows.EditControls.UIComboBox, ByVal strsql As String) Dim ds As New DataSet 'strSql = "select MaLoi,ThongBao from dmLoiNN" ds = g_clscommon.AddDataset(strCnn, strsql, "Name") Dim DataRow As DataRow Dim i As Integer For Each DataRow In ds.Tables("Name").Rows i = 0 cmbName.Items.Add(DataRow.Item(1)) cmbName.Items(DataRow.Item(1)).Value = DataRow.Item(0) i = i + 1 Next cmbName.SelectedIndex = -1 End Sub Private Sub Load_NhanVien() Me.cmbNhanVien.Items.Clear() strSql = "select Manhanvien,TenNhanVien from dsNhanVien" Me.Load_ComBo(Me.cmbNhanVien, strSql) End Sub Private Sub Load_Luoi() strSql = " select NhapHang.SoHieuNhap as 'S? hi?u nh?p', " & _ " NhapHang.MaNhanVien as 'Mã nhân viên'," & _ " dsNhanVien.TenNhanVien as 'Tên nhân viên'," & _ " NhapHang.NgayNhap as 'Ngày nh?p'," & _ " NhapHang.NguoiGiao as 'Ngu?i giao'," & _ " NhapHang.GhiChu as 'Ghi chú'" & _ " from Nhaphang " & _ " inner join dsNhanVien on dsNhanVien.MaNhanVien= Nhaphang.MaNhanVien" ds = g_clscommon.AddDataset(strCnn, strSql, "NhaCungCap") grdLuoi.DataSource = ds.Tables("NhaCungCap") g_clsValid.FormatGrid(grdLuoi) End Sub Private Sub ClearText() Me.txtSoHieuNhap.Text = "" Me.cmbNhanVien.Text = "" Me.txtNguoiGiao.Text = "" Me.txtGhiChu.Text = "" Me.cmbNgayNhap.Value = Now End Sub Private Sub UnLock_Text() Me.txtSoHieuNhap.ReadOnly = False Me.cmbNhanVien.ReadOnly = False Me.txtNguoiGiao.ReadOnly = False Me.cmbNgayNhap.ReadOnly = False txtGhiChu.ReadOnly = False cmdXoabo.Enabled = False cmdTimkiem.Enabled = False cmdThemmoi.Text = " &Ch?p nh?n" cmdSuachua.Text = " &Hu? b?" End Sub Private Sub Lock_Text() Me.txtSoHieuNhap.ReadOnly = True Me.cmbNhanVien.ReadOnly = True Me.txtNguoiGiao.ReadOnly = True Me.cmbNgayNhap.ReadOnly = True txtGhiChu.ReadOnly = True cmdXoabo.Enabled = True cmdTimkiem.Enabled = True cmdThemmoi.Text = " &Thêm m?i" cmdSuachua.Text = " &S?a ch?a" End Sub Private Sub cmdThemmoi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdThemmoi.Click If Trim(cmdThemmoi.Text) = "&Thêm m?i" Then Call UnLock_Text() Call ClearText() AddNew = True Me.txtSoHieuNhap.Focus() Else If AddNew Then Save_Addnew() Else Save_Edit() End If End If End Sub Private Function CheckControlNull() As Boolean If Me.txtSoHieuNhap.Text.Trim = "" Then MessageBox.Show("B?n ph?i nh?p s? hi?u nh?p!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information) Me.txtSoHieuNhap.Focus() Return True Exit Function End If If Me.cmbNhanVien.SelectedIndex < 0 Then MessageBox.Show("B?n ph?i nh?p tên nhân viên!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information) Me.cmbNhanVien.Focus() Return True Exit Function End If If Me.txtNguoiGiao.Text.Trim = "" Then MessageBox.Show("B?n ph?i nh?p tên ngu?i giao!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information) Me.txtNguoiGiao.Focus() Return True Exit Function End If Return False End Function Private Sub Save_Addnew() If CheckControlNull() Then Exit Sub End If strSql = "insert into NhapHang(SoHieuNhap,NgayNhap,MaNhanVien,NguoiGiao,GhiChu) values " & _ "(N'" & Me.txtSoHieuNhap.Text.Trim & "'," & _ " '" & Format(Me.cmbNgayNhap.Value, "yyyy/MM/dd") & "'," & _ " N'" & Me.cmbNhanVien.SelectedValue & "',N'" & Me.txtNguoiGiao.Text.Trim & "'," & _ " N'" & Me.txtGhiChu.Text.Trim & "')" Try g_clscommon.InsertByString(strCnn, strSql) Catch ex As Exception MsgBox(ex.Message) Exit Sub End Try ' Load lu?i Me.Load_Luoi() Call Lock_Text() End Sub Private Sub Save_Edit() If CheckControlNull() Then Exit Sub End If strSql = "Update NhapHang set MaNhanVien=N'" & Me.cmbNhanVien.SelectedValue & "'," & _ " NgayNhap=N'" & Format(Me.cmbNgayNhap.Value, "yyyy/MM/dd") & "'," & _ " NguoiGiao=N'" & Me.txtNguoiGiao.Text.Trim & "'," & _ " GhiChu=N'" & Me.txtGhiChu.Text.Trim & "'" & _ " where SohieuNhap=N'" & Me.txtSoHieuNhap.Text.Trim & "'" Try g_clscommon.UpdateByString(strCnn, strSql) Catch ex As Exception MsgBox(ex.Message) Exit Sub End Try Me.Load_Luoi() Call Lock_Text() End Sub Private Sub btnSuachua_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSuachua.Click If Trim(cmdSuachua.Text) = "&S?a ch?a" Then If Me.txtSoHieuNhap.Text.Trim = "" Then MsgBox("B?n ph?i ch?n s? hi?u nh?p ", MsgBoxStyle.Exclamation, "Thông báo l?i") Exit Sub End If AddNew = False Call UnLock_Text() Me.txtSoHieuNhap.ReadOnly = True Me.cmbNhanVien.Focus() Else Call Lock_Text() Call ClearText() End If End Sub Private Sub cmdXoabo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdXoabo.Click If Me.txtSoHieuNhap.Text.Trim = "" Then MsgBox("B?n hãy ch?n 1 b?n ghi d? xóa.", MsgBoxStyle.Exclamation, "Thông báo") Exit Sub End If If MsgBox("B?n có mu?n xóa b?n ghi này không?", MsgBoxStyle.YesNo, "Thông báo") = MsgBoxResult.Yes Then strSql = "Delete from NhapHang where SoHieuNhap=N'" & Me.txtSoHieuNhap.Text.Trim & "'" Try g_clscommon.DeleteByString(strCnn, strSql) Catch ex As Exception MsgBox(ex.Message) Exit Sub End Try 'Load lu?i Me.Load_Luoi() ClearText() End If End Sub Private Sub grdLuoi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles grdLuoi.Click Dim row As Integer row = grdLuoi.CurrentRowIndex If row < 0 Then Exit Sub With grdLuoi Me.txtSoHieuNhap.Text = .Item(row, 0) Me.cmbNhanVien.SelectedValue = .Item(row, 1) Me.cmbNhanVien.Text = .Item(row, 2) Me.cmbNgayNhap.Text = .Item(row, 3) Me.txtNguoiGiao.Text = .Item(row, 4) Me.txtGhiChu.Text = .Item(row, 5) End With End Sub Private Sub cmdThoat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdThoat.Click Me.Close() End Sub 3. §Æt gi¸ b¸n: Private Sub DatGiaBan_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Lock_Text() Me.Load_ChungLoai() Me.DinhDang_date() Me.Load_Luoi() End Sub Private Sub cmdThoat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdThoat.Click Me.Close() End Sub Private Sub DinhDang_date() Me.cmbNgayBatDau.DateFormat = Janus.Windows.CalendarCombo.DateFormat.Custom Me.cmbNgayBatDau.CustomFormat = "dd/MM/yyyy" Me.cmbNgayKetThuc.DateFormat = Janus.Windows.CalendarCombo.DateFormat.Custom Me.cmbNgayKetThuc.CustomFormat = "dd/MM/yyyy" Me.cmbNgayKetThuc.IsNullDate = True Me.cmbNgayKetThuc.Nullable = True End Sub Private Sub Load_ChungLoai() strsql = " Select dmChungLoai.MaChungLoai,TenChungLoai as [ChungLoai]" & _ " from dmChungLoai " dsChungLoai = g_clscommon.AddDataset(strCnn, strsql, "ChungLoai") g_clscommon.LoadListbox(lstNhaCungCap, dsChungLoai, "ChungLoai", "ChungLoai") End Sub Private Sub lstNhaCungCap_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstNhaCungCap.Click Dim index As Integer index = lstNhaCungCap.SelectedIndex() If index < 0 Then Exit Sub strMaChungLoai = dsChungLoai.Tables("ChungLoai").Rows(index).Item(0) ' load MaHang strsql = " Select dsMatHang.MaMatHang,TenMatHang as [TenMatHang]" & _ " from dsMatHang " & _ " where MaChungLoai='" & strMaChungLoai & "'" dsMatHang = g_clscommon.AddDataset(strCnn, strsql, "TenMatHang") g_clscommon.LoadListbox(lstMatHang, dsMatHang, "TenMatHang", "TenMatHang") End Sub Private Sub lstMatHang_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstMatHang.Click Dim index As Integer index = lstMatHang.SelectedIndex() If index < 0 Then Exit Sub Me.txtMaHang.Text = dsMatHang.Tables("TenMatHang").Rows(index).Item(0) End Sub Private Sub Load_Luoi() strsql = "select dsMatHang.MaMatHang as 'Mã m?t hàng'," & _ " dsMatHang.TenMatHang as 'Tên m?t hàng'," & _ " DatGiaBan.GiaBan as 'Giá bán' ,DatGiaBan.NgayBatDau as 'Ngày b?t d?u'," & _ " DatGiaBan.NgayKetThuc as 'Ngày k?t thúc',DatGiaBan.GhiChu as 'Ghi chú'," & _ " DatGiaBan.GiaBanID " & _ " from DatGiaBan " & _ " inner join DsMathang on dsMatHang.MaMatHang=DatGiaBan.MaMatHang" ds = g_clscommon.AddDataset(strCnn, strsql, "NhapHangChiTiet") grdLuoi.DataSource = ds.Tables("NhapHangChiTiet") g_clsValid.FormatGrid(grdLuoi) End Sub Private Sub ClearText() Me.txtMaHang.Text = "" Me.txtGiaBan.Text = "" Me.cmbNgayKetThuc.IsNullDate = True Me.txtGhiChu.Text = "" End Sub Private Sub UnLock_Text() Me.lstMatHang.Enabled = True Me.lstNhaCungCap.Enabled = True Me.txtMaHang.ReadOnly = True Me.txtGiaBan.ReadOnly = False Me.cmbNgayBatDau.ReadOnly = False Me.cmbNgayKetThuc.ReadOnly = False txtGhiChu.ReadOnly = False cmdXoabo.Enabled = False cmdTimkiem.Enabled = False cmdThemmoi.Text = " &Ch?p nh?n" cmdSuachua.Text = " &Hu? b?" End Sub Private Sub Lock_Text() Me.lstMatHang.Enabled = False Me.lstNhaCungCap.Enabled = False Me.txtMaHang.ReadOnly = True Me.txtGiaBan.ReadOnly = True Me.cmbNgayBatDau.ReadOnly = True Me.cmbNgayKetThuc.ReadOnly = True txtGhiChu.ReadOnly = True cmdXoabo.Enabled = True cmdTimkiem.Enabled = True cmdThemmoi.Text = " &Thêm m?i" cmdSuachua.Text = " &S?a ch?a" End Sub Private Sub cmdThemmoi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdThemmoi.Click If Trim(cmdThemmoi.Text) = "&Thêm m?i" Then Call UnLock_Text() Call ClearText() AddNew = True Me.txtGiaBan.Focus() Else If AddNew Then Save_Addnew() Else Save_Edit() End If End If End Sub Private Function CheckControlNull() As Boolean If Me.txtMaHang.Text.Trim = "" Then MessageBox.Show("B?n ph?i nh?p mã hàng!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information) Me.txtMaHang.Focus() Return True Exit Function End If If Me.txtGiaBan.Text.Trim = "" Then MessageBox.Show("B?n ph?i nh?p don giá!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information) Me.txtGiaBan.Focus() Return True Exit Function End If If Me.cmbNgayKetThuc.IsNullDate = False Then If Me.cmbNgayBatDau.Value > Me.cmbNgayKetThuc.Value Then MessageBox.Show("B?n ph?i nh?p ngày b?t d?u tru?c ngày k?t thúc!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information) Me.cmbNgayBatDau.Focus() Return True Exit Function End If End If Return False End Function Private Sub Save_Addnew() If CheckControlNull() Then Exit Sub End If strsql = "insert into DatGiaBan (MaMatHang,GiaBan," & _ " NgayBatDau,NgayKetThuc,GhiChu) values " & _ " (N'" & Me.txtMaHang.Text.Trim & "'," & Me.txtGiaBan.Value & "," & _ " '" & Format(Me.cmbNgayBatDau.Value, "yyyy/MM/dd") & "'," If Me.cmbNgayKetThuc.IsNullDate = True Then strsql = strsql & " null," Else strsql = strsql & " '" & Format(Me.cmbNgayKetThuc.Value, "yyyy/MM/dd") & "'," End If strsql = strsql & "N'" & Me.txtGhiChu.Text.Trim & "')" Try g_clscommon.InsertByString(strCnn, strsql) Catch ex As Exception MsgBox(ex.Message) Exit Sub End Try ' Load lu?i Me.Load_Luoi() Call Lock_Text() End Sub Private Sub Save_Edit() If CheckControlNull() Then Exit Sub End If strsql = "Update DatGiaBan set GiaBan=" & Me.txtGiaBan.Value & "," & _ " NgayBatDau='" & Format(Me.cmbNgayBatDau.Value, "yyyy/MM/dd") & "'," If Me.cmbNgayKetThuc.IsNullDate = True Then strsql = strsql & "NgayKetThuc=null," Else strsql = strsql & "NgayKetThuc='" & Format(Me.cmbNgayKetThuc.Value, "yyyy/MM/dd") & "'," End If strsql = strsql & " GhiChu=N'" & Me.txtGhiChu.Text.Trim & "'" & _ " where GiaBanID=" & GiaBanID & "" Try g_clscommon.UpdateByString(strCnn, strsql) Catch ex As Exception MsgBox(ex.Message) Exit Sub End Try Me.Load_Luoi() Call Lock_Text() End Sub Private Sub btnSuachua_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSuachua.Click If Trim(cmdSuachua.Text) = "&S?a ch?a" Then If Me.txtMaHang.Text.Trim = "" Then MsgBox("B?n ph?i ch?n m?t hàng c?n s?a !", MsgBoxStyle.Exclamation, "Thông báo l?i") Exit Sub End If AddNew = False Call UnLock_Text() Me.txtMaHang.ReadOnly = True Me.txtGiaBan.Focus() Else Call Lock_Text() Call ClearText() End If End Sub Private Sub cmdXoabo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdXoabo.Click If Me.txtMaHang.Text.Trim = "" Then MsgBox("B?n hãy ch?n 1 b?n ghi d? xóa.", MsgBoxStyle.Exclamation, "Thông báo") Exit Sub End If If MsgBox("B?n có mu?n xóa b?n ghi này không?", MsgBoxStyle.YesNo, "Thông báo") = MsgBoxResult.Yes Then strsql = "Delete from DatGiaBan where GiaBanID=" & GiaBanID & "" Try g_clscommon.DeleteByString(strCnn, strsql) Catch ex As Exception MsgBox(ex.Message) Exit Sub End Try 'Load lu?i Me.Load_Luoi() ClearText() End If End Sub Private Sub grdLuoi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles grdLuoi.Click Dim row As Integer row = grdLuoi.CurrentRowIndex If row < 0 Then Exit Sub With grdLuoi If Me.grdLuoi.Item(row, 4).value Is DBNull.Value Then Me.cmbNgayKetThuc.ResetValue() cmbNgayKetThuc.IsNullDate = True Else Me.cmbNgayKetThuc.Value = .Item(row, 4) End If Me.txtMaHang.Text = .Item(row, 0) Me.txtGiaBan.Value = .Item(row, 2) Me.cmbNgayBatDau.Value = .Item(row, 3) GiaBanID = .Item(row, 6) Me.txtGhiChu.Text = .Item(row, 5) End With End Sub. KẾT LUẬN Nh÷ng môc tiªu ®· ®¹t ®­îc trong ®Ò tµi: X©y dựng cơ sở dữ liệu chi tiết, mang tÝnh linh động cao; lưu trữ đầy đủ th«ng tin cần thiết gióp tổ hợp, chọn lọc dữ liệu đầy đủ, đ¸p ứng c¸c nhu cầu b¸o c¸o, tổng hợp dữ liệu của người sử dụng Dữ liệu được lưu trữ, quản lý theo thời gian thực. Giao diện chương tr×nh gần gũi, cập nhật dễ dàng, thống nhất trªn tất cả c¸c chức năng; tÝch hợp chức năng t×m kiếm dữ liệu trªn hầu hết c¸c chức năng. HƯỚNG PHÁT TRIỂN CỦA ®Ò tµi -Kh«ng chØ dõng l¹i ë møc cho gi¸m ®èc c«ng ty ,qu¶n lý cña hµng, nh©n viªn b¸n hµng qu¶n lý hµng ho¸ c«ng ty, mµ ta còng cã thÓ dùa vµo phÇn mÒm nµy ®Ó ®¨ng t¶i nªn m¹ng nh­ mét c¸ch thøc ®Ó qu¶ng b¸ th­¬ng hiÖu cña c«ng ty. -Tõ phÇn mÒm qu¶n lý b¸n hµng néi thÊt cho c«ng ty F.GROUP chóng ta còng cã thÓ më réng ra ®Ó dïng trong nh÷ng lÜnh vùc qu¶n lý c¸c lo¹i hµng ho¸ kh¸c. Môc lôc Lêi nãi ®Çu 1 Ch­¬ngI :Giíi thiÖu hÖ qu¶n trÞ c¬ së d÷ liÖu SQL Server 2000 vµ ng«n ng÷ lËp tr×nh Visual Basic.net 3 A. Giíi thiÖu hÖ qu¶n trÞ c¬ së d÷ liÖu SQL Server2000 3 I. Tæng quan vÒ SQL Server 3 1. HÖ qu¶n trÞ c¬ së d÷ liÖu quan hÖ 3 2. KiÕn tróc client/server 3 3. C¸c thµnh phÇn SQL Server2000 4 II.Kho¸ vµ rµng buéc d÷ liÖu 5 1. Kh¸i niÖm rµng buéc 5 2. C¸c lo¹i rµng buéc 5 III. B¶ng ¶o 6 IV. Thñ tôc th­êng tró 6 V. BÉy lçi 6 Vi. B¶o mËt trong hÖ thèng SQL Server 7 B. Giíi thiÖu nh÷ng lËp tr×nh Visual Basic.net 7 I. Giíi thiÖu Net Frame Work 7 II. Giíi thiÖu ng«n ng÷ lËp tr×nh Visual Basic.net 9 Ch­¬ng II: Kh¶o s¸t vµ ph©n tÝch thiÕt kÕ hÖ thèng 12 A. Kh¶o s¸t hÖ thèng 12 I. Giíi thiÖu vÒ c«ng ty F.Grovp 12 II. Kh¶o s¸t hiÖn tr¹ng c«ng ty F.Grovp 12 2.1. Kh¶o s¸t 12 2.2. §¸nh gi¸ 13 III. Yªu cÇu hÖ thèng 14 3.1. Yªu cÇu cña hÖ thèng b¸n hµng 14 3.2. NhiÖm vô cña hÖ thèng b¸n hµng 15 B. Ph©n tÝch vµ thiÕt kÕ hÖ thèng 16 I. S¬ ®å chøc n¨ng 16 II. S¬ ®å luång d÷ liÖu 16 III. S¬ ®å quan hÖ 19 IV. C¸c b¶ng chÝnh 20 V. ThiÕt kÕ mét sè modun chÝnh 26 Ch­¬ng III: Cµi ®Æt ch­¬ng tr×nh 33 I. M«i tr­êng cµi ®Æt 33 II. Giao diÖn ch­¬ng tr×nh 34 Phô lôc 35 KÕt luËn 55 TÀI LIỆU THAM KHẢO LËp tr×nh øng dông chuyªn nghiÖp SQL server 2000 T¸c gi¶: Ph¹m H÷u Khang- NXB Gi¸o dôc Kỹ thuật lập tr×nh ứng dụng chuyªn nghiệp Visual Basic .NET T¸c giả: Phạm Hữu Khang, Phương Lan, Hoàng Đức Hải. Nhập môn CSDL quan hệ : Lª Tiến Vương- NXB Thống kª. Ph©n tÝch và thiết kế hệ thống th«ng tin - Nguyễn Văn Ba- NXB Khoa học kỹ thuật.

Các file đính kèm theo tài liệu này:

  • docA9005.DOC