Я сейчас учусь программировать на C ++. Я пробиваюсь через проект программирования, который нашел в Интернете, и пытаюсь воссоздать его построчно, ища, почему определенные вещи работают именно так. Проект представляет собой простую систему бронирования отелей, которая имеет систему меню и сохраняет вводимые пользователем данные, например имя, адрес, номер телефона и т. Д. c.
Я пытался понять, что делают определенные части этого кода. Я хочу ввести пользовательский ввод и сохранить его в файле .dat, однако он, похоже, не работает, и я не уверен, почему. Есть ли лучший способ чтения и записи в текстовый файл.
Это функция, которая проверяет, свободна ли комната или зарезервирована:
#include <fstream>
#include "Hotel.h"
int Hotel::check_availabilty(int room_type){
int flag = 0;
std::ifstream room_check("Room_Bookings.dat",std::ios::in);
while(!room_check.eof()){
room_check.read((char*)this, sizeof(Hotel));
//if room is already taken
if(room_no == room_type){
flag = 1;
break;
}
}
room_check.close();//close the ifstream
return(flag);//return result
}
Это код, который бронирует номер:
#include "Hotel.h"
#include "check_availability.cpp"
void Hotel::book_a_room()
{
system("CLS");//this clears the screen
int flag;
int room_type;
std::ofstream room_Booking("Room_Bookings.dat");
std::cout << "\t\t" << "***********************" << "\n";
std::cout << "\t\t " << "THE GREATEST HOTEL" << "\n";
std::cout << "\t\t" << "***********************" << "\n";
std::cout << "\t\t " <<"Type of Rooms "<< "\t\t Room Number" "\n";
std::cout << "\t\t" << " Standard" << "\t\t 1 - 30" "\n";
std::cout << "\t\t" << " Luxury" << "\t\t\t 31 - 45" "\n";
std::cout << "\t\t" << " Royal" << "\t\t\t 46 - 50" "\n";
std::cout << "Please enter room number: ";
std::cin >> room_type;
flag = check_availabilty(room_type);
if(flag){
std::cout << "\n Sorry, that room isn't available";
}
else{
room_no = room_type;
std::cout<<" Name: ";
std::cin>>name;
std::cout<<" Address: ";
std::cin>>address;
std::cout<<" Phone No: ";
std::cin>>phone;
room_Booking.write((char*)this,sizeof(Hotel));
std::cout << "Your room is booked!\n";
}
std::cout << "Press any key to continue...";
getch();
room_Booking.close();
}
А это файл Hotel.h
class Hotel
{
int room_no;
char name[30];
char address[50];
char phone[10];
public:
void main_menu();
void book_a_room();
int check_availabilty(int);
void display_details();
};
Я не совсем понимаю, что делает эта часть в то время как l oop:
room_check.read((char*)this, sizeof(Hotel));
Если вам нужна дополнительная информация, спрашивайте. Приветствуются любые подсказки и советы, как сделать это лучше.