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ý.
96 trang |
Chia sẻ: aloso | Lượt xem: 1787 | Lượt tải: 0
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:
- 12870.doc