1. Trang chủ
  2. » Luận Văn - Báo Cáo

bài tập lớn lập trình hướng đối tượng đề tài quản lý hiệu sách

42 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Thông qua việc ứng dụng của lập trình hướng đối tượng, biến các thực thể ngoài đời thực thành các đối tượng trong hệ thống đã giúp việc quản lý đơn giản và nhanh chóng hơn.. Ví dụ 2: ta

Trang 1

TRƯỜNG ĐẠI HỌC ĐẠI NAM

BÀI TẬP LỚN

HỌC PHẦN: Lập trình hướng đối tượng

Tên đề tài : Quản lý hiệu sách

GV hướng dẫn : TS.Trần Quý Nam

Thành viên : Nguyễn Ngọc Đan Trường

Nguyễn Hoàng Minh Nhật Lớp : CNTT 15-04

Hà Nội, tháng 12 năm 2022

Trang 2

TRƯỜNG ĐẠI HỌC ĐẠI NAM

Trang 3

3

đời các hệ thống để trợ giúp con người trong việc quản lý Thông qua việc ứng dụng của lập trình hướng đối tượng, biến các thực thể ngoài đời thực thành các đối tượng trong hệ thống đã giúp việc quản lý đơn giản và nhanh chóng hơn

hiện đồ án “Quản lý hiệu sách” mục tiêu để tìm hiểu sâu hơn trong hướng đối tượng trong lập trình Xin chân thành cảm ơn thầy TS.Trần Quý Nam đã nhiệt tình giúp đỡ và truyền đạt cho chúng em nhiều kiến thức quý giá

hiện tốt đồ án này Đây là 1 đồ án đầu tay nên khó tránh khỏi còn nhiều sai sót, khuyết điểm mong thầy thông cảm, hết lòng góp ý và chỉ cho chúng em ưu, khuyết điểm để giúp chúng em có thể hoàn thiện tốt hơn sau này

Trường

Trang 4

Mục lục

I Ngôn ngữ Java và lập trình hướng đối tượng 6

1.Java là gì ? 6

2.Ứng dụng của Java 6

3.Những đặc điểm cơ bản của Java 6

II Hướng đối tượng trong Java 7

1.Lập trình hướng đối tượng là gì ? 7

2.Các thành phần của OOP 7

3.Phạm vi truy cập trong Java 8

4.Các tính chất trong OOP Java 8

5.Ưu điểm, nhược điểm 9

5.1 Ưu điểm 9

5.2 Nhược điểm 10

II.Khảo sát hệ thống và phân tích yêu cầu 10

1.Khảo sát hệ thống 10

2.Phân tích yêu cầu 11

a.Yêu cầu chức năng 11

b.Yêu cầu phi chức năng 11

III.Phân tích hệ thống 12

1.Các đối tượng trong hệ thống 12

2.Mối quan hệ giữa các đối tượng 16

III.Use Case của các thực thể 16

IV.Xây dựng giao diện 16

V.Dữ liệu hệ thống 23

VI.Các chức năng trong hệ thống 27

1.Chức năng cơ bản (User) 27

2.Đối với Khách hàng ( Vai trò Customer ) 29

3.Đối với Nhân viên ( Vai trò Staff ) 33

4.Đối với Quản lý ( Vai trò Manager ) 34

VII.Một số đoạn code minh hoạ 35

VIII.Đánh giá ưu, nhược điểm 41

1.Ưu điểm 41

Trang 6

Nội dung đề tài

I.Ngôn ngữ Java và lập trình hướng đối tượng 1.Java là gì ?

Java là một nền tảng phát triển các ứng dụng phần mềm có vị trí rất lớn trong những năm cuối thế kỉ 20, đầu thế kỉ 21 Đánh dấu sự trưởng thành của mô hình lập trình hướng đối tượng, nó được coi là một nền tảng mang tính cách mạng trong ngành phần mềm Mô hình máy ảo Virtual Machine đã cho phép các ứng dụng viết bằng Java có thể chạy trên nhiều hệ điều hành khác nhau

Lần đầu tiên xuất hiện vào năm 1992 như là một ngôn ngữ dùng trong nội bộ tập đoàn Sun Microsystems để xây dựng ứng dụng điều khiển các bộ xử lý bên trong máy điện thoại cầm tay, lò vi sóng, các thiết bị điện tử dân dụng khác Không chỉ là một ngôn ngữ, Java còn là một nền tảng phát triển và triển khai ứng dụng trong đó máy ảo Java, bộ thông dịch có vai trò trung tâm

Ngày nay, khi nhắc đến Java người ta không còn chỉ nhắc đến Java như là một ngôn ngữ mà nhắc đến Java như là một công nghệ hay một nền tảng phát triển Nó bao gồm các bộ phận:

Máy ảo Java: JVM

Bộ công cụ phát triển: J2SDK

Các đặc tả chi tiết kĩ thuật (specifications) Ngôn ngữ lập trình (programming language)

2.Ứng dụng của Java

Ngày nay Java được sử dụng với các mục đích sau :

- Phát triển ứng dụng cho các thiết bị điện tử thông minh, các ứng dụng cho doanh nghiệp với quy mô lớn.

chức năng của server

3.Những đặc điểm cơ bản của Java

- Đơn giản và quen thuộc: Vì Java kế thừa trực tiếp từ C/C++ nên nó có ững đặc điểm của ngôn ngữ này, Java đơn giản vì mặc dù dựa trên cơ sở

Trang 7

7

C++ nhưng Sun đã cẩn thận lược bỏ các tính năng khó nhất của của C++ để làm cho ngôn ngữ này dễ sử dụng hơn

- Hướng đối tượng và quen thuộc

- Mạnh mẽ (thể hiện ở cơ chế tự động thu gom rác - Garbage Collection) và an toàn

- Hiệu suất cao

- Máy ảo (biên dịch và thông dịch) - Phân tán

thực hiện theo thời gian thực

II Hướng đối tượng trong Java 1.Lập trình hướng đối tượng là gì ?

• Lập trình hướng đối tượng là một mô hình lập trình máy tính dựa trên khái niệm lớp và đối tượng

• Lấy đối tượng làm nền tảng để xây dựng giải thuật, xây dựng chương trình và thực hiện xử lý dữ liệu với đối tượng đã định nghĩa đó

• Nhằm tối ưu hóa việc quản lý mã nguồn (source code), tái sử dụng mã nguồn, tóm gọn các thủ tục đã biết trước tính chất thông qua việc sử dụng đối tượng

• Một đối tượng có thể được định nghĩa là một trường dữ liệu có các thuộc tính và các hành động của riêng nó

Trang 8

• Tên lớp (class name): Mỗi lớp đều có một tên riêng biệt, để phân biệt với các lớp khác trong cùng một phạm vi

• Các thuộc tính (attributes): Mô tả các trường để lưu dữ liệu cho mỗi đối tượng mà lớp đang định nghĩa hay lưu các tham chiếu đến đối tượng của lớp khác

Ví dụ 2: ta có 2 lớp đối tượng A và B, giờ ta muốn tham chiếu 1 đối tượng x từ lớp B trong lớp đối tượng A chẳng hạn, và đây những gì được viết trong class A

• Các phương thức (methods): mỗi phương thức của lớp thực chất là một hàm được viết riêng cho các đối tượng của lớp, và được gọi đến để tác động lên các đối tượng của lớp đó

• Đối tượng (Object): trong lập trình hướng đối tượng, một thực thể được coi là đối tượng khi nó có các thuộc tính và các hành vi

- OOP Java gồm 4 phạm vi truy cập cho lớp, thuộc tính, phương thức, gồm: private, protected, default, public :

Phạm vi private: chỉ cho phép truy cập nội bộ trong class Tại ví dụ 4, ta thấy rằng, thuộc tính name của class Person để phạm vi truy cập là private, điều này có nghĩa

là thuộc tính đó của class Person chỉ truy cập được đến trong class Person mà thôi

Phạm vi protected: là một loại phạm vi cho phép truy cập được từ trong hay cả

ngoài package (gói), nếu là ngoài package thì phải thông qua tính kế thừa

(inheritance) Cả phạm vi private và protected đều chỉ áp dụng bên trong class như

thuộc tính, phương thức, Không thể áp dụng cho phạm vi truy cập của lớp hoặc

interface Ví dụ nho nhỏ cho protected

Phạm vi default: là phạm vi mặc định, khi khai báo không cần ghi gì cả ( thuộc tính height trong ví dụ 4), đối với phạm vi default này, thì phạm vi truy cập cho phép

chỉ trong cùng package (gói)

Phạm vi public: là phạm vi rộng nhất, bất cứ chỗ nào trong project đều có thể truy

cập đến được

4.Các tính chất trong OOP Java

- OOP Java có 4 tính chất, gồm: tính trừu tượng (abstract), tính kế thừa (inheritance), tính đóng gói (encapsulation), tính đa hình (polymorphism) :

Trang 9

9

• Tính trừu tượng (abstract): abstract có nghĩa là chúng ta đi tổng quát hóa một cái

gì đó mà không cần đi vào chi tiết quá vào nó, nhưng người nghe vẫn hiểu được nó là cái gì Trong OOP thì tính trừu tượng tức là ta đi lựa chọn các thuộc tính và các phương thức cần thiết của đối tượng để giải quyết bài toán Bởi trong thực tế, một đối tượng có thể có rất nhiều thuộc tính và phương thức, nhưng không liên quan và không cần sử dụng trong bài toán đề ra

• Tính kế thừa (inheritance): Chỉ đơn giản là chúng ta tái sử dụng lại các thuộc tính,

phương thức ở class khác mà không cần phải xây dựng lại từ đầu

• Tính đóng gói (encapsulation): đóng gói ở đây có nghĩa là đóng gói attributes,

methods thành class, đóng gói các class thành package, Nhằm che giấu thông tin và đảm bảo sự toàn vẹn của dữ liệu

• Tính đa hình (polymorphism): chỉ sự đa hình thái, chẳng hạn cùng có một phương

thức giống nhau nhưng tùy vào tham số truyền vào hay sự cài đặt của lớp con mà nó thực hiện các công việc khác nhau Tính đa hình liên quan tới 2 khái niệm là: overriding (ghi đè) và overloading (nạp chồng)

ooverriding (ghi đè) là đi viết lại, định nghĩa lại phương thức mà nó kế thừa từ lớp cha

ooverloading (nạp chồng) sử dụng các phương thức có cùng tên nhưng tham số đầu vào lại khác nhau

5.Ưu điểm, nhược điểm

5.1 Ưu điểm

• Nâng cao hiệu năng phát triển phần mềm, liên quan tới 3 yếu tố trong OOP:

oTính Mô - đun: Tách biệt các nhiệm vụ trong quá trình phát triển phần mềm dựa trên các đối tượng cụ thể, hay mỗi đối tượng có một nhiệm vụ riêng

oTính mở rộng: Các đối tượng có thể mở rộng thêm các thuộc tính mới, các hành vi mới trong tương lai

oTính tái sử dụng: Các đối tượng có thể tái sử dụng một ứng dụng hoặc nhiều ứng dụng khác nhau Nhờ vào các yếu tố trên mà OOP giúp tăng hiệu năng phát triển phần mềm so với lập trình hướng thủ tục truyền thống

• Nâng cao khả năng bảo trì phần mềm: Chính nhờ các yếu tố kể trên mà việc bảo trì cũng trở nên dễ dàng hơn, vì thiết kế theo mô-đun nên việc thay đổi một phần

Trang 10

của chương trình có thể không làm ảnh hưởng đến những phần còn lại, rất phù hợp với những dự án lớn, đòi việc phải bảo trì và thay đổi nhiều

• Phát triển phần mềm nhanh hơn: Nhờ vào tính tái sử dụng mà các phần mềm được phát triển nhanh hơn, OOP thường có thư viện đối tượng phong phú, hay những đối tượng do chính bạn tự định nghĩa, các đoạn code được tối ưu hóa đều có thể được tái sử dụng trong tương lai => giảm thiểu chi phí phát triển

5.2 Nhược điểm

• Khá phức tạp, có thể khó nhằn cho beginner, bởi nó đòi hỏi sự tư duy dựa trên sự tương tác giữa các đối tượng, do đó chúng ta cần nắm được bản chất: lớp, đối tượng, thuộc tính, phương thức; nắm được 4 tính chất của hướng đối tượng gồm: tính trừu tượng (abstract), tính kế thừa (inheritance), tính đóng gói (encapsulation), tính đa hình (polymorphism)

• Chương trình có thể chậm và kích thước lớn hơn so với các chương trình lập trình hướng thủ tục Do các phần mềm này thường yêu cầu nhiều câu lệnh hơn để thực thi, người lập trình cần viết ra nhiều dòng mã hơn để đảm bảo các thuộc tính, phương thức của đối tượng => kích thước chương trình lớn theo

• Lập trình hướng đối tượng không phải là chìa khóa vạn năng cho nhiều vấn đề Theo em, mỗi một phương pháp lập trình đều có sự phù hợp với mỗi bài toán thực tế nhất định Chẳng hạn giải phương trình bậc 2, thay vì phải ngồi viết ra đối tượng phương trình bậc 2 (theo OOP), cài đặt các thuộc tính và các phương thức cho nó, trong lập trình hướng chức năng trong 1 file duy nhất, ta chỉ cần viết mỗi một hàm con có chức năng tìm nghiệm nhờ vào việc truyền vào 3 tham số giá trị và cho in nghiệm là xong

II.Khảo sát hệ thống và phân tích yêu cầu

1.Khảo sát hệ thống

người cao tuổi,… ) có nhu cầu về việc tìm hiểu các thông tin về khoa học kỹ thuật, thẩm

hằng ngày đối với các cửa hàng Vì vậy cần 1 chương trình quản lý để giúp nhân viên và

Trang 11

11

• Quản lý: là người quản lý toàn bộ hệ thống hiệu sách, có cấp bậc quyền

• Nhân viên: là nhân viên của hiệu sách người chịu trách nhiệm nhập xuất

• Khách hàng: Người dùng có tài khoản có thể đăng nhập và mua sách trực

tuyến trên hệ thống

2.Phân tích yêu cầu a.Yêu cầu chức năng

- Người dùng có thể mua sách trực tuyến khi đủ số dư

- Quản lý có thể xem các thống kê hệ thống

b.Yêu cầu phi chức năng

truy cập các tài khoản khác nhau

+ Phân quyền : mỗi tài khoản có phân quyền khác nhau : Customer

Trang 12

+ Customer chỉ truy cập được vào các khu vực hiệu sách, mua sách và thông tin cá nhân

+ Staff thì truy cập được vào các khu vực quản lý sách và tra cứu lịch sử mua hang

III.Phân tích hệ thống

1.Các đối tượng trong hệ thống

- Đối tượng Model_ChucVu :

Trang 13

13

- Đối tượng Model_Sach :

người dùng trong hệ thống thực thi giao diện IUser , bao gồm các method cơ bản của 1 user bất kì trong hệ thống có thể thực hiện Đây là 1 lớp abstract

Trang 14

- Đối tượng People_Khach : Kế thừa từ People_User và thực thi giao diện

ICustomer, cho phép tạo ra đối tượng có các chức năng và thông tin đầy đủ như 1 vị khách mua sách trong hệ thống

diện IStaff, cho phép tạo ra đối tượng có các chức năng và thông tin đầy đủ như 1 nhân viên làm việc trong hệ thống ( quản lý sách, tra cứu lịch sử người dùng … )

Trang 15

15

tin đầy đủ của 1 nhân viên và 1 quản lý làm việc trong hệ thống ( có quyền hạn cao nhất )

Trang 16

2.Mối quan hệ giữa các đối tượng

III.Use Case của các thực thể

IV.Xây dựng giao diện

- Đây là khâu quan trọng vì giao diện tốt thì mới đem đến trải nghiệm cho người dùng tốt

Trang 17

17

Giao diện đăng nhập

Trang 18

Giao diện trang chủ

Giao diện sách

Trang 19

19

Giao diện trưng bày sách

Giao diện thông tin cá nhân

Trang 20

Giao diện quản lý người dùng

Trang 21

21

Giao diện thống kê

Trang 22

Giao diện thay đổi mật khẩu

Giao diện giỏ hàng

Trang 23

23

V.Dữ liệu hệ thống

Trang 24

Bảng dữ liệu danh mục sách

Trang 25

25

Trang 26

Bảng dữ liệu cấu trúc table login

Trang 27

27

VI.Các chức năng trong hệ thống 1.Chức năng cơ bản (User)

- Là các chức năng cơ bản của bất kì người dùng nào đều có, bao gồm : Đăng nhập, Đăng kí , Đổi mật khẩu, Cập nhật thông tin, Xem lịch sử nhật ký

*Chức năng đăng nhập

- Cho phép người dùng login với tài khoản, mật khẩu được cấp hoặc do

người dùng tự đăng ký

lúc không yêu cầu cập nhật launcher )

*Chức năng đăng ký

Trang 28

- Cho phép người dùng tạo tài khoản mới vào hệ thống

*Chức năng xem và cập nhật thông tin

Trang 29

29

dùng

*Chức năng xem sách

- Có thể xem được thông tin cuốn sách, đánh giá để quyết định có mua hay không

2.Đối với Khách hàng ( Vai trò Customer )

Trang 30

- Quyền hạn : Bao gồm các chức năng cơ bản của 1 user (kế thừa các

giỏ hàng, thanh toán sách, kho sách

*Chức năng mua sách

*Chức năng kho đồ cá nhân

- Khi người dùng mua sách thành công, sách sẽ được thêm vào giỏ đồ đã sở hữu của người dùng

Trang 31

31

*Chức năng giỏ hàng

toán sau cũng được, bằng cách ấn nút Add to cart ở trang xem sách, là thêm sách vào giỏ

không mua nữa (Remove) Nếu mua sách thì sẽ thêm sách với số lượng 1 vào kho cá nhân hoặc tăng số lượng nên 1 nếu đã sở hữu

Trang 32

Đánh giá, và những người dùng khác trong hệ thống có thể thấy đánh giá đó ( công khai )

Trang 33

33

3.Đối với Nhân viên ( Vai trò Staff )

- Đây là những nhân viên có vai trò khác nhau tuỳ vào phân công, có thể là quản lý kho, nhập xuất sách, hay là hỗ trợ người dùng Suy cho cùng, đều là các account được kế thừa từ lớp User cơ bản và các interface chung và

cứu lịch sử mua hàng của người dùng, Quản lý kho sách

*Chức năng tra cứu lịch sử mua hàng

đó vào nhật ký (các logs) , để các nhân viên hoặc quản lý có thể tra cứu nó

Trang 34

- Nhân viên có thể đính kèm ảnh trong máy cho sách, không cần phải can thiệp vào database để lưu ảnh

4.Đối với Quản lý ( Vai trò Manager )

bộ nhật ký hệ thống và can thiệp tới các người dùng khác và sách

năng : Quản lý người dùng ( mô hình CRUD ), tra cứu nhật ký hệ thống

*Chức năng Quản lý người dùng

Trang 35

35

thêm người dùng mới

- Manager còn có thể chỉ định , cấp quyền cho người dùng khác làm

*Chức năng tra cứu nhật ký hệ thống

thông tin quan trọng của hệ thống mà người dùng khác không làm được

VII.Một số đoạn code minh hoạ

Trang 36

- Đối tượng Khách :

Trang 37

37

Trang 38

- Đối tượng Quản lý :

Trang 39

39

Trang 41

IX.Kết luận

quyết được các bài toán thực tế trong cuộc sống ( ví dụ như Quản lý hiệu sách, quản lý hiệu thuốc )

các đối tượng trong ngôn ngữ lập trình , bao gồm thuộc tính ( đặc điểm đời thực ) và phương thức ( hành động đối tượng có thể thực hiện ) và tương tác với các đối tượng

Trang 42

- Nguyễn Việt Anh ( Lớp CNTT 15-04) - Mã sinh viên 1571020014: Phụ

- Nguyễn Hoàng Minh Nhật (Lớp CNTT 15-04) – Mã sinh viên

1571020194 : Phụ trách tìm tài liệu, lên ý tưởng giải quyết bài toán ( Đóng góp 20% )

Ngày đăng: 22/07/2024, 16:26

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w