Chuyên đề Xây dựng phần mềm quản lý kho hang cho công ty TNHH Quốc Minh

Thế giới đang bước vào kỷ nguyên nhảy vọt của khoa học công nghệ. Không ai có thể phủ nhận được những thành tựu và sự đóng góp to lớn của công nghệ thông tin vào trong cuộc sống con người. Nhờ có tin học mà con người sẽ dễ dàng hơn trên con đường đi đến những tầm cao mới. Việc ứng dụng công nghệ thông tin vào công tác quản lý đang được các nhà kinh tế quan tâm ở mức cao độ, đó cũng là nhu cầu cấp bách của nền kinh tế Việt Nam để vươn ra tầm thế giới. Thông qua đề tài “Xây dựng phần mềm quản lý kho cho công ty TNHH Quốc MInh” em xin đóng góp một phần công sức nhỏ vào sự phát triển của công ty TNHH Quốc Minh nói riêng và công cuộc phát triển kinh tế của đất nước nói chung. Hi vọng hệ thống này có thể giải quyết được những vấn đề tồn đọng trong công tác quản lý kho của công ty, giảm bớt được những chi phí không đáng có và khai thác tối đa nguồn nhân lực. Áp dụng Hệ thống quản lý kho, công ty TNHH Quốc Minhcó thể bao quát tốt hơn, nhanh hơn và dễ hơn về tình hình hàng hóa trong kho, đồng thời cũng nắm bắt được kĩ hơn về quá trình xuất – nhập hàng hóa của công ty. Hệ thống có thể giúp giảm bớt thời gian đầu tư trong công việc quản lý kho, giảm bớt những sai sót có thể xảy ra trong quá trình quản lý.

doc96 trang | Chia sẻ: aloso | Lượt xem: 1699 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Chuyên đề Xây dựng phần mềm quản lý kho hang cho công ty TNHH Quốc Minh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
g chương trình. Phần dữ liệu: Mô tả các kiểu dữ liệu theo cấu trúc cấp bậc Phần thủ thục: Mô tả các giải thuật xử lý dữ liệu. Do khả năng định nghĩa dữ liệu tuyệt vời của mình mà cho đến nay ngay cả trong các nước phát triển, COBOL cũng vẫn được sử dụng khi gải quyết bài toán trong lĩnh vực kinh tế và thương mại. BASIC là ngôn ngữ lập trình phi cấu trúc. Khi xuất hiện máy tính cá nhân IBM PC, ngôn ngữ BASIC lại được phát triển rất mạnh với rất nhiều bản khác nhau như QBASIC, GWBASIC,… Ngôn ngữ thế hệ thứ ba Ngôn ngữ lập trình thế hệ thứ ba còn được gọi là ngôn ngữ lập trình hiện đại. Nét đặc trưng của các ngôn ngữ này là khả năng cấu trúc rất phong phú và các thủ tục mạnh. Ngôn ngữ thế hệ thứ ba được chia thành hai loại: - Ngôn ngữ cao cấp vạn năng - Ngôn ngữ hướng đối tượng. Ngôn ngữ cao cấp vạn năng ALGOL là ngôn ngữ lập trình vạn năng rất phát triển với việc đưa ra các kết cấu thủ tục và định kiểu dữ liệu. ALGOL rất thong dụng ở Châu Âu Nhưng lại không được phổ biến rộng rãi lắm ở Mỹ. Phien bản được sử dụng rộng rãi nhất cảu ALGOL đựợc gọi là ALGOL 60 và sau đó được phát triển với một sự cài đặt mạnh hơn trong ALGOL 68. Đặc trưng của ALGOL 60 và ALGOL 68 là dưa vào khái niệm cấu trúc khối và cấp phát bô nhớ động, giải thuật đệ qui. Trên cơ sở của ALGOL người ta đã sang tạo ra các ngôn ngữ lập trình vạn năng khác như PL/1, PASCAL, MODULA2, C và ADA có rất nhiều ứng dụng trong khoa học cũng như kinh tế và thương mại. PL/1 cóa thể coi như ngôn ngữ thế hệ thứ 2.5, được thiết kế với một phạm vi rất rộng các tính năng, có thể ứng dụng trong nhiều lĩnh vực khác nhau. PL/1 cung cấp các ứng dụng trong khoa học kỹ thuật cũng như trong kinh tế và thương mại. PL/1 còn cho phép làm việc với các cấu trúc dữ liệu phức tạp, đa nhiệm, đầu vào, đầu ra phong phú cũng như khả năng xử lý danh sách và các tính năng khác. Đã có các tập con của PL/1 để lập trình PL/1 dùng cho các bộ vi xử lý PL/M và lập trình hệ thống PL/S. Pascal được Niklaus With khởi xướng năm 1968. Đây là một ngôn ngữ rất trong sang, được giới khoa học rất ưa chuộng trong việc dùng để thể hiện các thuật toán, PASCAL kế thừa từ ANGOL nhiều đặc trưng như cấu trúc khối, định kiểu dữ liệu, hỗ trợ đệ qui. Đến nay Pascal vẫn được dùng trong các kỳ thi tin học Việt Nam và quốc tế. Ngôn ngữ C do Dennis Ritche phát triểnnăm 1972 ở New Jersey. Sự chuyển tiếp giữa ngôn ngữ phổ biến đầu tiên và ngôn ngữ phổ biến của ngày nay diễn ra giữa Pascal và C, C rất phổ biến dùng cho việc lập trình các hệ điều hành như Unix, Windows, Mac và Linux. Ngôn ngữ C++, sản phẩm kế thừa ngôn ngữ C, cũng là sự khởi đầu cho phương pháp lập trình hướng đối tượng. ADA là ngôn ngữ lập trình do Bộ quốc phòng Mỹ phát triển. Đây là ngôn ngữ chuẩn dùng cho các máy tính thời gian thực. Ngày nay, ADA được sử dụng trong các mục đích quân sự lẫn dân sự.ADA có cấu trúc cú pháp tựa như PASCAL nhưng mạnh mẽ, phong phú và phức tạp hơn nhiều. ADA có các hỗ trợ cho các chức năng đa nhiệm, xử lý ngắt. Ngôn ngữ hướng đối tượng – OOL (Object Oriented Language) Đây là các ngôn ngữ lập trình được xây dựng dựa trên các khái niệm sự vật và các thuộc tính, lớp và thành phần, toàn thể và bộ phận. Nói đến ngôn ngữ lập trình hướng đối tượng, chúng ta phải kể đến Java do Sun Microsoftsystem khởi xướng từ đầu thập kỷ 90. Với ý tưởng, viết một lần chạy nhiều lần trên các thiết bị khác nhau, Java những tưởng sẽ thống trị thế giới phần mềm. Song trên thực tế, sau những va chạm xung quanh vấn đề khai thác sử dụng Java với công ty phần mềm số 1 thế giới hiện nay là Microsoft, ngôn ngữ này đang đứng trước sự cạnh tranh gay gắt. Nhất là khi Microsoft đã đánh cược tương lai của mình vào nền tảng Dotnet Framework cùng công cụ lập trình Visual Studio.Net. Dotnet Framework tạo ra môi trường lập trình hướng đối tượng 100%. Tất cả thành phần trong môi trường lập trình của chúng ta đều là hướng đối tượng, cho chúng ta khả năng lập trình mềm dẻo. Các ngôn ngữ lập trình hướng đối tượng tiêu biểu khác là C++, Object Pascal, Eiffel. 2.3.Công nghệ phần mềm. 2.3.1.Khái niệm công nghệ phần mềm. Công nghệ phần mềm là môn khoa học nghiên cứu các phương pháp, các thủ tục và các công cụ đi từ phân tích thiết kế đến quản lý một dự án phần mềm nhằm đạt được các dự án phần mềm nhằm đạt được các mục tiêu của dự án. Công nghệ phần mềm bao gồm một tập hơp với ba yếu tố chủ chốt: Phương pháp công cụ và thủ tục, giúp cho người quản lý có thể kiểm soát đựợc quá trình phát triển phần mềm và cung cấp cho kỹ sư phần mềm một nền tảng để xây dựng một phần mềm chất lượng cao. 2.3.2. Các đặc trưng của nền công nghiệp phần mềm Trong thời gian gần đây, phần mềm đã phát triển với một tốc độ vô cùng nhanh chóng trở thành một nghành công nghiệp. Công nghiệp phần mềm là nghành công nghiệp sản xuất ra các sản phẩm phần mềm máy tính phục vụ cho các lĩnh vực hoạt động khác nhau của con người, nhất là trong các hoạt động kinh tế và thương mại. Trên thết giới, nền công nghiệp phần mềm ở các nước là cường quốc về công nghệ thong tin, phát triển với tốc độ rất cao. Công nghiệp phần mềm của Mỹ trong thời kỳ 1980 – 1992 tăng 28% mỗi năm trong khi GDPchỉ tăng 3% hang năm. Hiện tại, công nghiệp phần mềm là nghành công nghiệp xếp thứ 6 của nước Mỹ. Ấn Độ cũng là nước có nền công nghiệp phần mềm phát triển rất mạnh . Thị phần thế giới của các sản phẩm phần mềm sản xuất tại Ấn Độ là 17 %. Ấn Độ có 7 khu công nghiệp phần mềm công nghệ cao cấp quốc gia và cứ mỗi năm một số chuyên viên kỹ thuật phần mềm tăng thêm đến 600.000 người. Chỉ một khu công nghiệp phần mềm Banggaloro cũng đã thu hút nửa tỷ USD vốn đầu tư nước ngoài và là khu công nghiệp phần mềm đứng thứ 5 trên thế giới. Nền công nghiệp phần mềm có các đặc trưng sau: Trong giá trị của mỗi sản phẩm công nghiệp thông thường đều hàm chứa một khối lượng lớn các nguyên vật liệu thô ban đầu như sắt, thép, xi măng…được sản xuất theo một qui trình công nghệ đồng bộ, kết tinh lao động cơ bắp của con người. Còn trong các sản phẩm của nền công nghiệp phần mềm lại chứa một khối lưộng lao động sang tạo rất cao. Nó là sản phẩm lao động trí tuệ của các lập trình viên. Có thể nói vật liệu tiêu thụ quan trọng nhất để sản xuất ra phần mềm là chất xám. Nhà khoa học Mỹ Mc.Corduck đã nói: “ Công nghiệp phần mềm là nghành công nghiệp lý tưởng. Nó tạo ra giá trị bằng cách biến đổi năng lực trí não của con người, tiêu thụ rất ít năng lượng và nguyên liệu thô”. Nền tảng của nền công nghiệp thông thường là nhà xưởng, máy móc, dây chuyền công nghệ còn trong nền công nghiệp phần mềm thì nền tảng quan trọng nhất là trí tuệ của đội ngũ lập trình viên. Nhà khoa học Mỹ Feigenbaum đã cho rằng:”Trí thức là quyền lực, còn máy tính điện tử lầ bộ khuyếch đại của quyền lực đó”. Các sản phẩm của nền công nghiệp phần mềm được chuyển giao giữa nhà cung cấp và người sử dụng một cách mau chóng, tốn kém ít chi phí chuyên chở từ nơi sản xuất đến nơi tiêu thụ (có thể chỉ là một CD ROM chứa phần mềm đã đóng gói hoặc chỉ là một tệp chương trình đã nén lại và gửi qua mạng Internet). Còn trong nền công nghiệp thông thường, việc chuyen chở sản phẩm luôn là một khoản mục đáng kể được tính vào chi phí thành phẩm nhất là trong nghành công nghiệp nặng. Một đặc điểm quan trọng khác là khi sử dụng thì sản phẩm của nghành công nghiệp phần mềm không bị khấu hao theo thời gian. Các nước tuy chưa có nền công nghiệp phát triển cao cũng có thể tham gia xây dựng công nghiệp phần mềm nếu ó một tiềm năng chất xám và một chính sách phù hợp ở tầm quản lý vĩ mô. Nền công nghiệp phần mềm tạo ra các nghề nghiệp mới chưa có trước đây như là nghành nghề lien quan đến thông tin và quá trình xử lý thông tin như phân tích hệ thống, lập trình viên, thiết kế hệ thống, quản trị hệ thống, thao tác viên phòng máy, marketing sản phẩm phần mềm, quản lý dự án phần mềm… Đối với Việt Nam, ngày 05/06/2000, chính phủ đã ra Nghị Quyết số 07/CP về phát triển nền công nghiệp phần mềm của Việt Nam thành một nghành kinh tế mũi nhọ của đất nước. 2.4. Vòng đời phat triển của phần mềm Một phần mềm từ khi được xây dựng và đưa vào ứng dụng trải qua một giai đoạn dài được gọi là vòng đời phát triển của nó. Đây là phương pháp luận quan trọng trong sản xuất phần mềm vì mấy lý do chính sau đây: Người ta nghiên cứu vòng đời phát triển của phần mềm để hiểu rõ trình tự từng công đoạn. Người ta tìm ra các phương tiện thích hợp nhất để tác động vào từng công đoạn nhằm nâng cao hiệu quả của phần mềm. Vòng đời phát triển của phần mềm được biểu diễn bằng mô hình gọi là mô hình thác nước. Phân tích Thiết kế Mã hóa Kiểm thử Bảo trì Công nghệ hệ thống Hình 2.1: Mô hình thác nước - Mô hình thác nước nói lên hai ý nghĩa sau đây: + Biểu thị 6 quy trình trong vòng đời phát triển của phần mềm, là các quá trình có mối lien hệ mật thiết với nhau không thể tách rời. + Mỗi quy trình đều chịu tác động của các quy trình đứng ở phía trên nó trừ quy trình thứ nhất. Các quy trình càng ở phía dưới càng chịu nhiều tác động của các quy trình bên trên. - Trước hết là công nghệ hệ thống: Quy trình này bao gồm tất cả các công đoạn trong sản xuất phần mềm chuyên nghiệp vì bản than phần mềm chỉ là một thành phần của phương pháp quản lý do đó khi xây dựng phần mềm người ta phải đặt nó trong mối quan hệ ràng buộc giữa các yếu tố kinh tế và kỹ thuật của tổ chức. Tức là công nghệ hệ thống sẽ tác động đến năm quy trình còn lại. Quy trình phân tích: Đưa ra một khái niệm tổng thể các khía cạnh của phần mềm và chính là nền tảng của thiết kế. Yêu cầu về chức năng – hệ thống được thiết kế để làm gì? Khuôn dạng các định nghĩa này phụ thuộc vào phương pháp luận sử dụng trong giai đoạn phân tích. Yêu cầu về cấu hình – các thiết bị cuối, các thông điệp, thời gian trả lời của mạng, dung lượng vào/ra, yêu cầu do thời gian xử lý. Yêu cầu về giao diện – dữ liệu trao đổi với các ứng dụng và đơn vị khác là gì? Định nghĩa này bao gồm cả tính thời gian, phương tiện và khuân dạng của dữ liệu trao đổi. Yêu cầu về thiết kế - Các ví dụ về yêu cầu thiết kế bao gồm công tác lưu trữ dữ liệu, phần cứng, các điều kiện trắc nghiệm, các yêu cầu chuyển đổi, các yêu cầu tương tác người – máy. Các chuẩn xây dựng phần mềm – Dạng cấu trúc, tính thời gian, nội dung cơ bản của tài liệu cần đưa ra trong quá trình xây dựng phần mềm. Định dạng thông tin bao gồm nội dung của dữ liệu từ điển hay kho lưu trữ đối với việc thiết kế đối tượng, nội dung báo cáo dự án, các yêu cầu cần thiết khác được giám sát bởi nhóm tham gia dự án. - Quy trình thiết kế: công việc thiết kế phác họa hệ thống cần phải làm gì và sẽ làm như thế nào trong cấu hình phần cứng, phần mềm nhất định. Những thuật ngữ khác dùng để miêu tả các hoạt động thiết kế bao gồm thiết kế chi tiết, thiết kế vật lý, thiết kế bên trong và thiết kế sản phẩm. Trong suốt giai đoạn thiết kế, nhóm kỹ sư phần mềm phải tạo, sưu tập tài liệu và kiểm tra. Kiến trúc phần mềm: Định danh và định nghĩa chương trình, các khối độc lập chức năng, các luật, các đối tượng và các mối quan hệ giữa chúng. Các thành phần và các khối của phần mềm: Định nghĩa một cách chi tiết nội dung và chức năng của các thành phần, bao gồm: đầu vào, đầu ra, sự biến thị, báo cáo, dữ liệu, các file, các kết nối và các tiến trình. Giao diện: nội dung chi tiết, tính toán thời gian, với trách nhiệm cụ thể, và thiết kế dữ liệu được trao đổi với những chương trình ứng dụng hay tổ chức khác. Kiểm tra: xác định chiến lược, nhiệm vụ và tính tán thời gian cho mọi loại hình kiểm tra cần được tiến hành. Dữ liệu: Đây là việc xác định cách thể hiện vật lý của dữ liệu trên các thiết bị và các yếu tố yêu cầu, tính toán thời gian, nhiệm vụ phân rã, sao chép các bản sao dữ liệu. - Quá trình mã hóa: Trong quá trình mã hóa: trong quá trình mã hóa, thành phần chương rtình mức thấp của sản phẩm phần mềm được tạo ra từ kết quả của việc thiết kế và gỡ lỗi. Kiểm tra đơn vị la sự kiểm tra tính đúng đắn mà chương trình thực hiện nếu như nó yêu cầu. - Quá trình kiểm thử: Kiểm thử đảm bảo chất lượng có thể được kiểm soát trong giai đoạn kiểm tra hoặc coi như là một hoạt động riêng biệt. Trong quá trình kiểm tra đảm bảo chất lượng, sản phẩm phần mềm (Phần mềm hoặc tài liệu) được đánh giá bởi thnàh viên không chính thức của nhóm dự án để xác định yêu cầu phân tích có được thỏa mãn hay không. - Quy trình triển khai: Việc thực hiện triển khai còn được gọi là cài đặt và cho phép sử dụng. Triển khai là quá trình một sản phẩm phần mềm được tích hợp vào môi trường làm việc và cho phép sử dụng. thực hiện triển khai baio gồm sự hoàn chỉnh của chuyển đổi dữ liệu, cài đặt và đào tạo sử dụng. Vào thời điểm này của chu trình một dự án quá trình phát triển phần mềm kết thúc, và giai đoạn bảo hành, bảo trì bắt đầu. Việc bảo trì tiếp tục cho đén khi dự ná kết thúc. - Quy trình vận hành và bảo trì: Vận hành và bảo trì là một giai đoạn trong quá trình sản xuất phần mềm mà ở đó sản phẩm phần mềm được sử dụng trong môi trường làm việc, giám sát đối với hiệu quả thống kê, và sửa đổi nếu cần thiết. 2.5. Quản lý dự án phần mềm Mỗi phần mềm không phụ thuộc vào mức độ phức tạp khẳ năng ứng dụng đều trải qua 3 giai đoạn phát triển được biểu diễn trong hình vẽ sau đây: Giai đoạn 1 Giai đoạn xác định Phân tích hệ thống Lập kế hoạch Phân tích yêu cầu Giai đoạn phát triển Giai đoạn 2 Thiết kế phần mềm Mã hóa Kiểm thử Giai đoạn bảo trì Giai đoạn 3 Sửa đổi Thích nghi Nâng cao Giai đoạn 1: Người kỹ sư phần mềm phải trả lời cho câu hỏi thiết kế cái gì? Tức là dạng càng cụ thể càng tốt, qui mô phần mềm mà mình xây dựng. Trong thực tế sản xuất phần mềm của các công ty phần mềm hiện nayquy trình này được tiêu chuẩn hóa thành chức danh cán bộ xây dựng yêu cầu. Giai đoạn 2: Trả lời cho câu hỏi thế nào? Đưa ra các phương án thiết kế sản phẩm. Ở đây cần chú ý khái niệm mã hóa trong công nghệ phần mềm được hiểu khác với mã hóa trong hệ thống thông tin. Trong công nghệ phần mềmmã hóa hay gọi là chức danh coding, được hiểu là quá trình dichj từ bản vẽ thiết kế ban đầu thành chương trình dịch mà máy tính có thể hiểu được. Giai đoạn 3: Trả lời cho câu hỏi thay đổi? Tức là xem xét những thay đổi phải có của phần mềm sau khi đã bán cho người dùng. Trong thực tiễn của các công ty phần mềm, thường được thể hiện dưới ba hình thức: Bảo trì sửa đổi, bảo trì thích nghi và bảo trì nâng cao. + Bảo trì sửa đổi: Sửa chữa sai sót. + Bảo trì thích nghi: Thích nghi với phầm cứng của doanh nghiệp: Hợp với hệ điều hành. + Bảo trì nâng cao: Thêm chức năng mới. Sự phân bố các nỗ lực trong giai đoạn xác định và phát triển phần mềm được thực hiện quy tắc 40 – 20 – 40 theo mô hình sau: Kiểm thử 40 Phân tích thiết kế 40 Mã hóa 20 Hình 2.2. Phân bố thời gian trong quá trình phát triển phần mềm Từ một công cụ phân tích đơn thuần, công nghệ phần mềm đã trở thành một nghành công nghiệp ngày càng có vị trí đặc biệt quan trọng trong nền kinh tế quốc dân. Đặc biệt là trong giai đoạn phát triển của nền kinh tế tri thức vì những đặc trưng riêng biệt của sản phẩm trong nền công nghiệp hiện nay. CHƯƠNG 3. XÂY DỰNG PHẦN MỀM QUẢN LÝ KHO CHO CÔNG TY TRÁCH NHIỆM HỮU HẠN QUỐC MINH Quá trình xây dựng một phần mềm hay lớn hơn là một hệ thống thông tin luôn đòi hỏi công tác xác định yêu cầu như một bước sống còn bởi nó quyết định tính chính xác và hợp lý của tất cả các bước sau đó, đồng thời nó cũng quyết định việc phần mềm hay hệ thống thông tin được tạo ra có đáp ứng được nhu cầu của thực tế hay không. Trên thực tế phải là những nhân viên có trình độ và kinh nghiệm rất cao mới làm tốt được bước này, với trình độ còn hạn chế của mình em đã cố gắng hết sức nhằm làm rõ yêu cầu của người sử dụng cũng như đánh giá tính khả thic ủa công việc. Quy mô của một phần mềm quản lý kho là không quá lớn nhưng nghiệp vụ khá phức tạp. Với sự giúp đỡ về kỹ thuật của công ty phần mềm Bravo em hi vọng sẽ hoàn thành công việc này. Đối với công ty trách nhiệm hữu hạn Quốc Minh, tồn tại và phát triển liên tục từ năm 1994 đến nay không phải là một việc đơn giản. Thực tế cho thấy, có rất nhiều công ty trong nghành này đã khuynh gia đại sản hoặc phải chuyển sang nghành khác do khâu quản lý kém. Đối với những công ty này vấn đề đầu ra hay đầu vào chưa hẳn là đau đầu nhất, nhiều công ty thất bại là do quản lý kho hàng hoá không tốt. Có thể dễ dàng chỉ một số thực tế như: mặt hàng thảm để trong kho có điều kiện tồi có thể bị ố và bán sẽ bi mất giá, thảm dư thừa mà dân trong nghành gọi “thảm vụn” bị lãng quên trong kho gây ra lãng phí hay nguy hiểm nhất là thủ kho thông đồng với công ty khác đưa hàng công ty mình ra ngoài nhằm tư lợi cá nhân. Bản thân Quốc Minh đôi khi cũng đã có được nguồn hàngnhư vậy cho mình từ các thủ kho của các công ty địch thủ. Bên cạnh đó công ty cũng đã may mắn thoát khỏi tình trạng nguy hiểm đó do yếu tố đạo đức của người thủ kho cũng như mối quan hệ gia đình, kéo theo nó là tinh thần làm việc trách nhiệm các thành viên. Công ty có hai kho hàng lớn chứa mặt hàng chứa mặt hàng thảm, rèm…một kho ở Vĩnh Tuy_Hà Nội, một kho mới xây dựng ở Thường Tín (Hà Tấy). Khối lượng hàng hoá trong các kho là rất lớn , và được đánh mã dựa trên màu sắc hay xuất xứ, việc kiểm soát đầy đủ và chi tiết lượng hàng hoá trong một quy mô to lớn như vậy là khá khó khăn. Thông tin về chủng loại và số lượng hàng hoá giữa các kho và cửa hàng của công ty đôi khi có sự không đông nhấtdo quy mô to lớn đó. Sự không đồng nhất này là thường là do hiện tượng các loại thảm, rèm …có mã hàng khác nhau song màu sắc chất liệu tương đối giống nhau nhưng có xuất xứ và chất lượng khác nhau. Do có sự chênh lệch lớn về giả cả giữa giữa các loại hàng hoá đó nên nếu xảy ra nhầm lẫn trong ghi chép của thủ kho hoặc kế toán ( sai sót do ghi sai số liệu hoặc tên thảm bằng ngoại ngữ viết sai, nhầm). Khi đó, thông tin tư vấn cho khách hàng sẽ sai lệch và công ty có thể đánh mất đi nhiều cơ hội gia tăng lợi nhuận của mình. Phần mềm quản lý kho mà em đề xướng nhằm giúp chgo nhà quản lý có thể đưa ra các quyết định, chính xác hơn khi họ có nhiều thông tin về hàng hoá trong kho của mình. 3.1. Phân tích hệ thống thông tin 3.1.1 Thu thập thông tin Trong khi triển khai bước này, để thu thập thông tin em đã có tiếp xúc với thủ kho của công ty cũng như từng nhân viên làm việc tại đây để có được cái nhìn gần gũi với những vấn đề cần quan tâm. Hình thức thu thập thông tin của em đưa ra là các câu hỏi trực tiếp với những người này nhằm time ra nhu cầu thông tin thực sựcủa người sử dụng, xác định cụ thể những đầu vào và đầu ra của hệ thống. Bên cạnh đó, em cũng sử dụng phương pháp quan sát để thấy rõ các hoạt động thường nhậtcủa họ để có được những đánh giá riêng của bản thân về quá trình nghiệp vụ ở đay. Những nhận xét có được em thường ghi vào một cuốn sổ sau đó tổng hợp ra nhứng thông tin hữu ích. 3.1.2. Sơ đồ thông tin của hệ thống đang hoạt động của công ty TNHH Quốc Minh 3.1.2.1. Quá trình nhập hàng từ các nhà cung cấp. Quốc Minh là công ty có nguồn hàng chủ yếu từ các nhà cung cấp nước ngoài. Quá trình nhập hàng từ các nhà sản xuất được mô tả trong sơ đồ dưới. Thời điểm Kho Ban lãnh đạo Khi yêu cầu nhập hàng của công ty được nhà sản suất thực hiện Danh sách hàng do nhà sản xuất cung cấp Khi hàng về kho Đưa ra thông báo Kết thúc Đối chiếu thấy trùng khớp giữa danh sách của nhà sản xuất và sổ kiểm hàng Phiếu nhập kho Vào sổ vật tư chi tiết Sô vật tư chi tiết Lập phiếu nhập kho Thông báo về sự cố hàng hoá Hình 3.1.Sơ đồ luồng thông tin của nghiệp vụ nhập hàng 3.1.2.2. Quá trình xuất bán cho khách hàng Đối với quá trình xuất bán cho khách hàng, Quốc Minh có hai hình thức bán, một là bán cho khách lẻhai là bán cho các đại lý bán buôn khác, hai hình thức này có cách thanh toán khác nhau. Các nhà quản lý ở công ty này cũng yêu cầu phần mềm quản lý kho phải đảm bảo yêu cầu quản lý được những tổng hợp thu chi với các đại lý nói trên. Thời điểm Cửa hàng Kho hàng Ban lãnh đạo Khi khách hàng có yêu cầu Lập phiếu xuất bán Yêu cầu về hàng hoá Phiếu xuất kho ban đầu Thông tin vào phiếu xuất kho Sổ chi tiết vật tư Sổ theo dõi thu chi các đại lý Phiếu xuất kho hoàn chỉnh Vào sổ Hình 3.2. Sơ đồ luồng thông tin của nghiệp vụ xuất bán Theo yêu cầu của lãnh đạo hoặc định kỳ Lập báo cáo Báo cáo về thu chi đối với các đại lý Báo cáo về hàng hoá 3.1.2.3 Quá trình kiểm kê Mỗi khi có yêu cầu thông tin chính xác về hàng tồn, Quốc Minh cũng thực hiện các hình thức kiểm kê hàng trong kho, mục đích của việc này là điều chỉnh lại các thông tin sai lạc về hàng hoá để có thông tin chuẩn trong việc nhập xuất hàng hoá từ nhà cung cấp, cũng như có thông tin hàng hóa chính xác để tư vấn và cung cấp dịch vụ cho khách hàng, sau khi phần mềm quản lý ra đời, có thể không nhất thiết phải có quá trình vào sổ kiểm kê nữa, mà sẽ chỉ là việc cập nhật và sửa chữa lại một số thông tin sai lạc trong cơ sở dữ liệu. Thời điểm Kho Ban lãnh đạo Khi lãnh đạo yêu cầu kho cần khẳng định thông tin hàng hoá S Đ Đối chiếu với các văn bản xuất nhập khác để điều chỉnh sổ chi tiết vật tư Sổ kiểm kê Thực hiện kiểm kê Vào sổ kiểm kê Đối chiếu thấy trùng khớp giữa sổ kiểm kê và sổ chi tiết vật tư Kết thúc kiểm kê Lập báo cáo Báo cáo Hình 3.3.Sơ đồ luồng thông tin của nghiệp vụ kiểm kê 3.1.3.Sơ đồ chức năng kinh doanh (BFD) của hệ thống quản lý kho hang QUẢN LÝ KHO HÀNG Quản lý người dùng Quản lý danh mục Quản lý xuất nhập Báo cáo Đăng nhập hệ thống Thoát khỏi hệ thống Đổi mật khẩu Nhập mới Hiệu chỉnh Tìm kiếm Nhập mới Hiệu chỉnh Tìm kiếm In danh mục In chứng từ In báo cáo In báo cáo tổng hợp Hình 3.4. Sơ đồ chức năng kinh doanh của hệ thống Giải thích: Hệ thống quản lý vật tư thiết bị gồm 4 chức năng: Quản lý người dùng, quản lý danh mục, quản lý xuất nhập, báo cáo thống kê. 3.1.4 Sơ đồ luồng dữ liệu (DFD) của hệ thống đang hoạt động 3.1.4.1. Sơ đồ luồng dữ liệu Yêu cầu kiểm kê Thông tin hàng hoá Hàng hoá Thông tin nhập hàng Thông tin điều chỉnh Thông tin xuất hàng Phiếu xuất kho Thông tin hàng hoá Yêu cầu và kiến nghị về số lượng và chats lượng hàng hoá Trả lời Phiếu nhập kho 2.0 Xuất kho Thông tin hàng hoá Sổ chi tiết vật tư Báo cáo Yêu cầu Ban lãnh đạo 1.0 Nhập kho Hàng hoá Khách hàng 4.0 Lập báo cáo Nhà cung cấp 3.0 Kiểm kê Ban lãnh đạo Hình 3.5. Sơ đồ luồng dữ liệu của hệ thống 3.1.4.2.Phân rã sơ đồ DFD Qúa trình nhập hàng Sự chênh lệch giữa thông tin của ban cung tiêu và hàng của nhà cung cấp DFD – Quá trình nhập hàng Bộ phận cung tiêu Hàng hoá và thông tin về hàng thực nhập Thông tin nhập hàng Thông tin về số, chất lượng hàng hoá sẽ nhập Hàng hoá Phiếu nhập Sổ chi tiết vật tư 1.2 Nhập hàng vào kho 1.1 Kiểm tra đối chiếu thông tincủa 1.3 Vào sổ Nhà cung cấp Hình 3.6. Sơ đồ luồng DFD quá trình nhập hàng Chi tiết xử lý Xử lý 1.1 : trước khi hàng về ban cung tiêu sẽ có thông báo về số lượng quy cách phẩm chất cảu hàng sắp nhập về. Khi hàng về kho phải kiểm tra xem số, chất lượng hàng có giống thông báo nói trên không. Nếu thông tin của ban cung tiêu và hàng hoá không đồng nhất thì kho phải thông báo với ban cung tiêu. Xử lý 1.2: Khi việc kiểm tra nói trên cho thấy hàng hoá và thông tin hàng hoá thống nhất với nhau thì hàng được nhập vao kho. Xử lý 1.3: Thông tin về số lượng và chất lượng hang xuất được đưa vào sổ chi tiết vật tư để cập nhật kịp thời thông tin hàng tồn kho. Quá trình xuất hàng Thông tin xuất hàng Yêu cầu về số, chất lượng hàng hoá Thông tin về số, chất lượng hàng thực sự đáp ứng Thông tin xuất hàng Phiếu xuất 2.3 Vào sổ 2.1 Kiểm tra lượng hàng tồn tương ứng và chất lượng sản phẩm 2.2 Xuất hàng ra khỏi kho Bộ phận sử dụng Hình 3.7. Sơ đồ DFD- Quá trình xuất hàng hoá Chi tiết xử lý: Giải thích : Xử lý 2.1: Sauk hi hợp đồng mua hàng được ký giữa khách hàng và bộ phận kinh doanh, bộ phận sử dụng sẽ gửi yêu cầu về hàng hoá của khách hàng cả về số lượng và chất lượng cho kho hàng. Tại đây sẽ diễn ra việc kiểm tra xem trong kho có còn đủ số lượng hàng với chất lượng yêu cầu. Xử lý 2.2: Nếu kiểm thấy có thể đáp ứng nhu cầu khách hàng thì hàng được xuất ra khỏi kho. Xử lý 2.3: Thông tin về số lượng và chất lượng hàng xuất được đưa vào sổ chi tiết vật tư để cập nhật kịp thời thông tin hàng tồn trong kho Quá trình kiểm kê hàng hoá Sổ chi tiết vật tư Yêu cầu kiểm kê Thông tin hàng hoá thực tồn Sự chênh lệch thông tin giữa các văn bản và hàng thực tồn Ban giám đốc hoặc cung tiêu 3.3. Điều chỉnh thông tin sổ chi tiết vật tư 3.1 Kiểm tra lượng hàng hoá thực tồn trong kho 3.2 Đối chiếu với các phiếu xuất nhập và sổ chi tiét vật tư Hình 3.8. Sơ đồ DFD- Quá trình kiểm kê hàng hoá Chi tiết các xử lý: Xử lý 3.1: Khi cần khẳng định thông tin về một loại hàng hoá nào đó, ban giám đốc hoặc ban cung tiêu sẽ yêu cầu kho kiểm tra thông tin hàng hoá đó thông qua hình thức kiểm kê. Xử lý 3.2: Những thông tin hàng hoá thực tồn trong kho thu được ở bước trên sẽ được so sánh với thông tin ghi trong sổ chi tiết vật tư cũng như các phiếu nhập xuất có liên quan đến hàng hoá đó. Xử lý 3.3: Thông tin trong sổ chi tiết vật tư sẽ đựoc điều chỉnh sao cho phù hợp với thông tin hàng tồn trong kho và thông tin trong các phiếu nhập xuất. Quá trình lập báo cáo Yêu cầu về thông tin Tiêu thức lập báo cáo DFD- Quá trình lập báo cáo Báo cáo 4.2 Lập báo cáo 4.1 Chọn loại báo cáo Nhà quản lý Hình 3.9. Sơ đồ DFD- Quá trình lập báo cáo Xử lý 4.2: Khi có yêu cầu về thông tin tổng hợp hay chi tiết về hàng hoá, nhà quản lý sẽ yêu cầu bộ phận lạp báo cáo. Dựa trên những yêu cầu đó, bộ phận kho xác định các tiêu thức lập báo cáo. Xử lý 4.2: Báo cáo được lập theo các tiêu chí nói trên và chuyển tới nhà quản lý 3.2.Thiết kế dữ liệu từ các thông tin đầu ra 3.2.1.Xây dựng mô hình cơ sở dữ liệu của hệ thông mới Ta sử dụng phương pháp thiết kế cơ sở dữ liệu thông qua các đầu ra. Trong các nghiệp vụ liên quan đến kho hànghì các đầu ra chủ yếu là: PHIẾU NHẬP VÀ PHIẾU XUẤT. PHIẾU NHẬP Công ty T NHH… Địa chỉ:.. PHIẾU NHẬP KHO Ngàythángnăm Số.. MẪU SỐ: Theo quyết định.. …… Ngàythángnăm c? a bộ tài chính Nhập từ:……………………………………………… Nhập tại kho:………………………………………… Stt Tên nhãn hiệu, quy cách phẩm chất vật tư Mã số Đ ơn vị tính Số lượng Đ ơn giá Thành tiền Theo chøng tõ Thùc nhËp A B C D 1 2 3 4 Céng Céng thµnh tiÒn:….. Thủ trưởng đơn vị Hình 3.8. Phiếu nhập (kí, họ tên) Phụ trách cung tiêu (kí, họ tên) Người nhận hàng (kí, họ tên) Thủ kho (kí, họ tên) Ta có thể có các thông tin như sau: - Số phiếu(mã phiếu) - Ngày nhập kho - Nhập từ (mã nhà cung cấp) - Nhập tại kho(mã kho) - Mã hàng(R) - Tên hàng (R) - Đơn vị tính (R) - Số lượng hàng theo chứng từ (R) - Số lượng hàng thực nhập (R) - Đơn giá (R) - Thành tiền(S) Bảng Phiếu nhập gồm - Số phiếu. - Ngày nhập - Mã kho - Mã nhà cung cấp Bảng Hang nhập gồm: - Số phiếu - Mã hang - Tên hang - Đơn vị tính - Số lượng theo chứng từ. - Số lượng thực - Đơn giá Theo nguyên tắc chuẩn hoá 1NF, một số thuộc tính lặp (có kí hiệu R ) nên phải tách ra làm hai bảng, và xoá thuộc tính thứ sinh(có kí hiệu S) Chuẩn hoá 2F quy định rằng trong một danh sách mỗi thuộc tính phải phụ thuộc hàm vào toàn bộ khoá chứ không phải phụ thuộc một phần khoá, nếu có phụ thuộc thì tách bảng. Lúc đó ta có các bảng sau Phiếu nhập - Số phiếu - Ngày nhập - Mã kho - Mã nhà cung cấp Chi tiết phiếu nhập - Số phiếu - Mã hàng - Số lượng theo chứng từ - Số lượng thực - Đơn giá Danh mục hàng - Mã hàng - Tên hàng - Đơn vị tính Chuẩn hoá 3NF Tiến hành chuẩn hoá 3NF về tính bắc cầu, ta có bảng phiếu nhập ra thành các bảng mới Phiếu nhập - Số phiếu - Ngày nhập - Mã kho - Mã nhà cung cấp Danh mục nhà cung cấp - Mã nhà cung cấp Danh mục kho - Mã kho Chi tiết phiếu nhập - Số phiếu - Mã hang - Số lượng theo chứng từ - Số lượng thực - Đơn giá Danh mục hàng - Mã hàng - Tên hang - Đơn vị tính Nhưng để đảm bảo cho thích hợp với thực tế , ta cần một số điều chỉnh cho đủ thông tin khi ra cứu, nên các bảng sẽ có thông tin như sau: Phiếu nhập - Số phiếu - Ngày nhập - Mã kho - Mã nhà cung cấp Danh mục nhà cung cấp - Mã nhà cung cấp - Tên nhà cung cấp - Địa chỉ - Điện thoại - Mã nước sản xuất(do có cả nhà cung cấp trong và ngoài nước ) Danh mục kho - Mã kho - Tên kho - Địa chỉ - Điện thoại - Thủ kho Chi tiết phiếu nhập - Số phiếu - Mã hàng - Số lượng theo chưúng từ - Số lượng thực - Đơn giá Danh mục hàng - Mã hàng - Tên hang - Đơn vị tính - Mã nước sản xuất -Kích thước - Mã loại hàng - Tồn Phiếu xuất Công tyTNHH …. Địa chỉ:………….. PHIẾU XUẤT KHO Mẫu số:…. Theo quyết định số:… Ngày …tháng…năm.. của bộ tài chính Ngày….tháng…năm………………………...................... Họ tên người nhận hàng:………………………………… Lý do xuất kho: ……………………..Khách hàng……… Xuất tại kho:……………………………………………… Stt Tên, nhãn hiệu, quy cách phẩm chất vật tư Mã số Đơn vị tính Số lượng Đơn giá Thành tiền Theo chứng từ Thực nhập A B C D 1 2 3 4 Cộng Cộng thnàh tiền bằng chữ………………………………………… Phụ trách bộ phận sử dụng (ký, đóng dấu) Phụ trách cung tiêu (ký, đóng dấu) Người nhận hang (ký, đóng dấu) Thủ kho (ký, đóng dấu) Hỡnh 3.10. Phiếu xuất Ta có được một số thôngg tin từ phiếu xuất: - Số phiếu(mã phiếu) - Ngày xuất - Xuất từ kho - Người nhận hàng(mã người nhận) - Lý do xuất - Khách hàng( mã khách hàng ) - Mã hàng (R) - Tên hàng ( R) -Đơn vị tính(R) - Số lượng yêu cầu ( R ) - Số lượng hàng thực nhập ( R) - Đơn giá ( R ) - Thành tiền (S) Theo nguyên tắc chuẩn hoá 1NF, một số thuộc tính lặp (có kí hiệu R) nên phải tách ra làm hai bảng, và xoá thuộc tính thứ sinh (có kí hiệu S) Phiếu xuất - Số phiếu - Ngày xuất - Mã kho - Mã người nhận - Lý do xuất - Mã khách hang Hàng xuất - Số phiếu - Mã hàng - Tên hang - Đơn vị tính - Số lượng yêu cầu - Số lượng thực - Đơn giá Chuẩn hoá 2NF quy định rằng trong một danh sách mỗi thuộc tính phải phụ thuộc hàm vào toàn bộ khoá chứ không phải phụ thuộc một phần khoá, nếu có phụ thuộc thì tách tách bảng. Ta có các bảng sau đây. Phiếu xuất -Số phiếu - Ngày xuất -Mã kho - Mã người nhận - Lý do xuất - Mã khách hàng Chi tiết phiếu xuất - Số phiếu - Mã hàng - Số lượng yêu cầu - Số lượng thực - Đơn giá Danh mục hàng -Mã hàng - Tên hàng - Đơn vị tính Chuẩn hoá 3 NF về tính chất bắc cầu, ta có các bảng: Phiếu xuất - Số phiếu - Ngày xuất - Mã kho - Mã người nhận - Lý do xuất - Mã khách hàng Danh mục kho - Mã kho Danh mục người nhận - Mã người nhận Danh mục khách hàng - Mã khách hàng Chi tiết phiếu xuất - Số phiếu - Số lượng yêu cầu - Số lượng thực - Đơn giá Danh mục hàng - Mã hàng - Tên hàng - Đơn vị tính Với bảng Danh mục kho, Danh mục hàng ta sẽ xử lý như trên, còn Danh mục người nhận, và Danh mục khách hàng sẽ có các thông tin sau Danh mục người nhận - Mã người nhận - Tên người nhận - Điện thoại - Số chứng minh nhân dân Danh mục khách hàng - Mã khách hàng - Tên khách hàng - Địa chỉ - Điện thoại - Có phải đại lý không (vì có hai loại khách hàng, mua lẻ và đại lý) Danh mục nhà cung cấp Ma nha cung cấp Tên nhà cung cấp Địa chỉ XUẤT PHIẾU NHẬP Mã phiếu nhập Ngày nh?p Mó nhà cung c?p Mó kho Chi tiết phiéu nhập Mã phiếu nhập Mã hang Số lượng theo chứng từ Số lượng thực Đ ơn giá Danh mục kho Mã kho Tên kho Địâ chỉ Số điện thoại Thủ kho Danh mục khách hàng Mã khách hang Tên khách hang Địa chỉ Số điện thoại Mã nhóm khách hang PHIẾU XUẤT Mã phiếu xuất Ngày xuất Mã kho Lý do xuất Mã người nhận Mã khách hang Danh mục nhóm khách hàng Mã nhóm khách hang Tên nhóm Chi tiết phiếu xuất Mã phiếu xuất Mã hang Số lượng yêu cầu Số lượng thực Đ ơn giá Danh mục người nhận Mã người nhận Tên người nhận Số điện thoại Số chứng minh thư Chi tiết vật tư Mã hang Mã phiếu Ngày Diễn giải Nhập Xuất Tồn đầu kì Danh mục hàng Mã hàng Tên hang Mã nước sản xuất KÍCH THƯỚC Mã loại hàng Đ ơn vị tính Tồn Mã kho Danh mục nước sản xuất Mã nước sản xuất Tên nước sản xuất Danh mục loại hàng Mã loại hàng Tên loại hàng Hình 3.11. Bảng sơ đồ quan hệ thực thể 3.3. Thiết kế chương trình 3.3.1 Thiết kế module chương trình Module hệ thống của chương trình: Hệ thống Quản lý kho hàng Danh mục Quản lý Báo cáo Trợ giúp Module hệ thống: Hệ thống Đăng xuất Thoát Quản lý người dùng Module danh mục: Danh mục Danh mục hàng hóa Danh mục nhà cung cấp Khách hàng Danh mục kho Module quản lý : Quản lý Quản lý phiếu nhập Quản lý phiếu xuất Quản lý lượng tồn hiện tại Module báo cáo : Báo cáo Báo cáo nhập xuất hàng hóa Báo cáo nhập xuất tồn Module trợ giúp : Trợ giúp Giới thiệu Hướng dẫn 3.3.2. Một số thuật toán sử dụng trong chương trình Các kí hiệu sử dụng: Thuật toán đăng nhập vào chương trình Bắt đầu Mở chương trình Nhập tên, mật khẩu người dùng Nhập lại Thông báo nhập sai tên, mật khẩu. Tên, mật khẩu hợp lệ? Vào chương trình quản lý kho hàng Kết thúc S Đ S Đ Thuật toán thêm mới nhà cung cấp : Thuật toán xóa một bản ghi: Bắt đầu Vào chức năng xóa Chọn bản ghi cần xóa Có xóa không? Xóa Kết thúc K C Thuật toán báo cáo thống kê: 3.3.3.Một số form của chương trình Form đăng nhập của chương trình Form giao diện chính Form danh mục nhà cung cấp Form danh mục hang hóa Form danh mục khách hàng Form phiếu nhập hang hóa Form phiếu xuất hang hóa KẾT LUẬN Thế giới đang bước vào kỷ nguyên nhảy vọt của khoa học công nghệ. Không ai có thể phủ nhận được những thành tựu và sự đóng góp to lớn của công nghệ thông tin vào trong cuộc sống con người. Nhờ có tin học mà con người sẽ dễ dàng hơn trên con đường đi đến những tầm cao mới. Việc ứng dụng công nghệ thông tin vào công tác quản lý đang được các nhà kinh tế quan tâm ở mức cao độ, đó cũng là nhu cầu cấp bách của nền kinh tế Việt Nam để vươn ra tầm thế giới. Thông qua đề tài “Xây dựng phần mềm quản lý kho cho công ty TNHH Quốc MInh” em xin đóng góp một phần công sức nhỏ vào sự phát triển của công ty TNHH Quốc Minh nói riêng và công cuộc phát triển kinh tế của đất nước nói chung. Hi vọng hệ thống này có thể giải quyết được những vấn đề tồn đọng trong công tác quản lý kho của công ty, giảm bớt được những chi phí không đáng có và khai thác tối đa nguồn nhân lực. Áp dụng Hệ thống quản lý kho, công ty TNHH Quốc Minhcó thể bao quát tốt hơn, nhanh hơn và dễ hơn về tình hình hàng hóa trong kho, đồng thời cũng nắm bắt được kĩ hơn về quá trình xuất – nhập hàng hóa của công ty. Hệ thống có thể giúp giảm bớt thời gian đầu tư trong công việc quản lý kho, giảm bớt những sai sót có thể xảy ra trong quá trình quản lý. Do thời gian có hạn cộng với những thiếu sót về kinh nghiệm, nên em không thể bao quát được hết những tình huống xảy ra trong công tác quản lý kho của công ty TNHH Quốc Minh. Đề tài và chương trình kèm theo này không thể tránh khỏi những thiếm khuyết và sai sót. Em rất mong có được sự góp ý của thầy. Em xin gửi lời cảm ơn đến cán bộ quản lý kho của công ty TNHH Quốc Minh đã nhiệt tình giúp đỡ trong quá trình tìm hiểu và xây dựng chương trình. Một lần nữa, em xin chân thành cảm ơn sự hướng dẫn và giúp đỡ tận tình của cô giáo Trần Thị Song Minh, người đã cung cấp cho em kiến thức, nhiều bài học bổ ích và kinh nghiệm trong công tác để hoàn thành đề tài này, tạo đà vững chắc để có được những thành công trong tương lai. Hà Nội, 12/2007 Sinh viên Đỗ Thị Vân Danh mục sách tham khảo 1. Giáo trình Cấu trúc dữ liệu và giải thuật PGS. TS Hàn Viết Thuận NXB Thống kê, Hà Nội, 2006 2. Giáo trình Hệ thống thông tin quản lý TS. Trương Văn Tú – TS. Trần Thị Song Minh NXB Thông kê, Hà Nội, 2000 3. Những bài thực hành CSDL Visual Basic căn bản KS Đinh Xuân Lâm NXB Thống kê, Nà Nội, 2006 4. Tài liệu nội bộ và công khai của Tổng Công Ty Sông Đà 5. Visual Basic 6.0 Help File 6. Crystal Report 8.5 Help File PHỤ LỤC Code một số Form chính Code form logon Option Explicit Dim m_DB As DAO.Database Dim m_wrkJet As DAO.Workspace Dim m_RS As DAO.Recordset Dim m_SortAsc As Boolean Private Sub InitDatabase() Set m_wrkJet = CreateWorkspace("", "admin", "", dbUseJet) Set m_DB = m_wrkJet.OpenDatabase(App.Path & "\xuat_nhap.mdb") Set m_RS = m_DB.OpenRecordset("PW", dbOpenDynaset) End Sub Private Sub cmdfunc_Click(Index As Integer) Select Case Index Case 0 If m_RS.Fields(0).Value txtFunc(0) Then MsgBox "User name ?", vbInformation, "Thong bao" txtFunc(0).SetFocus Exit Sub End If If m_RS.Fields(1).Value txtFunc(1) Then MsgBox "Password ?", vbInformation, "Thong bao" txtFunc(1).SetFocus Exit Sub End If If m_RS.Fields(0).Value = txtFunc(0) And m_RS.Fields(1).Value = txtFunc(1) Then Me.Hide frmMain.Show 'Unload Me End If Case 1 Unload Me End Select End Sub Private Sub Form_Load() Dim SQL As String Me.Move (Screen.Width - Me.ScaleWidth) / 2, (Screen.Height - Me.ScaleHeight) / 2 InitDatabase txtFunc(0).Text = "" txtFunc(1).Text = "" SQL = "Select * from PW" Set m_RS = m_DB.OpenRecordset(SQL, dbOpenDynaset) End Sub Private Sub Form_Unload(Cancel As Integer) Set m_RS = Nothing Set m_DB = Nothing Set m_wrkJet = Nothing End Sub Code form thay đổi password Dim m_DB As DAO.Database Dim m_wrkJet As DAO.Workspace Dim m_RS As DAO.Recordset Dim SQL As String Private Sub InitDatabase() Set m_wrkJet = CreateWorkspace("", "admin", "", dbUseJet) Set m_DB = m_wrkJet.OpenDatabase(App.Path & "\xuat_nhap.mdb") Set m_RS = m_DB.OpenRecordset("PW", dbOpenDynaset) End Sub Private Sub Form_Load() txtFunc(3).Text = frmLogOn.txtFunc(0) Me.Move (Screen.Width - Me.ScaleWidth) / 2, (Screen.Height - Me.ScaleHeight) / 2 InitDatabase SQL = "Select * from PW" Set m_RS = m_DB.OpenRecordset(SQL, dbOpenDynaset) End Sub Private Sub cmdfunc_Click(Index As Integer) Dim mPass As String, mUser As String InitDatabase Select Case Index Case 0 If Nz(txtFunc(3).Text, "") = "" Then MsgBox "User name ?", vbInformation, "Thong bao" txtFunc(3).SetFocus Exit Sub End If If Nz(txtFunc(0).Text, "") = "" Then MsgBox "Password ?", vbInformation, "Thong bao" txtFunc(0).SetFocus Exit Sub End If If StrComp(txtFunc(1).Text, txtFunc(2).Text, vbBinaryCompare) 0 Then MsgBox "Xem lai password ?", vbInformation, "Thong bao" txtFunc(2).SetFocus Exit Sub End If SQL = "Select * From PW Where name='" & txtFunc(0) & "'" Set m_RS = m_DB.OpenRecordset(SQL, dbOpenDynaset) mPass = Nz(m_RS.Fields(0), "") If Nz(mPass, "") "" Then m_RS.Edit m_RS.Fields(1) = txtFunc(1) m_RS.Update MsgBox "Change password successful", vbInformation, "Th«ng b¸o" Unload Me End If Case 1 Unload Me End Select Sub Code form nhà cung cấp Option Explicit Dim m_DB As DAO.Database Dim m_wrkJet As DAO.Workspace Dim m_RS As DAO.Recordset Dim SQL As String Dim mAdd As Boolean Private Sub InitDatabase() Set m_wrkJet = CreateWorkspace("", "admin", "", dbUseJet) Set m_DB = m_wrkJet.OpenDatabase(App.Path & "\xuat_nhap.mdb") Set m_RS = m_DB.OpenRecordset("DAILY", dbOpenDynaset) End Sub Private Sub cmdfunc_Click(Index As Integer) Dim li As ListItem On Error GoTo Loi Select Case Index Case 0 'add new Cleartext subDong mAdd = True frmPict.Enabled = True txtMakh.SetFocus Case 1 'close Unload Me Case 2 'edit If Nz(txtMakh.Text, "") "" Then subDong mAdd = False frmPict.Enabled = True txtMakh.SetFocus End If Case 3 'delete Set li = lstKhachhang.SelectedItem If MsgBox("Xoa ma nha cung cap " & li.Text, vbQuestion + vbYesNo, "Thong bao") = vbYes Then SQL = "Select * from DAILY where f_makh = '" & li.Text & "'" Set m_RS = m_DB.OpenRecordset(SQL, dbOpenDynaset) If m_RS.RecordCount > 0 Then m_RS.Delete lstKhachhang.ListItems.Remove li.Index End If If lstKhachhang.ListItems.Count = 0 Then cmdFunc(3).Enabled = False Cleartext End If Case 4 'update If Nz(txtMakh.Text, "") = "" Then MsgBox "Ma nha cung cap ?", vbInformation, "Thong bao" txtMakh.SetFocus Exit Sub End If If mAdd = True Then m_RS.AddNew Else m_RS.Edit End If m_RS!f_Makh = txtMakh.Text m_RS!f_Tenkh = txtTenkh.Text m_RS!f_Nguoigiaodich = txtGiaodich.Text m_RS!f_Dienthoai = txtDienthoai.Text m_RS.Update InitListview subMo Cleartext frmPict.Enabled = False Case 5 'Cancel Cleartext subMo frmPict.Enabled = False End Select Loi: If Err = 3022 Then MsgBox "Xem lai ma nha cung cap ", vbInformation, "Thong bao" txtMakh.SetFocus Exit Sub End If If Err = 3163 Then MsgBox "Chuoi qua dai", vbInformation, "Thong bao" Exit Sub End If End Sub Private Sub Form_Load() CenterMDI frmMain, Me InitDatabase InitListview SQL = "Select * from DAILY" Set m_RS = m_DB.OpenRecordset(SQL, dbOpenDynaset) frmPict.Enabled = False subMo mAdd = True End Sub Private Sub InitListview() Dim lvw As ListView Dim li As ListItem lstKhachhang.ColumnHeaders.Clear Set lvw = lstKhachhang AddColumn lvw, "Ma Nha CC", 1650 AddColumn lvw, "Ten Nha CC", 3500 AddColumn lvw, "Nguoi giao dich", 3500 AddColumn lvw, "Dien thoai", 3000 lvw.ListItems.Clear Set m_RS = m_DB.OpenRecordset("DAILY", dbOpenDynaset) If Not (m_RS.BOF And m_RS.EOF) Then m_RS.MoveFirst While Not m_RS.EOF Set li = lvw.ListItems.Add li.Text = m_RS.Fields(0) li.SubItems(1) = Nz(m_RS.Fields(1), "") li.SubItems(2) = Nz(m_RS.Fields(2), "") li.SubItems(3) = Nz(m_RS.Fields(3), "") m_RS.MoveNext Wend End Sub Sub Cleartext() txtMakh.Text = "" txtTenkh.Text = "" txtGiaodich.Text = "" txtDienthoai.Text = "" End Sub Private Sub Form_Unload(Cancel As Integer) Set m_RS = Nothing Set m_DB = Nothing End Sub Private Sub lstKhachhang_Click() Gantxt End Sub Private Sub lstKhachhang_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) lstKhachhang.SortKey = ColumnHeader.Index - 1 If (lstKhachhang.SortOrder = lvwAscending) Then lstKhachhang.SortOrder = lvwDescending Else lstKhachhang.SortOrder = lvwAscending End If End Sub Sub Gantxt() Cleartext SQL = "Select * from DAILY Where f_makh='" & lstKhachhang.SelectedItem.Text & "'" Set m_RS = m_DB.OpenRecordset(SQL, dbOpenDynaset) txtMakh.Text = Nz(m_RS.Fields(0), "") txtTenkh.Text = Nz(m_RS.Fields(1), "") txtGiaodich.Text = Nz(m_RS.Fields(2), "") txtDienthoai.Text = Nz(m_RS.Fields(3), "") End Sub Sub subDong() cmdFunc(0).Enabled = False cmdFunc(1).Enabled = False cmdFunc(2).Enabled = False cmdFunc(3).Enabled = False crpFrame.Enabled = False cmdFunc(4).Enabled = True cmdFunc(5).Enabled = True End Sub Sub subMo() cmdFunc(0).Enabled = True cmdFunc(1).Enabled = True cmdFunc(2).Enabled = True cmdFunc(3).Enabled = True crpFrame.Enabled = True cmdFunc(4).Enabled = False cmdFunc(5).Enabled = False End Sub Code form phiếu nhập –xuất – tồn Option Explicit Dim m_Report As New crpReportNXT Dim m_Connection As ADODB.Connection Dim adoRS As ADODB.Recordset Dim adoParam As ADODB.Recordset Dim m_wrkJet As DAO.Workspace Dim d_Hanghoa As DAO.Database Dim m_Hanghoa As DAO.Recordset Private Sub cmdLaydulieu_Click() If Trim(Tu.Text) = "/ /" Then MsgBox "Tu ngay ?", vbInformation, "Thong bao" Tu.SetFocus Exit Sub End If If Trim(Den.Text) = "/ /" Then MsgBox "Den ngay ?", vbInformation, "Thong bao" Den.SetFocus Exit Sub End If Me.MousePointer = 11 cmdLaydulieu.Enabled = False OpenReport Me.MousePointer = 0 cmdLaydulieu.Enabled = True Set m_Report = Nothing Set m_Hanghoa = Nothing Set adoRS = Nothing Set d_Hanghoa = Nothing Set m_Connection = Nothing End Sub Private Sub Form_Load() Dim SQLhanghoa As String CenterMDI frmMain, Me Me.WindowState = 2 Tu.Text = Format(DateSerial(Year(Date), Month(Date), 1), "yyyy/mm/dd") Den.Text = Format(DateSerial(IIf(Month(Date) = 12, Year(Date) + 1, Year(Date)), IIf(Month(Date) = 12, 1, Month(Date) + 1), 1) - 1, "yyyy/mm/dd") Set m_wrkJet = CreateWorkspace("", "admin", "", dbUseJet) Set d_Hanghoa = m_wrkJet.OpenDatabase(App.Path & "\xuat_nhap.mdb") SQLhanghoa = "Select * from Hanghoa Order by Malinhkien" Set m_Hanghoa = d_Hanghoa.OpenRecordset(SQLhanghoa, dbOpenDynaset) cboMalk.Text = "" If Not (m_Hanghoa.BOF And m_Hanghoa.EOF) Then m_Hanghoa.MoveFirst While Not m_Hanghoa.EOF cboMalk.AddItem m_Hanghoa.Fields(1) m_Hanghoa.MoveNext Wend End Sub Private Sub Tu_Validate(Cancel As Boolean) If Trim(Tu.Text) = "/ /" Then Exit Sub If IsDate(Tu.Text) = False Then MsgBox "Ngay khong hop le", vbInformation, "Th«ng b¸o" Cancel = True Tu.SetFocus Exit Sub End If Tu.Text = Format(Tu.Text, "yyyy/mm/dd") End Sub Private Sub den_Validate(Cancel As Boolean) If Trim(Den.Text) = "/ /" Then Exit Sub If IsDate(Den.Text) = False Then MsgBox "Ngay khong hop le", vbInformation, "Th«ng b¸o" Cancel = True Den.SetFocus Exit Sub End If Den.Text = Format(Den.Text, "yyyy/mm/dd") End Sub Private Sub Form_Resize() CRViewer1.Move 75, 75 + 500 If Me.Width < 1000 Or Me.Height < 1000 Then Exit Sub CRViewer1.Width = Me.ScaleWidth - 150 CRViewer1.Height = Me.ScaleHeight - 650 CRViewer1.Zoom 100 End Sub Private Sub OpenReport() Dim SQL As String Dim strConnect As String Set m_Connection = New ADODB.Connection Set adoRS = New ADODB.Recordset Set adoParam = New ADODB.Recordset m_Connection.CursorLocation = adUseClient m_Connection.IsolationLevel = adXactBrowse 'm_Connection.Mode = adModeShareExclusive strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\Xuat_nhap.mdb" m_Connection.Open strConnect adoRS.Open "Select * From Innhapxuatton Order by Malinhkien", m_Connection, adOpenDynamic m_Report.Database.SetDataSource adoRS m_Report.ParameterFields(1).SetCurrentValue "Töø ngaøy : " + Format(Tu.Text, "yyyy/mm/dd") + _ " -- Ñeán ngaøy : " + Format(Den.Text, "yyyy/mm/dd") CRViewer1.ReportSource = m_Report m_Report.PaperSize = crDefaultPaperSize RefreshViewer CRViewer1.ViewReport End Sub Private Sub RefreshViewer() Dim C As Integer Dim SQL As String, SQLdelete As String, SQLinsert As String 'If CRViewer1.IsBusy Then Exit Sub Screen.MousePointer = vbHourglass m_Report.IsNoData = False SQLdelete = "Delete from Innhapxuatton" '"SELECT IIf(IsNull([BB.LOAI]),'OTHERS',[BB.LOAI]) AS LOAI01, " SQLinsert = "INSERT INTO Innhapxuatton (Loai, Malinhkien, Tensanpham, SLTD, SLN, SLNTra, SLXVMEP, SLXVTBM, SLPP, SLTC )" & _ "SELECT [BB.LOAI] AS LOAI01, " & _ "AA.MALINHKIEN, BB.TENSANPHAM, SUM(SLTD) AS TD, SUM(SLN) AS SLN0, SUM(SLNTRA) AS SLNTRA0, SUM(SLXVMEP) AS SLXVMEP0, SUM(SLXVTBM) AS SLXVTBM0, SUM(SLPP) AS SLPP0, (SUM(SLTD) + SUM(SLN) + SUM(SLNTRA)) - (SUM(SLXVMEP) + SUM(SLXVTBM) + SUM(SLPP)) AS SLTC " & _ "FROM ( " & _ "SELECT MALINHKIEN, SUM([SLDK]) AS SLTD, 0 AS SLN, 0 AS SLNTRA, 0 AS SLXVMEP, 0 AS SLXVTBM, 0 AS SLPP " & _ "FROM ( SELECT MALINHKIEN, SOLUONG AS SLDK FROM NHAPCT WHERE NGAYNHAP < #" & Format(Tu.Text, "yyyy/mm/dd") & "# " & _ "Union All SELECT MALINHKIEN, SOLUONG AS SLDK FROM NHAPTRA WHERE NGAYNHAP < #" & Format(Tu.Text, "yyyy/mm/dd") & "# " & _ "Union All SELECT MALINHKIEN, (-1) * SOLUONG AS SLDK FROM NHAPPP WHERE NGAYNHAP < #" & Format(Tu.Text, "yyyy/mm/dd") & "# " & _ "Union All SELECT MALINHKIEN, (-1) * SOLUONG AS SLDK FROM XUATCT WHERE NGAYXUAT < #" & Format(Tu.Text, "yyyy/mm/dd") & "# " & _ " ) AS TEMP01 GROUP BY MALINHKIEN " & _ "Union All SELECT MALINHKIEN, 0 AS SLTD, SOLUONG AS SLN, 0 AS SLNTRA, 0 AS SLXVMEP, 0 AS SLXVTBM, 0 AS SLPP FROM NHAPCT WHERE NGAYNHAP BETWEEN # " & Format(Tu.Text, "yyyy/mm/dd") & " # AND # " & Format(Den.Text, "yyyy/mm/dd") & "# " & _ "Union All SELECT MALINHKIEN, 0 AS SLTD, 0 AS SLN, SOLUONG AS SLNTRA, 0 AS SLXVMEP, 0 AS SLXVTBM, 0 AS SLPP FROM NHAPTRA WHERE NGAYNHAP BETWEEN # " & Format(Tu.Text, "yyyy/mm/dd") & " # AND # " & Format(Den.Text, "yyyy/mm/dd") & "# " & _ "Union All SELECT MALINHKIEN, 0 AS SLTD, 0 AS SLN, 0 AS SLNTRA, SOLUONG AS SLXVMEP, 0 AS SLXVTBM, 0 AS SLPP " & _ "FROM XUATCT WHERE NGAYXUAT BETWEEN # " & Format(Tu.Text, "yyyy/mm/dd") & " # AND # " & Format(Den.Text, "yyyy/mm/dd") & " # " & _ "Union All SELECT MALINHKIEN, 0 AS SLTD, 0 AS SLN, 0 AS SLNTRA, 0 AS SLXVMEP, 0 AS SLXVTBM, SOLUONG AS SLPP From NHAPPP WHERE NGAYNHAP BETWEEN # " & Format(Tu.Text, "yyyy/mm/dd") & " # AND # " & Format(Den.Text, "yyyy/mm/dd") & " # " & _ " ) AS AA LEFT JOIN HANGHOA AS BB ON AA.MALINHKIEN = BB.MALINHKIEN " & _ "WHERE BB.LOAI '' " & _ "GROUP BY BB.LOAI, AA.MALINHKIEN, BB.TENSANPHAM " & _ "HAVING SUM(SLTD) + SUM(SLN) + SUM(SLNTRA) + SUM(SLXVMEP) + SUM(SLXVTBM) + SUM(SLPP) 0 " If Nz(cboMalk.Text, "") = "" Then SQL = "Select * FROM Innhapxuatton Order by malinhkien" Else SQL = "Select * FROM Innhapxuatton " & _ "WHERE MALINHKIEN='" & Nz(cboMalk.Text, "") & "' Order by malinhkien" End If adoRS.Close adoRS.Open SQLdelete, m_Connection, adOpenDynamic adoRS.Open SQLinsert, m_Connection, adOpenDynamic adoRS.Open SQL, m_Connection, adOpenDynamic, adLockBatchOptimistic m_Report.Database.SetDataSource adoRS m_Report.ParameterFields(1).SetCurrentValue "Töø ngaøy : " + Format(Tu.Text, "yyyy/mm/dd") + _ " -- Ñeán ngaøy : " + Format(Den.Text, "yyyy/mm/dd") If CRViewer1.Visible Then m_Report.ReadRecords 'CRViewer1.Refresh End If Screen.MousePointer = vbDefault End Sub Private Sub Form_Unload(Cancel As Integer) Set m_Hanghoa = Nothing Set adoRS = Nothing Set d_Hanghoa = Nothing Set m_Connection = Nothing Set m_wrkJet = Nothing End Sub NHẬN XÉT CỦA ĐƠN VỊ THỰC TẬP MỤC LỤC DANH MỤC HÌNH VẼ Hình 2.1: Mô hình thác nước 29 Hình 2.2. Phân bố thời gian trong quá trình phát triển phần mềm 34 Hình 3.1.Sơ đồ luồng thông tin của nghiệp vụ nhập hàng 37 Hình 3.3.Sơ đồ luồng thông tin của nghiệp vụ kiểm kê 39 Hình 3.4. Sơ đồ chức năng kinh doanh của hệ thống 40 Hình 3.5. Sơ đồ luồng dữ liệu của hệ thống 41 Hình 3.6. Sơ đồ luồng DFD quá trình nhập hàng 42 Hình 3.7. Sơ đồ DFD- Quá trình xuất hàng hoá 43 Hình 3.8. Sơ đồ DFD- Quá trình kiểm kê hàng hoá 44 Hình 3.9. Sơ đồ DFD- Quá trình lập báo cáo 45 Hình 3.10. Phiếu xuất 50 Hình 3.11. Bảng sơ đồ quan hệ thực thể 54 Danh môc kho M· kho Tªn kho §Þ© chØ Sè ®iÖn tho¹i Thñ kho

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

  • doc12870.doc
Tài liệu liên quan