KHOA CÔNG NGH
XÂY DỰNG PH
HÀNG BÁN THU
Giáo viên hướng d
Ths.BÙI THỊ HỒNG
KHOA CÔNG NGHỆ THÔNG TIN
LUẬN VĂN TỐT NGHIỆP
NG PHẦN MỀM QUẢN LÝ CHÀNG BÁN THUỐC ng dẫn: NG PHÚCSinh viên th CAO DI MSSV Lớp Khóa
Hậu Giang 05, Năm 2012
N LÝ CỬA
Sinh viên thực hiện:
CAO DIỆP DUY
MSSV : 0951190107 : ĐH CNTT
Trang 2cơng trình nghiên cứu của cá nhân tôi được thực hiện dưới sự giúp đỡ khoa học của Ths.Bùi Thị Hồng Phúc
Trang 3Lời đầu tiên, tôi xin chân thành cám ơn Ths Bùi Thị Hồng Phúc, người
đã trực tiếp hướng dẫn tơi hồn thành luận văn này Với những lời chỉ dẫn, những tài liệu, sự tận tình hướng dẫn và những lời động viên của Cơ đã giúp tơi vượt qua nhiều khó khăn trong q trình thực hiện luận văn này.
Tơi cũng xin chân thành cảm ơn đến các q thầy cơ của Khoa CNTT, Trường ĐH Võ Trường Toản đã hết lịng giảng dạy cho tơi các kiến thức vơ
cũng q báu, những kiến thức này rất có giá trị cho tôi và giúp tôi rất nhiều khi tôi thực hiện luận văn
Sinh viên thực hiện
Cao Diệp Duy
Trang 4• Chuyên ngành:
• Cơ quan cơng tác:
• Họ và tên : • Mã số sinh viên : • Chuyên ngành : • Tên đề tài : NỘI DUNG NHẬN XÉT
1 Tính phù hợp của đề tài với chuyên ngành đào tạo:
2 Về hình thức:
3 Ý nghĩa khoa học, thực tiễn và tính cấp thiết của đề tài:
4 Độ tin cậy của số liệu và tính hiện đại của luận văn:
5 Nội dung và các kết quả đạt được:
Trang 5
Hậu Giang, ngày … tháng … năm …
Giáo viên phản biện
Trang 61.1 ĐẶT VẤN ĐỀ 1
1.1 HƯỚNG GIẢI QUYẾT VẤN ĐỀ 2
CHƯƠNG 2 3
2.1 C# VÀ NET FRAMEWORK 3
2.1.1 NET Framework 3
2.1.2 Ngôn ngữ C# 3
2.2 TỔNG QUAN VỀ HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ORACLE 8
2.2.1 Ưu điểm HQTCSDL Oracle 9
2.2.2 Kiến trúc 10
2.2.3 Các kiểu dữ liệu trong Oracle 12
2.3 KHÁI NIỆM CƠ BẢN VỀ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG 15 2.3.1 Đối tượng 15
2.3.2 Liên kết giữa các đối tượng 15
2.3.3 Sơ đồ Use Case 15
2.3.4 Lớp (CLASS) 16
CHƯƠNG 3 18
3.1 KẾT QUẢ ĐIỀU TRA VÀ THU THẬP THÔNG TIN 18
3.1.1 Cơ cấu tổ chức hiệu thuốc Hương Việt 18
3.1.2 Đặc tả hệ thống 18
3.1.3 Yêu cầu hệ thống 20
3.2 PHÂN TÍCH THIẾT KẾ MƠ HÌNH 21
3.2.1 Sơ đồ trường hợp sử dụng(Use Case) 21
3.2.2 Xác định tác nhân 24
3.2.3 Trường hợp sử dụng 24
3.2.4 Các lớp dữ liệu 32
3.2.5 Quan hệ giữa các lớp 33
Trang 7KẾT LUẬN 94 KIẾN NGHỊ 96
Trang 8Hình 3 : Thứ tự các tốn tử 8
Hình 4: Kiến trúc cơ sở dữ liệu của Oracle trên Windows 10
Hình 5 Cấu trúc Database 11
Hình 6 Sơ đồ Use case dược sỹ trưởng 22
Hình 7 Sơ đồ Use case Dượ sỹ 23
Hình 8 Sơ đồ lớp 38
Hình 9 Đăng nhập 53
Hình 10 Nhập thuốc 54
Hình 11 Lưu đồ giải thuật nhập thuốc 56
Hình 12 Lưu đồ giải thuật định giá bán thuốc 57
Hình 13 Lưu đồ giải thuật bán thuốc không theo toa 58
Hình 11 Cập nhật giá bán thuốc 59
Hình 12 Cập nhật thơng tin thuốc 60
Hình 13 Bán thuốc khơng theo toa 61
Hình 14 Bán thuốc theo toa 62
Hình 15 Cập nhật thơng tin bệnh nhân 63
Hình 16 Form đăng nhập 65
Hình 17 Form giao diện chính đối với người dùng có quyền admin 67
Hình 18 Form giao diện chính đối với người dùng có quyền là User 68
Hình 19 Form thơng báo quyền sử dụng chức năng 69
Hình 20 Form thêm nhà sản xuất tại phiếu nhập 70
Hình 21 Form nhập thuốc 71
Hình 22 Form danh mục thuốc 72
Hình 23 Form danh mục hố đơn nhập 73
Hình 24 Form định giá bán cho thuốc mới nhập 74
Hình 25 Form định lại giá bán thuốc 75
Trang 9Hình 31 Form tìm kiếm thuốc theo mã lơ 81
Hình 32 Form tìm kiếm hố đơn bán theo mã hố đơn 82
Hình 33 Report phiếu nhập mới 83
Hình 34 Report danh sách phiếu nhập 84
Hình 35 Report danh sách phiếu nhập 85
Hình 36 Report hố đơn bán mới 86
Hình 37 Report danh sách hố đơn bán 87
Hình 38 Report danh sách hố đơn bán 88
Hình 39 Report kiểm kê lượng tồn thuốc 89
Hình 40 Report báo cáo thuốc hết hạn 90
Hình 41 Report bảng giá bán mới của thuốc 91
Hình 42 Report lịch sử giá bán thuốc 91
Trang 10Bảng 1 Bảng dữ liệu thực kiểu Number 13
Bảng 2 Mơ tả thuộc tính bảng thuoc 39
Bảng 3 Mơ tả thuộc tính bảng lo_thuoc 39
Bảng 4 Mơ tả thuộc tính bảng loai_thuoc 39
Bảng 5 Mơ tả thuộc tính bảng cong_dung 40
Bảng 6 Mơ tả thuộc tính bảng chi_tiet_cong_dung 40
Bảng 7 Mơ tả thuộc tính bảng nha_san_xuẤt 41
Bảng 8 Mơ tả thuộc tính của bảng bang_gia_theo_thoi_gian 41
Bảng 9 Mô tả thuộc tính bảng thanh_phan 42
Bảng 10 Mơ tả thuộc tính bảng chi_tiet_thanh_phan 42
Bảng 11 Mơ tả thuộc tính bảng chong_chi_dinh 43
Bảng 12 Mơ tả thuộc tính bảng chi_tiet_doi_tuong_chong_chi_dinh 43
Bảng 13 Mơ tả thuộc tính bảng dang_bao_che 44
Bảng 14 Mơ tả thuộc tính bảng duong_dung 44
Bảng 15 Mơ tả thuộc tính bảng chi_tiet_duong_dung 45
Bảng 16 Mơ tả thuộc tính bảng duoc_sy 46
Bảng 17 Mơ tả thuộc tính bảng benh_nhan 46
Bảng 18 Mơ tả thuộc tính bảng nha_cung_cap 47
Bảng 19 Mơ tả thuộc tính bảng toa_thuoc_cua_benh_nhan 48
Bảng 20 Mơ tả thuộc tính bảng chi_tiet_toa_thuoc_benh_nhan 49
Bảng 21 Mơ tả thuộc tính bảng hoa_don_ban 50
Bảng 22 Mơ tả thuộc tính bảng chi_tiet_hoa_don_ban 51
Bảng 23 Mơ tả thuộc tính bảng nha_cung_cap 51
Bảng 24 Mơ tả thuộc tính bảng phieu_nhap_thuoc 52
Trang 11Ngày nay cùng với sự phát triển về mọi mặt của xã hội, ngành CNTT đã trở thành một nhu cầu không thể thiếu trong đời sống con người Đó là một ngành khoa học kỹ thuật xây dựng trên những hệ thống xử lý dữ liệu tinh xảo
Vì vậy nền khoa học máy tính ngày nay đang giữ một vị trí trung tâm trong hầu hết các lĩnh vực của xã hội Nó phát triển một cách nhanh chóng và có nhiều bước nhảy vọt Và tại Việt Nam, ngành CNTT đã phát triển rất nhanh và đã sớm hoà nhập cùng thế giới
Việc ứng dụng CNTT vào công tác quản lý các tổ chức trong các tổ chức doanh nghiệp đã hết sức phổ biến Cũng như các doanh nghiệp khác, doanh nghiệp kinh doanh mặt hàng thuốc cũng rất cần các phần mềm quản lý để nhằm nâng cao khả năng quản lý, để đưa cơ sở 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 Đề tài “Xây dựng phần mềm quản lý cửa hàng bán thuốc” nhằm thực hiện các công tác quản lý về thông tin thuốc nhập mới, quản lý việc nhập và bán thuốc, các thống kê báo cáo thu chi hàng tháng, thống kê lượng tồn trong lô, thống kê các thuốc hết hạn sử dụng,…
Trang 12Nowadays, along with the development in every social aspects, information technology (IT) application is now being an indispensable need of people life It’s a technology branch based on sophisticated data handling system
For that reason, computer science is now a very important part in almost social field It has developed promptly and has advanced by leaps and bounds
In Viet Nam, IT has been developed and fallen in line with the world promptly The IT application in management task has been very popular in business organizations Like other corporations, pharmacies needs the softwares in helping their business management to be more convenient It’s really meaningful for pharmacies in severe competition of current price The topic about the “Construction Management Software drug store” task about the import and the sales of medicines, the statistic of monthly income and expenses, of the stock number and the medicines which is expired,etc
During the process of doing this topic, I have applied the knowledge I had studied in lecture theatre, combine with the knowledge of management procedure in pharmacy that I had obtained during my practical process in pharmacy The software is established by Visual C# language on Oracle Data Base Management System, that is integrated on Windows 7 background
Trang 131.1.ĐẶT VẤN ĐỀ
Trong những năm gần đây, nền kinh tế nước ta với những bước chuyển mình theo cơ chế thị trường đã có những phát triển nhanh chóng Đi kèm với đó là tốc độ tăng dân số và các nhu cầu trong cuộc sống ngày càng cao, vì thế các vấn đề an sinh xã hội cần phải đảm bảo để đáp ứng được nhu cầu hiện nay trong đời sống thường ngày
Để đáp ứng nhu cầu đó, số lượng phịng khám, cửa hiệu thuốc không ngừng tăng lên với quy mô và chất lượng càng được mở rộng, vì thế để quản lý theo cách thủ công thông thường sẽ rất mất thời gian, cơng sức và dễ dẫn tới những sai sót đáng tiếc Hơn hết quản lý hoạt động của hiệu thuốc có rất nhiều thơng tin cần để quản lý như thông tin phức tạp về thuốc, vì dược phẩm là một loại hàng hoá đặc biệt, hiện nay trên thị trường có đến hàng nghìn loại thuốc khác nhau, làm thế nào để có thể quản lý được chi tiết từng loại thuốc là điều khơng dễ Rất khó để có thể nắm rõ hiện tại trong kho còn bao nhiêu loại thuốc, thuộc những lô nào, hạn sử dụng của mỗi loại là bao nhiêu, giá thuốc sẽ thay đổi theo thời gian và tuỳ theo từng nhà sản xuất Quản lý bệnh nhân hàng ngày đông đúc với bệnh án khác nhau cũng như những vấn đề phát sinh như bệnh nhân đến mua thuốc theo toa hay đến tái khám nhiều lần…
Nhưng với thực trạng như hiện nay, ở một số các nhà thuốc tây còn quản lý quá trình hoạt động của nhà thuốc một cách thủ công bằng cách ghi chép thành các cuốn sổ sách lớn, dữ liệu sẽ là rất lớn khi nhà thuốc hoạt động trong vài năm, gây nên vấn đề khó khăn trong việc lưu trữ và tìm kiếm, việc lưu trữ thủ cơng bằng sổ sách cũng gặp vấn đề về tuổi thọ của dữ liệu lưu trữ rất dễ chịu sự tác động phá hoại từ môi trường
Trang 14được giải quyết một cách nhanh chóng và chính xác thì cách thức xử lý thông tin dựa trên kinh nghiệm và phương pháp thủ cơng đã khơng cịn phù hợp nữa, cần có một phương pháp mới hiệu quả hơn Việc tin học hoá các lĩnh vực quản lý thực sự là một giải pháp phù hợp đối với sự phát triển hiện nay Nó đã làm giảm bớt rất nhiều cơng sức của các nhà quản lý trong việc xử lý thông tin một cách nhanh chóng và chính xác
Vì vậy các nhà đầu tư mong muốn có một hệ thống đảm bảo: - Qui trình quản lý đạt chuẩn GPP
- Hệ thống chạy ổn định và chính xác
- Các báo cáo và thống kê được lặp hàng ngày và có sự kiểm tra chéo với các dữ liệu để có sự thống nhất và chính xác
Từ những vấn đề nêu trên đã khiến cho những nhà phân tích, nhà lập trình đi sâu nghiên cứu tạo ra phần mềm để nhằm quản lý nhà thuốc được logic và dễ dàng hơn
Qua việc khảo sát thực tế với tình trạng như trên, tôi đã chọn đề tài xây dựng phần mềm quản lý cửa hàng bán thuốc, với mong muốn đem những hiểu biết đã được học vận dụng vào thực tế, góp một phần nhỏ trong việc giải quyết các vấn đề khó khăn trong công tác quản lý nhà thuốc Hệ thống quản lý nhà thuốc sẽ giúp cho việc lưu trữ thông tin với lượng dữ liệu lớn và an toàn, giúp cho các hoạt động cơ bản của nhà thuốc được dễ dàng như việc nhập thuốc từ nhà cung cấp cũng như bán thuốc cho bệnh nhân, tạo sự dễ dàng và chính xác trong việc thống kê lãi lỗ hàng tháng và thanh lý các thuốc đã hết hạn dùng, giúp người thầy thuốc an tâm trong quá trình bán thuốc cho bệnh nhân
Bố cục luận văn gồm những phần chính sau:
• Chường 1 : Tổng quan
• Chương 2 : Cơ sở lý thuyết
• Chương 3 : Nội dung và kết quả nghiên cứu
Trang 152.1.C# VÀ NET FRAMEWORK
2.1.1.NET Framework
.Net hỗ trợ tích hợp ngơn ngữ, tức là ta có thể kế thừa các lớp, bắt các biệt lệ, đa hình thơng qua nhiều ngôn ngữ .NET Framework thực hiện được việc này nhờ vào đặc tả Common Type System - CTS (hệ thống kiểu chung) mà tất cả các thành phần Net đều tuân theo Ví dụ, mọi thứ trong Net đều là đối tượng, thừa kế từ lớp gốc System.Object
Ngoài ra Net còn bao gồm Common Language Specification - CLS (đặc tả ngơn ngữ chung) Nó cung cấp các qui tắc cơ bản mà ngơn ngữ muốn tích hợp phải thỏa mãn CLS chỉ ra các yêu cầu tối thiểu của ngôn ngữ hỗ trợ Net Trình biên dịch tuân theo CLS sẽ tạo các đối tượng có thể tương hợp với các đối tượng khác Bộ thư viện lớp của khung ứng dụng (Framework Class Library - FCL) có thể được dung bởi bất kỳ ngôn ngữ nào tuân theo CLS .NET Framework nằm ở tầng trên của hệ điều hành (bất kỳ hệ điều hành nào không chỉ là Windows) .NET Framework bao bao gồm:
• Bốn ngơn ngữ chính thức: C#, VB.Net, C++, và Jscript.NET
• Common Language Runtime - CLR, nền tảng hướng đối tượng cho phát triển ứng dụng Windows và web mà các ngơn ngữ có thể chia sẻ sử dụng
• Bộ thư viện Framework Class Library - FCL
2.1.2.Ngơn ngữ C#
C# là một ngôn ngữ rất đơn giản, với khoảng 80 từ khoá và hơn mười kiểu dữ liệu dựng sẵn, nhưng C# có tính diễn đạt cao C# hỗ trợ lập trình có cấu trúc, hướng đối tượng, hướng thành phần (component oriented)
Trang 16Định nghĩa lớp trong C# khơng địi hỏi tách rời tập tin tiêu đề với tập tin cài đặt như C++ Hơn thế, C# hỗ trợ kiểu sưu liệu mới, cho phép sưu liệu trực tiếp trong tập tin mã nguồn Đến khi biên dịch sẽ tạo tập tin sưu liệu theo định dạng XML
C# hỗ trợ khái niệm giao diện, interfaces (tương tự Java) Một lớp chỉ có thể
kế thừa duy nhất một lớp cha nhưng có thế cài đặt nhiều giao diện
C# có kiểu cấu trúc, struct (khơng giống C++) Cấu trúc là kiểu hạng nhẹ và bị
giới hạn.Cấu trúc không thể thừa kế lớp hay được kế thừa nhưng có thể cài đặt giao diện
C# cung cấp những đặc trưng lập trình hướng thành phần như property, sự kiện và dẫn hướng khai báo (được gọi là attribute) Lập trình hướng component được hỗ trợ
bởi CLR thông qua siêu dữ liệu (metadata) Siêu dữ liệu mô tả các lớp bao gồm các phương thức và thuộc tính, các thơng tin bảo mật …
Assembly là một tập hợp các tập tin mà theo cách nhìn của lập trình viên là
các thư viện liên kết động (DLL) hay tập tin thực thi (EXE) Trong NET một assembly là
một đơn vị của việc tái sử dụng, xác định phiên bản, bảo mật, và phân phối CLR cung cấp một số các lớp để thao tác với assembly
C# cũng cho truy cập trực tiếp bộ nhớ dùng con trỏ kiểu C++, nhưng vùng mã đó
được xem như khơng an tồn CLR sẽ khơng thực thi việc thu dọn rác tự động các đối tượng được tham chiếu bởi con trỏ cho đến khi lập trình viên tự giải phóng
2.1.2.1.Những cơ sở của ngôn ngữ c#
Trang 17Hình 1 : Các kiểu dữ liệu
b Biến và hằng
o Khởi tạo trước khi dùng
Trong C#, trước khi dùng một biến thì biến đó phải được khởi tạo nếu không trình biên dịch sẽ báo lỗi khi biên dịch Ta có thể khai báo biến trước, sau đó khởi tạo và sử dụng; hay khai báo biến và khởi gán trong lúc khai báo
int x; // khai báo biến trước
x = 5; // sau đó khởi gán giá trị và sử dụng int y = x; // khai báo và khởi gán cùng lúc o Hằng
Hằng là một biến nhưng giá trị không thay đổi theo thời gian const int HANG_SO = 100;
o Kiểu liệt kê
Trang 18c Biểu thức
Bất kỳ câu lệnh định lượng giá trị được gọi là một biểu thức (expression) Phép
gán sau cũng được gọi là một biểu thức vì nó định lượng giá trị được gán (là 32) x = 32;
vì vậy phép gán trên có thể được gán một lần nữa như sau y = x = 32;
Sau lệnh này y có giá trị của biểu thức x = 32 và vì vậy y = 32
d Câu lệnh
o Các lệnh rẽ nhánh khơng điều kiện
Có hai loại câu lệnh rẽ nhánh không điều kiện Một là lệnh gọi phương thức: khi trình biên dịch thấy có lời gọi phương thức nó sẽ tạm dừng phương thức hiện hành và nhảy đến phương thức được gọi cho đến hết phương thức này sẽ trở về phương thức cũ
Cách thứ hai để tạo các câu lệnh rẽ nhánh không điều kiện là dùng từ
khoá: goto, break, continue, return, hay throw
Trang 19}
o Lệnh lặp
Lệnh goto
Lệnh goto có thể dùng để tạo lệnh nhảy nhưng nhiều nhà lập trình chun nghiệp
khun khơng nên dùng câu lệnh này vì nó phá vỡ tính cấu trúc của chương trình Cách dùng câu lệnh này như sau: (giống như trong C++)
1 Tạo một nhãn 2 goto đến nhãn đó Vịng lặp while Cú pháp: while ( biểu_thức_logic ) khối_lệnh; Vòng lặp do … while Cú pháp: do khối_lệnh while ( biếu_thức_logic ) Vòng lặp for Cú pháp:
for ( [khởi_tạo_biến_đếm]; [biểu_thức]; [gia_tăng_biến_đếm] ) khối lệnh;
Câu lệnh break, continue, và return
Trang 20Hình 2 : Các nhóm tốn tử trong C#
Hình 3 : Thứ tự các tốn tử
2.2.TỔNG QUAN VỀ HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ORACLE
Hệ quản trị cơ sở dữ liệu (viết tắt là HQTCSDL, tiếng Anh là Database management system) là một phần mềm cho phép tạo lập CSDL và điều khiển hoặc truy nhập CSDL đó, đặc biệt HQTCSDL đảm bảo tính độc lập dữ liệu (là sự bất
biến của các chương trình ứng dụng đối với các thay đổi về cấu trúc lưu trữ và chiến lượt truy nhập)
Trang 21• Cung cấp các cơng cụ định nghĩa và thao tác dữ liệu linh hoạt
• Tích hợp với nhiều trình ứng dụng khác nhau: các ngơn ngữ lập trình, các ứng
dụng hỗ trợ phân tích thiết kế, v.v
2.2.1.Ưu điểm HQTCSDL Oracle
Oracle không chỉ nhắm tới những doanh nghiệp lớn mà còn nhắm tới những doanh nghiệp trung bình và cho cả những doanh nghiệp nhỏ Cụ thể là Oracle Server có đủ các phiên bản thương mại từ Personal, Standard đến Enterprise (ngoài ra cịn có Oracle lite nữa)
Về phía các doanh nghiệp: Oracle tỏ ra rất có ưu điểm như tính bảo mật cao, tính an tồn dữ liệu cao, dễ dàng bảo trì-nâng cấp, cơ chế quyền hạn rỏ ràng, ổn định,
Về phía những nhà phát triển: Oracle cũng tỏ ra rất có ưu điểm như dễ cài đặt, dễ triển khai và dễ nâng cấp lên phiên bản mớị Hơn nữa Oracle cịn tích hợp thêm PL/SQL, là một ngôn ngữ lập trình có cấu trúc - Structure Language Tạo thuận lợi cho các lập trình viện viết các Trigger, StoreProcedure, Package Đây là điểm rất mạnh so với các CSDL hiện có trên thị trường
Oracle, ngồi các kiểu dữ liệu thơng thường cịn có các kiểu dữ liệu đặc biệt khác góp phần mang lại sức mạnh cho Oracle như Blob, clob, Bfile,
Ngoài ra, bạn có thể triển khai Oracle trên nhiều OS khác nhau (Windows, Solaris, Linux, ) mà không cần phải viết lại PL/SQL codẹ Có thể import một dumpFile (backupFile) từ một máy chạy OS này sang OS khác hoặc từ một version thấp lên một version cao hơn mà không gặp bất cứ trở ngại nào (việc ngược lại cũng có thể thực hiện được nếu như bạn khơng xài các tính năng mới so với version trước đó)
Trang 222.2.2 Kiến trúc
Oracle server là một hệ thống quản trị cơ sở dữ liệu đối tượng-quan hệ cho phép quản lý thơng tin một cách tồn diện Oracle server bao gồm hai thành phần chính là Oracle instance và Oracle database
2.2.2.1 Oracle Instance
Oracle instance bao gồm một cấu trúc bộ nhớ System Global Area (SGA) và các background processes (tiến trình nền) được sử dụng để quản trị cơ sở dữ liệu Oracle instance được xác định qua tham số môi trường ORACLE_SID của hệ điều hành
Trang 23được xem xét dưới hai góc độ cấu trúc logic và cấu trúc vật lý Tuy vậy, hai cấu trúc dữ liệu này vẫn tồn tại tách biệt nhau, việc quản lý dữ liệu theo cấu trúc lưu trữ vật lý không gây ảnh hưởng tới cấu trúc logic
Oracle database được xác định bởi tên một tên duy nhất và được quy định trong tham số DB_NAME của parameter file
Hình 5 Cấu trúc database
a.Cấu trúc vật lý database :
Cấu trúc vật lý bao gồm tập hợp các control file, online redo log file và các datafile
b.Cấu trúc logic databse:
Trang 242.2.3 Các kiểu dữ liệu trong Oracle
Oracle có các kiểu dữ liệu sau đây:
- CHAR(n): Kiểu ký tự có chiều dài cố định là n, Oracle không cho phép gán
mục tin dài hơn chiều dài chỉ định đối với kiểu CHAR, chiều dài tối đa cho phép của kiểu CHAR là 255 byte
- VARCHAR2(n): Ký tự có chiều dài thay đổi đến n ký tự, hiện tại Oracle xem
kiểu VARCHAR và VARCHAR2 là như nhau tuy nhiên Oracle khuyên nên dùng VARCHAR2 Khi khai báo một biến hoặc cột kiểu VARCHAR2 phải chỉ ra chiều dài tối đa, Oracle không cho phép gán mục tin dài hơn chiều dài chỉ định đối với kiểu VARCHAR2, chiều dài tối đa cho phép của kiểu VARCHAR2 là 70 byte
- NUMBER: dùng để chứa các mục tin dạng số dương, số âm, số dấu chấm động
với 38 ký số
-NUMBER(p,s)
P : số chữ số trước dấu chấm thập phân(presesion), p từ 1 đến 38 số
S : số các chữ số tính từ dấu chấm thập phân về bên phải(scale), s từ -84 đến 127
-NUMBER(p) : số có dấu chấm thập phân cố định với presesion bằng p và scale bằng 0
-NUMBER: số với dấu chấm động với presesion là 38
Trang 25Bảng 1 BẢNG DỮ LIỆU THỰC KIỂU NUMBER
Dữ liệu thực Kiểu Lưu trữ
7456123.89 NUMBER 7456123.89 7456123.89 NUMBER(9) 7456123 7456123.89 NUMBER(9,2) 7456123.89 7456123.89 NUMBER(9,1) 7456123.8 7456123.89 NUMBER(6) Không hợp lệ 7456123.89 NUMBER(15,1) 7456123.8 7456123.89 NUMBER(7,-2) 7456100 7456123.89 NUMBER(-7,2) Không hợp lệ
- FLOAT : Dùng để khai báo kiểu dấu chấm động, với độ chính xác thập phân
38 hay độ chính xác nhị phân 126
+FLOAT(b) : khai báo kiểu chấm động với độ chính xác nhị phân là b,b từ 1 đến 126 Có thể chuyển từ độ chính xác nhị phân sang độ chính xác thập phân bằng cách nhân độ chính xác nhị phân với 0.30103
- LONG : Dùng để khai báo kiểu chuỗi kí tự với độ dài biến đổi, chiều dài tối
đa của kiểu LONG là 2 Gigabyte, kiêu LONG thường được dùng để chứa các văn bản
Kiểu LONG có một số hạn chế sau :
• Một Table khơng thể chứa nhiều hơn một cột kiểu LONG
Trang 26• Khơng thể index một cột kiểu LONG
• Khơng thể truyền tham số kiểu LONG cho hàm hoặc thủ tục
• Các hàm khơng thể trả về dữ liệu kiểu LONG
• Trong câu lệnh SQL có truy cập các cột kiểu LONG, thì việc cập nhật hoặc khoá các bảng chỉ cho phép trong cùng một CSDL
Ngồi ra, các cột kiểu LONG khơng được tham gia trong các thành phần sau của câu lệnh SQL:
Các mệnh đề WHERE, GROUP BY, ORDER BY, CONNECT BY hoặc với tác tử DISTINCT trong câu lệnh SELECT
Các hàm sử dụng trong câu lệnh SQL như SUBSTR, INSTR
- DATE: dùng để chứa kiểu dữ liệu ngày và thời gian Oracle không cho phép
gán kiểu ngày trực tiếp, để gán giá trị kiểu ngày, bạn phải dùng TO_DATE để chuyển giá trị kiểu chuỗi ký tự hoặc kiểu số
-Đối với dữ liệu kiểu ngày bạn có thể thực hiện các phép toán cộng và trừ :
Ví dụ :
- SYSDATE + 1 : ngày hôm sau
- SYSDATE – 7 : cách đây 1 tuần
- SYSDATE + (10/1440) : 10 phút sau
- RAW: tương đương VARCHAR2, nhưng dùng để lưu dữ liệu dạng byte hay
nhị phân như hình ảnh, âm thanh
- LONGRAW: tương đương LONG, nhưng dùng để lưu dữ liệu dạng byte hay
Trang 272.3 KHÁI NIỆM CƠ BẢN VỀ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG 2.3.1 Đối tượng
Đối tượng là thành phần trọng tâm của cách tiếp cận hướng đối tượng Một đối tượng là một đại diện của bất kì sự vật nào cần được mơ hình trong hệ thống và đóng một vai trị xác định trong lĩnh vực ứng dụng
Một thực thể phải thoả ba nguyên lý:
• Phân biệt(distinction): đơn vị duy nhất(định danh)
• Thường xun(permanence): q trình sống(trạng thái)
• Hoạt động(activity): vai trị, hành vi
Ví dụ:
Một đối tượng con người gồm có: tên Duy(định danh), tóc đen, da vàng, mắt đen…(trạng thái),chạy(), ngồi(), đi()….(hành vi)
2.3.2 Liên kết giữa các đối tượng
Mối kết hợp(association)-liên kết ngữ nghĩa:
Giảng dạy
Phân cấp (hierarchy) – liên kết cấu trúc:
2.3.3.Sơ đồ Use Case
Use Case là một kỹ thuật được dùng trong kỹ thuật phần mềm và hệ thống để nắm bắt yêu cầu chức năng của hệ thống Use Case mô tả sự tương tác đặc trưng giữa người dùng bên ngoài (actor) và hệ thống Nó thể hiện ứng xử của hệ thống đối
Đối tượng = định danh + trạng thái + hành vi
Giáo viên A Lớp học X
Một xe Ơtơ
Trang 28với bên ngoài, trong một hoàn cảnh nhất định, xét từ quan điểm của người sử dụng[1] Nó mơ tả các u cầu đối với hệ thống, có nghĩa là những gì hệ thống phải làm chứ khơng phải mô tả hệ thống làm như thế nào Tập hợp tất cả Use Case của
hệ thống sẽ mô tả tất cả các trường hợp mà hệ thống có thể được sử dụng
Mỗi Use Case mô tả cách thức actor tương tác với hệ thống để đạt được mục tiêu
nào đó Một hoặc nhiều kịch bản (scenario) có thể được tạo ra từ mỗi Use Case,
tương ứng với chi tiết về mỗi cách thức đạt được mục tiêu nào đó Khi mơ tả Use Case, người ta thường tránh dùng thuật ngữ kỹ thuật, thay vào đó họ sử dụng ngơn ngữ của người dùng cuối hoặc chuyên gia về lĩnh vực đó Để tạo ra Use Case, cần phải có sự hợp tác chặt chẽ giữa người phân tích hệ thống và người dùng cuối Một trong những cách biểu diễn trực quan phổ biến hiện nay là lược đồ Use Case của UML
2.3.4.Lớp (CLASS)
Một lớp là một mô tả của một tập hợp - một loại các đối tượng có:
• Cùng cấu trúc (định danh, đặc trưng)
• Cùng hành vi (trạng thái, vai trị)
Trình bày của lớp: là một hình chữ nhật gồm ba phần (khơng bắt buộc)
tên lớp, thuộc tính, toán tử
Trong giai đoạn cài đặt, định danh của lớp được cài đặt từ một khoá Khoá này cho phép phân biệt rõ các đối tượng của lớp một cách duy nhất khái niệm khố có thể cho phép truy cập bởi người dùng một cách tường minh hoặc ngầm định Một khố tường minh có thể được khai báo
XE+So_xe+Loai_xe+Tai_xe+So_luong_san_xuat+Thay_doi_tai_so()+So_luong_san_xuat()Tên lớp
Thuộc tính (mơ tả trạng thái)
Trang 29chung với trạng thái của lớp trong khi đó khái niệm định danh là một
khái niệm độc lập Và có các ý nghĩa sau:
• Xác định tính duy nhất của đối tượng
• Có ý nghĩa sử dụng đối với người dùng
Ví dụ: lớp DUOC_SY có khố là mã dược sỹ
Lớp trừu tượng – lớp cụ thể :
Tất cả các thể hiện đối tượng của một lớp trừu tượng đều xuất phát từ một trong những lớp cụ thể của nó Một lớp trừu tượng không chứa đựng trực tiếp các đối tượng, các thể hiện của nó chỉ là sự xác định trừu trượng hơn của các thể hiện đối tượng trong các lớp cụ thể
Trang 30CHƯƠNG 3
NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU
3.1 KẾT QUẢ ĐIỀU TRA VÀ THU THẬP THÔNG TIN 3.1.1 Cơ cấu tổ chức hiệu thuốc Hương Việt
Hiệu thuốc Hương Việt là cơ sở bán thuốc với qui mô vừa và nhỏ với cơ cấu tổ chức gồm có một dược sỹ trưởng thực hiện các công tác quản lý nhân viên và mọi hoạt động của nhà thuốc, mọi vấn đề của nhà thuốc đều phải thông qua dược sỹ trưởng Nhân viên đến làm việc phải là dược sỹ, sẽ đảm nhận nhiệm vụ hỗ trợ trong việc bán thuốc, thống kê thuốc và nhắc nhở dược sỹ trưởng nhập thuốc đã hết hay thanh lý các thuốc hết hạn sử dụng, báo cáo doanh thu hàng tháng cho dược sỹ trưởng
3.1.2 Đặc tả hệ thống
Quá trình hoạt động của nhà thuốc diễn ra theo qui trình như sau :
Trang 31thông tin toa thuốc của bệnh nhân bao gồm: ngày lập toa, tên thuốc, số lượng, số ngày dùng, buổi dùng, liều lượng mỗi lần dùng, của bác sĩ nào lập toa, thuộc cơ quan nào Sau khi bán thuốc hệ thống sẽ cập nhật lại số lượng của những thuốc đã được bán ra trên lô tương ứng Hoá đơn bán sẽ được in ra một bản sao đưa cho bệnh nhân
Hàng tuần, hàng tháng dược sỹ sẽ tiến hành kiểm kê số thuốc tồn để kịp thời nhập thuốc, lượng tồn sẽ được tính theo sự chênh lệch giữa số lượng nhập vào và số lượng bán ra, việc kiểm kê sẽ được thực hiện trên từng lô thuốc, mỗi lô chứa một thuốc, lô thuốc sẽ chứa tên thuốc, số lượng, điều kiện bảo quản, hạn sử dụng thuốc Nếu lượng tồn còn lại của lơ thuốc nào cịn ít hoặc đã hết thì dược sỹ sẽ tiến hành nhập thêm loại thuốc đó Việc nhập thuốc sẽ được nhập theo từng lô thuốc Có thể nhập một hoặc nhiều lơ thuốc trong mỗi lần nhập Khi nhập thuốc dược sỹ sẽ lưu hoá đơn nhập thuốc, hoá đơn nhập bao gồm tên của nhà cung cấp, tên dược sỹ nhập, ngày nhập, mã lô, tên thuốc, số lượng, đơn vị, giá nhập và tổng tiền Sau đó dược sỹ phải cập nhật thông tin của thuốc mới vừa được nhập vào Để tiện cho việc liên hệ, thông tin nhà cung cấp sẽ được quản lý gồm: tên nhà cung cấp, địa chỉ, email, số điện thoại, số fax Nhà thuốc Hương Việt quản lý thông tin các dược sỹ theo các thông tin họ tên, năm sinh, số điện thoại, địa chỉ Mỗi dược sỹ khi vào làm sẽ được cấp một tài khoản người dùng để sử dụng phần mềm, mỗi tài khoản gồm có tên dược sỹ, tên đăng nhập, mật khẩu và quyền người dùng
Trang 32quản lý gồm các thông tin : tên nhà sản xuất, địa chỉ, số điện thoại, email, fax, mỗi thuốc có thể có nhiều đối tượng chống chỉ định khác nhau
Việc tìm kiếm được thực hiện một cách chính xác và dễ dàng theo tên và mã của thuốc, theo loại thuốc, dạng bào chế hay theo mã lô Người dùng cũng có thể tìm hố đơn bán và hố đơn nhập theo mã hoá đơn, hay theo tên của đối tác(bệnh nhân đối với hoá đơn bán, nhà cung cấp đối với hoá đơn nhập), trong khoảng thời gian từ ngày đến ngày, trong tháng hay theo năm để thuận tiện trong việc thống kê, báo cáo
Hệ thống hổ trợ các báo cáo và thống kê sau: thống kê lãi lỗ theo tháng, theo khoảng thời gian, hay thống kê trên năm, thống kê phiếu nhập, thống kê hoá đơn bán theo thời gian, bao cáo thuốc hết hạn sử dụng, báo cáo lượng tồn của thuốc, báo
cáo giá bán thuốc
3.1.3 Yêu cầu hệ thống
3.1.3.1.Yêu cầu chức năng: Hệ thống Quản lý thuốc được xây dựng nhằm thực
hiện các chức năng sau:
Chức năng quản lý hệ thống
• Đăng nhập
• Khởi tạo User
• Xóa User
• Hiệu chỉnh User
Chức năng cập nhật danh mục
• Danh mục Loại thuốc
• Danh mục Thuốc
• Danh mục Lơ thuốc
• Danh mục Loại thuốc
Trang 33• Danh mục Dược sỹ • Danh mục Bệnh nhân • Danh mục Nhà cung cấp Chức năng xử lí • Bán thuốc • Nhập thuốc
• Kiểm kê thuốc
• Thanh lý thuốc hết hạn
• Cập nhật giá bán thuốc theo thời gian
• Tìm kiếm thuốc
• Thống kê, báo cáo
3.1.3.2.Yêu cầu phi chức năng
Hạn chế thấp nhất các sai sót có thể xảy ra trong q trình sử dụng chương trình
Đảm bảo đúng quy trình nghiệp vụ
Chương trình chạy ổn định, chính xác, an tồn
Giao diện thân thiện, dễ sử dụng
3.2.PHÂN TÍCH THIẾT KẾ MƠ HÌNH
3.2.1.Sơ đồ trường hợp sử dụng(Use Case)
Trang 34Hình 6 Sơ đồ Use case dược sỹ trưởng
Nhap thuoc
<<extend>>
Nhap thong tin thuoc
Luu tru hoa don nhap
Cap nhat thong tin thuocQuan ly thuoc
<<extend>>
Tim kiem thuoc
<<extend>><<extend>>
Tim theo chong chi dinhTim theo ten thuoc
Tim theo tac dung cua thuocQuan ly duoc sy
Cap nhat thong tin duoc sy
<<extend>><<extend>>
Tim kiem duoc sy
<<extend>>
Tim theo ten duoc syTim theo ngay vao lamQuan ly nha cung cap
<<extend>>
Cap nhat thong tin NCC
<<extend>>
Tim kiem NCC
<<extend>>
Tim theo tenTim theo ma
<<extend>><<extend>>
Tim theo nha san xuatNhap thong tin nha cung cap
<<extend>>
<<extend>>
<<include>>
Cap nhat gia thuoc
<<extend>>
Duoc sy truong
Dang Nhap
Nhan thong ke, bao cao tu duoc sy
<<extend>>
Tthong ke thuoc het han
Thong ke luong ton thuoc
Bao cao doanh thu hang thang
<<extend>>
Trang 35Sơ đồ Use case của Dược sỹ
Hình 7 Sơ đồ Use case Dược sỹ
Duoc sy
Dang nhapBan thuoc
<<extend>>
Ban thuoc theo toa thuocBan thuoc khong theo toa
<<extend>>
Luu thong tin toa thuoc
<<include>>
Quan ly benh nhan
<<extend>>
Cap nhat thong tin benh nhan
<<extend>>
Tim kiem benh nhan
<<extend>> Tim theo ten benh nhan
Quan ly nha san xuat
<<extend>> Cap nhat thong tin nha san xuat<<extend>>
Tim kiem nha san xuat
<<extend>>
Thong ke, bap cao
<<extend>>
Kiem ke thuoc qua han su dung
Bao cao doanh so ban hang thangKiem ke so luong ton
Bao cao bang gia thuoc theo ngay
<<extend>>
Xuat hoa don ban
<<include>>
<<include>>
Nhap thong tin benh nhan
<<include>>
<<include>>
Tim kiem benh nhan mua thuoc theo toa
Trang 363.2.2.Xác định tác nhân
Dược sỹ trưởng: Là người quản lý mọi hoạt động của nhà thuốc, mọi vấn
đề của nhà thuốc sẽ do dược sỹ trưởng ra quyết định giải quyết, là người quản lý việc nhập thêm thuốc và quản lý các nhân viên, nhận các thống kê
báo cáo từ Dược sỹ
Nhân viên(Dược sỹ): Là người đảm nhận nhiệm vụ bán thuốc, kiểm kê,
báo cáo doanh thu hàng tháng
3.2.3.Trường hợp sử dụng
3.2.3.1.Liệt kê các trường hợp sử dụng
a Khởi động hệ thống/Đóng hệ thống
b Đăng nhập/Đăng xuất
c Quản lý người sử dụng d Mua thuốc
e Phân loại thuốc f Quản lý thuốc
g Cập nhật thông tin thuốc h Cập nhật giá bán thuốc i Cấp thuốc cho bệnh nhân j Thanh lý thuốc
k Kiểm kê thuốc l Tìm kiếm
m Thống kê, báo cáo
3.2.3.2.Mơ tả Use case
a Use Case đăng nhập: Định danh:
- Tên: Đăng nhập
- Mục tiêu (tóm tắt): Use case này mô tả cách một người dùng đăng nhập
vào Hệ thống quản lý bán thuốc
Trang 37- Ngày tạo và ngày cập nhật mới nhất: 07/05/2013
- Người tạo: Cao Diệp Duy
- Phiên bản (version): 1.0
Chuỗi hành vi:
- Mô tả tổng quát chuỗi: Use case này bắt đầu khi một actor muốn đăng nhập vào Hệ thống quản lý bán thuốc
- Điều kiện đầu (pre-cond) : khơng có
- Chuỗi liên kết các thông báo (messages) :
1 Hệ thống yêu cầu actor nhập tên và mật khẩu
2 Actor nhập tên và mật khẩu
3 Hệ thống kiểm chứng tên và mật khẩu được nhập và cho phép actor đăng nhập vào hệ thống
- Điều kiện cuối (post-cond) : Nếu use case thành công, actor lúc này đã
đăng nhập vào hệ thống Nếu không trạng thái hệ thống không thay đổi - Xử lý ngoại lệ:
Nếu actor nhập sai tên hoặc mật khẩu, hệ thống sẽ hiển thị một thơng báo lỗi Actor có thể chọn trở về đăng nhập lại hoặc hủy bỏ việc đăng nhập, lúc này use case kết thúc
Nếu actor nhập sai :
+ Username : sẽ hiển thị thông báo không tồn tại username
+ Password : sẽ hiển thị thông báo yêu cầu nhập đúng mật khẩu
b Use case nhập thuốc:
Định danh:
Trang 38- Mục tiêu (tóm tắt): Use case này mô tả cachs thức một actor nhập một
thuốc mới
- Tác nhân chính: Dược sỹ
- Ngày tạo và ngày cập nhật mới nhất: 07/05/2013
- Người tạo: Cao Diệp Duy
- Phiên bản (version): 1.0
Chuỗi hành vi:
- Mô tả tổng quát chuỗi: nhập thông tin thuốc mới từ nhà cung cấp vào hệ thống
- Điều kiện đầu(pre-cond): actor đăng nhập thành công
- Chuỗi liên kết các thông báo (messages):
1 Hệ thống hiển thị màn hình nhập thuốc mới và cho phép actor nhập thông tin nhà cung cấp và thông tin thuốc mới
2 Actor nhập thông tin nhà cung cấp và các thông tin chi tiết của thuốc mới
3 Hệ thống kiểm tra thông tin nhập và hiển thị thông báo hoàn tất việc nhập thuốc
- Điều kiện cuối (post-cond) : thông báo nhập thành công, lưu vào cơ sỡ
dữ liệu và in ra hoá đơn nhập thuốc nếu use case thành công
- Xử lý ngoại lệ:
1 Nếu actor nhập sai hoặc thiếu thông tin cần thiết, hệ thống hiển thị thông báo yêu cầu nhập lại
Trang 39c Use case bán thuốc:
Định danh:
- Tên: bán thuốc
- Mục tiêu (tóm tắt): Use case này mơ tả cách một người dùng tiến hành
bán thuốc
- Tác nhân chính: Dược sỹ
- Ngày tạo và ngày cập nhật mới nhất: 07/05/2013
- Người tạo: Cao Diệp Duy
- Phiên bản (version): 1.0
Chuỗi hành vi:
- Mô tả tổng quát chuỗi: Use case này bắt đầu khi một dược sỹ tiến hành bán thuốc cho bệnh nhân đến mua thuốc
- Điều kiện đầu (pre-cond) : actor đăng nhập thành công
- Chuỗi liên kết các thông báo (messages) :
1 Hệ thống sẽ hiển thị màn hình bán thuốc và cho phép người dùng nhập các thông tin cần thiết: nhập tên bệnh nhân đến mua, triệu chứng bệnh, chuẩn đốn bệnh, và các thơng tin của thuốc bán cho bệnh nhân
2 Sau đó hệ thống tiến hành kiểm tra thơng tin và thơng báo hồn tất việc bán thuốc
- Điều kiện cuối (post-cond) : Nếu use case thành công, hệ thống thông
báo bán thuốc thành công và cập nhật vào cơ sỡ dữ liệu
- Xử lý ngoại lệ:
1 Nếu người dùng nhập sai hoặc thiếu thông tin cần thiết hệ thống hiển thị thông báo yêu cầu nhập lại
Trang 40hệ thống hiển thị thông báo không thể bán trên lô này, số lượng thuốc tồn còn quá ít so với số lượng thuốc bán
d Use case cập nhật giá bán thuốc:
Định danh:
- Tên: cập nhật giá bán thuốc
- Mục tiêu (tóm tắt): Use case này mô tả cách một người dùng cập nhật
giá bán của thuốc theo thời gian
- Tác nhân chính: Dược sỹ
- Ngày tạo và ngày cập nhật mới nhất: 07/05/2013
- Người tạo: Cao Diệp Duy
- Phiên bản (version): 1.0
Chuỗi hành vi:
- Mô tả tổng quát chuỗi: Use case này bắt đầu khi một actor muốn cập nhật giá bán thuốc khác nhau của một thuốc thuộc nhiều nhà sản xuất theo thời gian từ ngày bắt đầu đến ngày kết thúc
- Điều kiện đầu (pre-cond) : actor phải đăng nhập thành cơng và có danh
mục thuốc cần cập nhật giá bán
- Chuỗi liên kết các thông báo (messages) :
1 Hệ thống yêu cầu actor nhập thông tin thuốc cần cập nhật giá như, mã, tên thuốc,tên nhà sản xuất, giá bán, ngày bắt đầu và ngày kêt thúc
2 Actor nhập các thông tin cần thiết
3 Hệ thống tiến hành kiểm tra thông tin và thông báo hoàn tất việc cập nhật giá
- Điều kiện cuối (post-cond) : Nếu use case thành công, thông tin giá bán