Tải bản đầy đủ (.docx) (29 trang)

ĐỒ ÁN TỐT NGHIỆP: Đề tài "Quản lý ký túc xá sinh viên của trường đại học"

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (401.72 KB, 29 trang )

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO ĐỒ ÁN

GIẢI THUẬT VÀ LẬP TRÌNH
ĐỀ TÀI:
QUẢN LÝ KÝ TÚC XÁ SINH VIÊN
CỦA TRƯỜNG ĐẠI HỌC

GVHD
SVTH

:
:

Nhóm

:

PHAN THANH TAO
TRỊNH MINH AN – 14T2
BÙI VĂN THẢO – 14T2
NHÓM 14.10

Đà Nẵng, 05/2017



Lời nói đầu
Tin học ngày nay đã trở thành một ngành khoa học cực kỳ quan trọng trong
cuộc sống hiện đại, tin học góp phần hỗ trợ nhiều ngành. Có thể nói ngày nay
việc tin học hóa trong mọi ngành nghề đã cho thấy được tầm quan trọng của công
nghệ thông tin. Do đó việc học tập và nghiên cứu tin học trở nên hết sức cần thiết
và tất yếu đối với mọi người.
Cấu trúc dữ liệu và giải thuật là một môn học cơ sở trong chương trình
đào tạo kỹ sư công nghệ thông tin. Ở đây chúng ta sẽ được làm quen với một số
kiến thức cơ bản về cấu trúc dữ liệu và các giải thuật có liên quan, từ đó tao điều
kiện cho việc nâng cao thêm về kỹ thuật lập trình, về phương pháp giải các bài
toán, giúp sinh viên có khả năng đi sâu thêm vào các môn học chuyên ngành.
Đồng thời giúp chúng ta có thể tổ chức dữ liệu để giải quyết các bài toán một
cách hiệu quả và tối ưu.
Việc đưa tin học vào công việc quản lý nhằm giảm bớt sức lao động, tiết
kiệm thời gian và hiệu quả hơn so với việc quản lý thủ công bằng giấy tờ như
trước đây. Tin học hóa thu hẹp không gian lưu trữ, tránh thất thoạt dữ liệu, tự
động hóa và cụ thể hóa thông tin theo nhu cầu của con người. Ở Việt Nam, ngành
tin học cũng đang từng bước bứt phá đạt được những thành công trong công việc
áp dụng tin học vào việc phát triển kinh tế - xã hội và khẳng định mình trên thị
trường quốc tế.
Chính vì vậy, khi chúng em nhận đề tài xây dựng Chương trình quản lý
ký túc xá sinh viên, với những kiến thức đã được học và quá trình tìm hiểu, đặc
biệt là sự hướng dẫn rất nhiệt tình của thầy Phan Thanh Tao, chúng em đã hoàn
thành đề tài của mình với một bài toán quản lý. Trong quá trình làm đề tài này
không tránh khỏi sự thiếu sót, chúng em mong nhận đc sự giúp đỡ của quý thầy
cô và ý kiến của các bạn cho đề tài của chúng em được hoàn thiện hơn.
Em xin chân thành cảm ơn!
Sinh viên thực hiện



ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

MỤC LỤC
I.

GIỚI THIỆU ĐỀ TÀI·············································2

II.

GIẢI PHÁP························································3
1. Cấu trúc dữ liệu··························································3
2. Thuật toán································································3

3. Chương trình·····················································10
4. Đánh giá chương trình··········································22
III. LỜI KẾT····························································22
IV. TÀI LIỆU THAM KHẢO·········································23

1

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


GVHD : Phan Thanh Tao

ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ


I. GIỚI THIỆU ĐỀ TÀI
ĐỀ TÀI: Quản lý Ký túc xá sinh viên Đại học Bách Khoa Đà Nẵng
Khởi tạo các lớp gồm:Lớp SinhVien, Lớp Phong, Lớp HopDong, Lớp Date
Mỗi lớp chứa các thông tin cần quản lý(thuộc tính) gồm:

SinhVien

Phong

Mã số sinh viên
Tên sinh viên
Giới tính
Ngày sinh
Lớp
Khoa

Mã phòng
Tên phòng
Mã nhà
Loại phòng
Số lượng MAX=8
Số lượng MIN
Giá phòng=650000

HopDong

Date

Mã hợp đồng
Mã sinh viên

Mã phòng
Ngày bắt đầu HD
Ngay het han HD
Trạng thái HD

Ngày
Tháng
Năm

Sau đó thực hiện các công đoạn để thành lập các chức năng cho chương
trình:
 Đăng ký hợp đồng mới
 In ra tình trạng phòng trong ký túc xá
 Thống kê tình trạng ký túc xá
 Chức năng trả phòng, hủy hợp đồng
 Chức năng chuyển phòng, sửa hợp đồng
 Chức năng gia hạn phòng
 Các chức năng tìm kiếm
Yêu cầu:
Viết chương trình quản lý ký túc xá sinh viên đọc dữ liệu từ file văn bản
có lưu trữ khoảng 10-20 mẫu tin (record) và lưu vào danh sách liên kết kép.
Sau đó thực hiện các thao tác trên danh sách liên kết và thực hiện các chức
năng đã nêu ở trên theo yêu cầu.

2

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2



ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

3

GVHD : Phan Thanh Tao

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

II. GIẢI PHÁP
1.

Cấu trúc dữ liệu
- Input: Dữ liệu lấy thông tin sinh viên từ file “DataSinhVien.txt”,
thông tin hợp đồng từ file “DataHopDong.txt”, thông tin phòng từ file
“DataPhong.txt”
- Output:
* Thực hiện các chức năng:













Đăng ký hợp đồng mới.
In ra thông tin phòng tổng quát.
In ra thống kê danh sách tất cả các phòng.
In ra thống kê danh sách tất cả sinh viên ở ký túc xá.
In ra thống kê danh sách tất cả các hợp đồng.
Thực hiện thao tác trả phòng, hủy hợp đồng theeo mã số sinh
viên hoặc là theo mã số hợp đồng.
Thực hiện thao tác chuyển phòng, thay đổi thông tin hợp đồng.
Thực hiện gia hạn phòng theo mã hợp đồng hoặc mã số sinh viên
Thực hiện các thao tác tìm kiếm tìm theo “key word”, tìm theo
thông tin sinh viên, tìm theo thông tin phòng, tìm theo thông tin
hợp đồng.
Thoát và lưu dữ liệu

* Sau khi thoát chương trình, nếu dữ liệu bị thay đổi thì update dữ
liệu mới vào file cũ
2. Thuật toán
- Khai báo:
+ Các danh sách liên kết kép cho từng đối tượng SinhVien,
HopDong, Phong.
+ Các biến lưu thông tin đối tượng SinhVien (Mã số sinh viên, Họ
tên, Giới tính, Ngày sinh, Lớp, Khoa), các biến lưu thông tin đối
tượng HopDong(Mã hợp đồng, Mã số sinh viên, Mã phòng, Ngày bắt
đầu hợp đồng, Ngày kết thúc hợp đồng, Tình trạng hợp đồng), các
biên lưu thông tin đối tượng Phong(Mã phòng, Tên phòng, Mã khu

nhà, Loại phòng[NAM/NỮ], Số lượng tối đa[8], Số lượng hiện tại,
Giá phòng[650000]), các biến lưu thông tin đối tượng Date(ngày,
tháng, năm) và các biến cập nhật dựa theo các biến cho trước.

4

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

- Sử dụng các hàm để cài đặt danh sách liên kết:
struct DataSV
{
SinhVien data;
DataSV *next, *pre;
};
struct ListSV
{
DataSV *head, *tail;
};

- Sử dụng các hàm để khởi tạo phần tử cho danh sách liên kết:
DataSV* CreateNode(SinhVien data)
{
DataSV* node = new DataSV;
if (node != NULL)

{
node->data = data;
node->next = node->pre = NULL;
}
return node;
}

- Sử dụng các hàm để chèn phần tử vào danh sách liên kết bao gồm:
 Chèn phần tử vào đầu danh sách
void AddHead(ListSV& list, DataSV* data)
{
if (!list.head)
{
list.head = list.tail = data;
}
else
{
list.head->pre = data;
data->next = list.head;
list.head = data;
}
}

 Chèn phần tử vào cuối danh sách
void AddTail(ListSV& list, DataSV* data)
{
if (!list.head)
{
list.head = list.tail = data;
}

else
{
list.tail->next = data;
data->pre = list.tail;
list.tail = data;
}
}

5

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

 Chèn phần tử vào sau một phần tử trong danh sách
void AddAfter(ListSV& list, DataSV* data, DataSV* after)
{
if (!after)
{
AddHead(list, data);
}
else
{
if (after == list.tail)
{
AddTail(list, data);

}
else
{
data->next = after->next;
data->pre = after;
after->next->pre = data;
after->next = data;
}
}
}

 Chèn phần tử vào trước một phần tử trong danh sách
void AddBefore(ListSV& list, DataSV* data, DataSV* before)
{
if (!before)
{
AddHead(list, data);
}
else
{
if (before==list.head)
{
AddHead(list, data);
}
else
{
data->pre = before->pre;
data->next = before;
before->pre->next = data;
before->pre = data;

}
}
}

- Sử dụng các hàm duyệt và in ra các phần tử trong danh sách liên kết:
void ShowNext(ListSV list)
{
for (DataSV* i=list.head; i; i = i->next)
{
cout << i->data;
}
}

- Sử dụng các hàm để tìm kiếm các phần tử trong danh sách liên kết:

6

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

DataSV* SearchNode(ListSV list, int key)
{
DataSV* i = list.head;
while (i && i->data.get_id() != key) i = i->next;
return i;

}

- Sử dụng các hàm để xóa các phần tử trong danh sách liên kết gồm:
 Xóa phần tử đầu tiên của danh sách
void RemoveHead(ListSV& list)
{
if (!list.head)
{
cout << "\nList is empty!";
}
else if (list.head == list.tail)
{
delete list.head;
list.head = list.tail = NULL;
}
else
{
DataSV* temp = list.head;
list.head->next->pre = NULL;
list.head = list.head->next;
delete temp;
}
}

 Xóa phần tử cuối cùng của danh sách
void RemoveTail(ListSV& list)
{
if (!list.head)
{
cout << "\nList is empty!";

}
else if (list.head == list.tail)
{
delete list.head;
list.head = list.tail = NULL;
}
else
{
DataSV* temp=list.tail;
list.tail->pre->next = NULL;
list.tail = list.tail->pre;
delete temp;
}
}

 Xóa phần tử sau một phần tử trong danh sách
void RemoveAfter(ListSV& list, DataSV* after)
{
if (!list.head)
{
cout << "\nList is empty!\n";

7

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ


}

GVHD : Phan Thanh Tao

}
else if (list.head == list.tail)
{
cout << "\nList only one element!\n";
}
else if (list.tail != after)
{
DataSV* tmp = after->next;
after->next->next->pre = after;
after->next = after->next->next;
delete tmp;
}

 Xóa phần tử trước một phần tử trong danh sách
void RemoveBefore(ListSV& list, DataSV* before)
{
if (!list.head)
{
cout << "\nList is empty!\n";
}
else if (list.head == list.tail)
{
cout << "\nList only one element!\n";
}
else if (list.tail != before)
{

DataSV* tmp = before->pre;
before->pre->pre->next = before;
before->pre = before->pre->pre;
delete tmp;
}
}

 Xóa phần tử theo từ khóa (key) trong danh sách
void RemoveKey(ListSV& list, int key)
{
DataSV* result = SearchNode(list, key);
if(result)
{
if (list.head->data.get_id() == key)
{
RemoveHead(list);
}
else if (list.tail->data.get_id() == key)
{
RemoveTail(list);
}
else
{
result->pre->next = result->next;
result->next->pre = result->pre;
delete result;
}
}
else
{

cout << "\nKey not found!";

8

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

}
}

- Sử dụng đa năng hóa các hàm tương tự ở trên cho từng đối tượng để
tạo và xử lý danh sách tương ứng với từng đối tượng.
- Sử dụng các hàm Header và Footer để tạo khung cho danh sách.
- Sử dụng các hàm void ShowPhong(ListPhong list) để in
ra sơ đồ thông tin phòng theo từng khu nhà với tham số truyền vào list là
danh sách liên kết chứa các phần tử đối tượng Phong.
- Sử dụng hàm void SaveData(ListSV list) với tham số
truyền vào là 1 danh sách kiểu SinhVien, HopDong, hoặc
Phong để lưu các thông tin của từng đối tượng trong danh sách vào các file
“.txt” và mỗi thuộc tính cách nhau một ký tự ‘:’.
- Sử dụng hàm void ReadData(ListSV list) với tham số
truyền vào list là 1 danh sách kiểu SinhVien, HopDong, hoặc
Phong để đọc các thông tin của từng đối tượng trong danh sách từ các file
“.txt” và bỏ qua các ký tự ‘:’ có trong file.
- Sử dụng các hàm bool check_mssv(ListSV list,

HopDong hd) để kiểm tra xem có xảy ra trường hợp trùng mã số sinh
viên hay không!
bool check_mssv(ListSV list, HopDong hd)
{
for (DataSV* i = list.head; i; i = i->next)
if (hd.get_maSV() == i->data.get_id())
return false;
return true;
}

- Sử dụng các hàm bool check_phong(ListPhong list, HopDong
hd) để kiểm tra xem phòng cần tìm đến đã đủ người hay chưa.
bool check_phong(ListPhong list, HopDong hd)
{
DataPhong* p = SearchNode(list, hd.get_maPhong());
if (p->data.get_tinhTrang() < 8) return true;
else return false;
}

- Sử dụng các hàm bool check_phong(ListPhong list, HopDong hd,
SinhVien sv) để kiểm tra xem phòng cần tìm đến là phòng nam hay phòng
nữ.
bool check_phong(ListPhong list, HopDong hd, SinhVien sv)
{
DataPhong* p = SearchNode(list, hd.get_maPhong());
if (p->data.get_loaiPhong() != sv.get_GioiTinh()) return
false;
else return true;
}


9

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

- Sử dụng hàm void ThemHopDong(ListSV& l_sv,
ListHD& l_hd, ListPhong& l_p) để thêm mới 1 phần tử mới vào
danh sách. Hàm này được ràng buộc trong quá trình nhập dữ liệu bởi các
điều kiện là:
 Ngày kết thúc hợp đồng phải là sau ngày hiện tại.
 Mã số sinh viên phải chưa được đăng ký.
 Kiểm tra phòng là loại phòng nam hay nữ và đã đầy hay còn
trống.
Nếu vi phạm các điều kiện này trong quá trình nhập thì chương trình sẽ xuất
thông báo và yêu cầu nhập lại. Sau khi thực hiện thao tác thêm hợp đồng thì
mã hợp đồng tự tăng lên 1, số lượng MIN tăng lên 1, các thông tin sẽ được
cập nhật vào các danh sách.
- Hàm void Thong_Ke(ListSV l_sv, ListHD l_hd,
ListPhong l_p) sử dụng các hàm ShowNext() để thống kê danh sách
hợp đồng, danh sách sinh viên, danh sách phòng theo dạng liệt kê.
- Hàm void Tra_Phong(ListSV& l_sv, ListHD& l_hd,
ListPhong& l_p) gồm có hai thao tác đó là trả phòng bằng mã số hợp
đồng hoặc trả phòng bằng mã số sinh viên. Với điều kiện ràng buộc là:
 Mã số hợp đồng và mã số sinh viên phải đã tồn tại trong danh
sách.

Sau khi thực hiện thao tác trả phòng thì các phần tử SinhVien và
HopDong sẽ bị xóa khỏi danh sách, còn tại danh sách Phong sẽ update
các giá trị số lượng Min(số lượng sinh viên hiện tại)
- Hàm void Chuyen_Phong(ListSV l_sv, ListHD&
l_hd, ListPhong& l_p) để chuyển phòng cho sinh viên bằng việc thay
đổi các thuộc tính các lớp tương ứng. Với điều kiện ràng buộc là:
 Mã số sinh viên phải tồn tại trong danh sách.
 Mã số phòng phải tồn tại, phải khác với mã số phòng hiện tại
sinh viên đang ở và phải nằm trong danh sách phòng còn trống.
Sau khi gọi hàm Chuyen_Phong thì sẽ thay đổi giá trị số lượng MIN
của các phòng tương ứng(+1 hoặc là -1) và thuôc tính mã phòng trong
HopDong cũng sẽ thay đổi thành phòng mới

10

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

- Hàm void Gia_Han(ListSV l_sv, ListHD& l_hd,
ListPhong l_p) gồm hai thao tác đó là gia hạn phòng theo
mã số hợp đồng hoặc theo mã số sinh viên. Với điều kiện
ràng buộc là:
 Mã số hợp đồng và mã số sinh viên phải tồn tại
trong danh sách.
- Hàm void SearchFull(ListSV l_sv, ListHD l_hd,

ListPhong l_p) sử dụng các hàm .find(string s) để tìm các từ khóa
tương ứng trong các tất cả các thuộc tính của tất cả các phần tử trong cả 3
danh sách.
- Hàm void Tim_Kiem(ListSV l_sv, ListHD l_hd,
ListPhong l_p) để tìm kiếm thông tin sinh viên, thông tin hợp đồng,
thông tin phòng và thông tin chung đã có. Với điều kiện ràng buộc:
 Mã số sinh viên, tên sinh viên, mã số hợp đồng và số lượng
sinh viên phải có trong danh sách
 Mã số phòng và khu vực phòng phải nằm trong phạm vi quy
định.
- Hàm void Menu() để hiện thị trang chủ chính của chương trình
bao gồm các thao tác: Đăng ký hợp đồng mới, tình trạng phòng KTX, thống
kê KTX, trả phòng, chuyển phòng, gia hạn phòng, tìm kiếm, thoát chương
trình và lưu dữ liệu.
- Các hàm sẽ được biên dịch và thực thi khi được hàm main gọi.

3. Chương trình
Bài toán được cài đặt bằng ngôn ngữ lập trình hướng đối tượng C++
quen thuộc và cơ bản với phần lớn sinh viên Công nghệ thông tin nói riêng
và sinh viên ngành Kỹ thuật nói chung. Sử dụng phần mềm Visual Studio
2015 của Microsoft cung cấp để biên dịch và thực thi.
Do đề tài đồ án chỉ yêu cầu thực hiện những yêu cầu cơ bản của một
phần mềm và lượng kiến thức đã tích lũy hiện tại, bài toán được thực hiện
trên cửa sổ console quen thuộc của Window (Giao diện gần giống MS-DOS
trực quan). Giao diện được hiển thị theo từng dòng chức năng và được người
dùng lựa chọn bằng việc nhập vào thứ tự yêu cầu thông qua hàm switch …
case.
Khi chương trình khởi chạy thì hàm main() sẽ lần lượt gọi các hàm
khởi tạo các đối tượng thuộc lớp, các danh sách. Đồng thời chương trình sẽ
gọi các hàm ReadFile() để đọc dữ liệu từ các file .txt có sẵn được lưu trong


11

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

thư mục chứa chương trình. Sau đó sẽ thực hiện các chức năng của chương
trình theo Menu tương ứng.
Hàm main()
int main()
{
ListSV l_sv;
ListHD l_hd;
ListPhong l_p;
CreatList(l_sv);
CreatList(l_hd);
CreatList(l_p);
ReadFile(l_sv);
ReadFile(l_hd);
ReadFile(l_p);
while (1)
{
int mn;
do {
Menu();

cin >> mn ;
switch (mn)
{
case 1:
system("cls");
ThemHopDong(l_sv, l_hd, l_p);
system("pause");
system("cls");
break;
case 2:
system("cls");
ShowPhong(l_p);
system("pause");
system("cls");
break;
case 3:
Thong_Ke(l_sv,l_hd,l_p);
break;
case 4:
Tra_Phong(l_sv, l_hd, l_p);
break;
case 5:
Chuyen_Phong(l_sv, l_hd, l_p);
system("cls");
break;
case 6:
Gia_Han(l_sv, l_hd, l_p);
break;
case 7:
Tim_Kiem(l_sv,l_hd, l_p);

system("cls");
break;
case 8:
SaveData(l_hd);
SaveData(l_p);
SaveData(l_sv);
return 0;

12

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

default:
break;
}
} while (mn!='0');

}

13

system("pause");
}
return 0;


Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

 Giao diện khởi chạy chương trình:

Khi người dùng lựa chọn các chức năng theo số thứ tự, giao diện phần mềm
sẽ thay đổi tùy theo lựa chọn được nhập vào và thực hiện các chức năng tương
ứng. Dưới đây nhóm chúng em chỉ trình bày một số chức năng cơ bản của phần
mềm, những chức năng khác và chức năng tương tự sẽ được thể hiện khi sử dụng
chương trình.
Dữ liệu được nạp vào chương trình thông qua 2 cách là đọc từ file có sẵn và
nhập trực tiếp từ bàn phím.Việc đọc từ file có sẵn được tự động thực thi khi
chương trình bắt đầu thực thi ngay từ đầu bằng hàm ReadFile().
void ReadFile(ListSV& list)
{
fstream myfile("DataSinhVien.txt");
string s;
if (myfile.is_open()) {
while (myfile.eof() == false)
{
SinhVien sv;
Date d;
getline(myfile, s, ':');
sv.set_id(atoi(s.c_str()));

getline(myfile, s, ':');
sv.set_Ten(s);
getline(myfile, s, ':');
atoi(s.c_str()) ? sv.set_GioiTinh(true) :
sv.set_GioiTinh(false);
getline(myfile, s, ':');
d.set_day(atoi(s.c_str()));
getline(myfile, s, ':');
d.set_month(atoi(s.c_str()));
getline(myfile, s, ':');
d.set_year(atoi(s.c_str()));
sv.set_NgaySinh(d);
getline(myfile, s, ':');
sv.set_Lop(s);
getline(myfile, s);
sv.set_Khoa(s);

14

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

}
else {
}

GVHD : Phan Thanh Tao


AddTail(list, CreateNode(sv));
}
myfile.close();
cout << "file not found!!!\n";

}

Hoặc là nhập dữ liệu từ bàn phím giao diện đăng ký hợp đồng mới:

 Đây là giao diện khi quá trình nhập liệu khi không thỏa mãn các điều
kiện ràng buộc và yêu cầu nhập lại.

15

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

 Giao diện tình trạng phòng KTX thể hiện theo sơ đồ khu nhà, tầng và
phòng bao gồm tên phòng, loại phòng(NAM / NỮ) và số lượng hiện tại
trên số lượng tối đa.

16

Trịnh Minh An – Lớp 14T2

Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

Giao diện Thống kê KTX theo các đối tượng
 Danh sách hợp đồng.
 Danh sách sinh viên.
 Danh sách phòng.

 Hiển thị danh sách hợp đồng:

17

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

 Hiển thị danh sách sinh viên:

18

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2



ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

 Hiển thị danh sách phòng:

 Giao diện menu trả phòng gồm:
 Trả phòng theo mã số hợp đồng
 Trả phòng theo mã số sinh viên

 Giao diện trả phòng theo mã số hợp đồng:

19

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

 Giao diện trả phòng theo mã số sinh viên:

 Giao diện chuyển phòng:

20


Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

 Giao diện gia hạn phòng:

Có 2 hình thức để gia hạn phòng. Đó là gia hạn theo mã số hợp đồng và theo mã
số sinh viên đã đăng ký phòng.
Hiển thị gia hạn phòng theo mã số hợp đồng:

21

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

 Hiển thị gia hạn phòng theo mã số sinh viên:

22

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2



ĐỒ ÁN GIẢI THUẬT VÀ LẬP TRÌNH – QUẢN LÝ KÝ TÚC XÁ

GVHD : Phan Thanh Tao

 Giao diện tìm kiếm:

Trong mục tìm kiếm này ta có thể tìm kiếm được thông tin sinh viên, thông tin hợp
đồng, thông tin phòng và tìm kiếm thông tin chung(tìm kiếm bằng từ khóa).
Tìm kiếm theo đối tượng sinh viên.
Tìm kiếm theo đối tượng hợp đồng.
Tìm kiếm theo đối tượng phòng.
Tìm kiếm theo tất cả các đối tượng.






 Nhập dữ liệu để tìm kiếm thông tin sinh viên theo mã số sinh viên:

23

Trịnh Minh An – Lớp 14T2
Bùi Văn Thảo – Lớp 14T2


×