Введение, Обоснование выбора средств и методов для выполнения задания, Код программы - Предметный указатель базы данных

Язык программирования 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;

}

}

}

Похожие статьи




Введение, Обоснование выбора средств и методов для выполнения задания, Код программы - Предметный указатель базы данных

Предыдущая | Следующая