Вы находитесь на странице: 1из 11

Министерство образования республики Молдова

Технический университет Молдовы


Кафедра «Вычислительной техники, информатики и микроэлектроники »

Отчёт
Лабораторная работа № 1
Тема: Использование файлов

выполнил студент гр. SI-222 Carasev I.


проверил: Mititelu V.

Кишинёв 2023
Цель: Алгоритмы программирования обработки структур и массивов из структур с
использованием функций, указателей, динамического выделения памяти на языке Си, а
также использование файлов.

Задание (Вариант 3):


Для заданной одномерной таблицы с элементами структурного типа (по вариантам) на
экран должно быть выведено следующее меню опций:
1. Динамическое выделение памяти для массива структур.
2. Ввод элементов таблицы с клавиатуры.
3. Отобразите элементы таблицы на экране.
4. Добавление нового элемента в конце.
5. Изменение элемента таблицы.
6. Поиск элемента массива.
7. Сортировка картины.
8. Удаление указанного элемента из массива.
9. Освобождение памяти, выделенной под таблицу.
0. Выйти из программы.
Разработать функции для реализации опций меню.
Структура отеля с полями: название, адрес, телефон, категория, количество мест.
Краткое изложение темы:
Файлы играют важную роль при написании кода на C++. Они могут
использоваться для сохранения и загрузки данных, а также для ввода и вывода
данных. В языке C++ для работы с файлами используются функции стандартной
библиотеки fstream.

Для открытия файла в C++ можно использовать классы ifstream для чтения
данных из файла и ofstream для записи данных в файл. Класс fstream может
использоваться как для чтения, так и для записи данных в файл.

Для чтения данных из файла можно использовать функцию getline() для чтения
строк из файла, а также функцию >> для чтения других типов данных. Для записи
данных в файл используется функция <<.

Для более удобной работы с данными, например, для записи и чтения структур,
можно использовать функции write() и read(), которые позволяют записывать
данные в файл в бинарном виде и считывать данные из файла в бинарном виде.

При работе с файлами важно убедиться, что файл был успешно открыт, а также
закрыть файл после использования, чтобы избежать потери данных.

Код программы:

Файл (его название совпадает с название программы), в котором находится основной


блок main, содержит следующий код:
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include "sda_lab1.h"
#include "my_module.cpp"
using namespace std;

int main()
{
int choice;

do {
printMenu();
cout << "Select an action: ";
cin >> choice;

switch (choice) {
case 1:
dynamicMemoryAllocation();
break;
case 2:
inputData();
break;
case 3:
printData();
break;
case 4:
addNewElement();
break;
case 5:
changeElement();
break;
case 6:
searchElement();
break;
case 7:
sortArray();
break;
case 8:
deleteElement();
break;
case 9:
freeMemory();
break;
case 0:
cout << "Goodbye!" << endl;
break;
default:
cout << "Select an action from the list!" << endl;
}
} while (choice != 0);

return 0;
}

Головной файл содержит название функций (это файл sda_lab1.h):

void printMenu();
void dynamicMemoryAllocation();
void inputData();
void printData();
void addNewElement();
void changeElement();
void searchElement();
void sortArray();
void deleteElement();
void freeMemory();

Файл содержащий реализацию функций, а также структуры:

#include "sda_lab1.h"
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;

struct Hotel
{
string name;
string address;
string phone;
string category;
int numberOfPlaces;
};

vector<Hotel> hotels;

void printMenu() {
cout << "1. Dynamic memory allocation for an array of structures." << endl;
cout << "2. Entering table elements from the keyboard." << endl;
cout << "3. Display the elements of the table on the screen." << endl;
cout << "4. Adding a new element at the end." << endl;
cout << "5. Changing a table element." << endl;
cout << "6. Search for an array element." << endl;
cout << "7. Sort picture." << endl;
cout << "8. Removing the specified element from the array." << endl;
cout << "9. Freeing the memory allocated for the table." << endl;
cout << "0. Exit the program." << endl;
}

void dynamicMemoryAllocation() {
int size;
cout << "Enter the number of elements: ";
cin >> size;

hotels.resize(size);
cout << "The memory for the structure array has been allocated!" << endl;
}

void inputData() {
cout << "Enter data for each array element: " << endl;

for (int i = 0; i < hotels.size(); i++) {


cout << "Namе: ";
cin >> hotels[i].name;

cout << "Adress: ";


cin >> hotels[i].address;

cout << "Telephone: ";


cin >> hotels[i].phone;

cout << "Category: ";


cin >> hotels[i].category;

cout << "Number of rooms: ";


cin >> hotels[i].numberOfPlaces;
}
}

void printData() {
cout << "Name\tAdress\t\tPhone\tCategory\tNumber of places" << endl;
for (int i = 0; i < hotels.size(); i++) {
cout << hotels[i].name << "\t";
cout << hotels[i].address << "\t";
cout << hotels[i].phone << "\t";
cout << hotels[i].category << "\t";
cout << hotels[i].numberOfPlaces << endl;
}
}

void addNewElement() {
Hotel hotel;
cout << "Enter data for the new item: " << endl;
cout << "Name: ";
cin >> hotel.name;

cout << "Adress: ";


cin >> hotel.address;

cout << "Phone: ";


cin >> hotel.phone;

cout << "Category: ";


cin >> hotel.category;

cout << "Number of rooms: ";


cin >> hotel.numberOfPlaces;

hotels.push_back(hotel);

cout << "Item added!" << endl;


}

void changeElement() {
string name;
cout << "Enter the name of the hotel you want to change: ";
cin >> name;

for (int i = 0; i < hotels.size(); i++) {


if (hotels[i].name == name) {
cout << "Enter new data for the item: " << endl;

cout << "Name: ";


cin >> hotels[i].name;

cout << "Adress: ";


cin >> hotels[i].address;

cout << "Phone: ";


cin >> hotels[i].phone;

cout << "Category: ";


cin >> hotels[i].category;

cout << "Number of Places: ";


cin >> hotels[i].numberOfPlaces;

cout << "Item changed!" << endl;


}
}
}

void searchElement() {
string name;
cout << "Enter the name of the hotel you want to find: ";
cin >> name;

for (int i = 0; i < hotels.size(); i++) {


if (hotels[i].name == name) {
cout << "Name\tAdress\t\tPhone\tCategory\tNumber of rooms" << endl;
cout << hotels[i].name << "\t";
cout << hotels[i].address << "\t";
cout << hotels[i].phone << "\t";
cout << hotels[i].category << "\t";
cout << hotels[i].numberOfPlaces << endl;
}
}
}

void sortArray() {
for (int i = 0; i < hotels.size() - 1; i++) {
for (int j = 0; j < hotels.size() - i - 1; j++) {
if (hotels[j].name > hotels[j + 1].name) {
Hotel temp = hotels[j];
hotels[j] = hotels[j + 1];
hotels[j + 1] = temp;
}
}
}
}

void deleteElement() {
string name;
cout << "Enter the name of the hotel to be deleted: ";
cin >> name;

for (int i = 0; i < hotels.size(); i++) {


if (hotels[i].name == name) {
hotels.erase(hotels.begin() + i);
cout << "Item removed!" << endl;
}
}
}

void freeMemory()
{
hotels.clear();
}

Файлы находятся в папке с самой программой:

Результаты работы программы:


Здесь я выбираю необходимые для ввода данных пункты, ввожу данные и вывожу
результат- получившуюся таблицу.
Здесь выбираю пункт добавить ещё данные и вывожу получившуюся таблицу
Здесь я выбираю пункт заменить данные в таблице и вывожу результат на экран
Здесь ищу данные конкретного отеля в таблице

Здесь сортирую данные по алфавиту


Здесь я удаляю пункт в таблице

Здесь я полностью очищаю данные


Если ввести 0, то программа прекратит работу.

Выводы:
Я научился программированию алгоритмов программирования обработки структур и
массивов из структур с использованием функций, указателей, динамического выделения
памяти на языке Си.

Литература:
Основной учебник курса это ПОЛЯКОВ "Программирование на языке Си. "
2009 г.

Вам также может понравиться