Trước bài toán đặt ra với nhà trường hiện nay: vấn đề quản lý kí túc xá – một vấn đề đã có từ lâu nhưng vẫn còn khá nhiều bất cập như: việc quản lý ký túc xá vẫn còn theo phương pháp thủ
Giới thiệu tổng quan bài tập lớn
Đặt vấn đề
Hàng năm, các trường đại học tiếp nhận hàng nghìn sinh viên, dẫn đến nhu cầu đăng ký nội trú ngày càng tăng Tuy nhiên, vấn đề quản lý ký túc xá vẫn còn nhiều bất cập, như việc áp dụng phương pháp thủ công và thiếu tính thống nhất trong dữ liệu Nhiều trường đại học hiện nay có số lượng sinh viên đông nhưng chỉ có một hoặc hai nhân viên quản lý, khiến khối lượng công việc trở nên quá tải và hiệu quả quản lý không cao.
Giới thiệu đề tài
Ngày nay, công nghệ thông tin đã trở thành một phần thiết yếu trong cuộc sống, với nhiều ứng dụng trong quản lý nhân sự, nhà hàng và trường học, giúp giảm chi phí lao động và nâng cao hiệu quả quản lý dữ liệu Điều này đặt ra câu hỏi về việc tại sao không áp dụng công nghệ thông tin vào quản lý ký túc xá, nhằm tối ưu hóa quy trình và cải thiện chất lượng dịch vụ cho sinh viên.
Từ câu hỏi đó nhóm chúng tôi đã bắt tay vào tìm hiểu và nghiên cứu đề tài :
“Xây dựng phần mềm quản lý ký túc xá trường học”.
Yêu cầu của đề tài
Hoàn thành phần mềm ứng dụng quản lý ký túc xá.
Yêu cầu về giao diện: đáp ứng yêu cần về mặt thẩm mĩ, giao diện thân thiện với người dùng, dễ dàng cho việc sử dụng.
Để quản lý sinh viên trong ký túc xá hiệu quả, hệ thống cần có đầy đủ các chức năng tối thiểu như quản lý thông tin phòng và thông tin người thuê.
Các biểu mẫu trong thực tế
Hình 1 1 Mẫu hợp đồng thuê ký túc xá
Các công cụ thực hiện
Các công cụ thực hiện bài tập lớn:
Sơ đồ cơ sở dữ liệu
Hình 2 1 Cơ sở dữ liệu của bài toán.
Xây dựng cơ sở dữ liệu
2.1.Danh sách các bảng bảng accounts:
Tên trường Kiểu dữ liệu Khóa Mô tả Ghi chú
TaiKhoan Nvarchar (50) Chính Tên tài khoản
MaCB Nvarchar (50) Tên cán bộ
Tên trường Kiểu dữ liệu Khóa Mô tả Ghi chú
Tên trường Kiểu dữ liệu Khóa Mô tả Ghi chú
Tên trường Kiểu dữ liệu Khóa Mô tả Ghi chú
Tên trường Kiểu dữ liệu Khóa Mô tả Ghi chú
Tên trường Kiểu dữ liệu Khóa Mô tả Ghi chú
Tên trường Kiểu dữ liệu Khóa Mô tả Ghi chú
Tên trường Kiểu dữ liệu Khóa Mô tả Ghi chú MaPhong nvarchar(50) Chính MaPhong
Tên trường Kiểu dữ liệu Khóa Mô tả Ghi chú
*Phân công nhiệm vụ Form của các thành viên:
- Trương Thành Đạt(Nhóm trưởng):
Tìm kiếm (Thông tin sinh viên, Phòng)
Danh sách sinh viên theo phòng
CƠ SỞ NGHIÊN CỨU LÝ THUYẾT
1.Ngôn ngữ truy vấn SQL
1 INSERT: Thêm dữ liệu vào 1 bảng
INSERT INTO [()]
VALUE (Các giá trị) |
Insert Into SinhVien (maSV, tenSV, ngaySinh, gioiTinh, diaChi, soDT, lop, khoasHoc, khoa)
Values (‘201724222 ’ ,‘Trương đạt’, ‘22/12/2004’, ‘Nam’, Nghệ an,
2 UPDATE: Sửa đổi dữ liệu trong bảng
UPDATE SET = … [WHERE
Update Accounts Set matKhau = 1, MaCB=2
3 DELETE: xóa dữ liệu trong bảng
DELETE FROM | [WHERE ]
4 SELECT: câu lệnh truy vấn
SELECT [all/distinct] | * | FROM | [WHERE ]
Select * from Khoa where MaKhoa=’CNTT’
Stored Procedure là một tập hợp các câu lệnh SQL được sử dụng để thực hiện một nhiệm vụ cụ thể, hoạt động tương tự như một hàm trong các ngôn ngữ lập trình khác.
Body of the stored procedure
SQL statements and logic here
INSERT INTO SinhVien (MaSV, TenSV, NgaySinh, GioiTinh, DiaChi, SoDT, Lop, KhoaHoc, Khoa)
VALUES (@maSV, @tenSV, @ngaySinh, @gioiTinh, @diaChi,
2.Ngôn ngữ lập trình c#
1 Form và thuộc tính của Form. a MDI Form và Child Form
MDI Form là một tính năng quan trọng cho phép người dùng tạo ra một form chính có khả năng mở ra các form con (child form) bên trong nó, giúp tối ưu hóa trải nghiệm làm việc với nhiều cửa sổ trong cùng một giao diện.
Để thêm một MDI form ta làm như sau:
- Vào Project/ Add windows form / MDI parent Form
Sau khi thêm MDI Parent Form, chúng ta cần tạo một Form con để có thể gọi ra từ Form cha Mặc dù MDI Parent Form đã cho phép gọi Form con, nhưng Form này vẫn chưa có nội dung gì, do đó việc thêm Form con là cần thiết để hoàn thiện chức năng của ứng dụng.
Code để gọi Form con nằm trong Form cha private void ShowNewForm(object sender, EventArgs e)
Form childform = new Form1(); childform.MdiParent = this; childform.Text = "Window " + childFormNumber++; childform.Show();
Child Form: Là Form nằm trong MDI Form và phải khhai báo thuộc tính MDIParent ứng với MDI Form.
Ví dụ: Form frm = new Form3();
This là từ khóa chỉ định Form gọi đến Form3 là MDI Form b Thuộc tính của form.
Thuộc tính của Form
Thuộc tính Chức năng
(Name) Tên Form: nó như 1 biến
AllowDrop Cho phép kéo thả
AutosizeMode + GroupOnly: cho phép thay đổi kích thước form
+ GrowAndSkink: không cho phép thay đổi kích thước form
ContextMenuStrip Menu xuất hiện khi chuột phải lên form
Cursor Con trỏ chuột khi rê trên form
Opacity Độ trong suốt của form
ShowlnTaskbar Hiện thị ở thank taskbar khi chạy form (true/false)
StartPosition Vị trí xuất hiện ở form
+ CenterParent: giữa form gọi ra nó (form cha)
TopMost Hiển thị đè lên các form khác
WindowState Trạng thái của form
Text Chữ hiển thị khi form chạy
Các sự kiện trên Form:
- Các sự kiện trên form ít khi được sử dụng Một số sự kiện thường được sử dụng đó là:
DragDrop: kéo thả đối tượng vào Form
Keyup: xác định phím ấn
Load: Xuất hiện trước khi form show
- Close: đóng form và free resource
- Show: hiển thị form đang ẩn
Các bước tạo ứng dụng Windown Form đơn giản
- Tạo lớp kế thừa từ lớp Form cơ sở
- Bổ sung các Control vào Form: Thêm các lable, button, textbox, menu,…
- Thiết kế layout cho form (bố trí control): Hiệu chỉnh kích thước, trình bày, giao diện cho Form và Control chứa trong Form
- Viết các xử lý cho các control trên Form và các xử lý khác
2 Các control (điều khiển cơ bản) a Lable: gồm các thuộc tính như
- Font: Thay đổi font chữ trên Label
- Text: Text hiển thị trên Label
- TextAlign: Căn chỉnh vị trí Text (left, center, right, bottom, midle,
- Name: Tên dùng để viết code b Textbox
Font: Thay đổi font trên textbox
Text: Hiển thị text trên control
Multiline: Nếu là True thì textbox nhập nhiều dòng
ReadOnly: Nếu là True thì textbox không thể nhập
Keypress: xảy ra khi bàn phím được ấn
Khi dữ liệu văn bản thay đổi, sự kiện TextChanged sẽ được kích hoạt Combobox là một thành phần giao diện người dùng dùng để hiển thị danh sách các phần tử, có thể là chuỗi hoặc đối tượng, bao gồm giá trị và nhãn Combobox cho phép người dùng thay đổi hoặc thêm mới các phần tử trong danh sách.
Items Tập hợp các giá trị trong Listbox
DataSource Quy định nguồn dữ liệu cho Listbox
DataBinding Gắn các thuộc tính của Listbox với dữ liệu trên DataSource
SelectionMode Quy định chế độ lựa chọn giá trị, một hay nhiều
Sorted Cho phép sắp xếp các giá trị hay không
SelectedItem(*) Đối tượng được chọn
SelectedIndex(*) Chỉ số của phần tử đầu tiên được chọn
SelectValue(*) Giá trị của phần tử đầu tiên được chọn d Listview
- Dùng để trình bày phần tử dạng danh sách với nhiều hình dạng khác nhau:
AllowColumnReorde r Cho phép sắp xếp cột ở chế độ thi hành
CheckBoxes Xuất hiện Checkbox bên cạnh từng phần tử trên điều khiển Listview
Columns Khai báo cột (có header)
Group Khai báo nhóm để phân loại các phần tử trên điều khiển Listview
View Chế độ trình bày: List, Details, large icon, smallicon, title
Sorting Sắp xếp phần tử tăng dần (Asccending)
MultiSelect True nếu chọn nhiều phần tử
SelectedItems Trả về danh sách phần tử được chọn
CheckedItems Trả về danh sách phần tử được Check
Clear() Xóa tất cả các phần tử và cột trên điều khiển
ArrangeIcons Sắp xếp điều khiển trình bày trên ListView theo giá trị
SelectIndexChanged Khi người sử dụng thay đổi lựa chọn trên ListView
ItemActive Khi chọn phần tử trên ListView
ItemChecked Khi Check vào biểu tượng CheckBox của mỗi phần tử trên Listview e Checkbox:
- Hộp kiểm tra dạng ô vuông, trong một nhóm checkbox có thể không chọn, chọn một hay chọn nhiều checkbox
Checked Xác định checkbox có được tính chọn hay không (true hay false)
FlatSyle Kiểu đường viền của checkbox
Checkstate Trạng thái đang chọn, có ba trạng thái
Text Chuỗi trình bày ứng với diễn giải của tùy chọn
Appearance Hình dạng của Checkbox
MouseClick Xảy ra khi người dùng Click trên điều khiển
Xảy ra khi click vào biểu tượng Checkbox
Xảy ra khi thuộc tính CheckState bị thay đổi
Xảy ra khi giá trị diễn giải của điều khiển bị thay đổi
Xảy ra khi thuộc tính Enabled thay đổi từ
True sang False f RadioButton (OptionButton)
- Hộp lựa chọn dạng dấu chấm tròn, trong một nhóm radio, chỉ có thể chọn một radio
Checked Xác định radio có được tích chọn hay không
Text Chuỗi trình bày ứng với diễn giải tùy chọn
Appearance Hình dạng của điều khiển
TextAlign Căn lề chuỗi diễn giải trên điều khiển g Button:
Text: Text được hiển thị trên control
Click: Xảy ra khi người dùng click vào nút h DatagridView
- Bước 1: Tạo datagridview bằng cách thêm các cột
- Bước 2: Đổ dữ liệu vào DatagridView
- Bước 3: Lưu dữ liệu từ DatagridView vào DB
3.Giới Thiệu về ADO.net
ADO.NET là công cụ chứa các lớp đối tượng cho phép truy cập, thao tác với cơ sở dữ liệu.
- ADO.NET: ActiveX Data Object.NET
ADO.NET là công nghệ của Microsoft trên nền tảng NET Framework, được phát triển từ ADO trên VB 6.0 Nó cung cấp các lớp đối tượng và hàm thư viện hỗ trợ kết nối và xử lý dữ liệu hiệu quả.
ADO.NET tương tự như ADO, nhưng điểm khác biệt chính là ADO.NET sử dụng kiến trúc dữ liệu rời rạc và không kết nối Dữ liệu được truy xuất từ cơ sở dữ liệu và lưu trữ trên bộ nhớ cache của máy người dùng.
Kết nối không liên tục đến cơ sở dữ liệu mang lại nhiều lợi ích, đặc biệt là giảm lưu lượng truy cập đồng thời, giúp tiết kiệm tài nguyên bộ nhớ Điều này làm giảm đáng kể vấn đề hàng trăm ngàn kết nối truy cập vào cơ sở dữ liệu cùng một lúc.
Managed Provider Component: bao gồm các đối tượng như DataAdapter, DataReader, … giữ nhiệm vụ làm việc trực tiếp với dữ liệu như database, file, …
- Content Component: bao gồm các đối tượng như DataSet, DataTable,
The DataReader represents the actual data that needs to be processed, providing quick access to data in a forward-only and read-only manner, similar to the ADO RecordSet that utilizes a server cursor.
DataSet là một đối tượng mới, không chỉ đơn thuần là dữ liệu mà còn được xem như một bản sao gọn nhẹ của cơ sở dữ liệu (CSDL) trong bộ nhớ Nó bao gồm nhiều bảng và các mối quan hệ giữa chúng, giúp quản lý và xử lý dữ liệu hiệu quả hơn.
- DataAdapter là đối tượng kết nối giữa DataSet và CSDL, nó bao gồm
2 đối tượng Connection và Command để cung cấp dữ liệu cho DataSet cũng như cập nhật dữ liệu từ DataSet xuống CSDL.
-Dùng để kết nguồn dữ liệu, chuỗi kết nối được thiết lập qua thuộc tính ConnectionString
Đối tượng Command trong SQL được sử dụng để thực hiện các câu truy vấn và có khả năng trả về kết quả Nó cũng có thể được áp dụng cho các stored query và procedure, cho phép chấp nhận các tham số truyền vào.
CommandText Thuộc tính chỉ định câu lệnh SQL hoặc tên Stored procedure
CommandType Thuộc tính xác định điểu câu lệnh
- Có hai cách để tạo đối tượng Command:
Sử dụng phương thức CreateCommand
- Có 4 cách để thực thi một Command:
ExecuteXMLReader sqlCommand cmd=new SqlCommand(); cmd.Connection=con; cmd.CommandText=”Select Count(*)from Products”;
MessengeBox.Show(cmd.ExecuteScalar().ToString);
- Đối tượng Command với các Stored Procedure
Connection Thuộc tính cung cấp vào đối tượng Connection
Phương thức để cung cấp các Parameter của câu lệnh SQL
Tạo một đối tượng Command
Thết lập CommandType là StoredProcedure
Dùng thương thức Add để tạo và thiết lập các biến (Parameter)
Dùng thuộc tính parameterDirection để thiết lập kiểu biến
Dùng đối tượng DataReader để hiển thị hoặc duyệt qua các bản ghi và đóng khi kết thúc.
Truy cập đầu ra và trả về các biến.
- Có 2 cách tạo đối tượng DataAdapter
Sử dụng đối tượng Connection tồn tại
Mở kết nối Connection nếu cần thiết
- Phương thức Fill để đặt dữ liệu vào DataSet hoặc DataTable, và dùng phương thức Update để đồng bộ dữ liệu thay đổi tới dataSource
Dữ liệu trong DataSet được tổ chức dưới dạng một tập hợp các bảng (Collection of Tables) và cần được xử lý thông qua các lớp như DataTable, DataRow và DataColumn Kiến trúc của DataSet được thể hiện trong bảng dưới đây.
Phương Thức (Method) Giá Trị Trả Về (Return Value)
ExecuteNonQuey() Không trả về gì vì không phải query
ExecuteScalar() Một giá trị duy nhất
ExcuteReader() Không hoặc nhiều bảng
The System.Data.DataTable class is structured like a database table, consisting of rows and columns It includes two key components: DataRow and DataColumn DataRow represents a collection of columns, forming a record set.
Một Dataset có thể chứa một hoặc nhiều Data Table.
XÂY DỰNG PHẦN MỀM
Form đăng nhập
Form giao diện chính
Hình 3 2 Form giao diện chính.
Form danh sách phòng trống
Hình 3 4 Form danh sách phòng trống.
Form quản lý phòng
Hình 3 5 Form quản lý phòng
3.6 Form hợp đồng thuê phòng
Hình 3 6 Form hợp đồng thuê phòng
3.7 Form phiếu thu tiền phòng
Hình 3 7 Form phiếu thu tiền phòng
Hình 3 8 Form hóa đơn điện nước hàng tháng
3.10 Form quản lý cán bộ
Hình 3 10 Form quản lý cán bộ
3.11 Form quản lý tài khoản
Hình 3 11 Form quản lý tài khoản
3.12 Form danh sách sinh viên theo phòng
Hình 3 12 Form danh sách sinh viên theo phòng
3.13 Form đăng ký thuê ký túc xá
Hình 3 13 Form đăng ký thuê ký túc xá
Sau một thời gian làm việc và nghiên cứu dưới sự hướng dẫn của cô Trần Thị Xuân Hương, tôi đã hoàn thành bài báo cáo với chủ đề "Phần mềm quản lý ký túc xá".
Qua quá trình nghiên cứu đề tài, em đã học được cách lập kế hoạch khoa học và nhận thấy đây là cơ hội quý giá để mở rộng kiến thức của bản thân.
Sau quá trình làm bài em đã đạt được kết quả như sau:
Phân tích thiết kế cho bài toán.
Xây dựng được cơ sở dữ liệu.
Xây dựng, phát triển được phần mềm quản lý ký túc xá.
Em xin chân thành cảm ơn cô đã giúp đỡ em trong quá trình làm bài tập lớn.
Form phiếu thu tiền phòng
Hình 3 7 Form phiếu thu tiền phòng
Hình 3 8 Form hóa đơn điện nước hàng tháng
3.10 Form quản lý cán bộ
Hình 3 10 Form quản lý cán bộ
3.11 Form quản lý tài khoản
Hình 3 11 Form quản lý tài khoản
3.12 Form danh sách sinh viên theo phòng
Hình 3 12 Form danh sách sinh viên theo phòng
3.13 Form đăng ký thuê ký túc xá
Hình 3 13 Form đăng ký thuê ký túc xá
Sau một thời gian làm việc và nghiên cứu dưới sự hướng dẫn của cô Trần Thị Xuân Hương, tôi đã hoàn thành bài báo cáo với chủ đề “Phần mềm quản lý ký túc xá”.
Qua quá trình nghiên cứu đề tài, em đã học được cách lập kế hoạch khoa học và nhận thấy đây là cơ hội quý giá để nâng cao kiến thức của bản thân.
Sau quá trình làm bài em đã đạt được kết quả như sau:
Phân tích thiết kế cho bài toán.
Xây dựng được cơ sở dữ liệu.
Xây dựng, phát triển được phần mềm quản lý ký túc xá.
Em xin chân thành cảm ơn cô đã giúp đỡ em trong quá trình làm bài tập lớn.
Form quản lý cán bộ
Hình 3 10 Form quản lý cán bộ.
Form quản lý tài khoản
Hình 3 11 Form quản lý tài khoản.
Form danh sách sinh viên theo phòng
Hình 3 12 Form danh sách sinh viên theo phòng
Form đăng ký thuê ký túc xá
Hình 3 13 Form đăng ký thuê ký túc xá
Sau một thời gian làm việc và nghiên cứu dưới sự hướng dẫn của cô Trần Thị Xuân Hương, tôi đã hoàn thành bài báo cáo với chủ đề "Phần mềm quản lý ký túc xá".
Qua quá trình nghiên cứu đề tài, em đã học được cách lập kế hoạch khoa học, đồng thời đây cũng là cơ hội để nâng cao kiến thức của bản thân.
Sau quá trình làm bài em đã đạt được kết quả như sau:
Phân tích thiết kế cho bài toán.
Xây dựng được cơ sở dữ liệu.
Xây dựng, phát triển được phần mềm quản lý ký túc xá.
Em xin chân thành cảm ơn cô đã giúp đỡ em trong quá trình làm bài tập lớn.