TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ────────
BÀI TẬP LỚ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
20111568 20111581 20111363
: Lê Trung Hiếu Đỗ Đăng Hiển Phạm Văn Đại
: 65310 – K56
Sinh viên thực hiện Lớp Giáo 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 năm 2013
Project 1
MỤC LỤC
CHƯƠNG 1. KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN .................................6
1.1. Mô tả yêu cầu bài toán .....................................................................................6
1.2. Biểu đồ use case ................................................................................................7
1.2.1. Biểu đồ use case tổng quan..........................................................................7 1.3. Đặc tả use case với biểu đồ usecase phân rã mức 2.........................................8
1.3.1. Add Transaction ..........................................................................................8 1.3.2. Manage Project............................................................................................9 Statistic......................................................................................................11 1.3.3.
CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ BÀI TOÁN .............................................12
2.1. Thiết kế Cơ sở dữ liệu.....................................................................................12
2.2. Biểu đồ lớp ......................................................................................................13
2.2.1. Tầng Model ...............................................................................................14 2.2.2. Tầng Control .............................................................................................14 2.2.3. Tầng NewGUI...........................................................................................14 ImportExport Thiết kế chi tiết lớp.................................................................16 2.3.
2.3.1. Lớp Database ............................................................................................16 2.3.2. Lớp ImportExport......................................................................................16 2.3.3. Lớp User ...................................................................................................18
CHƯƠNG 3. CÔNG NGHỆ VÀ THUẬT TOÁN SỬ DỤNG...............................19
3.1. Các công nghệ được sử dụng..........................................................................19
3.1.1. Công nghệ Java .........................................................................................19 3.1.2. Cơ sở dữ liệu .............................................................................................19 3.2. Kiến thức áp dụng để xây dựng chương trình ..............................................19
3.2.1. Cơ sở dữ liệu .............................................................................................19 3.2.2. Thiết kế giao diện xử lý sự kiện, tạo mã nguồn..........................................20
CHƯƠNG 4. XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA................................21
4.1. Giao diện chương trình ..................................................................................21
4.1.1. Login , Preferences....................................................................................21 4.1.2. MainUI......................................................................................................22 4.1.3. Category manager......................................................................................23 4.1.4. Account manager.......................................................................................24 4.1.5. Transaction................................................................................................24 Project .......................................................................................................26 4.1.6. Statistics ....................................................................................................28 4.1.7. 4.2. Kết quả chương trình minh họa.....................................................................30
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN....................................................................31
Kết luận......................................................................................................................31
2
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
Hướng phát triển .......................................................................................................32
TÀI LIỆU THAM KHẢO ............................................................................................33
PHỤ LỤC ......................................................................................................................34
3
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
LỜI NÓI ĐẦU
Việc ứng dụng công nghệ thông tin vào cuộc sống đã trở thành hoạt động không thể thiếu của con người trong thời kì công nghiệp hóa, hiện đại hóa. Hiện nay, việc quản lý chi tiêu của gia đình có thể được thực hiện một cách đơn giản, hiệu quả hơn với việc sử dụng các phần mềm tin học. Việc lưu trữ, quản lý bằng máy tính giúp giải phóng con người khỏi các công việc ghi chép và tính toán bằng giấy bút, giảm sự nhầm lẫn khi tính toán.
Xuất phát từ thực tế việc chi tiêu hàng ngày của bản thân và gia đình, nhóm chũng em đã phân tích những vấn đề thường xảy ra trong quản lí chi tiêu gia đình và thấy được sự cần thiết của phần mềm quản lý chi tiêu cho các thành viên. Nếu có phần mềm tốt, các thành viên sẽ dễ dàng quản lí việc chi tiêu của mình cũng như có được thông tin cần thiết của những thành viên khác, qua đó tạo sự đoàn kết, thống nhất trong gia đình. Đó chính là lí do chúng em đã chọn đề 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”.
Chúng em đã thiết kế hệ thống chương trình, cơ sở dữ liệu và tiến hành cài đặt, hoàn thiện hệ thống dựa trên các dữ liệu thực tế về chi tiêu trong gia đình, kiến thức được các thầy cô giảng dạy trên lớp về cơ sở dữ liệu, lập trình, quản lí dự án phần mềm… Sản phẩm của đề tài là kết quả sự nỗ lực của tất cả thành viên trong nhóm.
Để hoàn thành được đề tài này, nhóm chúng em xin được gửi lời cảm ơn chân
thành đến:
Cô Vũ Thị Hương Giang, thầy Nguyễn Ngọc Dũng - giảng viên Khoa Công nghệ Thông tin và Truyền thông Trường Đại học Bách Khoa Hà Nội - đã hết lòng giúp đỡ, hướng dẫn, chỉ dạy tận tình để nhóm em hoàn thành được đề tài này.
Các thầy cô giảng dạy các học phần của ngành Công nghệ thông tin và truyền thông đã cung cấp những kiến thức quý báu để chúng em ứng dụng vào đề tài này.
Các bạn cùng lớp Project 1 đã góp ý và giúp đỡ chúng em trong quá trình
làm đề tài này.
Hà Nội, tháng 12 năm 2013 Nhóm 4, Lớp 65310 1. Lê Trung Hiếu 2. Đỗ Đăng Hiển 3. Phạm Văn Đại
4
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
PHÂN CÔNG THÀNH VIÊN TRONG NHÓM
Công việc
Thành viên Lê Trung Hiếu Hiệu chỉnh cơ sở dữ liệu và các chức năng hệ
Thời gian Tuần 2 - 8
Tuần 8 - 11
thống. Cài đặt các lớp: - InfoImportExport tầng Model - ImportExport, User tầng Control - AddTransaction, Account tầng NewGUI Viết báo cáo Project Đỗ Đăng Hiển Thiết kế cơ sở dữ liệu và các chức năng
Tuần 12 Tuần 2 - 8 Tuần 2 – 8 Tuần 8 Tuần 8 - 11
Cài đặt thử nghiệm bản mẫu chương trình Thiết kế giao diện chính Cài đặt các lớp: - InfoUser, Infoconfig tầng Model - Database, ComboxRender, rsTableModel tầng Control - Login, MainUI, Statistic, Filter, Category, Prefecense, DataGeneration tầng NewGUI Viết báo cáo, làm slide
Tuần 12
Phạm Văn Đại Góp ý thiết kế chức năng hệ thống và cơ sở dữ liệu Tuần 2 - 8 Tuần 8 - 11
Cài đặt các lớp - Project tầng NewGUI Kiểm thử chương trình và viết báo cáo kiểm thử
Tuần 12
5
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
CHƯƠNG 1. KHẢO SÁT, ĐẶC TẢ YÊU CẦU BÀI TOÁN
1.1. Mô tả yêu cầu bài toán
Bài toán đặt ra là xây dựng được hệ thống quản lí chi tiêu với các chức năng cần thiết cho việc quản lý chi tiêu của gia đình, tiện lợi cho việc tra cứu, tổng hợp thông tin chi tiêu. Người dùng có thể quản lý thông tin chi tiêu của mình và có thể chia sẻ thông tin với thành viên khác trong gia đình. Hệ thống cũng cần cung cấp cả chức năng thống kê, báo cáo, tìm kiếm theo yêu cầu người dùng.
Các chức năng quản lý chi tiêu cơ bản Người dùng có thể lưu lại các thông tin chi tiêu hàng ngày. Cá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…
Các danh mục chi tiêu có thể được tạo ra bởi người dùng một cách linh hoạt. Có chức năng tìm kiếm theo tên, ngày tháng, mô tả…. Có chức năng đánh tag phục vụ cho tìm kiếm. Chức năng phân quyền người dùng, yêu cầu đăng nhập hệ thống. Mỗi người sử dụng có một tên đăng nhập và mật khẩu riêng, có thể sửa đổi thông tin cá nhân của mình và được xem một số thông tin của những người dùng khác. Trong số người dùng có người dùng đặc biệt (admin) có quyền xem thông tin cá nhân và được phép sửa đổi thông tin của những người dùng khác.
Chức năng thống kê, đánh giá theo các khoảng thời gian nhất định, theo các loại khoản mục chi tiêu. Người dùng có thể chọn khoảng thời gian, chọn loại chi tiêu cần quan tâm và hệ thống sẽ hiển thị những khoản mục mà người dùng được phép thấy.
Chức năng vẽ biểu đồ và lập báo cáo: giúp người dùng hình dung một cách trực
quan về tình hình chi tiêu của bản thân và gia đình.
Ngoài ra hệ thống cần cung cấp chức năng tạo lập và kiểm soát các khoản chi
tiêu chung (project).
6
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
1.2. Biểu đồ use case
1.2.1. Biểu đồ use case tổng quan
Project 1
Biểu đồ usecase tổng quan thể hiện các chức năng chính của hệ thống và sự phân
cấp người dùng. Người dùng bình thường có thể thực hiện các công việc: Thêm các giao dịch (Add Trasaction) Quản lý các khoản chi chung (Manage Project) Xem các thống kê, báo cáo (Statistic) Thay đổi, xóa giao dịch (Update, Delete Transaction) Sửa đổi thông tin cá nhân (Update Personal Information) (của chính mình) Admin cũng là một người dùng, có đủ các chức năng của người dùng và có thêm các chức năng quản lí tài khoản (Manage Account) và thêm các loại khoản mục chi tiêu (Add Category)
7
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
1.3. Đặc tả use case với biểu đồ usecase phân rã mức 2
Project 1
1.3.1. Add Transaction
Một số usecase phức tạp sẽ được trình bày chi tiết:
Người dùng khi muốn thêm một giao dịch cần chuẩn bị thông tin theo mẫu cho
trước (Provide Information), sau đó tiến hành xác nhận giao dịch (Confirm Transaction).
Thông tin người dùng đưa vào cần có thời gian, số tiền, loại chi tiêu… Người dùng
có thể thiết lập quyền nhìn thấy giao dịch cho những người dùng khác (Set Sharing).
Khi người dùng xác nhận thêm giao dịch, hệ thống sẽ kiểm tra các thông tin có hợp
lệ hay không và có thể xảy ra hai trường hợp: Thông tin hợp lệ: Tiến hành hoàn thiện việc thêm giao dịch vào cơ sở dữ liệu
(Complete).
Thông tin không hợp lệ: Báo lỗi cho người dùng (Error).
8
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
1.3.2. Manage Project
Biểu đồ hoạt động
Người dùng có thể thêm một khoản chi tiêu chung (project), đóng góp một vào một
project, khẳng định hay xóa bỏ một project do mình tạo.
9
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
Khi tạo một project, người dùng sẽ xác định ngày bắt đầu, ngày kết thúc, số tiền cần, số tiền đóng góp ban đầu của mình, sau đó đề xuất để những người dùng khác tham gia đóng góp thêm (giai đoạn gây quỹ).
Khi project đã đủ tiền, người tạo project sẽ xác nhận và các khoản chi được
chính thức đưa vào danh sách các chi tiêu của những người tham gia.
Khi project hết hạn mà không đủ tiền đóng góp thì project sẽ không được hoàn
thành.
Trong giai đoạn gây quỹ nếu người tạo project không muốn tiếp tục project thì
có thể xóa bỏ project đó.
Người dùng có thể thấy các project và tham gia đóng góp. Chức năng lọc thông tin project (Filter) được tích hợp khi xem thông tin project, có thể lọc theo ngày bắt đầu hoặc trạng thái project.
10
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
1.3.3. Statistic
Project 1
Người dùng có thể xem xét, tổng kết, và sửa chữa thông tin các khoản thu chi mà
mình được quyền nhìn thấy. Để xem được thông tin các khoản thu chi người dùng cần tiến hành xác định các điều kiện lọc sơ bộ theo thời gian, hạng mục thu chi, người dùng…
Tiếp đó người dùng có thể tiến hành lọc thông tin chi tiết hơn bằng cách chọn
chức năng Filter. Các chức năng lọc sơ bộ.
Các chức năng lọc văn bản: dựa trên thông tin mô tả các khoản thu chi. Các chức năng lọc đa trị: chọn được nhiều giá trị từ danh sách. Các chức năng lọc với điều kiện loại trừ (không thống kê một hay nhiều người
dùng, một hay nhiều loại hạng mục chi tiêu…).
Khi xem các khoản thu chi, người dùng có thể tiến hành thay đổi thông tin của
khoản thu chi đó (bấm chuột phải vào khoản thu chi sẽ hiện ra tùy chọn xóa, cập nhật…).
Chức năng sắp xếp thông tin: Người dùng có thể chọn một thuộc tính của các
khoản thu chi và tiến hành sắp xếp theo ý mình.
Với chức năng vẽ biểu đồ, việc thống kê sẽ trực quan hơn với các biểu đồ theo
năm, tháng, loại thu chi…
Ngoài ra hệ thống còn tính tổng tiền thu chi của người dùng để hiển thị ngay khi
đăng nhập.
11
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
2.1. Thiết kế Cơ sở dữ liệu
CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ BÀI TOÁN
Cơ sở dữ liệu bao gồm các bảng đã chỉ ra trên hình vẽ, trong đó các bảng quan
trọng là: Bảng user lưu trữ thông tin về những người dùng (username, passWord, gender,
-birthday…) và có thêm khóa chính id là chỉ số người dùng khi tạo.
Hai bảng importing và exporting lưu trữ các khoản thu và chi (các giao dịch) của tất cả những người dùng, có thể lưu ngày tháng, giá trị, loại khoản chi tiêu (tham chiếu tới import_type và export_type), các thông tin mô tả chi tiết… Các hàng của bảng có tham chiếu đến bảng user để xác định khoản thu chi
thuộc người dùng nào.
Ngoài ra còn có trường share cho biết khoản chi tiêu đó có được cho phép
người khác nhìn thấy hay không. Nếu trường này khác 0 thì thông tin về những người được phép nhìn thấy giao dịch này sẽ được thể hiện trong bảng share. Bảng share với các hàng chỉ ra chỉ số khoản thu chi và chỉ số người dùng có thể nhìn thấy khoản thu chi đó, cùng trường type_id để xác định là thu hay chi. Bảng project lưu trữ các thông tin về khoản thu chi chung, gồm người tạo, giá
trị, ngày bắt đầu kết thúc, trạng thái (thông qua tham chiếu tới bảng project_state).
12
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
- Trường project_id nếu khác 0 thì giao dịch này là giao dịch chung của nhiều người dùng (gọi là project). Khi đó thông tin về project sẽ được lưu trong bảng project.
Thông tin về những người tham gia project được lưu trữ trong bảng
2.2. Biểu đồ lớp
project_contribute, bao gồm chỉ số người dùng, chỉ số project (tham chiếu tới bảng project), số tiền người dùng đóng góp, ngày giờ tham gia.
Tầng Model-Control
13
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
2.2.1. Tầng Model
Tầng NewGUI (giao diện)
Các lớp với tên bắt đầu Info: tạo ra các đối tượng mang thông tin của người dùng
hay giao dịch. InfoUser: chứa các thuộc tính là thông tin về một người dùng. InfoImportExport: chứa các thuộc tính là thông tin về một giao dịch cụ thể. InfoConfig: chứa thông tin về cấu hình hệ thống (đường dẫn, mật khẩu,… tới
2.2.2. Tầng Control
cơ sở dữ liệu MySQL).
Các lớp chứa các phương thức xử lí dữ liệu.
Database: Chứa các phương thức để kết nối tới cơ sở dữ liệu. ImportExport: Chứa các phương thức xử lí giao dịch của người dùng. rsTableModel: Chứa các phương thức xử lí dữ liệu bảng. ComboxRender: Chứa các phương thức xử lí ảnh. User: kế thừa từ InfoUser, chứa các phương thức quản lí tài khoản người dùng
2.2.3. Tầng NewGUI
và quản lí việc “share” thông tin giao dịch.
Các lớp thừa kế từ lớp javax.swing.JFrame
Login: Tạo hộp thoại đăng nhập. MainUI: Tạo giao diện chính của hệ thống với các nút kích hoạt các giao diện
khác.
14
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
Account: Tạo ra giao diện quản lí tài khoản người dung. AddTransaction: Tạo ra giao diện thêm các khoản thu chi. Category: Tạo ra giao diện thêm các danh mục thu chi. DataGeneration: Tạo giao diện thêm dữ liệu mẫu. Prefercences: Tạo hộp thoại cập nhật thông tin cơ sở dũ liệu. Project: Tạo giao diện quản lí project. Statistic: Tạo giao diện thống kê, lọc thông tin. Filter: Tạo giao diện lọc dữ liệu theo yêu cầu người dùng.
15
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
2.3. ImportExport Thiết kế chi tiết lớp
2.3.1. Lớp Database
Project 1
- Các phương thức kết nối cơ sở dữ liệu được cài đặt trong lớp này. Những
phương thức này được gọi ngay khi chương trình khởi chạy.
- Nếu các thông số cấu hình trong file config.ini không phù hợp, giao diện của lớp Prefecense sẽ được gọi và yêu cầu người dùng nhập đúng thông tin để kết nối tới cơ sở dữ liệu mysql.
Các phương thức trong Database
setstate(Preferences)
o Đây là phương thức tạo kết nối từ chương trình tới cơ sở dữ liệu, nếu thất bại sẽ yêu cầu người dùng nhập lại đường dẫn, mật khẩu… để kết nối tới MySQL.
o Khi thành công, biến tĩnh stm của lớp sẽ là đối tượng thực hiện các truy vấn
MySQL cho toàn bộ các lớp trong chương trình.
createDatabase()
2.3.2. Lớp ImportExport
- Phương thức này tạo ra cơ sở dữ liệu là các bảng đã chỉ ra trong sơ đồ trên, nếu thất bại sẽ trả lại kết quả là false để các phương thức khác thực hiện các xử lí cần thiết. Phương thức sử dụng các câu lệnh “create schema”, tạo bảng “create table…”, “insert into…”, để tạo các bảng và một số dữ liệu ban đầu.
Đây là lớp chứa các phương thức xử lí dữ liệu đối với các bảng lưu trữ thông tin thu chi. Các câu lệnh truy vấn MySQL từ các bảng import_type và export_type thông qua biến stm của Database. Các phương thức thêm khoản thu/chi
insert(InfoImportExport) - Phương thức sẽ chèn thêm khoản thu chi dựa trên thông tin của
infoImportExport.
- Có hai phương thức được gọi dựa trên loại giao dịch là thu hay chi:
insert_import(InfoImport) và insert_export(InfoImport)
- Các phương thức sẽ dùng câu lệnh “insert into …” để chèn dữ liệu vào hai bảng importing và exporting, nếu thành công trả về true, nếu thất bại trả về false.
Các phương thức cập nhật khoản thu/chi
update(InfoImportExport)
16
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
- Phương thức sẽ cập nhật thông tin khoản thu chi dựa trên thông tin của
infoImportExport.
- Có hai phương thức được gọi dựa trên loại giao dịch là thu hay chi:
update_import(InfoImport) và update_export(InfoImport)
- Các phương thức sẽ dùng câu lệnh “update …” để thay đổi dữ liệu vào hai
bảng importing và exporting dựa vào điều kiện là trường id trong infoImportExport.
- Nếu thành công trả về true, nếu thất bại trả về false.
Các phương thức xóa khoản thu/chi delete(int id, boolean isImport)
- Phương thức sẽ xóa khoản thu chi dựa trên thông tin về id của khoản thu chi
và giao dịch là thu hay chi (biểu diễn bởi biến isImport).
- Có hai phương thức được gọi dựa trên loại giao dịch là thu hay chi:
delete_import(infoImport) và delete_export(infoImport)
- Các phương thức sẽ dùng câu lệnh “insert into …” để chèn dữ liệu vào hai bảng importing và exporting, nếu thành công trả về true, nếu thất bại trả về false.
Các phương thức lấy danh sách các danh mục chi tiêu
getExportTypeList(), getImportTypeList()
- Phương thức sẽ trả về danh sách các danh mục thu/chi để đưa vào các nút
lựa chọn trong các giao diện quản lí thu chi.
- Phương thức truy vấn thông tin trong bảng import_type và export_type.
Các phương thức quản lí thông tin bảng share
getShareListUserId(int id_transaction, int type) , getShareListUserName(int
id_transacstion, int type) - Hai phương thức trả về danh sách của những người dùng được nhìn thấy
giao dịch với id là tham số đầu tiên, tham số thứ hai xác định đó là thu hay chi. Kết quả được dùng trong hiển thị thông tin ở các lớp giao diện.
insertShare(int id_transaction, int user_id, int type) - Phương thức chèn thêm vào bảng share thông tin người dùng có id là user_id được nhìn thấy khoản giao dịch có id là tham số thứ nhất.
deleteShare(int transaction_id, int type)
- Phương thức xóa toàn bộ các hàng của bảng share có id của giao dịch và
loại giao dịch là hai tham số đầu vào. Điều này tương đương với việc thiết lập giao dịch đó không được nhìn thấy bởi bất kì người dùng nào.
Các phương thức lấy tên loại thu/chi và chỉ số loại thư mục getImportType(int id) và getImportTypeId(String type) getExportType(int id) và getExportTypeId(String type)
17
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
2.3.3. Lớp User
Project 1
Lớp chứa các phương thức quản lí người dùng, bao gồm:
Lấy tên người dùng theo id và lấy id theo tên người dùng
getUserId(String) và getUserName(int) - Phương thức thực hiện truy vấn trong bảng user với các câu lệnh “select…”
thông qua biến stm của Database.
Thiết lập thông tin cho đối tượng từ id
getInfofromId() - Các thuộc tính được thừa kế từ InfoUser sẽ được thiết lập dựa theo thuộc tính id (so sánh với khóa chính id trong bảng user của cơ sở dữ liệu để tìm ra người dùng tương ứng).
Thêm người dùng
addUser(InfoUser infoUser) - Phương thức thêm một người dùng mới vào bảng user bằng câu lệnh “insert
into user…” với thông tin trong infoUser.
- Nếu việc thêm thành công sẽ trả về giá trị true, ngược lại trả về false. Việc
thêm có thể thất bại do dữ liệu không đủ, trùng tên người dùng cũ…
Cập nhật thông tin người dùng
updateUser(InfoUser infoUser) - Phương thức sẽ cập nhật thông tin một người dùng với câu lệnh “update…”, thông tin về người dùng mới lưu trong infoUser, điều kiện update là tìm được người dùng có id trùng với id trong infoUser.
- Nếu cập nhật thành công, giá trị trả về là true, ngược lại là false.
Xóa người dùng
deleteUser(int id) - Phương thức xóa người dùng có id là tham số đầu vào. - Việc xóa thông qua câu lệnh “delete from user where …”. - Nếu xóa thành công sẽ trả về true, nếu thất bại trả về false.
18
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
CHƯƠNG 3. CÔNG NGHỆ VÀ THUẬT TOÁN SỬ DỤNG
3.1. Các công nghệ được sử dụng
3.1.1. Công nghệ Java
Việc lập trình tạo lập một chương trình cần sự hợp tác của nhiều người, việc kiểm soát mã nguồn hết sức quan trọng vì vậy một công cụ edit và biên dịch tốt sẽ là ưu tiên để nhóm sử dụng
Chương trình quản lý chi tiêu trong gia đình cần cung cấp các form để người sử dụng nhập thông tin và thống kê thông tin vì vậy việc tạo giao diện cho chương trình cũng là một công việc chiếm nhiều thời gian và một công cụ có khả năng hỗ trợ tạo lập giao diện là ưu tiên để nhóm sử dụng
Từ hai vấn đề trên nhóm em đã quyết định sử dụng công cụ lập trình java
3.1.2. Cơ sở dữ liệu
netbeans (công cụ hết sức phổ biến)
Quản lý chi tiêu đòi hỏi phải sử dụng hệ quản trị cơ sở dữ liệu để lưu trữ và truy
vấn thông tin một cách hiệu quả
Ngôn ngữ lập trình và các thư viện hỗ trợ tốt cho hệ quản trị đó
Chúng em đã sử dụng hệ quản trị cơ sở dữ liệu mySQL, vì nó đáp ứng được 2
3.2. Kiến thức áp dụng để xây dựng chương trình
3.2.1. Cơ sở dữ liệu
yêu cầu trên
Áp dụng các kiến thức thiết kế xây dựng và chuẩn hóa cơ sở dữ liệu để xây dựng các bảng lưu trữ thông tin cần thiết
Sử dụng ngôn ngữ truy vấn sql để thao tác lấy,thêm, xóa, sửa dữ liệu người dùng Sử dụng thư viện để kết nối đến mysql từ đó có thể thao tác với csdl bằng các câu lệnh trong java
19
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
3.2.2. Thiết kế giao diện xử lý sự kiện, tạo mã nguồn
Project 1
Chương trình được xây dựng dựa trên thư viện giao diện đồ họa swing, và hướng
model,view,control Dễ dàng hiển thị dữ liệu, thực hiện các câu lệnh qua xử lý bắt sử kiện do đó dễ dàng cho việc tạo lập các chức năng cho chương trình
Kiểm soát được những thao tác của người dùng một cách dễ dàng Phân chia công việc cho nhiều người làm những chức năng khác nhau một cách thuận tiện Sử dụng thư viện hỗ trợ để hiển thị biểu đồ cột, biểu đồ tròn
Vận dụng kỹ thuật lập trình hướng đối tượng để xây dưng các lớp, các phương thức xử lý lấy và cho hiển thị ra.
20
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
CHƯƠNG 4. XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA
4.1. Giao diện chương trình
4.1.1. Login , Preferences
Chức năng thiết lập liên kết đến Mysql và tạo lập cở sở dữ liệu
Người dùng có quyền tạo cơ sở dữ liệu theo tên do người dùng đặt, các thông tin về url,database name, userName và passWord sẽ được lưu trong file config.ini
Mỗi khi chương trình được khởi chạy nó sẽ đọc thông tin từ file config.ini để kết
nối với csdl, nếu thông tin không chính xác hoặc không tồn tại file config.ini thì nó sẽ hiện hộp thoại thông báo người dùng vào Preferences cấu hình cho csdl
Người dùng có thể sử dụng chức năng tạo cơ sở dữ liệu mẫu để chương trình tạo sẵn một bộ dữ liệu mẫu , người dùng có thể dễ dàng kiểm tra các tính năng của chương trình
21
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
4.1.2. MainUI
Project 1
Frame MainUI hiển thị những thông tin chung về tổng thu chi, và các chức kết nối đến các chức năng cho phép người dùng thao tác với csdl để lưu lại thông tin về thu chi
Add : thêm thu chi Statistics : thống kê thu chi Account : quản lý thông tin tài khoản Category : Thêm xóa sửa các loại thu,chi và các loại khoản chi chung(project) Project : tạo , tham gia đóng góp, các khoản chi chung
22
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
4.1.3. Category manager
Project 1
Thêm xóa hoặc sửa các loại thu(income),chi(expense) hoặc loại dự án(project)
Add category:
Thêm một loại vào trong csdl tương ứng với các bảng import_type,export_type,
project_type với hai trường : id và name
Cho phép thêm ảnh kèm với category, ảnh sẽ được lưu trữ trong thư mục tương ứng icon/import_type ; icon/export_type hoặc icon/project_type tương ứng
Remove category:
Không thể xóa category nếu nó đã được sử dụng trong cơ sở dữ liệu liên kết
đến các khoản thu chi, project của người dùng
Update category:
Cho phép thay đổi tên và hình ảnh tương ứng
23
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
4.1.4. Account manager
Project 1
Quản lý, hiển thị thông tin của những người sử dụng
Lưu trữ:
Thông tin về người dùng được lưu trữ trong bản user, dữ liệu ảnh đại diện được lưu trữ trong thư mục data/account với tên trùng với id người dùng,đuôi mở rộng là .jpg
Chức năng :
Người dùng có quyền xem thông tin của mọi người dùng, có quyền sửa đổi
thông tin của chính mình
4.1.5. Transaction
Chỉ có admin mới có quyền thêm và xóa người dùng Dữ liệu thu chi của người dùng sẽ được giữ nguyên sau khi xóa người sử dụng
Add transaction
24
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
Add Transaction: thêm các khoản thu và chi của từng thành viên Lựa chọn Income(khoản thu), Expense(khoản chi) và chọn các Category(nhóm,
loại) tương ứng cùng các thông tin về số tiền(Amount) , thông tin chú tích(Destiption), thông tin về khoản thu chi(info), có thể có tùy chọn thêm ảnh
Ảnh sẽ được lưu vào thư mục data/income(ứng với khoản thu) và
data/expense/(ứng với khoản chi) với kích thước cố định đã được resize 640-480, tên ảnh trùng với tên id của Transaction với đuôi mở rộng là .jpg
Chia sẻ thông tin:
Bên cạnh đó người dùng có thể có chức năng chia sẻ thông tin với người sử dụng khác bằng việc click chọn vào checkbox share và chọn trong danh sách những người dùng khác :những người muốn chia sẻ
Thông tin chia sẻ sẽ được lưu vào bảng share(transaction_id,type_id,user_id)
trong đó
o transaction_id là id của thu(ứng với type_id=1) hoặc id của chi(ứng với
type_id=2)
o user_id là id của người được share bao gồm cả người tạo thu/chi (mặc
định)
Dữ liệu được chia sẻ sẽ được hiện thị trong phần thống kê của những người sử
dụng
Update Transaction
Update transaction cho phép sửa đổi thông tin của khoản thu(income),
chi(expense) của hàng tương ứng trong frame thống kê, chương trình sẽ cập nhật lại các giá trị trong các bảng share, và importing/exporting ứng với dữ liệu được sửa đổi, và cập nhật lại hình ảnh trong thư mục nếu có sự thay đổi Người sử dụng không được phép cập nhật thông tin của người khác,Chỉ có
admin có quyền xóa dữ liệu của mọi người
Delete Transaction
Delete transaction cho phép xóa dữ liệu thu,chi Người sử dụng không được phép xóa dữ liệu của người khác, chỉ có admin có
quyền xóa thông tin của mọi người
25
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
4.1.6. Project
Add Project
Cho phép tạo lập một khoản chi chung
Category : loại hình chi chung (vd: tivi,tủ lạnh,nhà ..) có thể thêm loại hình
trong frame quản lý category
Start Day: ngày bắt đầu : luôn luôn là ngày hiện tại End Day : ngày hết hạn, quá này này thì ng dùng không thể đóng góp tiền và dự
án sẽ bị đóng băng
Description miêu tả về loại dực án, info để miêu tả về các thông tin cụ thể của
dự án đó
Cost : giá trị mà dự án đó cần Contribute : giá trị đóng góp mà người khởi tạo sẽ cho vào dự án
Lưu trữ thông tin
Các thông tin category_id,startday,endday,description,info,owner(id người
tạo),cost,contribute_id(liên kết đến bảng project_contribute) sẽ được lưu vào bảng project
Thông tin về sự đóng góp của các thành viên sẽ được lưu trong bàng
project_contribute(project_id,user_id,contribute)
o Project_id : id của project ng sử dụng tham gia đóng góp o User_id : id người tham gia o Contribute giá trị mà người đó đóng góp
View Project
26
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
Hiển thị thông tin về những project đã được tạo
Hiển thị:
Hiển thị số tiền còn thiếu, giá trị đóng góp của từng thành viên trong một dự án Lọc theo thời gian bắt đầu của dự án, và lọc theo trạng thái của dự án(gây
quỹ,hoàn thành hoặc không hoàn thành)
Cho phép sắp xếp theo từng cột trong bảng bằng việc click vào tên cột
Chức năng:
Người tạo dự án sẽ có chức năng khởi động dự án và xóa dự án đồng thời có
thể đóng góp thêm vào dự án
Người tham gia vào dự án mà không phải là người tạo dự án thì sẽ không thể
khởi động và xóa dự án
Dự án sau khi được khởi động, thì lập tức chương trình sẽ tự động tạo một
khoản chi tiêu trong dữ liệu của người dùng với giá trị bằng với giá trị đóng góp của người dùng và có project_id: id của project vừa khởi động,
Dự án là một khoản chi của mỗi người dùng nó được share với tất cả người
dùng,vì vậy chương trình sẽ thêm dữ liệu vào bảng share khi khởi động dự án
27
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
4.1.7. Statistics
Project 1
Hiển thị chi tiết dữ liệu thu chi của người dử dụng
Chức năng:
Lọc dữ liệu của người dùng theo category, date, month, year, value, account,
description, info
Lọc dữ liệu
Hiển thị dữ liệu của được share của người sử dụng
28
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
Người dùng có thể không sử dụng(inactive), lọc theo những giá trị được chọn và phạm vi giá trị(include) hoặc lọc theo những giá trị không nằm trong phạm
vi giá trị đã chọn
Cho phép chọn hàng dữ liệu để chỉnh sửa và xóa(không thể xóa dữ liệu của
người sử dụng khác, trừ admin)
Chuột phải trên các hàng đã chọn để chỉnh sửa hoặc xóa
Hiển thị dữ liệu theo biểu đồ cột, biểu đồ tròn
Hiển thị dữ liệu theo từng năm, của nhiều người dùng, hoặc theo từng tháng trong một năm hay theo từng loại trong một tháng
29
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
4.2. Kết quả chương trình minh họa
Hiển thị dữ liệu so sánh tương quan giữa các năm, các tháng các loại của tường người dùng
Thiết kế cơ sở dữ liệu tốt, dễ dàng cho việc truy vấn, tránh được dư thừa dữ liệu Cho phép tạo lập cơ sở dữ liệu, và dữ liệu mẫu để người dùng kiểm tra tính năng
của chương trình
Mô hình hóa các lớp điều khiển, xử lý tập trung và phần quyền người dùng Quản lý các giao dịch của từng các nhân và quản lý được thông tin chia sẻ giữa các
account
Quản lý các khoản chi chung của các thành viên Lưu trữ thông tin hình ảnh cho các giao dịch, và cho phép sửa đổi, và xóa thông tin Lọc thông tin và hiển thị thông tin chi tiết , trực quan
30
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Kết luận
+) Trong thời gian thực hiện dự án, nhóm chúng em đã thực hiện được các công
việc như sau: + Thiết kế hệ thống khá hoàn chỉnh để quản lý chi tiêu trong gia đình với các chức năng cơ bản khá hoàn thiện. Hệ thống cho phép quản lí, thống kê chi tiêu cá nhân và cũng cho phép quản lí các khoản chi tiêu chung của gia đình. + Cài đặt thành công chương trình thực hiện đúng các chức năng đã thiết kế, chương trình chạy tốt, có xử lí ngoại lệ do dữ liệu của người dùng nhập vào. + Rèn luyện kĩ năng làm việc nhóm, biết cách phân chia công việc nhóm hợp lý để mọi người phát huy được điểm mạnh của mình. + Học tập, củng cố các kiến thức cơ bản về thiết kế hệ thống, lập trình với công nghệ Java.
+) Ưu điểm:
+ Chương trình mô tả khá sát các yêu cầu của đề tài, + Chương trình chạy mượt, xử lí hầu hết ngoại lệ, tránh đổ vỡ chương trình, đảm bảo tính toàn vẹn dữ liệu khi người dùng thao tác. + Hoàn thành bài tập đúng hạn, nộp đầy đủ các tài liệu yêu cầu. +) Nhược điểm + Chương trình đòi hỏi máy tính cài đặt sẵn phần mềm MySQL, nếu không có thì không thực hiện được. + Việc yêu cầu người dùng nhập đường dẫn trong lần chạy đầu tiên có thể là khó đối với những người dùng không am hiểu về MySQL + Giao diện chủ yếu là các đối tượng giao diện cơ bản của java, chưa có nhiều cải tiến về mặt hình ảnh hiển thị. + Chưa có chức năng quản lí các khoản vay/nợ của người dùng.
31
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Hướng phát triển
Project 1
Để tiếp tục hoàn thiện sản phẩm để ứng dụng trong thực tế, nhóm em có một số đề xuất về hướng phát triển cho sản phẩm như sau:
- Xây dựng các module để tạo cơ sở dữ liệu không phụ thuộc vào các phần mềm trên máy tính người dùng. Việc này làm tăng tính độc lập của sản phẩm, tăng tính thuận tiện khi cài đặt và không cần yêu cầu kiến thức của người dùng về MySQL.
- Xây dựng lại các lớp giao diện theo hướng thân thiện với người dùng hơn,
bổ sung các hình ảnh và bố trí các đối tượng giao diện hợp lí hơn.
- Thêm tính năng quản lí các khoản vay nợ cho người dùng để việc quản lí
vay nợ trở nên dễ dàng hơn.
32
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
TÀI LIỆU THAM KHẢO
Slide bài giảng Lập trình hướng đối tượng – Cô Vũ Thị Hương Giang – 2013
[1] [2] Mã nguồn mở một số chương trình – Thầy Nguyễn Ngọc Dũng Nguyên lí của các hệ cơ sở dữ liệu – Cô Nguyễn Kim Anh [3] System Analysis and Design – Kendall [4]
33
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15
Project 1
PHỤ LỤC
Hướng dẫn cài đặt: Yêu cầu máy đã cài đặt nền tảng nền tảng Java JDK và phần mềm hệ quản trị cơ sở dữ liệu MySQL. Cách 1: Chạy chương trình đã đóng gói: Chạy file Quanlychitieu.jar trong thư mục Build program. Cách 2: Build project bằng java netbean Mở Netbeans, phiên bản 7.4 trở lên để xem đầy đủ thông tin Project. Chọn File Open Project chọn project Project 1 – nhom4 Click nút build và chạy chương trình. Hướng dẫn sử dụng: Trong lần khởi chạy đầu tiên, chương trình sẽ yêu cầu nhập đường dẫn và tài khoản, mật khẩu kết nối tới cơ sở dữ liệu MySQL, người dùng cần nhập đúng để kết nối thành công tới cơ sở dữ liệu. Sau đó một tài khoản người dùng đầu tiên là tài khoản admin sẽ được tạo với tên là “hien” và mật khẩu “hien”, người dùng sẽ đăng nhập với quyền admin. Khi đăng nhập với quyền admin, người dùng có tạo ra các người dùng bình thường khác. Khi đăng nhập với bất kì tài khoản nào nào, người dùng cũng có thể thay đổi tên, mật khẩu và các thông tin khác của mình, sau đó tiến hành các công việc quản lí chi tiêu của bản thân và tạo các khoản chi chung của gia đình.
34
Nhóm 04 - Lớp Project 1 K56 65310 – Đề tài 15