Методы и системы программирования» 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Методы и системы программирования»

 

МИНПРОСВЕЩЕНИЯ РОССИИ

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

высшего образования

«Тульский государственный педагогический университет им. Л.Н. Толстого»

(ТГПУ им. Л.Н. Толстого)

 

                                                                                                                                    

 

Кафедра информатики и информационных технологий

 

 

ОТЧЕТ

по дисциплине:

«Методы и системы программирования»

Индивидуальное

ВАРИАНТ № 19

 

Выполнил:

студент группы 121591

факультета математики, физики и

информатики

Сергеев Д.А.

 

 

Тула – 2020

#include <iostream>

#include <fstream>

#include <Windows.h>

#include <string>

#include <vector>

#include <stdexcept>

#include <map>

#include <cstdlib>

#include <cmath>

using namespace std;

 

class JournalArticle {

public:

string name;

int year;

string author;

int numberOfPages;

string theme;

};

 

class JournalArticles {

public:

vector <JournalArticle> journalArticles;

 

 

JournalArticles() {

int vibor;

cout << "Ввести вручную(1) или из файла(2)?" << endl;

cout << ">>"; cin >> vibor;

if(vibor == 1) {

SetJournalArticles();

}

if(vibor == 2) {

SetJournalArticlesFromFile();

}

}

 

void SetJournalArticles() {

int count;

JournalArticle JA;

cout << "Ввод вручную: " << endl;

cout << "Введите количество: "; cin >> count;

for(int i = 0; i < count; i++) {

journalArticles.push_back(JA);

cout << i+1 << "-ая статья: " << endl;

cout << "---------------------------" << endl;

cout << "Введите автора статьи: "; cin >> journalArticles[i].author;

cout << "Введите год выпуска статьи: "; cin >> journalArticles[i].year;

cout << "Введите название статьи: "; cin >> journalArticles[i].name;

cout << "Введите количество страниц в статье: "; cin >> journalArticles[i].numberOfPages;

cout << "Введите тему статьи: "; cin >> journalArticles[i].theme; cout << endl;

cout << "---------------------------" << endl;

}

}

 

void SetJournalArticlesFromFile() {

string fileName1 = "1.txt";

int count = 0;

char buffer[1000];

 

ifstream file1(fileName1);

while (!file1.eof())

{

// Увеличить счетчик строк

count++;

 

// Считать одну строку в буфер

file1.getline(buffer, 1000);

}

file1.close();

 

JournalArticle JA;

ifstream file(fileName1);

 

if (!file)

{

cout << "Файл не удалось открыть" << endl;

}

else

{

for (int i = 0; i < count; i++)

{

journalArticles.push_back(JA);

file >> journalArticles[i].name >> journalArticles[i].author >> journalArticles[i].year >> journalArticles[i].theme >> journalArticles[i].numberOfPages;

}

}

}

 

void ShowArticleOfName() {

int count = 0;

string j_name;

cout << "Введите название статьи: "; cin >> j_name;

for(size_t i = 0; i < journalArticles.size(); i++) {

if(j_name == journalArticles[i].name) {

count++;

cout << "Статья " << journalArticles[i].name << ": " << endl;

cout << "---------------------------" << endl;

cout << "Автор статьи: " << journalArticles[i].author << endl;

cout << "Год выпуска статьи: " << journalArticles[i].year << endl;

cout << "Количество страниц в статье: " << journalArticles[i].numberOfPages << endl;

cout << "Тема статьи: " << journalArticles[i].theme << endl;

cout << "---------------------------" << endl;

}

}

if(count == 0) {

cout << "Статей с таким названием нет." << endl;

}

}

 

void ShowAuthorOfArticle() {

int count = 0;

string j_author;

cout << "Введите автора статьи: "; cin >> j_author;

for(size_t i = 0; i < journalArticles.size(); i++) {

if(j_author == journalArticles[i].author) {

count++;

cout << "Статья данного автора: " << journalArticles[i].name << endl;

}

}

if(count == 0) {

cout << "У данного автора нет статей." << endl;

}

}

 

void ShowArticleOfAuthor() {

int count = 0;

string j_article;

cout << "Введите название статьи: "; cin >> j_article;

for(size_t i = 0; i < journalArticles.size(); i++) {

if(j_article == journalArticles[i].name) {

count++;

cout << "Автор данной статьи: " << journalArticles[i].author << endl;

}

}

if(count == 0) {

cout << "Такой статьи не существует" << endl;

}

}

 

void ShowArticleOfTheme() {

int count = 0;

string j_theme;

cout << "Введите автора статьи: "; cin >> j_theme;

for(size_t i = 0; i < journalArticles.size(); i++) {

if(j_theme == journalArticles[i].theme) {

count++;

cout << "Статья по данной теме: " << journalArticles[i].name << endl;

}

}

if(count == 0) {

cout << "Статей с такой темой нет." << endl;

}

}

 

void ShowArticleOfAuthorAndYear() {

int count = 0;

string j_author;

int j_year;

cout << "Введите автора статьи: "; cin >> j_author;

cout << "Введите год выпуска статьи: "; cin >> j_year;

for(size_t i = 0; i < journalArticles.size(); i++) {

if(j_author == journalArticles[i].author && j_year == journalArticles[i].year) {

count++;

cout << "Статья данного автора и года выпуска: " << journalArticles[i].name << endl;

}

}

if(count == 0) {

cout << "Статей с данным автором и выпуском года нет." << endl;

}

}

 

void ShowArticleOfAfterYear() {

int count = 0;

int j_year;

cout << "Введите год: "; cin >> j_year;

for(size_t i = 0; i < journalArticles.size(); i++) {

if(j_year <= journalArticles[i].year) {

count++;

cout << "Статья выпущенная после " << j_year << " года: " << journalArticles[i].name << endl;

}

}

if(count == 0) {

cout << "Статей выпущенных после данного года нет." << endl;

}

}

 

void ShowArticleOfBeforeYear() {

int count = 0;

int j_year;

cout << "Введите год: "; cin >> j_year;

for(size_t i = 0; i < journalArticles.size(); i++) {

if(j_year >= journalArticles[i].year) {

count++;

cout << "Статья выпущенная до " << j_year << " года: " << journalArticles[i].name << endl;

}

}

if(count == 0) {

cout << "Статей выпущенных до данного года нет." << endl;

}

}

 

void ShowArticleOfMustPages() {

int count = 0;

int j_pages;

cout << "Введите количество страниц: "; cin >> j_pages;

for(size_t i = 0; i < journalArticles.size(); i++) {

if(j_pages <= journalArticles[i].numberOfPages) {

count++;

cout << "Статьи в которой больше " << j_pages << "страниц: " << journalArticles[i].name << endl;

}

}

if(count == 0) {

cout << "Статей в которых больше " << j_pages << " страниц нет." << endl;

}

}

 

void ShowArticleOfLessPages() {

int count = 0;

int j_pages;

cout << "Введите количество страниц: "; cin >> j_pages;

for(size_t i = 0; i < journalArticles.size(); i++) {

if(j_pages >= journalArticles[i].numberOfPages) {

count++;

cout << "Статьи в которой меньше " << j_pages << "страниц: " << journalArticles[i].name << endl;

}

}

if(count == 0) {

cout << "Статей в которых меньше " << j_pages << " страниц нет." << endl;

}

}

 

void DeleteArticle() {

int count = 0;

string j_name;

cout << "Введите название статьи: "; cin >> j_name;

for(size_t i = 0; i < journalArticles.size(); i++) {

if(j_name == journalArticles[i].name) {

journalArticles.erase(journalArticles.begin() + i);

cout << "Статья " << j_name << " удалена." << endl;

count++;

}

}

if (count == 0) {

cout << "Статьи с таким название не существует." << endl;

}

}

 

void ShowArticles() {

for(size_t i = 0; i < journalArticles.size(); i++) {

cout << i+1 << "-ая статья: " << endl;

cout << "---------------------------" << endl;

cout << "Автор статьи: " << journalArticles[i].author << endl;

cout << "Год выпуска статьи: " << journalArticles[i].year << endl;

cout << "Название статьи: " << journalArticles[i].name << endl;

cout << "Количество страниц в статье: " << journalArticles[i].numberOfPages << endl;

cout << "Тема статьи: " << journalArticles[i].theme << endl;

cout << "---------------------------" << endl;

}

}

 

JournalArticle operator[] (int index) {

return journalArticles[index];

}

 

};

 

int main () {

setlocale(LC_ALL, "ru_RU.UTF-8");

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

JournalArticles ja;

int menu = -1;

while (menu != 0) {

cout << "Меню: " << endl;

cout << "0 - выход" << endl;

cout << "1 - информация об авторе" << endl;

cout << "2 - вывести все журнальные статьи" << endl;

cout << "3 - вывести статью по названию" << endl;

cout << "4 - вывести статью по автору" << endl;

cout << "5 - вывести автора по статье" << endl;

cout << "6 - вывести статьи по теме" << endl;

cout << "7 - вывести статью по автору и году выпуска" << endl;

cout << "8 - вывести статьи выпущенные после определенного года" << endl;

cout << "9 - вывести статьи выпущенные до определенного года" << endl;

cout << "10 - вывести статьи в которых больше определенного количества страниц" << endl;

cout << "11 - вывести статьи в которых меньше определенного количества страниц" << endl;

cout << "12 - удалить статью по названию" << endl;

cout << " >> "; cin >> menu;

 

if(menu == 1) cout << "Подготовил студент Сергеев Даниил группы 121591" << endl;

if(menu == 2) ja.ShowArticles();

if(menu == 3) ja.ShowArticleOfName();

if(menu == 4) ja.ShowAuthorOfArticle();

if(menu == 5) ja.ShowArticleOfAuthor();

if(menu == 6) ja.ShowArticleOfTheme();

if(menu == 7) ja.ShowArticleOfAuthorAndYear();

if(menu == 8) ja.ShowArticleOfAfterYear();

if(menu == 9) ja.ShowArticleOfBeforeYear();

if(menu == 10) ja.ShowArticleOfMustPages();

if(menu == 11) ja.ShowArticleOfLessPages();

if(menu == 12) ja.DeleteArticle();

}

}

 

file:

 

7                                                                                                     



Поделиться:


Последнее изменение этой страницы: 2024-06-17; просмотров: 61; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.008 с.)