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
109 trang |
Chia sẻ: Dung Lona | Lượt xem: 1343 | Lượt tải: 0
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 02.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àng2.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 cha 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 cha 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:
- 1968.doc