Đề tài Xây dựng hệ thống quản lý chi tiêu cho các thành viên trong gia đình
Bạn đang xem 20 trang mẫu của tài liệu "Đề tài Xây dựng hệ thống quản lý chi tiêu cho các thành viên trong gia đình", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- de_tai_xay_dung_he_thong_quan_ly_chi_tieu_cho_cac_thanh_vien.pdf
Nội dung text: Đề tài Xây dựng hệ thống quản lý chi tiêu cho các thành viên trong gia đình
- Project 1 Sdf sdfsadf TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHTRƯỆỜ THÔNGNG ĐẠI TINHỌC VÀ BÁCH TRUY KHOAỀN THÔNG HÀ NỘ I VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÀI TẬP LỚN MÔN : PROJECT 1 ĐỀ TÀI 15: Xây dựng hệ thống quản lý chi tiêu cho các thành viên trong gia đình Nhóm thực hiện : Nhóm 6 Sinh viên thực hiên : Hồ Thúc Đồng 20112574 Hà Xuân Thuyên 20112302 Nguyễn Thanh Cường 20112551 Lớp : CNTT-TT 2.2 -K56 Giảng viên hướng dẫn : TS. VŨ THỊ HƯƠNG GIANG Ths. NGUYỄN NGỌC DŨNG Hà nội, tháng 12-2013 1 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Contents Lời mở đầu 4 Phần công công việc trong nhóm 5 CHƯƠNG I: KHẢO SÁT ĐẶC TẢ YÊU CẦU BÀI TOÁN 6 1. Mô tả yêu cầu bài: 6 1.1 yêu cầu hệ thống quản lí chi tiêu trong gia đình 6 1.2 Hệ thống quản lí chi tiêu gia đình có các chức năng chính. 6 2. Biểu đồ Usecase: 8 2.1 . Các tác nhân của hệ thống: 8 2.2 . Các Usecase của hệ thống 8 2.3 Biểu đồ Usecase tổng quan: 10 2.4 Biểu đồ Usecase phân rã mức 2 : 12 3. Đặc tả Usecase: 17 3.1.Đặc tả chức năng đăng nhập: 17 3.2.Đặc tả Usecase đăng kí: 18 3.3.Đặc tả chức năng tìm kiếm: 19 3.4.Đặc tả chức năng giao dịch: 22 3.5.Đặc tả Usecase thống kê: 24 CHƯƠNG II: PHÂN TÍCH THIẾT KẾ BÀI TOÁN 26 1. Cấu trúc dữ liệu: 26 2. Biểu đồ trình tự: 28 2 1 Biểu đồ trình tự đăng nhập: 28 2.2 Biểu đồ trình tự đăng kí thành viên mới : 29 2.3 Biểu đồ trình tự thêm giao dịch: 30 2.4 Biểu đồ trình tự xác nhận giao dịch: 31 2.5 Biểu đồ trình tự tham gia chi chung: 32 2.6 Biểu đồ trình tự thống kê: 33 3. Biểu đồ lớp : 34 3.1 Biểu đồ lớp : 34 3.2 Các lớp của hệ thống: 36 4. Thiết kế chi tiết lớp : 42 4.1 Thiết kế chi tiết lớp Control: 42 4.2 Thiết kế chi tiết lớp Connect() 43 CHƯƠNG III : CÔNG NGHỆ VÀ THUẬT TOÁN SỬ DỤNG 45 1.Ngôn ngữ lập trình Java: 45 1.1 Giới thiệu về Java: 45 2 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 1.2. Công cụ sử dụng : 46 2. Hệ quản trị cơ sở dữ liệu MySQL: 46 3. Trình điều khiển JDBC – kết nối ngôn ngữ Java và MySQL: 47 3.1 Giới thiệu về JDBC: 47 3.2 Kiến trúc JDBC: 47 3.3 Một số lớp JDBC quan trọng: 47 CHƯƠNG IV : KẾT QUẢ CHƯƠNG TRÌNH MINH HỌA 49 1.Kết quả chương trình mình họa : 49 2. Giao diện chương trình: 50 2.1 Giao diện khởi động của chương trình: 50 2.2 Chức năng đăng nhập : 51 2.3 Chức năng đăng kí người dùng mới. 52 2.4 Chức năng thêm giao dịch: 53 2.5 Chức năng duyệt giao dịch: 54 2.6 Chức năng tham gia giao dịch chung: 55 2.7 Chức năng tìm kiếm: 56 2.8 Chức năng thống kê : 57 2.9 Chức năng cập nhật thông tin, cấp lại mật khẩu: 58 2.10 Chức năng phân quyền thành viên. 59 CHƯƠNG V : KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 61 1.Kết luận: 61 1.1 Kết quả đạt được : 61 1.2 Hạn chế: 61 2. Hướng phát triển : 62 Tài liệu tham khảo: 63 3 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Lời mở đầu Trong những năm gần đây, khi nền khoa học công nghệ thông tin đang ngày càng phát triển như vũ bão thì vấn đề quản lí và khai thác dữ liệu đã trở thành một trong những hướng nghiên cứu chính trong lĩnh vực khoa học máy tính và công nghệ tri thức. Lĩnh vực này đã và đang ứng dụng thành công vào rất nhiều các lĩnh vực khác nhau như thương mại, tài chính, thị trường chứng khoán, y học, thiên văn học, sinh học, giáo dục và viễn thông . Không chỉ vậy, vấn đề khai thác dữ liệu và quản lí dữ liệu đang ngày càng trở nên thiết thực hơn đóng vai trò không nhỏ trong cuộc sống. Cùng với quá trình phổ cập tin học thì phần lớn cá nhân, gia đình đều có và biết cách sử dụng máy tính. Nắm bắt được xu thế đó đã có rất nhiều phần mềm ra đời phục vụ nhu cầu của cá nhân, gia đình. Trong cuộc sống, gia đình cũng như cơ quan tổ chức, chi tiêu cũng cần phải được quản lí tránh những thất thoát không đáng có. Trong gia đình thì người mẹ, người vợ là người nắm sổ sách chi tiêu, thế nhưng nhiều lúc sổ sách ấy lại không được ghi chép lại, mà chỉ là trí nhớ vụn vặt và thống kê không đầy đủ. Do đó khi người phụ nữ bộn bề công việc trong gia đình thì quản lí chi tiêu là việc vặt nhưng cũng mất rất nhiều thời gian. Nắm bắt được điều đó, trong khi tiếp cận môn Project 1, nhóm chúng em đã lựa chọn đề tài “ quản lí chi tiêu cho các thành viên trong gia đình”. Phần mềm không chỉ nhằm áp dụng khả năng quản lí dữ liệu của công nghệ vào cuộc sống mà mục đích chính là giảm bớt gánh nặng đối với người mẹ, người vợ đang từng ngày tất bật với công việc gia đình và xã hội. Đó cũng chính là lý do chúng em chọn đề tài này. Trong quá trình hoàn thành bài tập lớn, chúng em xin được gửi lời cảm ơn chân thành đến: Cô giáo hướng dẫn TS. Vũ Thị Hương Giang và thầy giáo hướng dẫn Ths. Nguyễn Ngọc Dũng giảng viên trường đại học Bách Khoa Hà Nội đã hết lòng hướng dẫn, giúp đỡ tạo mọi điều kiện để chúng em hoàn thành bài tập lớn. Nhóm các bạn sinh viên lớp Project 1 đã góp ý và giúp đỡ trong quá trình hoàn thành bài tập này. Hà Nội , tháng 12 - 2013 4 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Phần công công việc trong nhóm Họ và tên Công việc Mức độ hoàn thành Hồ Thúc Đồng Phân tích xác định yêu cầu từ đề tài và Công việc được người dùng, xác định yêu cầu của hệ thống, giao 33%. vẽ các biểu đồ Usecase chính. Đánh giá mức độ Thiết kế cơ sở dữ liệu. hoàn thành 95% Xây dựng chức năng đăng nhập/đăng xuất. Xây dựng chức năng nhập dữ liệu, thêm giao dịch. Xây dựng chức năng tham gia chi chung. Xây dựng chức năng cập nhật thông tin người dùng. Kiểm thử chương trình. Hà Xuân Phân tích xác định yêu cầu từ đề tài và Công việc được Thuyên người dùng, xác định yêu cầu của hệ thống, giao 33%. vẽ các biểu đồ Usecase chính. Đánh giá mức độ hoàn thành 95% Phân tích thiết kế hệ thống. Xây dựng lớp kết nối. Xây dựng chức năng thống kê. Xây dựng chức năng duyệt của Manager. Xây dựng chức năng cấp lại mật khẩu và phân quyền của Admin. Xây dựng và thiết kế giao diện. Kiểm thử chương trình. Nguyễn Thanh Phân tích xác định yêu cầu từ đề tài và Công việc được Cường người dùng, xác định yêu cầu của hệ thống, giao 33%. vẽ các biểu đồ Usecase chính. Đánh giá mực độ hoàn thành 90% Thiết kế cơ sở dữ liệu. Xây dựng chức năng truy xuất dữ liệu. Xây dựng chức năng đăng kí. Xây dựng chức năng tìm kiếm. Xây dựng chức năng hướng dẫn người sử dụng. Làm báo cáo và slide. 5 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 CHƯƠNG I: KHẢO SÁT ĐẶC TẢ YÊU CẦU BÀI TOÁN 1. Mô tả yêu cầu bài: 1.1 yêu cầu hệ thống quản lí chi tiêu trong gia đình Xây dựng phần mềm quản lí chi tiêu của các thành viên trong gia đình. 1. Phần mềm có yêu cầu đăng nhập hệ thống, phân quyền người dùng. 2. Phần mềm có thông tin lưu trữ cho một phần chi tiêu bao gồm: thời gian, lí do, mục chi tiêu, hình ảnh liên quan 3. Phần mềm có thể thống kê, đánh giá theo các khoảng thời gian nhất định. 4. Phần mềm có các danh mục chi tiêu có thể được tạo bởi người một cách linh hoạt. 5. Chức năng tìm kiếm theo tên, ngày tháng, mô tả 6. Phần mềm có chức năng đánh tag phục vụ tìm kiếm. Đầu vào : thông tin về chi tiêu của cá nhân và chi tiêu chung của gia đình Đầu ra : quản lí thông tin chi tiêu của các thành viên trong gia đình với các chức năng: thêm, xóa, cập nhật, thống kê giao dịch. 1.2 Hệ thống quản lí chi tiêu gia đình có các chức năng chính. Chức năng đăng kí thành viên: Để sử dụng hệ thống quản lí chi tiêu thì mỗi thành viên cần có tài khoản riêng. Thành viên đăng kí trực tiếp từ giao diện khởi động của hệ thống Tài khoản đó sau khi đăng kí thành công có thể đăng nhập vào hệ thống. Đăng kí thành công thì mặc định tài khoản đó là Member. Chức năng đăng nhập/đăng xuất hệ thống có phân quyền người dùng: Tài khoản đăng nhập hệ thống với đúng tài khoản và mật khẩu mà hệ thống cung cấp. Tài khoản đăng nhập nếu không còn nhu cầu sử dụng hệ thống hoặc cần đăng nhập tài khoản khác có thể tiến hành đăng xuất. 6 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Chức năng lưu trữ thông tin giao dịch: Thành viên có thể lưu thông tin giao dịch cá nhân hoặc giao dịch chung trong gia đình vào hệ thống. Thành viên có thể tham gia giao dịch chung của gia đình hay nhóm thành viên bằng cách đóng góp tiền vào hệ thống. Manager sẽ duyệt để biết giao dịch đã hoàn thành hay chưa. Chức năng cập nhật thông tin: Hệ thống cho phép thành viên thay đổi thông tin cá nhân của mình. Admin có thể cấp lại mật khẩu cho thành viên. Chức năng tìm kiếm theo từ khóa và ngày tháng: Hệ thống cho phép tìm kiếm theo từ khóa. Hệ thống cho phép tìm kiếm theo ngày tháng. Hệ thống cho phép tìm kiếm theo số tiền. Chức năng thống kê, đánh giá theo từng khoảng thời gian nhất định: Hệ thống có sự thống kê chi tiêu các thành viên trong một tháng Hệ thống có sự thống kê thu nhập của thành viên trong một tháng Hệ thống đánh giá cá nhân chi tiêu trong tháng, còn dư tiền hay tiêu quá thu nhập hàng tháng 7 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2. Biểu đồ Usecase: 2.1 . Các tác nhân của hệ thống: STT Tên tác nhân Chức năng 1 Admin Quản trị hệ thống hệ thống Phân quyền người dùng. Cấp lại mật khẩu cho người dùng. 2 Manager Quản lí chi tiêu của cá nhân bằng cách duyệt giao dịch hoàn thành. Quản lí chi tiêu chung của gia đình bằng cách duyệt giao dịch hoàn thành 3 Member Người sử dụng hệ thống, thực hiện các giao dịch và quản lí chi tiêu cá nhân. Đăng nhập, xem giao dịch, thêm, cập nhật, xóa giao dịch. 4 Actor Người dùng hệ thống với chức năng đăng kí tài khoản. 2.2 . Các Usecase của hệ thống: o Các Usecase chính: Stt Tên Usecase Ý nghĩa chính 1 Đăng nhập Người dùng đăng nhập để sử dụng hệ thống. 2 Đăng xuất Người dùng thoát khỏi hệ thống khi không có nhu cầu sử dụng. 3 Đăng ký Thêm người dùng vào hệ thống, mặc định sẽ là Member 4 Giao dịch Hiện thị giao dịch của các thành viên trong gia đình. 5 Tìm kiếm Tìm kiếm dữ liệu hệ thống. 6 Thống kê Thực hiện chức năng thống kê cho người dùng. 7 Bảo mật Cập nhật thông tin cá nhân của tài khoản đăng nhập. 8 Hướng dẫn Hướng dẫn người dùng sử dụng hệ thống. o Các Usecase con: Usecase giao dịch: STT Tên Usecase con Ý nghĩa 1 Thêm giao dịch Lưu trữ giao dịch mới của người dùng. 2 Xem giao dịch cá Hệ thống hiển thị giao dịch cá nhân của các thành viên. nhân 3 Xem giao dịch chung Hệ thống hiển thị giao dịch chung của trong gia đình để các thành viên có thể tham gia. 4 Xem thông tin hạng Hệ thống hiển thị các giao dịch chung đã hoàn thành mục 8 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Usecase tìm kiếm: STT Tên Usecase con Ý nghĩa 1 Tìm kiếm theo Người dùng nhập từ khóa để hệ thống tìm kiếm dữ liệu từ khóa phù hợp. 2 Tìm kiếm theo Người dùng nhập ngày tháng để hệ thống tìm kiếm dữ ngày tháng liệu phù hợp. 3 Tìm kiếm theo Người dùng nhập khoản tiền thấp và cao để hệ thống tìm số tiền kiếm giao dịch trong giới hạn đó. Usecase thống kê: STT Tên Usecase con Ý nghĩa 1 Thống kê chi Xem các giao dịch chi chung. chung 2 Chi tiêu trong Tổng nguồn chi trong tháng. tháng 3 Thu nhập trong Tổng nguồn thu trong tháng. tháng 4 Thống kê thu Số dư còn lại của cá nhân với các thu chi trong tháng. chi Usecase bảo mật: STT Tên Usecase con Ý nghĩa 1 Cập nhập thông Cập nhập thông tin tài khoản bao gồm họ tên, mật khẩu, tin địa chỉ, số điện thoại, đơn vị công tác Usecase hướng dẫn: STT Tên Usecase con Ý nghĩa 1 Trang chủ Hướng dẫn người dùng trong giao diên trang chủ. 2 Giao dịch Hướng dẫn người dùng thao tác giao dịch trong giao diện. 3 Bảo mật Hướng dẫn người dùng cập nhật và bảo mật thông tin. 4 Tìm kiếm Hướng dẫn người dùng tìm kiếm dữ liệu trong giao diện tìm kiếm. 9 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2.3 Biểu đồ Usecase tổng quan: Hình 1.1 : Biểu đồ Usecase tổng quan. Biểu đồ Usecase tổng quan: o Tác nhân : Admin, Manager, Member, Actor. o Hệ thống : Đăng kí: đăng kí thành viên mới. Cập nhật thông tin: cấp lại mật khẩu cho thành viên. Đăng nhập/đăng xuất: đăng nhập hệ thống bằng tài khoản cá nhân của thành viên và đăng xuất đối với tài khoản đó. Bảo mật: thông tin của thành viên đối với tài khoản đang đăng nhập hệ thống. Bao gồm họ tên, tên tài khoản, mật khẩu, số điện thoại, địa chỉ, đơn vị công tác. Giao dịch: hiển thị thông tin giao dịch của các thành viên, cho phép thực hiện các chức năng hệ thống bao gồm thêm, cập nhật, xóa giao dịch. Thống kê: chức năng thống kê, đánh giá chi tiêu trong tháng. Tìm kiếm : chức năng tìm kiếm dữ liệu của hệ thống. Phân quyền: phân quyền tài khoản thành viên gồm : Member, Manager, Admin. Mỗi tài khoản phân quyền như trên sẽ có những chức năng và giới hạn riêng. 10 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 o Mô tả: Actor có thể thực hiện chức năng: Đăng kí. Admin có thể thực hiện các chức năng : Đăng nhập/đăng xuất. Bảo mật. Thống kê. Tìm kiếm. Cập nhật thông tin. Phân quyền. Manager có thể thực hiện các chức năng : Đăng nhập/đăng xuất. Bảo mật. Giao dịch. Tìm kiếm. Member có thể thực hiện các chức năng : Đăng nhập/đăng xuất. Bảo mật. Giao dịch. Thống kê. Tìm kiếm. 11 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2.4 Biểu đồ Usecase phân rã mức 2 : 2.4.1 Biểu đồ Usecase về đăng nhập: Biểu đồ Usecase đăng nhập: Hình 1.2 : Sơ đồ Usecase đăng nhập. o Tác nhân : Admin, Manager, Member. o Hệ thống : đăng nhập. o Mô tả : Người dùng nhập tài khoản và mật khẩu vào hệ thống. Hệ thống tìm kiếm tài khoản tương ứng trong cơ sở dữ liệu Nếu tài khoản đúng thì hệ thống hiển thị giao diện sử dụng các chức năng hệ thống. 2.4.2 Biểu đồ Usecase về đăng kí. Biểu đồ Usecase đăng kí: Hình 1.3 : biểu đồ Usecase đăng kí 12 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Biểu đồ Usecase đăng kí: o Tác nhân : Actor. o Hệ thống : Đăng kí. o Mô tả: Actor – thành viên đăng kí tài khoản với hệ thống mới có thể sử dụng hệ thống. Hệ thống phân quyền mặc định là user cho tài khoản mới đăng kí. 2.4.3 Biểu đồ Usecase về giao dịch: Hình1.4 : Biểu đồ Usecase giao dịch. Biểu đồ Usecase giao dịch: o Tác nhân : Member , Manager. o Hệ thống : giao dịch, tham gia chi chung, thêm giao dịch, duyệt giao dịch, cập nhật. o Mô tả : Member đăng nhập thực hiện giao dịch thêm giao dịch cá nhân hoặc thêm giao dịch chung. 13 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Member khác có thể tham gia giao dịch chung nếu giao dịch đó là giao dịch chung, không tham gia vào giao dịch cá nhân của Member khác. Manager tiến hành duyệt giao dịch. Manager duyệt các giao dịch đã hoàn thành và cập nhật thông tin. 2.4.4 Biểu đồ Usecase tìm kiếm : Hình1.5: Biểu đồ Usecase tìm kiếm. Biểu đồ Usecase tìm kiếm : o Tác nhân : Admin, Manager, Member. o Hệ thống : tìm kiếm, tìm kiếm theo từ khóa, tìm kiếm theo ngày tháng, tìm kiếm theo số tiền. o Mô tả : Người dùng sử dụng chức năng tìm kiếm theo từ khóa. Người dùng sử dụng chức năng tìm kiếm theo ngày tháng. Người dùng sử dụng chức năng tìm kiếm theo số tiền. 14 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2.4.5 Biểu đồ Usecase thống kê: Hình 1.6 : Biểu đồ Usecase thống kê. Biểu đồ Usecase thống kê: o Tác nhân : Human bao gồm: Admin, Manager, Member. o Hệ thống : thống kê, xem chi tiêu cá nhân, xem chi tiêu chung, xem chi tiêu trong tháng, xem thu nhập. o Mô tả: Người dùng có thể xem giao dịch cá nhân của tất cả thành viên. Người dùng có thể xem các giao dịch chung của gia đình. Hệ thống có thể thống kê thu nhập các cá nhân trong gia đình. Hệ thống có thể thống kê chi tiêu trong tháng của các cá nhân trong gia đình. 15 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2.2.4 Biểu đồ Usecase bảo mật: Hình 1.7: Biểu đồ Usecase bảo mật Biều đồ Usecase bảo mật: o Tác nhân : human bao gồm : Member, Admin, Manager. o Hệ thống : bảo mật, cập nhật họ tên, cập nhật mật khẩu, cập nhật số điện thoại, cập nhật đơn vị công tác, địa chỉ. o Mô tả : Người dùng có thể cập nhật lại mật khẩu. Người dùng có thể cập nhật lại họ tên. Người có thể cập nhật lại địa chỉ. Người dùng có thể cập nhật lại số điện thoại. Người dùng có thể cập nhật lại đơn vị công tác. 16 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 3. Đặc tả Usecase: 3.1.Đặc tả chức năng đăng nhập: o Tóm tắt : Người dùng sử dụng chức năng này đăng nhập vào hệ thống để có thể sử dụng được các chức năng của hệ thống. o Sơ đồ hoạt động đăng nhập: Hình 1.8 : sơ đồ hoạt động đăng nhập o Mô tả : Dòng sự kiện chính: B1 : thành viên nhập tài khoản và mật khẩu vào giao diện đăng nhập B2 : Hệ thống tìm kiếm dữ liệu trong cơ sở dữ liệu để đối chiếu B3 : So sánh : o B3.1 Nếu không tồn tại hoặc nhập sai tài khoản, mật khẩu thì hệ thống hiện thông báo sai tài khoản hoặc mật khẩu và nhấn ok để về giao diện đăng nhập B1 o B3.2 Nếu tài khoản đúng thì sang bước B4 B4 : Hiện thị giao diện người dùng. 17 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Dòng sự kiện phụ: Dòng thứ nhất : - Người dùng hủy yêu cầu đăng nhập. - Hệ thống đóng lại. - Kết thúc Usecase. Dòng thứ hai : - Người dùng nhập thông tin sai. - Hệ thống hiển thị thông báo lỗi. - Kết thúc Usecase. Hệ thống trước khi Usecase đăng nhập được thực hiện : Không yêu cầu gì. Hệ thống sau khi Usecase đăng nhập được thực hiện : Nếu đăng nhập thành công thì hệ thống sẽ hiển thị giao diện chính. Người dùng có thể thực hiện chức năng theo đúng quyền hạn của mình. Nếu đăng nhập thất bại: Hệ thống sẽ đưa ra thông báo. Giao diện : Giao diện form đăng nhập. 3.2.Đặc tả Usecase đăng kí: o Mô tả : Tóm tắt : Thành viên trong gia đình muốn tham gia hệ thống sẽ phải đăng kí tài khoản người dùng. Người dùng cần cung cấp thông tin để xác nhận tài khoản. Dòng sự kiện : Dòng sự kiện chính: Thành viên gia đình khởi động hệ thống. Hệ thống hiển thị form đăng nhập bao gồm form đăng kí người dùng. Thành viên nhập thông tin người dùng : tên đăng nhập, mật khẩu, họ và tên, số điện thoại, địa chỉ, đơn vị công tác. Thành viên chọn button đăng kí. Hệ thống kiểm tra sự hợp lệ thông tin và thêm người dùng vào hệ thống. Kết thúc Usecase. 18 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Dòng sự kiện phụ : Dòng thứ nhất: - Người đăng kí hủy bỏ việc đăng kí. - Hệ thống bỏ qua form đăng kí trở về form chính. - Kết thúc Usecase. Dòng thứ hai: -Thông tin người dùng nhập không hợp lệ. -Hệ thống hiển thị thông báo lỗi. -Kết thúc Usecase. Trạng thái hệ thống trước khi Usecase đăng kí được thực hiện: Hệ thống không có yêu cầu gì. Trạng thái hệ thống sau khi Usecase đăng kí thực hiện: Trường hợp thành công: tài khoản mới được thêm vào hệ thống. Trường hợp thất bại : hệ thống thông báo lỗi và không thêm người dùng vào hệ thống. Giao diện : giao diện giao diện đăng kí. 3.3.Đặc tả chức năng tìm kiếm: o Tóm tắt : Người dùng sử dụng chức năng để tìm kiếm dữ liệu mong muốn, thông qua các hình thức tìm kiếm theo từ khóa, thời gian và số tiền. o Sơ đồ hoạt động tìm kiếm: 19 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Hình 1.9: Sơ đồ hoạt động tìm kiếm o Mô tả: Dòng sự kiện chính : B1 : Người dùng vào giao diện tìm kiếm. B2 : Người dùng chọn cách thức tìm kiếm của hệ thống. B2.1 Người dùng chọn tìm kiếm từ khóa. B2.2 Người dùng chọn tìm kiếm theo ngày tháng. B2.3 Người dùng chọn tìm kiếm theo số tiền. B3 : Người dùng nhập từ khóa và đến B6. B4 : Người dùng nhập ngày tháng và đến B6. B5 : Người dùng nhập số tiền và đến B6. 20 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 B6 : Hệ thống kiểm tra dữ liệu người dùng nhập so với cơ sở dữ liệu, nếu trùng khớp thì sang B7 nếu không trùng thì hiển thị thông báo không tồn tại và về B2. B7 : Hiển thị giao diện kết quả tìm kiếm. Dòng sự kiện phụ : Dòng thứ nhất : Người dùng hủy bỏ việc tìm kiếm theo từ khóa. Hệ thống bỏ giao diện tìm kiếm theo từ khóa và trở về giao diện chính. Kết thúc Usecase. Dòng thứ nhất : Người dùng hủy bỏ việc tìm kiếm theo ngày tháng. Hệ thống bỏ giao diện tìm kiếm theo ngày tháng và trở về giao diện chính. Kết thúc Usecase. Dòng thứ nhất : Người dùng hủy bỏ việc tìm kiếm theo số tiền. Hệ thống bỏ giao diện tìm kiếm số tiền và trở về giao diện chính. Kết thúc Usecase. Dòng thứ tư: Hệ thống hiển thị thông báo lỗi do quá trình tìm kiếm xảy ra lỗi. Kết thúc Usecase. Trạng thái hệ thống trước lúc Usecase tìm kiếm được sử dụng. Người dùng cấn phải đăng nhập hệ thống. Trạng thái hệ thống sau khi Usecase tìm kiếm được sử dụng. Trường hợp thành công : hiển thị thông tin tìm kiếm. Trường hợp thất bại : hệ thống thông báo lỗi. 21 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Giao diện : giao diện tìm kiếm. 3.4.Đặc tả chức năng giao dịch: o Tóm tắt : Member có thể tiền hành giao dịch với các chức năng thêm giao dịch chung và cá nhân, Manager sẽ duyệt các giao dịch đã hoàn thành. o Biểu đồ hoạt động giao dịch: Hình 1.10 : Biểu đồ hoạt động giao dịch. o Mô tả: Dòng sự kiện chính : B1: Member vào giao diện giao dịch. B2 : Member lựa chọn hình thức giao dịch. 22 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 B2.1 : Giao dịch riêng đến B3. B2.2 : Giao dịch chung đến B6. B3: Kiểm tra cú pháp, sai quay lại B2, đúng đến B4. B4: Nếu giao dịch chưa hoàn thành thì đến B9 nếu hoàn thành đến B5. B5 : Manager duyệt để giao dịch được ghi nhận đã hoàn thành để giao dịch đó được thống kê chi tiêu sau đó đến B9. B6 : Kiểm tra số tiền không hợp lệ quay lại B2, đúng đến B7. B7: Nếu giao dịch hoàn thành thì đến B8 nếu chưa hoàn thành đến B9. B8 : Giao dịch hoàn thành và Manager duyệt ghi nhận hoàn thành giao dịch để thống kê được chi tiêu sau đó đến B9. B9 : Cập nhật cơ sở dữ liệu. Dòng sự kiện phụ: Dòng sự kiện thứ nhất : User hủy bỏ việc thêm chi tiêu cá nhân. Hệ thống bỏ qua giao diện thêm giao dịch, trở về giao diện chính. Kết thúc Usecase. Dòng sự kiện thứ hai : User hủy bỏ việc thêm chi tiêu chung. Hệ thống bỏ qua giao diện thêm giao dịch, trở về giao diện chính. Kết thúc Usecase. Dòng sự kiện thứ ba : User nhập dữ liệu giao dịch bị lỗi. Hệ thống hiển thị thông báo lỗi. Kết thúc Usecase. Trạng thái hệ thống trước khi Usecase giao dịch được sử dụng: Người dùng phải đăng nhập mới có thể hoàn thành. 23 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Trạng thái hệ thống sau khi Usecase giao dịch được sử dụng: Thêm giao dịch thành công : hệ thống lưu giao dịch mới vào hệ thống. Thêm giao dịch thất bại : hệ thống hiển thị thông báo lỗi. Giao diện : giao diện giao dịch. 3.5.Đặc tả Usecase thống kê: o Tóm tắt : người dùng sử dụng chức năng này để thống kê lại thu chi cá nhân, thu chi các khoản mục chung và tính toàn số dư của từng cá nhân trong tháng. o Mô tả: Dòng sự kiện chính: Người dùng chọn chức năng thống kê chi chung. Hệ thống hiển thị giao diện thống kê các cá nhân tham gia chi chung. Người dùng chọn chức năng chi tiêu trong tháng. Hệ thống hiển thị tổng chi của cá nhân trong tháng. Người dùng chọn chức năng thu nhập trong tháng. Hệ thống hiển thị giao diện tổng thu nhập cá nhân trong tháng. Người dùng chọn thống kê thu chi. Hệ thống hiển thị giao diện số dư còn lại của cá nhân theo thu chi trong tháng. Kết thúc Usecase. Dòng sự kiện phụ: Dòng sự kiện thứ nhất. Người dùng hủy bỏ thống kê thu chi hiện tại. Hệ thống bỏ qua giao diện thống kê và trở về giao diện chính. Kết thúc Usecase. Dòng sự kiện thứ hai: Hệ thống xảy ra lỗi trong quá trình xử lí. Hệ thống hiển thị thông báo lỗi. Kết thúc Usecase. 24 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Trạng thái hệ thống trước khi Usecase thống kê sử dụng: Người dùng cần đăng nhập hệ thống. Trạng thái hệ thống sau khi Usecase thống kê sử dụng : Trường hợp thành công : hệ thống hiển thị thống kê chi tiêu cá nhân và gia đình theo từng khoản mục lựa chọn của người dùng. Trường hợp thất bại : hệ thống hiển thị thông báo lỗi. Giao diện : giao diện thống kê. 25 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 CHƯƠNG II: PHÂN TÍCH THIẾT KẾ BÀI TOÁN 1. Cấu trúc dữ liệu: Mô hình cơ sở dữ liệu: Hình 2.1: Mô hình cơ sở dữ liệu. 26 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Mô hình quan hệ : Thanh viên: Idthanhvien Username Password Hoten Dienthoai Diachi Dvcongtac Char(11) Varchar Varchar Varchar Int( 11) Varchar Char (45) (45) (45) (45) (45) Primary key Giaodich : Idgiaodich Noidung Sotien Thoidiem Hinhthuc Trangthai Thanhvien_id Int(11) Varchar Int(11) Datetime Varchar Varchar Int(11) (45) (45) (45) Primary key Nguonchi: Idnguonchi Noidung Trangthai Chuthich Sotien Magiaodich Int(11) Varchar(45) Varchar(45) Varchar(45) Int(11) Int(11) Primary key Nguonthu: Idnguonthu Noidung Sotien Magiaodich Int(11) Varchar(45) Int(11) Int(11) Primary key Quyenhan: Idquyenhan Noidung Giatri Thanhvien_id Int(11) Varchar(45) Int(11) Int(11) Primary key Hangmuc: Idhangmuc Tenhangmuc Noidung Trangthai Masochi Sotien Int(11) Varchar(45) Varchar(45) Tinyint(1) Int(11) Int(11) Primary key Thamgia: Idthamgia Masochi Sotien Thanhvien_id Donggop Int(11) Int(11) Int(11) Int(11) Int(11) Primary key 27 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2. Biểu đồ trình tự: 2 1 Biểu đồ trình tự đăng nhập: Hình 2.2 : Biểu đồ trình tự đăng nhập. Mô tả : Bước 1 : người dùng nhập username và password vào giao diện đăng nhập và nhấn button đăng nhập. Bước 2 : từ giao diện sẽ gửi thông tin đăng nhập đến khối điều khiển đăng nhập. Bước 3 : khối điều khiển sẽ truy vấn thống tin vào cơ sở dữ liệu. Bước 4 : cơ sở dữ liệu trả về kết quả truy vấn cho khối điều khiển đăng nhập. Bước 5 : khối điều khiển đăng nhập sẽ kiểm tra quyền hạn của tài khoản. Bước 6 : khối điều khiển thông báo kết quả đăng nhập cho khối giao diện. Bước 7 : từ giao diện sẽ thông báo kết quả đăng nhập cho người dùng. 28 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2.2 Biểu đồ trình tự đăng kí thành viên mới : Hình 2.3 : Biểu đồ trình tự đăng kí Mô tả : Bước 1 : thành viên nhập thông tin đăng kí vào giao diện đăng kí. Bước 2 : giao diện đăng kí sẽ gửi yêu cầu đăng kí đến khối điều khiển đang kí. Bước 3 : khối điều khiển đăng kí sẽ kiểm tra thông tin xem người dùng đã nhập đúng chưa. Bước 4 : khối điều khiển đăng kí gửi truy vấn tới cơ sở dữ liệu. Bước 5 : cơ sở dữ liệu trả kết quả về khối điều khiển đăng kí. Bước 6 : khối điều khiển đăng kí gửi thông báo hiển thị thống báo kết quả đăng kí cho giao diện. Bước 7 : giao diện sẽ thông báo tới thành viên kết quả của đăng kí. 29 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2.3 Biểu đồ trình tự thêm giao dịch: Hình 2.4 : Biểu đồ trình tự thêm giao dịch. Mô tả : Bước 1 : Member nhập thông tin giao dịch vào giao diện giao dịch. Bước 2 : giao diện gửi yêu cầu giao dịch tới khối điều khiển giao dịch. Bước 3 : khối điều khiển giao dịch kiểm tra dữ liệu nhập vào. Bước 4 : khối điều khiển giao dịch truy vấn cơ sở dữ liệu. Bước 5 : trả kết quả truy vấn về cho khối điều khiển giao dich. Bước 6 : khối điều khiển giao dịch gửi thông báo hiển thị kết quả ra giao diện. Bước 7 : giao diện sẽ thông báo tới người dùng kết quả của thao tác thêm giao dịch. 30 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2.4 Biểu đồ trình tự xác nhận giao dịch: Hình 2.5 : Biểu đồ trình tự xác nhận giao dịch Mô tả : Bước 1 : Manager lựa chọn giao dịch trên giao diện giao dịch. Bước 2 : giao diện sẽ gửi yêu cầu hiển thị các yêu cầu của Manager đến khối điều khiển giao dịch. Bước 3 : khối điều khiển giao dịch gửi truy vấn đến cơ sở dữ liệu. Bước 4 : trả khối điều khiển giao dịch kết quả của truy vấn các yêu cầu. Bước 5 : khối điểu khiển giao dịch gửi kết quả về giao diện. Bước 6 : giao diện sẽ thông báo yêu cầu để Manager lựa chọn. Bước 7 : Manager lựa chọn yêu cầu từ màn hình giao diện. Bước 8 : giao diện gửi yêu cầu xác nhận tới khối điều khiển giao dịch. Bước 9 : khối điều khiển giao dịch kiểm tra điều kiện xác nhận. Bước 10: khối điều khiển cập nhật dữ liệu vào cơ sở dữ liệu. Bước 11: trả về kết quả cập nhật dữ liệu cho khối điều khiển giao dịch. Bước 12: khối điều khiển giao dịch gửi kết quả cần hiển thị đến giao diện. Bước 13: giao diện giao dịch hiển thị thông báo kết quả đến Manager. 31 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2.5 Biểu đồ trình tự tham gia chi chung: Hình 2.6 : Biểu đồ trình tự tham gia chi chung Mô tả : Bước 1 : người dùng lựa chọn yêu cầu tham gia trên giao diện giao dịch. Bước 2: giao diện sẽ gửi yêu cầu tìm kiếm khoản chi chung đến khối điều khiển giao dịch. Bước 3 : khối điều khiển giao dịch sẽ truy vấn cơ sở dữ liệu. Bước 4 : kết quả truy vấn trả về cho khối điều khiển giao dịch. Bước 5 : khối điều khiển gửi kết quả các hạng mục tìm thấy đến giao diện. Bước 6 : giao diện thông báo người dùng các hạng mục được tìm thấy. Bước 7 : người dùng lựa chọn hạng mục từ giao diện giao dịch. Bước 8 : giao diện yêu cầu người dùng nhập số tiền. Bước 9 : người dùng nhập số tiền muốn tham gia chi chung trên giao diện. Bước 10: giao diện gửi yêu cầu tham gia cho khối điều khiển giao dịch. Bước 11: khối điều khiển giao dịch kiểm tra dữ liệu vào. Bươc 12: cập nhật dữ liệu vào cơ sở dữ liệu. Bước 13: trả kết quả cập nhập về khối điều khiển. 32 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Bước 14: khối điều khiển giao dịch gửi thông báo kết quả cho giao diện. Bước 15 : giao diện thông báo kết quả thao tác cho người dùng. 2.6 Biểu đồ trình tự thống kê: Hình 2.7 : Biểu đồ trình tự thống kê. Mô tả : Bước 1 : người dùng chọn hình thức thống kê trên giao diên thống kê. Bước 2 : giao diện gửi yêu cầu tới khối điều khiển thống kê. Bước 3 : khối điều khiển thống kê kiểm tra yêu cầu. Bước 4 : khối điều khiển thống kê truy vấn cơ sở dữ liệu. Bước 5 : kết quả truy vấn trả về khối điều khiển thống kê. Bước 6 : khối điều khiển thống kê gửi kết quả thống kê ra giao diện. Bước 7 : giao diện thống kê thông báo cho người dùng biết kết quả của thống kê. 33 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 3. Biểu đồ lớp : 3.1 Biểu đồ lớp : Chương trình thiết kế theo mô hình MVC gồm có: tầng giao diện, tầng thực thi, và tầng điều khiển, trong đó: Tầng giao diện hiển thị các bảng và các chức năng, tương tác với người dùng, tự động bắt các thao tác của người dùng đối với chương trình để chuyển cho tầng thực thi. Tầng điều khiển nhận yêu cầu từ tầng giao diện và gọi các chức năng phù hợp từ tầng thực thi. Tầng thực thi ở đây xây dựng các chức năng, thuật toán, phương thức xử lý, truy xuất database Việc thiết kế như vậy nhằm mục đích: Tạo điều kiện thuận lợi cho việc viết mã nguồn: người thiết kế giao diện không cần quan tâm cụ thể đến các chi tiết ẩn dấu phức tạp của phần thực thi và người viết phần thực thi chỉ quan tâm đến việc hoàn thành từng chức năng cụ thể được giao. Tạo điều kiện thuận lợi cho việc sửa chữa, nâng cấp, nếu chương trình có lỗi thì ta có thể dễ dàng xác định lỗi ở tầng nào và sau đó chỉ cần khắc phục ở tầng đó. 34 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Hình 2.8: Biểu đồ lớp. 35 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 3.2 Các lớp của hệ thống: Tầng giao diện thiết kế một JFrame MainFrame để chứa các JPanel cần thiết được thiết kế trong các lớp như: Function: Lớp giao diện các chức năng chính như : giao dịch, tìm kiếm, bảo mật, khi người dùng thao tác với giao diện này JPanel tương ứng của từng chức năng sẽ hiện ra bên dưới để người dùng thao tác tiếp. Hình 2.9 Lớp Function Help: Lớp giao diện chức năng hướng dẫn sử dụng cho người dùng, hướng dẫn sử dụng các chức năng chính của chương trình. Hình 2.10 Lớp Help Information: Lớp giao diện trang chính, ngay khi đăng nhập, hiển thị các chức năng thống kê thu, chi, chi chung hoặc thực hiện chức năng của Admin: cập nhật thông tin thành viên, phân quyền thành viên. 36 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Hình 2.11 Lớp Information Login: Lớp giao diện chứa các khung đăng nhập, đăng kí. Hình 2.12 Lớp Login Search: Lớp giao diện chức các chức năng tìm kiếm theo từ khóa, theo thời gian, theo số tiền. 37 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Hình 2.13 Lớp Search Security: Lớp giao diện chứa các thông tin cá nhân của người dùng, có thể cập nhật lại thông tin nếu cần thiết. Hình 2.14 Lớp Security Trade: Lớp giao diện chứa các chức năng của giao dịch như: thêm giao dịch mới, tham gia chi chung, duyệt giao dịch mới, duyệt chi chung hoặc xem các thông tin về giao dịch. 38 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Hình 2.15 Lớp Trade Tầng điều khiển trong gói control, bắt các thao tác của người dùng đối với giao diện rồi thực thi hoặc gọi các phương thức tương ứng trong tầng thực thi, tầng này gồm có: Control: Là một trong các lớp quan trọng nhất, lớp này bắt các sự kiện của người dùng và thực thị hoặc gọi các phương thức cần thiết từ tầng thực thi. Có các lớp kết tập trong nó như: Các lớp tầng giao diện (Function, Help, Information, Login, Search, Security, Trade) ,Các lớp tầng thực thi (Connect). 39 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Hình 2.16 Lớp Control Main: Lớp này khởi tạo lớp Control để bắt đầu chạy chương trình. Hình 2.17 Lớp MainFrame Tầng thực thi trong gói jdbc, thực hiện việc kết nối đến cơ sở dữ liệu, tạo và gửi các câu lệnh truy vấn như SELECT, INSERT, UPDATE, gồm có các lớp như: Connect: Là một trong các lớp quan trọng nhất, lớp này chứa các phương thức thực hiện việc kết nối đến cơ sở dữ liệu, gửi các các câu lệnh truy vấn được yêu cầu đến cơ sở dữ liệu và lấy kết quả trả về gửi cho lớp trong tầng điều khiển đã gọi đến nó. Lớp CreateQuery là kết tập trong đó. 40 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Hình 2.18 Lớp Connect CreateQuery: Lớp này chứa các mẫu câu lệnh truy vấn như SELECT, INSERT, UPDATE có sẵn nhằm trả về các mẫu truy vấn tương ứng khi lớp Connect gọi đến. Hình 2.19 Lớp CreateQuery 41 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 4. Thiết kế chi tiết lớp : 4.1 Thiết kế chi tiết lớp Control: PHƯƠNG THỨC MÔ TẢ public Connect conn; Các lớp cần thiết kết tập trong lớp Control. public MainFrame mainframe; public Help help; public DefaultTableModel tablemodel; public String username; Các biến lưu thong tin cơ bản của thành viên public String password; như: tên đăng nhập,họ tên, mã thành viên, public String thanhvien; quyền hạn . public String hinhthuc; public int quyenhan; public int matv; public int st = 1, st2 = 0; Các biến phụ, phục vụ cho quá trình thao tác, public int tam = 1; bắt sự kiện, hay giới hạn các quyền của thành public int xem = 0; viên khi đăng nhập. public boolean xem2 = false; public boolean xem3 = false; public boolean xem4 = false; public String tablename; Các biến lưu các thông tin của các bảng, public int idthanhvien, idquyenhan, idthu, phục vụ cho việc truy xuất dữ liệu hay thêm, idchi, idthamgia, idhangmuc,idgiaodich; sửa dữ liệu. public ArrayList list3; public Control() { Hàm khởi tạo. } public void actionPerformed(ActionEvent ae) Bắt sự kiện người dùng, khi họ click chuột. { } public void getInfo(DefaultTableModel tbm, Lấy thông tin dữ liệu mà người dùng click int tam, int kt) { vào trên bảng cho vào các khung textfield } tương ứng như: duyệt giao dịch, duyệt chi chung thamgia. public void setText() { Xét lại thông tin như các khung: duyệt giao } dich, thêm giao dich,tham gia, duyệt chi chung về rỗng. public void getId() { Lấy thông tin trường id của các bảng trong cơ } sở dữ liệu phục vụ cho việc insert bản ghi mới. public void setInfo(int k) { Thêm dữ liệu các bảng liên quan khi } Manager thực hiện duyệt giao dịch mới. public boolean kTra(String s, int t) { Kiểm tra kí tự nhập vào có hợp lệ hay không } (trả về đúng nếu là chữ cái hoặc số). 42 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 public boolean getDataRow(String Tìm trong bảng của câu lệnh SELECT, các tablename, String s) { hàng dữ liệu có chứa xâu s hay không, nếu có } thì hiển thị thông tin lên bảng với tham số truyền vào là tên bảng và xâu s cần tìm kiếm. public ArrayList Trả về danh sách các bản ghi dữ liệu có chứa searchData(DefaultTableModel tb, String s) { xâu s với tham số truyền vào là TableModel } hiện tại của bảng và xâu kí tự cần tra cứu. public void setVisible() { Set ẩn hiện các khung giao diện chức năng } chính, phục vụ cho việc thao tác với giao diện. public void setInfo(String username, String Lấy thông tin cần thiết về thành viên vừa password) { đăng nhập hiển thị lên khung thông tin trên } cùng bên phải và thông tin chức năng bảo mật của giao diện. 4.2 Thiết kế chi tiết lớp Connect() PHƯƠNG THỨC MÔ TẢ private Connection connection; Các lớp cần thiết là kết tập của lớp Connect, private Statement statement; phục vụ cho việc kết nối với cơ sở dữ liệu private ResultSet result; hoặc lớp CreateQuery tạo và trả về mẫu câu public CreateQuery createquery; lệnh truy vấn có sẵn. private String username = "root"; Các biến lưu trữ tài khoản, mật khẩu, địa chỉ private String password = "thuyen225"; localhost của cơ sở dữ liệu đã cài đặt trong privateStringhost= máy tính (MySQL). "jdbc:mysql://localhost:3306/mydb"; private ArrayList list1; Các biến phục vụ việc lấy và lưu dữ liệu từ private ArrayList list2; các câu lệnh truy vấn SELECT, tablemodel public DefaultTableModel tablemodel; để load dữ liệu vào bảng Jtable. public Connect() { Hàm khởi tạo. } public boolean connect() { Kết nối đến cơ sở dữ liệu. } public boolean close() { Đóng các kết nối đang chạy. } public ArrayList getColumnName(String Lấy tên các trường trong câu lệnh truy vấn tablename, String qr) { cho vao tablemodel (kết hợp với phương thức } getRow()). public int getRow(String tableName, String Lấy dữ liệu của các hàng trong câu lệnh truy qr) { vấn cho vào tablemodel (kết hợp với phương } thức getColumnName()). public String procedure(String datetime1, Trả về câu lệnh truy vấn hiển thị tổng thu, String datetime2){ tổng chi và hiệu thu chi. } public boolean insert(String tablename, Thêm bản ghi vào một bảng được chỉ định String qr, Vector vt) { hoặc câu lệnh truy vấn qr tự tạo, các giá trị } của các trường dữ liệu tương ứng lấy trong vector vt. 43 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 public boolean update(String tablename, Câu lệnh update dữ liệu của một bảng được Vector vt) { chỉ định với các giá trị cần update được lấy } trong vector vt. public boolean update(String query) { Câu lệnh update tự tạo, với vị trí cần update } và giá trị vần update, câu lệnh được tạo trong lớp CreateQuery. public String createQuery(int a, int b, int c, Gọi một câu lệnh tương ứng trong lớp String time1, String time2, String s) { CreateQuery và trả về câu lệnh đó với các } tham số truyền vào để tạo câu lệnh bên lơp CreateQuery. public boolean login(String username, String Kiểm tra quyền hạn đăng nhập. password) { } public ArrayList setInfo(String Lấy thông tin các thông tin cần thiết khi username, String password) { người dùng đăng nhập. } 44 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 CHƯƠNG III : CÔNG NGHỆ VÀ THUẬT TOÁN SỬ DỤNG Để xây dựng chương trình chúng em đã sử dụng ngôn ngữ lập trình Java để lập trình và hệ quản trị cơ sở dữ liệu MySQL để quản lí cơ sở dữ liệu.Chúng kết nối với nhau thông qua trình điều khiển JDBC. Dưới đây là giới thiệu công nghệ mà chúng em đã sử dụng. 1.Ngôn ngữ lập trình Java: 1.1 Giới thiệu về Java: Java là một ngôn ngữ lập trình hướng đối tượng (OOP). Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi chạy. Bằng cách này, Java thường chạy nhanh hơn ngôn ngữ lập trình thông dịch khác như Pythorn, Perl, PHP , Cú pháp Java được vay mượn nhiều từ C và C++ nhưng có cú pháp hướng đối tượng đơn giản hơn và ít tính năng xứ lý cấp thấp hơn. Một số đặc điểm nổi bật của ngôn ngữ lập trình Java: Thông dịch : Java là ngôn ngữ vừa lập trình biên dịch vừa thông dịch. Chương trình nguồn viết băng ngôn ngữ lập trình Java có đuổi *.java đầu tiên được biên dịch thành tập tin có đuôi *.class và sau đó sẽ được trình thông dịch mã máy. Độc lập nền: Một chương trình viết bằng ngôn ngữ Java có thể chạy trên nhiều máy tính có hệ điều hành khác nhau (Windows, Unix, Linux, ) miễn sao ở đó có cái đặt máy ảo java. Viết một lần chạy mọi nơi. Hướng đối tượng: Hướng đối tượng trong Java tương tự trong C++ nhưng Java là một ngôn ngữ lập trình hướng đối tượng hoàn toàn. Tất cả mọi thứ trong java đều liên quan đến các đối được định nghĩa trước, thậm chí hàm chính của chương trình viết bằng Java cũng phải đặt trong một lớp. Hướng đối tượng trong Java không có tính đa kế thừa nhưng trong C ++ mà thay vào đó Java đưa ra khái niệm interface để hỗ trợ tính đa kế thừa. 45 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Đa nhiệm- đa luồng: Java hỗ trợ lập trình đa nhiệm, đa luồng cho phép nhiều tiến trình , tiểu trình có thể chạy song song cùng một thời điểm và tương tác với nhau. Khả chuyển : Chương trình ứng dụng viết bằng ngôn ngữ Java chỉ cần chạy được trên máy ảo Java là có thể chạy được trên bất kì máy tính, hệ điều hành nào có máy ảo. Hỗ trợ mạnh cho việc phát triển ứng dụng : Công nghệ Java phát triển mạnh mẽ nhờ vào Sun Microsystem cung cấp nhiều công cụ, thư viện lập trình phong phú hỗ trợ cho việc phát triển nhiều loại ứng dụng khác nhau cụ thể : J2SE hỗ trợ phát triển ứng dụng đơn, ứng dụng client- sever, J2EE hỗ trợ phát triển các ứng dụng thương mại, J2ME hỗ trợ phát triển ứng dụng trển các thiết bị di động không dây. 1.2. Công cụ sử dụng : Quá trình hoàn thành bài tập lớn, chúng em đã sử dụng chương trình NetBean để viết chương trình với ngôn ngữ Java. Chương trình hỗ trợ cho việc lập trình với chức năng gợi ý các phương thức của các lớp có sẵn cũng như lớp mới xây dựng. Chương trình cũng hỗ trợ bắt các ngoại lên trong quá trình xây dựng chương trình. Tuy nhiên, ưu điểm lớn nhất của NetBean là có thế xây dựng giao diện bằng kéo thả, hỗ trợ tối đa về giao diện cho người lập trình. 2. Hệ quản trị cơ sở dữ liệu MySQL: MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất trên thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các tiện ích rất mạnh. Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet. MySQL miễn phí hoàn toàn. MySQL có nhiều phiên bản chạy cho các hệ điều hành khác nhau : Win32 cho các hệ điều hành dòng windows, linux, Mac OS X, . 46 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 3. Trình điều khiển JDBC – kết nối ngôn ngữ Java và MySQL: 3.1 Giới thiệu về JDBC: JDBC là API Java cơ sở, mà nó cung cấp một các lớp và giao diện được viết bằng Java để truy xuất và thao tác với nhiều loại hệ cơ sở dữ liệu khác nhau. JDBC tồn tại là để giúp các nhà phát triển Java tạo nên các ứng dụng truy xuất cơ sở dữ liệu mà không cần phải học và sử dụng các API độc quyền do các công ty sản xuất phần mềm khác nhau bên thứ ba cung cấp. 3.2 Kiến trúc JDBC: Trong Java có 2 lớp chủ yếu chịu trách nhiệm kết nối đến một cơ sở dữ liệu. o Lớp đầu tiên là DriverManager. Đó là một trong rất ít các lớp thực sự do JDBC API cung cấp. DriverManager chịu trách nhiệm quản lý một nhóm các driver đã đăng kí, mà thực chất là trừu tượng hóa các chi tiết về việc sử dụng một driver, cho nên chúng ta không cần phải làm việc trực tiếp với driver đó. o Lớp thứ 2 đó là một lớp JDBC Driver thực sự. Nó được cung cấp bởi các nhà sản xuất phần mềm độc lập. Lớp JDBC Driver chịu trách nhiệm thiết lập đường kết nối dữ liệu và xử lý tất cả các giao tiếp với cơ sở dữ liệu đó. Các JDBC Driver chia thành 2 phần: JDBC API ( các gói java.sql và javax.sql) Các kiểu JDBC Driver JDBC API, JDBC API có sẵn trong các gói java.sql và javax.sql. 3.3 Một số lớp JDBC quan trọng: Một số lớp JDBC, các giao diện và ngoại lệ quan trọng: DriverManager : nạp các JDBC Driver vào trong bộ nhớ. Có thể sử dụng nó để mở các kết nối tới một nguồn dữ liệu. 47 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Connection : biểu thị một kết nối đến một nguồn dữ liệu. Được dùng để tạo ra ác đối tượng Statement, PreparedStatement và CallableStatement. ( Statement biểu diễn môt lệnh SQL tĩnh, có thể sử dụng để thu về đối tượng ResultSet) PreparedStatement : một giải pháp thay thế hoạt động tốt hơn đối tượng Statement, thực thi một câu lênh SQL đã được biên dịch trước. CallableStatement : biểu diễn một thủ tục được lưu trữ. Có thể được sử dụng để thực thi các thủ tục được lưu trữ trong một cơ sở dữ liệu có hỗ trợ chúng. ResultSet : biểu diễn một tập kết quả trong cơ sở dữ liệu tạo ra bởi việc sử dụng một câu lênh SQL là SELECT. SQLExeption : một lớp xử lí ngoại lệ chứa các lỗi truy cập cơ sở dữ liệu. DataSourse : trừu tượng hóa một nguồn dữ liệu. Đối tượng này có thể sử dụng thế cho DriverManager để tạo ra một cách có hiệu quả các kết nối cơ sở dữ liệu. Trong bài tập lớn, chúng em sử dụng trình điều khiển JDBC để kết nối từ chương trình của mình vào cơ sở dữ liệu MySQL để có thế truy xuất dữ liêu từ cơ sở dữ liệu MySQL. Trên cơ sở đó chung em xây dựng nên các chức năng của hệ thống. 48 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 CHƯƠNG IV : KẾT QUẢ CHƯƠNG TRÌNH MINH HỌA 1.Kết quả chương trình mình họa : Qua một thời gian tìm hiểu và xây dựng, nhóm chúng em đã hoàn thành chương trình minh họa cho phân tích và thiết kế ở trên. Kết quả chương trình minh họa: Chúng em đã kết nối được giữa ứng dụng xây dựng bằng ngôn ngữ Java với hệ quản trị cơ sở dữ liệu MySQL, có thể truy xuất dữ liệu của cơ sở dữ liệu thông qua hệ thống. Xây dựng các lớp theo 3 tầng: cơ sở dữ liệu, nghiệp vụ, giao diện. Xây dựng hệ thống với đầy đủ các chức năng người dùng. Xây dựng giao diện thân thiện người dùng. Chương trình thỏa mãn quy trình nghiệp với đầu vào tất cả thông tin liên quan đến chi tiêu trong gia đình mà người dùng muốn quản lí thì đầu ra là các chức năng quản lí chi tiêu trong gia đình. Chương trình có chức năng chính : Cho phép đăng nhập hệ thống với các tài khoản đã được đăng kí, quá trình đăng nhập có phần quyền người dùng được sử dụng một số chức năng giới hạn của hệ thống. Cho phép đăng kí tài khoản mới trực tiếp trên giao diện khởi động chương trình. Cho phép Member thực hiện xem các giao dịch cũ và thêm mới giao dịch. Cho phép Member tham gia giao dịch chung của gia đình. Cho phép người dùng tìm kiếm dữ liệu theo từ khóa, ngày tháng, số tiền. Thống kê chi cá nhân, thống kê chi tiêu chung, thống kê thu và thông kê chi theo tháng. Admin có chức năng cấp nhật thông tin người dùng, cấp lại mật khẩu. Admin có chức năng phân quyền cho người dùng hệ thống là Member hay Manager. 49 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2. Giao diện chương trình: 2.1 Giao diện khởi động của chương trình: ( chức năng đăng nhập và đăng kí tài khoản) Hình 4.1 : Giao diện khởi động chương trình. Mô tả: Bên phải bao gồm 2 form nhập dữ liệu là 2 chức năng chính của hệ thống. Bên trái là giới thiệu về chương trình trình. Phía trên chương trình là các hoạt động mà người dùng có thể tham gia sau khi đăng nhập hệ thống. 50 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Hình 4.2 : giao diện chính chương trình. 2.2 Chức năng đăng nhập : Đây là phần mẫu giao diện đăng nhập của chương trình sau khi khởi động hệ thống. Mô tả : Trường textfield để người dùng đăng nhập username. Trường texfield để người dùng nhập password. Button ” Đăng nhập “ để vào hệ thống. Nếu người dùng nhập dữ liệu đúng thì sẽ vào giao diện trang chính hệ thống. Nếu người dùng nhập dữ liêu không đúng thì hệ thống sẽ hiện ra thống báo lỗi đăng nhập, ấn OK để quay lại màn hình đăng nhập. 51 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2.3 Chức năng đăng kí người dùng mới. Hình 4.3 : Chức năng đăng kí thành viên Chức năng này cho phép thành viên đăng kí để tạo tài khoản đăng nhập hệ thống. Mô tả : Thành viên nhập thông tin vào các trường textfield bao gồm : tên đăng nhập , mật khẩu, họ tên , số điện thoại, địa chỉ, đơn vị công tác. Điền đầy đủ thông tin sau đó ấn button “Đăng kí”. Nếu đăng kí thành công thì hệ thống sẽ thông báo. 52 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Nếu điền sai thông tin, thông tin không phù hợp với dữ liệu các trường textfield thì hệ thống sẽ thông báo lỗi. 2.4 Chức năng thêm giao dịch: Hình 4.4 : giao diện giao dịch Mô tả : Người dùng điền nội dung giao dịch chi tiêu, số tiền trong 2 trường textfield Lựa chọn ngày giao dịch bằng cách chọn ngày trong calendar Chọn hình thức thu, chi hay chi chung. Nhấn button “thêm mới” hoàn thành lưa giao dịch. Nếu điển thông tin đúng, giao dịch hoàn thành thì hệ thống thông báo. Nếu dịch bị lỗi do nhập dữ liệu giao dịch không phù hợp, hệ thống sẽ thông báo lỗi giao dịch. 53 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2.5 Chức năng duyệt giao dịch: Hình 4.5 : Duyệt giao dịch Mô tả: Chức năng dành cho Manager. Duyệt giao dịch mới và duyệt hạng mục chi chung. Manager nhấp vào “ tham gia chi chung” hiện thị các hạng mục chi chung. Nhấp vào một hạng mục bất kì đang diễn ra. Nếu số tiền thu về bằng số tiền thì Manager duyệt để hạng mục hoàn thành. Nếu số tiền thu về không bằng số tiền thì Manager không duyệt. 54 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2.6 Chức năng tham gia giao dịch chung: Hình 4.6 : tham gia chi chung Mô tả : Chức năng này chỉ dành cho chi tiêu chung. Member lựa “chọn thông tin chi chung” để biết các mục chi chung đang diễn ra. Nhấp chọn 1 mục chi chung đang diễn ra. Điền số tiền muốn đóng góp vào form như hình trên. Nhấp button “OK” để hoàn tất giao dịch. Nếu giao dịch thành công thì hệ thống sẽ hiện thì thành công. Nếu nhập số tiền không đúng định dạng gây lỗi, thì hệ thống sẽ thông báo lỗi giao dịch. 55 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2.7 Chức năng tìm kiếm: Hình 4.7: giao diện tìm kiếm Mô tả : Người dùng sẽ lựa chọn 1 trong 3 hình thức tìm kiếm. Tìm kiếm theo từ khóa. Tìm kiếm theo ngày tháng. Tìm kiếm theo số tiền. Người dùng điền thông tin vào 1 trong các mục tìm kiếm : Điền từ khóa vào textfield mục tìm theo từ khóa. Chọn ngày tháng khoảng thời gian theo calendar trong mục tìm theo ngày tháng. Điền số tiền vào textfield mục tìm theo số tiền. Người dùng chọn tìm kiếm đối với khoản mục : thành viên, nguồn thu, nguồn chi, hạng mục, tổng thu, tổng chi. Nhấp button “tìm kiếm ” đề hoàn tất thao tác. Nếu dữ liệu điền sai, hệ thống không hiển thị dữ liệu. 56 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Nếu dữ liệu điền đúng, thao tác thành công thì dữ liệu tìm kiếm sẽ được hiện ra trong giao diện tìm kiếm. Hình 4.8 kết quả tìm kiếm. 2.8 Chức năng thống kê : Hình 4.9 : chức năng thống kê 57 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Mô tả: ( chức năng ở trong giao diện thống kê) Người dùng lựa chọn một trong các mục thống kê: Thống kê chi chung. Chi tiêu trong tháng. Thu nhập trong tháng. Thống kê thu chi. Hệ thống hiển thị thông tin thống kê theo từng mục lên giao diện thống kê. 2.9 Chức năng cập nhật thông tin, cấp lại mật khẩu: Hình 4.10: giao diện cấp lại mất khẩu Mô tả : Chức năng này do Admin thực hiện. Admin chọn một trường muốn cập nhật thông tin và cấp lại mất khẩu trong bảng quyền hạn. Hệ thống đưa dữ liệu vào các trường mục cập nhật thông tin. Admin thay đổi thông tin, đổi mật khẩu trên textfield. Nhấp button “cập nhập” đề hoàn tất thao tác. Nếu nhập sai dữ liệu trường textfield, cập nhật bị lỗi hệ thống thông báo không thực hiện được cập nhật. Nếu nhập dữ liệu đúng, cập nhật thành công, dữ liệu cập nhật sẽ cập nhật vào cơ sở dữ liệu và bảng quyển hạn. 58 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Hình 4.11: Cập nhật thành công 2.10 Chức năng phân quyền thành viên. Hình 4.12: phần quyền thành viên 59 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Mô tả : Chức năng phân quyền dành cho Admin. Admin chọn một trường là tại khoản muốn phân lại quyền. Hệ thống đưa thông tin thông tin họ tên và mã thành viên vào textfield mục phần quyền. Thay đổi phân quyền giữa Member và Manager. Nhấn button “phân quyền ” để hoàn tất. Phân quyền thành công, quyền của tài khoản đó được lưu vào cơ sở dữ liệu và hiển thị trên bảng phân quyền. Hình 4.13: Phân quyền thành công. 60 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 CHƯƠNG V : KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 1.Kết luận: 1.1 Kết quả đạt được : Qua quá trình khảo sát thực tế cùng với sự nỗ lực hết mình của các thành viên trong nhóm, chúng em đã hoàn thành đề tài đúng thời gian quy định và đạt đươc một số kết quả : - Hiểu được quy trình quản lí chi tiêu của một gia đình. + Đăng kí + Đăng nhập + Thực hiện quản lí thông qua các chức năng: thêm,tìm kiếm, thống kê giao dịch. - Phân tích được quy trình hoạt động và các chức năng của hệ thống qua biểu đồ UML và xây đựng cơ sở dữ liệu phù hợp trên hệ quản trị cơ sở MySQL. - Hoàn thiện phần mềm thông qua quá trình khảo sát, phân tích thiết kế hệ thống, phân tích thiết kế cơ sở dữ liệu. - Thực hiện nghiêm túc quy trình kiểm thử phần mềm thông qua kiểm thử chéo. - Phần mềm chạy không bị lỗi. - Phần mềm có những ưu điểm sau : + Phần mềm xây dựng được các chức năng cơ bản đáp ứng yêu cầu người dùng, yêu cầu của hệ thống quản lí chi tiêu gia đình. + Hệ thống phân quyền đến từng người dùng đảm bảo tính bảo mật và độc lập. 1.2 Hạn chế: Phần mềm đã đáp ứng được yêu cầu đề tài và của người dùng xong còn một số mặt hạn chế. - Giao diện hệ thống chưa thực sự thân thiện người dùng. Quá nhiều chức năng và chưa bố trí thực sự hợp lí. - Chức năng tìm kiếm sâu từng bảng, chưa tìm kiếm rộng trên tất cả các bảng. 61 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 2. Hướng phát triển : Để giải quyết một số mặt hạn chế của hệ thống thì em đề xuất hướng phát triển như sau: - Trau dồi kĩ năng lập trình để hoàn thiện chức năng mang tính nghiệp vụ. - Tìm hiểu, tham khảo các phần mềm về quản lí để có nhiều kinh nghiệm hơn để thiết kế giao diện. - Xây dựng và triển khai hệ thống trong các gia đình để khảo sát ý kiến người dùng. Do kinh nghiệm và vốn hiểu biết của chúng em có giới hạn nên chương trình còn một số mặt hạn chế. Chương trình có thể có những thiếu sót, hạn chế, chúng em mong nhận được sự góp ý từ thầy cô và các bạn để chúng em ngày càng hoàn thiện phần mềm hơn. Chúng em xin cảm ơn ! 62 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15
- Project 1 Tài liệu tham khảo: 1. 2. 3. http:/Google.com 4. www.roseindia.net 5. Lập trình hướng đối tượng với java – Đoàn Văn Ban 6. Slide lập trình hướng đối tượng – Viện CNTT&TT- Đại học Bách Khoa Hà Nội 63 Nhóm 6 – Lớp CNTT-TT 2.2 - K56 – Đề tài 15