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
91 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2522 | Lượt tải: 1
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:
- 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à.doc