Chính vì thu nhập cao và không sợ không có người thuê, nhiều chủ nhà mạnh dạn đầu tư vào hình thức kinh doanh này, với quy mô nhà trọ lớn, nhiều phòng hay thậm chí là phân bố ở nhiều chỉ
Trang 1ĐẠI HỌC ĐÀ NẴNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
Đề tài: QUẢN LÝ PHÒNG TRỌ
GIẢNG VIÊN HƯỚNG DẪN: TS.Võ Đức Hoàng SINH VIÊN THỰC HIỆN:
Tên sinh viên: Lê Văn Thành Luân LỚP: 20TCLC_DT5 NHÓM: 20.91 Tên sinh viên: Nguyễn Nhật Khôi LỚP: 20TCLC_DT3 NHÓM: 20.91
Đà Nẵng, 12/2021
Trang 2PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
LỜI MỞ ĐẦU
Hiện nay, khi các trường Đại học ngày một mở rộng, các khu công nghiệp xuất hiện ngày một nhiều, lượng sinh viên và người lao động sống xa nhà cũng tăng nhanh chóng một cách đáng kể Chính xu hướng này kéo theo việc các khu nhà trọ mọc lên như nấm, đặc biệt là gần các trường Đại học Cao đẳng, khu công nghiệp, từ nội cho tới ngoại thành Thực tế thì kinh doanh phòng trọ hay cho thuê căn hộ là một hình thức được nhiều người quan tâm hiện nay, bởi nó mang đến thu nhập cao và ổn định cho chủ nhà, nhu cầu luôn cao và ít chịu những tác động từ môi trường bên ngoài Nếu số lượng phòng trọ của bạn ở mức trung trung, không quá nhiều thì dường như việc quản
lý có lẽ cũng khá dễ dàng
Chính vì thu nhập cao và không sợ không có người thuê, nhiều chủ nhà mạnh dạn đầu tư vào hình thức kinh doanh này, với quy mô nhà trọ lớn, nhiều phòng hay thậm chí là phân bố ở nhiều chỉ khác nhau, điều này khiến bạn không có đủ thời gian
để quản lý tất cả và sử dụng phần mềm quản lý nhà trọ chính là giải pháp đơn giản, hiệu quả để bạn có thể theo dõi tất cả mọi thứ
Trang 3PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
MỤC LỤC
LỜI MỞ ĐẦU 2
MỤC LỤC 3
DANH MỤC HÌNH VẼ 4
1 GIỚI THIỆU ĐỀ TÀI 5
2 PHÂN TÍCH CHỨC NĂNG HỆ THỐNG 6
1.1 Sử dụng với vai trò admin 6
1.2 Sử dụng với vai trò User 7
3 THIẾT KẾ CẤU TRÚC DỮ LIỆU 7
3.1 Phát biểu bài toán 7
3.2 Phân tích và ứng dụng cấu trúc dữ liệu trong hệ thống 9
4 PHÂN TÍCH HƯỚNG ĐỐI TƯỢNG VÀ TRIỂN KHAI HỆ THỐNG 13
4.1 Cấu trúc hệ thống hướng đối tượng 13
4.2 Kết quả 14
4.2.1 Giao diện chính của chương trình 14
4.2.2 Kết quả thực thi của chương trình 17
4.2.3 Nhận xét 19
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 19
a Kết luận 19
b Hướng phát triển 19
TÀI LIỆU THAM KHẢO 20
Trang 4PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
DANH MỤC HÌNH VẼ
Hình 1: Sơ đồ khối Admin
Hình 2: Sơ đồ khối User
Trang 5PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
1 GIỚI THIỆU ĐỀ TÀI
Phần mềm Quản lý phòng trọ là ứng dụng tự động hóa phòng trọ Nó giúp chúng
ta quản lý thông tin phòng trọ bằng các lệnh nhập đơn giản từ đó quản lý phòng trọ một cách hiệu quả hơn, đơn giản hơn và rất nhiều lợi ích khác như quản lý chi phí, lập hóa đơn tiền thuê, quản lý tài chính chủ trọ Phần mềm quản lý phòng trọ cho tính hiệu suất cao hơn so với cách truyền thống:
- Tổ chức toàn bộ thông tin trên 1 hệ thống duy nhất
- Quản lý chính xác và ít sai sót
- Tiết kiệm thời gian với tính tự động
Ngôn ngữ C++
C++ là một ngôn ngữ lập trình hướng đối tượng được mở rộng từ ngôn ngữ C Trong ngôn ngữ C không có khái niệm lập trình hướng đối tượng, và để có thể lập trình hướng đối tượng thì các nhà phát triển đã thêm chức năng này cùng với nhiều cải tiến khác vào ngôn ngữ C, để tạo ra phiên bản mở rộng của C chính là ngôn ngữ C++ Có thể hiểu đơn giản C++ chính là ngôn ngữ C với nhiều cải tiến khác nhau, bao gồm cả lập trình hướng đối tượng Mặc dù được cải tiến từ C, nhưng nó vẫn có khả năng sử dụng các phương thức lập trình thủ tục như ngôn ngữ C truyền thống Và một điều tuyệt vời nữa là, do C++ và C có tính tương hỗ với nhau, nên chúng ta cũng có thể sử dụng đồng thời cả C++ và C khi viết một chương trình máy tính
Ngôn ngữ C++ là ngôn ngữ lập trình hướng đối tượng do đó có lợi đối với các ứng dụng quản lý Nhờ vào 4 tính chất chính là kế thừa, đa hình, đóng gói, trừu tượng của ngôn ngữ này ta không chỉ quản lý các dữ liệu tốt hơn mà còn đảm bảo tính bảo mật dữ liệu cao cho chương trình
Bên cạnh đó, ngôn ngữ C++ đã được ra đời từ lâu nên khả năng tương thích, hỗ trợ đa nền tảng của nó tốt hơn so với các ngôn ngữ lập trình khác
Trang 6PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
2 PHÂN TÍCH CHỨC NĂNG HỆ THỐNG
2.1 Sử dụng với vai trò admin
Hình 1: Sơ đồ khối Admin
Admin có các chức năng:
- Nhập/ xuất/ chỉnh sửa dữ liệu tiền sinh hoạt
- Nhập/ xuất/ chỉnh sửa dữ liệu phòng trọ
- Nhập/ xuất/ chỉnh sửa doanh thu
- Nhập/ xuất/ chỉnh sửa dữ liệu sinh viên thuê phòng
ADMIN
Quản lý sinh viên Quản lý phòng trọ
Thu tiền sinh hoạt
Tiền điện từng
phòng
Tiền nước từng
phòng
Dữ liệu sinh viên thuê phòng
Dữ liệu phòng trọ
Doanh thu phòng trọ hàng tháng
Trang 7PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
2.1 Sử dụng với vai trò User
Hình 2: Sơ đồ khối User
User có các chức năng:
- Xem chi phí sinh hoạt
- Xem thông tin phòng trọ đang thuê
- Xem tiền thuê phòng
- Xem/ chỉnh sửa thông tin cá nhân
3 THIẾT KẾ CẤU TRÚC DỮ LIỆU
3.1 Phát biểu bài toán
Input:
- file input user.txt : chứa dữ liệu người dung (mã sinh viên, họ tên, ngày sinh, số điện thoại, quê quán, vai trò, username, mật khẩu)
USER
Dữ liệu phòng trọ Dữ liệu sinh viên Tiền thuê phòng Tiền nước của phòng
Tiền điện của phòng
Trang 8PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
- file input dienNuoc.txt: chứa mã phòng, số điện, số nước, tiền điện, tiền nước, ngày thu, trạng thái
- file input phongtro.txt: chứa mã phòng, tên phòng, loại phòng, giá phòng, trạng thái
Output:
- file output thanhtoantientro.txt: mã hóa đơn, mã phòng, mã sinh viên, ngày thu, nội dung, giá tiền, trạng thái
Trang 9PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
- Hiển thị thông tin ở màn hình
3.2 Phân tích và ứng dụng cấu trúc dữ liệu trong hệ thống
Tạo class EventFile lưu trữ các hàm nhập, xuất, đọc, thêm, sửa, xóa
- Hàm xuất:
void writingUser(string filename, vector<string> data){
ofstream myfile ("user.txt");
if (myfile.is_open())
{
if(data.size()>0){
for(int i = 0; i< data.size(); i++){
myfile << data[i]<<"\n";
} }
myfile.close();
}
else cout << "Unable to open file";
}
- Hàm đọc:
void reading(){
string line;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while ( getline (myfile,line) )
{
cout << line << '\n';
}
Trang 10PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
myfile.close();
}
else cout << "Unable to open file";
}
vector<string> Split(string str, char delim){
vector<string> list;
size_t start;
size_t end = 0;
while ((start = str.find_first_not_of(delim, end)) != string::npos)
{
end = str.find(delim, start);
list.push_back(str.substr(start, end - start));
}
return list;
}
+ Tạo hàm split : dùng hàm split để tách các string, tab bằng dấu “,’’
- Hàm thêm:
void addStudent(user u){
vector<string> list;
string line;
bool add = true;
ifstream myfile ("user.txt");
if (myfile.is_open())
{
while ( getline (myfile,line) )
{
if( getItem(Split(line,','),0) == u.id ){
string str = u.id+","+u.name+","+u.birthday+","+u.numberphone+","+u.address+",student,"+u.getUserName() +","+u.getPassword();
list.push_back(str);
add = false;
}else list.push_back(line);
}
Trang 11PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
myfile.close();
}
else cout << "Unable to open file";
if(add){
string str =
u.id+","+u.name+","+u.birthday+","+u.numberphone+","+u.address+",student,"+u.getUserName() +","+u.getPassword();
list.push_back(str);
}
writingUser("user.txt", list);
}
- Hàm chỉnh sửa:
void updateStudent(user u){
vector<string> list;
string line;
ifstream myfile ("user.txt");
if (myfile.is_open())
{
while ( getline (myfile,line) )
{
if( getItem(Split(line,','),0) == u.id ){
string str = u.id+","+u.name+","+u.birthday+","+u.numberphone+","+u.address+",student,"+u.getUserName() +","+u.getPassword();
list.push_back(str);
}else list.push_back(line);
}
myfile.close();
}
else cout << "Unable to open file";
writingUser("user.txt", list);
}
- Hàm xóa:
void deleteStudent(string id){
vector<string> list;
string line;
ifstream myfile ("user.txt");
if (myfile.is_open())
{
Trang 12PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
while ( getline (myfile,line) )
{
if( getItem(Split(line,','),0) == id ){
// no add list }else list.push_back(line);
}
myfile.close();
}
else cout << "Unable to open file";
writingUser("user.txt", list);
}
+ Hàm push_back: Thêm một phần tử mới vào cuối vùng chứa danh sách, sau phần tử cuối cùng hiện tại của nó Nội dung được sao chép (hoặc di chuyển) sang phần tử mới + Class <vector> giúp vector hỗ trợ việc thao tác với các mảng động
TRIỂN KHAI HỆ THỐNG
4.1 Cấu trúc hệ thống hướng đối tượng
Class dienNuoc
mã phòng trọ
số điện /tháng
số nước /tháng tiền điện /tháng tiền nước /tháng
Trang 13PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
Class phongTro
mã phòng trọ
tên phòng trọ
loại phòng
giá phòng
trạng thái phòng
Class user
mã sinh viên
tên sinh viên
ngày sinh
số điện thoại
quê quán
vai trò
tên người dùng
mật khẩu
4.2 Kết quả
4.2.1 Giao diện chính của chương trình
Class thanhtoantientro
mã hóa đơn
mã phòng
mã sinh viên ngày đóng nội dung giá tiền trạng thái đóng
Class doanhthu
ngày
tháng
năm
giá tiền
Trang 14PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
Menu login
Xem nhanh phòng trọ đang trống
Menu của admin
Menu quản lý sinh viên
Trang 15PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
Menu quản lý phòng trọ
Menu quản lý tiền điện nước
Thống kê doanh thu
Menu của user
Trang 16PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
Xem, chỉnh sửa thông tin cá nhân
Xem, thanh toán tiền điện, nước
Xem thông tin phòng, thanh toán tiền trọ
4.2.2 Kết quả thực thi của chương trình
- Đăng nhập admin:
Nhập dữ liệu sinh viên từ console hoặc file text từ đó xuất ra màn hình
Trang 17PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
Thay đổi thông tin sinh viên
- Đăng nhập user:
Xem thông tin cá nhân
Trang 18PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
Đặt phòng
4.2.3 Nhận xét
- Cách quản lý dữ liệu phù hợp, có phần quản lý của admin và phần của users tách riêng
Trang 19PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
- Sử dụng tốt các hàm truy xuất, nhập, thêm, sửa, xóa
- Cách đọc, xuất file tốt
- Phần thiết kế cần cải thiện thêm
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
a Kết luận
Sau PBL2, chúng em đã học được:
- Cách quản lý dữ liệu tốt hơn, chặt chẽ hơn
- Có thêm hiểu biết về cách phân tích, thiết kế hệ thống quản lý phòng trọ
- Nắm được quy trình quản lý phòng trọ
b Hướng phát triển
Trong tương lai, chúng em sẽ học thêm SQL để quản lý hệ thống database tốt hơn, đồng thời cũng phát triển thêm các tính năng, dịch vụ mới cho chương trình
và thiết kế, design chương trình được đẹp , đơn giản, dễ sử dụng hơn cho người dùng
Trang 20PBL2: DỰ ÁN CƠ SỞ LẬP TRÌNH
TÀI LIỆU THAM KHẢO
[1] Top 10 app - phần mềm quản lý nhà trọ trên điện thoại Android IOS (tech-buzz.net)
http://tech-buzz.net/10-app-phan-mem-quan-ly-nha-tro-tren-di-dong/
[2] Ngôn ngữ C++ là gì? Dùng làm gì trong công nghệ thông tin? (freetuts.net)
https://freetuts.net/c++-la-gi-hoc-c++-nhu-the-nao-554.html
[3] TS.Lê Thị Mỹ Hạnh, OOP(3-8),05/09/2021.