Saturday, December 19, 2009

Ứng dụng Quản lý chi tiêu (P.9)

1.1. Thiết kế giao diện

1.1.1. MainForm



1.1.2. LoginForm




 

1.1.3. InputDailyInforForm





1.1.4. FinishInforForm



1.1.5. StatisticForm


1.1.6. ChartForm



1.1.7. AccountInforForm


1.1.8. UserManagerForm


Ứng dụng Quản lý chi tiêu (P.8)

1.1. Thiết kế các gói



1.2. Thiết kế dữ liệu


 

1.2.1.1.User

- Bảng dữ liệu người dùng
- Các trường
o UserName
§ Tên đăng nhập
§ Kiểu Tex t, độ dài 8
§ Không có ký tự trắng
§ Là khóa chính
o Password
§ Mật khẩu đăng nhập
§ Kiểu Tex t, được mã hóa MD5, độ dài 40 cho chuỗi mã hóa này
o Nam e
§ Tên người dùng
§ Tex t, độ dài 20
o Role
§ Nhóm vai trò: admin (0) hoặc editor (1)
§ Kiểu Byte

1.2.1.2.DailyInfor

- Bảng dữ liệu thông tin chi tiêu hằng ngày
- Các trường
o DateID
§ Mã số ngày, định dang ddmmyyyy
§ Text, 8 kí tự
§ Là khóa chính
o Note
§ Ghi chú trong ngày
§ Tex t, độ dài 200
o ModifiedUser
§ Tên đăng nhập của người cập nhật lần cuối
§ Tex t, độ dài 8

1.2.1.3.MonthlyInfor

- Bảng dữ liệu thu nhập hằng tháng
- Các trường
o Mont h
§ Tháng, định dang mmyyyy
§ Tex t, độ dài 6
§ Khóa chính
o TotalInput
§ Tổng thu nhập
§ Kiểu Integer
o PreSpending
§ Chi trước trong tháng
§ Kiểu Integer
o Note
§ Ghi chú
§ Tex t, độ dài 200

1.2.1.4.SpendingInfor

- Bảng dữ liệu từng thông tin chi tiêu
- Các trường
o Date
§ Ngày ddmmyyyy
§ Tex t, độ dài 8
§ Khóa chính
o ContentID
§ ID nội dung chi tiêu
§ Integer
§ Khóa chính
o Cos t
§ Giá
§ Integer
o Note
§ Ghi chú
§ Tex t, độ dài 200

1.2.1.5.Content

- Bảng dữ liệu lưu từng mục nội dung chi tiêu
- Các trường
o ContentID
§ ID nội dung chi tiêu
§ Integer, tự động tăng
§ Khóa chính
o Nam e
§ Tên nội dung
§ Tex t, độ dài 100

Ứng dụng Quản lý chi tiêu (P.7)

1. Thiết kế hệ thống

1.1. Biểu đồ lớp toàn hệ thống




1.2. Đặc tả các lớp

1.2.1. Các lớp entity



 

1.2.1.1.SpendingInfor

- Là lớp đại diện cho từng mục chi tiêu trong một ngày
- Thuộc tính chính
o Content: nội dung chi tiêu
o Cost: chi phí
o Note: ghi chú
o isNew: thông tin mới hay được sửa lại (sử dụng khi cập nhật hoặc thêm mới thông tin)
- Phương thức chính
o SpendingInfor: hàm tạo

1.2.1.2.DailyInfor:

- Là lớp đại diện cho thông tin chi tiêu hằng ngày.
- DailyInfor chứa một danh sách các SpendingInfor
- Thuộc tính chính
o Date: mã ngày tháng
o Spendings: danh sách các thông tin chi tiêu trong ngày
o Total: tổng chi phí trong ngày
o Note: ghi chú
o ModifiedUser: người cập nhật sau cùng
- Phương thức chính
o DailyInfor: hàm tạo

1.2.1.3.MonthlyInfor

- Là lớp đại diện cho thông tin thu nhập của một tháng
- Thuộc tính chính
o TotalInput: thu nhập trong tháng
o preSpending: chi tiêu trước, không thuộc một ngày nào cả
o Note: ghi chú
o modifiedUser: người cập nhật sau cùng
- Phương thức chính
o Mont hlyInfor: hàm tạo

1.2.1.4.User

- Là lớp đại diện cho thông tin của một người sử dụng ứng dụng
- Thuộc tính chính
o Name: họ tên của người dùng
o Username: tên đăng nhập
o Password: mật khẩu đăng nhập
o Role: nhóm người dùng
- Phương thức chính
o User: hàm tạo

1.2.2. Các lớp UI

Các lớp form, tương tác với người sử dụng



1.2.2.1.LoginObserver

- Là một interface, áp dụng mẫu thiết kế Ob server định nghĩa một phương thức lắng nghe sự kiện đăng nhập hệ thống
- Phương thức chính
o LoginResponse(User)

1.2.2.2.LoginForm

- Là form trình bày các giao diện cho chức năng đăng nhập hệ thống
- Áp dụng mẫu thiết kế Ob server, nên form này có một thuộc tính observer: LoginObserver
- Thuộc tính chính
o Observer: đối tượng lắng nghe sự kiện đăng nhập
- Phương thức chính
o LoginForm(LoginObserver): hàm tạo với tham số là một LoginObserver
o Show: hiển thị form
o Login_Button_Click: sự kiện khi người dùng chọn đồng ý đăng nhập
o Validate: thẩm định lại dữ liệu trước khi đăng nhập (tránh các lỗi SQL Injection, …)

1.2.2.3.AccountInforObserver

- Là một interface, áp dụng mẫu thiết kế Observer định nghĩa một phương thức lắng nghe sự kiện thay đổi thông tin người dùng đang sử dụng ứng dụng
- Phương thức chính
o GetUserInfor(): lấy thông tin người dùng
o UpdateUserInfor(): cập nhật lại thông tin người dùng

1.2.2.4.AccountInforForm

- Là form trình bày các giao diện cho chức năng thay đổi thông tin cá nhân người sử dụng
- Thuộc tính chính
o Ob server: đối tượng giám sát các thay đổi cũng như lấy thông tin liên quan đến người dùng đang đăng nhập ứng dụng
- Phương thức chính
o AccountInforForm(AccountInforObserver): hàm tạo với tham số là một AccountInforObserver
o Show: hiển thị form
o Save_Button_Click: sự kiện người dùng chọn đồng ý lưu thông tin
o ShowResult: hiển thị kết quả cho người dùng

1.2.2.5.MainForm

- Là form chính của ứng dụng, form này điều tiết các form con khác
- Main Form thực thi 2 giao tiếp LoginObserver và AccountInforObserver
- Thuộc tính chính
o frmInputInfor: form nhập thông tin
o frmFinishInfor: form nhập thông tin hằng tháng
o frmStatisticInfor: form thống kê
o frmAccountInfor: form quản lý thông tin cá nhân
o currentUser: người dùng đăng nhập ứng dụng
o frmUserManager: form quản lý người dùng
- Phương thức chính
o AddInforMenuItem_Click: sự kiện menu nhập thông tin được chọn
o FinishInforMenuItem_Click: sự kiện menu nhập thông tin hằng tháng được chọn
o StatisticMenuItem_Click: sự kiện menu thống kê thông tin được chọn
o Login_Menu_Click: sự kiện menu đăng nhập thông tin được chọn
o Change_Account_Menu_Click: sự kiện menu thay đổi thông tin cá nhân được chọn
o UserManager_Menu_Click: : sự kiện menu quản lý người dùng được chọn
o Logout_Menu_Click: sự kiện menu đăng xuất được chọn
o ToTray_Menu_Click: sự kiện menu ẩn ứng dụng được chọn
o Restore_Menu_Click: sự kiện menu hiện ứng dụng từ khay hệ thống được chọn
o GetUserInfor: trả về thông tin người dùng đang đăng nhập ứng dụng
o LoginResponse: xử lý sự kiện đăng nhập thành công hay thất bại
o UpdateUserInfor: xử lý sự kiện cập nhật thông tin người dùng đang đăng nhập ứng dụng
o SetVisibleMenu: xử lý ẩn/hiện một số menu theo vai trò của người đang dùng ứng dụng
o LogoutConfirm: xử lý xác nhận lại yêu cầu đăng xuất của người dùng
o Logout: xử lý đăng xuất
o ToTray: ẩn ứng dụng
o Restore: hiện ứng dụng

1.2.2.6.InputDailyInforForm

- Là form cho phép người dùng nhập thông tin chi tiêu hằng ngày
- Thuộc tính chính
o dailyInfor: thông tin chi tiêu hiện tại của form
- Phương thức chính
o InputDailyInforForm: hàm tạo
o Show: hiển thị form
o Validate: thẩm định dữ liệu
o ShowResult: hiển thị kết quả khi lưu thông tin
o DisplayDailyInfor: hiển thị thông tin chi tiêu của ngày mà người dùng chọn
o SetDailyInfor: thiết lập thông tin chi tiêu hiện tại trên form

1.2.2.7.FinishInforForm

- Là form cho phép thao tác nhập các thông tin cuối tháng
- Thuộc tính chính
o mont hlyInfor: thông tin thu nhập hằng tháng
- Phương thức chính
o FinishInforForm: hàm tạo
o Show: hiển thị form
o Validate: thẩm định dữ liệu
o ShowResult: hiển thị kết quả khi lưu thông tin
o DisplayMonthlyInfor: hiển thị thông tin thu nhập tháng lên form


1.2.2.8.StatisticForm

- Là form thực hiện chức năng thống kê chi tiêu
- Thuộc tính chính
o frmChartInfor: form vẽ biểu đồ
- Phương thức chính
o StatisticForm: hàm tạo
o Show: hiển thị form
o Staistic_Button_Click: sự kiện người dùng đồng ý thống kê

1.2.2.9.ChartForm

- Là form vẽ biểu đồ cột thống kê
- Thuộc tính chính
o statisticInfor: danh sách các thông tin chi tiêu dùng để vẽ biểu đồ
- Phương thức chính
o ChartForm: hàm tạo với tham số là danh sách các thông tin chi tiêu để vẽ biểu đồ
o Show: hiển thị form
o ViewDetailInfor: xem chi tiết một thông tin tiêu dùng
o InforColumn_Click: sự kiện một cột trên biểu đồ được chọn

1.2.2.10. UserManagerForm

- Là form quản lý thông tin người dùng
- Phương thức chính
o UserManagerForm:; hàm tạo
o InitListUser: khởi tạo danh sách người dùng có trong hệ thống
o Show: hiển thị form
o DisplayToAdd: hiển thị thông tin cho việc tạo mới người dùng
o DisplayUserToEdit: hiển thị thông tin người dùng để cập nhật
o Validate: thẩm định dữ liệu
o DisplayResult: hiển thị kết quả lưu thông tin
o DeleteConfirm: xác nhận lại yêu cầu xóa người dùng
o ListItem_Selected: sự kiện một Item (user) được chọn ở trên list
o AddUser_Button_Click: sự kiện tạo mới người dùng được chọn
o SaveUser_Button_Click: sự kiện lưu thông tin
o DeleteUser_Button_Click: sự kiện xóa người dùng


1.2.3. Processor

Các lớp liên quan đến chức năng xử lý


1.2.3.1.Connector

- Là lớp đóng vai trò quản lý kết nối với CSDL
- Áp dụng mẫu thiết kế Singleton cho lớp Conn ector
- Thuộc tính chính
o Connector: đối tượng tĩnh quản lý toàn bộ thông tin kết nối
- Phương thức chính
o Connector: hàm tạo private
o GetConnector: trả về đối tượng quản lý kết nối
o CloseConnector: đóng kết nối

1.2.3.2.DbProcessor

- Là lớp đóng vai trò xử lý tất cả các thao tác liên quan đến CSDL
- Phương thức chính
o SaveDailyInfor: lưu thông tin chi tiêu hằng ngày
o SaveMonthlyInfor: lưu thông tin thu nhập hằng tháng
o StatisticDailyInfor: thống kê thông tin chi tiêu
o SaveNewContent: lưu một nội dung chi tiêu mới
o CreateMonthIfNoExist: tạo thông tin một tháng mới
o Login: đăng nhập ứng dụng
o GetQueryResult: thực hiện một câu truy vấn và nhận kết quả trả về
o ExecQuery: thực hiện một câu truy vấn không nhận kết quả trả về
o SaveUserInfor: lưu thông tin người dùng
o GetListOfUser: trả về danh sách người dùng trong hệ thống
o DeleteUser: xóa thông tin một người dùng
o GetMonthlyInfor: lấy thông tin thu nhập một tháng

Ứng dụng Quản lý chi tiêu (P.6)

1.5. UC-008 Change own infor



1.6. UC-009 Add user



 

1.7. UC-010 Change user



1.8. UC-0011 Delete user





1.9. UC-0012 Logout



1.10. UC-013 To system tray


Ứng dụng Quản lý chi tiêu (P.5)

Giai đoạn phân tích và thiết kế hệ thống



1. Phân tích

Các biểu đồ tuần tự theo một số Use case chính của hệ thống

1.1. UC-001 Login



1.2. UC-002 Input daily infor & UC-006 View infor



 

1.3. UC-003 Finish monthly infor



1.4. UC-004 Statistic spending infor & UC-005 Draw chart


Ứng dụng Quản lý chi tiêu (P.4)

2.8. UC-008 Change own infor

2.8.1. Tóm tắt

- Người dùng chọn chức năng sửa thông tin cá nhân

2.8.2. Tiền điều kiện

- Thực hiện UC-001 Login

2.8.3. Hậu điều kiện

2.8.4. Luồng sự kiện

2.8.4.1.Luồng cơ bản

Bước
Đặc tả
1
Người dùng chọn chức năng cập nhật thông tin cá nhân
2
Hệ thống hiển thị giao diện quản lý thông tin cá nhân, với các thông tin của người dùng
3
Người dùng nhập thông tin và chọn lưu thông tin
4
Hệ thống lưu thông tin
5
Hiển thị thông báo thành công
6
Kết thúc UC

2.8.4.2.Luồng rẽ nhánh

2.8.4.2.1. Luồng thứ nhất

Bước
Đặc tả
1
Ứng dụng lưu thông tin có lỗi (CSDL)
2
Hiển thị thông báo lỗi
3
Kết thúc UC

2.8.4.2.2. Luồng thứ hai

Bước
Đặc tả
1
Người dùng hủy yêu cầu cập nhât
2
Hiển thị giao diện chính
3
Kết thúc UC

2.9. UC-009 Add user

2.9.1. Tóm tắt

- Người dùng chọn chức năng tạo mới người dùng cho ứng dụng

2.9.2. Tiền điều kiện

- Thực hiện UC-001 Login
- Người dùng đăng nhập thuộc nhóm Admin

2.9.3. Hậu điều kiện

2.9.4. Luồng sự kiện

2.9.4.1.Luồng cơ bản

Bước
Đặc tả
1
Trên giao diện quản lý người dùng, chọn chức năng tạo người dùng
2
Hệ thống hiển thị giao diện : username, pass, tên, nhóm
3
Người dùng nhập thông tin và chọn lưu thông tin
4
Hệ thống lưu thông tin
5
Hiển thị thông báo thành công
6
Kết thúc UC

2.9.4.2.Luồng rẽ nhánh

2.9.4.2.1. Luồng thứ nhất


Bước
Đặc tả
1
Ứng dụng lưu thông tin có lỗi (CSDL)
2
Hiển thị thông báo lỗi
3
Kết thúc UC

2.9.4.2.2. Luồng thứ hai


Bước
Đặc tả
1
Người dùng hủy yêu cầu tạo mới người dùng
2
Hiển thị giao diện chính
3
Kết thúc UC

 

2.10. UC-010 Change user

2.10.1. Tóm tắt

- Người dùng chọn chức năng thay đổi thông tin người dùng cho ứng dụng

2.10.2. Tiền điều kiện

- Thực hiện UC-001 Login
- Người dùng đăng nhập thuộc nhóm Admin

2.10.3. Hậu điều kiện

2.10.4. Luồng sự kiện

2.10.4.1. Luồng cơ bản

Bước
Đặc tả
1
Trên giao diện quản lý người dùng, chọn chức năng thay đổi thông tin người dùng
2
Hệ thống hiển thị giao diện
3
Người dùng nhập thông tin và chọn lưu thông tin
4
Hệ thống lưu thông tin
5
Hiển thị thông báo thành công
6
Kết thúc UC

2.10.4.2. Luồng rẽ nhánh

2.10.4.2.1. Luồng thứ nhất

Bước
Đặc tả
1
Ứng dụng lưu thông tin có lỗi (CSDL)
2
Hiển thị thông báo lỗi
3
Kết thúc UC

2.10.4.2.2. Luồng thứ hai

Bước
Đặc tả
1
Người dùng hủy yêu cầu thay đổi thông tin người dùng
2
Hiển thị giao diện chính
3
Kết thúc UC

2.11. UC-011 Delete user

2.11.1. Tóm tắt

- Người dùng chọn chức năng xóa thông tin người dùng cho ứng dụng

2.11.2. Tiền điều kiện

- Thực hiện UC-001 Login
- Người dùng đăng nhập thuộc nhóm Admin

2.11.3. Hậu điều kiện

2.11.4. Luồng sự kiện

2.11.4.1. Luồng cơ bản

Bước
Đặc tả
1
Trên giao diện quản lý người dùng, chọn chức năng xóa thông tin người dùng
2
Hệ thống hiển thị giao diện
3
Người dùng chọn user cần xóa, thực hiện xóa
4
Hệ thống xác nhận lại yêu cầu và xóa thông tin
5
Hiển thị thông báo thành công
6
Kết thúc UC

2.11.4.2. Luồng rẽ nhánh

2.11.4.2.1. Luồng thứ nhất

Bước
Đặc tả
1
Ứng dụng lưu thông tin có lỗi (CSDL)
2
Hiển thị thông báo lỗi
3
Kết thúc UC

2.11.4.2.2. Luồng thứ hai

Bước
Đặc tả
1
Người dùng hủy yêu cầu xóa người dùng
2
Hiển thị giao diện chính
3
Kết thúc UC

2.12. UC-012 Logout

2.12.1. Tóm tắt

- Người dùng sau khi đã đăng nhập, chọn chức năng đăng xuất khỏi ứng dụng để khóa một số chức năng: cập nhật tin, quản lý user…

2.12.2. Tiền điều kiện

- Thực hiện UC-001 Login

2.12.3. Hậu điều kiện

- Khóa một số chức năng: cập nhật tin, quản lý user…

2.12.4. Luồng sự kiện

2.12.4.1. Luồng cơ bản

Bước
Đặc tả
1
Trên giao diện chính, người dùng chọn chức năng Đăng xuất
2
Hệ thống xác nhận lại yêu cầu
3
Thực hiện đăng xuất
4
Kết thúc UC

2.12.4.2. Luồng rẽ nhánh

2.12.4.2.1. Luồng thứ nhất

Bước
Đặc tả
1
Người dùng hủy yêu cầu đăng xuất
2
Hiển thị giao diện chính
3
Kết thúc UC

2.13. UC-013 To system tray

2.13.1. Tóm tắt

- Người dùng chọn chức năng ẩn ứng dụng về khay hệ thống

2.13.2. Tiền điều kiện

2.13.3. Hậu điều kiện

2.13.4. Luồng sự kiện

2.13.4.1. Luồng cơ bản

Bước
Đặc tả
1
Trên giao diện chính, người dùng chọn chức năng ẩn ứng dụng
2
Ứng dụng chuyển về khay hệ thống
3
Kết thúc UC