Tải bản đầy đủ (.pdf) (20 trang)

báo cáo môn cơ sở dữ liệu kĩ thuật lập trình xây dựng hệ thống quản lý nhà thuốc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.24 MB, 20 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b> TRƯỜNG Đ I H C BÁCH KHOA HÀ N IẠỌỘVI N S PH M KỸỸ THU TỆƯẠẬ</b>

<b>---</b> <b></b>

<b>Đềề tài: Xây d ng h thốống qu n lý nhà thuốốcựệả</b>

<b><small> Giáo viền hướng dâẫn: Đốẫ Th Ng c Di pịọệ Sinh viền th c hi n: Nguyềẫn Th Thu Trangựệị</small></b>

<b><small> Lương Huy Hoàng Ph m Minh Dũngạ Nhóm: 12</small></b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b><small> L p: Cống ngh giáo d c 02ớệụ</small></b>

<b>BẢNG PHÂN CƠNG VIỆC</b>

hồn thành1 Nguyễn

Thị Thu Trang

<small>Giới thiệu bài toán</small>

<small>Thiết kế CSDL - Thiết kế các quan hệ - Viết câu lệnh MySQL truy vấn dữ liệu theo đề bài - Trình bày lệnh MySQL cùng ví dụ chạy các lệnh đó ra đúng kết quả - Phân tích bài tốn, mơ tả hoạt động, đánh giá hạn chế về phần CSDL.</small>

Huy Hồng

<small>Phân tích và lên ý tưởng về các thành phần có trong web </small>

<small>- Phân tích các hàm, đối tượng cần có. - Viết hàm theo yêu cầu đề bài JS - Trình bày code </small>

<small>- Phân tích bài tốn, mơ tả hoạt động, đánh giá hạn chế về phần JS</small>

Minh Dũng

<small>Phân tích object có trong web - Tạo trang HTML, CSS </small>

<small>- Trình bày trang HTML và CSS hoàn chỉnh - Viết hàm theo yêu cầu đề bài JS</small>

<small> - Phân tích bài tốn, mơ tả hoạt động, đánh giá hạn chế về phần giao diện HTML CSS.</small>

100%

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>I.Giới thiệu bài toán</b>

bán thuốc qua giấy tờ , viết tay . Việc này có thể xảy ra nhiều ảnh hưởng khơng tốt như : quên giá thành sản phẩm , doanh thu thất thốt , khó quản lý số lượng nhập và bán ,… Vậy để tạo hiệu quả tốt cần phải làm thế nào ? Đây là vấn đề của nhóm em, dưới đây nhóm em xin trình bày đề tài lập trình quản lý hiệu thuốc .

Đề tài :Một hiệu thuốc bao gồm các dạng thuốc viên , thuốc nước , thuốc bột . Khi có người mua thuốc hiệu thuốc sẽ xuất hóa đơn mua thuốc và lưu lại hệ thống thông tin đơn thuốc . Xây dựng một hệ thống quản lý thuốc gồm các chức năng :

- Thêm , sửa , xóa thơng tin của một loại thuốc theo tên nhập vào- Lưu thông tin về đơn thuốc đã bán ( một đơn thuốc gồm nhiều loại

thuốc khác nhau )

- Tìm kiếm và hiển thị thơng tin về một đơn thuốc theo mã đơn thuốc . Tùy theo loại thuốc mà thơng số kích thước thuốc là khác nhau . Với thuốc viên tính theo đơn vị viên , thuốc nước tính theo đơn vị ml , thuốc bột tính theo đơn vị mg.

- Thống kê số lượng thuốc đã bán và doanh thu hiệu thuốc trong một khoảng thời gian nhập vào ( từ ngày/tháng/năm … đến ngày/tháng/năm )

<b>II.Phân tích bài tốn , mơ tả hoạt động, phân tích dữ liệu.</b>

1.Xác định các tập/kiểu thực thể và các thuộc tính tương ứng 1.Thuốc

<small> Id Name Type</small>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<small> Price Stock Until 2.Hóa đơn Id Datetime 3.Doanh thu Quantity Id Total </small>

<b>2.Xác định các liên kết và kiểu liên kết</b>

- Một hóa đơn gồm nhiều loại thuốc-Doanh thu gồm nhiều hóa đơn- Doanh thu gồm nhiều loại thuốc

- Mối liên kết giữa tập thực thể thuốc và tập thực thểhóa đơn là mối liên kết N-M bởi vì thơng tin của nhiềuthuốc có trong một hóa đơn nhưng nhiều hóa đơn cóchứa thơng tin của nhiều thuốc.

- Mối liên kết giữa tập thực thể doanh thu và tập thựcthể hóa đơn là mối liên kết 1-N bởi vì một doanh thubao gồm nhiều hóa đơn nhưng một hóa đơn chỉ thuộcmột doanh thu .

- Mối liên kết giữa tập thực thể doanh thu và tập thựcthể thuốc là mối liên kết 1-N bởi vì một doanh thu baogồm nhiều loại thuốc nhưng một loại thuốc chỉ thuộcmột doanh thu .

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>III. Thiết kế các quan hệ trong Cơ sở dữ liệu</b>

1. Sơ đồ thực thể liên kết (ERD).1

<b>2. Lược đồ quan hệ ( RL).</b>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Một lược đồ quan hệ là một biểu diễn dạng bảng củamột cơ sở dữ liệu và các mối quan hệ của nó. Đối với cơsở dữ liệu đã cho, lược đồ quan hệ có thể được biểudiễn như sau:

1.Medicine :Id (Primary Key)Name

TypePriceStockUnit

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Prescription_id (Primary Key)

Medicine_id (Primary Key, Foreign Key to Medicine(Id))Quantity

<b>IV.Thiết kế các lớp/hàm trongJavascript</b>

Cơ chế hoạt động tổng quát của các 昀椀le Javascript:lấy dữ liệu người dùng nhập vào (textbox, checkbox,button,…) xử lý input đưa ra truy vấn và lấy dữ liệu từdatabase (mysql) xử lý dữ liệu nhận được và trả vềkết quả cho người dùng.

<b> 1.Tạo sever và liên kết cơ sở dữ liệu (昀椀le:</b>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

- Bất kì package NPM nào, bạn cần phải npm installmodule, sau đó sử dụng lệnh require để load module. - Sử dụng 3 packages trong bài: Express; cors vàmysql2.

- Liên kết cơ sở dữ liệu bằng lệnh:mysql.createConnection({ //Thông tin: host, user,database, password })

- Hai dòng lệnh 8 và 9 để cho phép cors với toàn bộ urlđược tạo.

<b>1.2 Tạo các đường link trả về dữ liệu truy vấn từDatabase:</b>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Đây là một đoạn mã JavaScript dùng để thực hiện truy vấn SQL. Hàmconnection.query được gọi để thực hiện truy vấn, với query là chuỗitruy vấn SQL và một hàm callback để xử lý kết quả trả về. Trong hàmcallback, nếu có lỗi (err khác null), mã trả về một đối tượng JSON vớitrạng thái false, một mảng rỗng và thông báo "Cập nhật thất bại". Nếukhơng có lỗi, mã trả về một đối tượng JSON với trạng thái true, mộtmảng rỗng và thông báo "Cập nhật thành công".

Trong mã trên, chúng ta đang định nghĩa một endpoint GET cho URL /medicines. Khi có một yêu cầu GET đến URL này, chương trình sẽ thực hiện một truy vấn

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

SELECT trên bảng medicine trong cơ sở dữ liệu và trả về kết quả dưới dạng JSON.

Cụ thể, chúng ta sử dụng hàm connection.query đểthực hiện một truy vấn SELECT trên bảng medicine. Khitruy vấn hồn tất, nếu khơng có lỗi xảy ra, chúng ta sẽtrả về kết quả dưới dạng JSON bằng cách gọi res.sendvới tham số là một đối tượng JSON định nghĩa trạng tháithành công, dữ liệu trả về (kết quả của truy vấn) vàmột thông báo rỗng. Nếu có lỗi xảy ra, hàmconnection.query sẽ throw một ngoại lệ và chương trìnhsẽ dừng lại.

- Trường hợp tạo Endpoint mà câu truy vấn cần cóinput là dữ liệu người dùng nhập vào.

- Sau đó, chúng ta sử dụng giá trị của id để xây dựngmột truy vấn DELETE tới bảng medicine để xóa hàng có

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

id tương ứng. Chúng ta sử dụng hàm connection.queryđể thực hiện truy vấn DELETE. Khi truy vấn hoàn tất,nếu khơng có lỗi xảy ra, chúng ta sẽ trả về một thôngbáo thành công dưới dạng JSON bằng cách gọi res.sendvới tham số là một đối tượng JSON định nghĩa trạng tháithành cơng và một thơng báo "Xóa thành công".

<b>2.Xử lý dữ liệu giữa client và Server2.1. Lấy dữ liệu từ url tạo ở server:</b>

- Như bên trên ta đã có cách để tạo ra một server và đường link trả vềdữ liệu truy vấn

2.2.Hàm thêm , sửa , xóa thơng tin của một loại thuốc theo tênnhập vào

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

- Hàm xóa thơng tin của một loại thuốc khỏi cơ sở dữliệu . Khi nút “xóa” được nhấn , hàm được kích hoạtvà các trường được trống .

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

- Hàm thêm thông tin của một loại thuốc.

hoạt để thực hiện một yêu cầu POST đến điểm cuốiAPI tại DIR_API + “createMedicine” với giá trị đầuvào và giá trị nhập vào của JSON.

được tải lại.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b>- Hàm cập nhật thông tin thuốc sau khi sửa . Khi</b>

nút “cập nhật” được nhấn, chức năng sẽ được kíchhoạt và lấy giá trị từ các trường trong mẫu.Nếu Idtrống , hệ thống sẽ hiện thị thơng báo : “Vui lịng

Sự kiện click của nút có id là btn-search-bill sẽ gửi mộtyêu cầu GET đến API tại địa chỉhttp://127.0.0.1:3000/bills/bill_id, với bill_id là giá trị đãchọn trong select box bills. Kết quả trả về sẽ được hiểnthị trong một danh sách các mục có class là medicines-order. Tổng tiền sẽ được tính dựa trên số lượng và giá

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

của từng mặt hàng và hiển thị trong một phần tử cóclass là total-money.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>2.4.Thống kê số lượng thuốc đã bán và doanhthu hiệu thuốc trong một khoảng thời giannhập vào.</b>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

- Đoạn code trên định nghĩa một chức năng

loadStatistical() để tải dữ liệu thống kê từ API. Khi trang web được tải xong, nó sẽ gọi hàm init() để thựchiện việc tải dữ liệu.

điểm cuối API tại "http://127.0.0.1:3000/statistics". Nếu yêu cầu thành công, dữ liệu trả về sẽ được xử lýbằng hàm success(). Dữ liệu được xử lý bằng cách parse dữ liệu từ một chuỗi JSON sang đối tượng JavaScript.

-Sau đó, nó sẽ truy xuất các phần tử HTML với id "medicines" và "monthly" để hiển thị dữ liệu thống kê về số lượng thuốc và doanh thu hàng tháng. Nếu khơng tìm thấy dữ liệu, một thơng báo sẽ được hiển thị.

-Trong trường hợp có lỗi xảy ra khi gửi yêu cầu, hàmerror() sẽ được gọi để in ra dữ liệu lỗi vào console.

V.Triển khai hệ thống

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

1.Xác định các trường dữ liệu cần thiết cho mỗi loại thuốc ( Tên ,Mã , Đơn vị tính ,Loại, Giá , Số lượng ).

2.Tạo các lớp để lưu trữ thơng tin thuốc , hóa đơn vàdoanh thu.

3. Xây dựng các chức năng thêm, sửa, xóa, tìm kiếm,hiển thị thơng tin cho cán bộ.

+ Thêm một loại thuốc : Cho phép quản trị viên nhậpthông tin về tên, mã , loại ,đơn vị tính , giá, số lượnglưu thông tin vào hệ thống.

+ Sửa thông tin một loại thuốc : Cho phép quản trịviên sửa các thông tin tên, mã , loại ,đơn vị tính , giá,số lượng của một loại thuốc đã tồn tại.

+ Xóa một loại thuốc : Cho phép quản trị viên xóamột loại thuốc .

+ Tìm kiếm đơn thuốc : Cho phép quản trị viên tìmkiếm một đơn thuốc dựa mã thuốc.

+ Hiển thị thông tin đơn thuốc : Cho phép quản trịviên xem thông tin chi tiết về tất cả đơn thuốc hoặcmột đơn thuốc cụ thể.

+Thống kê số lượng thuốc đã bán và doanh thu hiệuthuốc : Cho phép quản trị viên thống kê số lượngthuốc đã bán và doanh thu và xem thông tin về nó .+ Ngồi ra , cịn tính tốn hóa đơn và tổng doanhthu.

<b>VI.Tự đánh giá , hạn chế .</b>

Ưu điểm :

+ Lưu trữ thơng tin hiệu quả

+ Tính toán chuẩn xác , giảm khả năng thất thoátdoanh thu

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

+ Dễ dàng tìm kiếm thơng tin

+ Nội dung được làm đầy đủ , ngắn gọn dễ hiểu .+ Có sự tham gia nội dung đủ thành viên.

</div>

×