Niên luận quản lý vay trả góp: Trong thời buổi kinh tế suy thoái, tài chính đang là một khó khăn trong quyết định mua sắn tiêu dùng hàng hóa như: nhà ở, xe ô tô, xe máy, máy tính xáy tay,… Với các hình thức vay trả góp của ngân hàng, ta có thể mua những món hàng mình cần mà không phải lo vì không đủ tiền. Vấn đề là cần phải chọn một hình thức vay phù hợp nhất với thu nhập của mình. Vì vậy chương trình này sẽ giúp so sánh giữa các hình thức vay (mỗi tháng cần phải trả bao nhiêu và tổng số tiền lãi phải trả cho ngân hàng).
Trang 1TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN-TT
NIÊN LUẬN I
ĐỂ TÀI: QUẢN LÝ VAY TRẢ GÓP
MSSV: …………
HỌC KỲ 2, 20 -20
Trang 2ĐÁNH GIÁ KẾT QUẢ THỰC HIỆN NIÊN LUẬN 1
(Học kỳ II, Niên khóa 20…-20 ) GIÁO VIÊN HƯỚNG DẪN:
SINH VIÊN THỰC HIỆN:
(Tối đa 1,0 điểm)
ĐIỂM
I HÌNH THỨC (Tối đa 0,5 điểm)
Bìa (tối đa 0,25 điểm)
• Các tiêu đề: Trường ĐHCT, Khoa CNTT
• Loại niên luận: 1, Tên đề tài
• Giáo viên hướng dẫn: chức danh, họ tên
• Thông tin về các sinh viên thực hiện: họ tên, mã số, lớp
• Năm thực hiện
Bố cục (tối đa 0.25 điểm)
• Nhận xét của giáo viên hướng dẫn và giáo viên chấm
• Mục lục: cấu trúc chương, mục và tiểu mục
• Phụ lục (nếu có)
• Tài liệu tham khảo
II NỘI DUNG (Tối đa 3,5 điểm)
Tổng quan (tối đa 0,5 điểm)
• Mô tả bài toán, mục tiêu cần đạt được (0,25 điểm)
• Hướng giải quyết và kế hoạch thực hiện (0,25 điểm)
Lý thuyết (tối đa 0,5 điểm)
• Các khái niệm sử dụng trong đề tài
• Kết quả vận dụng lý thuyết vào đề tài
Ứng dụng (tối đa 2,0 điểm)
• Phân tích yêu cầu bài toán, xây dựng các cấu trúc dữ liệu
cần thiết (tối đa 0,5 điểm)
• Giải thuật (Lưu đồ-Ngôn ngữ giả) (1,0 điểm)
• Giới thiệu chương trình (0,5 điểm)
Kết luận (tối đa 0,5 điểm)
• Nhận xét kết quả đạt được
• Hạn chế
• Hướng phát triển
III CHƯƠNG TRÌNH DEMO (Tối đa 5,0 điểm)
Giao diện thân thiện với người dùng (1.0 điểm)
Hướng dẫn sử dụng (0,5 điểm)
Kết quả thực hiện đúng với kết quả của phần ứng dụng (3,5
điểm)
Ghi chú: Điểm trong khung “các sinh viên thực hiện” là điểm kết quả cuối cùng của từng sinh viên trong quá trình thực hiện niên luận 1
Nếu sinh viên demo chương trình và trả lời vấn đáp không đạt yêu cầu của
Trang 3MỤC LỤC
PHẦN 1: TỔNG QUAN 4
1.1 MÔ TẢ BÀI TOÁN 4
1.2 MỤC TIÊU CẦN ĐẠT ĐƯỢC 4
1.3 HƯỚNG GIẢI QUYẾT 4
1.3.1 Hình thức lãi gộp: 4
1.3.2 Hình thức vay lãi giảm dần: 4
1.4 KẾ HOẠCH THỰC HIỆN 4
PHẦN 2: LÝ THYẾT 5
2.1 CÁC KHÁI NIỆM SỬ DỤNG TRONG ĐỀ TÀI 5
2.1.1 Các khái niệm lập trình hướng đối tượng: 5
2.1.2 Các giải thuật được sử dụng: 5
2.2 KẾT QUẢ VẬN DỤNG LÝ THUYẾT VÀO ĐỀ TÀI 5
PHẦN 3: ỨNG DỤNG 5
3.1 PHÂN TÍCH YÊU CẦU BÀI TOÁN, XÂY DỰNG CÁC CẤU TRÚC DỮ LIỆU CẦN THIẾT 5
3.1.1 Lớp Date: Gồm có 3 trường: ngay , thang va nam 5
3.1.2 Lớp khách hàng 6
3.1.3 Lớp hồ sơ vay vốn 7
3.1.4 Lớp hình thức vay 7
3.1.5 Mối quan hệ giữa các lớp 8
3.1.6 Các hàm dùng chung: 8
3.2 THIẾT KẾ GIẢI THUẬT (LƯU ĐỒ-NGÔN NGỮ GIẢ) 8
3.2.1 Lưu đồ chương trình chính: 8
3.2.2 Lưu đồ giải thuật tìm kiếm mã khách hàng 9
3.2.3 Lưu đồ hàm lấy lãi xuất mới nhất 10
3.2.4 Hàm xóa các hình thức vay được lập trước 1 ngày nào đó 11
3.3 GIỚI THIỆU CHƯƠNG TRÌNH 12
PHẦN 4: KẾT LUẬN – ĐÁNH GIÁ 16
4.1 CÁC KẾT QUẢ ĐẠT ĐƯỢC 16
4.1.1 Ưu điểm 16
4.1.2 Hạn chế 16
4.2 NHỮNG THU HOẠCH VỀ MẶT CHUYÊN MÔN 16
4.3 HƯỚNG PHÁT TRIỂN 16
TÀI LIỆU THAM KHẢO 17
Trang 4PHẦN 1: TỔNG QUAN
1.1 MÔ TẢ BÀI TOÁN
Trong thời buổi kinh tế suy thoái, tài chính đang là một khó khăn trong quyết định mua sắn tiêu dùng hàng hóa như: nhà ở, xe ô tô, xe máy, máy tính xáy tay,… Với các hình thức vay trả góp của ngân hàng, ta có thể mua những món hàng mình cần mà không phải lo vì không đủ tiền
Vấn đề là cần phải chọn một hình thức vay phù hợp nhất với thu nhập của mình Vì vậy chương trình này sẽ giúp so sánh giữa các hình thức vay (mỗi tháng cần phải trả bao nhiêu và tổng số tiền lãi phải trả cho ngân hàng)
1.2 MỤC TIÊU CẦN ĐẠT ĐƯỢC
- Kết quả đạt được đúng chính xác
- Chương trình phải dể sử dụng
- Cập nhật lại được thông tin khách hàng (thêm , sửa, xóa)
- Cập nhật lại hồ sơ vây vốn
- Cập nhật lãi xuất của các hinh thức vay
- So sánh giữa các hình thức vay
- Xử lý các ràng buộc để chương trình chặt chẽ hơn
- Các dữ liệu phải được lưu thành file
1.3 HƯỚNG GIẢI QUYẾT
Vấn đề lưu trữ và lấy dữ liệu từ file sẽ được thực hiện bằng các hàm được tái định nghĩa “<<” và “>>” File được lưu ở dạng text, mỗi dòng trong file sẽ lưu 1 trường dữ liệu Trước khi thực hiện các cập nhật thì dữ liệu sẽ được load lên bộ nhớ và lưu vào 1 mãng có tên là “ds”
Mục tiêu của chương trình là tính toán cho khách hàng biết với số tiền vay ban đầu ứng với một kỳ hạn thì hình thức vay nào là phù hợp nhất Vì vậy
ta có các công thức tính cho từng trường hợp như sau:
1.3.1 Hình thức lãi gộp:
Tiền phải góp mỗi tháng = (Tiền vay ban đầu) / (Kỳ hạn);
Tiền lãi mỗi tháng = (Tiền vay ban đầu) x (Lãi xuất mới nhất);
Tổng tiền lãi phải trả = ∑ (Tiền lãi mỗi tháng);
1.3.2 Hình thức vay lãi giảm dần:
Tiền phải góp mỗi tháng = (Tiền vay ban đầu) / (Kỳ hạn);
Nợ = Tiền lãi – Tiền góp mỗi tháng;
Tiền lãi mỗi tháng = (Nợ) x (Lãi xuất mới nhất);
Tổng tiền lãi phải trả = ∑ (Tiền lãi mỗi tháng);
1.4 KẾ HOẠCH THỰC HIỆN
Tuần 1,2 tìm hiểu đề tài và ôn lại kiến thức lập trình
Tuần 4,5,6,7 viết chương trình
Tuần 8 viết báo cáo và kiểm tra lại chương trình
Trang 5PHẦN 2: LÝ THYẾT
2.1 CÁC KHÁI NIỆM SỬ DỤNG TRONG ĐỀ TÀI
Vì chương trình được viết theo hướng đối tượng nên lý thuyết chủ yếu là
lý thuyết lập trình hướng đối tượng và giải thuật
2.1.1 Các khái niệm lập trình hướng đối tượng:
Lập trình hướng đối tượng (Object-Oriented Programming): là
phương thiết kế và phát triển phần mền dựa trên kiến trúc lớp và đối tượng.
Đối tượng (Object): là một thực thể phần mền bao bọc các thuộc tính và
các phương thực liên quan
Lớp (class): là một thiết kế hay một mẫu ban đầu định nghĩa các thuộc
tính và phương thức chung cho tất cả các đối tượng của cùng một loại nào đó
Hàm xây dựng: là một hàm thành viên của một lớp sẽ được gọi một
cách tự động khi đối tượng được tạo ra
Hàm hủy: Là 1 hàm thành viên của 1 lớp và sẽ được goi một cách tự
động trước khi đối tượng bị hủy
Hàm xây dựng sao chép: là hàm xây dựng sẽ tự động được gọi trong 1
trong 3 trường hợp sau:
- Tham số hàm là đối tượng (truyền giá trị)
- Đối tượng trả về cùng hàm
- Đối tượng được khởi tạo khi khai báo bằng 1 đối tượng khác
Ngoài ra còn có các khái niện: tái định nghĩa các phép toán (=, >, <<, >>,…),
…
2.1.2 Các giải thuật được sử dụng:
Giải thuật tìm kiếm, giải thuật tìm giá tri lớn nhất,…
2.2 KẾT QUẢ VẬN DỤNG LÝ THUYẾT VÀO ĐỀ TÀI
Chương trình gồm 4 lớp: lớp Date, lớp KhachHang, lớp HSVV, lớp HTV và hàm main() dùng để chạy chương trình
PHẦN 3: ỨNG DỤNG
3.1 PHÂN TÍCH YÊU CẦU BÀI TOÁN, XÂY DỰNG CÁC CẤU TRÚC
DỮ LIỆU CẦN THIẾT
Yêu cầu bài toán là tính toán cho khách hàng biết với số tiền vay ban đầu ứng với một kỳ hạn thì hình thức vay nào là phù hợp nhất Có thể nhập và lưu trữ thông tin của khách hàng, hồ sơ vay vốn, các hình thức vay ra một file text Ngoài ra chương trình còn có thể cập nhật lại lãi xuất cho từng hình thức vay ứng với từng kỳ hạn
Do đó chương trình được thiết kế với 4 lớp:
3.1.1 Lớp Date: Gồm có 3 trường: ngay , thang va nam
class Date{
int ngay,thang,nam;
public:
Date(int=0,int=0,int=0);
void Nhap();
int operator>(Date);
Trang 6friend ostream&operator<<(ostream&os,Date t){
os<<t.ngay<<endl;
os<<t.thang<<endl;
os<<t.nam<<endl;
return os;
} friend istream&operator>>(istream&is,Date&t){
is>>t.ngay;
is>>t.thang;
is>>t.nam;
is.get();
return is;
} int LayNgay(){return ngay;}
int LayThang(){return thang;}
int KiemTra();
void Sua();
};
3.1.2 Lớp khách hàng
Các dữ liệu thành viên riêng:
MaKH (mã khách hàng): có kiểu char độ dài tối đa là 7 ký tự
TenKH (tên khách hang): kiểu char có độ dài tối đa là 50 ký tự
SoCM (số chứng minh nhân dân): có độ dài tối đa 9 ký tụ
DChi (địa chỉ): có độ dài tối đa 100 ký tự
DThoai (điện thoại): có độ dài tối đa 11 ký tự
Phần khai báo lớp
class KhachHang{
char MaKH[7];
char *TenKH;
char SoCM[9];
char *DChi;
char *DThoai;
public:
KhachHang();
~KhachHang();
KhachHang(const KhachHang&);
KhachHang&operator=(const KhachHang&);
//Tai dinh nghia tac tu xuat (ghi vao file) friend ostream& operator<<(ostream& os,KhachHang k);
//Tai dinh nghia tac tu nhap (doc tu file) friend istream& operator>>(istream& is,KhachHang& k);
char *LayMaKH();
char *LayTenKH();
char *LaySoCM();
char *LayDChi();
char *LaySoDT();
void Nhap();
};
Trang 73.1.3 Lớp hồ sơ vay vốn
Các dữ liệu thành viên riêng:
MaHS (mã hồ sơ): kiểu char, độ dài tối đa là 8
MaKH (mã khách hàng): kiểu char, độ dài tối đa là 7
NgayLap ( ngày lập hồ sơ): kiểu Date
SoTien ( số tiền vay): kiểu long
KyHan (kỳ hạn vay): kiểu int
Phần khai báo lớp:
class HSVV{
char MaHS[8];
char MaKH[7];
Date NgayLap;
int HTV;
long SoTien;
int KyHan;
public:
HSVV();
HSVV(const HSVV&t);
friend ostream& operator<<(ostream& os,HSVV h);
friend istream& operator>>(istream& is,HSVV& h);
char *LayMaHS(){return MaHS;}
char *LayMaKH(){ return MaKH;}
Date LayNgayLap(){ return NgayLap;}
int LayHTV(){ return HTV;}
int LaySoTien(){ return SoTien;}
int LayKyHan(){ return KyHan;}
void Nhap();
}
3.1.4 Lớp hình thức vay
Các dữ liệu thành viên riêng:
HinhThuc (hình thức vay): kiểu int chỉ nhận giá trị là 1 hoặc 2
Ngay (ngày cập nhật hình thức): kiểu Date
KyHan (kỳ hạn): kiểu int nhận giá trị từ 1 đến 5
LaiXuat (lãi xuất): kiểu float
Phần khai báo lớp:
class HTV{
int HinhThuc;
Date Ngay;
int KyHan;
float LaiXuat;
public:
HTV();
HTV(const HTV&t);
friend ostream& operator<<(ostream& os,HTV h);
friend istream& operator>>(istream& is,HTV& h);
int LayHT(){ return HinhThuc;}
Date LayNgay(){ return Ngay;}
int LayKyHan(){ return KyHan;}
float LayLaiXuat(){ return LaiXuat;}
Trang 8void Nhap();
}
3.1.5 Mối quan hệ giữa các lớp
Khách hàng (MaKH, TenKH, SoCM, Dchi, Thoai)
HSVV (MaHS, MaKH, NgayLap, HTV, SoTien, KyHan)
HTV (HinhThuc, Ngay, KyHan, LaiXuat)
3.1.6 Các hàm dùng chung:
int Date::KiemTra(): dùng để kiểm tra một ngày nào đó có hợp lệ hay
không
Date NgayHienTai(): lấy ngày hiện tại của hệ thống.
TimKH(char* s): Tìm mã Khách hàng với đối số s có kiểu chuỗi Nếu
tìm thấy return 1, ngược lại return 0;
void XoaKH(): Xóa 1 khách hàng theo mã khách hàng
void SuaKH(): Cập nhật lại các thông tin cho khách hàng
TimHS(char* s): Tìm mã Hồ sơ với đối số s có kiểu chuỗi Nếu tìm thấy
return 1, ngược lại return 0
float LaiMoi(int ht,int kh): lấy lãi mới nhất từ file HTV.text, với đối số
ht (hình thức), kh( kỳ hạn)
void SoSanh(): dùng để hiển thị tiền phải góp mỗi tháng, tiền lãi mỗi
tháng, số nợ còn lại, tổng số tiền lãi phải trả của từng hình thức vay
3.2 THIẾT KẾ GIẢI THUẬT (LƯU ĐỒ-NGÔN NGỮ GIẢ)
3.2.1 Lưu đồ chương trình chính:
Bắt Đầu
Lựa chọn theo Menu hướng dẫn
Thực hiện công việc
Kết thúc Đ
S
Trang 93.2.2 Lưu đồ giải thuật tìm kiếm mã khách hàng
Bắc đầu
Kết thúc
int max=200,n=0,found=0;
KhachHang *ds=new KhachHang[max];
ifstream f("d:\\KhachHang.txt");
f>>ds[n++];
f
f.close();n ;
i=0
i<n
strcmp(ds[i].LayMaKH(),s)==0
Nhap s
found=1; break;
i++
Return found;
F
T
Trang 103.2.3 Lưu đồ hàm lấy lãi xuất mới nhất
Bắc đầu
Kết
int max=200,n=0,found=0;
KhachHang *ds=new KhachHang[max];
ifstream f("d:\\KhachHang.txt");
f>>ds[n++];
f
f.close();n ; Date Newest;
i=0
i<n
ds[i].LayHT()==ht
&& ds[i].LayKyHan()==kh
&&ds[i].LayNgay()>newest
Nhập s
newest=ds[i].LayNgay();
j=i;
i++
return ds[j].LayLaiXuat();
F
T T
Trang 113.2.4 Hàm xóa các hình thức vay được lập trước 1 ngày nào đó
void XoaHTV(){
int max=200,n=0;
HTV *ds=new HTV[max];
ifstream f("D:\\HTV.txt");
while(f)
f>>ds[n++];
f.close();n ;
Date ngay;
cout<<"Ban muon xoa cac hinh thuc vay duoc lap truoc ngay? "<<endl; ngay.Nhap();
for(int i=0;i<n;i++)
if(ngay>ds[i].LayNgay()){
ds[i]=ds[n-1];
i ; n ;
} ofstream f1("d:\\HTV.txt");
for(i=0;i<n;i++)
f1<<ds[i];
f1.close();
delete[]ds;
cout<<"Da xoa thanh cong"<<endl;
}
Trang 123.3 GIỚI THIỆU CHƯƠNG TRÌNH
Trước hết phải thực hiện theo hướng dẫn của chương trình (chọn đúng theo menu hướng dẫn)
Để cập nhật thông tin cho khách hàng: chọn số 1
Màn hình chính của chương trình
Các chức năng cập nhật khách hàng gồm có:
Giả sử cần thêm 1 khách hàng mới ta chọn 1 Đầu tiên nhập mã khách hàng là thì chương trình yêu cầu nhập lại vì mã khách hàng 1 đã tồn tại Sau đó nhập lại mã khách hàng là 8 thì được Tiếp tục nhập ten khach hang, so chung minh, dia chi, dien thoai cho đến khi chương trình hỏi có muốn tiếp tục nhập thêm khách hàng khác không
Chọn 1 nếu muốn tiết tục, ngược lại chọn bất khì một phím khác 1 để quay về menu chương trình chính
Trang 13Để xóa 1 khách hàng: từ menu chính chọn 1, sau đó chọn 2 và nhập mã khách
hàng cần xóa
Để thay đổi thông tin khách hàng: từ menu chính chọn 1, sau đó chọn 3 và
nhập mã khách hàng cần thay đổi
Trang 14Để hiển thị thông tin khách hàng: từ menu chính chọn 1, sau đó chọn 4 và
nhập mã khách hàng cần hiển thị
Tương tự để cập nhật hồ sơ khách hàng và hình thức vay mới bạn chọn theo
hướng dẫn
Trang 15Và đây là các bước thực hiện việc xóa các hình thức vay được lập trước ngày 1/1/2009
Để so sánh giữa các hình thức vay bạn chon 4 Sau đó chọn hình thức (1 hoặc 2)
Hình thức lãi giảm dần
Hình thức lãi gộp
Trang 16PHẦN 4: KẾT LUẬN – ĐÁNH GIÁ
4.1 CÁC KẾT QUẢ ĐẠT ĐƯỢC
4.1.1 Ưu điểm
- Đã vận dụng một số kiến thức của lập trình hướng đối tượng như: Lớp, xây dựng, hàm xây dựng sao chép, hàm hủy, thừa kế, tái định nghĩa toán tử ( toán tử nhập xuất, gán)…
- Chương trình sử dụng không quá phức tạp
- Chương trình cho kết quả chính xác, thỏa mãn tương đối yêu cầu đặt ra của đề tài
- Có các chức năng cập nhật (thêm, sửa, xóa 1 khách hàng, hồ sơ vay vốn, hình thức vay)
- Cho phép so sánh giữa các hình thức vay
4.1.2 Hạn chế
Do hạn chế về thời gian, nên chương trình còn thiếu nhiều chức năng như:
- Chưa viết được chương trình để xử lý những chuỗi nhập vào (như xoá
bỏ khoảng trắng thừa, chuyển các ký tự đầu thành chữ hoa) từ đó dễ dẫn đến lỗi của chương trình
- Thiếu các ràng buộc về kiểu như: nếu nhập số điện thoại là các ký tự thì chương trình vẫn chấp nhận
- Khi viết thêm các ràng buộc về ngày tháng thì chương trình bị lỗi, chưa tìm được nguyên nhân khắc phục (có lẽ do thiếu các hàm xây dựng sao chép và tái định nghĩa tác tử “ =” ở các lớp Date, HSVV, HTV)
- Trong hàm cập nhật hình thức vay mới, ở trường “Ngay” có thể lấy ngày hệ thống để tránh tình trạng nhập sai, nhưng chương trình yều lại yêu cầu
tự nhập
-Thiếu phần hiển thị số tiền còn nợ, thời gian còn lại để trả nợ của từng khách hàng, và số tiền trả cần phải trả hằng tháng của từng khách hàng
-Thiếu phần tính tổng lãi thu được mỗi tháng của ngân hàng
…
4.2 NHỮNG THU HOẠCH VỀ MẶT CHUYÊN MÔN
Tuy chương trình còn nhiều hạn chế nhưng qua nó em đã học được nhiều thứ như:
- Ôn lại các kiến thức lập trình và giải thuật
- Biết được cách ghi dữ liệu vào file, đọc dữ liệu từ file
- Biết cách viết báo cáo niên luận
- Rút ra được vài kinh nghiệm cho các niên luận sau là phải hoàn thành xong chương trình trước khi bắt đầu thi cuối kỳ
4.3 HƯỚNG PHÁT TRIỂN
Như được đề cập trong phần hạn chế là chương trình còn một vài lỗi và thiếu nhiều chức năng Vì vậy trước hết cần phải tìm ra nguyên nhân khắc phục
Trang 17TÀI LIỆU THAM KHẢO
[1] Trương Văn Chí Công Lập trình hướng đối tượng C++ Bộ môn Hệ
Thống Máy Tính & Truyền Thông, Khoa CNTT & Truyền Thông, ĐH Cần Thơ
[2] Nguyễn Văn Linh, Lâm Hoài Bảo, Dương Văn Hiếu, Lập trình căn bản
A Bộ môn Hệ thống Thông tin và Toán ứng dụng, Khoa CNTT và Truyền
thông, ĐH Cần Thơ
[3] Nguyễn Văn Linh Giải thuật Khoa Công nghệ Thông tin & Truyền
thông, Đại học Cần Thơ, 2003