You are on page 1of 35

ĐẠI HỌC DUY TÂN

TRƯỜNG KHOA HỌC MÁY TÍNH


KHOA KỸ THUẬT MẠNG MÁY TÍNH & TRUYỀN THÔNG


ĐỒ ÁN CÁ NHÂN

MÔN HỌC:

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

GIẢNG VIÊN HƯỚNG DẪN : NGUYỄN MINH NHẬT


SINH VIÊN THỰC HIỆN : NGUYỄN ANH THỌ
MSSV : 27211240229
LỚP MÔN HỌC : CS 311 J
LỚP SINH HOẠT : K27TPM19

ĐIỂM SỐ ĐIỂM CHỮ GIÁM KHẢO

1 | 35
CHƯƠNG I
GIỚI THIỆU BÀI TOÁN

1.1. Giới thiệu bài toán


Để quản lý biên lai thu tiền điện, người ta cần các thông tin sau:
 Với mỗi biên lai: Thông tin về hộ sử dụng điện, chỉ số điện cũ, chỉ số mới, số tiền
phải trả.
 Các thông tin riêng của từng hộ gia đình sử dụng điện: Họ tên chủ hộ, số nhà, mã số
công tơ điện.
Yêu cầu 1: Hãy xây dựng lớp khachHang để lưu trữu các thông tin riêng của mỗi hộ gia
đình.
Yêu cầu 2: Xây dựng lớp BienLai để quản lý việc sử dụng và thanh toán tiền điện của các
hộ dân.
Yêu cầu 3: Xây dựng các phương thức thêm, xoá sửa các thông tin riêng của mỗi hộ sử
dụng điện.
Yêu cầu 4: Viết phương thức tính tiền điện cho mỗi hộ gia đình theo công thức: (số mới –
số cũ) * 5.
Yêu cầu 5: Thoát chương trình.
Hãy thực hiện:
 Thiết kế giao diện GUI để thực hiện được tất cả các chức năng nêu trên
 Thiết kế cơ sở dữ liệu phù hợp cho project. Dữ liệu đọc và lưu từ file hoặc từ Hệ
Quản Trị CSDL như: MS. Access, SQL Server, MySQL v.v..
1.2. Yêu cầu
Yêu cầu 1: Hãy xây dựng lớp khachHang để lưu trữu các thông tin riêng của mỗi hộ gia
đình.
Yêu cầu 2: Xây dựng lớp BienLai để quản lý việc sử dụng và thanh toán tiền điện của
các hộ dân.

2 | 35
Yêu cầu 3: Xây dựng các phương thức thêm, xoá sửa các thông tin riêng của mỗi hộ sử
dụng điện.
Yêu cầu 4: Viết phương thức tính tiền điện cho mỗi hộ gia đình theo công thức: (số mới
– số cũ) * 5.
Yêu cầu 5: Thoát chương trình.

1.2.1. Đầu vào


+Cơ sở dữ liệu:
Lựa chọn Hệ thống file văn bản, gồm các file:
 BienLai.txt:
Thông Tin Hộ chỉ số điện cũ chỉ số điện mới số tiền phải trả
Nguyễn Văn A 540000 300000
Trần Thị B 647000 340000
Lê Vĩnh C 300000 100000
…..
 KhachHang.txt:
Họ Tên Số Nhà Mã Công Tơ Điện
Nguyễn Văn A 48 15364
Trần Thị B 37 16483
Lê Vĩnh C 49 13648
1.2.2. Đầu ra
 Xây dựng các lớp:
+BienLai class.
+KhachHang kế thừa lớp BienLai class
 Xây dựng lớp QLBl (quản lý biên lai) với các phương thức:
+ Thêm mới thông tin của các hộ.
+ Xóa thông tin của các hộ.
+ Chỉnh Sửa thông tin của các hộ.
+ Thoát khỏi chương trình
3 | 35
CHƯƠNG II
PHÂN TÍCH VÀ THIẾT KẾ
1.1. Phân tích
1.1.1. Lựa chọn ngôn ngữ lập trình
 Ngôn ngữ lập trình: Java
 Công cụ phát triển: NetBean
 Môi trường vận hành: Thực hiện PC, Desktop với hệ điều hành Window X.
1.2. Thiết kế
1.2.1. Thiết kế cơ sở dữ liệu
 Hệ thống lưu trữ: Hệ thống File văn bản (dạng *.txt)
 Gồm các file có cấu trúc như sau:
a. BienLai.txt: Lưu trữ về thông tin các hộ
Thông Tin Hộ chỉ số điện cũ chỉ số điện mới số tiền phải trả
Nguyễn Văn A 540000 300000 1200000
Trần Thị B 647000 340000 1535000
Lê Vĩnh C 300000 100000 500000
…..
b. KhachHangtxt: Lưu trữ về thông tin khách hàng
Họ Tên Số Nhà Mã Công Tơ Điện
Nguyễn Văn A 48 15364
Trần Thị B 37 16483
Lê Vĩnh C 49 13648

4 | 35
1.2.2. Thiết kế giao diện
1.2.2.1. Giao diện Command Line

DANH SÁCH QUẢ N LÝ CÁN BỘ


1. Thêm mới thông tin của các hộ.
2. Xóa thông tin của các hộ.
3. Chỉnh Sửa thông tin của các hộ.
4. Thoát khỏi chương trình
Hãy chọn mục: _

Hình 1. Giao diện chinh dạng Command Line


1.1.1.1. Giao diện GUI

Hình 2. Giao diện chinh dạng đồ hoạ

5 | 35
1.1.1. Thiết kế lớp
1.1.1.1. Thiết kế lớp
a. Lớp BienLai
 Tên lớp: BienLai.java
 Thuộc tính: <
private String thongTinHo;
private int soDienMoi;
private int soDienCu;
private int soTienPhaiTra; >
 Phương thức: <
public String getThongTinHo() {
return thongTinHo;
}

public void setThongTinHo(String thongTinHo) {


this.thongTinHo = thongTinHo;
}

public int getSoDienMoi() {


return soDienMoi;
}

public void setSoDienMoi(int soDienMoi) {


this.soDienMoi = soDienMoi;
}

public int getSoDienCu() {


return soDienCu;
}
6 | 35
public void setSoDienCu(int soDienCu) {
this.soDienCu = soDienCu;
}

public void setSoTienPhaiTra(int soTienPhaiTra) {


this.soTienPhaiTra = soTienPhaiTra;
}

public BienLai(String thongTinHo, int soDienMoi, int soDienCu, int


soTienPhaiTra) {
this.thongTinHo = thongTinHo;
this.soDienMoi = soDienMoi;
this.soDienCu = soDienCu;
this.soTienPhaiTra = (this.soDienCu - this.soDienMoi)*5;
}

@Override
public String toString() {
return "BienLai{" + "thongTinHo=" + thongTinHo + ", soDienMoi=" +
soDienMoi + ", soDienCu=" + soDienCu + ", soTienPhaiTra=" +
soTienPhaiTra + '}';
}

7 | 35
Hình 3. Hình code BienLai trong NeaBeans trong lớp BienLai

8 | 35
b. Lớp KhachHang
 Tên lớp: KhachHang.java
 Thuộc tính: < private int soNha;
private int maCongToDien;
private int chiSoCu;
private int chiSoMoi;
private int soTienPhaiTra; >
 Phương thức: <
public int getChiSoCu() {
return chiSoCu;
}

public void setChiSoCu(int chiSoCu) {


this.chiSoCu = chiSoCu;
}

public int getChiSoMoi() {


return chiSoMoi;
}

public void setChiSoMoi(int chiSoMoi) {


this.chiSoMoi = chiSoMoi;
}
BienLai kha = new BienLai();
private String hoTenChuHo;

public KhachHang() {
}

9 | 35
public KhachHang(String hoTenChuHo, int soNha, int maCongToDien,int
soTienPhaiTra) {
this.hoTenChuHo = hoTenChuHo;
this.soNha = soNha;
this.maCongToDien = maCongToDien;
this.soTienPhaiTra = (kha.getSoDienMoi() - kha.getSoDienCu())*5;
}

public KhachHang(String hoTenChuHo, int soNha, int maCongToDien,int


chiSoCu,int chiSoMoi,int soTienPhaiTra) {
this.hoTenChuHo = hoTenChuHo;
this.soNha = soNha;
this.maCongToDien = maCongToDien;
this.chiSoCu = chiSoCu;
this.chiSoMoi = chiSoMoi;
this.soTienPhaiTra = (this.getChiSoMoi() - this.getChiSoCu())*5;
}
public int getSoTienPhaiTra() {
return (this.getChiSoMoi() - this.getChiSoCu())*5;
}

public String getHoTenChuHo() {


return hoTenChuHo;
}

public void setHoTenChuHo(String hoTenChuHo) {


this.hoTenChuHo = hoTenChuHo;
}
10 | 35
public int getSoNha() {
return soNha;
}

public void setSoNha(int soNha) {


this.soNha = soNha;
}

public int getMaCongToDien() {


return maCongToDien;
}

public void setMaCongToDien(int maCongToDien) {


this.maCongToDien = maCongToDien;
}

@Override
public String toString() {
return "KhachHang{" + "hoTenChuHo=" + hoTenChuHo + ", soNha=" +
soNha + ", maCongToDien=" + maCongToDien + '}';
}
>

11 | 35
Hình 4. Hình code trong NeaBeans lớp KhachHang

c. Lớp QLBLModel
 Tên lớp: QLBLModel.java
 Thuộc tính: <
12 | 35
private ArrayList<KhachHang> khachhang;
BienLai bl = new BienLai();
>
 Phương thức: <
public QLBLModel() {
this.khachhang = new ArrayList<KhachHang>();
}

public QLBLModel(ArrayList<KhachHang> khachhang) {


this.khachhang = khachhang;
}

public ArrayList<KhachHang> getKhachhang() {


return khachhang;
}

public void setKhachhang(ArrayList<KhachHang> khachhang) {


this.khachhang = khachhang;
}

public void add(KhachHang kh){


this.khachhang.add(kh);
}

public void delete(KhachHang kh){


this.khachhang.remove(kh);
}

13 | 35
public void edit(KhachHang kh){
this.khachhang.remove(kh);
this.khachhang.add(kh);
}

public int tinhTongTien(){


return (this.bl.getSoDienMoi() - this.bl.getSoDienCu())*5;
}

Hình 5. Hình code trong NeaBeans trong lớp QLBLModel

d. Lớp QLBLView

14 | 35
15 | 35
16 | 35
17 | 35
18 | 35
19 | 35
20 | 35
Hình 6. Soure code view của Jframe
e. Lop QLBLController

21 | 35
22 | 35
Hình 7. Code của QLBLController
1.1.1.1. Sơ đồ lớp

23 | 35
CHƯƠNG III
CÀI ĐẶT VÀ KIỂM THỬ
3.1. GIAO DIỆN CHÍNH
3.1.1. Giao diện Comman Line

3.1.1. Giao diện GUI

24 | 35
3.2. Một số kết quả

3.2.1. Thêm mới khách hàng


3.2.1.1. Giao diện Comman Line

3.2.1.2. Giao diện đồ hoạ


25 | 35
Trước khi thêm:

Sau khi thêm:

Bấm ok --> Kết quả đã được đưa lên danh sách

26 | 35
3.2.2. Xóa khách hàng ra khỏi danh sách
3.2.2.1. Giao diện Comman Line

3.2.2.2. Giao diện đồ hoạ


Trước khi xóa ta cần nhấp vào cột ta mốn xóa(VD: Lê Vĩnh C)

27 | 35
Sau đó bấm nút xóa hiện thông báo

Sau khi bấm ok nó sẽ cho ta thêm 1 cảnh báo ta có thực sự muốn xóa

28 | 35
Nếu chúng ta bấm Yes sẽ cho ra kết quả như sau và theo đó cũng tính tổng tiền tiện theo
yêu cầu cu:

29 | 35
3.2.2. Chỉnh sửa khách hàng
3.2.2.2. Giao diện đồ hoạ

30 | 35
31 | 35
3.2.3. Tính tổng tiền điện của khách hàng
3.2.3.2. Giao diện đồ hoạ
Khi ta bấm thêm tức là sẽ tính tổng vào của các hộ

32 | 35
3.2.4. Thoát chương trình
3.2.4.2. Giao diện đồ họa

Chương trình đã bị hủy và thoát ra

33 | 35
KẾT LUẬN
1. Các vấn đề đạt được

- Hiểu biết về các hệ thống Java


- Các kỹ năng Java Core
- Các công cụ dựng của Java
- Làm việc nhóm
- Khả năng sáng tạo
- Để ý các chi tiết
2. Các vấn đề chưa đạt được
- Liên kết chức năng chưa bắt lỗi đầy đủ
- Cơ sở dữ liệu còn sơ sài
- Giao diện đồ họa chưa hoàn thiện
3. Hướng phát triển
- Tiếp tục hoàn thiện các chức năng còn hạn chế

34 | 35
TÀI LIỆU THAM KHẢO
[1]. https://meta.stackoverflow.com/questions/302471/how-to-put-tables-in-stack-
overflow
[2]. https://www.youtube.com/watch?v=8e_IvPvr
NY&list=PLhs1urmduZ2_ZFO6vu63QNWTL5XHriWKu
[3].https://www.youtube.com/watch?
v=L95658yXRgI&list=PLsyeobzWxl7rmuFYRpkqLanwoG4pQQ7oW

35 | 35

You might also like