Chuyên đề Xây dựng phần mêm quản lý thuốc tại hiệu thuốc Long Tâm

Hệ thống thông tin quản lý bán thuốc có một vai trò quan trọng trong hoạt động kinh doanh của bất kỳ một hiệu thuốc nào dù quy mô lớn hay nhỏ và đặc biệt quan trọng đối với hiệu thuốc lớn như hiệu thuốc Long Tâm-Hà Nội .Nó là một khâu quan trọng trong quá trình kinh doanh của các hiệu thuốc và nó góp phần vào sự phát triển của các hiệu thuốc không chỉ trong giai đoạn hiện tại và cả trong tương lai. Trong thời gian thực tập e đã xây dựng đuợc phần mềm quản lý thuốc hiệu thuốc Long Tâm – Hà Nội có các chức năng quản lý được danh mục nhân viên, danh mục nhà cung cấp, danh mục thuốc, phiếu nhập thuốc, đơn thuốc từ đó lên được các báo cáo về lượng thuốc xuất, lượng thuốc nhập, tiền nhập thuốc, lượng thuốc tồn đầu kỳ. Trong thời gian tới e có định hướng xây dựng thêm chức năng chiết khấu thanh toán, giảm giá hang bán cho những cá nhân, hay đơn vị mua thuốc với số lượng lớn. Qua đây em cũng đã học hỏi được nhiều điều trong cách tư duy và trình bày vấn đề. Tuy nhiên, do còn thiếu kinh nghiệm và thời gian có hạn nên chương trình còn có những hạn chế nhất định: chưa có tính chuyên nghiệp cao, chưa giải quyết được trọn vẹn những vấn đề nảy sinh trong công tác quản lý,thuật toán ở đây có thể còn chưa tối ưu dẫn đến giải quyết vấn đề chưa thấu đáo.nhưng chương trình cũng đã giải quyết được một phần yêu cầu của quản lý .Trong giai đoạn tới em sẽ dựa trên những ý kiến nhận xét của các thầy cô giáo để hoàn thành tốt hơn đề tài này. Em xin chân thành cảm ơn Th.s Nguyễn Anh Phương và giám đốc Lê Cảnh Toàn đã giúp đỡ e rất nhiều trong quá trình thực tập và thực hiện Đề Án.

doc80 trang | Chia sẻ: oanh_nt | Lượt xem: 1354 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Chuyên đề Xây dựng phần mêm quản lý thuốc tại hiệu thuốc Long Tâm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ữ liệu bằng các phương pháp thủ công truyền thống mang nặng tính chất lạc hậu, lỗi thời. Công nghệ thông tin đã đi vào các ngành với một phương thức hoạt động hoàn toàn mới mẻ,sáng tạo và nhanh chóng mà không mất đi sự chính xác. Đặc biệt, nó đã đánh dấu một bước ngoặt trong việc áp dụng tin học vào trong hệ thống quản lý. Qua thời gian thực tập, em nhận thấy công tác quản lý thuốc ở các hiệu thuốc là bước quan trọng trong công tác phân phối thuốc. Với công tác quản lý thuốc của hiệu thuốc mà ta có những thông tin, báo cáo về lượng hàng nhập, hàng xuất, hàng tồn của hiệu thuốc. Đây cũng là một trong những mối quan tâm của rất nhiều hiệu thuốc trong giai đoạn hiện nay. Chính vì vậy mà em đã chọn đề tài: “Xây dựng phần mềm quản lý thuốc tại hiệu thuốc Long Tâm-Hà Nội “. 1.5.2. Phạm vi ứng dụng của đề tài Trong quá trình học tập nghiên cứu và viết đề tài: “Xây dựng phần mềm quản lý thuốc.” tại cửa hiệu thuốc Long Tâm, em đã áp dụng những kiến thức đã học ở trường và quá trình tìm hiểu thực tế tại cửa hàng thuốc để xây dựng một đề tài hoàn chỉnh gồm đầy đủ các bước: Khảo sát, phân tích, thiết kế lập trình, cài đặt và chạy thử phần mềm. Do thời gian thực tập ngắn và trình độ còn nhiều hạn chế, nên em chỉ xây dựng được một nhánh của trương trình quản lý thuốc, chứ chưa phải là một trương tình quản lý thuốc chuyên nghiệp dành cho một cửa hiệu thuốc. Em chỉ cố gắng mô tả quy trình xây dựng một phần mềm thông qua khảo sát thực tế. Phần mềm dự kiến là sẽ được viết bằng ngôn ngữ VB6 với cơ sở dữ liệu là Access 2003. Vì phầm mềm được xây dựng chủ yếu dưới dạng học thuật nên việc lựa chọn trên là hợp lý: Đảm bảo tiến độ về thời gian(ngôn ngữ VB6 rất dễ dử dụng và tỏ ra thích hợp cho những phần mềm được xây dựng trong thời gian ngắn). Cơ sở dữ liệu là Access 2003 là hợp lý vì nó rất đơn giản và phổ biến không qua công kềnh như SQL2005(gần 1GB) hoặc Oracle(hơn 2GB). Đề tài được ứng dụng trong nội bộ của hiệu thuốc triển khai dự án cụ thể ở đây là hiệu thuốc Long Tâm-Hà Nội. Bên cạnh đó đề tài có thể được ứng dụng và triển khai tại các hiệu thuốc khác nhằm tạo ra hiệu quả cao cho quá trình tiến hành kinh doanh của các hiệu thuốc. 1.5.3 Đối với người thực hiện đề tài. Thực tập là một khâu quan trọng trong công việc đưa sinh viên đến với thực tế. Qua việc thực tập tại công ty phần mềm Cybersoft và sự hướng dẫn của thầy Trịnh Hoài Sơn em đã học hỏi được nhiều điều: Quy trình để xây dựng một phần mềm chuyên nghiệp, cách thức làm việc theo nhóm. 1.5.4. Chức năng chủ yếu của chương trình Chức năng bán thuốc: bao gồm các công việc nhận xử lý đơn thuốc, kiểm tra thuốc, cập nhật hàng xuất và quản lý hàng bị trả lại. Chức năng mua thuốc: bao gồm các hoạt động cập nhật danh mục thuốc, kiểm tra thuốc theo danh mục và cập nhật hàng nhập. Chức năng xử lý kho thuốc: gồm các hoạt động kiểm tra hàng xuất, nhập, tổng hợp kho hàng và đưa ra cảnh báo với những thuốc sắp hết trong kho, cần phải nhập thêm. Chức năng quản lý thuốc tới hạn: đưa ra danh sách thuốc sắp hết hạn, số lượng còn lại,… và đưa ra biện pháp xử lý đối với những thuốc đó. Chức năng lập thống kê báo cáo: bao gồm các hoạt động truy xuất dữ liệu từ cơ sở dữ liệu của phần mềm, tính toán tổng hợp và đưa ra các báo cáo hợp lý như báo cáo doanh thu, báo cáo xuất nhập, báo cáo tồn kho,…. Chương II: Một số vấn đề phương pháp luận cơ bản về quy trình thiết kế, xây dựng và triển khai một phần mềm ứng dụng. I. Khái niệm về phần mềm và công nghệ phần mềm, phân loại phần mềm 1.1. Khái niệm về phần mềm và công nghệ phần mềm. 1.1.1. Khái niệm về phần mềm. * Hiện nay, có rất nhiều cách khác nhau để định nghĩa về phần mềm.Sau đây là một số cách định nghĩa về phần mềm: + Phần mềm là tập hợp tất cả các câu lệnh do các lập trình viên viết ra để hướng máy tính làm một số công việc cụ thể nào đó. + Theo giáo trình tin học đại cương của khoa tin học ĐH kinh tế quốc dân thì: “Phần mềm máy tính là các chương trình, cấu trúc dữ liệu làm cho chương trình xử lý được những thông tin thích hợp và các tài liệu mô tả phương thức sử dụng các chương trình ấy. Phần mềm luôn được bổ sung và sửa đổi một cách thường xuyên” * Để có được phần mềm, các nhà lập trình phải sử dụng các ngôn ngữ lập trình để viết, ngôn ngữ lập trình là ngôn ngữ trung gian giữa ngôn ngữ giao tiếp của con người với ngôn ngữ máy, ngôn ngữ càng gần với ngôn ngữ con người thì gọi là ngôn ngữ cấp cao, càng gần ngôn ngữ máy thì gọi là ngôn ngữ cấp thấp. Chương trình dịch Ngôn ngữ máy Ngôn ngữ lập trình bậc cao Ngôn ngữ của con người Ngôn ngữ lập trình bậc thấp Chương trình dịch 1.1.2. Khái niệm về công nghệ phần mềm * Công nghệ phần mềm là một lĩnh vực nghiên cứu mới của tin học, được triển khai trong giai đoạn phát triển rất cao của tin học và viễn thông khi phần mềm đã trở thành một ngành công nghiệp. * Công nghệ phần mềm là môn khoa học nghiên cứu các phương pháp, các thủ tục và các công cụ đi từ phân tích thiết kế đến quản lý một dự án phần mềm nhằm đạt được các mục tiêu của dự án. * Công nghệ phần mềm bao gồm một tập hợp với 3 yếu tố chủ chốt: Công cụ và thủ tục, giúp cho người quả lý có thể kiểm soát được quá trình phát triển phần mềm va cung cấp cho kỹ sư phần mềm một nền tảng để xây dựng một phần mềm chất lượng cao. 1.2. Phân loại phần mềm. ` * Có nhiều cách khác nhau để phân loại phần mềm. Sau đây là một số cách phân loại thường thấy: 1.2.1. Phần mềm ứng dụng 1.2.1.1. Phần mềm cho những ứng dụng tổng quát: - Là những phần mềm đáp ứng được những công việc mang tính phổ thông thường ngày của hầu hết người sử dụng. Ví dụ: + Chương trình duyệt Web cho phép người sử dụng có thể khai thác kho dữ liệu khổng lồ trên Internet để phục vụ cho công việc của mình: Internet Explorer, Opera… + Phần mềm nhận và gửi thư điện tử giúp chúng ta giữ lien hệ với mọi đối tác cho dù họ ở bất kỳ đâu trên thế giới thông qua mạng Internet: Outlook Express… + Hệ soạn thảo điều khiển máy tính hoạt động như một máy chữ để giúp người dùng biên soạn các tài liệu như công văn, thư từ… Hệ soạn thảo văn bản được sử dụng nhiều nhất là MS Word. + Hệ quản trị cơ sở dữ liệu giúp lưu chữ, tổ chức, sắp sếp, cập nhật thông tin và tìm kiểm thông tin khi cần thiết. Ở Việt Nam hệ quản trị CSDL được dung nhiều nhất là hệ quản trị: Foxpro và MS Access. 1.2.1.2 Phần mềm cho những mục đích cụ thể. +Phần mềm kinh doanh: Gồm các chương trình giúp các doanh nghiệp hoàn thành những nhiệm vụ xử lý thông tin có tính chất thủ tục lặp đi lặp lại hàng ngày, hang tháng, hang quý hay hang năm. Phần mềm kinh doanh khác phần mềm sản suất ở chỗ nó nhấn mạnh vào những nhiệm vụ trên phạm vi toàn cơ quan như phần mềm kế toán, quản lý nhân sự…Các phần mềm được dung nhiều nhất hiện nay là Fast và Effect. + Phần mềm giải trí bao gồm các trò chơi và các chương trình để giúp tiêu khiển, giải trí. Hiện nay, khi mức của con người càng cao thì các phần mềm thuộc loại nay đang lên ngôi. + phần mềm giáo dục và tham khảo giúp cung cấp kiến thức, kỹ năng về một chủ thể, lĩnh vực nào đó, cung cấp các bộ cơ sở dữ liệu cho phép tra cứu thông tin theo yêu cầu: Phần mềm tra cứu từ điển… 1.2.2. Phần mềm hệ thống. * Phần mềm hệ thống bao gồm các chương trình quản lý, hỗ trợ các tài nguyên và điều hành các hoạt động của hệ thống máy tính. 1.2.2.1 Phần mềm quản lý hệ thống + Hệ điều hành: Là một bộ trương trình phục vụ cho việc quản lý chặt chẽ hệ thống tính toán và tổ chức khai thác chúng một cách tối ưu. + Các chương trình tiện ích: Được xây dựng với mục đích bổ xung them các dịch vụ cần cho người mà hệ điều hành chưa đáp ứng được hay là đã có nhưng chọn vẹn: Winzar, Foxit reader… + Các chương trình điều khiển thiết bị giúp máy tính điều khiển một thiết bị nào đó mà không có trong danh sách những thiết bị phần cứng được hệ điều hành hỗ trợ: Các loại Card màn hình.. 1.1.2.2. Phần mềm phát triển hệ thống: + Các chương trình dịch có nhiệm vụ dịch các chương trình viết bằng ngôn ngữ thuật toán sang ngôn ngữ máy tính để có thể hiểu và xử lý được. + Ngôn ngữ lập trình là công cụ để diễn tả thuật toán thành chương trình cho máy tính thực hiện. Cho đến nay đã có 5 thế hệ ngôn ngữ lập trình: Java của sun, dot net của Microsoft… II- Chu kỳ sống của một phần mềm: *Một số cách phân chia quá trình thiết kế ứng dụng. 2.1. Chu kỳ sống của dự án tuần tự 2.1.1.Giai đoạn khởi tạo. Khởi tạo dự án là một giai đoạn xác định nhu cầu của ứng dụng và xác định đầy đủ vấn đề để tập hợp đội ngũ đánh giá vấn đề đó. Bổ nhiệm các cá nhân và các đối tác liên quan, bổ nhiệm các bên tham gia của mỗi tổ chức vào nhóm xây dựng phân mềm. Đầu ra của giai đoạn này là một bản ghi hoặc một tài liệu chính thức chỉ ra các nguồn tài trợ, xác định vấn đề các bên tham gia. 2.1.2 Giai đoạn nghiên cứu tính khả thi Tính khả thi có được từ kết quả phân tích các rủi do, chi phí và lợi nhuận liên quan đến các vấn đề kinh tế, kỹ thuật và tổ chức của người sử dụng. các vấn đề đặt ra phải được xem xét chi tiết để đảm bảo rằng mọi khía cạnh của tính khả thi đã được xem xét đến. Báo các tổng quát về tính khả thi bao gồm: + Vấn đề đặt ra. + Tính khả thi về mặt kinh tế, kỹ thuật và tổ chức. + Những rủi ro và bất ngờ liên quan đến ứng dụng. + Ý tưởng thích hợp nhất về sản phẩm phần mềm và giải thích tại sao nó tốt hơn các sản phẩm khác cùng loại. + Các cầu huấn luyện và lịch trình dự định. + Dự đoán nhân sự cho dự án tính theo từng giai đoạn và mức độ yêu cầu. 2.1.3. Giai đoạn phân tích. * Yêu cầu về chức năng hệ thống được thiết kế để làm gì? Khuân dạng các định nghĩa này vào phương pháp luận sử dụng trong giai đoạn phân tích. + Yêu cầu về cấu hình – các thiết bị cuối, các thông điệp, thời gian trả lời của mạng, dung lượng vào/ ra, yêu cầu thời gian sử lý. + Yêu cầu về giao diện - dữ liệu trao đổi với các ứng dụng và đơn vị khác là gì? định nghĩa bao gồm cả tính thời gian, khuôn dạng của dữ liệu trao đổi. + Các chuẩn xây dựng phần mềm - dạng cấu trúc, tính thời gian, nội dung cơ bản của tại liệu cần đưa ra trong quá trình xây dựng phần mềm. định dạng thông tin bao gồm nội dung của dữ liệu từ điển hay kho lưu trữ đối với việc thiết kế đối tượng, nội dung báo cáo dự án, các yêu cầu cần thiết khác được giám sát bởi nhóm tham gia dự án. 2.1.4. Giai đoạn thiết kế ở mức quan niệm. Các cách giọi khác bao gồm thiết kế sơ bộ, thiết kế logic, thiết kế bên ngoài hay định danh các yêu cầu của phần mềm. Hoạt động chính của thiết kế quan niệm là định nghĩa chức năng chi tiết của tất cả các nhân tố bên ngoài của một chương trình ứng dụng, nó bao gồm màn hình hiển thị, báo cáo, đơn vị dữ liệu hội thoại, và các khuân mẫu. Cả nội dung và cách trình bày ở mức này. Hơn nữa, mô hình dữ liệu logic được chuyển sang sơ đồ cơ sở dữ liệu logic, hoặc các khung nhìn của người sử dụng. 2.1.5. Giai đoạn thiết kế. * Những thuật ngữ khác dung để miêu tả các hoạt động thiết kế bao gồm thiết kế chi tiết, thiết kế vật lý, thiết kế bên trong và thiết kế sản phẩm. Trong suốt giai đoạn thiết kế, kỹ sư phần mềm phải tạo, sưu tập tài liệu và kiểm tra. + Kiến trúc phần mềm: Định danh và định nghĩa chương trình, các khối độc lập, các chức năng, các luật, các đối tượng và các mối quan hệ giữa chúng. + Các thành phần và các khối của phần mềm: định nghĩa một cách chi tiết nội dung và các chức năng của thàng phần, bao gồm đầu vào\ra, sự hiển thị, báo cáo, dữ liệu, các file, các kết nôi và các tiến trình. + Giao diện: Nội dung chi tiết, tính toán thời gian, với trách nhiệm cụ thể, và thiết kế dữ liệu được trao đổi với những ứng dụng hay tổ chức khác. + Kiểm tra: Xác định chiến lược, nhiệm vụ, và tính toán thời gian cho mọi loại hình khiểm tra cần được tiến hành. + Dữ liệu: Là việc xác định cách thể hiện vật lý của dữ liệu trên các thiết bị, và các yếu tố yêu cầu, tính toán thời gian, nhiệm vụ phân giã, sao chép các bản sao dữ liệu. 2.1.6.Giai đoạn thiết kế hệ thống. + Cấu trúc điều khiển trình ứng dụng: Xác định bằng cách nào một trương trình hay một khối độc lập được kích hoạt và nó sẽ về đâu khi kết thúc. + Cấu trúc dữ liệu và sơ đồ cài đặt vật lý: Trong môi trường Cơ sở dữ liệu, hoạt động này bao gồm việc sác định một thư viện dữ liệu tập trung, các đường hộp thoại, và vùng đệm cho việc sử dụng hệ quản trị dữ liệu. + Định kích thước: Xác định bất kỳ một trương trình và vùng đệm mà nó dự tính như là một bộ nhớ trú ngụ đối vói chế độ trực tiếp hay các tiến trình theo thời gian thực. + Thuật toán chính: Chỉ ra các vấn đề toán học cho phép kiểm tra một cách độc lập tính đúng đắn của công thức. + Thuật toán chính: Chỉ ra các vấn đề toán học cho phép kiểm tra một cách độc lập tính đúng đăn của công thức. + Các thành phần của chương trình: Định danh, tên, và tính chất sử dụng. Về mặt thể hiện tính chất bao gồm các thủ tục dữ liệu, các thủ tục, khối khác có thể bị gọi trong quá trình sử lý của khối này, kích thước hang đợi, vùng đệm và các yêu cầu của tiến trình. 2.1.7. Giai đoạn triển khai: Việc thực hiện triển khai còn được gọi là cài đặt và cho phép sử dụng. Triển khai là quá trình một sản phẩm phần mềm được tích hợp vào môi trường làm việc và cho phép sử dụng. Thực hiện triển khai bao gồm sự hoàn chỉnh của chuyển đổi dữ liệu, cài đặt và đào tạo sử dụng. Vào thời điểm này của chu trình một dự án quá trình phát triển phần mềm kết thúc, và giai đoạn bảo hành, bảo trì bắt đầu. Việc bảo trì tiếp tục cho đến khi dự án kết thúc. 2.1.8. Giai đoạn vận hành và bảo trì. Vận hành và bảo trì là một giai đoạn trong quá trình sản xuất phầm mềm ở đó sản phẩm phần mềm được sử dụng trong môi trường làm việc, giám sát đối với hiệu quả thống kê, và sửa đổi nếu cần thiết. 2.1.9. Giai đoạn loại bỏ. Đây là giai đoạn trong quá trình sản xuất phần mềm mà tại đó việc cung cấp sản phẩm phần mềm kết thúc. Thông thường, các chức năng của sản phẩm phần mềm được chuyển tới một hệ thống kế tiếp. 2.1.10. Các hoạt động thường xuyên. Có hai hoạt động phổ biến trong mỗi giai đoạn là: Kiểm kê, phê chuẩn và quản lý cấu hình. Tổng kết mỗi giai đoạn là sự kiểm tra phê chuẩn. Đó chính là mục tiêu của sản phẩm. Việc kiêm tra đưa ra khuân mẫu đúng đắn tương ứng giữa sản phẩm phần mềm và đặc tính của nó. Sự phê chuẩn đưa ra chuẩn mực về sự phù hợp hay chất lượng của sản phẩn phần mềm đối với mục đích của quá trình sử dụng. Một người quản lý dự án được chỉ định nắm giữ phiên bản chính của mỗi sản phẩm. 2.2. Mô hình phát triển tiến hoá của phần mềm Mô hình phát triển tiến hoá của phần mềm Dàn ý mô tả Đặc tả Phát triển Đánh giá Phiên bản khởi động Phiên bản cuối Các phiên bản trung gian Các thao tác song song Mô hình phát triển phần mềm theo kiểu tiến hoá 2.2.1. Phân loại sự phát triển tiến hóa + Lập trình thăm dò: đối tượng của quá trình bằng cách làm việc với khách hàng để thăm dò các yêu cầu và phân phối phần mềm dứt diểm. Sự phát triển nên bắt đầu với những phần nào đã được hiểu rõ. Phần mềm sẽ được thêm vào các chức năng mới khi mà nó được đề nghị cho khách hàng (và nhận về các thông tin). + Mẫu thăm dò: đối tượng của phát triển tiến hoá này là nhằm hiểu các yêu cầu của khách hàng và do đó phát triển các định nghĩa yêu cầu tốt hơn cho phần mềm. Các mẫu tập trung trên các thí nghiệm với những phần đòi hỏi nào của khách hàng mà có thể gây sự khó hiểu hay ngộ nhận. 2.2.2 Phân tích mô hình: * Mô hình phát triển tiến hóa này hiệu quả hơn mô hình thác nước. Tuy nhiên, nó vẫn còn các khuyết điểm: + Quá trình thì không nhìn thấy rõ được: Các nhà quản lý cần phân phối thường xuyên để đo lường sự tiến bộ. Nó không kinh tế trong việc làm ra các hồ sơ cho phần mềm. + Phần mềm thường dược cấu trúc nghèo nàn: Sự thay đổi liên tục dễ làm đổ vỡ cấu trúc của phần mềm, tạo ra sự khó khăn và tốn phí. + Thường đòi hỏi những kỹ năng đặc biệt: Hầu hết các hệ thống khả dĩ theo cách này được tiến hành bởi các nhóm nhỏ có kỹ năng cao cũng như các cá nhân phải năng động. 2.2.3 Mô hình này thích hợp với: + Phát triển các loại phần mềm tương đối nhỏ + Phát triển các loại phần mềm có đời sống tương đối ngắn + Tiến hành trong các hệ thống lớn hơn ở những chỗ mà không thể biểu thị được các đặc tả chi tiết trong lúc tiến hành. Thí dụ của trường hợp này là các hệ thống thông minh nhân tạo (AI) và các giao diện cho người dùng. 2.3 Các công việc thực hiện và các sản phẩm chuyển giao: Công việc Sản phẩm bàn giao 1 - Xây dựng và quản lý HĐ phần mềm Đề xuất tham gia HĐPM Lập giải pháp kĩ thuật, hồ sơ PM Xây dựng HĐPM Theo dõi thực hiện HĐPM Thanh toán, thanh lý Báo cáo tổng kết - Văn bản hợp đồng xây dựng PM - Giải pháp thực hiên 2 - Xác định yêu cầu Lập kế hoạch xác định yêu cầu Khảo sát Phân tích nghiệp vụ Phân tích yêu cầu người sử dụng Mô tả hoạt động của nhà thuốc Trúc Tâm Báo cáo tổng kết - Hồ sơ xác định yêu cầu khách hàng : + Tài liệu phân tích nghiệp vụ + Tài liệu mô tả hoạt động + Tài liệu phân tích yêu cầu người sử dụng 3 - Phân tích, thiết kế Lập kế hoạch thiết kế Thiết kế kiến trúc Thiết kế dữ liệu Thiết kế thủ tục Thiết kế chương trình Thiết kế giao diện Báo cáo tổng kết Hồ sơ kiến trúc phần mềm Hồ sơ thiết kế kỹ thuật 4 - Lập trình Lập kế hoạch lập trình Lập trình thư viện chung Thiết kế các module Tích hợp Test Báo cáo tổng kết quy trình Sản phẩm phần mềm Bộ công cụ cài đặt 5- Test Lập kế hoạch Test Kịch bản Test Test hệ thống Test nghiệm thu Hồ sơ Test Biên bản ghi nhận quy trình Test PM đã được test đúng hạn 6- Triển Khai Lập giải pháp kĩ thuật Kế hoạch triển khai Cài đặt máy chủ Cài đặt máy mạng Vận hành PM Đào tạo sử dụng Biên bản triển khai Biên bản cài đặt Chương III: Xây dựng phần mềm quản lý thuốc hiệu thuốc Long Tâm-Hà Nội I. Phân tích hệ thống 1.1 Lập kế hoạch xác định yêu cầu: 1.2 Khảo sát hệ thống: Qua quá trình khảo sát hệ thống một số thông tin tôi đã thu thập được như sau: Quy mô: Đó là 1 toà nhà 2 tầng, mỗi tầng 50m2, nằm tại một khu đông dân cư. Trang thiết bị: Gồm 2 máy tính (1 máy trạm ở tầng dưới và 1 máy chủ ở tầng trên ) Phần mềm : Hiện tại cửa hàng chỉ dung PM văn phòng Excel để hỗ trợ việc quản lý và bán hàng. Nguồn nhân lực: Hiện tại cửa hàng có 6 nhân viên, trong đó có 4 nhân viên bán hang và nhân viên kế toán, và 1 người quản lý. Doanh thu: Cửa hàng hiện kinh doanh hơn 100 loại thuốc và có doanh thu khoảng 200 triệu VND/tháng 1.3 Sơ đồ chức năng Cửa hàng thuốc được quản lý qua các phân hệ nhỏ là bán hàng, mua hàng, xử lý kho thuốc, xử lý tổng hợp, thống kê báo cáo.(chúng ta có thể xem sơ đồ sau để nắm rõ hơn ) 1.4 Phân tích yêu cầu người sử dụng: Yêu cầu cập nhật nhanh, chính xác, cụ thể, lên được báo cáo theo mong muốn và cảnh báo thuốc sắp tới hạn.Như vậy khách hàng yêu cầu một PM với DM thuốc rõ rang, dễ hiểu, chức năng lên báo cáo linh hoạt theo kỳ, và PM có chức năng cảnh báo thuốc sắp tới hạn. 1.5 Mô tả hoạt động của hệ thống: 1.5.1 Sơ đồ ngữ cảnh: Đầu tiên khách hàng sẽ gửi yêu cầu mua đến cửa hàng, nếu yêu cầu được chấp nhận thì thuốc sẽ được bán và khách hàng sẽ nhận phiếu thanh toán từ cửa hàng. Cửa hàng thuốc có đơn đặt hàng gửi nhà cung cấp, khi đó danh mục thuốc của nhà cung cấp sẽ được gửi tới cửa hàng , cửa hàng xem xét danh mục , đưa ra đơn đặt hàng cuối cùng. Công việc cuối là thanh toán và nhận hoá đơn nhập. Trong quá trình hoạt động các báo cáo được lập và được gửi tới ban giám đốc cửa hàng theo yêu cầu. 1.5.2 Sơ đồ DFD mức 0 : Khách hàng gửi yêu cầu mua hàng tơi bộ phận bán hàng, bộ phận này sẽ gửi phiếu xuất tới kho dữ liệu hàng xuất, thông tin hàng xuất sẽ được gửi tới BP xử lý kho hàng, nếu trong kho còn hàng thì hàng sẽ xuất kho và được gửi cho khách hàng, KH nhận hoá đơn rồi thanh toán. Bộ phận mua hàng sẽ chịu trách nhiệm lập phiếu mua hàng của cửa hàng khi nhân được yêu cầu từ khách hàng hoặc thông tin từ kho hàng. BP mua hàng có đơn đặt hàng gửi nhà cung cấp, khi đó danh mục thuốc của nhà cung cấp sẽ được gửi tới cửa hàng , cửa hàng xem xét danh mục , đưa ra đơn đặt hàng cuối cùng. Công việc cuối là thanh toán và nhận hoá đơn nhập. Một phiếu nhập sẽ được BP mua hàng gửi tới kho dữ liệu hàng nhập. Trong quá trình bán không tránh khỏi viêc ứ đọng thuốc. Do đó BP xử lý thuốc sắp tới hạn sẽ làm nhiệm vụ lấy các thông tin về hạn sử dụng từ BP xử lý kho hàng, lên danh mục giảm giá và các chế độ khuyên mại gửi tới khách hàng, gửi danh mục thuốc tới đại lý để được hỗ trợ, lập báo cáo gửi BGĐ, và chuyển các thông tin đã xử lý tới BP thống kê báo cáo để lên BC tổng hợp. BP thống kê thu thâp thông tin từ BP xử lý kho hàng và BP Trong trường hợp hàng hoá bị trả lại thì BP bán hàng sẽ xem xét và chuyển vấn đề cho BP kiểm tra. Nếu lỗi do cửa hàng thì KH sẽ nhận lại toàn bộ số tiền đã mua. 1.5.3 Sơ đồ DFD mức 1( Bán hàng ) 1.5.4 Sơ đồ DFD mức 1( mua hàng) 1.5.5 Sơ đồ DFD mức 1(Xử lý kho hàng) 1.5.6 Sơ đồ DFD mức 1( Xử lý thuốc sắp tới hạn) 1.5.7 Sơ đồ DFD mức 1(Thống kê báo cáo) II. Vấn đề và giải pháp 2.1.Vấn đề Sau khi nghiên cứu nghiệp vụ hiệu thuốc, tôi đã xác định được các vấn đề cần phải được giải quyết trong phần mềm như sau: * Các nghiệp vụ bán và mua thuốc, bao gồm việc nhập thuốc vào kho từ phía các nhà cung cấp và bán thuốc cho khách hàng. * Các nghiệp vụ xử lý kho thuốc, bao gồm các hoạt động nhập kho, xuất kho, xử lý hàng tồn kho,…. * Các nghiệp vụ để quản lý thuốc tới hạn. Thuốc tới hạn là thuốc sắp hết hạn sử dụng. Việc quản lý thuốc tới hạn nhằm thông báo kịp thời cho nhà thuốc các loại thuốc sắp hết hạn sử dụng là thuốc gì, với số lượng bao nhiêu,… để nhà thuốc kịp thời đưa ra phương án xử lý trước khi nó hết hạn sử dụng. * Lập các thống kê báo cáo, như danh mục thuốc nhập trong kỳ, doanh thu. 2.2. Giải pháp Với những vấn đề đã nêu ra như trên, phương hướng giải quyết cho phần mềm như sau: Phần mềm sẽ có những chức năng chính sau đây: Chức năng bán thuốc: bao gồm các công việc nhận xử lý đơn thuốc, kiểm tra thuốc, cập nhật hàng xuất và quản lý hàng bị trả lại. Chức năng mua thuốc: bao gồm các hoạt động cập nhật danh mục thuốc, kiểm tra thuốc theo danh mục và cập nhật hàng nhập. Chức năng xử lý kho thuốc: gồm các hoạt động kiểm tra hàng xuất, nhập, tổng hợp kho hàng và đưa ra cảnh báo với những thuốc sắp hết trong kho, cần phải nhập thêm. Chức năng quản lý thuốc tới hạn: đưa ra danh sách thuốc sắp hết hạn, số lượng còn lại,… và đưa ra biện pháp xử lý đối với những thuốc đó. Chức năng lập thống kê báo cáo: bao gồm các hoạt động truy xuất dữ liệu từ cơ sở dữ liệu của phần mềm, tính toán tổng hợp và đưa ra các báo cáo hợp lý như báo cáo doanh thu, báo cáo xuất nhập, báo cáo tồn kho,…. Sơ đồ chức năng QUẢN LÝ BÁN THUỐC Bán hàng Mua hàng Quản lý Thuốc tới hạn Thống kê báo cáo Xử lý kho thuốc Nhận xử lý đơn thuốc KTra thuốc Cập nhật hàng xuất Quản lý hàng trả lại Cập nhật danh mục thuốc Kiểm tra thuốc theo danh mục Cập nhật hàng nhập Lên danh sách thuốc sắp hết hạn Biện pháp xử lý Truy xuất dữ liệu Tính toán tổng hợp Chuẩn bị báo cáo Kiểm tra hàng xuất KT hàng nhập Tổng hợp kho hàng Cảnh báo lượng thuốc sắp hết III. Thiết kế hệ thống Sau khi đã xác định những tính năng cơ bản mà phần mềm bán thuốc cần phải có, các thiết kế kỹ thuật được đưa ra bao gồm: Thiết kế kiến trúc Phần mềm sẽ bao gồm các phân hệ: quản lý hệ thống, mua hàng, bán hàng, quản lý kho, quản lý thuốc tới hạn, lập thống kê báo cáo. Quản lý bán thuốc Quản lý hệ thống Mua hàng Bán hàng Quản lý kho Quản lý thuốc tới hạn Thống kê báo cáo Thiết kế dữ liệu Dữ liệu của phần mềm bao gồm: danh mục thuốc, danh mục khách hàng, danh mục nhà cung cấp, danh mục nhân viên, hóa đơn mua thuốc, hóa đơn bán thuốc và danh mục đối tượng. Cụ thể như sau: 3.2.1. Sơ đồ cấu trúc dữ liệu 3.2.2 Danh mục thuốc STT Tên trường Độ rộng Kiểu Diễn giải 1 MaThuoc 10 Text Mã thuốc 2 TenThuoc 30 Text Tên thuốc 3 ViTri 6 Text Vị trí 4 DVT 5 Text Đơn vị tính 5 DonGia 10 Text Đơn giá 6 NgaySX Date/Time Ngày sản xuất 7 NgayHetHan Date/Time Ngày hết hạn 8 NoiSX 50 Text Nơi sản xuất 3.2.3 Danh mục khách hàng STT Tên trường Độ rộng Kiểu Diễn giải 1 MaKH 10 Text Mã khách hàng 2 TenKH 30 Text Tên khách hàng 3 DiaChi 50 Text Địa chỉ 4 MaSoThue 15 Text Mã số thuế 3.2.4 Danh mục nhà cung cấp 3.2.5 Danh mục nhân viên 3.2.6 Hóa đơn mua thuốc 3.2.7 Hóa đơn bán thuốc 3.2.8 Danh mục đối tượng 3.3 Thiết kế sơ đồ khối Với nhiều bản ghi khác nhau, tôi đã thiết kế rất nhiều sơ đồ khối liên quan đến các hoạt động của phần mềm. Dưới đây tôi chỉ nêu sơ đồ khối của hoạt động đăng nhập hệ thống và hoạt động thêm bản ghi .1 Sơ đồ đăng nhập Bắt đầu Nhập tên NSD Kiểm tra tên i:=1 Nhập mật khẩu Kiểm tra MK Thông báo sai MK Thoát khỏi chương trình i<=3 Kết thúc Vào trang mặc định S Đ Đ i:=i+1 S S Đ 3.3.2 Sơ đồ thêm bản ghi 3.3.3 Thuật toán xuất báo cáo IV. Các giao diện chính của chương trình 4.1 Form đăng nhập Giao diện chính của chương trình 4.3 Danh mục thuốc 4.4 Danh mục đối tượng 4.5 Danh mục nhà cung cấp 4.6 Phiếu nhập thuốc 4.7 Đơn thuốc 4.8 Tra cứu thuốc 4.9 Tra cứu theo nhà cung cấp 4.10 Form báo cáo thuốc nhập 4.11 Form báo cáo thuốc xuất Form báo tiền nhập thuốc 4.13 Báo cáo thuốc xuất 4.14 Báo cáo thuốc nhập 4.15 Báo cáo tiền nhập thuốc 4.16 Báo cáo xuất nhập tồn KẾT LUẬN Hệ thống thông tin quản lý bán thuốc có một vai trò quan trọng trong hoạt động kinh doanh của bất kỳ một hiệu thuốc nào dù quy mô lớn hay nhỏ và đặc biệt quan trọng đối với hiệu thuốc lớn như hiệu thuốc Long Tâm-Hà Nội .Nó là một khâu quan trọng trong quá trình kinh doanh của các hiệu thuốc và nó góp phần vào sự phát triển của các hiệu thuốc không chỉ trong giai đoạn hiện tại và cả trong tương lai. Trong thời gian thực tập e đã xây dựng đuợc phần mềm quản lý thuốc hiệu thuốc Long Tâm – Hà Nội có các chức năng quản lý được danh mục nhân viên, danh mục nhà cung cấp, danh mục thuốc, phiếu nhập thuốc, đơn thuốc … từ đó lên được các báo cáo về lượng thuốc xuất, lượng thuốc nhập, tiền nhập thuốc, lượng thuốc tồn đầu kỳ. Trong thời gian tới e có định hướng xây dựng thêm chức năng chiết khấu thanh toán, giảm giá hang bán cho những cá nhân, hay đơn vị mua thuốc với số lượng lớn. Qua đây em cũng đã học hỏi được nhiều điều trong cách tư duy và trình bày vấn đề. Tuy nhiên, do còn thiếu kinh nghiệm và thời gian có hạn nên chương trình còn có những hạn chế nhất định: chưa có tính chuyên nghiệp cao, chưa giải quyết được trọn vẹn những vấn đề nảy sinh trong công tác quản lý,thuật toán ở đây có thể còn chưa tối ưu dẫn đến giải quyết vấn đề chưa thấu đáo...nhưng chương trình cũng đã giải quyết được một phần yêu cầu của quản lý .Trong giai đoạn tới em sẽ dựa trên những ý kiến nhận xét của các thầy cô giáo để hoàn thành tốt hơn đề tài này. Em xin chân thành cảm ơn Th.s Nguyễn Anh Phương và giám đốc Lê Cảnh Toàn đã giúp đỡ e rất nhiều trong quá trình thực tập và thực hiện Đề Án. DANH MỤC TÀI LIỆU THAM KHẢO Ngôn ngữ và ứng dụng Visual Basic 6.0 Nhà xuất bản phương đông2006 Ví dụ và bài tập Visual Basic 6.0 Nhà xuất bản Lao động xã hội 2006 3 Cơ Sở Dữ Liệu 1 và 2 Trần Công Uẩn – Nhà xuất bản Thống Kê 4 Hệ Thống thông tin quản lý T.S Trương Văn Tú –T.S Trần Thị Song Minh- Nhà xuất bảnThống Kê 5 Cấu trúc Dữ Liệu và Giải Thuật PGS.TS Hàn Viết Thuận – Nhà xuất bản thống kê Tự học Visual Basic 6.0 trong 21 ngày Nhà xuất bản Thống Kê 7 Tự học Microfsoft Access 2000 Nhà xuất bản Thống Kê 8 Trang http:\\ vovisoft.com 9 Bài giảng Công nghệ phần mềm của PGS TS Hàn Viết Thuận. Phụ Lục Một số đoạn Code của chương trình Báo cáo thuốc xuất Private Sub cmdin_Click() Dim str As String Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset If thoidiem.Value = True Then str = "SELECT DMThuoc.TenThuoc, Sum((ChiTietDon.SoLuong*donthuoc.sothang)/1000) AS tsl, DonThuoc.Ngay, ChiTietDon.MaThuoc,dmthuoc.dvt FROM DMThuoc INNER JOIN (ChiTietDon INNER JOIN DonThuoc ON ChiTietDon.SoDon=DonThuoc.SoDon) ON DMThuoc.MaThuoc=ChiTietDon.MaThuoc GROUP BY DMThuoc.TenThuoc, DonThuoc.Ngay, ChiTietDon.MaThuoc, dmthuoc.dvt HAVING (DonThuoc.Ngay=#" & doingay(Ngay.Text) & "#)" rs.Open str, cn, adOpenKeyset, adLockOptimistic, adCmdText If rs.EOF Then MsgBox " Khong tim thay ban ghi thoa man", vbOKOnly + vbExclamation, "Thong bao" Else DataEnvironment2.Commands(8).CommandText = str If DataEnvironment2.rsTHUOCNGAY1.State = 0 Then DataEnvironment2.rsTHUOCNGAY1.Open End If DataEnvironment2.rsTHUOCNGAY1.Requery R_THUOCNGAY.Sections("section4").Controls.Item("ngay").Caption = Me.Ngay R_THUOCNGAY.Show 1 End If End If If thoiky.Value = True Then DataEnvironment2.xuatkhoang (Trim(tungay)), (Trim(denngay)) R_XUATKHOANG.Sections("section4").Controls.Item("tungay").Caption = Me.tungay R_XUATKHOANG.Sections("section4").Controls.Item("denngay").Caption = Me.denngay R_XUATKHOANG.Show 1 DataEnvironment2.rsxuatkhoang.Close End If End Sub Private Sub cmdthoat_Click() Unload Me End Sub Private Sub denngay_GotFocus() denngay.BackColor = &HC0E0FF End Sub Private Sub denngay_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 cmdin.SetFocus End Select End Sub Private Sub denngay_LostFocus() denngay.BackColor = &HFFFFFF denngay = Trim(denngay) End Sub Private Sub Form_Load() 'tungay.SetFocus 'open_mdb End Sub Private Sub Ngay_GotFocus() Ngay.BackColor = &HC0E0FF End Sub Private Sub Ngay_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 cmdin.SetFocus End Select End Sub Private Sub Ngay_LostFocus() Ngay.BackColor = &HFFFFFF Ngay = Trim(Ngay) End Sub Private Sub thoidiem_Click() If thoidiem.Value = True Then tungay.Enabled = False denngay.Enabled = False 'Ngay.SetFocus End If End Sub Private Sub thoiky_Click() If thoiky.Value = True Then Ngay.Enabled = False tungay.SetFocus End If End Sub Private Sub tungay_GotFocus() tungay.BackColor = &HC0E0FF End Sub Private Sub tungay_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 denngay.SetFocus End Select End Sub Private Sub tungay_LostFocus() tungay.BackColor = &HFFFFFF tungay = Trim(tungay) End Sub Báo cáo thuốc nhập Private Sub cmdthoat_Click() Unload Me End Sub Private Sub cmdxem_Click() 'Dim str 'str = "SELECT PhieuNhapct.mathuoc,dmthuoc.tenthuoc, phieunhap.ngay,phieunhapct.dvt, Sum(phieunhapct.soluong) AS tsl FROM PhieuNhap,phieunhapct,dmthuoc where phieunhap.sopn=phieunhapct.sopn and phieunhapct.mathuoc=dmthuoc.mathuoc and phieunhap.ngay > #" & doingay(tungay.Text) & "# and phieunhap.ngay < #" & doingay(denngay.Text) & " # GROUP BY PhieuNhapct.mathuoc, phieunhap.ngay, phieunhapct.dvt,dmthuoc.tenthuoc" display_listview End Sub Private Sub denngay_GotFocus() denngay.BackColor = &HC0E0FF End Sub Private Sub denngay_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 cmdxem.SetFocus End Select End Sub Private Sub Form_Load() 'open_mdb tungay.Enabled = True denngay.Enabled = True ListView1.Enabled = False End Sub Private Sub cmdin_Click() Dim str str = "SELECT phieunhapct.mathuoc,dmthuoc.tenthuoc,sum(phieunhapct.soluong) as tsl,dmthuoc.dvt FROM DMThuoc INNER JOIN (PhieuNhap INNER JOIN PhieuNhapCT ON PhieuNhap.SoPN = PhieuNhapCT.SoPN) ON DMThuoc.MaThuoc = PhieuNhapCT.MaThuoc where phieunhap.ngay>=# " & doingay(tungay.Text) & " # and phieunhap.ngay<=# " & denngay.Text & " # group by phieunhapct.mathuoc,dmthuoc.tenthuoc,dmthuoc.dvt" DataEnvironment2.Commands(11).CommandText = str If DataEnvironment2.rsNHAPT.State = 0 Then DataEnvironment2.rsNHAPT.Open End If DataEnvironment2.rsNHAPT.Requery R_NHAPT.Sections("section4").Controls.Item("tungay").Caption = Me.tungay R_NHAPT.Sections("section4").Controls.Item("denngay").Caption = Me.denngay R_NHAPT.Show 1 End Sub Private Sub display_listview() Dim str Dim rr As ADODB.Recordset Set rr = New ADODB.Recordset Dim mm As ListItem ListView1.ListItems.Clear 'str = "SELECT PhieuNhapCT.MaThuoc, DMThuoc.TenThuoc, PhieuNhapCT.dvt, Sum(PhieuNhapCT.SoLuong) AS tsl, PhieuNhap.Ngay FROM DMThuoc INNER JOIN (PhieuNhap INNER JOIN PhieuNhapCT ON PhieuNhap.SoPN = PhieuNhapCT.SoPN) ON DMThuoc.MaThuoc = PhieuNhapCT.MaThuoc where month(phieunhap.ngay)='" & Trim(txtthang.Text) & "' GROUP BY PhieuNhapCT.MaThuoc, DMThuoc.TenThuoc, PhieuNhapCT.dvt, PhieuNhap.Ngay" 'str = " SELECT dmthuoc.tenthuoc,phieunhapct.dvt, Sum(phieunhapct.SoLuong) AS tsl From dmthuoc, phieunhapct, phieunhap Where dmthuoc.mathuoc = phieunhapct.mathuoc And phieunhap.sopn=phieunhapct.sopn And Month(phieunhap.ngay) =" + CStr(txtthang.Text) + " And Year(donthuoc.ngay) = Year(Date()) GROUP BY dmthuoc.tenthuoc, phieunhapct.dvt " 'str = "SELECT PhieuNhapct.mathuoc,dmthuoc.tenthuoc,phieunhap.ngay,phieunhapct.dvt, Sum(phieunhapct.soluong) AS tsl FROM phieunhapct,dmthuoc where phieunhap.mathuoc=dmthuoc.mathuoc and phieunhap.sopn=phieunhapct.sopn and phieunhap.ngay > #" & Trim(Tungay.Text) & "# and phieunhap.ngay < #" & Trim(denngay.Text) & "# GROUP BY PhieuNhapct.mathuoc, phieunhap.ngay,dmthuoc.tenthuoc,phieunhapct.dvt" str = "SELECT phieunhapct.mathuoc,dmthuoc.tenthuoc,sum(phieunhapct.soluong) as tsl,dmthuoc.dvt FROM DMThuoc INNER JOIN (PhieuNhap INNER JOIN PhieuNhapCT ON PhieuNhap.SoPN = PhieuNhapCT.SoPN) ON DMThuoc.MaThuoc = PhieuNhapCT.MaThuoc where phieunhap.ngay>=#" & doingay(tungay.Text) & " # and phieunhap.ngay<=#" & doingay(denngay.Text) & " # group by phieunhapct.mathuoc,dmthuoc.tenthuoc,dmthuoc.dvt" 'MsgBox str rr.Open str, cn, adOpenKeyset, adLockOptimistic, adCmdText If rr.EOF Then MsgBox "KHONG TIM THAY GIA TRI THOA MAN!.", vbOKCancel + vbExclamation, "Thong bao" Exit Sub Else While Not rr.EOF Set mm = ListView1.ListItems.Add(, , rr!tenthuoc) mm.SubItems(1) = rr!dvt mm.SubItems(2) = rr!tsl rr.MoveNext Wend End If End Sub Private Sub tungay_GotFocus() tungay.BackColor = &HC0E0FF End Sub Private Sub tungay_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 denngay.SetFocus End Select End Sub Private Sub tungay_LostFocus() tungay.BackColor = &HFFFFFF End Sub Báo cáo tiền nhập thuốc Private Sub cmdin_Click() Dim str 'str = "SELECT PhieuNhap.SoPN, phieunhap.nguoinhan, phieunhap.ngay, Sum([soluong]*[dongia]) AS ttien FROM PhieuNhap,phieunhapct where phieunhap.sopn=phieunhapct.sopn and month(phieunhap.ngay)=" + CStr(Text1.Text) + " and year(phieunhap.ngay)=year(date()) GROUP BY PhieuNhap.SoPN, phieunhap.nguoinhan, phieunhap.ngay" str = "SELECT PhieuNhap.SoPN, phieunhap.nguoinhan, phieunhap.ngay, Sum([soluong]*[dongia]) AS ttien FROM PhieuNhap,phieunhapct where phieunhap.sopn=phieunhapct.sopn and phieunhap.ngay > #" & doingay(text1.Text) & "# and phieunhap.ngay < #" & doingay(text2.Text) & "# GROUP BY PhieuNhap.SoPN, phieunhap.nguoinhan, phieunhap.ngay" 'str="SELECT PhieuNhapct.mathuoc,dmthuoc.tenthuoc, phieunhap.ngay,phieunhapct.dvt, Sum(phieunhapct.soluong) AS ttien FROM PhieuNhap,phieunhapct,dmthuoc where phieunhap.sopn=phieunhapct.sopn and phieunhapct.mathuoc=dmthuoc.mathuoc and phieunhap.ngay > # " & trim(t. # and phieunhap.ngay < #02/02/2006# GROUP BY PhieuNhapct.mathuoc, phieunhap.ngay, phieunhapct.dvt,dmthuoc.tenthuoc" DataEnvironment2.Commands(6).CommandText = str If DataEnvironment2.rsTIEN.State = 0 Then DataEnvironment2.rsTIEN.Open End If DataEnvironment2.rsTIEN.Requery R_TTIENPN.Sections("section2").Controls.Item("tungay").Caption = Me.text1 R_TTIENPN.Sections("section2").Controls.Item("denngay").Caption = Me.text2 R_TTIENPN.Show 1 End Sub Private Sub cmdthoat_Click() Unload Me End Sub Private Sub cmdxem_Click() If text1.Text = "" Or text2.Text = "" Then MsgBox "Ph¶i nhËp ®ñ d÷ liÖu tr­íc khi l­u", vbOKOnly + vbExclamation, "Th«ng b¸o" Else display_listview End If End Sub Private Sub Form_Load() 'open_mdb text1.Enabled = True ListView1.Enabled = True End Sub Private Sub display_listview() Dim str Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset Dim mm As ListItem ListView1.ListItems.Clear 'str = "SELECT PhieuNhap.SoPN, phieunhap.nguoinhan, Sum([soluong]*[dongia]) AS ttien FROM PhieuNhap,phieunhapct where phieunhap.sopn=phieunhapct.sopn and month(phieunhap.ngay)=" + CStr(Text1.Text) + " and year(phieunhap.ngay)=year(date()) GROUP BY PhieuNhap.SoPN, phieunhap.nguoinhan" str = "SELECT PhieuNhap.SoPN, phieunhap.nguoinhan,phieunhap.ngay, Sum([soluong]*[dongia]) AS ttien FROM PhieuNhap,phieunhapct where phieunhap.sopn=phieunhapct.sopn and phieunhap.ngay > #" & doingay(text1.Text) & "# and phieunhap.ngay< #" & doingay(text2.Text) & "# and year(phieunhap.ngay)=year(date()) GROUP BY PhieuNhap.SoPN, phieunhap.nguoinhan,phieunhap.ngay" rs.Open str, cn, adOpenKeyset, adLockOptimistic, adCmdText If rs.EOF Then MsgBox "Khong tim thay gia tri nao thoa man", vbOKOnly + vbExclamation, "Th«ng b¸o" Exit Sub Else While Not rs.EOF Set mm = ListView1.ListItems.Add(, , rs!sopn) mm.SubItems(1) = rs!Ngay mm.SubItems(2) = rs!ttien mm.SubItems(3) = rs!nguoinhan rs.MoveNext Wend End If rs.Close End Sub Private Sub Text1_GotFocus() text1.BackColor = &HC0E0FF End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 text2.SetFocus End Select End Sub Private Sub Text1_LostFocus() text1.BackColor = &HFFFFFF text1 = Trim(text1) End Sub Private Sub Text2_GotFocus() text2.BackColor = &HC0E0FF End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 cmdxem.SetFocus End Select End Sub Private Sub Text2_LostFocus() text2.BackColor = &HFFFFFF text2 = Trim(text2) End Sub Báo cáo thuốc xuất theo đối tượng Private Sub cmdin_Click() DataEnvironment2.thuoddt (Trim(dtcb1.Text)), (Trim(tungay)), (Trim(denngay)) R_THUOCDTUONG.Sections("section4").Controls.Item("tungay").Caption = Me.tungay R_THUOCDTUONG.Sections("section4").Controls.Item("denngay").Caption = Me.denngay R_THUOCDTUONG.Sections("section2").Controls.Item("ma").Caption = Me.dtcb1.Text R_THUOCDTUONG.Sections("section2").Controls.Item("ten").Caption = Me.Tendt.Caption R_THUOCDTUONG.Show 1 DataEnvironment2.rsthuoddt.Close End Sub Private Sub cmdthoat_Click() Unload Me End Sub Private Sub denngay_GotFocus() denngay.BackColor = &HC0E0FF End Sub Private Sub denngay_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 cmdin.SetFocus End Select End Sub Private Sub denngay_LostFocus() denngay.BackColor = &HFFFFFF denngay = Trim(denngay) End Sub Private Sub dtcb1_Change() If dtcb1.Text "" Then Dim rs As Recordset Dim mydb As Database Dim str As String Set mydb = OpenDatabase(App.Path + "\db1.mdb") str = "select tendt from dmdt where madt='" & Trim(dtcb1.Text) & "'" Set rs = mydb.OpenRecordset(str) If rs.RecordCount 0 Then Tendt.Caption = rs.Fields("tendt") Else Tendt.Caption = "Khong co" rs.Close mydb.Close End If End If End Sub Private Sub dtcb1_GotFocus() dtcb1.BackColor = &HC0E0FF End Sub Private Sub dtcb1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then tungay.SetFocus End If End Sub Private Sub dtcb1_LostFocus() Dim rs As Recordset Dim mydb As Database Dim str As String If dtcb1.Text "" Then Set mydb = OpenDatabase(App.Path + "\db1.mdb") str = "select tendt from dmdt where madt='" & Trim(dtcb1.Text) & "'" Set rs = mydb.OpenRecordset(str) If rs.RecordCount > 0 Then Tendt.Caption = rs.Fields("tendt") Else Tendt.Caption = "Khong co trong danh sach" dtcb1.Text = "" dtcb1.SetFocus End If rs.Close mydb.Close End If dtcb1.BackColor = &HFFFFFF End Sub Private Sub Form_Load() 'open_mdb End Sub Private Sub Label1_Click() End Sub Private Sub tungay_GotFocus() tungay.BackColor = &HC0E0FF End Sub Private Sub tungay_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 denngay.SetFocus End Select End Sub Private Sub tungay_LostFocus() tungay.BackColor = &HFFFFFF tungay = Trim(tungay) End Sub Báo cáo xuất nhập tồn Private Sub cmdin_Click() Dim str str = "SELECT chitietdon.MaThuoc, dmthuoc.TenThuoc, dmthuoc.dvt, Sum((chitietdon.soluong*donthuoc.sothang)/1000) AS tsl, donthuoc.Ngay From chitietdon, dmthuoc, donthuoc, dmnv Where ((donthuoc.sodon) = chitietdon.sodon) And ((chitietdon.mathuoc) = dmthuoc.mathuoc) And ((donthuoc.manv) = dmnv.manv) and donthuoc.manv= '" & Trim(dtcb1.Text) & "' and donthuoc.ngay > #" & doingay(tungay.Text) & " # and donthuoc.ngay< # " & doingay(denngay.Text) & " # GROUP BY chitietdon.MaThuoc, dmthuoc.TenThuoc, dmthuoc.dvt, donthuoc.Ngay,donthuoc.manv" DataEnvironment2.Commands(12).CommandText = str If DataEnvironment2.rsTHUOCKHOA.State = 0 Then DataEnvironment2.rsTHUOCKHOA.Open End If DataEnvironment2.rsTHUOCKHOA.Requery R_THUOCKHOA.Sections("section4").Controls.Item("lbltungay").Caption = Me.tungay R_THUOCKHOA.Sections("section4").Controls.Item("denngay").Caption = Me.denngay R_THUOCKHOA.Sections("section4").Controls.Item("khoa").Caption = Me.Label5.Caption R_THUOCKHOA.Show 1 End Sub Private Sub cmdthoat_Click() Unload Me End Sub Private Sub cmdxem_Click() If dtcb1.Text = "" Or tungay.Text = "" Or denngay.Text = "" Then MsgBox "Phai nhap du thong tin!", vbOKOnly + vbExclamation, "Thong bao" Else display_listview End If End Sub Private Sub display_listview() Dim str Dim mm As ListItem ListView1.ListItems.Clear Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset str = "SELECT chitietdon.MaThuoc, dmthuoc.TenThuoc, dmthuoc.dvt, Sum(chitietdon.soluong1000) AS tsl, donthuoc.Ngay From chitietdon, dmthuoc, donthuoc, dmnv Where (((donthuoc.sodon) = chitietdon.sodon) And ((chitietdon.mathuoc) = dmthuoc.mathuoc) And ((donthuoc.manv) = dmnv.manv) And ((donthuoc.ngay) > #" & doingay(tungay) & "# And (donthuoc.ngay) < #" & doingay(denngay) & "#)) And dmnv.manv = '" & Trim(dtcb1.Text) & "' GROUP BY chitietdon.MaThuoc, dmthuoc.TenThuoc, dmthuoc.dvt, donthuoc.Ngay;" rs.Open str, cn, adOpenKeyset, adLockOptimistic, adCmdText If rs.EOF Then MsgBox "Khong tim thay gia tri thoa man", vbOKOnly + vbExclamation, "Thong bao" Exit Sub Else While Not rs.EOF Set mm = ListView1.ListItems.Add(, , rs!mathuoc) mm.SubItems(1) = rs!tenthuoc mm.SubItems(2) = rs!dvt mm.SubItems(3) = rs!tsl rs.MoveNext Wend rs.Close End If End Sub Private Sub denngay_GotFocus() denngay.BackColor = &HC0E0FF End Sub Private Sub denngay_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 cmdxem.SetFocus End Select End Sub Private Sub denngay_LostFocus() denngay.BackColor = &HFFFFFF denngay = Trim(denngay) End Sub Private Sub dtcb1_Change() If dtcb1.Text "" Then Dim rs As Recordset Dim mydb As Database Dim str As String Set mydb = OpenDatabase(App.Path + "\db1.mdb") str = "select khoa from dmnv where manv='" & Trim(dtcb1.Text) & "'" Set rs = mydb.OpenRecordset(str) If rs.RecordCount 0 Then Label5.Caption = rs.Fields("khoa") Else Label5.Caption = "Khong co" rs.Close mydb.Close End If End If End Sub Private Sub dtcb1_GotFocus() dtcb1.BackColor = &HC0E0FF End Sub Private Sub dtcb1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then tungay.SetFocus End If End Sub Private Sub dtcb1_LostFocus() Dim rs As Recordset Dim mydb As Database Dim str As String If dtcb1.Text "" Then Set mydb = OpenDatabase(App.Path + "\db1.mdb") str = "select khoa from dmnv where manv='" & Trim(dtcb1.Text) & "'" Set rs = mydb.OpenRecordset(str) If rs.RecordCount > 0 Then Label5.Caption = rs.Fields("khoa") Else Label5.Caption = "Khong co trong danh sach" dtcb1.Text = "" dtcb1.SetFocus End If rs.Close mydb.Close End If dtcb1.BackColor = &HFFFFFF End Sub Private Sub Form_Load() 'open_mdb dtcb1.Enabled = True tungay.Enabled = True denngay.Enabled = True ListView1.Enabled = False End Sub Private Sub tungay_GotFocus() tungay.BackColor = &HC0E0FF End Sub Private Sub tungay_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 denngay.SetFocus End Select End Sub Private Sub tungay_LostFocus() tungay.BackColor = &HFFFFFF tungay = Trim(tungay) End Sub Báo cáo tiền thuốc nhập Private Sub cmdin_Click() Dim str 'str = "SELECT PhieuNhap.SoPN, phieunhap.nguoinhan, phieunhap.ngay, Sum([soluong]*[dongia]) AS ttien FROM PhieuNhap,phieunhapct where phieunhap.sopn=phieunhapct.sopn and month(phieunhap.ngay)=" + CStr(Text1.Text) + " and year(phieunhap.ngay)=year(date()) GROUP BY PhieuNhap.SoPN, phieunhap.nguoinhan, phieunhap.ngay" str = "SELECT PhieuNhap.SoPN, phieunhap.nguoinhan, phieunhap.ngay, Sum([soluong]*[dongia]) AS ttien FROM PhieuNhap,phieunhapct where phieunhap.sopn=phieunhapct.sopn and phieunhap.ngay > #" & doingay(text1.Text) & "# and phieunhap.ngay < #" & doingay(text2.Text) & "# GROUP BY PhieuNhap.SoPN, phieunhap.nguoinhan, phieunhap.ngay" 'str="SELECT PhieuNhapct.mathuoc,dmthuoc.tenthuoc, phieunhap.ngay,phieunhapct.dvt, Sum(phieunhapct.soluong) AS ttien FROM PhieuNhap,phieunhapct,dmthuoc where phieunhap.sopn=phieunhapct.sopn and phieunhapct.mathuoc=dmthuoc.mathuoc and phieunhap.ngay > # " & trim(t. # and phieunhap.ngay < #02/02/2006# GROUP BY PhieuNhapct.mathuoc, phieunhap.ngay, phieunhapct.dvt,dmthuoc.tenthuoc" DataEnvironment2.Commands(6).CommandText = str If DataEnvironment2.rsTIEN.State = 0 Then DataEnvironment2.rsTIEN.Open End If DataEnvironment2.rsTIEN.Requery R_TTIENPN.Sections("section2").Controls.Item("tungay").Caption = Me.text1 R_TTIENPN.Sections("section2").Controls.Item("denngay").Caption = Me.text2 R_TTIENPN.Show 1 End Sub Private Sub cmdthoat_Click() Unload Me End Sub Private Sub cmdxem_Click() If text1.Text = "" Or text2.Text = "" Then MsgBox "Ph¶i nhËp ®ñ d÷ liÖu tr­íc khi l­u", vbOKOnly + vbExclamation, "Th«ng b¸o" Else display_listview End If End Sub Private Sub Form_Load() 'open_mdb text1.Enabled = True ListView1.Enabled = True End Sub Private Sub display_listview() Dim str Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset Dim mm As ListItem ListView1.ListItems.Clear 'str = "SELECT PhieuNhap.SoPN, phieunhap.nguoinhan, Sum([soluong]*[dongia]) AS ttien FROM PhieuNhap,phieunhapct where phieunhap.sopn=phieunhapct.sopn and month(phieunhap.ngay)=" + CStr(Text1.Text) + " and year(phieunhap.ngay)=year(date()) GROUP BY PhieuNhap.SoPN, phieunhap.nguoinhan" str = "SELECT PhieuNhap.SoPN, phieunhap.nguoinhan,phieunhap.ngay, Sum([soluong]*[dongia]) AS ttien FROM PhieuNhap,phieunhapct where phieunhap.sopn=phieunhapct.sopn and phieunhap.ngay > #" & doingay(text1.Text) & "# and phieunhap.ngay< #" & doingay(text2.Text) & "# and year(phieunhap.ngay)=year(date()) GROUP BY PhieuNhap.SoPN, phieunhap.nguoinhan,phieunhap.ngay" rs.Open str, cn, adOpenKeyset, adLockOptimistic, adCmdText If rs.EOF Then MsgBox "Khong tim thay gia tri nao thoa man", vbOKOnly + vbExclamation, "Th«ng b¸o" Exit Sub Else While Not rs.EOF Set mm = ListView1.ListItems.Add(, , rs!sopn) mm.SubItems(1) = rs!Ngay mm.SubItems(2) = rs!ttien mm.SubItems(3) = rs!nguoinhan rs.MoveNext Wend End If rs.Close End Sub Private Sub Text1_GotFocus() text1.BackColor = &HC0E0FF End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 text2.SetFocus End Select End Sub Private Sub Text1_LostFocus() text1.BackColor = &HFFFFFF text1 = Trim(text1) End Sub Private Sub Text2_GotFocus() text2.BackColor = &HC0E0FF End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 cmdxem.SetFocus End Select End Sub Private Sub Text2_LostFocus() text2.BackColor = &HFFFFFF text2 = Trim(text2) End Sub Báo cáo tồn kho Dim tn, dn As Date Private Sub cmdin_Click() If optall.Value = True Then DataEnvironment2.tk (Trim(tungay)), (Trim(denngay)) R_TK.Sections("section4").Controls.Item("tungay").Caption = Me.tungay R_TK.Sections("section4").Controls.Item("denngay").Caption = Me.denngay R_TK.Show 1 DataEnvironment2.rstk.Close End If If optthuoc.Value = True Then DataEnvironment2.thekho (Trim(dtcbma.Text)), (Trim(tungay)), (Trim(denngay)) R_THEKHO.Sections("section4").Controls.Item("tungay").Caption = Me.tungay R_THEKHO.Sections("section4").Controls.Item("denngay").Caption = Me.denngay R_THEKHO.Show 1 DataEnvironment2.rsthekho.Close End If End Sub Private Sub cmdthoat_Click() Unload Me End Sub Private Sub dtcbma_Change() If dtcbma.Text "" Then Dim rs As Recordset Dim mydb As Database Dim str As String Set mydb = OpenDatabase(App.Path + "\db1.mdb") str = "select tenthuoc from dmthuoc where mathuoc='" & Trim(dtcbma.Text) & "'" Set rs = mydb.OpenRecordset(str) If rs.RecordCount 0 Then tenthuoc.Caption = rs.Fields("tenthuoc") Else tenthuoc.Caption = "Khong co" rs.Close mydb.Close End If End If End Sub Private Sub dtcbma_GotFocus() dtcbma.BackColor = &HC0E0FF End Sub Private Sub dtcbma_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then tungay.SetFocus End If End Sub Private Sub dtcbma_LostFocus() Dim rs As Recordset Dim mydb As Database Dim str As String If dtcbma.Text "" Then Set mydb = OpenDatabase(App.Path + "\db1.mdb") str = "select tenthuoc from dmthuoc where mathuoc='" & Trim(dtcbma.Text) & "'" Set rs = mydb.OpenRecordset(str) If rs.RecordCount > 0 Then tenthuoc.Caption = rs.Fields("tenthuoc") Else tenthuoc.Caption = "Khong co trong danh sach" dtcbma.Text = "" dtcbma.SetFocus End If rs.Close mydb.Close End If dtcbma.BackColor = &HFFFFFF End Sub Private Sub Form_Load() 'open_mdb dtcbma.Enabled = True tungay.Enabled = True denngay.Enabled = True End Sub Private Sub denngay_GotFocus() denngay.BackColor = &HC0E0FF End Sub Private Sub denngay_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 cmdin.SetFocus End Select End Sub Private Sub tungay_GotFocus() tungay.BackColor = &HC0E0FF End Sub Private Sub tungay_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case 13 denngay.SetFocus End Select End Sub Private Sub tungay_LostFocus() tungay.BackColor = &HFFFFFF tungay = Trim(tungay) End Sub Private Sub optall_Click() dtcbma.Enabled = False tungay.SetFocus End Sub Private Sub optthuoc_Click() dtcbma.Enabled = True tungay.Enabled = True tungay.Enabled = True End Sub MỤC LỤC

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

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