Ban đầu thì đa số mọi người nghĩ là Java sẽ chủ yếu được s dử ụng để l p trình nên nh ng ậ ữapplet hay những chương trình nhỏ chạy trên các trình duyệt web, tuy nhiên đến gi thì mờ ọingư
Trang 11
TRƯỜNG ĐẠI HỌC PHENIKAA
KHOA CÔNG NGH THÔNG TIN Ệ
BÀI TẬP LỚN KẾT THÚC HỌC PHẦN LẬP
TRÌNH HƯỚNG ĐỐI TƯỢNG
Đề tài : Phần mềm quản lý bán hàng siêu thị
Sinh viên : NGUYỄN ĐỨC ANH
Lớp : Lập trình hướng đối tượng-1-2-23(N01.TH1)
Mã SV 22010353:
HÀ NỘI, THÁNG 2/2024
Trang 22
Mục Lục
LỜI ẢM ƠN C
I Phân tích yêu cầu
1 Yêu cầu nghiệp vụ
2.Các chức năng chính
3 Phân tích hệ thống
3.1 Môi trường lập trình
3.2 Ngôn ngữ lập trình java .
II Đặc tả phần mềm
1.Mô hình đặc tả
2 Sơ đồ lớp của hệ thống
III Chương trình quản lý hàng siêu thị 9
1 Giao diện
2 Phân tích
1 Chức năng đọc/ghi file nhị phân
2 Chức năng thêm, sửa, xóa thông tin sản phẩm 10
2.1 T hêm sản phẩm .
2.2 S ửa sản phẩm .
2.3 Xóa sản phẩm
3 Chức năng tìm kiếm thông tin sản phẩm 1
4 Thống kê giá sản phẩm
KẾT LUẬN
Trang 33
Lời cảm ơn
Em xin cảm ơn thầy Trần Đình Tân về sự hỗ trợ và giảng dạy tận tâm mà thầy đã dành cho lớp trong quá trình học tập Bài tập lớn này đã đóng góp một phần quan trọng vào sự phát triển kiến thức và kỹ năng trong lĩnh vực này Em xin chân thành cảm ơn vì điều đó
Em cũng xin cảm ơn những người đã đọc và đánh giá về sản phẩm của em Sự góp ý và phản hồi sẽ giúp ích rất nhiều cho em trong quá trình học tập cũng như công việc sau này
Trân trọng,
Nguyễn Đức Anh
Trang 44
I Phân tích yêu cầu
1 Yêu cầu nghiệp vụ
Người sử dụng ứng dụng là quản lý kho hàng siêu thị quản lý sẽ có quyền thực hiện các chức năng như trên Khi có một món hàng mới thì quản lý sẽ tiến hành dùng
chức năng thêm sản phẩm để thêm sản phẩm mới vào danh sách sản phẩm và quản lý
có thể kiểm kê được số lượng sản phẩm có trong siêu thị Khi nhân viên nhận thấy có
sản phẩm bị sai thông tin thì Quản lý sẽ tiến hành sửa lại thông tin đơn hàng Khi mặt hàng đã hết hoặc siêu thị không muốn bày bán nữa thì quản lý sẽ tiến hành xóa sản
phẩm khỏi hệ thống của siêu thị
2.Các chức năng chính
1.Thêm sản phẩm
2 Tìm kiếm sản phẩm
3 Chỉnh sửa thông tin sản phẩm
4 Xóa sản phẩm
3 Phân tích hệ thống
3.1 Môi trường l p trình ậ
Java Development Kit (JDK - B công cộ ụ cho người phát triển ứng d ng b ng ngôn ngụ ằ lập trình Java) là m t t p h p nh ng công cộ ậ ợ ữ ụ phần mềm được phát tri n bể ởi Sun Microsyste dành cho các nhà phát tri n ph n mể ầ ềm, dùng để viết những applet Java hay nh ng ữ ứng d Java
Trang 55
3.2 Ngôn ngữ lập trình Java
Java là m t ngôn ngộ ữ hướng đối tượng, đa mục đích với các cú pháp r t gi ng v i C vấ ố ớ C++ Ban đầu thì đa số mọi người nghĩ là Java sẽ chủ yếu được s dử ụng để l p trình nên nh ng ậ ữ applet hay những chương trình nhỏ chạy trên các trình duyệt web, tuy nhiên đến gi thì mờ ọi người đã thay đổi quan điểm M t s ộ ố người vốn trước đây tin rằng applet chính là đất s ng cố ủa Java thì nghĩ rằng Java đã chết do s ự xuất hi n cệ ủa các đoạn phim hoạt hình Flash Nhưng Java
đã thay đổi Cái thời mà người ta nghĩ rằng ứng d ng ch yụ ủ ếu của Java là làm các applet động trên các trang web đã qua Ngày nay, Sun, IBM, BEA và các công ty khổng lồ khác đã liên kết để phát triển Java thành một môi trường đa năng chứ không chỉ dừng lại là một th ngônứ ngữ lập trình đa nền tảng nữa Java đã có mặt ở khắp mọi nơi: từ những chiếc điện tho i di ạ động nh bé mang nhãn hi u Nokia, Samsung, Motorola, Ericcson , t các thi t b PDA dỏ ệ ừ ế ị
hệ điều hành Palm cho đến các con chíp điện tử dùng trên các t m th tín d ng, các thi t bấ ẻ ụ ế ị chẩn đoán và phân tích dùng trong y tế, khai thác năng lượng, điểu khi n và qu n lý thi t bể ả ế ị từ các ph n mầ ềm trên server, các trang web động, cho đến các ứng d ng trên desktop B n có biụ ạ ế rằng người máy Người tìm đường Sao Hỏa dùng phần mềm điều khiển bằng ngôn ng Javữ không? Nhưng điều có lẽ còn cuốn hút bạn hơn khi bạn biết rằng ngay từ năm 1997, năm mà Java còn chưa tốt như bây giờ, Trung tâm Vũ Trụ NASA đã chính thức công nhận ngôn ngữ Java là ngôn ng ữ chính được s dử ụng để l p trình cho các thi t b và ph n m m dùng cho Truậ ế ị ầ ề tâm
Giờ đây, khi nhắc đến Java, người ta cần phải hiểu đó là: thứ nhất: đó là một môi trường phát triển và triển khai ứng dụng; thứ hai: đó là một ngôn ngữ lập trình toàn năng Sự xuất hiển phổ biến của Flash không hề đe dọa đến Java Rõ ràng với sự đầu tư của Sun và các công ty
hỗ trợ Java khác, chỉ trong vòng 5 năm, nó đã trở thành một ngôn ngữ toàn năng nhất trong các ngôn ngữ lập trình được sử dụng trên thế giới hiện nay Điều người ta quan tâm nhất ở Java
Trang 66
là khả năng viết một lần chạy mọi nơi nghĩa là bạn có thể viết chương trình trên một máy tính cài Window, chạy chip của Intel nhưng chương trình đó vẫn chạy tốt và cho cùng một kết quả hoạt động khi chạy nó trên Macitosh hay Unix Điều này là không tưởng đối với C, C++, VB Khả năng chuyển đổi nền tảng, dễ phân phối, đa tầng, hướng đối tượng chính là những
gì mà Java chứng tỏ nó ưu việt hơn các ngôn ngữ khác
Với C, C++ tức là cha mẹ đẻ của Java thì điều này là rõ ràng Với Visual Basic, ngôn ngữ lập trình quan trọng nhất của Microsoft, ngoài những điểm vừa nói ở trên, Java còn được giới lập trình chuyên nghiệp trên thế giới trong đó các hacker thế hệ thứ nhất đánh giá rằng đây là một ngôn ngữ có cú pháp và cấu trúc tốt hơn nhiều Sử dụng Java bạn có thể dễ dàng
mở rộng dự án lập trình của mình với quy mô không giới hạn, việc quản lý cũng hết sức dễ dàng trong khi đó Visual Basic với cấu trúc thiết kế không thực sự tốt, nó chỉ thích hợp với các
dự án nhỏ, ít có nhu cầu mở rộng hay quản lý
Trang 7
7
II Đặc tả phần mềm
1.Mô hình đặc tả
2 Sơ đồ lớp của hệ thống
Order
- ID: int
- name: String
- count: int
- unitPrice: int
- sum: int
Trang 88
+ getID(): int
+ setID(int): void
+ getName(): String
+ setName(String): void
getCount(): int +
+ setCount(int): void
+ getUnitPrice(): int
+ setUnitPrice(int): void
+ getSum(): int
+ setSum(int): void
+ returnSum(): int
derController Or
- appView: AppView
- orderFunc: OrderFunc
OrderFunc
- listOrder: ArrayList<Order>
- FILE_NAME: String + OrderFunc()
+ getListOrder(): List<Order>
+ setListOrder(ArrayList<Order>): void + addOrder(Order): boolean
+ editOrder(Order): boolean + deleteOrder(int): boolean +searchOrderByName(String):ArrayList<Orde + readData(): void
+ saveData(ArrayList<Order>): boolean + createFile(): void
Trang 99
+ OrderController(appView: AppView)
+ addOrderClickListener()
+ editOrderClickListener()
+ deleteOrderClickListener()
+ searchOrderClickListener()
- handleTextChange()
- actionCreateOrder()
- actionEditOrder(selectIndex: int) - actionDeleteOrder(selectIndex: int) - renderTable(list: List<Order>) III Chương trình quản lý hàng siêu thị 1 Giao diện 1.1 Giao diện đăng nhập
Trang 1010
1.2 Giao diện chung
2 Phân tích
1 Chức năng đọc/ghi file nhị phân
2 Chức năng thêm, sửa, xóa thông tin sản phẩm
2.1 Thêm sản phẩm
Trang 1111
- Phương thức trả về giá trị boolean, thể hiện xem việc lưu dữ liệu đã
thành công hay không Nếu việc lưu dữ liệu thành công, phương thức
trả về true, nếu không sẽ trả về false
- Phương thức saveData(ArrayList<Order> data) sẽ ghi danh sách đơn
hàng vào tệp dữ liệu, đảm bảo rằng dữ liệu mới được thêm vào sẽ
được lưu lại và không bị mất khi chương trình kết thúc hoặc khởi
động lại
- this.listOrder.add(order) thêm đối tượng đơn hàng mới (order) vào
danh sách listOrder
2.2 Sửa sản phẩm
- phương thức kiểm tra xem ID của đơn hàng tại vị trí ‘i’có khớp với ID của đơn hàng cần chỉnh sửa hay không
- Phương thức sử dụng listOrder.set(i, order) để thay thế đối tượng đơn hàng cũ trong danh sách bằng đối tượng đơn hàng mới (order) Điều này có nghĩa là thông tin của đơn hàng trong danh sách đã được cập nhật
2.3 Xóa thông tin sản phẩm
Trang 1212
- vòng lặp foreach để duyệt qua tất cả các đơn hàng trong danh sách listOrder
- phương thức kiểm tra xem ID của đơn hàng o có khớp với ID của đơn hàng cần xóa hay không
- sử dụng listOrder.remove(o) để xóa đơn hàng o khỏi danh sách Điều này sẽ loại
bỏ đơn hàng đó khỏi danh sách
- dừng vòng lặp bằng lệnh break
3 Chức năng tìm kiếm thông tin sản phẩm
- phương thức tạo một danh sách mới có tên list để chứa các đơn hàng phù hợp
- Phương thức kiểm tra xem độ dài của chuỗi tìm kiếm sản phẩm có bằng 0 hay không Nếu độ dài bằng 0, có nghĩa là không có tên được cung cấp hoặc tên tìm kiếm trống Khi đó, phương thức trả về toàn bộ danh sách đơn hàng mà không cần tìm kiếm
Trang 1313
- Nếu tên tìm kiếm không trống, phương thức sẽ duyệt qua toàn bộ danh sách listOrder để tìm kiếm các đơn hàng phù hợp
- phương thức kiểm tra xem tên của đơn hàng o có chứa chuỗi tìm kiếm (dùng phương thức contains()) hay không Sự so sánh được thực hiện bằng cách chuyển đổi cả tên đơn hàng và chuỗi tìm kiếm thành chữ thường (dùng phương thức toLowerCase()) để so sánh
4 Thống kê giá sản phẩm
- Phương thức tính toán bằng cách nhân số lượng sản phảm với giá trị
của sản phẩm đó
Trang 14
14
Trong quá trình thực hiện dự án, em luôn cố gắng làm việc với một tinh thần cực kỳ nghiêm túc, vận dụng linh hoạt các kiến thức đã được giảng dạy để có thể hoàn thành môn học một cách tốt nhất có thể Tuy sản phẩm vẫn còn khá đơn giản, chưa được hoàn hảo như ý muốn nhưng rất mong nhận được sự ghi nhận từ thầy, cô Mọi ý kiến đóng góp sẽ là những kinh nghiệm quý báu để em phát triển hơn về sau này