Введение, Обоснование выбора средств и методов для выполнения задания, Код программы - Предметный указатель базы данных
Язык программирования C++ является одним из самых популярных и широко используемых для разработки программного обеспечения. В данной работе нам предстоит разработать консольное приложение с текстовым интерфейсом, работать с файловыми потоками ввода/вывода и различными функциями стандартных библиотек С++. Объем работы обеспечит закрепление и углубление практических навыков по программированию на языке С++.
Обоснование выбора средств и методов для выполнения задания
Средством для выполнения задания была выбрана среда разработки VisualStudio 2013 от Microsoft. При разработке приложения использовались стандартные библиотеки языка С++: iostream, fstream, string, vector. Приложение разработано под операционную систему Windows 7 (на других версиях Windows приложение не тестировалось).
Код программы
#include <iostream>
#include <string>
#include <vector>
#include <locale>
#include <fstream>
Using namespace std;
#define STR_NUMBER 4
#define WORD_NUMBER 10
Struct term
{
Wstring name;
Vector<unsigned int> pages;
};
Void ClearSubjectIndex(vector<term> &;terms); //
Void AddNewTerm(vector<term> &;terms, wifstream &;file); //
Void EditElement(vector<term> &;terms, wifstream &;file); // прототип программы
Void DrawElements(vector<term> &;terms); //
Void WriteElementsToFile(vector<term> &;terms, wofstream &;file); //
Void SearchElement(vector<term> &;terms); //
//-------------------------------------------------------------------------------------------- функция main
Void main()
{
Setlocale(LC_ALL, "Rus");
Vector<term> terms;
Short decision;
Wofstream ofile;
Wifstream ifile;
Do{
Cout " "0. Создание пустого предметного указателя; ";
Cout " "1. Добавление термина в предметный указатель; ";
Cout " "2. Редактирование элемента предметного указателя; ";
Cout " "3. Вывод элементов указателя в алфавитном порядке на экран; ";
Cout " "4. Вывод элементов указателя в алфавитном порядке в текстовый файл; ";
Cout " "5. Поиск элемента предметного указателя по термину; ";
Cout " "6. Выход. ";
Cin " decision;
Switch (decision)
{
Case 0:
ClearSubjectIndex(terms);
Break;
Case 1:
AddNewTerm(terms, ifile);
Break;
Case 2:
EditElement(terms, ifile);
Break;
Case 3:
DrawElements(terms);
Break;
Case 4:
WriteElementsToFile(terms, ofile);
Break;
Case 5:
SearchElement(terms);
Break;
Default:
Break;
}
} while (decision!= 6);
Ifile. close();
Ofile. close();
}
//-------------------------------------------------------------- 0. создание пустого предметного указателя
Void ClearSubjectIndex(vector<term> &;terms)
{
If (terms. size() > 0)
Terms. clear();
}
//------------------------------------------------------------------- 1. добавление термина в предметный указатель
Void AddNewTerm(vector<term> &;terms, wifstream &;file)
{
Term newTerm;
Wchar_t* termName = new wchar_t[256];
Cout " "Введите новый термин: ";
Fflush(stdin);
_getws_s(termName, 256);
If (termName[wcslen(termName) - 2] == '.' || // проверка на знаки
TermName[wcslen(termName) - 2] == ',' ||
TermName[wcslen(termName) - 2] == '!')
{
TermName[wcslen(termName) - 2] = '';
TermName[wcslen(termName) - 1] = '0';
}
NewTerm. name = termName;
Terms. push_back(newTerm);
File. close();
File. open("Input. txt");
File. seekg(0);
Unsigned int page = 0, str = 0, word = 0;
While (!file. eof())
{
Wstring ignore;
File " ignore;
Word++;
Wchar_t temp;
File. get(temp);
If (temp == ' ' || word >= WORD_NUMBER)
Str++;
If (str >= STR_NUMBER)
{
Page++;
Str = 0;
}
If (!wcscmp(ignore. c_str(), terms[terms. size() - 1].name. c_str()))
Terms[terms. size() - 1].pages. push_back(page);
}
Delete termName;
TermName = NULL;
}
//------------------------------------------------------------------------------- 2. Редактирование элемента указателя
Void EditElement(vector<term> &;terms, wifstream &;file)
{
Unsigned int index;
Wchar_t* termName = new wchar_t[256];
Cout " "Введите индекс: ";
Cin " index;
Предметный указатель программирование visualstudio
Cout " "Введите термин: ";
Fflush(stdin);
_getws_s(termName, 256);
If (termName[wcslen(termName) - 2] == '.' || //проверка на знаки
TermName[wcslen(termName) - 2] == ',' ||
TermName[wcslen(termName) - 2] == '!')
{
TermName[wcslen(termName) - 2] = '';
TermName[wcslen(termName) - 1] = '0';
}
Terms[index].name = termName;
Terms[index].pages. clear();
File. close();
File. open("Input. txt");
File. seekg(0);
Unsigned int page = 0, str = 0, word = 0;
While (!file. eof())
{
Wstring ignore;
File " ignore;
Word++;
Wchar_t temp;
File. get(temp);
If (temp == ' ' || word >= WORD_NUMBER)
Str++;
If (str >= STR_NUMBER)
{
Page++;
Str = 0;
}
If (!wcscmp(ignore. c_str(), terms[index].name. c_str()))
Terms[index].pages. push_back(page);
}
Delete termName;
TermName = NULL;
}
//----------------------------------------------------------------- 3. Вывод элементов в алфавитном порядке
Void DrawElements(vector<term> &;terms)
{
For (int i = 0; i < terms. size(); ++i) //
{ //
For (int j = i + 1; j < terms. size(); ++j) //
{ //
If (terms[j].name[0] < terms[i].name[0]) // сортировка
{ //
Term temp = terms[j]; //
Terms[j] = terms[i]; //
Terms[i] = temp; //
}
}
}
Cout " "Термин: Страницы: ";
For (int i = 0; i < terms. size(); ++i) //--------- вывод терминов на экран по алфавиту
{
Wcout "
18:02:43
Terms[i].name " " ";
For (int j = 0; j < terms[i].pages. size(); ++j)
{
Cout " terms[i].pages[j];
If (j + 1 < terms[i].pages. size())
Cout " ", ";
}
Cout " " ";
}
}
//--------------------------------------------------------------------------4. Вывод терминов в текстовый файл по алфавиту
Void WriteElementsToFile(vector<term> &;terms, wofstream &;file)
{
File. open("Output. txt");
For (int i = 0; i < terms. size(); ++i)
{
For (int j = i + 1; j < terms. size() - 1; ++j) //сортировка
{ //
If (terms[j].name[0] < terms[i].name[0]) //
{ //
Term temp = terms[j]; //
Terms[j] = terms[i]; //
Terms[i] = temp; //
} //
} //
} //
File " "Термин: Страницы: ";
For (int i = 0; i < terms. size(); ++i)
{
File " terms[i].name. c_str() " " "; //------------ запись в файл
For (int j = 0; j < terms[i].pages. size(); ++j)
{
File " terms[i].pages[j];
If (j + 1 < terms[i].pages. size())
File " ", ";
}
Cout " " ";
}
}
//------------------------------------------------------------------ 5. Поиск элемента по термину
Void SearchElement(vector<term> &;terms)
{
Wchar_t* name = new wchar_t[256];
Cout " "Введите термин: ";
Fflush(stdin);
_getws_s(name, 256);
For (int i = 0; i < terms. size(); ++i)
{
If (!wcscmp(terms[i].name. c_str(), name))
{
Cout " "Термин найден. ";
Cout " "Страницы, на которых найден термин: ";
For (int j = 0; j < terms[i].pages. size(); ++j)
Cout " terms[i].pages[j] " ", ";
Break;
}
}
}
Похожие статьи
-
Обоснование выбора средств разработки проекта Для реализации корпоративной информационной системы "Бюджетное планирование и отчетность" в исследуемой...
-
Предлагаемая библиотека хранит все данные в отдельных таблицах, таким образом он не обязан использовать ту же СУБД, что и основное приложение. В качестве...
-
Обоснование выбранного метода При дизайне системы согласно требованиям или при оптимизации существующей необходимо ввести модель, позволяющую не только...
-
Введение - Технологии больших данных: анализ и выбор решения для реализации проекта
В конце 2000х годов были уже сформированы решения класса Business Intelligence, которые являются альтернативой традиционным методам управления базами...
-
Помимо концепции будущей системы бюджетирования, в рамках решения задачи разработки проекта "Бюджетное планирование и отчетность" должен быть разработан...
-
Для разработки базы данных была выбрана СУБД Access так как, она имеет следующие преимущества перед другими СУБД: - Является реляционной; -...
-
Данная компания является ведущем производителем оборудования и выпуска квалифицированных специалистов в мире. Это одна из самых оцененных компаний в...
-
Описание входной и выходной информации "Учет продаж футбольной атрибутики и спортивных товаров". Входная информация задачи: 1. Условно постоянная...
-
Методы и средства защиты от поражения электрическим током В трехфазных сетях применяется защитное заземление с глухо заземленной нейтралью, оно является...
-
Для написания АИС использовались следующие языки программирования, программные средства и библиотеки: - Язык программирования PHP 5.4; -...
-
Приложение, которое необходимо разработать, должно производить геометрическую реконструкцию сцены и вычисление цвета вершин модели. Для геометрической...
-
Стремительный рост популярности смартфонов и планшетных ПК способствует увеличению объема рынка мобильных приложений, которые помогают пользователю...
-
Разработка с "нуля", Выбор метода разработки - Различные виды программ для Multi-Touch столов
Разработка приложения на каком-либо языке с нуля достаточно трудоемкий процесс, так как в случае создания интерфейсов понадобиться множество времени для...
-
В данном разделе была разработана функциональная схема работы программного комплекса, которая в общем виде описывает состав комплекса, характер и виды...
-
Для решения поставленных задач используются следующие методы: 1) Иерархия пользователей будет определена при помощи построения UML диаграммы, для...
-
Для реализации ИИС контроля расхода энергоресурсов проведем анализ характеристик существующих беспроводных технологий передачи данных. Наиболее...
-
Обоснование выбора средств для разработки В качестве платформы была взята платформа NET, потому что платформа NET на текущий момент самая передовая и...
-
Введение: - Классификация программ для ПК: системные и прикладные программные средства
На сегодняшний день в мире существует более 130 миллионов ком-пьютеров и бо-лее 80 % из них объединены в различные информационно-вычислительные сети от...
-
Комплекс инструментов Oracle Exalytics Комплексное решение Oracle Exalytics создано для обеспечения высокой производительности аналитических систем и...
-
В среде электронного ресурса ИИС "MD_SLAGMELT" (Рис. 6) для доступа к компоненту "моделирование" необходима учетная запись (пара логин/пароль) (Рис.7)....
-
Изучение специфики предметной области по литературным данным и по результатам поиска в интернете Задачи автоматизации деятельности почтовых систем в...
-
Введение - Программа расчета агрегатов по накапливающимся данным для построения отчетов
Бесчисленное количество веб-приложений полагается на базы данных. Нередко архитектура этих баз данных недальновидна с самого начала, а постоянно...
-
Обоснование выбора языка и среды программирования Для реализации данного курсового проекта был выбран язык программирования Visual C#. Язык основан на...
-
При разработке Системы были использованы современные веб-технологии: AJAX, LAMP. Используемые программные средства, языки программирования, библиотеки:...
-
Рис. 3 Результаты сохраненные в файле: 2 1 1 |2 3 2 3 |6 6 5 4 |5 Gauss X1=-7,4 X2=1,2 X3=2,2 J-Gauss X1=-7,4 X2=1,2 X3=2,2 Инструкция по работе с...
-
Служебная программа tty Позволяет узнать имя пользовательского терминала. Более точно, она выдает на стандартный вывод имя терминала, открытого в...
-
Коэффициенты квадратной матрицы А и вектора b Таблица 1 - Коэффициенты квадратной матрицы А и вектора b № Вар Коэффициенты квадратной матрицы А и вектора...
-
, Алгоритм обратного хода: Шаг 1. Вычислим Шаг 2. Вычислим: , Рис. 1. Основной алгоритм решения СЛУ методом исключения Гаусса. Для контроля правильности...
-
Метод конечных элементов (МКЭ) жесткости возник в аэрокосмической отрасли. Исследователи рассматривали различные подходы к анализу сложных частей...
-
Выполнение задания осуществлялось на эмуляторе микро ЭВМ СМ - 1800 (Эмулятор Смирнова), установленном на ПК на базе процессора AMD Atlon(tm) X2 240 2.79...
-
Современные технологии обработки Больших данных Большой проект бюджетирование автоматизация С приходом новых технологий, инструментов и средств...
-
В работе возникает необходимость выбора предметной области, в которой будет тестироваться каскадный классификатор. Главными вопросами на данном этапе...
-
При разработке данной программы были допущены следующие синтаксические ошибки: - неправильное использование операторов присваивания; - неверное...
-
Введение - База данных "Определение факультативов для студентов"
Система баз данных -- это, по сути, не что иное, как компьютеризированная система хранения однотипных записей. Саму же базу данных можно рассматривать...
-
ОПИСАНИЕ ПРОГРАММЫ, ОСНОВНЫЕ ПЕРЕМЕННЫЕ И СТРУКТУРЫ - Структуры и алгоритмы обработки данных
ОСНОВНЫЕ ПЕРЕМЕННЫЕ И СТРУКТУРЫ Struct BD { char FIO[32]; // фоpмат <Фамилия>_<Имя>_<Отчество> int numberO; char dolzhnost[32]; char dateB[8]; }...
-
После ввода пользователем исходных данных компьютер должен их обработать в соответствии с заданной программой и вывести результаты в форме, удобной для...
-
База данные кеширование денормализация Предлагаемое решение -- скомбинировать некоторые идеи кеширования и денормализации в специальной библиотеке...
-
MapReduce, Кеш - Программа расчета агрегатов по накапливающимся данным для построения отчетов
MapReduce -- модель распределенных вычислений, используемая для параллельных вычислений над большими объемами данных в кластерах. MapReduce позволяет...
-
Реализация, Composer - Программа расчета агрегатов по накапливающимся данным для построения отчетов
Для эффективного тестирования и демонстрации библиотеки было решено разработать PHP-приложение, состоящее из: 1. Менеджера зависимостей composer; 2....
-
Классы StatMetric содержат всю логику библиотеки и предоставляют интерфейс для обновления и получения значений агрегатов. Рисунок 4. Диаграмма классов...
Введение, Обоснование выбора средств и методов для выполнения задания, Код программы - Предметный указатель базы данных