Chính vì đó, nhân dịp này em xin chân thành cảm ơn ban lãnh đạo khoa CôngNghệ Thông Tin trường Đại học Nha Trang đã tạo điều kiện về thời gian cũng như cơhội để em có thể thực tập trong
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO THỰC TẬP CHUYÊN NGÀNHỨNG DỤNG JAVA FRAMEWORK TRONG XÂY DỰNG PHẦN MỀM QUẢN LÝ PHÒNG KHÁM HỒNG CƯỜNG
Người hướng dẫn tại đơn vị: Bùi Đức Lực
Giảng viên hướng dẫn: TS Phạm Thị Thu ThIy Sinh viên thực hiện: Nguyễn Minh Trí
Mã số sinh viên: 61133202
Khánh Hòa – 01/2023
Trang 2NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Điểm thực tập: ……… / 10
GIẢNG VIÊN HƯỚNG DẪN
Trang 3Chính vì đó, nhân dịp này em xin chân thành cảm ơn ban lãnh đạo khoa CôngNghệ Thông Tin trường Đại học Nha Trang đã tạo điều kiện về thời gian cũng như cơhội để em có thể thực tập trong môi trường thực tiễn, đồng thời để em nhận thấy kiếnthức của bản thân vẫn cần phải trao dồi nhiều hơn để có thể áp dụng nó vào thực tế.Đặc biệc, em xin được bày tỏ tấm lòng biết ơn sâu sắc đến giảng viên Phạm ThịThu Thúy, người đã tạo nhiều điều kiện để em có thể hoàn thành đợt thực tập và đạtđược kết quả tốt nhất
Trong quá thực tập và thực hiện đề tài, bản thân em không thể tránh được nhiềuthiếu sót Vì vậy mong nhận được nhiều sự đóng góp đến từ thầy cô trường Đại họcNha Trang để bài báo cáo được hoàn thiện hơn
Một lần nữa em xin chân thành cảm ơn!
Sinh viên thực tập
Nguyễn Minh Trí
Trang 4Mục lục
LỜI CẢM ƠN 3
1 Giới thiệu, mục đích chọn đề tài 2
2 Nội dung thực tập 2
CHƯƠNG I: NỘI DUNG THỰC TẬP 4
1 Cơ sở lý thuyết liên quan 4
3.1 Tổng quan ngôn ngữ lập trình Java 4 3.2 Hệ quản trị cở sở dữ liệu PostgreSQL 4 3.3 Tổng quan về Maven 5 3.4 Tìm hiểu về RESTful API 5 3.5 Tổng quan về Spring framework 6 3.6 Giới thiếu về Spring Boot 8 3.7 Postman 8 2 Phân tích thiết kế ứng dụng 10
2.1 Phân tích hệ thống 10 2.2 Thiết kế hệ thống 12 3 Phát triển ứng dụng 22 3.1 Xây dựng cơ sở dữ liệu bằng PostgreSQL 22
3.2 Xây dựng chương trình bằng Spring Tool Suite 4 22
3.3 Các URI thao tác với dữ liệu 30
Trang 5PHẦN MỞ ĐẦU
1 Giới thiệu, mục đích chọn đề tài
Đề tài: Quản lý phòng khám Hồng Cường
Quản lý dữ liệu được an toàn, song truy suất và xử lý hiệu quả là mộtđiều vô cùng quan trọng trong việc phát triển các dự án website Nếu quản lýkhông tốt dễ gây ra các trường hợp không đồng bộ được dữ liệu gây tổn thất,mất mát hoặc thông tin không chính xác Điều đó sẽ ảnh hưởng nặng nề đếnquá trình vận hành website hoặc sự trải nghiệm của khách hàng
Đồng thời nhằm phục vụ cho việc thực hành kiến thức được học vàothực tiễn Từ đó học hỏi được kinh nghiệm, kỹ năng để phục vụ cho các dự ántrong tương lai
Trang 6Thời gian Nô Œi dung thực tâ ŒpTuần 1
- Lập trình hướng đối tượng với ngôn ngữ Java
- Lâp trình đa luồng
Trang 7CHƯƠNG I: NỘI DUNG THỰC TẬP
1 Cơ sở lý thuyết liên quan
3.1 Tổng quan ngôn ngữ lập trình Java
Java là một ngôn ngữ lập trình ngôn ngữ bậc cao, là một trong nhữngngôn ngữ lập trình hướng đối tượng và giúp bảo mật vô cùng mạnh mẽ Nóđược sử dụng trong việc phát triển phần mềm, trang web, game, ứng dụng diđộng và trong nhiều lĩnh vực khác
Java ban đầu có tên là là Oak, được khởi đầu bởi James Gosling và SunMicroSystem năm 1991
Java được tạo ra với tiêu chí "Viết một lần, thực thi khắp nơi", ngôn ngữnày độc lập với nền tảng và được sử dụng rộng rãi bất kể phần cứng hay hệđiều hành
3.2 Hệ quản trị cở sở dữ liệu PostgreSQL
PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ và đối tượng miễnphí và tiên tiến nhất hiện nay PostgreSQL được phát triển dựa trên
Trang 8POSTGRES 4.2 tại phòng khoa học máy tính Berkeley, đại học California Nóđược điều chỉnh linh động để có thể chạy được trên nhiều nền tảng khác nhaunhư Mac OS X, Solaris và Windows.
PostgreSQL có thể được sử dụng bởi bất cứ ai và được phục vụ cho việcquản lý tập dữ liệu bất kể lớn hay nhỏ Nó sở hữu một hệ tính năng đa dạnggiúp hỗ trợ các nhà xây dựng phát triển app bảo vệ toàn vẹn dữ liệu
3.3 Tổng quan về Maven
Maven là một công cụ tự động hóa và quản lý dự án phần mềm Nó chủyếu dành cho các lập trình viên java, nhưng cũng có thể được sử dụng để tạo
và quản lý các dự án bằng C#, Ruby, Scala hoặc các ngôn ngữ khác
Maven phục vụ cùng một mục đích như Apache Ant, nhưng dựa trên mộtkhái niệm khác và hoạt động khác
Đối với những hệ thống lớn, phức tạp, sử dụng nhiều thư viện, yêu cầuphải release liên tục nên công việc đóng gói (build & Deploy), quản lý, nângcấp và bảo trì chúng tốn rất nhiều thời gian, và khi đó chúng ta có thể sử dụngMaven Khi một dự án được phát triển bởi nhiều đội, chẳng hạn có 2 đội thamgia dự án, 2 đội đó ở 2 quốc gia khác nhau Chúng ta luôn cần có sự liên hệ đểthống nhất trong lập trình nên phải có một tiêu chuẩn nào đó để mọi người tuântheo
Trang 9API này trả các dữ liệu nào bạn làm việc với ứng dụng của mình là một
số loại dữ liệu cơ bản trong JSON hay XML
1.4.2 Khái niệm REST và RESTful
REST là cách viết tắt cho REpresentational State Transfer REST khôngphải là một chuẩn hay một giao thức, đây là cách sử dụng của một kiểu kiếntrúc khi xây dựng API Một web service là một tập hợp những giao thức và tiêuchuẩn để dùng vào việc kết nối các ứng dụng và hệ thống Web service dựa trênnhững kiến trúc REST có thể xem như RESTful webservice
Như vậy, RESTful API là một tiêu chuẩn chung về việc thết kế và thiết
kế API cho những ứng dụng web nhằm kiểm soát các resource Trọng tâm củaREST quy định việc dùng giao thức HTTP method (ví dụ GET, POST, PUT,DELETE ) và cách tạo ra URL cho ứng dụng web nhằm lưu trữ thông tinresource RESTful không quy định logic code ứng dụng và không hạn chế vềngôn ngữ lập trình ứng dụng
3.5 Tổng quan về Spring framework
1.5.1 Java Spring
Trang 10Spring là một Framework xây dựng những ứng dụng Java được sử dụngbởi nhiều triệu lập trình viên Nó giúp xây dựng những ứng dụng có hiệu suấtcao và dễ dàng nâng cấp, sử dụng lại code
Spring Framework được thiết kế dựa trên hai nguyên tắc design cơ bảnlà: Dependency Injection và Aspect Oriented Programming
1.5.2 Kiến trIc Spring, các module của Spring Framework
Kiến trúc Spring được tổ chức theo kiểu module Spring Framework baogồm các tính năng được tổ chức trong khoảng 20 module Các module có thểđược chia nhỏ như Core Container, Data Access/Integration, Web, AOP (AspectOriented Programming) , Instrumentation, Messaging, and Test
Trang 113.6 Giới thiếu về Spring Boot
Spring là một framework được ra đời để giúp các nhà phát triển có thể xâydựng hệ thống và chạy ứng dụng trên JVM một cách thuận tiện, đơn giản vànhanh chóng Đây là một mã nguồn mở được phát triển và rất nhiều người sửdụng Trên thực tế, Spring framework là tập hợp gồm rất nhiều các dự án nhỏkhác nhau như: Spring MVC (sử dụng để xây dựng các ứng dụng trên nền tảngweb), Spring Data, Spring Boot,…
Ưu điểm của Spring Boot:
- Tạo ra các ứng dụng Spring mang tính độc lập
- Nhúng trực tiếp Tomcat, Jetty hoặc Undertow mà không cầnphải triển khai ra file WAR
- Starter dependency giúp cho việc chạy cấu hình Maven trở nênđơn giản hơn
- Tự động chạy cấu hình Spring khi cần thiết
- Không sinh code cấu hình, đồng thời không yêu cầu phải cấuhình bằng XML
3.7 Postman
Postman là một công cụ cho phép chúng ta thao tác với các API, phổ biếnnhất là REST Postman là một trong những công cụ phổ biến nhất để thửnghiệm API Sử dụng Postman, chúng ta có thể gọi Rest API mà không cần viếtmột dòng mã nào
Postman hỗ trợ tất cả các phương thức HTTP (GET, POST, PUT, PATCH,DELETE, v.v.) Ngoài ra, nó còn cho phép lưu lại lịch sử các yêu cầu, rất tiện
để sử dụng lại khi cần thiết
Trang 12Hình 1 Giao diện khi sử dụng Postman
Trang 132 Phân tích thiết kế ứng dụng
2.1 Phân tích hệ thống
2.1.1 Phân tích hệ thống về dữ liệu.
2.1.1.1 Xác định thực thể
Bệnh nhân: Mã bệnh nhân, Tên bệnh nhân, Ngày sinh, Địa chỉ, Giới tính, Số
điện thoại, Yêu cầu khám, Đối tượng
Khoa: Mã khoa, Tên khoa.
Bác sĩ: Mã bác sĩ, Mã khoa, Tên bác sĩ, Địa chỉ, Số điện thoại, Giới tính, Ngày
sinh
Hồ sơ bệnh án: Mã hồ sơ bệnh án, Này bắt đầu, Ngày kết thúc, Địa chỉ, Kết
quả điều trị, Mã bệnh nhân, Mã bác sĩ
Nhà cung cấp: Mã nhà cung cấp, Tên nhà cung cấp, Địa chỉ, Số điện thoại Thuốc: Mã thuốc, Tên thuốc, Đơn giá, Đơn vị tính, Mã nhà cung cấp.
Phiếu thuốc: Mã phiếu thuốc, Mã bệnh nhân, Mã bác sĩ.
Chi tiết phiếu thuốc: Mã phiếu thuốc, Mã thuốc, Số lượmg.
Bệnh: Mã bệnh, Tên bệnh, Triệu chứng.
Sổ khám bệnh: Mã sổ, Ngày khám, Mã bác sĩ, Mã bệnh nhân, Chi phí khám Loại xét nghiệm: Mã xét nghiệm, Tên loại xét nghiệm, Đơn giá.
Phiếu xét nghiệm: Mã phiếu xét nghiệm, Mã loại xét nghiệm, Mã bệnh nhân,
Ngày xét nghiệm, Kết quả xét nghiệm, Lý do xét nghiệm
Loại phòng bệnh: Mã loại phòng, Tên loại phòng, Số chổ, Tình trạng, Đơn giá Phòng bệnh: Mã phòng, Mã loại phòng, Mã bệnh nhân, Số Giường, Số phòng,
Trang 14Biên lai: Mã biên lai, Mã nhân viên, Mã bệnh nhân, Ngày thanh toán 2.1.1.2 Xác định quan hệ các thực thể
Trang 152.2 Thiết kế hệ thống
2.2.1 Mô hình thực thể kết hợp
2.2.2 Thiết kế cơ sở dữ liệu
Trang 16 BENH_NHAN
KHOA
Trang 17 BAC_SI
HO_SO_BENH_AN
null
Mã hồ sơ bệnhán
NHA_CUNG_CAP
Trang 18STT Tên trường Kiểu dữ liệu Ràng buộc Ghi chI
THUOC
PHIEU_THUOC
1 maPhieuThuoc char(4) Primary key, notnull Mã phiếu thuốc
Trang 19STT Tên trường Kiểu dữ liệu Ràng buộc Ghi chI
1 maPhieuThuoc char(4) Primary key, notnull Mã phiếu thuốc
BENH
SO_KHAM_BENH
LOAI_XET_NGHIEM
Trang 20STT Tên trường Kiểu dữ liệu Ràng buộc Ghi chI
1 maLoaiXN char(4) Primary key, notnull Mã loại xétnghiệm
PHIEU_XET_NGHIEM
null
Mã phiếu xétnghiệm
2 tenLoaiXN char(4) Foreign key, notnull Tên loại xétnghiệm
Trang 21 LOAI_PHONG_BENH
1 maLoaiPhong char(4) Primary key, notnull Mã loại phòng
PHONG_BENH
2 maLoaiPhong char(4) Foreign key, notnull Mã loại phòng
Trang 22 LOAI_DICH_VU
DICH_VU_KHAM
1 maDVKham char(4) Primary key, notnull Mã dịch vụkhám
CHI_TIET_DVKHAM
null
Mã dịch vụkhám
Trang 23 NHAN_VIEN
CHI_TIET_BIEN_LAI
not null Mã biên lai
3 hinhThucThanhToan boolean Not null thanh toánHình thức
Trang 24 BIEN_LAI
toán
Trang 253 Phát triển ứng dụng
3.1 Xây dựng cơ sở dữ liệu bằng PostgreSQL
Tạo cơ sở dữ thông qua các câu truy vấn SQL hoặc thao tác trực tiếp trên giao diện PostgreSQL
Hình 2 Tạo cơ sở dữ liệu PracticeManagement và các table
3.2 Xây dựng chương trình bằng Spring Tool Suite 4
Liên kết cơ sở dữ liệu PracticeManagement với IDE, tại fileapplication.properties ta thực hiện
Cấu trúc cơ bản cây thư mục:
Trang 26Trong thư mục Manage chứa chương trình main của Spring Boot và các thưmục cùng cấp controller, model, service, utils.
Controller: trả về View (có chứa data sẵn, dạng trang HTML), hoặc Model thểhiện dưới dạng API cho View
Model: ở đây được hiểu như là các entity đại diện cho data trong databas, trựctiếp tương tác, đọc ghi dữ liệu trong database và trả cho service
Service: Chứa các code tính toán, xử lý Khi Controller yêu cầu, thì Servicetương ứng sẽ tiếp nhận và cho ra dữ liệu trả cho Controller (trả về Model).Controller sẽ gửi về View như trên
Utils: package chứa các lớp util (xử lý linh tinh), ví dụ như convert end date,
Trang 27Đây là lớp được ánh xạ từ các bảng trong cở sở dữ liệu Tạo các đối tượngDoctor và phương thức khởi tạo contructor, setter và getter.
Tạo interface DoctorService trong package service:
Đây là các interface để quy định hành vi có thể thực hiện được với cơ sở dữliệu
Tạo lớp phụ thuộc DoctorServiceImp trong package imp nằm bên trongpackage service
Trang 28Đây sẽ là lớp thực hiện hóa interface DoctorService @Repository đánh dấumột Class Là tầng Repository, phục vụ truy xuất dữ liệu
Tạo DoctorController trong package controller
Trang 29Thông báo chương trình chạy thành công, webservice đang chạy trên localhostwebservice tại cổng 8080 Để có thể thao tác với dữ liệu thông qua URI, ta có thể dùngPostman để kiểm tra.
Thực hiện với phương thức GET
Thông qua URI localhost:8080/doctors ta nhận được kết quả là danh sách cácbác sĩ
Trang 30 Thực hiện với phương thức GETById
Thông qua URI localhost:8080/doctors/BS01 ta nhận được kết quả là danh sáchcác bác sĩ có mã iddoctor là “BS01”
Trang 31 Thực hiện với phương thức POST
Thông qua URI localhost:8080/doctors cùng với dữ liệu json là một đối tượngbác sĩ, ta nhận được kết quả thêm mới 1 đối tượng bác sĩ thành công Kiểm tra cơ sở
dữ liệu, ta thấy đối tượng bác sĩ BN05 đã được tạo
Trang 32 Thực hiện với phương thức POST
Thông qua URI localhost:8080/doctors /BS05 cùng với file json là dữ liệu cầncập nhật, với ta nhận được kết quả thông báo thông tin đối tượng BS05 đã được cậpnhập thành công Kiểm tra cơ sở dữ liệu, ta thấy thông tin BS05 đã được cập nhật
Trang 33 Thực hiện với phương thức DELETE
Thông qua URI localhost:8080/doctors /BS05 , ta nhận được thông báo xóa đối tượng BS05 thành công
3.3 Các URI thao tác với dữ liệu
Web Services chạy localhost Web Server tại http://localhost:8080 RESTful cung cấp các uri để thao tác với dữ liệu và trả về dữ liệu kiểu JSON để có thể dễ dàng sử dụng với Angular Các Uri được cung cấp bao gồm:
B1ng 1 Mô t1 URI Doctor.
http://localhost:8080/doctors GET, POST
Method GET trả về danhsách các bác sĩ
Method POSt lưu đối tượng bác sĩ mới
http://localhost:8080/doctors /doctors/
{id}
GET, PUT,DELETE
Method GET trả về bác
sĩ theo id
Method PUT cập nhật lạiđối tượng bác sĩ theo id.Method DELETE xóa đối tượng bác sĩ theo id
Trang 34B1ng 2 Mô t1 URI Employee.
http://localhost:8080/employees GET, POST
Method GET trả về danhsách các nhân viên.Method POSt lưu đối tượng nhân viên mới
http://localhost:8080/employees
/doctors/{id}
GET, PUT,DELETE
Method GET trả về nhânviên theo id
Method PUT cập nhật lạiđối tượng nhân viên theoid
Method DELETE xóa đối tượng nhân viên theoid
B1ng 3 Mô t1 URI Patient.
Method GET trả về danhsách các bệnh nhân.Method POSt lưu đối tượng bệnh nhân mới
http://localhost:8080/patients/doctors/{id} GET, PUT,DELETE
Method GET trả về bệnhnhân theo id
Method PUT cập nhật lạiđối tượng bệnh nhân theo id
Method DELETE xóa đối tượng bệnh nhân theo id
Trang 35B1ng 4 Mô t1 URI Facutly.
http://localhost:8080/facutlies GET, POST
Method GET trả về danhsách các khoa
Method POSt lưu đối tượng khoa mới
http://localhost:8080/facutlies/doctors/{id} GET, PUT,DELETE
Method GET trả về khoatheo id
Method PUT cập nhật lạiđối tượng khoa theo id.Method DELETE xóa đối tượng khoa theo id
B1ng 5 Mô t1 URI Disease.
Method GET trả về danhsách các căn bệnh.Method POSt lưu đối tượng căn bệnh mới
http://localhost:8080/diseases/doctors/{id} GET, PUT,DELETE
Method GET trả về căn bệnh theo id
Method PUT cập nhật lạiđối tượng căn bệnh theo id
Method DELETE xóa đối tượng căn bệnh theo id
Trang 36CHƯƠNG II: PHẦN KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
1 Kết luận
Những nội dung đã thực hiện được trong quá trình thực tập:
- Làm quen quản lý cơ sở dữ liệu bằng PostgreSQL
- Xây dựng và quản lý dự án bằng Maven
- Hoàn thành cung cấp các URI thao tác được trên dữ liệu và trả về kết quả chínhxác
- Tìm hiểu và cơ bản lập trình được ứng dụng sử dụng Spring Boot Framework
Điểm mạnh và điểm yếu sau khi thực tập
- Xây dựng giao diện cho ứng dụng
- Cung cấp thêm một số chức năng như: quản lý lương thưởng, quản lý cơ sở hạ
Trang 37TÀI LIỆU THAM KHẢO
[1] "javaTpoint," [Online] Available: https://www.javatpoint.com/spring-tutorial.[2] C Walls, Spring Boot in Action, 2015
[3] S Can, Introduction to Spring Framework, 2014
[4] D Noskov, Spring Framework 3.0
[5] N V Thành, Java Core
[6] P T T Thúy, HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU