You are on page 1of 30

TRƯỜNG ĐẠI HỌC PHENIKAA

KHOA KHOA HỌC CƠ BẢN

⸎⸎⸎⸎⸎

BÀI TẬP LỚN KẾT THÚC HỌC PHẦN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Đề bài: “Xây dụng mô hình quản lý Sim số”

Đề số: 03

Sinh viên : LÊ TUẤN ANH

Lớp : Lập trình hướng đối tượng 1-2-23.(N01)

Mã SV : 22010165

Giảng viên : Trần Đình Tân

HÀ NỘI, THÁNG 12/2022

1
Mục lục

1. Sơ đồ ORD…..…………………………………………………………………………….3
2.Mục đích…………………………………………………………………………………….5
3.Các Chức năng chính của chương trình……………………………………….5
3.1 Đăng nhập………………………………………………………………………………………..5
3.2 Giao diện chính chương trình…………………………………………………………..6
3.3 Các chức năng chính…………………………………………………………………………8
3.3.1 Thêm sim…………………………………………………………………………………………………9

3.3.2 Xóa sim……………………………………………………………………………………………………11


3.3.3 Sửa sim……………………………………………………………………………………………………13
3.3.4 Thống kê………………………………………………………………………………………………….15
3.3.5 Sắp xếp……………………………………………………………………………………………………16
3.3.6 Tìm kiếm………………………………………………………………………………………………….17
3.3.7 Lưu file nhị phân………………………………………………………………………..……………18
3.3.8 Đăng xuất……………………………………………………………………………………..…………19

4. Một số source code chính…………………………………………………………20


Lời kết………………………………………………………………………………………….30
Tài liệu tham khảo………………………………………………………………..……..30

2
1. Sơ đồ ORD
Sim
- soDienThoai: String
- tenChuSoHuu: String
- Sotien : int

+ Sim()
+ Sim(soDienThoai:String,tenChuSoHuu:String,Sotien:int)
+ getSoDienThoai(): String
+ setSoDienThoai( soDienThoai:String ): void
+ getTenChuSoHuu(): String
+ setTenChuSoHuu(tenChuSoHuu: String): void
+ getSotien(): int
+ setSotien(Sotien: int): void

extends
Simmang Simgoidien
- data : int - phutGoi: int
+ Simmang(data: int) + Simgoidien(phutGoi: int)
+ Simmang(soDienThoai:String,tenChuSoHuu:String + Simgoidien(soDienThoai:String,tenChuSoHuu:String
,Sotien:int,data:int) ,Sotien:int, phutGoi :int)
+ getData(): int + getPhutGoi() : int
+ setData(data: int) : void + setPhutGoi(phutGoi: int): void

3
4
2. Mục đích:
- Chương trình được xây dựng bằng ngôn ngữ Java,với mục đích hỗ trợ công
tác quản lý sim trong một công ty,tiết kiệm thời gian tìm kiếm thông tin sim
cho những người quản lý

-Sim được quản lý thông qua các thông tin trong dữ liệu sim bao gồm: Số
sim, tên người dùng, số tiền còn trong sim

-Người quản lý sẽ quản lý với tư cách là admin khi đăng nhập vào chương
trình với các thông tin Username,Password.

3. Các chức năng của chương trình


3.1 Đăng nhập:

Tại đây người quản lý đăng nhập vào chương trình với tư cách là admin,từ đó
cập nhật các thông tin liên quan đến Sim ở trong đó.
- khi đăng nhập thành công hiện thông báo:

5
Code button đăng nhập
3.2 Giao diện chính chương trình
- Đăng nhập thành công trang chủ sẽ xuất hiện.
- Để vào giao diện quản lý ta cần mở Menu. Menu gồm những chức năng sau:
+ Chuyển qua bảng sim mạng hoặc gọi
+ Đăng xuất
Menu

Trang Chủ

6
Giao diện menu

- Giao diện chính gồm 2 bảng là bảng sim mạng và sim gọi điện. Trong đó:
+ Bảng sim mạng gồm các trường thông tin: Số sim,Tên người dùng, Số tiền,
Data
+ Bảng sim gọi gồm các trường thông tin: Số sim,Tên người dùng, Số tiền, Phút
gọi

Bảng sim mạng

7
Bảng sim gọi
3.3 Các chức năng của chương trình
Vì bảng sim mạng và bảng sim gọi tương tự nhau nên em xin phép demo 1 bảng
sim mạng:
- Ở trong 1 bảng có những chức năng như sau:
1.Thêm sim
2. Xóa sim
3. Sửa sim
4.Thống kê
5.Sắp xếp
6.Tìm kiếm
7.Lưu file nhị phân
8.Đăng xuất

8
3.3.1: Thêm sim
- Khi ấn vào thêm sim các trường thông tin sẽ trống và chúng ta sẽ điền thông
tin vào những trường đó:

- Ta sẽ ví dụ điền số điện thoại : 023456789 , Tên Người Dùng: Lê Văn B, Số


tiền:100.000, Data: 100 :

- Khi ta ấn “Lưu”, thông tin sẽ được điền lên table. Nếu ấn “Hủy” thì sẽ trở về
ban đầu.

9
- Lưu ý: Nếu các trường để trống hoặc số điện thoại trùng với các số trong table
chương trình sẽ thông báo lỗi .

hình ảnh sau khi lưu thành công

Báo lỗi khi trường thông tin để trống

10
Báo lỗi khi trùng số sim
3.3.2: Xóa Sim
- Chức năng xóa cho phép nhân viên quản lý xóa toàn bộ thông tin Số sim ra
khỏi hệ thống thông qua nhập Số sim.
-Khi ấn vào “Xóa” sẽ hiện lên thông báo nhập số sim cần xóa:

11
Ví dụ: Xóa số 023456789 với tên người dùng là Lê Văn B:

Hình ảnh sau khi xóa thành công

12
Báo lỗi khi không tìm thấy sim cần xóa

3.3.3: Sửa Sim


- Giao diện chính cung cấp chức năng sửa đổi thông tin của sim đã được lưu trữ
trong hệ thống.
- Ví dụ ta muốn đổi thông tin của số sim 0123456789: Tên Người Dùng thành
Nguyễn Văn A -> Nguyễn Văn B, đổi số tiền thành 20000, data từ 16 -> 20
+ Bước 1: Để sửa sim chúng ta cần click vào dòng sim cần sửa, sau đó thông tin
của sim sẽ được hiện lên các dòng ở bên trái:

+ Bước 2: chúng ta ấn vào “ Sửa Sim” màn hình sẽ hiện lên như sau:

13
+Bước 3 Chúng ta sửa thông tin của các trường muốn sửa:

Để hoàn thành thao tác sửa chúng ta ấn “Lưu” , nếu không muốn sửa nữa
chúng ta ấn “Hủy”

14
Hình ảnh khi sửa thành công

3.3.4: Thống kê
Chương trình sẽ giúp nhân viên quản lý thống kê những thông tin sau : Tổng số
sim, Tổng số tiền, Tổng lượng dữ liệu, Tổng số Sim hết Data.
- Khi ấn vào nút “Thống kê”, chương trình sẽ hiện lên thông báo dưới đây:

15
3.3.5: Sắp xếp
- Chức năng sắp xếp trong chương trình cho phép nhân viên quản lý sắp xếp
thông tin sim theo Tên người dùng theo thứ tự từ A -> Z,nhằm tạo ra sự thuận
tiện và dễ dàng trong quá trình tìm kiếm và xem thông tin của người dùng.
- Khi ấn vào nút “Sắp xếp” table sẽ sắp xếp theo tên theo thứ tự lớn dần. Dưới
đây là hình ảnh sau khi sắp xếp:

Hình ảnh trước khi sắp xếp

Hình ảnh sau khi sắp xế

16
3.3.6: Tìm kiếm
- Giao diện chính cung cấp chức năng tìm kiếm giúp nhân viên quản lý có thể dễ
dàng tìm kiếm thông tin qua Số sim
Ví dụ bạn cần tìm kiếm thông tin của số sim “0123456789”
Bước 1: Điền thông tin vào ô dưới đây

Bước 2: Ấn vào nút “Tìm Kiếm”


- Dưới đây là hình ảnh sau khi tìm kiếm:

- Để về bảng chính ta ấn vào nút “Hủy”

17
3.3.7. Lưu vào file nhị phân

Để lưu file chúng ta ấn vào nút “Lưu dữ liệu”

- Sau đó hiện lên thông báo chúng ta ấn “OK” là hoàn thành lưu file:

18
3.3.8. Đăng xuất
Để đăng xuất ta ấn vào icon Menu:

- Khi menu hiện ra ta ấn vào nút đăng xuất:

- Đăng xuất thành công sẽ trở về giao diện đăng nhập

19
4.Một số Source code chính
private void btThemActionPerformed(java.awt.event.ActionEvent evt) {
this.txtSosim.setText("");
this.txtTen.setText("");
this.txtTien.setText("");
this.txtData.setText("");
OnOff(false,true);
check=0;
}
// bt Lưu có 2 chức năng nếu check =0 cho chức năng them sim, check =1 cho
chức năng sửa sim
private void btLuuActionPerformed(java.awt.event.ActionEvent evt) {
if (check == 0) {
String sim = this.txtSosim.getText();
String name = this.txtTen.getText();
String tienStr = this.txtTien.getText();
String dataStr = this.txtData.getText();

if (sim.isEmpty() || name.isEmpty() || tienStr.isEmpty() || dataStr.isEmpty()) {


JOptionPane.showMessageDialog(this,
"Please fill in all fields.",
"Incomplete Information",

20
JOptionPane.ERROR_MESSAGE);
return;
}

int tien, data;


try {
tien = Integer.parseInt(tienStr);
data = Integer.parseInt(dataStr);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(this,
"Invalid value for tien or data. Please enter valid integers.",
"Invalid Input",
JOptionPane.ERROR_MESSAGE);
return;
}
// Check for duplicate phone number
if (list.stream().anyMatch(s -> s.getSoDienThoai().equals(sim))) {
JOptionPane.showMessageDialog(this,
"Phone number already exists.",
"Duplicate SIM",
JOptionPane.ERROR_MESSAGE);
return;
}

21
// Check for duplicate user name

// Add the new SIM


list.add(new Simmang(sim, name, tien, data));
View();
ViewTable();
}

if (check == 1) {
if (showConfirmationDialog("modification")) {
// User confirmed modification
String sim = this.txtSosim.getText();
String name = this.txtTen.getText();
String tienStr = this.txtTien.getText();
String dataStr = this.txtData.getText();

// Convert tien and data from String to int


int tien, data;
try {
tien = Integer.parseInt(tienStr);
data = Integer.parseInt(dataStr);
} catch (NumberFormatException e) {

22
JOptionPane.showMessageDialog(this,
"Invalid value for tien or data. Please enter valid integers.",
"Invalid Input",
JOptionPane.ERROR_MESSAGE);
return;
}

list.set(pos, new Simmang(sim, name, tien, data));


View();
ViewTable();
}
}
}

private void txtSosimActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
}
private void btHuyActionPerformed(java.awt.event.ActionEvent evt) {
this.txtSosim.setText("");
this.txtTen.setText("");
this.txtTien.setText("");
this.txtData.setText("");
OnOff(true,false);

23
View();
ViewTable();
}

private void btXoaActionPerformed(java.awt.event.ActionEvent evt) {


String sdtToDelete = JOptionPane.showInputDialog(this,
"Enter the phone number to delete:",
"Delete SIM",
JOptionPane.QUESTION_MESSAGE);

if (sdtToDelete != null && !sdtToDelete.isEmpty()) {


boolean found = false;

// Kiểm tra xem có SIM nào trong danh sách có số điện thoại trùng khớp
không
for (Simmang sim : list) {
if (sim.getSoDienThoai().equals(sdtToDelete)) {
found = true;
break;
}
}

if (!found) {
JOptionPane.showMessageDialog(this,

24
"No SIM found with the phone number entered.",
"Error",
JOptionPane.ERROR_MESSAGE);
return; // Dừng thực thi tiếp theo nếu không tìm thấy SIM
}

if (showConfirmationDialog("deletion")) {
// Lọc và xóa SIM có số điện thoại trùng khớp
list.removeIf(sim -> sim.getSoDienThoai().equals(sdtToDelete));

// Kiểm tra xem danh sách còn SIM hay không


if (list.isEmpty()) {
JOptionPane.showMessageDialog(this,
"No SIM found in the list.",
"Error",
JOptionPane.ERROR_MESSAGE);
} else {
// Nếu danh sách không rỗng, cập nhật hiển thị
View();
ViewTable();
}
}
} else {

25
JOptionPane.showMessageDialog(this,
"Please enter a valid phone number.",
"Invalid Input",
JOptionPane.ERROR_MESSAGE);
}

private void btSuaActionPerformed(java.awt.event.ActionEvent evt) {


OnOff(false,true);
check=1;
}
private void btSapxepActionPerformed(java.awt.event.ActionEvent evt) {
// Sắp xếp theo phần tên
Collections.sort(list, Comparator.comparing(s -> {
String tenChuSoHuu = s.getTenChuSoHuu();
// Trích xuất phần tên đệm
String[] parts = tenChuSoHuu.split("\\s+");
// Trả về phần tên đệm (phần thứ hai của mảng parts, nếu có)
return parts.length > 1 ? parts[1] : "";
}));
Collections.sort(list, Comparator.comparing(s -> {
String tenChuSoHuu = s.getTenChuSoHuu();
// Trích xuất phần tên

26
String[] parts = tenChuSoHuu.split("\\s+");
// Trả về phần tên (phần cuối cùng của mảng parts)
return parts[parts.length - 1];
}));

// Cập nhật bảng


ViewTable();
JOptionPane.showMessageDialog(this, "Đã sắp xếp xong!");
}

private void btThongkeActionPerformed(java.awt.event.ActionEvent evt) {


int totalMoney = 0;
int totalData = 0;
int totalSimWithoutData = 0;

for (Simmang sim : list) {


try {
int money = sim.getSotien();
totalMoney += money;
} catch (NumberFormatException e) {
// Handle the case where the 'Sotien' is not a valid integer
// You can display an error message or handle it as appropriate for your
application

27
}

int data = sim.getData();

if (data == 0) {
totalSimWithoutData++;
} else {
totalData += data;
// Perform additional actions if necessary
}
}

// Display the combined statistics in a message dialog


JOptionPane.showMessageDialog(this,
"Tổng Số Sim đang được sử dụng: " + list.size()
+ "\nTổng Số Tiền Trong Các Sim: " + totalMoney
+ "\nTổng Dữ Liệu Sử Dụng Trong Các Sim: " + totalData + "GB"
+ "\nTổng số SIM không còn DATA: " + totalSimWithoutData,
"Combined Statistics", JOptionPane.INFORMATION_MESSAGE);
}

private void btTimKiemActionPerformed(java.awt.event.ActionEvent evt) {


String phoneNumber = KhungTimKiem.getText().trim();

28
if (!phoneNumber.isEmpty()) {
searchSim(phoneNumber);
} else {
JOptionPane.showMessageDialog(this, "Please enter a phone number",
"Search Error", JOptionPane.ERROR_MESSAGE);
}

private void KhungTimKiemActionPerformed(java.awt.event.ActionEvent evt)


{
// TODO add your handling code here:
}

private void KhungTimKiemMouseClicked(java.awt.event.MouseEvent evt) {


if (KhungTimKiem.getText().equals("Tìm kiếm theo Số Sim.....")) {
KhungTimKiem.setText("");
}
}

29
Lời kết
Bài tập lớn còn nhiều điểm thiếu xót, em mong thầy xem xét
và góp ý
Em xin chân thành cảm ơn!

Tài liệu tham khảo


1. https://www.youtube.com/watch?v=O16uCrlkVxI
2. https://www.youtube.com/watch?v=ax_tbXygZXQ&t=3508s
3. https://www.youtube.com/watch?v=BHHqG8aNVaQ
4.ChatGPT

30

You might also like