Xây dựng phần mềm quản lý thuốc cho công ty Cổ phần Dược phẩm Nam Hà

Xây dựng phần mềm quản lý thuốc cho công ty Cổ phần Dược phẩm Nam Hà Hiện nay, công nghệ thông tin phát triển rất nhanh chóng việc ứng dụng nó vào công tác quản lý trong các tổ chức và doanh nghiệp đã trở nên hết sức phổ biến. Cũng như các doanh nghiệp khác, doanh nghiệp kinh doanh mặt hang thuốc cũng rất cần các phần mềm quản lý cho doanh nghiệp mình để nhằm mục tiêu nâng cao khả năng quản lý, khả năng ra quyết định nhanh chóng và kịp thời nhằm chớp được cơ hội xuất hiện trên thị trường, để đưa doanh nghiệp của mình phát triển và dành thắng lợi trước sức ép cạnh tranh ngày càng gay gắt. Như hiện nay các phần mềm về quản lý thuốc còn ít hoặc thiếu tính đặc thù cho doanh nghiệp kinh doanh mặt hang thuốc. Ngày nay trên thế giới công nghệ thông tin đang phát triển hết sức mạnh mẽ, nó đang có ứng dụng sâu sắc vào hầu hết các mặt của đời sống xã hội đặc biệt trong công tác quản lý. Đã có rất nhiều phone mom quản lý lĩnh vực khác nhau nhưng các phone mom giúp cho việc quản lý thuốc ở nước ta hiện nay vẫn còn hạn chế do tính đặc thù của các doanh nghiệp kinh doanh mặt hàng trên. Việc đưa tin học hóa đã giúp cho con người có những sự phát triển vượt bậc trong công việc quản lý thuốc. Trong những năm gần đây việc ứng dụng công nghệ thông tin vào trong công tác quản lý đang ngày càng tạo ra các phương thức quản lý tiên tiến, tận dụng được tối đa các nguồn lực sẵn có, tiết kiệm tối đa các nguồn lực, chi phí nhưng vẫn đảm bảo được kết quả tốt nhất. Trong quá trình thực tập tại công ty Tân thế kỷ em đã được giao xây dựng phần mềm quản lý thuốc của công ty Cổ phần dược phẩm Nam Hà, chương trình tuy lập trình bằng ngôn ngữ Visual Basic 6.0 và hệ cơ sở dữ liệu Access đã giải quyết được phần nào công việc quản lý thuốc cho nhân viên phòng dự án, giúp tiết kiệm được thời gian và chi phí quản lý thuốc của công ty cổ phone dược phẩm Nam Hà. Kết cấu đề tài: Chương I: Tổng quan về Công ty cổ phần giải pháp phần mềm TânThế Kỷ và chuyên đề thực tập tốt nghiệp Chương II: Các vấn đề cơ bản trong hệ thống thông tin quản lý thuốc Chương III: Phân tích thiết kế hệ thống thông tin

doc91 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2534 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Xây dựng phần mềm quản lý thuốc cho công ty Cổ phần Dược phẩm Nam Hà, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hình logic Xác định các kỹ thuật hợp lệ hóa dữ liệu nhập vào hệ thống Có hướng dẫn nhập liệu. Kiểm soát quy cách. Miền giá trị. Phân nhóm ký tự dữ liệu nhập. Kiểm tra logic nội tại. Lấy từ một danh sách có sẵn. Dùng số liệu thống kê để thông báo. Hợp lý về mặt văn cảnh. Xác thực tài liệu gốc. In ra, kiểm tra xác nhận sự thống nhất dữ liệu đó nhập vào dữ liệu in ra. Hợp lệ hóa mô hình logic Chuẩn bị và trình bày báo cáo về mô hình logic. Quyết định thông báo mô hình logic: sản phẩm của giai đoạn thiết kế logic. Sơ đồ DSD tổng thể cho HTTT. Kết quả phân tích tra cứu cho tất cả các đầu ra của HTTT. Bảng sự kiện cập nhật. Bảng báo cáo về mô hình này. Quyết định chấp nhận mô hình logic đó đưa ra. Giai đoạn 4: Đề xuất phương án của giải pháp Mục đích Dự án sau khi đó được chấp nhận , phân tích viên phải trình bày một số phương án để nhà quản lý lựa chọn sao cho tính đến việc tối ưu hệ thống theo thời gian. Đồng thời phác họa HTTT nhận thấy được. . Cách thức xây dựng phương án Xác định các ràng buộc Ràng buộc về mặt tổ chức. Ràng buộc về mặt kỹ thuật tin học Các bước xây dựng phương án Bước 1: xác định biên giới cho phần tin học hóa của HTTT. Sử dụng sơ đồ DFD (mức 1 hoặc mức 2). Với các đường biên giới khác nhau có phương án ban đầu khác nhau. Bước 2: xác định phương thức xử lý. Sau khi phân tích viên xác định cách thức xử lý nghĩa là phải lựa chọn cách thức xử lý, thời gian thực hay hỗn hợp. Đồng thời phân tích viên phải quyết định lựa chọn các thiết bị ngoại vi để nhập dữ liệu và đưa kết quả ra, quyết định về mức tập trung của xử lý. Bước 3: viết chi tiết dự án cho từng phương án c. Đánh giá các phương án của giải pháp Phân tích chi phí/lợi ích: chi phí /lợi ích có thể phân loại theo những cách sau Phân tích đa tiêu chuẩn: phương pháp phân tích đa tiêu chuẩn được thực hiện như sau Giai đoạn 5: Thiết kế vật lý ngoài . Mục tiêu Mô tả chi tiết các yếu tố nhận thấy được của HTTT như phần cứng, giao diện, báo cáo… Tăng độ sử dụng, dễ hiểu. Giảm sự mệt mỏi khi thao tác với hệ thống. Lập kế hoạch thiết kế vật lý ngoài Phân tích viên phải lựa chọn phương tiện, khuôn dạng của các dòng vào/ra, xác định cách thức hội thoại với phần tin học hóa của hệ thống và cách thức thực hiện các thủ tục thủ công. Phân bố thời gian và lập danh mục các sản phẩm. c. Thiết kế chi tiết vào/ra Thiết kế vật lý các đầu ra Thiết kế vật lý các đầu ra có hai nhiệm vụ: lựa chọn vật mang tin và sắp đặt các thông tin trên đầu ra. Lựa chọn vật mang tin: có 4 vật mang tin chính được sử dụng để trình bày thông tin đó là giấy, màn hình, tiếng nói và các thiết bị nhớ. Bố trí thông tin trên vật mang: sau khi xác định được vật mang, thiết kế viên phải lựa chọn cách bố trớ thông tin sao cho nó thể hiện tốt nhất nội dung của thông tin vì khuụn dạng của thông tin phụ thuộc vào vật mang. Việc tạo ra một đầu ra vừa ý và giúp đỡ người sử dụng hoàn thành công việc của họ một cách có hiệu quả là một công việc mang tính nghệ thuật nhiều hơn là khoa học. Tuy nhiên vẫn có những quy tắc cơ bản cho việc phân bố thông tin trên các đầu ra. Thiết kế vào Phương tiện nhập Nhập từ văn bản gốc qua bàn phím và màn hình. Nhập trực tiếp qua bàn phím màn hình. Thiết bị tự động. Nguyên tắc Nếu nhập tài liệu từ tài liệu gốc thì giống như tài liệu gốc. Trật tự hợp lý. Không nhập những thông tin có thể tính toán được. Đối với ô nhập hoặc trường nhập, tên của trường nhập phải ở bên trái hoặc ở bên trên. Giá trị ngầm định của trường nhập phải được sự đồng ý của nhà quản lý hoặc người sử dụng. Phải làm rõ việc chuyển trường, xuống dòng. Thiết kế cách thức giao tác với phần tin học hóa Thiết kê giao tác thông qua lệnh. Thiết kế giao tác thông qua các phím đặc biệt. Thiết kế giao tác thông qua thực đơn. Thiết kế giao tác thông qua biểu tượng. Giai đoạn 6: Triển khai kỹ thuật hệ thống Mục tiêu: xây dựng một hệ thống hoạt động tốt. b. Lập kế hoạch thực hiện Lựa chọn các công cụ cho hoạt động thiết kế vật lý trong còng như những hoạt động lập trình sau này. Phân phối công việc cho các thành viên, Xây dựng tiến trình thực hiện và chi phí còng như yêu cầu vật tư kỹ thuật cho giai đoạn triển khai hệ thống. c. Thiết kế vật lý trong Thiết kế CDSL vật lý trong CSDL đủ đảm bảo cho các thông tin đầu ra của hệ thống. CSDL đảm bảo tốc độ cung cấp thông tin. CSDL xem xét vấn đề lưu trữ trên bộ nhớ của hệ thống. CSDL tận dụng hờ thống Thiết kế sơ đồ liên kết module lập trình: module lập trình là phần chương trình máy tính mà chúng ta thiết kế để cho người lập trình bắt đầu thực hiện bằng viết lệnh. d. Lập trình Lập trình là quá trình chuyển đổi các đặc tả thiết kế vật lý của các nhà phân tích thành phần mềm máy tính do các lập trình viên đảm nhận. e. Thử nghiệm phần mềm Phân loại theo cách thử nghiệm: gồm có kỹ thuật thử nghiệm tĩnh và kỹ thuật thử nghiệm động. Phân loại theo công cụ thử nghiệm: gồm có kỹ thuật thủ công và kỹ thuật tự động. Một số kỹ thuật thử nghiệm chương trình Rà soát lỗi đặc trưng. Kỹ thuật kiểm tra logic. Kỹ thuật thử nghiệm thủ công. Kỹ thuật kiểm tra cú pháp bằng máy tính. Kỹ thuật thử nghiệm module. Kỹ thuật tích hợp. Thử nghiệm hệ thống. Kỹ thuật thử stub. f. Hoàn thiện tài liệu hệ thống Giới thiệu hệ thống. Hồ sơ thiết kế hệ thống. Tài liệu phần mềm, nguồn. Hướng dẫn sử dụng. Tra cứu. Sửa chữa háng húc. Kế hoạch đào tạo người sử dụng. Các module đào tạo và kế hoạch hỗ trợ người sử dụng. Giai đoạn 7: Cài đặt và khai thác Các phương pháp cài đặt hệ thống Cài đặt trực tiếp: theo phương pháp này, người ta dừng hoạt động của hệ thống cũ và đưa hệ thống mới vào sử dụng. Cài đặt song song: với phương pháp này thì cả hai hệ thống mới và cũ đều cùng hoạt động, cho tới khi có thể quyết định dừng hệ thống cũ lại. Cài đặt thí điểm cục bộ: đây là phương pháp dung hũa giữa cài đặt trực tiếp và cài đặt song song. Cài đặt cục bộ chỉ thực hiện chuyển đổi từ hệ thống cũ sang hệ thống mới cục bộ tại một hoặc một vài bộ phận. Chuyển đổi theo giai đoạn : đây là phương pháp chuyển đổi từ HTTT cũ sang hệ thống mới một cách dần dần, bắt đầu bằng một hay một vài modul và sau đó là mở rộng dần việc chuyển đổi sang toàn bộ hệ thống mới. b. Lập kế hoạch chuyển đổi Trình bày lý do lựa chọn phương pháp áp dụng. Lập kế hoạch chi tiết. Thông qua lãnh đạo. c. Chuyển đổi dữ liệu Các kho dữ liệu cần thiết đó có theo đúng các đặc trưng thiết kế, không cần phải chuẩn bị gì. Các kho dữ liệu đó tồn tại nhưng không đầy đủ và cấu trúc chưa phù hợp phải nhập thêm những dữ liệu mới chưa có trên máy và trích các dữ liệu có cấu trúc chưa phù hợp từ các tệp hay từ các CSDL, sửa và ghi lại vào CSDL của hệ thống. Các kho dữ liệu hoàn toàn chưa tồn tại thì phải tạo ra. d. Đào tạo và hỗ trợ người sử dụng Đào tạo người sử dụng HTTT. Hỗ trợ người sử dụng HTTT. e. Bảo trì HTTT Quy trình bảo trì Thu nhận yêu cầu bảo trì: qua thư từ, đi thăm khách hàng. Chuyển đổi yêu cầu. Thiết kế. Triển khai thay đổi. Bốn cấp bảo trì Hiệu chỉnh. Thích nghi. Hoàn thiện. Dự phòng. Ước tính chi phí bảo trì Sự ổn định của nền kinh tế. Quy mô của hệ thống. Chất lượng phân tích và thiết kế. Chất lượng đội ngũ cán bộ bảo trì và hỗ trợ hệ thống. Thời gian bảo trì. Quản lý bảo trì Về quản trị nhân sự: có nhiều kiểu cấu trúc tổ chức bảo trì khác nhau. Nhóm bảo trì làm việc tách rời nhóm phát triển hệ thống. Nhóm xây dựng hệ thống còng đảm đương luôn chức năng bảo trì. Người sử dụng cuối cùng tại các bộ phận chức năng sẽ đảm đương chức năng bảo trì. Về đo lường hiệu quả bảo trì hệ thống: cần phải đo những yếu tố sau số lượng lỗi, khoảng thời gian giữa các lỗi và kiểu lỗi. Về kiểm soát các yêu cầu bảo trì: cần xác định loại bảo trì. Về quản trị cấu hình: đảm bảo những thay đổi đó qua thẩm định mới được phép triển khai đối với hệ thống. f. Đánh giá sau cài đặt Đánh giá dự án: so sánh thời gian thực sự để có được hệ thống mới với thời gian dự kiến và xác định xem dự án có tuân thủ ngân sách đó xác định hay không. Việc này nhằm hai mục đích: quản lý nhân sự và rút kinh nghiệm cho việc quản lý các dự án thông tin về sau. Đánh giá hệ thống: xem xét hệ thống có đạt được các mục tiêu đó đề ra hay không. Điều này không thể thực hiện ngay sau khi cài đặt mà phải sau một thời gian khai thác nhất định. 1.3 Phân tích hệ thống thông tin 1.3.1 Các phương pháp thu thập thông tin Phỏng vấn: là một trong hai công cụ thu thập thông tin đắc lực nhất dùng cho hầu hết các dự án phát triển HTTT. Phỏng vấn cho phép thu thập được những thông tin được xử lý theo cách khác với mô tả trong tài liệu. Nghiên cứu tài liệu: cho phép nghiên cứu kỹ và tỉ mỉ về nhiều khía cạnh của tổ chức như lịch sử hình thành và phát triển của tổ chức, tình trạng tài chính, các tiêu chuẩn và định mức, cấu trúc thứ bậc, vi trí và nhiệm vụ của các thành viên, nội dung và hình dạng của các thông tin đầu vào còng như đầu ra. Sử dụng phiếu điều tra: khi cần phải lấy thông tin với số lượng lớn và pham vi rộng. Quan sát: giúp cho chúng ta thấy những gì không thể hiện trên tài hiệu hoặc phỏng vấn như tài liệu để ở đâu, đưa cho ai…Quan sát sẽ gặp khó khăn vì người bị quan sát sẽ bị tác động và thực hiện ko đúng quy trình bìnhthường. Phương pháp thu thập thông tin để phục vụ cho giai đoạn phân tích thiết kế chi tiết “HTTT quản lý công việc của giảng viên” chủ yếu là nghiên cứu tài liệu, quan sát và phỏng vấn 1.3.2 Mã hóa dữ liệu a. Định nghĩa: Mã hóa là cách thức để thực hiện việc phân loại, xếp lớp đối tượng cần quản lý. b. Lợi ích: Phương pháp mã hóa được sử dụng trong tất cả các hệ thống. Xấy dựng HTTT cần thiết phải mã hóa dữ liệu. Việc mã hóa dữ liệu mang lại những lợi ích sau: * Nhận diện không nhầm lẫn đối tượng. * Mô tả nhanh chóng các đối tượng. * Nhận diện nhóm đối tượng nhanh. * Tiết kiệm không gian lưu trữ và thời gian sử lý. * Thực hiện những phộp kiểm tra logic hình thức hoặc thể hiện vài đặc tính của đối tượng. c. Các phương pháp mã hóa cơ bản: Một hệ thống mã gồm 1 tập hợp các đối tượng, một bộ lý tự hợp lệ, được định nghĩa trước, được sử dụng để nhận diện đối tượng cần quan tâm. * Phương pháp mã hóa liên tiếp: mã kiểu này được tạo ra bởi 1 quy tắc dóy nhất định. * Phương pháp mã hóa phân cấp: nguyên tắc này lập bộ mã rõt đơn giản. Người ta phân cấp đối tượng từ trên xuống và mã số được xây dựng từ trái qua phải, các chứ số được kéo dài về phía bên phải để thể hiện chi tiết phân cấp sâu hơn. * Phương pháp mã hóa tổng hợp: khi kết hợp việc mã hóa phân cấp với mã hóa liên tiếp thì ta được mã hóa tổng hợp. * Phương pháp mã hóa gợi nhớ: cho phép ta căn cứ vào đựac tính của đối tượng để xây dựng bộ mã. * Phương pháp mã hóa theo seri: sử dụng 1 tập hợp theo dayx gọi là seri. Seri được coi như là 1 giấy phép theo mã quy định. * Phương pháp mã hóa ghộp nối: chia mã ra thành nhiều trường, mỗi trường tương ứng với 1 đặc tính, những liên hệ có thể có giữa những tập hợp con khác nhau với đối tượng được gán mã. 1.3.3 Các công cụ mô hình hóa HTTT a. Sơ đồ luồng thông tin IFD (Information Flow Control): Sơ đồ luồng thông tin được cung cấp để mô tả hệ thống thông tin theo cách thức động, tức là mô tả sự di chuyển của dữ liệu, việc xử lý, lưu trữ trong thế giới vật lý bằng các sơ đồ. * Các ký pháp của sơ đồ luồng thông tin: - Xử lý: Thủ công Giao tác người-máy Tin học hóa hoàn toàn - Kho dữ liệu: Thủ công Tin học hóa b. Sơ đồ luồng dữ liệu DFD (Data Flow Diagram): Sơ đồ luồng dữ liệu dùng để mô tả HTTT như sơ đố luồng thông tin nhưng trên góc độ trõu tượng. Trên sơ đồ chỉ bao gồm các luồng dữ liệu, các xử lý, các lưu trữ dữ liệu, nguồn, đích nhưng không hề quan tâm tới nơi, thời điểm, và đối tượng chịu trách nhiệm sử lý. Sơ đồ DFD chỉ mô tả đơn thuần làm gì và để làm gì. * Ký pháp chung cho sơ đồ DFD: Ngôn ngữ sơ đồ luồng dữ liệu sử dụng bốn loại ký pháp cơ bản: thực thể, tiến trình, kho dữ liệu và dòng dữ liệu. Thực thể: Khách hàng Nguồn hoặc đích: Biểu thị thông tin xuất phát từ đâu, đích của nó là bộ phận nào hoặc cá nhân nào. Dòng dữ liệu: là dòng chuyển dời thông tin vào hoặc ra khỏi tiến trình, một chức năng. Các dòng khác nhau phải có tên khác nhau và thông tin khi có sự thay đổi phải có tên phù hợp. Bản sao đơn hàng Tiến trình xử lý: được hiểu là quá trình biến đổi thông tin, từ thông tin vào nó biến đổi, tổ chức lại thông tin, bổ sung thông tin hoắc tạo ra thông tin mới tổ chức thành thông tin đầu ra phục vụ cho hoạt động của hệ thống lưu vào kho dữ liệu hoặc gửi cho các tiến trình hay bộ phân khác. Kho dữ liệu: để thể hiện các thông tin cần lưu trữ dưỡi dạng vật lý. Các kho dữ liệu này có thể là các tập tài liệu, các cặp hồ sơ hoặc các tệp thông tin trên đĩa. Hồ sơ khách hàng * Các mức của DFD: Sơ đồ ngữ cảnh (Context Diagram): thể hiện rât khái quát nội dung chính của hệ thống thông tin. Sơ đồ này không đi vào chi tiết mà nó mô tả sao cho chỉ cần nhận ra nội dung chính của hệ thống. Phân ró sơ đồ ngữ cảnh: nhằm mô tả hệ thống chi tiết hơn người ta dùng kỹ thuật phân ró (Explosion) sơ đồ. Bắt đầu từ sưo đồ ngữ cảnh ta phân ró tành sơ đồ mức 0, tiếp đó là mức 1…tuỳ theo mức độ chi tiết do yêu cầu đũi hỏi. “Hệ thống thông tin quản lý quan hệ khách hàng” sử dụng cả 2 công cụ sơ đồ luồng dữ liệu và sơ đồ luồng thông tin để mô tả. 1.3.4 Thiết kế cơ sở dữ liệu (CSDL) * Thiết kế cơ sở dữ liệu logic từ các thông tin đầu ra Xác định các tệp CSDL trên cơ sở các thông tin đầu ra của hệ thống là phương pháp cổ điển và cơ bản của việc thiết kế CSDL. Các bước chi tiết khi thiết kế CSDL từ các thông tin đầu ra: * Bước 1: Xác định các thông tin đầu ra Liệt kê toàn bộ các thông tin đầu ra như nội dung, khối lượng tần suất và nơi nhận của chúng * Bước 2: Xác định các tệp cần thiết cung cấp đầy đủ dữ liệu cho việc tạo ra từng đầu ra. * Liệt kê các phần tử thông tin đầu ra. - Trên mỗi thông tin đầu ra bao gồm các phần tử thông tin được gọi là thuộc tính. Liệt kê toàn bộ các thuộc tính thành 1 danh sách. - Đánh dấu các thuộc tính lặp (là những thuộc tính có thể nhận nhiều giá trị dữ liệu). - Đánh đấu các thuộc tính thứ sinh (S) là những thuộc tính được tính toán hoặc suy ra từ những thuộc tính khác. - Gạch chân các thuộc tính khoá cho thông tin đầu ra. - Loại bỏ các thuộc tính thứ sinh khỏi danh sách, chỉ để lại các thuộc tính cơ sở. Xem xét loại bỏ các thuộc tính không có ý nghĩa trong quản lý. * Thực hiện việc chuẩn hóa mức 1 (1.NF). Chuẩn hoá 1.NF quy định rằng: trong mỗi danh sáh không được phép chức những thông tin lặp. Nếu có các thuộc tính lặp thì phải tách các thuộc tính này ra thành các danh sách con (có ý nghĩa dưới góc độ quản lý). Gắn thờm cho nó 1 tên, tìm cho nó một thuộc tính định danh riêng và thêm thuộc tính định danh của các danh sách gốc. * Thực hiện việc chuẩn hóa mức 2 (2.NF). Chuẩn hoá 2.NF quy định rằng: trong một danh sách mỗi thuộc tính phải phụ thuộc vào toàn bộ khoá chính chứ không phải chỉ phụ thuộc vào một phần của khoá. Nếu có sự phụ thuộc như vậy thì phải tách những thuộc tính phụ thuộc hàm vào bộ phận của khóa thành 1 danh sách con mới. Lấy bộ phận khóa đó kà khoá cho danh sách mới. Đặt tên cho danh sách mới này 1 tên riêng sao cho phù hợp với nội dung của các thuộc tính trong danh sách. * Thực hiện việc chuẩn hóa mức 3 (3.NF) Chuẩn hoá 3.NF quy định rằng: trong một danh sách không được phép có sự phụ thuộc bắc cầu giữa các thuộc tính. Nếu thuộc tính Z phụ thuộc hàm vào thuộc tớn Y, mà Y phụ thuộc hàm vào thuộc tính X thì phải tách chúng vào hai danh sách chứac quan hệ Z với Y và danh sách chứa quan hệ Y với X. * Mô tả các tệp. Mỗi dánh sách xác định được sau khi chuẩn hoá 3.NF sẽ là một dánh sách CSDL. Biểu diễn các tệp theo ngôn ngữ của các CSDL về tệp. Tên tệp viết chữ in hoa, nằm phía trên. Các thuộc tính nằm trong đó, thuộc tính khóa có gạch chân. Bước 3: Tích hợp các tệp để chỉ tạo ra một CSDL từ mỗi đầu ra theo cách thức hiện của bước 2 sẽ tạo ra rất nhiều danh sách và mỗi danh sách liên quan tới một đối tượng quản lý, có sự tồn tại riêng tương đối độc lập. Những danh sách này cùng mô tả về một thực thể thì phải tích hợp lại, nghĩa là tạo thành một danh sách chung, bằng cách tập hợp tất cả thuộc tính chung và riêng của những danh sách đó lại với nhau. Bước 4: Xác định liên hệ logic giữa các tệp va thiết lập các sơ đồ cấu trúc dữ liệu. Xác định số lượng bản ghi cho từng tệp. Xác định độ dài cho từng thuộc tính, độ dài cho bản ghi. Xác định mối liện hệ giữa các tệp, biểu diễn chúng bằng các mũi tên hai chiều, nếu có quan hệ một - nhiều thì vẽ mũi tên về hướng đó. 1.4 Khái quát về công cụ sử dụng thực hiện đề tài 1.4.1 Cơ sở dữ liệu * Một số khái niệm về cơ sở dữ liệu (CSDL) - Mỗi bảng (Table) ghi chép dữ liệu về mọt nhóm các phần tử nào đó gọi là thực thể (Entity). Ví dụ: Thưc thể KHÁCH HÀNG là bao gồm các khách hàng. Thực thể THUỐC là bao gồm các loại thuốc. - Mỗi thực thể đều có những đặc điểm riêng mà ta gọi đó là thuộc tính. Mỗi thuộc tính là 1 yếu tố dữ liệu tách biệt, thường không chia nhỏ được nữa. các thuộc tính góp phần mô tả thực thể và là những dữ liệu về thực thể mà ta muốn lưu trữ. - Mỗi bảng có những dòng (Row). Mỗi dòng còn gọi là 1 bản ghi (Record) bởi vì nó ghi chộp dữ liệu về một cỏ thể (Instance) tức là một biểu hiện riêng của thực thể. - Mỗi bảng có những cột (Column). Mỗi cột còn được gọi là một trường dữ liệu (Field). Để lưu trữ thông tin về từng thuộc tính người ta thiết lập cho nó một bộ thuộc tính để ghi giá trị cho các thuộc tính Ví dụ: Bộ thuộc tính cho thực thể HANGHOA có thể là như sau: Mã hàng Tên hàng Số lượng Đơn vị tính Tên kho Mỗi thuộc tính được coi là một trường. nó chứa một mẩu tin về thực thể cụ thể. Cơ sở dữ liệu (Database) là 1 nhóm hay nhiều bảng có quan hệ với nhau. Một tập hợp các dữ liệu có liên quan với nhau được gọi là một hệ cơ sở dữ liệu (Database System) hay ngõn hàng dữ liệu (Data bank) Hệ quản trị cơ sở dữ liệu (Database Management System) là một hệ thống chương trình máy tính giúp ta tạo lập và sử dụng các hệ cơ sở dữ liệu. 2.3 Giới thiệu về Microsoft Access và Visual Basic 2.3.1 Microsoft Access Microsoft Access là một thành phần của bộ phần mềm Microsoft Office Profesional. Vì thế mà những đối tượng thuộc giao diện như thực đơn, dải công cụ và hộp thoại đều tương tự như các ứng dụng khác của Office mà phần lớn cán bộ văn phòng đó quen dựng. Việc trao đổi dữ liệu giữa Access và các ứng dụng khác trong môi trường Windows như Excel, Word, SQL, Server,…còng rất thuận tiện. Access là một công cụ tuyệt vời để phát triển những ứng dụng phục vụ công tác quản lý và điều hành một doanh nghiệp nhỏ. Những Wizard của Access cho phép dễ dàng và nhanh chóng xây dựng nền mãng cho một ứng dụng. Khả năng đưa vào ứng dụng Access những đơn vị (module) chương trình viết bằng Visual Basic giúp cán bộ lập trình tạo ra các thư viện có thể sử dụng lại. Ứng dụng của Access ở cấp phòng ban: Access còng rất tiện dựng để phát triển những ứng dụng cho các phòng ban thuộc những công ty lớn. Hầu hết các phòng ban thuộc những công ty lớn đều có đủ ngân sách để tạo ra những ứng dụng được thiết kế một cách hoàn hảo. Hơn nữa, nhiều phòng ban còn có những nhân viên rất hăng say thiết kế mẫu báo cáo. Họ sẵn sàng phối hợp với các chuyên gia phần mềm để tạo nên những ứng dụng đáp ứng một cách mỹ mãn những nhu cầu thông tin của phòng ban. Ứng dụng Access cho toàn doanh nghiệp: mặc dự Access thích hợp nhất cho các ứng dụng ở cấp phòng ban nhưng vẫn có thể dùng nó để tạo ra những ứng dụng xử lý dữ liệu và cung cấp thông tin trên phạm vi của một cơ quan với quy mô vừa phải. Cần lưu ý, khi số người sử dụng đồng thời qua lớn thì hiệu năng của Access suy giảm đáng kể, khi đó Access được dùng như công cụ tuyến trước cho một cơ sở dữ liệu khách/chủ. 2.3.2 Visual Basic Dùng Visual Basic là cách nhanh và tốt nhất để lập trình cho Microsoft Microsoft. Cho dự là lập trình viên chuyên nghiệp hay mới mẻ đối với chương trình Windows, Visual Basic cung cấp một bộ công cụ hoàn chỉnh để đơn giản hóa việc triển khai lập trình ứng dụng cho Microsoft Microsoft. Visual Basic là phần “Visual” đề cập đến phương pháp được sử dụng để tạo giao diện đồ họa người dùng. Có sẵn những bộ phận hình ảnh, controls, giúp sắp đặt vị trí và quyết định các đặc tính của chúng trên một khung màn hình (form). Phần “Basic” đề cập đến ngôn ngữ Basic (Beginners All-Purpose Symbolic Instruction Code), một ngôn ngữ lập trình đơn giản, dễ học, được tạo ra cho các khoa học gia (những người không có thì giờ để học lập trình điện toán) dùng. Visual Basic đó được sinh ra từ MSBasic, do Bill Gates viết từ thời dùng cho máy tính 8 bits 8080 hay Z80. Hiện nay nó chứa đến hàng trăm câu lệnh (commands), hàm (functions) và từ khóa (keywords). Rất nhiều commands, functions liên hệ trực tiếp đến MSWindows GUI. Những người mới bắt đầu có thể viết chương trìng bằng cách học chỉ một vài commands, functions và keywords. Khả năng của ngôn ngữ này cho phép những người chuyên nghiệp hoàn thành bất kỳ điều gì nhờ sử dụng ngôn ngữ lập trình MSWindows nào khác. Visual Basic còn có hai dạng khác Visual Basic for Application (VBA) và VBScript. VBA là ngôn ngữ nằm phía sau các chương trình Word, Excel, MSAccess, MSProject…còn gọi là Macros. Dựng VBA trong MSOffice ta có thể làm tăng chức năng bằng cách tự động hóa chương trình. VBScript được dùng cho Internet và chính Operating System. Dù cho mục đích là tạo một tiện ích nhỏ, trong một nhóm làm việc, trong một công ty lớn, hay cần phân bố chương trình ứng dụng rộng rói trên thế giới qua Internet, Visual Basic còng sẽ có các công cụ lập trình mà ta cần thiết. 2. Quản lý hóa đơn. Chức năng quản lý hóa đơn có tác dụng cho biết thông tin về mã hóa đơn, mã thuốc, mã nhà cung cấp, số lượng, ngày xuất nhập, đơn giá, thành tiền, số tiền đã thanh toán, số tiền còn lại mà từ đó người quản lý truy cập được các thông tin cần thiết như số tiền còn nợ của nhà cung cấp, khách hàng, v.v… 3. Quản lý nhà cung cấp. Quản lý mã nhà cung cấp, tên nhà cung cấp, địa chỉ, điện thoại, số tiền mà cửa hàng còn nợ lại nhà cung cấp, các đơn hàng và cung cấp các thông tin về thuốc. 4. Quản lý khách hàng. Quản lý mã khách hàng, tên khách hàng, địa chỉ, điện thoại, các đơn hàng và cung cấp các thông tin về thuốc khi người ta truy cập đến khóa mã khách hàng 5. Tra cứu và tìm kiếm. Làm nhiệm vụ tra cứu và tìm kiếm những yêu cầu của người quản lý đưa ra như các thông tin về thuốc, khách hàng, loại thuốc… Chương III Phân tích thiết kế hệ thống thông tin 3 Tổng quan về phân tích và thiết kế. Hệ thống là một tổ chức vận hành theo một mục đích xác định gồm nhiều thành phần trong mối quan hệ với nhau. Hệ thống bao gồm: Tập hợp các phần tử ( không phân biệt bản chất của nó ). Tập hợp các mối quan hệ giữa các phần tử đó ( các quan hệ có nhiều dạng khác nhau như: các quan hệ cơ học, năng lượng, THÔNG TIN Và Các quan hệ khác ràng buộc bởi: kinh tế, thân hữu, pháp luật ) Tạo thành một thể thống nhất để có được những chức hay mục tiêu ( của chính nó hay được con người gán cho ) của hệ thống. Phân tích là công việc trọng tân chi xây dựng một hệ thông tin. Phân tích hệ thống nhằm xác định nhu cầu thông tin của tổ chức. Nó sẽ giúp cung cấp những dữ liệu cơ sở cho việc thiết kế hệ thống thông tin sau này. Thiết kế hệ thống sẽ cho một phương án tổng thể hay một mô hình đầy đủ của hệ thống thông tin. Một phương pháp phân tích và thiết kế là sự kết hợp của ba yếu tố: Một tập hợp các khái niệm, định nghĩa và mô hình, bao gồm các khái niệm cơ bản được sử dụng trong phương pháp cùng với các cách biểu diễn chúng. Một tiến độ triển khai: bao gồm các bước đi lần lượt, các hoạt động cần làm. Một công cụ trợ giúp, là một phần mềm giúp cho việc triển khai hệ thống thực hiện theo phương pháp được chặt chẽ và nhanh chóng. Do đó, khi lập trình để quản lý cửa hàng thuốc tân dược nói riêng hay bất kỳ một hệ thống quản lý nào thì cần phải phân tích và thiết kế hệ thống. 3.1.2. Chức năng nhiệm vụ vủa các đối tượng. 1. Quản lý thuốc. Chức năng này có nhiệm vụ quản lý chặt chẽ thông tin nhà cung cấp và khách hàng, thông tin về thuốc như mã số thuốc, số lượng, tên thuốc, loại thuốc, công dụng… Quản lý về quá trình bán thuốc của cửa hàng, nhận đơn hàng từ phía khách hàng, lập danh sách đơn hàng và phân loại khách hàng với các loại thuốc, số lượng, giá cả… 2. Quản lý hóa đơn. Chức năng quản lý hóa đơn có tác dụng cho biết thông tin về mã hóa đơn, mã thuốc, mã nhà cung cấp, số lượng, ngày xuất nhập, đơn giá, thành tiền, số tiền đó thanh toán, số tiền còn lại mà từ đó người quản lý truy cập được các thông tin cần thiết như số tiền còn nợ của nhà cung cấp, khách hàng, v.v… 3. Quản lý nhà cung cấp. Quản lý mã nhà cung cấp, tên nhà cung cấp, địa chỉ, điện thoại, số tiền mà cửa hàng còn nợ lại nhà cung cấp, các đơn hàng và cung cấp các thông tin về thuốc. 4. Quản lý khách hàng. Quản lý mã khách hàng, tên khách hàng, địa chỉ, điện thoại, các đơn hàng và cung cấp các thông tin về thuốc khi người ta truy cập đến khóa mã khách hàng. 5. Tra cứu và tìm kiếm. Làm nhiệm vụ tra cứu và tìm kiếm những yêu cầu của người quản lý đưa ra như các thông tin về thuốc, khách hàng, loại thuốc… 3.2. Biểu đồ phân cấp chức năng QUẢN LÝ CỬA HÀNG THUỐC TÂN DƯỢC Quản lý NCC và khách hàng Quản lý thuốc Tổng hợp Quản lý hóa đơn Tra cứu và tìm kiếm Nhập xuất Thêm Sửa đổi Hủy bỏ Nhập xuất Thêm Sửa đổi Hủy bỏ Hóa đơn nhập/ xuất Thêm Sửa đổi Hủy bỏ Tìm kiếm theo NCC Tìm kiếm theo KH Tìm kiếm theo mã thuốc Thống kê Hàng tồn kho 3.3 Biểu đồ luồng dữ liệu mức khung cảnh Nhà cung cấp và khách hàng Giao thuốc Giao thuốc Đơn thuốc Quản lý bán thuốc Hóa đơn Đơn thuốc Thông tin thuốc Thuốc 3.4 Giao diện và code của chương trình Giao diện chính Code của Menu chính: Option Explicit Private Sub cmdBan_Click() frmHDB.Show vbModal End Sub Private Sub cmdNhap_Click() frmHDN.Show vbModal End Sub Private Sub Form_Load() Set Conn = New ADODB.Connection gConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source = " & App.Path & "\data\db1.mdb;" & _ "Persist Security Info = False" ';Jet OLEDB:Database Password=hoanglinh" Conn.CursorLocation = adUseClient Conn.Open gConnectionString End Sub Private Sub cmdThoat_Click() End End Sub Private Sub mnBan_Click() frmBaocaoBan.Show vbModal End Sub Private Sub mnCC_Click() frmNCC.Show vbModal End Sub Private Sub mnFind_Click() frmFindTh.Show vbModal End Sub Private Sub mnKh_Click() frmKh.Show vbModal End Sub Private Sub mnNhap_Click() frmBaocaoNhap.Show vbModal End Sub Private Sub mnNV_Click() frmNV.Show vbModal End Sub Private Sub mnTh_Click() ' frmTh.Show vbModal End Sub Private Sub Picture1_Click() End Sub Danh sách nhân viên Code của Danh sách khách hàng: Option Explicit Dim Adding As Boolean Dim rs As ADODB.Recordset Private Sub cmbMaTDo_DropDown() Call FillCombo("Select TenTDo from TDo", cmbMaTDo) End Sub Private Sub cmbMaCM_DropDown() Call FillCombo("Select TenCM from CM", cmbMaCM) End Sub Private Sub cmdMaCM_Click() frmCM.Show vbModal End Sub Private Sub cmdMaTDo_Click() frmTDo.Show vbModal End Sub Private Sub Form_Load() Set rs = New ADODB.Recordset rs.Open "Select * from NV order by MaNV asc", Conn, adOpenStatic, adLockOptimistic Set Grid1.DataSource = rs Call CenterMyForm(Me) Adding = False txtMaNV.Enabled = False txtDC.Enabled = False txtTenNV.Enabled = False txtDT.Enabled = False mskNS.Enabled = False cmbMaTDo.Enabled = False cmbMaCM.Enabled = False cmbGT.Enabled = False cmdLuu.Enabled = False cmdBoqua.Enabled = False cmdKetiep.Enabled = True cmdQuaylui.Enabled = True cmbGT.AddItem "Nam" cmbGT.AddItem "Nữ" End Sub Private Sub CmdBoqua_Click() Adding = False Call ResetValues cmdBoqua.Enabled = False cmdThem.Enabled = True cmdLuu.Enabled = False cmdXoa.Enabled = True cmdQuaylui.Enabled = True cmdKetiep.Enabled = True Call DisplayData txtMaNV.Enabled = False End Sub Private Sub CmdDong_Click() If Adding Then If MsgBox("Ban co muon ghi lai du lieu vua nhap khong?", vbYesNo + vbInformation, "Thong bao") = vbYes Then Call CmdLuu_Click Exit Sub End If End If Adding = False Unload Me End Sub Private Sub CmdLuu_Click() Dim s As String If Len(Trim(txtMaNV.Text)) = 0 Then MsgBox "Ban phai nhap ma Nhan vien!", vbInformation, "Thong bao" txtMaNV.SetFocus Exit Sub End If 'Kiem tra khoa xem da co chua neu chua co thi cho phep ghi vao If rs.RecordCount 0 Then s = "Select MaNV from NV where MaNV='" & Trim(txtMaNV.Text) & "'" If CheckKey(s) And Adding Then MsgBox " Ma Nhan vien nay da co, ban phai nhap ma khac!", vbOKOnly, "Thong bao" txtMaNV.SetFocus txtMaNV.Text = "" Exit Sub End If End If If Len(Trim(txtTenNV.Text)) = 0 Then MsgBox "Ban phai nhap ten Nhan vien!", vbInformation, "Thong bao" txtTenNV.SetFocus Exit Sub End If If Len(Trim(txtDC.Text)) = 0 Then MsgBox "Ban phai nhap Dia chi!", vbInformation, "Thong bao" txtDC.SetFocus Exit Sub End If If Len(Trim(txtDT.Text)) = 0 Then If MsgBox("Nhan vien nay co So Dien thoai lien lac khong?", vbYesNo, "Luu y") = vbNo Then txtDT.Text = "(Không có)" Else MsgBox "Ban phai nhap So dien thoai!", vbInformation, "Thong bao" txtDT.SetFocus Exit Sub End If End If If Len(Trim(cmbMaTDo.Text)) = 0 Then MsgBox "Ban phai nhap Ten Trinh do cua Nhan vien!", vbInformation, "Thong bao" cmbMaTDo.SetFocus Exit Sub End If If Len(Trim(cmbMaCM.Text)) = 0 Then MsgBox "Ban phai nhap Ten Chuyen mon cua Nhan vien!", vbInformation, "Thong bao" cmbMaCM.SetFocus Exit Sub End If If Len(Trim(cmbGT.Text)) = 0 Then MsgBox "Ban phai nhap Gioi tinh cua Nhan vien!", vbInformation, "Thong bao" cmbGT.SetFocus Exit Sub End If If mskNS.Text = "__/__/__" Then MsgBox "Ban phai nhap vao Ngay sinh cua Nhan vien!", vbInformation, "Thong bao" mskNS.SetFocus Exit Sub End If If Not IsDate(mskNS.Text) Then MsgBox "Moi ban nhap lai Ngay sinh!", vbInformation, "Thong bao" mskNS.SetFocus mskNS.Mask = "##/##/##" mskNS.Text = "__/__/__" Exit Sub End If With rs If Adding Then .AddNew !MaNV = txtMaNV.Text !TenNV = txtTenNV.Text !MaTDo = GetFieldValues("Select MaTDo from TDo where TenTDo='" & cmbMaTDo.Text & " ' ") !MaCM = GetFieldValues("Select MaCM from CM where TenCM='" & cmbMaCM.Text & " ' ") !NS = mskNS.Text !GT = cmbGT.Text !DC = txtDC.Text !DT = txtDT.Text Else !TenNV = txtTenNV.Text !MaTDo = GetFieldValues("Select MaTDo from TDo where TenTDo='" & cmbMaTDo.Text & " ' ") !MaCM = GetFieldValues("Select MaCM from CM where TenCM='" & cmbMaCM.Text & " ' ") !NS = mskNS.Text !GT = cmbGT.Text !DC = txtDC.Text !DT = txtDT.Text End If .Update End With Adding = False cmdXoa.Enabled = True cmdThem.Enabled = True cmdBoqua.Enabled = False cmdKetiep.Enabled = False cmdQuaylui.Enabled = True cmdLuu.Enabled = False txtMaNV.Enabled = False End Sub Private Sub Cmdketiep_Click() On Error GoTo errs cmdQuaylui.Enabled = True cmdLuu.Enabled = True If Not rs.EOF Then rs.MoveNext Else MsgBox "Day la ho so cuoi cung!", vbInformation, "Thong bao" rs.MoveLast cmdKetiep.Enabled = False End If Call DisplayData txtMaNV.Enabled = False errs: End Sub Private Sub Cmdquaylui_Click() On Error GoTo errs cmdKetiep.Enabled = True cmdLuu.Enabled = True If Not rs.BOF Then rs.MovePrevious Else MsgBox "Day la ho so dau tien", vbInformation, "Thong bao" rs.MoveFirst cmdQuaylui.Enabled = False End If Call DisplayData txtMaNV.Enabled = False errs: End Sub Private Sub CmdThem_Click() cmdXoa.Enabled = False cmdBoqua.Enabled = True cmdLuu.Enabled = True cmdKetiep.Enabled = False cmdQuaylui.Enabled = False txtTenNV.Enabled = True txtDC.Enabled = True txtDT.Enabled = True mskNS.Enabled = True cmbGT.Enabled = True cmbMaTDo.Enabled = True cmbMaCM.Enabled = True If Adding Then Call CmdLuu_Click Exit Sub End If Adding = True Call ResetValues txtMaNV.Enabled = True txtMaNV.SetFocus End Sub Private Sub Cmdxoa_Click() Dim khanh As ADODB.Recordset Set khanh = New ADODB.Recordset khanh.Open "Select MaNV from HDN ", Conn, adOpenStatic, adLockOptimistic cmdLuu.Enabled = False With rs If .RecordCount 0 Then If MsgBox("Ban co muon xoa ban ghi nay khong", vbYesNo, "Thong bao") = vbYes Then If khanh.RecordCount 0 Then khanh.MoveFirst Do While (Not khanh.EOF) If khanh!MaNV = rs!MaNV Then MsgBox "Ban ghi nay dang duoc dung tai bang HDN, khong xoa duoc!", vbInformation, "Thong bao" Exit Sub End If khanh.MoveNext Loop khanh.MoveLast If khanh!MaNV = rs!MaNV Then MsgBox "Ban ghi nay dang duoc dung tai bang HDN, khong xoa duoc!", vbInformation, "Thong bao" Exit Sub End If End If khanh.Open "Select MaNV from HDB ", Conn, adOpenStatic, adLockOptimistic If khanh.RecordCount 0 Then khanh.MoveFirst Do While (Not khanh.EOF) If khanh!MaNV = rs!MaNV Then MsgBox "Ban ghi nay dang duoc dung tai bang HDB, khong xoa duoc!", vbInformation, "Thong bao" Exit Sub End If khanh.MoveNext Loop khanh.MoveLast If khanh!MaNV = rs!MaNV Then MsgBox "Ban ghi nay dang duoc dung tai bang HDB, khong xoa duoc!", vbInformation, "Thong bao" Exit Sub End If End If .Delete Call ResetValues End If Else MsgBox "Khong con ban ghi nao ca!", vbInformation, "Thong bao" Exit Sub End If End With End Sub Private Sub Form_Unload(Cancel As Integer) If Adding Then If MsgBox("Ban co muon ghi lai ban ghi vua nhap khong?", vbYesNo + vbInformation, "Thong bao") = vbYes Then Call CmdLuu_Click Cancel = True Exit Sub End If End If Cancel = False End Sub Sub ResetValues() txtMaNV.Text = "" txtTenNV.Text = "" txtDC.Text = "" txtDT.Text = "" cmbMaTDo.Text = "" cmbMaCM.Text = "" cmbGT.Text = "" mskNS.Mask = "##/##/##" mskNS.Text = "__/__/__" End Sub Sub DisplayData() With rs If .EOF Or .BOF Then Exit Sub txtMaNV.Text = !MaNV txtTenNV.Text = !TenNV cmbMaTDo.Text = GetFieldValues("Select TenTDo from TDo where MaTDo='" & !MaTDo & "'") cmbMaCM.Text = GetFieldValues("Select TenCM from CM where MaCM='" & !MaCM & "'") cmbGT.Text = !GT mskNS.Mask = "" mskNS.Text = !NS txtDC.Text = !DC txtDT.Text = !DT End With End Sub Private Sub Grid1_Click() cmdLuu.Enabled = True cmdKetiep.Enabled = True cmdQuaylui.Enabled = True If Adding Then If MsgBox("Dang o che do them moi, Chon OK de hien thi du lieu", vbOKCancel + vbInformation, "Thong bao") = vbCancel Then Exit Sub Else Adding = False cmdBoqua.Enabled = False cmdThem.Enabled = True End If End If txtMaNV.Enabled = False Call DisplayData End Sub Private Sub Grid1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Call Grid1_Click End If End Sub Danh sách khách hàng Code của Danh sách khách hàng Option icit Dim Adding As Boolean Dim rs As ADODB.Recordset Private Sub Form_Load() Set rs = New ADODB.Recordset rs.Open "Select * from Kh order by MaKh asc", Conn, adOpenStatic, adLockOptimistic Set Grid1.DataSource = rs Call CenterMyForm(Me) Adding = False txtMaKh.Enabled = False txtDC.Enabled = False txtTenKh.Enabled = False txtDT.Enabled = False cmdLuu.Enabled = False cmdBoqua.Enabled = False cmdKetiep.Enabled = True cmdQuaylui.Enabled = True End Sub Private Sub CmdBoqua_Click() Adding = False Call ResetValues cmdBoqua.Enabled = False cmdThem.Enabled = True cmdLuu.Enabled = False cmdXoa.Enabled = True cmdQuaylui.Enabled = True cmdKetiep.Enabled = True Call DisplayData txtMaKh.Enabled = False End Sub Private Sub CmdDong_Click() If Adding Then If MsgBox("Ban co muon ghi lai du lieu vua nhap khong?", vbYesNo + vbInformation, "Thong bao") = vbYes Then Call CmdLuu_Click Exit Sub End If End If Adding = False Unload Me End Sub Private Sub CmdLuu_Click() Dim s As String If Len(Trim(txtMaKh.Text)) = 0 Then MsgBox "Ban phai nhap ma Khach!", vbInformation, "Thong bao" txtMaKh.SetFocus Exit Sub End If 'Kiem tra khoa xem da co chua neu chua co thi cho phep ghi vao If rs.RecordCount 0 Then s = "Select MaKh from Kh where MaKh='" & Trim(txtMaKh.Text) & "'" If CheckKey(s) And Adding Then MsgBox " Ma Khach nay da co, ban phai nhap ma khac!", vbOKOnly, "Thong bao" txtMaKh.SetFocus txtMaKh.Text = "" Exit Sub End If End If If Len(Trim(txtTenKh.Text)) = 0 Then MsgBox "Ban phai nhap ten Khach!", vbInformation, "Thong bao" txtTenKh.SetFocus Exit Sub End If If Len(Trim(txtDT.Text)) = 0 Then If MsgBox("Khach nay co So Dien thoai lien lac khong?", vbYesNo, "Luu y") = vbNo Then txtDT.Text = "(Không có)" Else MsgBox "Ban phai nhap So dien thoai!", vbInformation, "Thong bao" txtDT.SetFocus Exit Sub End If End If If Len(Trim(txtDC.Text)) = 0 Then If MsgBox("Khach nay co de lai dia chi khong?", vbYesNo, "Luu y") = vbNo Then txtDC.Text = "(Không có)" Else MsgBox "Ban phai nhap Dia chi!", vbInformation, "Thong bao" txtDC.SetFocus Exit Sub End If End If With rs If Adding Then .AddNew !MaKh = txtMaKh.Text !TenKh = txtTenKh.Text !DC = txtDC.Text !DT = txtDT.Text Else !TenKh = txtTenKh.Text !DC = txtDC.Text !DT = txtDT.Text End If .Update End With Adding = False cmdXoa.Enabled = True cmdThem.Enabled = True cmdBoqua.Enabled = False cmdKetiep.Enabled = False cmdQuaylui.Enabled = True cmdLuu.Enabled = False txtMaKh.Enabled = False End Sub Private Sub Cmdketiep_Click() On Error GoTo errs cmdQuaylui.Enabled = True cmdLuu.Enabled = True If Not rs.EOF Then rs.MoveNext Else MsgBox "Day la ho so cuoi cung!", vbInformation, "Thong bao" rs.MoveLast cmdKetiep.Enabled = False End If Call DisplayData txtMaKh.Enabled = False errs: End Sub Private Sub Cmdquaylui_Click() On Error GoTo errs cmdKetiep.Enabled = True cmdLuu.Enabled = True If Not rs.BOF Then rs.MovePrevious Else MsgBox "Day la ho so dau tien", vbInformation, "Thong bao" rs.MoveFirst cmdQuaylui.Enabled = False End If Call DisplayData txtMaKh.Enabled = False errs: End Sub Private Sub CmdThem_Click() cmdXoa.Enabled = False cmdBoqua.Enabled = True cmdLuu.Enabled = True cmdKetiep.Enabled = False cmdQuaylui.Enabled = False txtTenKh.Enabled = True txtDC.Enabled = True txtDT.Enabled = True If Adding Then Call CmdLuu_Click Exit Sub End If Adding = True Call ResetValues txtMaKh.Enabled = True txtMaKh.SetFocus End Sub Private Sub Cmdxoa_Click() Dim khanh As ADODB.Recordset Set khanh = New ADODB.Recordset khanh.Open "Select MaKh from HDB ", Conn, adOpenStatic, adLockOptimistic cmdLuu.Enabled = False With rs If .RecordCount 0 Then If MsgBox("Ban co muon xoa ban ghi nay khong", vbYesNo, "Thong bao") = vbYes Then If khanh.RecordCount 0 Then khanh.MoveFirst Do While (Not khanh.EOF) If khanh!MaKh = rs!MaKh Then MsgBox "Ban ghi nay dang duoc dung tai bang HDB, khong xoa duoc!", vbInformation, "Thong bao" Exit Sub End If khanh.MoveNext Loop khanh.MoveLast If khanh!MaKh = rs!MaKh Then MsgBox "Ban ghi nay dang duoc dung tai bang HDB, khong xoa duoc!", vbInformation, "Thong bao" Exit Sub End If End If .Delete Call ResetValues End If Else MsgBox "Khong con ban ghi nao ca!", vbInformation, "Thong bao" Exit Sub End If End With End Sub Private Sub Form_Unload(Cancel As Integer) If Adding Then If MsgBox("Ban co muon ghi lai ban ghi vua nhap khong?", vbYesNo + vbInformation, "Thong bao") = vbYes Then Call CmdLuu_Click Cancel = True Exit Sub End If End If Cancel = False End Sub Sub ResetValues() txtMaKh.Text = "" txtTenKh.Text = "" txtDC.Text = "" txtDT.Text = "" End Sub Sub DisplayData() With rs If .EOF Or .BOF Then Exit Sub txtMaKh.Text = !MaKh txtTenKh.Text = !TenKh txtDC.Text = !DC txtDT.Text = !DT End With End Sub Private Sub Grid1_Click() cmdLuu.Enabled = True cmdKetiep.Enabled = True cmdQuaylui.Enabled = True If Adding Then If MsgBox("Dang o che do them moi, Chon OK de hien thi du lieu", vbOKCancel + vbInformation, "Thong bao") = vbCancel Then Exit Sub Else Adding = False cmdBoqua.Enabled = False cmdThem.Enabled = True End If End If txtMaKh.Enabled = False Call DisplayData End Sub Private Sub Grid1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Call Grid1_Click End If End Sub Danh sách nhà cung cấp Code của Danh sách nhà cung cấp: Option Explicit Dim Adding As Boolean Dim rs As ADODB.Recordset Private Sub Form_Load() Set rs = New ADODB.Recordset rs.Open "Select * from NCC order by MaNCC asc", Conn, adOpenStatic, adLockOptimistic Set Grid1.DataSource = rs Call CenterMyForm(Me) Adding = False txtMaNCC.Enabled = False txtDC.Enabled = False txtTenNCC.Enabled = False txtDT.Enabled = False cmdLuu.Enabled = False cmdBoqua.Enabled = False cmdKetiep.Enabled = True cmdQuaylui.Enabled = True End Sub Private Sub CmdBoqua_Click() Adding = False Call ResetValues cmdBoqua.Enabled = False cmdThem.Enabled = True cmdLuu.Enabled = False cmdXoa.Enabled = True cmdQuaylui.Enabled = True cmdKetiep.Enabled = True Call DisplayData txtMaNCC.Enabled = False End Sub Private Sub CmdDong_Click() If Adding Then If MsgBox("Ban co muon ghi lai du lieu vua nhap khong?", vbYesNo + vbInformation, "Thong bao") = vbYes Then Call CmdLuu_Click Exit Sub End If End If Adding = False Unload Me End Sub Private Sub CmdLuu_Click() Dim s As String If Len(Trim(txtMaNCC.Text)) = 0 Then MsgBox "Ban phai nhap ma Nha cung cap!", vbInformation, "Thong bao" txtMaNCC.SetFocus Exit Sub End If 'Kiem tra khoa xem da co chua neu chua co thi cho phep ghi vao If rs.RecordCount 0 Then s = "Select MaNCC from NCC where MaNCC='" & Trim(txtMaNCC.Text) & "'" If CheckKey(s) And Adding Then MsgBox " Ma NCC nay da co, ban phai nhap ma khac!", vbOKOnly, "Thong bao" txtMaNCC.SetFocus txtMaNCC.Text = "" Exit Sub End If End If If Len(Trim(txtTenNCC.Text)) = 0 Then MsgBox "Ban phai nhap ten NCC!", vbInformation, "Thong bao" txtTenNCC.SetFocus Exit Sub End If If Len(Trim(txtDT.Text)) = 0 Then If MsgBox("NCC nay co So Dien thoai lien lac khong?", vbYesNo, "Luu y") = vbNo Then txtDT.Text = "(Không có)" Else MsgBox "Ban phai nhap So dien thoai!", vbInformation, "Thong bao" txtDT.SetFocus Exit Sub End If End If If Len(Trim(txtDC.Text)) = 0 Then If MsgBox("NCC nay co de lai dia chi khong?", vbYesNo, "Luu y") = vbNo Then txtDC.Text = "(Không có)" Else MsgBox "Ban phai nhap Dia chi!", vbInformation, "Thong bao" txtDC.SetFocus Exit Sub End If End If With rs If Adding Then .AddNew !MaNCC = txtMaNCC.Text !TenNCC = txtTenNCC.Text !DC = txtDC.Text !DT = txtDT.Text Else !TenNCC = txtTenNCC.Text !DC = txtDC.Text !DT = txtDT.Text End If .Update End With Adding = False cmdXoa.Enabled = True cmdThem.Enabled = True cmdBoqua.Enabled = False cmdKetiep.Enabled = False cmdQuaylui.Enabled = True cmdLuu.Enabled = False txtMaNCC.Enabled = False End Sub Private Sub Cmdketiep_Click() On Error GoTo errs cmdQuaylui.Enabled = True cmdLuu.Enabled = True If Not rs.EOF Then rs.MoveNext Else MsgBox "Day la ho so cuoi cung!", vbInformation, "Thong bao" rs.MoveLast cmdKetiep.Enabled = False End If Call DisplayData txtMaNCC.Enabled = False errs: End Sub Private Sub Cmdquaylui_Click() On Error GoTo errs cmdKetiep.Enabled = True cmdLuu.Enabled = True If Not rs.BOF Then rs.MovePrevious Else MsgBox "Day la ho so dau tien", vbInformation, "Thong bao" rs.MoveFirst cmdQuaylui.Enabled = False End If Call DisplayData txtMaNCC.Enabled = False errs: End Sub Private Sub CmdThem_Click() cmdXoa.Enabled = False cmdBoqua.Enabled = True cmdLuu.Enabled = True cmdKetiep.Enabled = False cmdQuaylui.Enabled = False txtTenNCC.Enabled = True txtDC.Enabled = True txtDT.Enabled = True If Adding Then Call CmdLuu_Click Exit Sub End If Adding = True Call ResetValues txtMaNCC.Enabled = True txtMaNCC.SetFocus End Sub Private Sub Cmdxoa_Click() Dim khanh As ADODB.Recordset Set khanh = New ADODB.Recordset khanh.Open "Select MaNCC from HDN ", Conn, adOpenStatic, adLockOptimistic cmdLuu.Enabled = False With rs If .RecordCount 0 Then If MsgBox("Ban co muon xoa ban ghi nay khong", vbYesNo, "Thong bao") = vbYes Then If khanh.RecordCount 0 Then khanh.MoveFirst Do While (Not khanh.EOF) If khanh!MaNCC = rs!MaNCC Then MsgBox "Ban ghi nay dang duoc dung tai bang HDN, khong xoa duoc!", vbInformation, "Thong bao" Exit Sub End If khanh.MoveNext Loop khanh.MoveLast If khanh!MaNCC = rs!MaNCC Then MsgBox "Ban ghi nay dang duoc dung tai bang HDN, khong xoa duoc!", vbInformation, "Thong bao" Exit Sub End If End If .Delete Call ResetValues End If Else MsgBox "Khong con ban ghi nao ca!", vbInformation, "Thong bao" Exit Sub End If End With End Sub Private Sub Form_Unload(Cancel As Integer) If Adding Then If MsgBox("Ban co muon ghi lai ban ghi vua nhap khong?", vbYesNo + vbInformation, "Thong bao") = vbYes Then Call CmdLuu_Click Cancel = True Exit Sub End If End If Cancel = False End Sub Sub ResetValues() txtMaNCC.Text = "" txtTenNCC.Text = "" txtDC.Text = "" txtDT.Text = "" End Sub Sub DisplayData() With rs If .EOF Or .BOF Then Exit Sub txtMaNCC.Text = !MaNCC txtTenNCC.Text = !TenNCC txtDC.Text = !DC txtDT.Text = !DT End With End Sub Private Sub Grid1_Click() cmdLuu.Enabled = True cmdKetiep.Enabled = True cmdQuaylui.Enabled = True If Adding Then If MsgBox("Dang o che do them moi, Chon OK de hien thi du lieu", vbOKCancel + vbInformation, "Thong bao") = vbCancel Then Exit Sub Else Adding = False cmdBoqua.Enabled = False cmdThem.Enabled = True End If End If txtMaNCC.Enabled = False Call DisplayData End Sub Private Sub Grid1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Call Grid1_Click End If End Sub Tìm kiếm danh mục thuốc Code của Tìm kiếm danh mục thuốc Option Explicit Dim rsTimkiem As ADODB.Recordset Private Sub CmdDong_Click() Unload Me End Sub Private Sub cmdTimkiem_Click() Dim sql As String If (txtMaTh.Text = "") And (txtTenTh.Text = "") And (cmbNSX.Text = "") And (mskNgayban.Text = "__/__/__") And (txtSoluong.Text = "") Then MsgBox "Ban phai chon tieu chi de tim kiem" Exit Sub End If sql = "Select * from Hangban where True" If cboMaHang.Text "" Then sql = sql & " and HangID = '" & cboMaHang.Text & "'" End If If txtTenHang.Text "" Then sql = sql & " and TenHang = '" & txtTenHang.Text & "'" End If If cboMaCL.Text "" Then sql = sql & " and ChatlieuID = '" & cboMaCL.Text & "'" End If If mskNgayban.Text "__/__/__" Then sql = sql & " and Ngayban = #" & mskNgayban.Text & "#" End If If txtSoluong.Text "" Then sql = sql & " and Soluong = " & txtSoluong.Text End If Set rsTimkiem = New ADODB.Recordset rsTimkiem.Open sql, Conn, adOpenStatic, adLockOptimistic If rsTimkiem.RecordCount = 0 Then MsgBox "Khong tim thay ban ghi nao thoa man dieu kien" End If Set Grid1.DataSource = rsTimkiem Call SetGrid End Sub Private Sub cmdTimlai_Click() cboMaHang.Text = "" txtTenHang.Text = "" mskNgayban.Mask = "##/##/##" mskNgayban.Text = "__/__/__" txtSoluong.Text = "" cboMaCL.Text = "" lblTenCL.Caption = "" Set Grid1.DataSource = Nothing ' Xoá dữ liệu cũ trong lưới End Sub Private Sub Form_Load() Call CenterMyForm(Me) ' Call FillCombo("Select HangID from Hangban order by HangID asc", cboMaHang) 'Call FillCombo("Select ChatlieuID from Chatlieu order by ChatlieuID asc", cboMaCL) End Sub Private Sub SetGrid() With Grid1 .Columns(0).Caption = "Mã hàng" .Columns(0).Width = 800 .Columns(1).Caption = "Tên hàng" .Columns(1).Width = 1200 .Columns(2).Caption = "Mã chất liệu" .Columns(2).Width = 1000 .Columns(3).Caption = "Ngày bán" .Columns(3).Width = 1000 .Columns(4).Caption = "Số lượng" .Columns(4).Width = 800 .Columns(5).Caption = "Đn giá" .Columns(5).Width = 800 .Columns(6).Caption = "Thành tiền" .Columns(6).Width = 1000 End With End Sub Kết luận Ngày nay trên thế giới công nghệ thông tin đang phát triển hết sức mạnh mẽ, nó đang có ứng dụng sâu sắc vào hầu hết các mặt của đời sống xã hội đặc biệt trong công tác quản lý. Đã có rất nhiều phone mom quản lý lĩnh vực khác nhau nhưng các phone mom giúp cho việc quản lý thuốc ở nước ta hiện nay vẫn còn hạn chế do tính đặc thù của các doanh nghiệp kinh doanh mặt hàng trên. Việc đưa tin học hóa đã giúp cho con người có những sự phát triển vượt bậc trong công việc quản lý thuốc. Trong những năm gần đây việc ứng dụng công nghệ thông tin vào trong công tác quản lý đang ngày càng tạo ra các phương thức quản lý tiên tiến, tận dụng được tối đa các nguồn lực sẵn có, tiết kiệm tối đa các nguồn lực, chi phí nhưng vẫn đảm bảo được kết quả tốt nhất. Trong quá trình thực tập tại công ty Tân thế kỷ em đã được giao xây dựng phần mềm quản lý thuốc của công ty Cổ phần dược phẩm Nam Hà, chương trình tuy lập trình bằng ngôn ngữ Visual Basic 6.0 và hệ cơ sở dữ liệu Access đã giải quyết được phần nào công việc quản lý thuốc cho nhân viên phòng dự án, giúp tiết kiệm được thời gian và chi phí quản lý thuốc của công ty cổ phone dược phẩm Nam Hà. Do thời gian và trình độ còn hạn chế nên em chưa thể bao quát hết các tình huống mà trong thực tế mà một nhà quản lý thuốc gặp phải cho nên phần mềm mới chỉ hoàn thành ở góc độ cơ bản chưa phản ánh hết khó khăn của công việc quản lý thuốc. Cho nên đề tài của em không tránh khỏi những sai sót. Em rất mong sự góp ý của thầy cô. Một lần nữa em xin chân thành cảm ơn sự giúp đỡ tận tình của Th.S Trần Thanh Hải và các cán bộ phần mềm của công ty Tân thế kỷ và các cán bộ quản lý thuốc của công ty Cổ phần dược phẩm Nam Hà đã giúp em hoàn thành đề tài này. Em xin chân thành cảm ơn!

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

  • docXây dựng phần mềm quản lý thuốc cho công ty Cổ phần Dược phẩm Nam Hà.doc