You are on page 1of 25

BỘ GIÁO DỤC VÀ ĐÀO TẠO

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

BÀI TẬP LỚN


TÊN HỌC PHẦN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
ĐỀ TÀI: BÀI TOÁN QUẢN LÝ CỬA HÀNG TẠP HÓA

Giáo viên hướng dẫn: Ths.Trương Phi Hồ


Sinh viên thực hiện:
STT Mã sinh viên Họ và tên Lớp
1 1671020231 Nguyễn Chí Nhật CNTT 16-03
2 1671020134 Bùi Đức Huy CNTT 16-03

Hà Nội, năm 2023


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC ĐẠI NAM

BÀI TẬP LỚN


TÊN HỌC PHẦN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
ĐỀ TÀI: BÀI TOÁN QUẢN LÝ CỬA HÀNG TẠP
HÓA

Điểm
STT Mã Sinh Viên Họ và Tên Ngày Sinh
Bằng Bằng
Số Chữ
01 1671020231 Nguyễn Chí Nhật 24/04/2004
02 1671020134 Bùi Đức Huy 28/03/2004

CÁN BỘ CHẤM THI

Hà Nội, năm 2023


MỤC LỤC

MỤC LỤC HÌNH ẢNH…………………………………………………………………05

BẢNG CÁC TỪ VIẾT TẮT……………………………………………………………06

LỜI NÓI ĐẦU……………………………………………………………………………07

CHƯƠNG I. GIỚI THIỆU LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG


JAVASCRIPT……………………………………………………………………………08
1.1. Khái niệm lập trình hướng đối tượng trong Java…………………………………..08
1.1.1. Đối tượng(Object) và Lớp(Class) trong OOP……………………………………….08
1.1.2. Các đặc trưng cơ bản của OOP……………………………………………………..08
1.2. Ưu và nhược điểm của OOP………………………………………………………….09
1.2.1. Ưu điểm………………………………………………………………………………09
1.2.2. Nhược điểm…………………………………………………………………………..09
1.3. Phần mềm chạy lập trình hướng đối tượng Java……………………………………10
CHƯƠNG II. SƠ ĐỒ BÀI TOÁN QUẢN LÝ CỬA HÀNG TẠP HÓA………….11
2.1. Sơ đồ bài toán cửa hàng tạp hóa………………………………………………………
11
2.2 Mô tả thông tin thành phần của sơ đồ………………………………………………..12

CHƯƠNG III. CÁC BƯỚC ĐỂ TẠO BÀI TOÁN QUẢN LÝ CỬA HÀNG TẠP
HÓA………………………………………………………………………………………...13

3.1. Khởi tạo Project……………………………………………………………………….13

3.2. Tạo class cho Project………………………………………………………………….14

3.3. Tạo class giao diện cho Project……………………………………………………….16

CHƯƠNG IV. CHỈNH SỬA GIAO DIỆN……………………………………………18

4.1. Chỉnh sửa giao diện……………………………………………………………………


18
4.2. Chỉnh sửa các thuộc tính trong giao
diện…………………………………………….21

CHƯƠNG V. KHỞI CHẠY CHƯƠNG TRÌNH QUẢN LÝ CỬA HÀNG TẠP


HÓA……………………………………………………………………………………….23

5.1. Chạy chương trình……………………………………………………………………23

KẾT LUẬN……………………………………………………………………………….25

CNTT 16-03 Page 4


MỤC LỤC HÌNH ẢNH

Hình 1.1……………………………………………………………………………………..10
Hình 3.1……………………………………………………………………………………..13
Hình 3.2……………………………………………………………………………………..13
Hình 3.3……………………………………………………………………………………..14
Hình 3.4……………………………………………………………………………………..14
Hình 3.5……………………………………………………………………………………..15
Hình 3.6……………………………………………………………………………………..15
Hình 3.7……………………………………………………………………………………..15
Hình 3.8……………………………………………………………………………………..16
Hình 3.9……………………………………………………………………………………..16
Hình 3.10……………………………………………………………………………………16
Hình 3.11……………………………………………………………………………………17
Hình 3.12……………………………………………………………………………………17
Hình 4.1……………………………………………………………………………………..18
Hình 4.2……………………………………………………………………………………..18
Hình 4.3……………………………………………………………………………………..18
Hình 4.4……………………………………………………………………………………..19
Hình 4.5……………………………………………………………………………………..19
Hình 4.6……………………………………………………………………………………..19
Hình 4.7……………………………………………………………………………………..20
Hình 4.8……………………………………………………………………………………..20
Hình 4.9……………………………………………………………………………………..21
Hình 5.1……………………………………………………………………………………..23
Hình 5.2……………………………………………………………………………………..24

CNTT 16-03 Page 5


BẢNG CÁC TỪ VIẾT TẮT

OOP Object Oriented Programming


IT Information Technology
sp Sản phẩm

CNTT 16-03 Page 6


LỜI NÓI ĐẦU
Có lẽ với những ai học IT đều biết, ngôn ngữ lập trình hướng đối tượng(OOP) ưu việt
hơn nhiều so với các ngôn ngữ hướng thủ tục, điều này đã được kiểm nghiệm và chứng
minh. Nhưng nhờ đâu các nhà thiết kế lại có thể nghĩ ra ngôn ngữ lập trình hướng đối tượng,
có lẽ tên àm ta hay gọi cho nó cũng đã bao hàm câu trả lời cho câu hỏi trên. Đối tượng là
một khái niệm không hề có trong lập trình hướng thủ tục mà đối tượng chính là các thực thể
trong thế giới thực. Khi mới bắt đầu làm quen với lập trình hướng đối tượng chúng thì cách
tiếp cận tốt nhất là đi vào các ví dụ mà ở đó ranh giới giữa các đối tượng rõ ràng.
Livestream bán hàng, mua sắm trực tuyến thì đều rất phổ biến trên các trang mạng xã hội
hiện nay. Chúng em thấy nó rất tiện lợi và nhàn rỗi, đồng thời cũng không khó khan để xác
định các thực thể trong hệ thống bán hàng này, vì lý do đó nhóm sinh viên bọn em quyết
định lựa chọn đề tài “Quản lý cửa hàng tạp hóa”. Đề tài này thực hiện chương trình mô
phỏng cửa hàng bán tạp hóa, cho phép người sử dụng dễ dàng thao tác và tính toán sản phẩm
nhanh chóng. Chương trình được viết bởi ngôn ngữ lập trình JavaScript – ngôn ngữ lập tình
được phát triển hướng đến đối tượng trong đời sống.

Do mới làm quen với ngôn ngữ JavaScript và việc xử lý các kỹ thuật trong lập trình
hướng đối tượng nên trong chương trình còn nhiều hạn chế. Nhóm chúng em mong nhận
được nhận xét của thầy về đề tài này của nhóm để nhóm chúng em có thể khắc phục các hạn
chế trong đề tài này để có thể làm tốt hơn trong những lần tiếp theo.

CNTT 16-03 Page 7


CHƯƠNG I. GIỚI THIỆU LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG JAVASCRIPT
1.1. Khái niệm lập trình hướng đối tượng trong Java.
OOP (Object Oriented Programming) – lập trình hướng đối tượng là một phương
pháp lập trình dựa trên khái niệm về lớp và đối tượng. OOP tập trung vào các đối tượng
thao tác hơn là logic để thao tác chúng, giúp code dễ quản lý, tái sử dụng được và dễ bảo
trì.
1.1.1. Đối tượng(Object) và Lớp(Class) trong OOP.
Đối tượng (Object)
Đối tượng trong OOP bao gồm 2 thành phần chính:
 Thuộc tính (Attribute): là những thông tin, đặc điểm của đối tượng
 Phương thức (Method): là những hành vi mà đối tượng có thể thực hiện
Lớp (Class)
Lớp là sự trừu tượng hóa của đối tượng. Những đối tượng có những đặc tính tương
tự nhau sẽ được tập hợp thành một lớp. Lớp cũng sẽ bao gồm 2 thông tin là thuộc tính và
phương thức.

1.1.2. Các đặc trưng cơ bản của OOP.


Tính thừa kế(Inheritance)
Đây là tính chất được sử dụng khá nhiều. Tính kế thừa cho phép xây dựng một
lớp mới (lớp dẫn xuất), kế thừa và tái sử dụng các thuộc tính, phương thức dựa
trên lớp cũ (lớp cơ sở) đã có trước đó.
Tính đa hình(Polymorphism)
Tính đa hình trong lập trình OOP cho phép các đối tượng khác nhau thực thi
chức năng giống nhau theo những cách khác nhau.
Tính trừu tượng(Abstraction)
Tính trừu tượng giúp loại bỏ những thứ phức tạp, không cần thiết của đối tượng và
chỉ tập trung vào những gì cốt lõi, quan trọng.

Tính đóng gói(Encapsulation)


Tính đóng gói cho phép che giấu thông tin và những tính chất xử lý bên trong của
đối tượng. Các đối tượng khác không thể tác động trực tiếp đến dữ liệu bên trong và
làm thay đổi trạng thái của đối tượng mà bắt buộc phải thông qua các phương thức
công khai do đối tượng đó cung cấp.

Tính chất này giúp tăng tính bảo mật cho đối tượng và tránh tình trạng dữ liệu bị
hư hỏng ngoài ý muốn.

CNTT 16-03 Page 8


1.2. Ưu và nhược điểm của OOP
1.2.1. Ưu điểm
 Lập trình hướng đối tượng có khả năng mô hình háo những thứ phức tạp chuyển đổi
thành dạng cấu trúc đơn giản hơn.
 Người dùng có thể tái sử dụng code OOP, nhờ đó giúp tiết kiệm tài nguyên.
 Quản lý code dễ dàng khi có những sự thay đổi từ chương trình.
 Việc sửa lỗi trở nên dễ dàng và nhanh chóng nhờ tìm lỗi trong các lớp (được cấu trúc
từ trước) đơn giản hơn.
 Tính bảo mật cao, bảo vệ thông tin an toàn thông qua việc đóng gói.
 Có thể dễ dàng mở rộng, phát triển dự án theo nhu cầu.
 Khả năng bảo trì, điều chỉnh chương trình vừa nhanh chóng vừa hiệu quả.
 Tăng năng suất, đơn giản hóa độ phức tạp khi bảo trì và mở rộng phần mềm.
1.2.2. Nhược điểm
 OOP có thể khiến cho dữ liệu được xử lý tách rời, đồng nghĩa với việc khi cấu trúc dữ
liệu thay đổi sẽ khiến thuật toán thay đổi theo.
 Không tự động khởi tạo, giải phóng dữ liệu động.
 Không mô tả được hệ thống trong thực tế một cách đầy đủ và chân thật.

CNTT 16-03 Page 9


1.3. Phần mềm chạy lập trình hướng đối tượng Java
Phần mềm Eclipse IDE.
Eclipse IDE là một môi trường phát triển tích hợp (IDE) cho Java và các ngôn ngữ lập trình
khác như C, C ++, PHP, và Ruby ... Môi trường phát triển được cung cấp bởi Eclipse bao
gồm các công cụ phát triển Java Eclipse cho Java, Eclipse CDT cho C/C ++, và Eclipse PDT
cho PHP, và một số thứ khác.

Hình 1.1. Phần mềm Eclipse IDE

CNTT 16-03 Page 10


CHƯƠNG II. SƠ ĐỒ BÀI TOÁN QUẢN LÝ CỬA HÀNG TẠP HÓA
2.1. Sơ đồ bài toán cửa hàng tạp hóa

- Sơ đồ đề tài bải toán quản lý cửa hàng tạp hóa.

Quản lý cửa hàng


tạp hóa

Sản phẩm Giao diện

Giao diện cửa


Đồ ăn Đồ uống Thuộc tính hàng tạp hóa

CNTT 16-03 Page 11


2.2 Mô tả thông tin thành phần của sơ đồ

- Quản lý cửa hàng tạp hóa: Tên đề tài bài tập lớn
- Sản phẩm: tên của class SanPham của đề tài bao gồm:

- Thuộc tính:

 String masp

 String tensp

 float soluong

 float don gia.

- Phương thức:

 Constructor: Hàm tạo có đối số

 Getter, Setter: get, set cho thuộc tính kiểu private.

- Đồ ăn: tên của class DoAn thừa kế từ class SanPham bao gồm:

- Phương thức:

 Constructor: Hàm tạo chứa các thuộc tính từ class SanPham.

 Super(): gọi constructor trực tiếp của lớp cơ sở.

 Tinhtien(): tính kết quả sản phẩm của class DoAn.

- Đồ uống: tên của class ThucUong kế thừa từ class SanPham bao gồm:

- Phương thức:

 Constructor: Hàm tạo chứa các thuộc tính từ class SanPham.

 Super(): gọi constructor trực tiếp của lớp cơ sở.

 Tinhtien(): tính kết quả sản phẩm từ của class DoUong.

-Giao diên: tên của class main của đề tài kế thừa từ class JFrame(javax.swing.JFrame)

- Thuộc tính: Gồm các thuộc tính từ class JFrame.

- Phương thức: Điều chỉnh trong phần “Design” của class main.

CNTT 16-03 Page 12


CHƯƠNG III. CÁC BƯỚC ĐỂ TẠO BÀI TOÁN QUẢN LÝ CỬA HÀNG
TẠP HÓA

3.1. Khởi tạo Project

- Vào phần mềm Eclipse IDE  Chọn Flie  Chọn New  Chọn JavaProject.

Hình 3.1: Khởi tạo Project

- Đặt tên cho Project  Finish.

Hình 3.2. Đặt tên cho Project

CNTT 16-03 Page 13


3.2. Tạo class cho Project

- Tạo class SanPham (có thể bỏ qua phần package).

Hình 3.3. Tạo class cho Project

- Các thuộc tính trong class SanPham.

Hình 3.4. Các thuộc tính trong class SanPham

- Tạo hàm get, set cho các thuộc tính private trong class.

CNTT 16-03 Page 14


Hình 3.5. Tạo hàm get, set

- Tạo class DoAn kế thừa class SanPham.

Hình 3.6. Tạo class DoAn kế thừa class SanPham

- Phương thức @Override tinhtien() từ class SanPham.

Hình 3.7. Phương thức @Override tinhtien()

CNTT 16-03 Page 15


- Tạo class DoUong kế thừa class SanPham.

Hình 3.8. Class DoUong kế thừa class SanPham

- Phương thức @Override tinhtien() từ class SanPham.

Hình 3.9. Phương thức @Override tinhtien()

3.3. Tạo class giao diện cho Project

- Tạo class main kế thừa JFrame:

Bước 1:Click chuột phải “Src”  New  Other…

Hình 3.10. Bước 1 để tạo class giao diện

CNTT 16-03 Page 16


Bước 2: Chọn “WindowBuilder”  Swing Designer  JFrame

Hình 3.11. Bước 2 để tạo class giao diện

Bước 3: Nhấn đúp “JFrame”  Đặt tên cho class  Finish.

Hình 3.12. Bước 3 để tạo class giao diện

CNTT 16-03 Page 17


CHƯƠNG IV. CHỈNH SỬA GIAO DIỆN

4.1. Chỉnh sửa giao diện

Bước 1: Chọn “Design” cạnh Source.

Hình 4.1. Design

Bước 2: Chọn “JLabel” trong mục “Components”  Đặt tên: “SẢN PHẨM”.

Bước 3: Chọn “JComboBox” trong mục “Components”  Đặt tên: “Đồ ăn và Đồ uống”
trong phần “model”.

Hình 4.2. Đặt tên “Đồ ăn và đồ uống” trong muc model

Bước 4: Chọn “JLabel” rồi đặt tên lần lượt là: “Tên sp, Mã sp, Số lượng, Đơn giá”.

Hình 4.3. Tên của 4 thuộc tính JLabel

CNTT 16-03 Page 18


Bước 5 : Chọn “JText” trong mục “Components”  Đặt cạnh 4 thuộc tính ở bước 4.

Hình 4.4. JText

Bước 6: Chọn “JButton” trong mục “Components”  Đặt tên lần lượt là: “Thêm, Xóa,
Thoát”.

Hình 4.5. Đặt tên 3 thuộc tính JButton

Bước 7: Chọn “JScrollPane” trong mục “Containers”  Kéo ô chứa thông tin sản phẩm.

Hình 4.6. JScrollPane

CNTT 16-03 Page 19


Bước 8: Chọn “JTable” trong mục “Components”  Click vào bảng “JScrollPane”

Hình 4.7. JTable

Bước 9: Vào phần “Model” của “JTable”  Phần “Columns” click “Insert” 6 lần tương ứng
với: “Mã sp, Tên sp, Loại sp, Số lượng, Đơn giá, Thành Tiền” và phần Rows click “Insert” 1
lần  OK.

Hình 4.8. Các thuộc tính của JTable trong Model

CNTT 16-03 Page 20


Bước 10: Chọn “JLabel”  Đặt tên: “Tổng thành tiền:” và 1 khoảng trống để hiện tổng số
tiền.

Hình 4.9. Tổng thành tiền và tổng số tiền

4.2. Chỉnh sửa các thuộc tính trong giao diện

Đầu tiền, ta sẽ viết đoạn code để các giá trị được ghi hiện ở phần “JTable”.

CNTT 16-03 Page 21


- Tại “JButton” Thêm, ta sẽ giúp nó thực hiện công năng thêm các giá trị được ghi tại
“JText” hiện trên “JTable”.

- Tại “JButton” Xóa, ta sẽ giúp nó thực hiện công năng xóa đi các giá trị hiển thị trên
“JTable”.

- Tại “JButton” Thoát, ta sẽ giúp nó thực hiện công năng thoát khỏi chương trình.

CHƯƠNG V. KHỞI CHẠY CHƯƠNG TRÌNH QUẢN LÝ CỬA HÀNG TẠP HÓA

CNTT 16-03 Page 22


5.1. Chạy chương trình

- Ví dụ về đồ ăn:

+ Tên sản phẩm: Bánh mì

+ Mã sản phẩm: 01

+ Số lượng: 5

+ Đơn giá: 5000

Hình 5.1. Chạy chương trình ví dụ về đồ ăn

*Ghi chú: Phải thêm 2 lần mới hiển thị được số tiền của lần mua thứ nhất.

CNTT 16-03 Page 23


- Ví dụ về đồ uống:

+ Tên sản phẩm: Nước cam

+ Mã sản phẩm: 02

+ Số lượng: 2

+ Đơn giá: 10000

Hình 5.2. Chạy chương trình ví dụ về đồ uống

KẾT LUẬN

CNTT 16-03 Page 24


-Sử dụng quản lý cửa hàng tạp hoá có các ưu điểm như :

 Quản lý tính tiền, báo giá cả chuỗi cửa hàng chính xác, nhanh chóng và tiện lợi.
 Hỗ trợ theo dõi tất cả các hoạt động nhập/xuất thường ngày.
 Có thể in phiếu tính tiền nhiều liên với các khổ giấy 058, 080, 078, 085, A4, A5…
 Được hỗ trợ và hướng dẫn chi tiết trong quá trình cài đặt và sử dụng phần mềm.
 Bảo mật dữ liệu an toàn, tránh mất dữ liệu.

-Các nhược điểm khi xài quản lý cửa hàng tạp hoá là :
 Không kiểm soát hàng còn, hàng hết trên kệ.
 Thất thoát trong quá trình bán hàng.
 Thất thoát do khách hàng.
 Thật khó để rời khỏi cửa hàng.
 Khó khăn khi quản lý cửa hàng – Khó kiểm soát doanh thu lãi/ lỗ.

-Hướng để phát triển thêm về quản lý cửa hàng tạp hoá là :


 Tạo một chương trình có thể sử dụng từ xa.
 Bổ sung thêm nhiều chức năng và tối ưu hơn các chức năng chưa hoàn thiện.
 Tiếp cận xem người dùng còn cần các chức năng gì để phát triển thêm.

CNTT 16-03 Page 25

You might also like