Ngày nay, nhờ sự phát triển không ngừng của công nghệ thông tin và truyền thông, sựu ra đời của nhiều loại máy tính, thiết bị, sự lan rộng và phổ cập của mạng internet đã dẫn đến sự bùng nổ về công nghệ thông tin. Không chỉ trong kinh doanh, sản xuất mà trong mọi lĩnh vực của đời sống. Do những cấp thiết của thời đại hiện nay mà các lĩnh vực về công nghiệ thông tin ngày càng được trọng dụng. Lập trình hướng đối tượng là một trong những môn học cốt lõi để hiểu rõ hơn và biết cách lập trình. Đây là một môn học rất hay và quan trọng của những sinh viên IT nói chung và chuyên ngành Toán Tin nói riêng. Qua môn học này em đã nắm được những khái niệm cơ bản nhất cũng như biết về lập trình hướng đối tượng. Nắm bắt được thực tế đó, em đã tìm hiểu và thực hiện đề tài “Phần mềm Quản lý tiền gửi tiết kiệm”. Em xin chân thành cảm ơn các thầy cô của Viện Toán ứng dụng và Tin học, đặc biệt là ThS Nguyễn Danh Tú đã trực tiếp giảng dạy chúng em trong khóa học này. Do thời gian và kiến thức có hạn nên vẫn còn nhiều thiếu sót. Em rất mong nhận được sự góp ý của thầy cô và các bạn. Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm 1 PHẦN I: Các đặc trưng cơ bản của lập trình hướng đối tượng: 1. Các đặc trưng cơ bản của lập trình hướng đối tượng 1.1. Tính đóng gói Có thể gói dữ liệu (data, ~ biến, trạng thái) và mã chương trình (code, ~ phương thức) thành một cục gọi là lớp (class) để dễ quản lí. Trong cục này thường data rất rối rắm, không tiện cho người không có trách nhiệm truy cập trực tiếp, nên thường ta sẽ che dấu data đi, chỉ để lòi phương thức ra ngoài. Ngoài ra, các lớp liên quan đến nhau có thể được gom chung lại thành package (tùy ngôn ngữ mà còn gọi là module, namespace v.v.).
LỜI NĨI ĐẦU Ngày nay, nhờ phát triển khơng ngừng công nghệ thông tin truyền thông, sựu đời nhiều loại máy tính, thiết bị, lan rộng phổ cập mạng internet dẫn đến bùng nổ công nghệ thông tin Không kinh doanh, sản xuất mà lĩnh vực đời sống Do cấp thiết thời đại mà lĩnh vực công nghiệ thơng tin ngày trọng dụng Lập trình hướng đối tượng môn học cốt lõi để hiểu rõ biết cách lập trình Đây môn học hay quan trọng sinh viên IT nói chung chun ngành Tốn Tin nói riêng Qua mơn học em nắm khái niệm biết lập trình hướng đối tượng Nắm bắt thực tế đó, em tìm hiểu thực đề tài “Phần mềm Quản lý tiền gửi tiết kiệm” Em xin chân thành cảm ơn thầy cô Viện Toán ứng dụng Tin học, đặc biệt ThS Nguyễn Danh Tú trực tiếp giảng dạy chúng em khóa học Do thời gian kiến thức có hạn nên cịn nhiều thiếu sót Em mong nhận góp ý thầy bạn Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm PHẦN I: Các đặc trưng lập trình hướng đối tượng: Các đặc trưng lập trình hướng đối tượng 1.1 Tính đóng gói Có thể gói liệu (data, ~ biến, trạng thái) mã chương trình (code, ~ phương thức) thành cục gọi lớp (class) để dễ quản lí Trong cục thường data rối rắm, không tiện cho người trách nhiệm truy cập trực tiếp, nên thường ta che dấu data đi, để lòi phương thức Ngoài ra, lớp liên quan đến gom chung lại thành package (tùy ngơn ngữ mà cịn gọi module, namespace v.v.) 1.2 Tính trừu tượng Có câu "program to interfaces, not to concrete implementations" Nghĩa viết chương trình theo phong cách hướng đối tượng, thiết kế đối tượng, ta cần rút tỉa đặc trưng chúng, trừu tượng hóa thành interface, thiết kế xem chúng tương tác với Nói cách khác, định interface contract mà chúng cần thỏa mãn 1.3 Tính kế thừa Lớp cha chia sẻ liệu phương thức cho lớp con, lớp khỏi phải định nghĩa lại logic chung, giúp chương trình ngắn gọn Nếu lớp cha interface, lớp di truyền contract trừu tượng từ lớp cha Đây tính chất quan trọng lập trình hướng đối tượng, làm bật lên lập trình cấu trúc lập trình hướng đối tượng Giúp chương trình ngắn gọn đối tượng không bị lặp lại 1.4 Tính đa hình Đối tượng thay đổi kiểu (biến hình) (1) Với ngơn ngữ OOP có kiểu, mượn phát biểu C++ "con trỏ kiểu lớp cha dùng để trỏ đến đối tượng kiểu lớp con" Như khai báo cần khai báo p có kiểu lớp cha, cịn sau trỏ đến đâu kệ cha nó: cha có phương thức m, từ p lơi m gọi chắn gọi được, không cần biết p trỏ đến cha hay Khi lớp B thừa kế từ lớp A, đối tượng lớp B coi đối tượng lớp A, B chứa nhiều thứ thừa kế từ A (2) Với ngôn ngữ OOP khơng có kiểu Ruby, mượn phát biểu phương pháp xác định kiểu vịt: "nếu p vịt nói vịt, coi vịt" Như lớp C có phương thức m, mà gọi phương thức m từ đối tượng p đó, coi p có kiểu C Mơ hình layer Mơ hình layer gồm phần GUI, DAO, GUI: o Presentation Layer (GUI): Layer có nhiệm vụ giao tiếp với người dùng Nó gồm thành phần giao diện (Winform) thực công việc nhập liệu, hiển thị liệu, kiểm tra tính đắn liệu trước gọi lớp Business Logic Layer (BUS) o Business Logic Layer (BUS): Layer đáp ứng yêu cầu thao tác liệu GUI layer, xử lý nguồn liệu từ GUI trước truyền xuống Data Access Layer (DAO) lưu xuống hệ quản trị sở liệu, cịn nơi kiểm tra dàng buộc, tính tồn ven hợp lệ liệu, thực tính toán xử lý yêu cầu nghiệp vụ, trước trả kết GUI o Data Access Layer (DAO): Layer có chức giao tiếp với hệ quản trị sở liệu thực công việc liên quan đến lưu trữ truy vấn liệu (tìm kiếm, thêm, sửa, xóa, ), ngồi cịn có lớp DTO, Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm layer, gọi liệu trao đổi lớp Gói liệu xây dựng dạng lớp đối tượng Ưu điểm mơ hình layer - Việc phân chia thành layer giúp code tường minh Nhờ vào việc chia lớp đảm nhiệm chức khác riêng biệt giao diện, xử lý, truy vấn thay để tất lại chỗ Nhằm giảm kết dính - Dễ bảo trì phân chia, thành phần hệ thống dễ thay đổi Việc thay đổi lập lớp, ảnh hưởng đến lớp gần mà không ảnh hưởng đến chương trình - Dễ phát triển, tái sử dụng: Khi muốn thêm chức việc lập trình theo số mơ hình dễ dàng có chuẩn để tuân theo Và việc sử dụng lại có thay đổi hai mơi trường (Winform sang Webform) việc thay đổi lại lớp GUI - Dễ bàn giao, người theo quy chuẩn định sẵn, cơng việc bàn giao, tương tác với dễ dàng tiết kiệm nhiều thời gian - Dễ phân phối khối lượng cơng việc Mỗi nhóm, phận nhận nhiệm vụ mơ hình layer Việc phân chia rõ ràng giúp lập trình viên kiểm sốt khối lượng cơng việc Mơ hình layer xây dựng chương trình: Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm PHẦN II: Coding convention Khái niệm coding convention Là tập hợp nguyên tắc chung lập trình (được công nhận theo đa số lập trình viên giới) nhằm cho code dễ đọc, dễ hiểu, từ dễ quản lý, phát triển Coding convention có riêng chung tùy cho ngơn ngữ, tùy cộng đồng, ví dụ quy tắc: Quy tắc đặt tên: o (camelCase) ký tự từ viết thường ký tự từ viết hoa > áp dụng cho: tên biến, tên hàm o (PascalCase) cú pháp Pascal viết hoa chữ từ > áp dụng cho: tên lớp o (snake_case) cú pháp rắn, tất chữ viết thường, từ cách dấu gạch > áp dụng cho: tên biến, tên hàm o Tên biến, tên lớp thường danh từ, cụm danh từ o Tên hàm thường bắt đầu động từ (thực việc gì) Quy tắc số lượng: o Hàm khơng nên q 30 dịng o Lớp khơng nên vượt q 500 dịng o Một hàm khơng vượt q tham số, nên giữ Số tiền lãi mà khách hàng nhận tháng sau là: (10,000,000 + 380,100) * 0.63 * (31 + 31 + 30 + 31 + 30 + 31) / 30 = 401,087 VND + Vậy sau năm khách hàng có lãi: 380,100 + 401,087 = 781,187 VND 2.4 Đáo hạn Là đến hạn toán tiền gửi tiết kiệm có kỳ hạn, khách hàng đến ngân hàng để lĩnh tiền 2.5 Tất toán Là khách hàng rút toàn tiền sổ tiết kiệm, vốn lẫn lãi 2.6 Tính lãi a Lãi suất: Lãi suất tính theo % theo quy định cụ thể ngân hàng thời kỳ b Cách tính lãi: Tiền lãi = Tiền gốc * Lãi suất * Số ngày thực gửi Lưu ý: Số ngày thực gửi tính ngày khách hàng gửi tiền vào ngày liền kề ngày rút c Phương thức trả lãi Đối với tiền gửi không kỳ hạn: Lãi chi trả (hoặc nhập gốc) hàng tháng vào ngày tất toán tài khoản Đối với tiên gửi kỳ hạn: việc chi trả phụ thuộc vào phương thức trả lãi mà khách hàng đăng kí: Trả sau: trả lần thời điểm đến hạn Trả trước: trả lần thời điểm gửi tiền Trả định kì (1 tháng, tháng, tháng, năm) 2.7 Báo cáo, thống kê - Báo cáo: Báo cáo số vốn huy động Báo cáo số tiền lãi chi trả cho khách hàng thời gian tới Báo cáo số tiền vốn lãi cần chi trả cho khách hàng thời gian tới Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm B Phân tích Yêu cầu đặt 1.1 Yêu cầu sở liệu Thiết kế chuẩn Có tính tự động (sinh mã đối tượng VD: mã khách hàng, …) 1.2 Yêu cầu chương trình Chương trình có giao diện thân thiện, dễ sử dụng Có khả phân quyền cho loại người dùng Sơ đồ phân cấp chức Quản Lý Tiền Gửi Tiết Kiệm Quản trị hệ thống Quản lý Thực giao dịch Lập báo cáo Thống kê Quản trị hệ thống Đăng nhập Đăng xuất Phân quyền người dùng Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm Đổi mật người dùng Quản lý Quản lý danh mục Loại sản phẩm gửi tiết kiệm QuảnQuản lý thông lý tin thông tin chung Lãi suất Khách hàng Sổ tiết kiệm Phòng giao dịch Nhân viên Giao dịch Mở sổ tiết kiệm Trả lãi Tất tốn Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm Tái tục (Tự động) 2.7 Bảng tbl_LoaiTien Thuộc tính Ý nghĩa Ràng buộc MaLoaiTien Mã loại tiền Not null TenLoaiTien Tên loại tền Not null Ghi 2.8 Bảng tbl_LoaiTietKiem Thuộc tính Ý nghĩa Ràng buộc MaLoaiTietKiem Mã loại tiết kiệm Not null TenLoaiTietKiem Tên loại tiết kiệm Not null KyHan Kỳ hạn Not null Ghi 2.9 Bảng tbl_LoaiTraLai Thuộc tính Ý nghĩa Ràng buộc MaLoaiTraLai Mã loại trả lãi Not null TenLoaiTraLai Tên loại trả lãi Not null SoThang Số tháng đợt trả lãi Ghi 2.10 Bảng tbl_NguoiGiamHo Thuộc tính Ý nghĩa MaNguoiGiamHo Mã người giám hộ Not null Ho_TenDem Họ tên đêm Not null Ten Tên Not null CMND Chứng nhân Not null dân Mã qc gia Not null, khóa ngoại tbl_QuocGia Mã tỉnh Not null, khóa MaQuocGia MaTinh Ràng buộc Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm Ghi DiaChi Địa ngoại tbl_Tinh Not null SoDienThoai Số điện thoại Not null Email Email 2.11 Bảng tbl_NhanVien Thuộc tính Ý nghĩa Ràng buộc MaNV Mã nhân viên MaPhongGD Mã phịng giao Not null, khóa dịch ngoại tbl_PhongGD Mã loại nhân viên Not null, khóa ngoại tbl_LoaiNhanVien Tên nhân viên Not null MaLoaiNV TenNV CMND Ghi Not null DiaChi Chứng minh nhân Not null dân Địa Not null SoDienThoai Số điện thoại Not null Email Email Not null MatKhau Mật Not null Mật đăng nhập chương trình, tên đăng nhập = mã NV 2.12 Bảng tbl_PhongGD Thuộc tính MaPhongGD Ý nghĩa Ràng buộc MaTinh Mã phòng dịch Mã tỉnh DiaChi Địa Not null, khóa ngoại tbl_Tinh Not null SoDienThoai Số điện thoại Not null Ghi giao Not null Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm Email Email Not null 2.13 Bảng tbl_Quoc Gia Thuộc tính Ý nghĩa Ràng buộc MaQuocGia Mã quốc gia Not null TenQuocGia Tên quốc gia Not null Ghi 2.14 Bảng tbl_SoTietKiem Thuộc tính Ý nghĩa Ràng buộc Ghi MaSoTietKiem Mã sổ tiết kiệm Not null MaKH Mã khách hàng MaLoaiTietKiem Mã loại tiết kiệm Von Vốn gửi ban đầu Not null, khóa khách hàng có ngoại thể có nhiều stk tbl_KhachHang Not null, khóa ngoại tbl_LoaitietKiem Not null SoDu Số dư Not null MaLoaiTien Mã loại tiền NgayMoSo Ngày mở sổ Not null, khóa ngoại tbl_LoaiTien Not null NgayDaoHan Ngày đáo hạn Not null MaLoaiTraLai Mã loại trả lãi Not null, khóa ngoại tbl_LoaiTraLai 2.15 Bảng tbl_Tinh Thuộc tính Ý nghĩa Ràng buộc MaTinh Mã tỉnh Not null TenTinh Tên tỉnh Not nul Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm Ghi Mơ tả trình tự xử lý hàm UDF liên quan đến nghiệp vụ 3.1 Hàm xử lý trả lãi cho khách hàng - Input: Mã sổ tiết kiệm - Output: Bảng kê khai lãnh lãi (ngày lãnh lãi gần | ngày lãnh lãi lần | số ngày | lãi suất | Tiền lãi) BEGI N @ngayLL : = Ngày mở sổ (ngayLL – ngày lãnh lãi gần nhất) Tìm giao dịch tái tục gần Không tồn Nếu tồn END Thêm record vào bảng @ngayLL : = Ngày tái tục TìmKgiao dịch lãnh lãi gần Khơng tồn Tồn Tính tiền lãi Ngày lãnh lãi > ngày tái tục Tìm lãi suất gần trước ngày tái tục @ngayLL := Ngày lãnh lãi Tính số ngày từ @ngayLL Tính ngày nhận lãi lần Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm 3.2 Hàm xử lý tất toán - Input: mã sổ tiết kiệm - Output: Bảng kê khai lãnh lãi (STT | từ ngày | đến ngày | số ngày | số dư | lãi suất | tiền lãi | lãi trả | tổng) BEGI N Số dư = 0? Đ END (sổ tất toán) S @ngayTT : = Ngày mở sổ @ngayTT - = kỳ hạn @ngayTT += kỳ hạn Tính số ngày từ kỳ @ngayTT Đ Thêm ghi cho bảng @ngayT T > S Số dư = Số dư cũ + tiền lãi – lãi trả Tính số ngày từ @ngayTT – kỳ hạn @ngayTT Tính tổng tiền lãi trả cho khách Tìm lãi suất gần cập nhật trước @ngayTT – kỳ hạn Tìm gd trả lãi cho kh từ ngày @ngayTT – kỳ hạn @ngayTT END Tính tiền lãi Thêm ghi cho bảng Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm Tìm lãi suất gần cập nhật trước @ngayTT Tính tiền lãi Tìm gd trả lãi cho kh từ @ngayTT Tìm gd trả lãi cho kh từ @ngayTT Tính tổng tiền lãi trả cho khách Số dư = Số dư cũ + tiền lãi – lãi trả D.Thiết kế phần mềm Quản lý thông tin chung Mỗi form có chức năng: tìm, thêm, sửa, xóa thơng tin Có thể tìm theo nhiều cách khác VD tìm thơng tin khách hàng tìm theo mã khách hàng, theo tên, số cmnd, … Mỗi loại nhân viên bị hạn chế quyền theo chức VD: giao dịch viên khơng có quyền sửa xóa lãi suất, … Hình Form Quản lý Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm 2 Xử lý nghiệp vụ Hình Mở sổ tiết kiệm Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm Hình Lãnh lãi Hình Tất tốn Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm Lập báo cáo Hình Báo cáo vốn huy động Hình Báo cáo số tiền cần trả cho khách hàng Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm Xem Thống kê Hình Thống kê E Mã nguồn class quan trọng Layer GUI Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm Layer BUS Layer DAO Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm Class DTO Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm PHẦN IV: Đánh giá chương trình: Áp dụng coding convention Phần quy tắc coding convention giới thiệu qua PHẦN II Dưới ví dụ chứng minh: Áp dụng đặc trưng hướng đối tượng: Chương trình có đặc trưng hướng đối tượng như: Thể rõ class, phương thức, thuộc tính, tính đóng gói, tính đa hình, tính kế thừa tính trừu tượng Dưới ví dụ chứng minh số thuộc tính: Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm Kết luận: Qua q trình học mơn Lập trình hướng đối tượng em đạt kết sau: - Em hiểu sử dụng đặc trưng lớp, phương thức, thuộc tính, tính kế thừa, tính đa hình, tính trừu tượng, tính đóng gói mơ hình áp dụng để trình lập trình trở lên dễ dàng chặt chẽ -Hiểu ngơn ngữ lập trình C# hiểu quy trình nghiệp vụ quản lý hệ thống, hệ quản trị sở liệu, sử dụng mô hình Layer vào lập trình hệ thống thơng tin Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm MỤC LỤC trang LỜI NÓI ĐẦU PHẦN I: Các đặc trưng lập trình hướng đối tượng .2 Các đặc trưng lập trình hướng đối tượng ……………………2 Mơ hình layer …………………………………………………………… Ưu điểm mơ hình layer ………………………………………………3 Mơ hình layer xây dựng chương trình …………………… PHẦN II: Coding convention ………………………………………………… PHẦN III: Xây dựng chương trình ……………………………………………5 A Khảo sát ………………………………………………………………………5 Các loại sản phẩm tiền gửi tiết kiệm ………………………………………5 Nghiệp vụ quản lý tiền gửi tiết kiệm ………………………………………5 B Phân tích …………………………………………………………………… Yêu cầu đặt ………………………………………………………………9 Sơ đồ phân cấp chức …………………………………………………9 Sơ đồ thực thể liên kết …………………………………………………… 12 C Thiết kế CSDL …………………………………………………………… 13 Diagram …………………………………………………………………….13 Mô tả bảng liệu …………………………………………………….13 Mơ tả trình tự xử lý hàm UDF liên quan đến nghiệp vụ ……………19 D Thiết kế phần mềm ……………………………………………………….21 Quản lý thông tin chung ………………………………………………… 21 Xử lý nghiệp vụ ……………………………………………………………22 Lập báo cáo ……………………………………………………………… 24 Xem thống kê …………………………………………………………… 25 E Mã nguồn class quan trọng ……………………………………… 25 Layer GUI …………………………………………………………………25 Layer BUS …………………………………………………………………26 Layer DAO ……………………………………………………………… 26 Layer DTO …………………………………………………………………27 PHẦN IV: Đánh giá chương trình Áp dụng coding convention ……………………………………………….28 Áp dụng đặc trưng hướng đối tượng ……………………28 Kết luận ………………………………………………………………… 29 Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm ... Nghiệp vụ quản lý tiền gửi tiết kiệm Nghiệp vụ quản lý tiền gửi tiết kiệm Quản lý gửi tiền Quản lý rút tiền Tái tục Đáo hạn Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm. .. Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm PHẦN III: Xây dựng chương trình A Khảo sát Các loại sản phẩm tiền gửi tiết kiệm Sản phẩm gửi tiết kiệm Gửi tiết kiệm có kỳ hạn Gửi tiết kiệm không... Form Quản lý Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm 2 Xử lý nghiệp vụ Hình Mở sổ tiết kiệm Báo cáo Lập Trình Hướng Đối Tượng - Phần mềm quản lý tiền gửi tiết kiệm