Решение задач разной категории сложности средствами языков высокого уровня
Создание класса данных. Функции, реализованные в классе. Введение ограничений к классу. Функции сортировки, удаления и добавления. Проверка на существование входного и выходного файлов, на существование записей в классе. Поиск записи по запросу.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 29.03.2017 |
Размер файла | 718,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1. Постановка задачи
В качестве задания вам предоставляется класс данных. Для данного класса необходимо написать программу, содержащую следующие пункты:
1. Чтение из файла
2. Вывод в файл
3. Сортировка записей по определенному полю(-ям)
4. Добавление записей
5. Удаление записей
6. Поиск записи по запросу
Риэлтерская контора (купля-продажа жилья). База предложений: район и адрес, характеристика дома и квартиры, запрашиваемая стоимость, координаты заявителя. База спроса: требования покупателя к жилью (возможно несколько вариантов, допустимые диапазоны), финансовые возможности, координаты заявителя. Подбор вариантов для той и другой стороны, автоматизированный поиск взаимоприемлемых вариантов. Пример запроса покупателя: однокомнатная, до 200 тыс. р., Поток и Новосиликатный не предлагать.
2. Анализ предлагаемой реализации
Класс - это элемент программного обеспечения, описывающий абстрактный тип данных и его частичную или полную реализацию. В данной работе определен классRooms.
classRooms
{
private:
paramsx[100];
int count;
public:
Rooms();
void output_file();
char file[100];
void print();
void search();
void add();
void remove();
void sort();
}; Функции, реализованные в классе, отражены в таблице:
Функция |
Пояснения, способ реализации |
|
|
Чтение из файлаи вывод его на экран. Реализовано с помощью файлового потока ifstream. |
|
output_file |
Вывод данных в файл “input.txt” |
|
add |
Добавление новой записи |
|
remove |
Удаление определенной записи |
|
search |
Поиск записей по кртирериям |
3. Код программы
#include "stdafx.h"
#include <fstream>
#include <iostream>
using namespace std;
struct params
{
char district[100];
char street[100];
int area;
char WC[100];
int floor;
int floors;
int elevator;
int parking;
int kindergarten;
unsigned long int price;
char phone_number[11];
char name[100];
};
class Rooms
{
private:
params x[100];
int count;
public:
Rooms();
void output_file()
{
ofstream fin;
fin.open("input.txt");
if (fin.fail())
cout << "Error" << endl;
else {
for (int i = 0; i < count; i++) {
fin << x[i].district << " "
<< x[i].street << " "
<< x[i].area << " "
<< x[i].WC << " "
<< x[i].floor << " "
<< x[i].floors << " "
<< x[i].elevator << " "
<< x[i].parking << " "
<< x[i].kindergarten << " "
<< x[i].price << " "
<< x[i].phone_number << " "
<< x[i].name << endl;
}
}
fin.close();
};
char file[100];
void print();
void search();
void add();
void remove();
void sort();
};
Rooms::Rooms()
{
int n = 0;
ifstream fin;
fin.open("input.txt");
if (fin.fail())
cout << "Error" << endl;
else {
do {
fin >> x[n].district;
fin >> x[n].street;
fin >> x[n].area;
fin >> x[n].WC;
fin >> x[n].floor;
fin >> x[n].floors;
fin >> x[n].elevator;
fin >> x[n].parking;
fin >> x[n].kindergarten;
fin >> x[n].price;
fin >> x[n].phone_number;
fin >> x[n].name;
n++;
} while (fin.good());
}
fin.close();
count = n;
}
void Rooms::print() {
cout << endl << "\tПросмотр" << endl << endl;
cout << "\tРайон" << ", ";
cout << "Улица" << ", ";
cout << "Площадь" << ", ";
cout << "Санузел" << ", ";
cout << "Этаж" << ", ";
cout << "Лифт" << ", ";
cout << "Парковка" << ", ";
cout << "Дет.сад" << ", ";
cout << "Номер" << ", ";
cout << "Имя";
cout << endl;
for (int i = 0; i < count-1; i++) {
cout << i + 1 << " - ";
cout << x[i].district << ", ";
cout << x[i].street << ", ";
cout << x[i].area << ", ";
cout << x[i].WC << ", ";
cout << x[i].floor << "/" << x[i].floors << ", ";
cout << ((x[i].elevator) ? "Есть" : "Нет") << ", ";
cout << ((x[i].parking) ? "Есть" : "Нет") << ", ";
cout << ((x[i].kindergarten) ? "Есть" : "Нет") << ", ";
cout << "+7" << x[i].phone_number << ", ";
cout << x[i].name;
cout << endl;
}
}
void Rooms::search() {
cout << endl << "\tПоиск" << endl << endl;
struct search {
char district[100];
char street[100];
int minArea;
int maxArea;
int WC;
int minFloor;
int maxFloor;
int minFloors;
int maxFloors;
int elevator;
int parking;
int kindergarten;
int minPrice;
int maxPrice;
};
класс данные файл поиск
search searchData;
cout << "Заполните поля для поиска (0 - необязательное поле): " << endl;
cout << "Район: ";
cin >> searchData.district;
cout << "Улица: ";
cin >> searchData.street;
cout << "Минимальнаяплощадь: ";
cin >> searchData.minArea;
cout << "Максимальнаяплощадь: ";
cin >> searchData.maxArea;
cout << "Санузел\n\t1. Отдельный\n\t2. Раздельный\n";
cin >> searchData.WC;
cout << "Минимальныйэтаж: ";
cin >> searchData.minFloor;
cout << "Максимальныйэтаж: ";
cin >> searchData.maxFloor;
cout << "Минимальное количество этажей в доме: ";
cin >> searchData.minFloors;
cout << "Максимальное количество этажей в доме: ";
cin >> searchData.maxFloors;
cout << "Лифтвдоме (1. Есть, 2. Нет): ";
cin >> searchData.elevator;
cout << "Парковка (1. Есть, 2. Нет): ";
cin >> searchData.parking;
cout << "Детскийсад (1. Есть, 2. Нет): ";
cin >> searchData.kindergarten;
cout << "Минимальнаяцена: ";
cin >> searchData.minPrice;
cout << "Максимальнаяцена: ";
cin >> searchData.maxPrice;
cout << endl;
int flag = 0, countData = 0, n = count;
cout << "\tРайон" << ", ";
cout << "Улица" << ", ";
cout << "Площадь" << ", ";
cout << "Санузел" << ", ";
cout << "Этаж" << ", ";
cout << "Лифт" << ", ";
cout << "Парковка" << ", ";
cout << "Дет.сад" << ", ";
cout << "Номер" << ", ";
cout << "Имя";
cout << endl;
for (int i = 0; i < n; i++)
{
if (strcmp(searchData.district, "0") != 0)
{
if (strcmp(searchData.district, x[i].district) == 0)
flag = 1;
else
flag = 0;
}
if (strcmp(searchData.street, "0") != 0)
{
if (strcmp(searchData.street, x[i].street) == 0)
flag = 1;
else
flag = 0;
}
if (searchData.minArea != 0 || searchData.maxArea != 0)
{
if (searchData.minArea <= x[i].area && searchData.maxArea >= x[i].area)
flag = 1;
else
flag = 0;
}
if (searchData.WC != 0)
{
if (strcmp((searchData.WC == 1) ? "Отдельный" : "Раздельный", x[i].WC) == 0)
flag = 1;
else
flag = 0;
}
if (searchData.minFloor != 0 || searchData.maxFloor != 0)
{
if (searchData.minFloor <= x[i].floor && searchData.maxFloor >= x[i].floor)
flag = 1;
else
flag = 0;
}
if (searchData.minFloors != 0 || searchData.maxFloors != 0)
{
if (searchData.minFloors <= x[i].floor && searchData.maxFloors >= x[i].floors)
flag = 1;
else
flag = 0;
}
if (searchData.elevator != 0)
{
if (searchData.elevator == x[i].elevator)
flag = 1;
else
flag = 0;
}
if (searchData.parking != 0)
{
if (searchData.parking == x[i].parking)
flag = 1;
else
flag = 0;
}
if (searchData.kindergarten != 0)
{
if (searchData.kindergarten == x[i].kindergarten)
flag = 1;
else
flag = 0;
}
if (searchData.minPrice != 0 || searchData.maxPrice)
{
if (searchData.minPrice <= x[i].price && searchData.maxPrice >= x[i].price)
flag = 1;
else
flag = 0;
}
if (flag)
{
countData++;
cout << i + 1 << " - ";
cout << x[i].district << ", ";
cout << x[i].street << ", ";
cout << x[i].area << ", ";
cout << x[i].WC << ", ";
cout << x[i].floor << "/" << x[i].floors << ", ";
cout << ((x[i].elevator) ? "Есть" : "Нет") << ", ";
cout << ((x[i].parking) ? "Есть" : "Нет") << ", ";
cout << ((x[i].kindergarten) ? "Есть" : "Нет") << ", ";
cout << "+7" << x[i].phone_number << ", ";
cout << x[i].name;
cout << endl;
}
flag = 0;
}
if (countData == 1)
cout << "Найдена " << countData << " строка.";
else if (countData > 1 && countData < 5)
cout << "Найдено " << countData << " строки.";
else
cout << "Найдено " << countData << " строк";
cout << endl << endl;
}
void Rooms::add() {
cout << endl << "\tДобавить" << endl << endl;
params d;
cout << "Район: ";
cin >> d.district;
cout << "Улица: ";
cin >> d.street;
cout << "Площадь: ";
cin >> d.area;
cout << "Санузел\n\t1. Отдельный\n\t2. Совместный\n";
int wc = 0;
cin >> wc;
strcpy(d.WC, ((wc == 1) ? "Отдельный" : "Совместный"));
cout << "Этаж: ";
cin >> d.floor;
cout << "Этажей в доме: ";
cin >> d.floors;
cout << "Лифт в доме (1. Есть, 0. Нет): ";
cin >> d.elevator;
cout << "Парковка (1. Есть, 0. Нет): ";
cin >> d.parking;
cout << "Детский сад (1. Есть, 0. Нет): ";
cin >> d.kindergarten;
cout << "Цена: ";
cin >> d.price;
cout << "Номертелефона: +7";
cin >> d.phone_number;
cout << "Вашеимя: ";
cin >> d.name;
cout << endl;
cout << "Район" << ", ";
cout << "Улица" << ", ";
cout << "Площадь" << ", ";
cout << "Санузел" << ", ";
cout << "Этаж" << ", ";
cout << "Лифт" << ", ";
cout << "Парковка" << ", ";
cout << "Дет.сад" << ", ";
cout << "Номер" << ", ";
cout << "Имя";
cout << endl;
cout << d.district << ", ";
cout << d.street << ", ";
cout << d.area << ", ";
cout << d.WC << ", ";
cout << d.floor << "/" << d.floors << ", ";
cout << ((d.elevator) ? "Есть" : "Нет") << ", ";
cout << ((d.parking) ? "Есть" : "Нет") << ", ";
cout << ((d.kindergarten) ? "Есть" : "Нет") << ", ";
cout << "+7" << d.phone_number << ", ";
cout << d.name;
cout << endl;
x[count++] = d;
}
void Rooms::remove() {
cout << endl << "\tУдалить" << endl << endl;
print();
int n = count, numberDataForRemove, trueOrFalse;
cout << endl << "Выберите номер объявления, для удаления: ";
cin >> numberDataForRemove;
cout << "Вы выбрали номер - (" << numberDataForRemove << "), Вы согласны? (1 - Да, 0 - Нет): ";
cin >> trueOrFalse;
numberDataForRemove -= 1;
if (trueOrFalse == 1)
{
for (int i = numberDataForRemove; i < n; i++)
x[i] = x[i + 1];
--count;
ofstream fin;
fin.open("/Users/igorseroukhov/Desktop/course/course/file.txt");
if (fin.fail())
cout << "Error" << endl;
else {
for (int i = 0; i < count; i++) {
fin << x[i].district << " "
<< x[i].street << " "
<< x[i].area << " "
<< x[i].WC << " "
<< x[i].floor << " "
<< x[i].floors << " "
<< x[i].elevator << " "
<< x[i].parking << " "
<< x[i].kindergarten << " "
<< x[i].price << " "
<< x[i].phone_number << " "
<< x[i].name << endl;
}
}
fin.close();
cout << "Строка " << numberDataForRemove + 1 << " удалена" << endl << endl;
}
}
void Rooms::sort() {
int s = 0;
cout << "Сортировать по (1. По району, 2. Поплощади): ";
cin >> s;
int n = count;
if (s == 1) {
for (int i = 0; i < n; i++)
for (int j = 0; j < n - i - 1; j++)
if (strcmp(x[j].district, x[j + 1].district) > 0)
{
struct params tmp = x[j];
x[j] = x[j + 1];
x[j + 1] = tmp;
}
}
else if (s == 2) {
for (int i = 0; i < n; i++)
for (int j = 0; j < n - i - 1; j++)
if (x[j].area > x[j + 1].area)
{
struct params tmp = x[j];
x[j] = x[j + 1];
x[j + 1] = tmp;
}
}
else {
cout << "Ошибка!" << endl;
return;
}
ofstream fin;
fin.open("/Users/igorseroukhov/Desktop/course/course/file.txt");
if (fin.fail())
cout << "Error" << endl;
else {
for (int i = 0; i < count; i++) {
fin << x[i].district << " "
<< x[i].street << " "
<< x[i].area << " "
<< x[i].WC << " "
<< x[i].floor << " "
<< x[i].floors << " "
<< x[i].elevator << " "
<< x[i].parking << " "
<< x[i].kindergarten << " "
<< x[i].price << " "
<< x[i].phone_number << " "
<< x[i].name << endl;
}
}
cout << endl << "\tДанныеотсортированны!" << endl << endl;
}
int main()
{
setlocale(LC_ALL, "Russian");
Rooms rooms;
int step = -1;
while (1)
{
switch (step)
{
case -1:
cout << "Выберитедальнейшеедействие: " << endl;
cout << "1. Просмотр" << endl
<< "2. Поиск" << endl
<< "3. Добавить новый"
<< endl << "4. Удалить"
<< endl << "5. Отсортировать данные"
<< endl << "6. Сохранить в файл"
<< endl << "0. Выход из программы" << endl << endl;
cout << "Введите действие: ";
cin >> step;
break;
case 1:
rooms.print(); step = -1;
break;
case 2:
rooms.search(); step = -1;
break;
case 3:
rooms.add(); step = -1;
break;
case 4:
rooms.remove(); step = -1;
break;
case 5:
rooms.sort(); step = -1;
break;
case 6:
rooms.output_file(); step = -1;
break;
case 0:
return 0;
default:
cout << "Выберитедальнейшеедействие: " << endl;
cout << "1. Просмотр" << endl
<< "2. Поиск" << endl
<< "3. Добавить новый"
<< endl << "4. Удалить"
<< endl << "5. Отсортировать данные"
<< endl << "6. Сохранить в файл"
<< endl << "0. Выход из программы" << endl << endl;
cout << "Введите действие: ";
cin >> step;
break;
}
}
return 0;
}
4. Результаты тестов
1.Запуск программы
2.Просмотр
3. Добавить новый
4. Удаление
5.Сохранить в файл
Заключение
В рамках данной курсовой работы создан класс данных, реализованы функции работы с ним. Все реализованные функции для работы со структурой соответствуют заданию. В ходе выполнения курсовой работы не было введено ограничений к классу.
Результаты тестовых прогонов программы положительны. В программе осуществляется проверка на существование входного и выходного файлов, на существование записей в классе.
В результате выполнения данной курсовой работы были решены задачи, поставленные в начале работы. Был разработан класс, в программу были включены функции поиска, сортировки, удаления, добавления и другие. При этом были учтены все требования, выдвинутые в начале выполнения данного проекта.
Список использованной литературы
1. Конспект лекций по дисциплине «Объектно-ориентированный анализ и программирование».
Размещено на Allbest.ur
...Подобные документы
Методы хеширования данных и реализация хеш-таблиц. Разработка на языке программирования высокого уровня программы с функциями создания хеш-таблицы, добавления в нее элементов, их просмотра, поиска и удаления. Экспериментальный анализ хеш-функции.
лабораторная работа [231,9 K], добавлен 18.06.2011Характеристика и основные особенности языка Pascal. Создание числового массива с использованием встроенной функции. Использование записей, массивов и файлов. Обработка и графическая визуализация данных средствами табличного процессора и пакета MathCAD.
курсовая работа [1,0 M], добавлен 22.08.2012Методы реализации алгоритмов сортировки и алгоритмов поиска на языках программирования высокого уровня. Программирование алгоритмов сортировки и поиска в рамках создаваемого программного средства на языке Delphi. Создание руководства пользователя.
курсовая работа [1,7 M], добавлен 16.04.2012Основы работы с прикладным программным обеспечением, содержащим составляющие для работы с данными. Составление исходного кода скриптов для сортировки, добавления, редактирования и удаления информации в базу данных. Особенности работы операции поиска.
курсовая работа [610,7 K], добавлен 20.01.2012Методы численного интегрирования. Характеристика основных составляющих структурного программирования. Решение задания на языке высокого уровня Паскаль. Построение графического решения задачи в пакете Matlab. Решение задания на языке высокого уровня C.
курсовая работа [381,7 K], добавлен 10.05.2018Понятие класса как собрания информации, которая включает в себя данные и функции. Создание класса "Дек". Реализация методов: добавления элемента в начало и в конец дека, удаление элемента из начала и конца дека, проверка дека на наличие в нем элементов.
курсовая работа [568,9 K], добавлен 08.09.2010Методика разработки программной модели числового метода поиска экстремума функции двух переменных, конструирование ввода исходных данных и вывода с сохранением. Исследование ограничений на функцию, обусловленные методом поиска и средствами моделирования.
курсовая работа [195,4 K], добавлен 17.04.2010Создание программы "Телефонный справочник": загрузка телефонной книги; разработка алгоритмов добавления, редактирования, удаления записи; поиск по различным параметрам, вывод данных на печать. Интерфейс пользователя, системные требования и ограничения.
курсовая работа [1,5 M], добавлен 24.09.2012Особенности использования электронной таблицы Microsoft Excel для решения оптимизационных задач. Выполнение команды "Поиск решения" в меню "Сервис". Запись ограничений через использование кнопки "Добавить". Сообщение о найденном решении на экране.
лабораторная работа [4,5 M], добавлен 03.08.2011Разработка программы на языке Си++ и осуществление постановки и выбора алгоритмов решения задач обработки экономической информации, создание и редактирование базы данных, сортировка записей по определенному запросу, анализ эффективности обработки данных.
контрольная работа [316,8 K], добавлен 28.08.2012Создание базы данных. Поиск, изменение и удаление записей. Обработка и обмен данными. Проектирование базы данных. Определение формул для вычисляемой части базы. Редактирование полей и записей. Формы представления информации, содержащейся в базе данных.
курсовая работа [67,0 K], добавлен 23.02.2009Сущность и порядок реализации простых методов сортировки при составлении программного алгоритма, их классификация и разновидности, отличительные признаки, характерные свойства. Особенности алгоритмов для сортировки файлов записей, содержащих ключи.
реферат [20,7 K], добавлен 20.05.2010Структура данных с указанием типов. Общая структурная схема программы. Алгоритмы сортировки вставками. Назначение make-файла. Функции управления программой; перемещения и корректировки введенных данных и их удаления справочника, загрузки данных из файла.
курсовая работа [1,3 M], добавлен 12.01.2016Хранение таблиц, тип единицы распределения. Типичный размер блока записей. Таблица, в которой записи упорядочены по значению ключа. Кластерный индекс и В-дерево. Поиск с помощью индекса, способы его определения. Функции Hash мультипликативного метода.
презентация [345,0 K], добавлен 06.01.2014Функции, позволяющие работать с базой данных MySQL средствами РНР. Соединение с сервером и его разрыв. Создание и выбор базы данных. Доступ к отдельному полю записи. Комплексное использование информационных функций. Запросы, отправляемые серверу MySQL.
лекция [3,5 M], добавлен 27.04.2009Организация работы базы данных с помощью сбалансированных В-деревьев: принципы, методы добавления, поиска, удаления элементов из структуры. Процедуры, производящие балансировку и слияние записей в блоке. Реализация программы в Научной библиотеке ОрелГТУ.
курсовая работа [95,3 K], добавлен 12.08.2011Проектирование программного обеспечения. Схема начального формирования каталога файлов, вывода на экран каталога файлов, удаления файлов, сортировки файлов по имени, дате создания и размеру методом прямого выбора. Управление каталогом в файловой системе.
курсовая работа [804,0 K], добавлен 08.01.2014Классификация языков программирования. Использование циклических конструкций и выполнение итерационных процессов. Алгоритмические структуры циклов языков C, C++, Java, C#. Особенности современных языков программирования высокого уровня и их применение.
курсовая работа [345,6 K], добавлен 13.11.2009Сравнительный анализ наиболее распространенных языков, их классификация, описание достоинств и недостатков. Использование процедур, функции и подпрограмм в языках программирования высокого уровня. Разработка и реализация программы "Бортовой компьютер".
курсовая работа [329,8 K], добавлен 22.06.2014Изучение алгоритмов внутренней сортировки массивов данных, сравнение сложности их реализации и производительности. Отличительные черты сортировки включением, выбором, разделением, сортировки Шелла, обменной сортировки. Сравнение методов: плюсы и минусы.
курсовая работа [203,8 K], добавлен 03.12.2010