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.
80 trang |
Chia sẻ: oanh_nt | Lượt xem: 1354 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Chuyên đề Xây dựng phần mêm quản lý 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 lu", 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 lu", 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:
- 37228.doc