Đề tài Xây dựng phần mềm quản lý bán hàng tại công ty TNHH Xuân Cầu

Trong công tác quản lý và điều hành công ty. Năm 2000, công ty đã triển khai kế hoạch phát triển các ứng dụng tin học vào trong quản lý. Doanh nghiệp sử dụng các phần mềm để quản lý như MS Words, MS Excel đây là những phần mềm thông dụng mà hầu hết các doanh nghiệp hiện nay đang áp dụng. Trong năm 2000, công ty TNHH Xuân Cầu cũng xây dựng website riêng của công ty (www.xuancau.com.vn) nhằm quảng bá hình ảnh công ty với khách hàng, và giới thiệu các sản phẩm của công ty. Các phần mềm nói trên mặc mặc dù tiện ích, phổ biến và dễ áp dụng nhưng nhân viên cũng gặp phải nhiều khó khăn riêng khi sử dụng như việc đưa ra các báo cáo, tìm kiếm thông tin

doc109 trang | Chia sẻ: Dung Lona | Lượt xem: 1214 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng phần mềm quản lý bán hàng tại công ty TNHH Xuân Cầu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
. Liệt kê toàn bộ các thông tin đầu ra. Nội dung, khối lượng, tần suất, nơi nhận của chúng. Bước 2. Xác định các tệp cần thiết cung cấp dữ liệu cho việc tạo ra từng đầu ra. Liệt kê các phần tử thông tin đầu ra: Trên mỗi thông tin đầu ra bao gồm các phần tử thông tin. Ví dụ trong một hóa đơn bán hàng của một công ty bán lẻ, phần tử thông tin đầu ra bao gồm: Số hóa đơn, tên hàng, đơn vị tínhvà được gọi là các thuộc tính. Phân tích viên liệt kê toàn bộ các thuộc tính thành một danh sách. Đánh giấu các thuộc tính có thể nhận nhiều giá trị dữ liệu đây được gọi là thuộc tính lặp. Ví dụ như thuộc tính mã hàng trên hóa đơn bán hàng có thể nhận nhiều giá trị khác nhau. Đánh giấu các thuộc tính thứ sinh là những thuộc tính được tính toán hoặc suy ra từ các thuộc tính khác. Ví dụ: Thành tiền = đơn giá * số lượng, như vậy thuộc tính thành tiền là thuộc tính thứ sinh. Gạch chân các thuộc tính khóa cho thông tin đầu ra. Ví dụ số hóa đơn là thuộc tính khóa cho danh sách các thuộc tính đầu ra của “Hóa đơn bán hàng”. Loại bỏ các thuộc tính thứ sinh khỏi danh sách, chỉ để loại các thuộc tính cơ sở. Xem xét và loại bỏ các thuộc tính không có ý nghĩa. Thực hiện việc chuẩn hóa mức 1(1.NF) Chuẩn hóa mức 1 (1.NF) quy định rằng trong mỗi danh sách không được phép chứa những thuộc tính lặp. Nếu có các thuộc tính lặp thì phải tách thuộc tính lặp ra thành các danh sách con, có một ý nghĩa dưới góc độ quản lý. Gắn thêm cho nó một tên, tìm thêm cho nó một thuộc tính định danh riêng và thêm thuộc tính định danh của danh sách gốc. Thực hiện chuẩn hóa mức 2 (2. NF) Chuẩn hóa mức 2(2.NF) 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ộ khóa chứ không phụ thuộc vào một phần của khóa. Nếu có sự phụ thuộc như vậy thì phải tách những thuộc tính phụ thuộc hàm vào bộ phận của khóa thành một danh sách con mới. Lấy bộ phận khóa đó làm khóa cho danh sách mới. Đặt cho danh sách này cái tên riêng sao cho phù hợp với nội dung các thuộc tính trong danh sách. Thực hiện chuẩn hóa mức 3 (3.NF) Chuẩn hóa mức 3 (3.NF) quy định rằng, trong một danh sách không được phép có sự phụ thuộc bắc cầu giữa các thuộc tính. Nếu thuộc tính Z phụ thuộc hàm vào thuộc tính Y và thuộc tính Y phụ thuộc hàm vào thuộc tính X thì phải tách chúng vào hai danh sách chứa quan hệ Z, Y và danh sách chứa quan hệ Y và X. Xác định khóa và tên cho danh sách mới. Bước 3: Mô tả các tệp: Mỗi danh sách xác định sau bước chuẩn hóa mức 3 (3NF) sẽ là một tệp cơ sở dữ liệu. Biểu diễn các tệp theo ngôn ngữ của cơ sở dữ liệu về tệp. Tên tệp viết chữ in hoa, nằm phía trên, các thuộc tính nằm trong các ô, thuộc tính khóa được gạch chân. Từ mỗi đầu ra theo cách thực hiện của bước hai sẽ tạo ra rất nhiều danh sách, mỗi danh sách là liên quan đến một đối tượng quản lý, có sự tồn tại riêng tương đối độc lập. Những danh sách nào cùng mô tả về một thực thể thì phải tích hợp lại, nghĩa là tạo thành một danh sách chung, bằng cách tập hợp các thuộc tính chung và riêng của danh sách đó. Bước 4: Xác định logic giữa các tệp và thiết lập sơ đồ cấu trúc dữ liệu Xác định mối liên hệ giữa các tệp, biểu diễn chúng bằng mũi tên hai chiều, và mũi tên một chiều nếu là quan hệ một – nhiều. Biểu diễn các tệp và vẽ sơ đồ liên kết giữa các tệp. 1.4.2.3 Thiết kế giải thuật. Giải thuật là một dãy các quy tắc chặt chẽ xác định một trình tự các thao tác trên một đối tượng cụ thể để giải quyết một vấn đề hoặc để hoàn thành một mục đích cuối cùng nào đó. Thiết kế giải thuật được thực hiện bởi ba cấu trúc điều khiển sau đây: Cấu trúc tuần tự: Các bước thực hiện theo trình tự một cách chính xác, mỗi bước được thực hiện đúng một lần. Cấu trúc chọn lọc: Một hoặc nhiều thao tác được chọn và thực hiện. Cấu trúc chu trình: Một hoặc nhiều bước được thực hiện lặp lại. Phương pháp thiết kế giải thuật: Khái niệm module hóa: Mỗi module có thể coi như một đơn thể chương trình độc lập có thể lắp ghép với nhau. Module hóa là phân chia bài toán lớn thành các bài toán nhỏ hơn, ngày càng cụ thể hơn và chi tiết hơn theo sơ đồ cấu trúc hình cây sau: M M1 M2 M11 M121 M122 M12 M13 M21 M22 Hình 2.4 Ví dụ về sơ đồ cấu trúc hình cây. Nếu coi bài toán chính là module bậc 1 thì module này lại được phân chia thành các module bậc 2, bậc 3theo cấu trúc hình cây. Mỗi module sẽ giải quyết một bài toán nhỏ riêng rẽ, độc lập với các module khác. Phương pháp thiết kế từ trên xuống Đây là một phương pháp thiết kế giải thuật dựa trên tư tưởng module hoá. Nội dung của phương pháp này như sau: Trước hết người ta xác định các vấn đề chủ yếu nhất mà việc giải quyết bài toán yêu cầu, bao quát được toàn bộ bài toán. Sau đó phân chia nhiệm vụ cần giải quyết thành các nhiệm vụ cụ thể hơn, tức là chuyển dần từ module chính đến các module con từ trên xuống dưới. Ví dụ về thiết kế cho phần mềm quản lý bán hàng: Phác thảo 1: Phần mềm quản lý bán hàng Hệ thống Báo cáo Xử lý hóa đơn Quản lý danh mục Phác thảo thứ 2: Hóa đơn thanh toán Danh mục hàng hóa Thoát Báo cáo hàng tồn Hóa đơn nhập hàng Danh mục khách hàng Đăng nhập lại Báo cáo tổng hợp doanh thu Hóa đơn bán hàng Danh mục nhân viên Quản lý người dùng Hệ thống Quản lý danh mục Báo cáo Xử lý hóa đơn Phần mềm quản lý bán hàng Hình 2.5 Ví dụ về phương pháp thiết kế từ trên xuống Phương pháp thiết kế từ dưới lên Phương pháp này áp dụng cho những đơn vị mà trong tổ chức trước đó đã ứng dụng tin học ở một số bộ phận . Tư tưởng của phương pháp này là: Trước hết người ta tiến hành giải quyết các vấn đề cụ thể, sau đó trên cơ sở đánh giá mức độ tương tự về chức năng của các vấn đề này trong việc giải quyết bài toán, người ta gộp chúng lại thành từng nhóm cùng chức năng từ dưới lên trên cho đến module chính. Tiếp đó sẽ thiết kế thêm một số chương trình làm phong phú hơn, đầy đủ hơn chức năng của các phân hệ và cuối cùng là thiết kế một chương trình làm nhiệm vụ tập hợp các module thành một hệ chương trình thống nhất, hoàn chỉnh. Để minh hoạ cho tư tưởng thiết kế này ta xem xét ví dụ sau đây: Giả sử trong một doanh nghiệp, công việc ứng dụng tin học trong quản lý đã được triển khai ở các bộ phận khác nhau và trong từng thời điểm khác nhau. Kết quả là người ta đã thiết kế và đưa vào sử dụng một số chương trình quản lý trong các phòng ban (phòng tài vụ, phòng cung ứng vật tư, phòng Tổ chức hành chính). Danh sách các chương trình như sau: Prog 1: Vào số liệu cho tệp hồ sơ cán bộ. Prog 2: Sửa chữa, bổ sung, cập nhật hồ sơ. Prog 3: Vào số liệu cho tệp quản lý vật tư. Prog 4: Vào số liệu cho tệp hoá đơn bán sản phẩm. Prog 5: Tính lương cán bộ quản lý. Prog 6: Lập bảng dự toán sử dụng vật tư. Prog 7: Quản lý cán bộ. Prog 8: Lập bảng tính giá trị sản phẩm bán ra. Các chương trình này đã được sử dụng và có kết quả trong sản xuất kinh doanh đã được thực tế kiểm nghiệm. Bây giờ trên cơ sở các chương trình cụ thể này, lãnh đạo công ty có nhu cầu thiết kế một hệ thống chương trình thống nhất, phục vụ tốt hơn cho việc quản lý doanh nghiệp. Trong trường hợp này, chúng ta phải vận dụng phương pháp thiết kế từ dưới lên. Ta lần lượt được các phác thảo sau đây: Phác thảo thứ nhất: Gộp các module 1, 2, 5, 7 thành phân hệ quản lý nhân sự: Quản lý nhân sự Prog 7 Prog 5 Prog 2 Prog 1 Phác thảo thứ hai: Gộp các module 4, 8 thành phân hệ quản lý bán hàng: Prog 8 Prog 4 Quản trị bán hàng Phác thảo thứ ba: Gộp các module 3, 6 thành các chức năng quản lý kho hàng: Quản trị kho hàng Prog 6 Prog 3 Phác thảo thứ 4: Trên cơ sở chức năng của các phân hệ quản lý trên đây, chúng ta có thể tiến hành thiết kế thêm một số chương trình khác làm phong phú thêm các vấn đề mà hệ thống quản lý (Prog 9 - dự báo mức tiêu thụ hàng hoá, Prog 10 - lập bảng tổng hợp hàng tồn kho). Các chương trình đựơc thiết kế bổ sung phải đảm bảo được yêu cầu phù hợp về mặt chức năng với các chương trình đã được thiết kế bà cài đặt trước đó. Đồng thời phải có sự tương thích với các chương trình đã được kiểm nghiệm trong thực tiễn. Trong ví dụ trên đây ta có thể thiết kế thêm nhiều chương trình trong mỗi phân hệ làm cho khả năng của các phân hệ ngày càng đa dạng, giải quyết được ngày càng hiệu quả các vấn đề mà thực tế quản lý của doanh nghiệp đặt ra. Ở đây là gộp ba phân hệ vừa thiết kế thành một hệ tin học quản lý thống nhất của doanh nghiệp dưới dạng mô hình sau: Prog 10 Prog 6 Prog 3 Prog 3 Prog 8 Prog 4 Prog 5 Prog 7 Prog 2 Prog 1 Quản trị nhân sự Quản trị bán hàng Quản trị kho hàng Quản trị doanh nghiệp Hình 2.6 Ví dụ về phương pháp thiết kế từ dưới lên. Phương pháp diễn đạt giải thuật: Để diễn đạt giải thuật người ta có thể dùng 3 phương pháp sau đây: Phương pháp 1: Diễn đạt giải thuật bằng lời. Phương pháp 2: Diễn đạt giải thuật bằng sơ đồ khối. Phương pháp 3: Diễn đạt giải thuật bằng một ngôn ngữ lập trình có cấu trúc. Phương pháp diễn đạt giải thuật bằng sơ đồ khối: Tư tưởng của phương pháp này dựa trên ý tưởng chủ đạo của giải thuật là tiến hành xây dựng các khối biểu diễn các quy trình tính toán và mối liên hệ giữa các khối với nhau. Phương pháp biểu diễn thuật toán bằng sơ đồ khối cho ta cái nhìn tổng thể về phương pháp giải quyết bài toán đặt ra. Trên cơ sở sơ đồ khối người ta dễ dàng chuyển thành chương trình trong một ngôn ngữ lập trình cụ thể. Quy định: Trong sơ đồ khối người ta sử dụng một số hình vẽ sau: STT Hình Ý nghĩa các khối 1 Bắt đầu Vị trí xuất phát của chương trình 2 Nội dung cần đưa vào Đưa dữ liệu từ bàn phím vào máy và lưu vào trong bộ nhớ 3 Nội dung cần tính toàn Khối tính toán. 4 Điều kiện kiểm tra Đ S Điều kiện kiểm tra của chương trình. 5 Đưa dữ liệu ra màn hình Đưa dữ liệu từ bộ nhớ trong ra màn hình máy tính 6 Kết thúc Kết thúc chương trình Hinhd 2.7 Các ký pháp sử dụng để vẽ sơ đồ khối. 1.4.3.4 Thiết kế giao diện. Nguyên tắc thiết kế màn hình nhập liệu: Đặt mọi thông tin gắn liền với một nhiệm vụ trên cùng một màn hình. Người sử dụng không phải nhớ thông tin từ màn hình này sang màn hình khác. Chỉ dẫn rõ ràng cách thoát khỏi màn hình. Đặt giữa các tiêu đề và xếp đặt thông tin theo trục trung tâm. Nếu đầu ra của màn hình là nhiều trang màn hình thì mỗi trang nên đánh số thứ tự. Viết văn bản dưới quy ước chung: Chữ in hoa, in thường, gạch chânvà ngắt câu hợp lý. Đặt tên đầu cột cho mỗi cột. Tổ chức các phần tử của danh sách theo trật tự quen thuộc trong quản lý. Căn trái các cột văn bản và căn phải các cột số. Bảo đảm vị trí đầu thập phân thẳng hàng. Chỉ đặt màu cho những thông tin quan trọng. Nguyên tắc trình bày thông tin trên màn hình: Về mặt từ ngữ: Mỗi thực đơn phải có tiêu đề rõ nghĩa, từ mục phải mô tả rõ chức năng sẽ được thực hiện. Về mặt tổ chức: Phân các thực đơn thuộc cùng một nhóm chức năng vào những mục riêng. Về mặt kích thước và hình thức: Số lượng các mục trên thực đơn không nên vượt quá chiều dài màn hình. Có thể dùng thực đơn nhiều cấp để thay thế những thực đơn quá dài. Thực đơn sử dụng tiếng Việt có dấu và có định nghĩa phím tắt tạo điều kiện sử dụng. 2. CÔNG CỤ VÀ PHƯƠNG PHÁP GIẢI QUYẾT. 2.1 Giới Thiệu về Visual Basic 6.0 (VB 6.0). Giới Thiệu Chung Nguồn gốc : Là sản phẩm nằm trong bộ phần mềm của Visual Studio 98 của hãng MicroSoft ra đời năm 1998. Cho đến nay nó đã được cập nhật đến bản sửa lỗi 6. VB 6.0 là ngôn ngữ lập trình đa năng sử dụng để phát triển các phần mềm hoạt động trong môi trường Window hay trên mạng Internet. Nó là sự kế thừa từ ngôn ngữ lập trình Basic với những ưu điểm chính: Bao gồm những đặc điểm của Basic nên rất quen thuộc dễ dùng. Cung cấp nhiều công cụ điều khiển có sẵn để hỗ trợ cho lập trình viên nhất là trong lập trình CSDL. Có cấu trúc chặt chẽ ở mức vừa phải rất dễ dàng để có thể học tập thành thạo. Các phiên bản của VB 6.0 : Learning Editor: Là phiên bản cơ bản nhất nó cho phép viết nhiều kiểu ứng dụng khác nhau.Tuy nhiên nó không có sẵn một số công cụ điều khiển như các phiên bản khác. Professional Editor: Là phiên bản thiết cho người dùng chuyên nghiệp nó chứa tất cả các tính năng và công cụ có trong phiên bản Learning Editor và bổ sung thêm một số thư viện và công cụ điều khiển. EnterPrise Editor: Đây là phiên bản đầy đủ nhất giành cho phát triển ứng dụng chuyên nghiệp, nó chứa các công cụ để hỗ trợ lập trình theo nhóm. Ưu Điểm của VB VB có thể giúp cho CSDL dễ bảo trì hơn: Nếu di chuyển một form hay một report từ CSDL này sang CSDL khác thì thủ tục gắn vào form hay report đó cũng di chuyển theo. Tạo hàm theo ý muốn: VB có thể tạo hàm theo ý muốn để tính những giá trị theo những công thức quy định hay quy trình phức tạp Báo lỗi hay xử lý lỗi: VB giúp phát hiện lỗi của người dùng, hiện những lỗi thông báo dễ hiểu. Tạo và điều khiển đối tượng: VB cho phép điều khiển tất cả các đối tượng trong CSDL và bản thân CSDL. Xử lý bản ghi: Có thể dùng VB để lần lượt xử lý từng bản ghi trong một trường hợp nào đó. Truyền tham số đến các thủ tục: VB cho phép truyền tham số đến các thủ tục khi đang thực hiện và có thể dùng các biến làm tham số. 2.2 Hệ quản trị cơ sở dữ liệu Microsoft Access. Từ cuối những năm 80, hãng Microsoft đã cho ra đời hệ điều hành Windows, đánh dấu một bước ngoặc trong phát triển các ứng dụng phần mềm trên nền Windows. Một trong những ứng dụng nổi bật nhất đi kèm lúc đó là bộ phần mềm tin học văn phòng Microsoft Office. Một trong những phần mềm trong bộ phần mềm nói trên đó là Microsoft Access – hệ quản trị cơ sở dữ liệu. Ứng dụng của MS Access có các đối tượng thuộc giao diện như thực đơn, dải công cụ, hộp thoạiđều được thiết kế tương tự như các ứng dụng khác trong bộ MS Office. Việc trao đổi dữ liệu giữa MS Access và các ứng dụng khác trong môi trường Windows như Excel, Words, Visual Basic cũng rất thuật tiện. Một cơ sở dữ liệu của MS Access được tạo lập bởi các thành phần: Các bảng cơ sở dữ liệu (database). Các bảng truy vấn (Query). Các biểu mẫu (Form). Các tập lệnh (Macro). Các khái niệm về cơ sở dữ liệu Access. Cơ sở dữ liệu Access. Cơ sở dữ liệu Access là một đối tượng bao gồm tập hợp các bảng dữ liệu, các kết nối giữa các bảng được thiết kế một cách phù hợp để phục vụ lưu trữ dữ liệu cho một ứng dụng quản lý dữ liệu nào đó. Bảng dữ liệu (table). Bảng dữ liệu là một phần quan trọng nhất của CSDL. Là nơi lưu trữ những dữ liệu tác nghiệp cho ứng dụng. Một CSDL có thể có rất nhiều bảng, các bảng phải được thiết kế sao cho có thể lưu trữ đầy đủ các dữ liệu cần thiết, đảm bảo giảm tối đa tình trạng gây dư thừa dữ liệu (dư thừa dữ liệu được hiểu đơn giản là tình trạng lưu trữ những dữ liệu không cần thiết trên một số bảng. Tác hại của hiện tượng này là gây sai lệch dữ liệu tác nghiệp và làm tăng dung lượng dữ liệu không cần thiết); tạo môi trường thuận lợi cho việc phát triển ứng dụng trong các bước tiếp theo. Một bảng cơ sở dữ liệu bao gồm các thành phần: Tên bảng, các trường dữ liệu, trường khóa, tập hợp các thuộc tính cần thiết cho mỗi trường dữ liệu và tập hợp các thuộc tính cần thiết cho mỗi trường dữ liệu và tập hợp các bản ghi. Liên kết các bảng dữ liệu trong Access Liên kết các bảng dữ liệu là một kỹ thuật trong thiết kế CSDL quan hệ. Chúng là mối liên kết giữa hai bảng với nhau theo thiết kế cho trước để đảm bảo được mục đích lưu trữ dữ liệu cho ứng dụng. Trong Access tồn tại hai kiểu liên kết: liên kết 1-1 và liên kết 1- n (một - nhiều). Liên kết 1-1: Mỗi bản ghi của bảng này sẽ liên kết với duy nhất tới một bản ghi kia và ngược lại. Liên kết 1 – n: Mỗi trường của bảng 1 sẽ có thể liên kết với một hoặc nhiều bản ghi của bảng nhiều (n). Ngược lại, mỗi bản ghi của bảng nhiều sẽ liên kết với duy nhất một trường của bảng 1. CHƯƠNG III. PHÂN TÍCH VÀ THIẾT KẾ PHẦN MỀM QUẢN LÝ BÁN HÀNG TẠI CÔNG TY TNHH XUÂN CẦU 1. XÁC ĐỊNH YÊU CẦU 1.1 Mô tả bài toán Phòng kinh doanh lên kế hoạch kinh doanh và danh mục các xe cần nhập từ kho hàng của công ty, đệ trình nên giám đốc ký duyệt bao gồm các thông tin về xe: Kiểu xe, màu xe, số lượng. Khi hàng chuyển về cửa hàng, nhân viên tại cửa hàng kiểm tra hàng và viết phiếu nhập hàng có ký nhận của người chuyển hàng và người nhận hàng ,chuyển phiếu nhập đến phòng kinh doanh cùng các giấy tờ kèm theo của mỗi xe, bộ phận kinh doanh phải có nhiệm vụ lưu các thông tin về phiếu nhập và các thông tin liên quan đến hàng hóa nhập về. Các thông tin liên quan đến hàng hoá bao gồm:kiểu xe, dung tích, màu xe, giá cả, thời gian giao hàng, người nhận hàng, kho hàng xuất, cửa hàng nhập. Phòng kinh doanh cũng cần lưu các thông tin về khách hàng, hóa đơn mua hàng, các thông tin liên quan đến hàng hóa được mua. Hàng tháng, phòng kinh doanh lọc ra những xe đã được mua đến thời kỳ bảo hành, liên lạc, nhắc với những khách hàng đã mua xe về việc bảo hành của xe. Phòng kinh doanh phải lập báo cáo gửi lên giám đốc. Các báo cáo bao gồm: báo cáo bán hàng định kỳ, liệt kê chứng từ nhập - xuất, báo cáo tồn kho. 1.2 Các nghiệp vụ về quản lý bán hàng 1.2.1 Nghiệp vụ nhập hàng Sau khi có yêu cầu nhập hàng về cửa hàng, thì bộ phận kho sẽ gửi hàng đến. Bên cạnh phiếu xuất kho là các chứng từ khác kèm theo. Hàng hóa trước khi được nhận sẽ được kiểm tra xem đầy đủ giấy tờ kèm theo xe và các dụng cụ đi kèm theo xe. Nếu đã đầy đủ thông tin cần thiết về lô hàng thì phòng kinh doanh sẽ tiến hành viết phiếu nhập kho và gửi lên phòng giám đốc, và kế toán. Đồng thời tiến hành lưu các thông tin cơ bản về xe. Với những xe không đủ điều kiện nhập thì gửi lại kho. Cuối tháng, phòng kinh doanh lên báo cáo về hang nhập trong tháng gửi lên giám đốc. 1.2.2 Nghiệp vụ bán hàng Khách hàng có yêu cầu mua hàng, nhân viên kinh doanh sẽ kiểm tra xem còn sản phẩm mà khách hàng yêu cầu hay không. Nếu lượng hàng >0 thì có thể tiến hành giao dịch. Trong quá trình giao dịch, nhân viên cần lưu các thông tin về khách hàng và sản phẩm được mua, hóa đơn bán hàng. Quá trình thanh toán được thực hiện tại quầy. 1.3 Yêu cầu của đề tài Phần mềm được xây dụng phải cho phép quản lý bán hàng theo các chức năng sau: Thêm, sửa, xoá các thông tin về hàng hóa, khách hàng, nhân viên, kho, cửa hàng cho các tệp danh mục. Cuối mỗi ngày, nhân viên quản lý sẽ thống kê từng mặt hàng bán trong ngày, lượng nhập của từng cửa hàng, hàng tồn trong mỗi cửa hàng. Cho phép lưu thông tin về các phiếu nhập kho, hóa đơn bán hàng. Tính lượng xuất, nhập tồn theo công thức sau: TKCK=TKDK + NHAPTK- XUATTK TKCK: Số lượng hàng tồn cuối kỳ. TKDK: Số lượng hàng tồn đầu kỳ. NHAPTK:Số lượng hàng nhập trong kỳ. XUATTK:Số lượng hàng xuất trong kỳ. Đưa ra các báo cáo cần thiết hỗ trợ công việc bán hàng, và quản lí bán hàng: Thống kê hàng nhập: Thông kê danh sách hàng nhập về tại mỗi cửa hàng theo các tiêu chí: thời gian nhập, kiểu xe. Báo cáo hàng tồn: Đưa ra báo cáo về tình trạng hàng hiện tại trong mỗi cửa hàng: kiểu xe, số lượng để tiện cho công tác bán hàng. Báo cáo hàng định kỳ: Sau mỗi một tháng hoặc một quý sẽ đưa ra các báo cáo về số lượng hàng hoá bán ra của công ty từ đó có thể biết được tình hình bán hàng của công ty. 2. PHÂN TÍCH CHI TIẾT 2.1 Sơ đồ ngữ cảnh Sơ đồ này gồm một chức năng duy nhất biểu thị cho toàn bộ hệ thống đang được phân tích. Chức năng này được nối với tất cả các tác nhân ngoài hệ thống. Các luồng dữ liệu giữa chức năng và các tác nhân ngoài là thông tin vào ra của hệ thống. Hình 3.1 Sơ đồ ngữ cảnh 2.2 Sơ đồ chức năng (BFD) của chương trình quản lý bán hàng Hình 3.2 Sơ đồ chức năng kinh doanh 2.3 Sơ đồ luồng thông tin 2.3.1 Sơ đồ luồng thông tin nghiệp vụ nhập hàng Hình 3.3 Sơ đồ luồng thông tin nghiệp vụ nhập hàng 2.3.2 Sơ đồ luồng thông tin bán hàng Hình 3.4 Sơ đồ luồng thông tin bán hàng 2.3 Sơ đồ luồng dữ liệu 2.3.1 Sơ đồ luồng dữ liệu (DFD) mức 0 chương trình quản lý bán hàng Hình 3.5 Sơ đồ luồng dữ liệu mức 0 2.3.2 Sơ đồ phân ra mức 1 chức năng quản lý hàng Hình 3.6 Sơ đồ phân rã mức 1 chức năng quản lý hàng 2.3.3 Sơ đồ phân rã mức 1 chức năng báo cáo Hình 3.7 Sơ đồ phân rã mức 1 chức năng báo cáo 2.4 Thiết kế cơ sở dữ liệu 2.4.1 Bảng hàng hóa ( Hanghoa) STT Tên trường Kiểu Độ rộng Mô tả 1 Maxe Text 15 Mã xe 2 Maloaixe Text 100 Kiểu xe 3 Mau Text 30 Màu xe 4 DungTich Text 15 Dung tích 5 DVT Text 15 Đơn giá 6 LuongTon Number Integer Số lượng tồn Hình 3.8 Bảng hàng hóa 2.4.2 Bảng nhân viên (Nhanvien) STT Tên trường Kiểu Độ rộng Mô tả 1 MaNV Text 15 Mã nhân viên 2 TenNV Text 100 Tên nhân viên 3 DiaChi Text 100 Đia chỉ 4 SoDT Text 20 Điện thoại Hình 3.9 Bảng nhân viên 2.4.3 Bảng kho hàng (Khohang) STT Tên trường Kiểu Độ rộng Mô tả 1 MaKho Text 15 Mã kho hàng 2 DiaChi Text 100 Đia chỉ 3 SoDT Text 20 Điện thoại Hình 3.10 Bảng kho hàng 2.4.4 Bảng khách hàng (Khachhang) STT Tên trường Kiểu Độ rộng Mô tả 1 MaKH Text 15 Mã khách hàng 2 TenKH Text 50 Tên khách hàng 3 DiaChi Text 100 Địa chỉ 4 Sodt Text 20 Điên thoại 5 Mataikhoan Text 20 Mã tài khoản 6 Masothue Text 20 Số tài khoản 7 Email Text 100 Email Hình 3.11 Bảng khách hàng 2.4.6 Bảng hóa đơn nhập (hoadonnhap) STT Tên trường Kiểu Độ rộng Mô tả 1 MaPN Text 15 Mã phiếu nhập 2 MaCH Text 15 Mã cửa hàng 3 MaKho Text 15 Mã kho hàng 4 MaNV Text 15 Mã nhân viên 5 Ngaynhap Date dd\mm\yyyy Ngày nhập hàng Hình 3.12 Bảng hóa đơn nhập 2.4.7 Bảng chi tiết hóa đơn nhập (chitiethoadonnhap) STT Tên trường Kiểu Độ rộng Mô tả 1 MaPN Text 15 Mã phiếu nhập 2 MaXe Text 15 Mã xe 3 Dongianhap Number Double Đơn giá nhập 4 SoLuong Number Integer Số lượng hàng nhập 5 GhiChu Text 100 Ghi chú Hình 3.13 Bảng chi tiết hóa đơn nhập 2.4.8 Bảng hóa đơn bán (hoadonban) STT Tên trường Kiểu Độ rộng Mô tả 1 SoHHD Text 15 Số hiệu hóa đơn 2 MaCH Text 15 Mã cửa hàng 3 MaNV Text 15 Mã nhân viên 4 MaKH Text 15 Mã khach hàng 5 Ngaylap Date dd\mm\yyyy Ngày lập hóa đơn 6 Thue Number Double Thuế Hình 3.14 Bảng hóa đơn bán 2.4.9 Bảng chi tiết hóa đơn bán (chitiethoadonban) STT Tên trường Kiểu Độ rộng Mô tả 1 SoHHD Text 15 Số hiệu hóa đơn 2 MaXe Text 15 Mã xe 3 Dongia Number Double Đơn giá bán 4 SoLuong Number Integer Số lượng hàng bán 5 Khuyenmai Number Double Khuyến mãi 6 Chietkhau Number Double Chietkhau Hình 3.15 Bảng chi tiết hóa đơn bán 2.4.10 Bảng người dùng (nguoidung) STT Tên trường Kiểu Độ rộng Mô tả 1 TenUser Text 15 Mã kho hàng 2 Password Text 100 Đia chỉ Hình 3.16 Bảng người dùng 2.4.11 Mô hình quan hệ thực thể. Hình 3.17 Mô hình quan hệ thực thể 2.5 Thiết kế giải thuật. 2.5.1 Giải thuật đăng nhập. Hình 3.18 Giải thuật đăng nhập hệ thống 2.5.2 Giải thuật tìm kiếm Hiển thị kết quả tìm kiếm Thông báo không tìm thấy Hình 3.19 Giải thuật tìm kiếm hàng hóa 2.5.3 Giải thuật xóa bản ghi Thông báo không tìm thấy Hiển thị kết quả tìm kiếm Hình 3.20 Giải thuật xóa bản ghi Một số giao diện 1.Form đăng nhập Hình 3.21 Form đăng nhập 3.Form danh mục xe Hình 3.22 Form danh mục xe Form danh mục xe giúp người dùng quản lý các loại xe có trong cửa hàng. Các chức năng chính của form danh mục xe: Thêm mới một loại xe: Để thêm mới một loại xe vào trong danh mục xe ta tiến hành nhấn nút “ Thêm”. Khi đó người dùng sẽ thêm các thông tin về hàng hóa mới. Sau đó nhấn “ Lưu” để lưu lại các thông tin vào cơ sở dữ liệu. Các thông tin về hàng hóa sẽ được lưu lại trong bảng “ hàng hóa” của CSDL. Khi không muốn lưu các thông tin về hàng hóa đó thì nhấn nút “ Hủy” để hủy việc thêm mới. Lưu ý: Chỉ lưu thông tin về lượng tồn tại thời điểm bắt đầu sử dụng phần mềm. Các lần khác, khi có một mặt hàng mới xuất hiện thì không nhập thông tin về lượng tồn, mặc định lượng tồn bằng 0. Chức năng sửa, xóa bản ghi: Người dùng có thể sửa các thông tin đã lưu trước đó về một loại xe nào đó khi nhấn nút “Sửa”, “Xóa”. Thực hiện tìm kiếm thông tin ngay trên form theo hai tiêu thức: Mã xe và kiểu xe. Người dùng chỉ cần chọn “ Hiển thị khi gõ”, chương trình sẽ tự động đưa các thông tin tìm kiếm lên trên ô lưới. Người dùng cũng có thể sử dụng nút “Tìm” để có thể thực hiện việc tìm kiếm sau khi đã nhập mã xe hoặc kiểu xe cần tìm. 4. Form hóa đơn bán hàng. Hình 3.23 Form quản lý hàng bán Form quản lý hàng bán cho phép người dùng cập nhật thông tin về hóa đơn bán hàng cũng như tiến hánh sửa đổi và xóa thông tin. Các chức năng chính: Thêm mới : Nhấn vào nút “Thêm”, người dùng tiến hành nhập các thông tin chung về hóa đơn bán hàng trong phần “ Nhập thông tin hóa đơn”. Để thêm danh sách hàng bán thì nhấn nút “ Thêm” và nhập thông tin trong “ Nhập chi tiết hóa đơn”. Sau khi đã nhập đầy đủ thông tin về hàng hóa thì nhấn “ Lưu”. Muốn thêm một mặt hàng nữa thì nhấn lại nút “ Thêm”. Có thể sửa đổi hoặc xóa các thông tin hàng hóa được lưu trước đó bằng cách nhấn “Sửa”, “Xóa”. Hoặc hủy các thông tin vừa nhập bằng cách nhấn “ Hủy”. Sau khi đã lưu lại các thông tin về chi tiết hóa đơn thì nhấn “Lưu” để lưu lại hóa đơn. Chức năng sửa, xóa phiếu được thực hiện khi nhấn vào các nút tương ứng “ Sửa”, “ Xóa”. Chức năng tìm kiếm trong Form được thực hiện khi nhấn nút “ Tìm Kiếm”. Khi đó một Form tìm kiếm hóa đơn sẽ hiện ra: Hình 3.24 Form tìm kiếm hóa đơn bán hàng Việc tìm kiếm được thực hiện trên 3 tiêu chí : Tìm kiếm hóa đơn theo khách hàng, theo nhân viên và theo số hóa đơn. Ví dụ: Sau khi nhập số hóa đơn là 1211 trong text số hóa đơn và nhấn nút Tìm thì trên lưới sẽ hiện như sau: Sau khi kết thúc việc tìm kiếm thì nhấn “ Thoát”, chương trình tự động quay lại form quản lý hàng bán. 5. Form Báo cáo bán hàng Hình 3.25 Form báo cáo bán hàng Người dùng có thể chọn lựa một trong hai tiêu chí để xuất báo cáo: Báo cáo theo kiểu xe và báo cáo theo màu xe. Và xác định khoảng thời gian để lên báo cáo. Ví dụ: Báo cáo bán hàng theo kiểu xe từ ngày 30/4/2009 đến ngày 5/5/2009 Bước 1: Chọn lựa báo cáo bán hàng Bước 2: Nhấn nút “ Xem báo cáo” Người lập bảng (ký, ghi rõ họ tên) KẾT LUẬN Thế giới đang trong kỷ nguyên của khoa học công nghệ thông tin và chúng ta không thể phủ nhận những thành công to lớn mà công nghệ thông tin đem lại cho con người. Trong những năm gần đây, việc ứng dụng công nghệ thông tin vào công tác quản lý càng nhiều, và là nhu cầu cấp bách của nền kinh tế . Việc quản lý bán hàng tại công ty TNHH Xuân Cầu hiện nay còn gặp nhiều hạn chế. Nhằm khắc phục hạn chế đó em chọn đề tài “ Xây dựng phần mềm quản lý bán hàng tại công ty TNHH Xuân Cầu”. Chương trình này đã đáp ứng được phần nào công việc của phòng kinh doanh, giúp tiết kiệm thời gian, chi phí quản lý cũng như cung cấp những thông tin đúng đắn và kịp thời, hỗ trợ các quyết định quản trị. Chương trình được xây dựng hoàn toàn theo hướng mở để có thể hoàn thiện và nâng cấp trong tương lai. Tuy nhiên, đây chưa phải là một phần mềm hoàn chỉnh do hạn chế về hiểu biết, về mặt thực tế cũng như do hạn chế về mặt thời gian. Em xin chân thành cảm ơn các thầy cô khoa tin học kinh tế, sự giúp đỡ của bạn bè và các cán bộ phòng kinh doanh công ty TNHH Xuân Cầu đã giúp em hoàn thành chuyên đề thực tập. Em xin chân thành cảm ơn! Hà Nội 08/04/2009 Sinh viên Đoàn Thị Thủy MỤC LỤC MỘT SỐ ĐOẠN CODE CHƯƠNG TRÌNH Form Danh mục xe Dim dem As Integer Dim book As String Private Sub cmdhuy_Click() cmdthoat.Enabled = True Dim i As Integer Frame1.Enabled = True Frame2.Enabled = False Form_Load cmdthem.Caption = "&Thêm" cmdsua.Enabled = True cmdxoa.Enabled = True cmdhuy.Enabled = False End Sub Private Sub cmdsua_Click() 'Txtmaxe.SetFocus book = Txtmaxe.Text dem = 1 Dim i As Integer cmdxoa.Enabled = False cmdhuy.Enabled = True Frame1.Enabled = True cmdsua.Enabled = False Frame2.Enabled = True cmdthem.Caption = "&Lưu" End Sub Private Sub cmdthem_Click() dem = 0 Dim i As Integer If cmdthem.Caption = "&Thêm" Then Frame2.Enabled = False Frame1.Enabled = True cmdthoat.Enabled = False cmdhuy.Enabled = True cmdxoa.Enabled = False cmdsua.Enabled = False Txtmaxe.SetFocus On Error Resume Next Adodc1.Recordset.AddNew cmdthem.Caption = "&Lưu" Else If Txtmaxe.Text = "" Then MsgBox "Bạn chưa nhập mã xe ", vbOKOnly + vbExclamation, "Th«ng b¸o" Txtmaxe.SetFocus Else On Error Resume Next Adodc1.Recordset.Update cmdsua.Enabled = True cmdxoa.Enabled = True cmdhuy.Enabled = False cmdthem.Caption = "&Thêm" Frame2.Enabled = True Frame1.Enabled = False cmdthoat.Enabled = True End If End If End Sub Private Sub cmdthoat_Click() Unload Me End Sub Private Sub cmdtim_Click() If cmdTim.Caption = "Tìm" Then If Trim(txt(0).Text) = "" And Trim(txt(1).Text = "") Then Adodc1.Refresh veluoi Else st = "" If Trim(Right(txt(0).Text, 1)) "" Then st = st + "maxe like '" + Trim(txt(0).Text) + "*'" End If If Trim(txt(1).Text) "" Then If st "" Then st = st + " and " + "Maloaixe like '" + Trim(txt(1).Text) + "*'" Else st = "Maloaixe like '" + Trim(txt(1).Text) + "*'" End If End If Adodc1.Recordset.Filter = st DataGrid2.Refresh End If cmdTim.Caption = "Quay lại" Else Form_Load txt(0) = "" txt(1) = "" cmdTim.Caption = "Tìm" End If End Sub Private Sub cmdxoa_Click() If MsgBox("Bạn muốn xóa không?", vbYesNo + vbCritical, "Xác nhận") = vbYes Then On Error Resume Next Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext End If End Sub Private Sub Form_Load() Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=xuancau.mdb;Persist Security Info=False" Adodc1.RecordSource = "hanghoa" Adodc1.Refresh Frame1.Enabled = False Frame2.Enabled = True cmdhuy.Enabled = False Set Txtmaxe.DataSource = Adodc1 Txtmaxe.DataField = "maxe" Set txtkieuxe.DataSource = Adodc1 txtkieuxe.DataField = "maloaixe" Set txtmau.DataSource = Adodc1 txtmau.DataField = "mauxe" Set txtdungtich.DataSource = Adodc1 txtdungtich.DataField = "dungtich" Set txtdvt.DataSource = Adodc1 txtdvt.DataField = "dvt" Set txtluongton.DataSource = Adodc1 txtluongton.DataField = "luongton" veluoi End Sub Private Sub veluoi() Set DataGrid2.DataSource = Adodc1 DataGrid2.Columns(0).Caption = "Mã Xe" DataGrid2.Columns(0).Width = 1200 DataGrid2.Columns(1).Caption = "Kiểu Xe" DataGrid2.Columns(1).Width = 3000 DataGrid2.Columns(2).Caption = "Màu Xe" DataGrid2.Columns(2).Width = 1000 DataGrid2.Columns(3).Caption = "Dung Tích" DataGrid2.Columns(3).Width = 1000 DataGrid2.Columns(4).Caption = "DVT" DataGrid2.Columns(4).Width = 1000 DataGrid2.Columns(5).Caption = "Lượng Tồn" DataGrid2.Columns(5).Width = 1000 End Sub Private Sub txtmaxe_LostFocus() Txtmaxe.Text = UCase(Txtmaxe.Text) connection.OpenData ("Select * From hanghoa") Do Until myrs.EOF If Trim(Txtmaxe.Text) = myrs!maxe And dem 1 Then MsgBox " Trùng mã ", vbOKOnly + vbExclamation, "Thông báo" Txtmaxe.SetFocus End If myrs.MoveNext Loop connection.CloseData If dem = 1 Then If Txtmaxe.Text book Then connection.OpenData ("Select * From hanghoa") Do Until myrs.EOF If Trim(Txtmaxe.Text) = myrs!maxe Then MsgBox " Trùng mã ", vbOKOnly + vbExclamation, "Thông báo" Txtmaxe.SetFocus End If myrs.MoveNext Loop connection.CloseData End If End If End Sub Form quản lý hàng bán Dim chay As Integer, dem As Integer, tong As Integer, dem1 As Integer Dim chay1 As Integer, tong1 As Integer Dim book As String Dim sua1 As String Private Sub cbomakh_Change() laymakh1 End Sub Private Sub cbomakh_Click() laymakh1 End Sub Private Sub cbomakh_KeyPress(KeyAscii As Integer) KeyAscii = 0 End Sub Private Sub cbomanv_Change() laymanv1 End Sub Private Sub cbomanv_Click() laymanv1 End Sub Private Sub cbomanv_KeyPress(KeyAscii As Integer) KeyAscii = 0 End Sub Private Sub cbomaxe_Change() laythongtinbangtp End Sub Private Sub cbomaxe_Click() laythongtinbangtp End Sub Private Sub cbomaxe_KeyPress(KeyAscii As Integer) KeyAscii = 0 End Sub Private Sub cmd1thoat_Click() Unload Me End Sub Private Sub cmdhuy_Click() Adodc1.Refresh Adodc2.Refresh Form_Load cmd1thoat.Enabled = True cmdsua.Enabled = True cmdxoa.Enabled = True cmdthem.Enabled = True cmdhuy.Enabled = False cmdluu.Enabled = False connection.OpenData ("TrungGian2") sqlluu = "delete from TrungGian2" connection.cn.Execute sqlluu connection.CloseData Adodc3.Refresh End Sub Private Sub cmdhuy1_Click() cmdthem1.Enabled = True cmdxoa1.Enabled = True cmdsua1.Enabled = True cmdluu1.Enabled = False cmdhuy1.Enabled = False Adodc3.Refresh xoachitiet veluoi End Sub Private Sub cmdin_Click() connection.OpenData("SELECThanghoa.maloaixe,chitiethoadonban.maxe,hanghoa.DonVi,chitiethoadonban.SoLuong,chitiethoadonban.DonGia,SoLuong*DonGia FROM hanghoa INNER JOIN (hoadonban INNER JOIN chitiethoadonban ON hoadonban.SoHHD = chitiethoadonban.SoHHD) ON hanghoa.maxe = chitiethoadonban.maxe WHERE hoadonban.SoHHD='" & txtsohd.Text & "'") rptxuattp.ReportFileName = App.Path & "\reports\PhieuXuatTP.rpt" rptxuattp.SetTablePrivateData 0, 3, myrs rptxuattp.Formulas(0) = "SoPhieu='" & txtsohd.Text & "'" rptxuattp.Formulas(1) = "Ngay='" & txtngay.Text & "'" rptxuattp.PrintReport connection.CloseData End Sub Private Sub cmdluu_Click() Dim sqlluu As String If Adodc3.Recordset.PageCount 0 Then If dem1 = 1 Then connection.OpenData ("hoadonban") sqlluu = "delete from hoadonban where SoHHD='" & book & "'" connection.cn.Execute sqlluu connection.CloseData End If connection.OpenData ("hoadonban") sqlluu = "insert into hoadonban values ( '" & txtsohd.Text & "','" & cbomakh.Text & "','" & cbomanv.Text & "','" & txtngay.Text & "','" & txtthue.Text & "','" & txtghichu.Text & "')" connection.cn.Execute sqlluu connection.CloseData connection.OpenData ("TrungGian2") Do Until myrs.EOF s1 = myrs!maxe s3 = myrs!SoLuong s2 = myrs!DonGia s5 = myrs!ChietKhau s4 = myrs!KhuyenMai Module1.OpenData ("hanghoa") Do Until rs.EOF If rs!maxe = s1 Then rs!luongton = rs!luongton - Val(s2) End If rs.MoveNext Loop Module1.CloseData sqlluu = "insert into chitiethoadonban values ( '" & txtsohd.Text & "','" & s1 & "','" & s2 & "','" & s3 & "','" & s4 & "','" & s5 & "')" connection.cn.Execute sqlluu myrs.MoveNext Loop connection.CloseData connection.OpenData ("TrungGian2") sqlluu = "delete from TrungGian2" connection.cn.Execute sqlluu connection.CloseData 'Adodc1.Refresh Adodc2.Refresh Form_Load cmd1cuoi_Click cmdthem.Enabled = True cmdsua.Enabled = True cmdxoa.Enabled = True cmd1thoat.Enabled = True cmdhuy.Enabled = False cmdluu.Enabled = False Else MsgBox "Bạn phải nhập mã xe trước khi lưu ", vbOKOnly vbInformation, "Thông báo" End If End Sub Private Sub cmdsua_Click() dem1 = 1 book = txtsohd.Text laymaxe cmdluu1.Enabled = False cmdsua1.Enabled = True cmdxoa1.Enabled = True cmdhuy1.Enabled = False cmdxoa.Enabled = False cmdluu.Enabled = True cmd1thoat.Enabled = False cmdsua.Enabled = False cmdthem.Enabled = False cmdhuy.Enabled = True Frame1.Enabled = True Frame2.Enabled = True Frame3.Enabled = True Frame4.Enabled = False txtsohd.SetFocus Dim s1 As String, s2 As String, s3 As String, s4 As String, s5 As String Dim sqls As String connection.OpenData("Select maxe,SoLuong,DonGia,ChietKhau,KhuyenMai from chitiethoadonban where SoHHD='" & txtsohd.Text & "' ") Do Until myrs.EOF s1 = myrs!maxe s3 = myrs!SoLuong s2 = myrs!DonGia s5 = myrs!ChietKhau s4 = myrs!KhuyenMai sqls = "insert into TrungGian2 values('" & txtsohd.Text & "','" & cbomakh.Text & "','" & cbomanv.Text & "','" & txtngay.Text & "','" & txtthue.Text & "','" & s1 & "','" & s2 & "','" & s3 & "','" & s4 & "','" & s5 & "')" connection.cn.Execute sqls myrs.MoveNext Loop connection.CloseData Adodc3.Refresh Set DataGrid1.DataSource = Adodc3 DataGrid1.Refresh veluoi End Sub Private Sub cmdsua1_Click() dem = 10 cmdthem1.Enabled = False cmdxoa1.Enabled = False cmdluu1.Enabled = True cmdhuy1.Enabled = True If Adodc3.Recordset.PageCount 0 Then sua1 = Adodc3.Recordset.Fields("maxe") cbomaxe.Text = Adodc3.Recordset.Fields("maxe") txtsl.Text = Adodc3.Recordset.Fields("SoLuong") txtdongia.Text = Adodc3.Recordset.Fields("DonGia") txtck.Text = Adodc3.Recordset.Fields("ChietKhau") txtkm.Text = Adodc3.Recordset.Fields("KhuyenMai") veluoi Else MsgBox " kh«ng cã TP nµo ®Ó söa c¶ ", vbOKOnly + vbInformation, "Th«ng b¸o" End If End Sub Private Sub cmdthem_Click() Frame1.Enabled = True Frame3.Enabled = True Frame4.Enabled = False cmdsua1.Enabled = False cmdxoa1.Enabled = False cmdhuy1.Enabled = False cmdluu1.Enabled = False cmdsua.Enabled = False cmdxoa.Enabled = False cmdluu.Enabled = True cmdthem.Enabled = False cmd1thoat.Enabled = False cmdhuy.Enabled = True xoahoadon xoachitiet laymaxe txtsohd.SetFocus Set DataGrid1.DataSource = Adodc3 DataGrid1.Refresh veluoi End Sub Private Sub xoahoadon() txtsohd.Text = "" cbomakh.Text = "" cbomanv.Text = "" txtthue.Text = "0" txtngay.Text = Date lblmakh.Caption = "" lblmanv.Caption = "" txtghichu.Text = "" End Sub Private Sub xoachitiet() cbomaxe.Text = "" lblmaxe.Text = "" txtsl.Text = "" txtdongia.Text = "" txtck.Text = "0" txtkm.Text = "0" lblluongton.Caption = "" End Sub Private Sub cmdthem1_Click() If txtsohd.Text = "" Or cbomakh.Text = "" Or cbomanv.Text = "" Then MsgBox "Bạn cần nhập đủ thông tin", vbOKOnly + vbInformation, "Thông báo" txtsohd.SetFocus Else Frame2.Enabled = True cmdxoa1.Enabled = False cmdsua1.Enabled = False cmdhuy1.Enabled = True cmdluu1.Enabled = True cmdthem1.Enabled = False xoachitiet cbomaxe.SetFocus End If End Sub Private Sub cmdxoa_Click() If MsgBox("PhiÕu nµy sÏ bÞ xo¸ ???", vbOKCancel + vbCritical, "X¸c nhËn") = vbOK Then Adodc1.Recordset.Delete Adodc1.Recordset.MovePrevious Adodc1.Refresh Adodc2.Refresh Form_Load End If End Sub Private Sub cmdxoa1_Click() If Adodc3.Recordset.PageCount 0 Then cbomaxe.AddItem (Adodc3.Recordset.Fields("maxe")) ss = Adodc3.Recordset.Fields("maxe") connection.OpenData ("TrungGian2") SQL2 = "delete from TrungGian2 where SoHHD='" & txtsohd & "' and maxe='" & ss & "'" connection.cn.Execute SQL2 connection.CloseData Adodc3.Refresh veluoi Else MsgBox " kh«ng cã TP nµo ®Ó xo¸ c¶ ", vbOKOnly + vbExclamation, "Th«ng b¸o" End If End Sub Private Sub cmdluu1_Click() Dim sqltg1 As String If cbomaxe.Text = "" Or txtsl.Text = "" Or txtdongia.Text = "" Then MsgBox "B¹n ch­a nhËp ®ñ th«ng tin", vbOKOnly + vbInformation, "Th«ng b¸o" cbomaxe.SetFocus Else Module1.OpenData ("hanghoa") Do Until rs.EOF If cbomaxe.Text = rs!maxe Then If rs!luongton > Val(txtsl.Text) Then If dem 10 Then connection.OpenData ("TrungGian2") sqltg1 = "Insert into TrungGian2 values ( '" & txtsohd.Text & "','" & cbomakh.Text & "','" & cbomanv.Text & "','" & txtngay.Text & "','" & txtthue.Text & "','" & cbomaxe.Text & "','" & txtdongia.Text & "','" & txtsl.Text & "','" & txtkm.Text & "','" & txtck.Text & "') " 'sqltg1 = "Update TrungGian2 set SoHHD= '" & txtsohd.Text & "',MaKH='" & cbomakh.Text & "',manv='" & cbomanv.Text & "',Ngay='" & txtngay.Text & "',GhiChu='" & txtghichu.Text & "',maxe='" & cbomaxe.Text & "',SoLuong='" & txtsl.Text & "',DonGia='" & txtdongia.Text & "',ChietKhau='" & txtck.Text & "',KhuyenMai='" & txtkm.Text & "' where SoHHD='" & txtsohd & "'" connection.cn.Execute sqltg1 'rs!luongton = rs!luongton + Val(txtsl.Text) connection.CloseData Else If dem1 1 Then connection.OpenData ("TrungGian2") 'sqltg1 = "Insert into TrungGian2 values ( '" & txtsohd.Text & "','" & cbomakh.Text & "','" & cbomanv.Text & "','" & txtngay.Text & "','" & txtghichu.Text & "','" & txtthue.Text & "','" & cbomaxe.Text & "','" & txtsl.Text & "','" & txtdongia.Text & "','" & txtck.Text & "','" & txtkm.Text & "') " sqltg1 = "Update TrungGian2 set SoHHD= '" & txtsohd.Text & "',MaKH='" & cbomakh.Text & "',manv='" & cbomanv.Text & "',Ngay='" & txtngay.Text & "',GhiChu='" & txtghichu.Text & "',maxe='" & cbomaxe.Text & "',SoLuong='" & txtsl.Text & "',DonGia='" & txtdongia.Text & "',ChietKhau='" & txtck.Text & "',KhuyenMai='" & txtkm.Text & "' where SoHHD='" & txtsohd & "' and maxe='" & sua1 & "'" connection.cn.Execute sqltg1 'rs!luongton = rs!luongton + Val(txtsl.Text) connection.CloseData Else connection.OpenData ("TrungGian2") 'sqltg1 = "Insert into TrungGian2 values ( '" & txtsohd.Text & "','" & cbomakh.Text & "','" & cbomanv.Text & "','" & txtngay.Text & "','" & txtghichu.Text & "','" & txtthue.Text & "','" & cbomaxe.Text & "','" & txtsl.Text & "','" & txtdongia.Text & "','" & txtck.Text & "','" & txtkm.Text & "') " sqltg1 = "Update TrungGian2 set SoHHD= '" & txtsohd.Text & "',MaKH='" & cbomakh.Text & "',manv='" & cbomanv.Text & "',NgayLap='" & txtngay.Text & "',Thue='" & txtthue.Text & "',maxe='" & cbomaxe.Text & "',SoLuong='" & txtsl.Text & "',DonGia='" & txtdongia.Text & "',ChietKhau='" & txtck.Text & "',KhuyenMai='" & txtkm.Text & "' where SoHHD='" & book & "' and maxe='" & sua1 & "'" connection.cn.Execute sqltg1 connection.CloseData 'rs!luongton = rs!luongton - Val(txtsl.Text) End If End If Adodc3.Refresh cmdthem1.Enabled = True cmdluu1.Enabled = False cmdsua1.Enabled = True cmdxoa1.Enabled = True cmdhuy1.Enabled = False xoachitiet veluoi Else MsgBox "L­îng tån trong kho kh«ng ®ñ ®Î b¸n ", vbOKOnly + vbExclamation, "Th«ng b¸o" txtsl.SetFocus End If End If rs.MoveNext Loop connection.CloseData End If End Sub Private Sub Command1_Click() Adodc2.Recordset.MoveLast laychitiethoadon chay1 = tong1 End Sub Private Sub Command2_Click() Adodc2.Recordset.MoveFirst laychitiethoadon chay1 = 0 End Sub Private Sub Command3_Click() If chay1 > 0 Then Adodc2.Recordset.MovePrevious laychitiethoadon chay1 = chay1 - 1 End If End Sub Private Sub Command4_Click() If chay1 < tong1 - 1 Then Adodc2.Recordset.MoveNext laychitiethoadon chay1 = chay1 + 1 End If End Sub Private Sub Command5_Click() frmphieubanhang.Hide frmhoadonban.Show End Sub Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then SendKeys "{TAB}" KeyAscii = 0 End If End Sub Private Sub Form_Load() chay = 1 chay1 = 0 tong = 0 Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=xuancau.mdb;Persist Security Info=False" Adodc1.RecordSource = "hoadonban" Adodc1.Refresh connection.OpenData ("hoadonban") Do Until myrs.EOF tong = tong + 1 myrs.MoveNext Loop connection.CloseData Adodc3.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=xuancau.mdb;Persist Security Info=False" Adodc3.RecordSource = "Select maxe,SoLuong,DonGia,ChietKhau,KhuyenMai,SoLuong*DonGia as ThanhTien from TrungGian2" Adodc3.Refresh layhoadon laysohh layadodc2 tinhtien Set DataGrid1.DataSource = Adodc2 DataGrid1.Refresh laychitiethoadon veluoi layMaKH laymanv Frame1.Enabled = False Frame2.Enabled = False Frame3.Enabled = False Frame4.Enabled = True End Sub Private Sub laysohh() tong1 = 0 connection.OpenData ("select * from chitiethoadonban where SoHHD='" & txtsohd.Text & "'") Do Until myrs.EOF tong1 = tong1 + 1 myrs.MoveNext Loop connection.CloseData End Sub Private Sub layhoadon() txtsohd.Text = Adodc1.Recordset.Fields("SoHHD") cbomakh.Text = Adodc1.Recordset.Fields("MaKH") txtngay.Text = Adodc1.Recordset.Fields("Ngaylap") cbomanv.Text = Adodc1.Recordset.Fields("manv") txtthue.Text = Adodc1.Recordset.Fields("Thue") txtghichu.Text = Adodc1.Recordset.Fields("GhiChu") & "" End Sub Private Sub layadodc2() Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=xuancau.mdb;Persist Security Info=False" Adodc2.CommandType = adCmdText Adodc2.RecordSource = "Select maxe,SoLuong,DonGia,ChietKhau,KhuyenMai,SoLuong*DonGia as ThanhTien from chitiethoadonban where SoHHD='" & txtsohd.Text & "' " Adodc2.Refresh End Sub Private Sub laychitiethoadon() cbomaxe.Text = Adodc2.Recordset.Fields("maxe") txtsl.Text = Adodc2.Recordset.Fields("SoLuong") txtdongia.Text = Adodc2.Recordset.Fields("DonGia") txtck.Text = Adodc2.Recordset.Fields("ChietKhau") txtkm.Text = Adodc2.Recordset.Fields("KhuyenMai") End Sub Private Sub laychitietadodc4() Adodc4.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=xuancau.mdb;Persist Security Info=False" Adodc4.CommandType = adCmdText Adodc4.RecordSource="Selectmaxe,SoLuong,DonGia,ChietKhau,KhuyenMai,SoLuong*DonGia as ThanhTien from TrungGian2 " ' where SoHHD='" & txtsohd.Text & "' " Adodc4.Refresh End Sub Private Sub veluoi() DataGrid1.Columns(0).Caption = "M· Xe" DataGrid1.Columns(0).Width = 1700 DataGrid1.Columns(1).Caption = "Sè L­îng" DataGrid1.Columns(1).Width = 1700 DataGrid1.Columns(2).Caption = "§¬n gi¸" DataGrid1.Columns(2).Width = 1700 DataGrid1.Columns(3).Caption = "ChiÕt khÊu" DataGrid1.Columns(3).Width = 1700 DataGrid1.Columns(4).Caption = "KhuyÕn m¹i" DataGrid1.Columns(4).Width = 1700 DataGrid1.Columns(5).Caption = "Thµnh tiÒn" DataGrid1.Columns(5).Width = 1700 End Sub Private Sub layMaKH() connection.OpenData ("select * from KhachHang") Do Until myrs.EOF cbomakh.AddItem (myrs.Fields("MaKH")) myrs.MoveNext Loop connection.CloseData End Sub Private Sub laymanv() connection.OpenData ("select * from NhanVien") Do Until myrs.EOF cbomanv.AddItem (myrs.Fields("manv")) myrs.MoveNext Loop End Sub Private Sub laymanv1() Dim s4 As String s4 = cbomanv.Text connection.OpenData ("select * from NhanVien") Do Until myrs.EOF If s4 = myrs!manv Then lblmanv.Caption = myrs.Fields("tennv").Value End If myrs.MoveNext Loop End Sub Private Sub laymaxe() connection.OpenData ("select * from hanghoa") Do Until myrs.EOF cbomaxe.AddItem (myrs.Fields("maxe")) myrs.MoveNext Loop connection.CloseData End Sub Private Sub laymakh1() Dim s5 As String s5 = cbomakh.Text connection.OpenData ("select * from KhachHang") Do Until myrs.EOF If s5 = myrs!MaKH Then lblmakh.Caption = myrs.Fields("TenKH").Value End If myrs.MoveNext Loop connection.CloseData End Sub Private Sub laythongtinbangtp() Dim s1 As String s1 = cbomaxe.Text connection.OpenData ("select * from hanghoa") Do Until myrs.EOF If myrs.Fields("maxe") = s1 Then lblmaxe.Text = myrs.Fields("maloaixe").Value lblluongton.Caption = myrs.Fields("LuongTon").Value End If myrs.MoveNext Loop connection.CloseData End Sub Private Sub txtck_KeyPress(KeyAscii As Integer) If KeyAscii Asc("9") Then KeyAscii = vbKeyBack End If End Sub Private Sub txtck_LostFocus() If txtck.Text = "" Then txtck.Text = "0" End If End Sub Private Sub txtdongia_KeyPress(KeyAscii As Integer) If KeyAscii Asc("9") Then KeyAscii = vbKeyBack End If End Sub Private Sub txtkm_KeyPress(KeyAscii As Integer) If KeyAscii Asc("9") Then KeyAscii = vbKeyBack End If End Sub Private Sub txtkm_LostFocus() If txtkm.Text = "" Then txtkm.Text = "0" End If End Sub Private Sub txtthue_LostFocus() If txtthue.Text = "" Then txtthue.Text = "0" End If End Sub Private Sub txtngay_Click() txtngay.Text = Date End Sub Private Sub txtngay_GotFocus() txtngay.Text = Date End Sub Private Sub txtsl_KeyPress(KeyAscii As Integer) If KeyAscii Asc("9") Then KeyAscii = vbKeyBack End If End Sub Private Sub txtsohd_KeyPress(KeyAscii As Integer) txtsohd.Text = LTrim(txtsohd.Text) End Sub Private Sub txtsohd_LostFocus() If txtsohd.Text = "" Then MsgBox " B¹n ch­a nhËp sè phiÕu", vbOKOnly + vbExclamation, "Th«ng b¸o" txtsohd.SetFocus End If txtsohd.Text = UCase(txtsohd.Text) connection.OpenData ("Select * From hoadonban") Do Until myrs.EOF If Trim(txtsohd.Text) = myrs!SoHHD And dem1 1 Then MsgBox " Trïng m· ", vbOKOnly + vbExclamation, "th«ng b¸o" txtsohd.SetFocus End If myrs.MoveNext Loop connection.CloseData If dem1 = 1 Then If txtsohd.Text book Then connection.OpenData ("Select * From hoadonban") Do Until myrs.EOF If Trim(txtsohd.Text) = myrs!SoHHD Then MsgBox " Trïng m· ", vbOKOnly + vbExclamation, "Th«ng b¸o" txtsohd.SetFocus End If myrs.MoveNext Loop connection.CloseData End If End If End Sub Private Sub txtthue_KeyPress(KeyAscii As Integer) If KeyAscii Asc("9") Then KeyAscii = vbKeyBack End If End Sub Private Sub tinhtien() Dim sotien As Double Dim tiensauthue As Double sotien = 0 tiensauthue = 0 connection.OpenData ("chitiethoadonban") Do Until myrs.EOF If myrs.Fields("SoHHD") = txtsohd.Text Then sotien = sotien + myrs.Fields("DonGia") * myrs.Fields("soluong") -myrs.Fields("dongia") * myrs.Fields("soluong") * myrs.Fields("khuyenmai") / 100 - myrs.Fields("dongia") * myrs.Fields("soluong") * myrs.Fields("chietkhau") / 100 End If myrs.MoveNext Loop txttongsotien = sotien connection.CloseData tiensauthue = sotien + sotien / 100 * Val(txtthue.Text) txttongsotiensauthue.Text = tiensauthue End Sub Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then SendKeys "{TAB}" KeyAscii = 0 End If End Sub Private Sub txt_change(Index As Integer) Dim st As String If Check1.Value = 1 Then cmdTim.Caption = "Quay lại" If Trim(txt(0).Text) = "" And Trim(txt(1).Text = "") Then Adodc1.Refresh veluoi Else st = "" If Trim(Right(txt(0).Text, 1)) "" Then st = st + "maxe like '" + Trim(txt(0).Text) + "*'" End If If Trim(txt(1).Text) "" Then If st "" Then st = st + " and " + "Maloaixe like '" + Trim(txt(1).Text) + "*'" Else st = "Maloaixe like '" + Trim(txt(1).Text) + "*'" End If End If Adodc1.Recordset.Filter = st DataGrid2.Refresh End If Else cmdTim.Caption = "Tìm" End If End Sub DANH MỤC TÀI LIỆU THAM KHẢO TS.Trương Văn Tú – TS. Trần Thị Song Minh. Giáo trình hệ thống thông tin quản lý. NXB Thống kê, Hà Nội 2000. Nguyễn Văn Vy. Phân tích và thiết kế hệ thống thông tin hiện đại. NXB Thống kê, 2003 Trần Thành Trai, Giáo trình Phân tích và thiết kế hệ thống thông tin quản lý, NXB Thống kê, Hà Nội - 1994. PGS.TS Hàn Viết Thuận. Giáo trình cấu trúc dữ liệu và giải thuật. NXB Thống kê, Hà Nội - 2005 Nguyễn Văn Ba. Phân tích và thiết kế hệ thống thông tin. Nhà xuất bản ĐHQG. Hà Nội PGS.TS Hàn Viết Thuận. Giáo trình tin học ứng dụng. NXB Đại học kinh tế quốc dân. PGS.TS Hàn Viết Thuận. Giáo trình tin học đại cương. NXB Đại học kinh tế quốc dân. PGS.TS Hàn Viết Thuận. Giáo trình tin học ứng dụng. NXB Thống kê, Hà Nội – 2006. .

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

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