Предметный указатель базы данных

Применение знаний по программированию на языке С++. Разработка консольного приложения с текстовым интерфейсом. Использование среды разработки VisualStudio и стандартных библиотек. Код программы "Предметный указатель". Рассмотрение интерфейса пользователя.

Рубрика Программирование, компьютеры и кибернетика
Вид практическая работа
Язык русский
Дата добавления 07.04.2016
Размер файла 909,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Московский государственный технический университет радиотехники, электроники и автоматики»

МГТУ МИРЭА

Институт информационных технологий (ИТ)

Кафедра базовая автоматизированных систем организационного управления (АСОУ) №239 МГТУ МИРЭА при ФГУП НИИ «Восход»

ПРАКТИЧЕСКАЯ РАБОТА

по дисциплине Программирование

на тему: «Предметный указатель»

Предметная область: «Базы данных»

Студент группы ИВБО-8-14

Карапетян Р.А.

Руководитель практической работы

доцент Колесникова М.Д.

Содержание

Задание

Введение

1. Обоснование выбора средств и методов для выполнения задания

2. Код программы

3. Графический интерфейс пользователя

Заключение

Список литературы

Задание

Исходные данные

- предметный указатель состоит из следующих полей:

- термин

- ссылка на страницу термина

- операции указателя:

- создание пустого предметного указателя

- добавление термина в предметный указатель

- редактирование элемента предметного указателя (добавление ссылки на страницу для заданного термина)

- вывод элементов указателя в алфавитном порядке на экран

- вывод элементов указателя в алфавитном порядке в текстовый файл

- поиск элемента предметного указателя по термину

Перечень вопросов, подлежащих разработке, и обязательного графического материала:

- разработка текстового интерфейса предметного указателя

- разработка приложения базы хранения структурированных данных предметного указателя.

Введение

Язык программирования C++ является одним из самых популярных и широко используемых для разработки программного обеспечения. В данной работе нам предстоит разработать консольное приложение с текстовым интерфейсом, работать с файловыми потоками ввода/вывода и различными функциями стандартных библиотек С++. Объем работы обеспечит закрепление и углубление практических навыков по программированию на языке С++.

1. Обоснование выбора средств и методов для выполнения задания

Средством для выполнения задания была выбрана среда разработки VisualStudio 2013 от Microsoft. При разработке приложения использовались стандартные библиотеки языка С++: iostream, fstream, string, vector. Приложение разработано под операционную систему Windows 7 (на других версиях Windows приложение не тестировалось).

2. Код программы

#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. Создание пустого предметного указателя; \n";

cout « "1. Добавление термина в предметный указатель;\n";

cout « "2. Редактирование элемента предметного указателя;\n";

cout « "3. Вывод элементов указателя в алфавитном порядке на экран;\n";

cout « "4. Вывод элементов указателя в алфавитном порядке в текстовый файл;\n";

cout « "5. Поиск элемента предметного указателя по термину;\n";

cout « "6. Выход.\n";

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 « "Введите новый термин:\n";

fflush(stdin);

_getws_s(termName, 256);

if (termName[wcslen(termName) - 2] == '.' || // проверка на знаки

termName[wcslen(termName) - 2] == ',' ||

termName[wcslen(termName) - 2] == '!')

{

termName[wcslen(termName) - 2] = '\0';

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 == '\n' || 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 « "Введите индекс:\n";

cin » index;

предметный указатель программирование visualstudio

cout « "Введите термин:\n";

fflush(stdin);

_getws_s(termName, 256);

if (termName[wcslen(termName) - 2] == '.' || //проверка на знаки

termName[wcslen(termName) - 2] == ',' ||

termName[wcslen(termName) - 2] == '!')

{

termName[wcslen(termName) - 2] = '\0';

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 == '\n' || 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 « "Термин: \t Страницы: \n";

for (int i = 0; i < terms.size(); ++i) //--------- вывод терминов на экран по алфавиту

{

wcout «

18:02:43

terms[i].name « "\t";

for (int j = 0; j < terms[i].pages.size(); ++j)

{

cout « terms[i].pages[j];

if (j + 1 < terms[i].pages.size())

cout « ", ";

}

cout « "\n";

}

}

//--------------------------------------------------------------------------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 « "Термин: \t Страницы: \t\n";

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

{

file « terms[i].name.c_str() « "\t"; //------------ запись в файл

for (int j = 0; j < terms[i].pages.size(); ++j)

{

file « terms[i].pages[j];

if (j + 1 < terms[i].pages.size())

file « ", ";

}

cout « "\n";

}

}

//------------------------------------------------------------------ 5. Поиск элемента по термину

void SearchElement(vector<term> &terms)

{

wchar_t* name = new wchar_t[256];

cout « "Введите термин:\n";

fflush(stdin);

_getws_s(name, 256);

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

{

if (!wcscmp(terms[i].name.c_str(), name))

{

cout « "Термин найден.\n";

cout « "Страницы, на которых найден термин:\n";

for (int j = 0; j < terms[i].pages.size(); ++j)

cout « terms[i].pages[j] « ", ";

break;

}

}

}

3. Графический интерфейс пользователя

Приложение содержит текстовое меню выбора действий. Выбор действия осуществляется вводом с клавиатуры номера соответствующего пункта меню. После запуска приложения перед нами открывается основное меню Рисунок. 1.

Рисунок 1

0. Создание пустого предметного указателя

Для создания пустого предметного указателя введите «0» и нажмите кнопку Enter.

Рисунок 2

1. Добавление термина в предметный указатель

Для добавления нового термина в предметный указатель введите «1» и нажмите Enter.

Рисунок 3

2. Редактирование элемента предметного указателя - чтобы редактировать элемент указателя введите «2» и нажмите Enter. Будет доступно добавление ссылки на страницу для заданного термина.

Рисунок 4

3. Вывод элементов указателя в алфавитном порядке на экран - чтобы вывести элементы указателя на экран введите «3» и нажмите Enter. Будут выведены все термины предметного указателя на экран в алфавитном порядке.

Рисунок 5

4. Вывод элеменов указателя в алфавитном порядке в текстовый файл - чтобы вывести элементы указателя в файл введите «4» и нажмите Enter. Будут выведены все термины предметного указателя в файл в алфавитном порядке.

Рисунок 6

5. Поиск элемента предметного указателя по термину - чтобы найти определенный термин введите «5» и нажмите Enter. Далее введите термин. Будут выведены страницы на которых найден указаный термин.

Рисунок 7

Заключение

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

Закрепления и углубления практических знаний по программированию на языке С++ ориентированных на создание базы данных.

Список литературы

1. Лафоре Р. ООП в C++/ СПб.: Питер, 2007 - 928 с.

2. Дейтел Х. Как программировать на C++/ Х. Дейтел, П. Дейтел. - М. Бином-Пресс, 2009 - 800 с.

3. Крупник А. Изучаем C++/ СПб.: Питер, 2003 - 256 с.

Размещено на Allbest.ru


Подобные документы

  • Рассмотрение инфологической и даталогической модели базы данных кинотеатров города. Разработка базы данных в программе MS Access. Описание структуры приложения и интерфейса пользователя. Изучение SQL-запросов на вывод информации о кинотеатре и о фильме.

    курсовая работа [1,1 M], добавлен 04.09.2014

  • Особенности проектирования программы на языке С++ для обработки данных из таблиц базы данных. Основные функции программы, создание концептуальной модели базы данных и диаграммы классов, разработка интерфейса пользователя и запросов к базе данных.

    курсовая работа [2,1 M], добавлен 08.06.2012

  • Разработка программного продукта для ведения статистики спортивного мероприятия с удобным интерфейсом для оператора. Выбор среды разработки, дополнительных библиотек. Создание базы данных, виды проектирования. Руководства для пользователя и программиста.

    курсовая работа [6,5 M], добавлен 20.03.2012

  • Разработка программы проверки знаний для тестирования студентов по программированию с кодом на языке Delphi. Проектирование визуального интерфейса и словесный алгоритм работы программы. Алгоритмы разработанных процедур и функций, инструкция пользователя.

    курсовая работа [506,5 K], добавлен 21.02.2011

  • Описание структурного шаблона с именем ZNAK, содержащего элементы NAME, ZODIAC, BDAY. Операции со структурами в языке Си. Подключение графической библиотеки программы. Указатель как переменная, содержащая адрес некоторого объекта в памяти компьютера.

    контрольная работа [342,9 K], добавлен 10.01.2012

  • Создание базы данных для небольшого предприятия, занимающегося ремонтом бытовой техники. Анализ и характеристика предметной области, входных и выходных данных. Разработка конфигурации в системе "1С:Предприятие 8.2" и функциональной части приложения.

    контрольная работа [2,4 M], добавлен 26.05.2014

  • Знакомство с особенностями и этапами разработки базы данных "Летопись острова Санта Белинда". Анализ основных компонентов MS Access. Форма как объект базы данных, который можно использовать для создания интерфейса пользователя для приложения базы данных.

    курсовая работа [2,1 M], добавлен 25.05.2015

  • Рассмотрение игр, схожих по жанру и модели распространения с разрабатываемым приложением. Выбор среды разработки и сторонних библиотек. Проектирование интерфейса и подготовка графических материалов приложения. Особенности введения в игру микротрансакций.

    дипломная работа [3,1 M], добавлен 18.11.2017

  • Разработка логической схемы базы данных автомобилестроительного предприятия. Инфологическое моделирование системы. Создание графического интерфейса пользователя для базы данных средствами языка программирования Java. Тестирование программных средств.

    курсовая работа [2,3 M], добавлен 16.12.2013

  • Разработка программы для рисования различных правильных многоугольников с помощью объектно-ориентированного языка программирования. Использование для разработки среды C++ Builder 6 и библиотеки VCL. Разработка интерфейса приложения и алгоритма его работы.

    курсовая работа [616,4 K], добавлен 18.10.2010

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