Mô tảKhách hàng tìm kiếm thông tin phòng trọ phù hợp ở khu vực mình ở, chọn loại phòng, các loại dịch vụ phù hợp với nhu cầu và mức giá.Khách hàng phải cung cấp thông tin cho chủ trọ khi
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
Trang 2DANH SÁCH SINH VIÊN THAM GIA THỰC HỆN
Trang 3CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 1
CHƯƠNG 3: PHÂN TÍCH CHƯƠNG TRÌNH 7
1 Mô tả yêu cầu 7
2 Phân tích nhu cầu và dữ liệu 7
3.3 Chức năng báo cáo 8
4 Mô hình cơ sở dữ liệu 9
CHƯƠNG 4: THÀNH PHẦN CHƯƠNG TRÌNH 13
1 Danh mục giao diện 13
1.1 Thanh chức năng 15
Trang 4PHỤ LỤC – BẢNG PHÂN CÔNG NHIỆM VỤ TRONG NHÓM 33
TÀI LIỆU THAM KHẢO 34
Trang 5CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 1 Lí do chọn đề tài
Trước đây, quản lí nhà trọ thường phụ thuộc vào các công cụ và quy trình thủ công như viết tay, sử dụng giấy tờ, sổ sách để ghi nhận thông tin khách hàng, lập bảng kê thu chi, và quản lí phòng trống Nhưng với sự phát triển của công nghệ thông tin hiện nay thì chúng ta cần một giải pháp nhanh chóng, tiết kiệm thời gian và hiệu quả hơn.
Xây dựng một phần mềm quản lí nhà trọ là một lựa chọn hợp lý và cần thiết để đáp ứng nhu cầu ngày càng tăng về nhà trọ trong xã hội hiện đại Phần mềm này giúp tổ chức và quản lí các thông tin về khách hàng, phòng trống, đặt phòng, thu tiền và quản lí tài chính một cách hiệu quả và tự động hóa Điều này không chỉ giúp tiết kiệm thời gian và công sức cho nhà quản lí, mà còn đảm bảo tính chính xác và tin cậy trong các hoạt động kinh doanh Bên cạnh đó, phần mềm cũng mang lại sự tiện lợi cho khách hàng khi cho phép họ dễ dàng đặt phòng, thanh toán và theo dõi tình hình thuê trọ.
Vì thế, sau khi có kiến thức môn lập trình Window, nhóm chúng em quyết định xây dựng “Phần mềm quản lí nhà trọ”.
2 Mục tiêu phát triển
Xây dựng phần mềm cung cấp đầy đủ thông tin người thuê, về loại phòng thuê, khu vực thuê, tình trạng phòng thuê và các dịch vụ đi kèm phòng thuê đó Quản lí được doanh thu, các hợp đồng cho nhà trọ.
Giúp cho việc quản lí nhà trọ trở nên dễ dàng, thuận tiện hơn, giảm thiểu tính thủ công, chân tay Mang lại hiệu quả cho việc quản lí thu chi mỗi tháng của nhà trọ Phần mềm xây dựng cần mang tính trực quan, tối ưu và dễ sử dụng 3 Đối tượng
- Người chủ khách trọ - Khách thuê trọ
1
Trang 64 Mô tả
Khách hàng tìm kiếm thông tin phòng trọ phù hợp ở khu vực mình ở, chọn loại phòng, các loại dịch vụ phù hợp với nhu cầu và mức giá.
Khách hàng phải cung cấp thông tin cho chủ trọ khi đăng kí thuê phòng như: họ tên, năm sinh, chứng minh nhân dân, địa chỉ,… và chủ trọ sẽ nhập, lưu trữ các thông tin của khách hàng trên hệ thống.
Chủ trọ cung cấp thông tin của phòng trọ và các dịch vụ liên quan, thông báo về tiền đặt cọc và lập hợp đồng cho thuê.
Thêm thông tin người thuê trên hệ thống để quản lí.
Tra cứu, thêm, cập nhật thông tin khách hàng, trạng thái phòng Xóa thông tin khi người thuê rời đi.
Chủ trọ xuất hóa đơn tiền phòng, tiền điện, quản lí doanh thu hàng tháng.
2
Trang 7CHƯƠNG 2: CƠ SỞ LÍ THUYẾT 1 Mô hình 3 tầng
Hình 1: Mô hình 3 tầng
Mô hình 3 tầng, trong tiếng Anh được gọi là "Three-Tier Architecture", là một mô hình phát triển phần mềm phổ biến trong xây dựng ứng dụng Các tầng trong mô hình 3 tầng bao gồm:
Tầng giao diện người dùng (Presentation Layer): Tầng này chịu trách nhiệm hiển thị thông tin và tương tác với người dùng Nó tương tác trực tiếp với người dùng thông qua các giao diện như giao diện đồ họa (GUI) Tầng này chủ yếu chứa các thành phần giao diện người dùng như form, menu, nút bấm,…
Tầng Logic (Business Layer): Tầng logic là nơi chứa các luật và quy tắc kinh doanh của ứng dụng Nó xử lý các yêu cầu từ tầng giao diện người dùng, thực hiện các nghiệp vụ và quyết định logic liên quan đến dữ liệu và quy trình kinh doanh Tầng này có thể bao gồm các lớp, đối tượng và các phương thức để thực hiện các chức năng nghiệp vụ cụ thể của ứng dụng.
Tầng dữ liệu (Data Layer): Tầng dữ liệu là nơi lưu trữ và truy cập dữ liệu của ứng dụng Nó có trách nhiệm đảm bảo tính toàn vẹn và an toàn của dữ liệu.
3
Trang 8Tầng này giao tiếp với các nguồn dữ liệu như cơ sở dữ liệu, tệp tin, dịch vụ web để thực hiện các thao tác lưu trữ và truy xuất dữ liệu.
Mô hình 3 tầng giúp phân chia rõ ràng các trách nhiệm và chức năng của từng tầng, giúp dễ dàng quản lý và bảo trì ứng dụng Nó cũng tạo điều kiện cho việc phát triển đồng thời và độc lập giữa các tầng, cho phép thay đổi hoặc nâng cấp một tầng mà không ảnh hưởng đến các tầng khác.
5 Các công nghệ kết nối cơ sở dữ liệu 5.1 ADO.NET framework
ADO.NET (ActiveX Data Objects NET) là một framework được phát triển bởi Microsoft cho phép lập trình viên tương tác với cơ sở dữ liệu trong các ứng dụng NET Nó cung cấp các đối tượng và phương thức để thực hiện các hoạt động như kết nối đến cơ sở dữ liệu, thực hiện truy vấn, thêm, sửa, xóa dữ liệu và xử lý dữ liệu trả về từ cơ sở dữ liệu Nó hỗ trợ các nguồn dữ liệu khác nhau như Microsoft SQL Server, Oracle, MySQL,…
Hai phần chính là DataSet và DataProvider Phần DataProvider là các thư viện lớp cung cấp chức năng tạo kết nối đến nguồn dữ liệu, thi hành các lệnh trên nguồn dữ liệu đó inset, update, delete, read Phần DataSet là các thư viện lớp (độc lập với Data Provider) tạo ra các đối tượng để quản lý dữ liệu không phụ thuộc ngồn dữ liệu đến từ đâu.
Hình 2: Kiến trúc ADO.NET 4
Trang 95.2 Ngôn ngữ LINQ
LINQ (Language Integrated Query) - ngôn ngữ truy vấn tích hợp - nó tích hợp cú pháp truy vấn (gần giống các câu lệnh SQL) vào bên trong ngôn ngữ lập trình C#, cho nó C# khả năng truy cập các nguồn dữ liệu khác nhau (SQL Db, XML, List, ) với cùng cú pháp.
Lập trình viên có thể sử dụng các phương thức và toán tử truy vấn tích hợp để lọc, sắp xếp, nhóm, kết hợp và tính toán dữ liệu từ các nguồn khác nhau LINQ hỗ trợ các tập hợp dữ liệu như danh sách (List), mảng (Array), tập hợp (Set), cơ sở dữ liệu (Database) và các nguồn dữ liệu XML,…Với LINQ, việc viết mã truy vấn dễ dàng hơn, dễ hiểu và dễ bảo trì Nó cung cấp một cách tiếp cận khái quát và thống nhất cho việc truy vấn dữ liệu trong ứng dụng NET, giúp tăng cường năng suất và giảm thiểu lỗi.
5.3 Entity framework
Entity Framework là một nền tảng được sử dụng để làm việc với database thông qua cơ chế ánh xạ Object/Relational Mapping (ORM) Nhờ đó, bạn có thể truy vấn, thao tác với database gián tiếp thông qua các đối tượng lập trình.
Hình 3: Kiến trúc Entity framework
Entity Framework cho phép lập trình viên mô hình hóa cơ sở dữ liệu dưới dạng các đối tượng và quan hệ giữa chúng Thay vì viết các truy vấn SQL trực
5
Trang 10tiếp, lập trình viên có thể làm việc với các đối tượng được định nghĩa trong EF, và EF sẽ tự động chuyển đổi các hoạt động CRUD (Create, Read, Update, Delete) thành các truy vấn cơ sở dữ liệu tương ứng.
Entity Framework hỗ trợ nhiều nguồn cơ sở dữ liệu, bao gồm Microsoft SQL Server, Oracle, MySQL, PostgreSQL và SQLite Nó cung cấp các tính năng như lazy loading (tải lười biếng), change tracking (theo dõi thay đổi), caching (bộ nhớ đệm), và khả năng tạo ra cơ sở dữ liệu từ các đối tượng được định nghĩa 6 Các công cụ hỗ trợ
- Môi trường lập trình: Microsoft Visual Studio 2022 - Nền tảng: Windows Form App (.NET FRAMEWORK) - Ngôn ngữ lập trình: C#
- Hệ quản trị cơ sở dữ liệu: SQL Sever 2019
- Thư viện giao diện: DevComponents.DotNetBar2.dll
6
Trang 11CHƯƠNG 3: PHÂN TÍCH CHƯƠNG TRÌNH 1 Mô tả yêu cầu
Xây dựng phần mềm quản lí nhà trọ phát triển qua 3 phiên bản: - Phiên bản 1: Sử dụng ADO.NET
- Phiên bản 2: Sử dụng LINQ to SQL - Phiên bản 3: Sử dụng Entity Framework
Phần mềm xây dựng dựa trên mô hình 3 tầng Các phiên bản đều phải dùng chung một giao diện (forms)
7 Phân tích nhu cầu và dữ liệu 7.1 Quản lí phòng
Quản lí đăng kí thuê phòng: Khi khách đến thuê phòng, chủ trọ phải ghi nhận lại các thông tin liên quan đến khách trọ để phục vụ quản lí khách trong thời gian họ đăng kí thuê ở Tất cả thông tin đăng ký được nhà trọ quản lí dựa trên mã khách, họ tên, chứng minh nhân dân, nghề nghiệp, địa chỉ, số điện thoại, ngày đăng kí.
Quản lí thông tin nhận phòng: Sau khi thực hiện thủ tục đăng kí thuê phòng, khách thuê sẽ được chủ trọ cấp phòng và chính thức ghi nhận thời gian bắt đầu thuê phòng Chủ phòng sẽ lập hợp đồng, thu tiền đặt cọc và cập nhật trạng thái phòng trên hệ thống.
Quản lí việc trả phòng: Khi khách trọ có nhu cầu rời đi, chủ trọ có nhiệm vụ kiểm tra lại thông tin khách, những dịch vụ mà họ đã sử dụng, thời gian thuê Đồng thời, lập hóa đơn thanh toán cho khách dựa trên thông tin người thuê, số phòng, dịch vụ sử dụng và thời gian trả phòng Đối với khách ở qua tháng thì lập hóa đơn mỗi tháng.
7.2 Quản lí khu vực
Nhà trọ có các khu vực khác nhau, để quản lí thì hệ thống ghi nhận mã khu vực và tên của khu vực đó.
7
Trang 127.3 Quản lí loại phòng
Chia các loại phòng thành từng loại để đa dạng hóa nhu cầu của từng đối tượng khách cụ thể, mỗi loại phòng có mã loại phòng, diện tích và mức giá khác nhau.
7.4 Quản lí dịch vụ:
Bên cạnh việc thuê phòng, khách hàng còn có nhu cầu sử dụng các loại dịch vụ Để đáp ứng điều đó, nhà trọ cung cấp các loại dịch vụ và quản lí chúng thông qua mã dịch vụ, tên dịch vụ và đơn giá.
7.5 Quản lí khách hàng
Thông tin khách hàng được lưu trữ trên cơ sở dữ liệu một cách bảo mật, dễ dàng truy vấn và thực hiện các thao tác quản lí.
8 Các chức năng chính 8.1 Chức năng lưu trữ
- Lưu trữ thông tin tài khoản đăng nhập - Lưu trữ thông tin khách hàng - Lưu trữ thông tin thuê, trả phòng - Lưu trữ thông tin phòng, tình trạng phòng
- Lưu trữ thông tin dịch vụ, các dịch vụ khách sử dụng - Lưu trữ thông các khu vực cho thuê, các loại phòng - Quản lí hóa đơn - Quản lí doanh thu 8.3 Chức năng báo cáo
- Báo cáo danh sách người thuê phòng - Báo cáo hóa đơn
8
Trang 13- Báo cáo doanh thu từng tháng 9 Mô hình cơ sở dữ liệu
Hình 4: Sơ đồ cơ sở dữ liệu Sau đây là chi tiết từng bảng:
Bảng 3: Bảng dịch vụ
9
Trang 14Bảng 4: Bảng khu vực
Bảng 5: Bảng loại phòng
Bảng 6: Bảng phòng
Bảng 7: Bảng thông tin đăng kí phòng
10
Trang 15GioiTinh nvarchar(50), null
Bảng 8: Thông tin khách
MaKhachTro PK, FK, nvarchar(10), not null
Bảng 9: Thông tin thuê phòng
Bảng 10: Bảng trả phòng
Bảng 11: Bảng phiếu thu
11
Trang 16CHƯƠNG 4: THÀNH PHẦN CHƯƠNG TRÌNH 1 Danh mục giao diện
Khi bắt đầu chạy chương trình, form MyApp sẽ được mở ra Mục đích của form này là cho người dùng chọn tư cách người đang sử dụng phần mềm – chủ trọ hay là khách thuê
Hình 5: Form MyApp
Khi nhấn vào button “Khách thuê”, tức người sử dụng là khách thuê đang muốn tìm kiếm thông tin phòng và thực hiện điền thông tin cá nhân để gửi đăng kí nếu thấy được phòng phù hợp, ngược lại có thể bấm hủy trên Form thông tin thuê.
12
Trang 17Hình 6: Form Thông tin thuê
Còn khi bấm vào nút “Chủ trọ”, tức người sử dụng là người quản lí nhà trọ, một form Login sẽ hiện ra để thực hiện thao tác đăng nhập, biểu tượng con mắt để hiển thị/ẩn mật khẩu Chức năng lưu mật khẩu để ghi nhớ cho những lần đăng nhập sau Sau đó, nút “Login” sẽ kiểm tra thông tin điền có chính xác không, nếu sai thì gửi thông báo đã sai tài khoản hoặc mật khẩu.
Hình 7: Form Login
Nếu đăng nhập thành công, người quản lí sẽ được chuyển đến màn hình quản lí nhà trọ - form Admin Form này có thể coi là trang chủ chính của phần mềm để gọi toàn bộ chức năng có trong chương trình Thành phần của nó gồm:
13
Trang 18- Thanh công cụ gồm có: thanh chức năng, thống kê, thêm, quản lí và tài khoản - Bên tay trái là thông tin tài khoản, đổi mật khẩu, và đăng xuất Một khung thông tin thống kê chọn khu vực để xem số phòng trống và số phòng đã thuê.
- Chính giữa màn hình chính là khu vực để hiển thị các form chức năng được gọi, ta có thể thực hiện gọi nhiều form cùng một lúc và chuyển đổi form, tắt form một cách dễ dàng.
9.1 Thanh chức năng
Như đã đề cập, các chức năng chính của phần mềm đều nằm trên thanh công cụ của form Admin (hình 9) Trước tiên, ta tìm hiểu thanh chức năng, thanh này có 2 mục đích chính là theo dõi và thực hiện các thao tác
- Theo dõi: trạng thái, danh sách thu tiền.
- Thao tác: cho thuê, thêm người, trả phòng, tính tiền phòng.
Hình 8: Form Admin
+ Chức năng theo dõi trạng thái do form Trạng thái phòng đảm nhiệm Mục đích của form này là hiển thị danh sách các phòng đã được thuê, các phòng còn trống bằng các treeview
14
Trang 19Đối với các phòng đã được thuê, khi nhấn vào một phòng bất kì, danh sách khách thuê của phòng đó sẽ được hiện ngay listview bên dưới.
Hình 9: Form Trạng thái (hiển thị chọn danh sách phòng đã được thuê) Khi nhấn vào một thông tin của một khách thuê bất kì, form Thông tin khách hàng sẽ hiện ra, mục đích form này là hiển thị hình ảnh và thông tin liên quan của khách đang thuê Form này còn có chức năng cập nhật thông tin và thay đổi hình ảnh của khách.
Hình 10: Form Thông tin khách hàng
15
Trang 20Đối với danh sách phòng chưa được thuê, khi nhấn vào một phòng bất kì, thông tin của phòng trống đó bao gồm mã phòng, loại phòng, diện tích và giá thuê sẽ được hiển thị trong khung “Thông tin phòng trống” ở bên tay phải.
Hình 11: Form Trạng thái (hiển thị chọn danh sách phòng trống) + Chức năng theo dõi thứ hai là xem danh sách thu tiền trong form Danh sách thu tiền Form này giúp người quản lí có thể chọn khu vực, sau đó cho chọn hợp đồng với mã phòng tương ứng trong listview để thực hiện xem chi tiết hóa đơn Thông tin hóa đơn sẽ xuất hiện và người quản lí nhấn nút “Xác nhận” đã đóng tiền Hệ thống sẽ xóa thông tin vừa mới chọn khỏi danh sách.
Hình 12: Form Danh sách thu tiền
+ Với thao tác cho thuê, form Cho thuê được xây dựng với 2 mục đích là chứa danh sách các khách đã gửi thông đăng ký ở form MyApp (hình 5) với tư
16
Trang 21cách là khách thuê Từ đó chủ trọ sẽ xem xét thông tin có hợp lệ hay không để quyết định cho thuê phòng, nhấn xác nhận lưu và ngày cho thuê.
Hình 13: Form Cho thuê (hiển thị danh sách đăng kí phòng) Mục đích thứ 2 là thực hiện tự nhập thông tin đăng kí cho khách và quyết định cho thuê bằng cách nhấn lưu và xác nhận ngày cho thuê Khi ở chế độ tự nhập, các thông tin ở mục đích 1 bị khóa không thể nhấn.
Hình 14: Form Cho thuê (hiển thị nơi nhập thông tin đăng ký) + Với thao tác thêm người, form Thêm người thực hiện chức năng thêm người vào các phòng được đăng kí cho thuê từ trước đó Người quản lí sẽ chọn khu vực, chọn loại phòng và tìm kiếm tên phòng Khi chọn một phòng, thông tin các khách đăng kí của phòng đó sẽ xuất hiện ở listview phía dưới Còn khung thông
17
Trang 22tin khách đăng kí để thực hiện điền thông tin khách vào Sau khi nhấn lưu, quá trình thêm người vào phòng hoàn tất, thông tin phòng sẽ được cập nhật người mới được thêm và lưu ý chỉ có thể thêm 4 người trong 1 phòng.
Hình 15: Form Thêm người
+ Với thao tác trả phòng, form Trả phòng thực hiện trả phòng khi khách phòng đó có nhu cầu rời đi Người quản lí tìm kiếm khu vực, danh sách các phòng được hiện ra listview bên dưới Khi nhấn vào phòng cần trả, danh sách khách ở trong phòng đó được hiện ra listview dưới cùng Khi nhấn xác nhận, căn phòng được trả và hệ thống sẽ cập nhật lại danh sách phòng trống và xóa thông tin của khách đã rời đi.
Hình 16: Form Trả phòng
18
Trang 23+ Với thao tác tính tiền phòng, Form Tính tiền sẽ thực hiện chức năng lập hóa đơn cho từng tháng Sau khi chọn khu vực, danh sách các phòng chưa thanh toán tiền nhà, tiền dịch vụ sẽ được hiện lên Khi người thuê đóng tiền cung cấp tên phòng để người quản lí kiểm tra thông tin và lập hóa đơn tháng đó Hệ thống sẽ lưu hóa đơn và xóa phòng đó khỏi danh sách chưa đóng tiền.
Hình 17: Form Tính tiền 9.2 Thanh thống kê
Thanh công cụ thống kê gồm có các chức năng thống kê: danh sách người thuê, danh sách phòng, doanh thu, danh sách dịch vụ và danh sách loại phòng Các thống kê này nhóm sử dụng Microsotf Report để thực hiện báo cáo Với danh sách người thuê, người quản lí sẽ xem được mã phòng và tổng số khách đang thuê, và có thể tìm kiếm theo mã khách để xem thông tin nhanh.
19