Решение задач разной категории сложности средствами языков высокого уровня

Создание класса данных. Функции, реализованные в классе. Введение ограничений к классу. Функции сортировки, удаления и добавления. Проверка на существование входного и выходного файлов, на существование записей в классе. Поиск записи по запросу.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 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();

}; Функции, реализованные в классе, отражены в таблице:

Функция

Пояснения, способ реализации

print

Чтение из файлаи вывод его на экран. Реализовано с помощью файлового потока 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.