Разработка электронного справочника и программы тестирования

Особенность разработки алгоритмов для базы данных "Поэты". Анализ реализации анимации с помощью многофункциональной кроссплатформенной библиотеки SFML. Характеристика схемы алгоритма работы меню. Осуществление запуска программы через VisualStudio.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 10.05.2019
Размер файла 4,4 M

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

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

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

Министерство образования и науки РФ федеральное государственное бюджетное образовательное учреждение высшего образования «Омский государственный технический университет»

Курсовой проект

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

на тему «Разработка электронного справочника и программы тестирования»

Омск 2018

Министерство образования и науки РФ федеральное государственное бюджетное образовательное учреждение высшего образования «Омский государственный технический университет»

Факультет

Информационных технологий и компьютерных систем

Кафедра

Информатики и вычислительной техники

Дисциплина

Программирование

ЗАДАНИЕ

на выполнение курсового проекта

Студенту (ке)

Бессоновой Александре Анатольевне

Группа

ИСТ-171

фамилия, имя, отчество полностью

Направление (специальность)

09.03.02 - Информационные системы и технологии медиаиндустрии

код, наименование

Исходные данные к проекту (работе)

Разработка базы данных “Поэты” и теста Роршаха на

платформе SFML

Содержание пояснительной записки (перечень подлежащих разработке вопросов)

Введение. 1. Анализ и формулировка задачи. 2. Разработка алгоритмов. 3. Особенности разработки программы. 4. Инструкция пользователя. 5. Результаты тестирования. Приложения (текст программы)

Перечень графического материала с указанием основных чертежей

и (или) иллюстративного материала

Укрупненная схема алгоритма,

схемы алгоритмов для функции

Методическая литература и иные информационные источники

Павловская, Т. А. С/С++. Программирование на языке высокого уровня / Т. А. Павловская. - СПб.: Питер, 2012. - 544с.

Восходящее и нисходящее программирование: метод. указания / ОмГТУ ; сост. О. П. Шафеева.- Омск : Изд-во ОмГТУ, 2015. - 1 эл. опт. диск (CD-ROM).

Программирование на языке Си: Метод. указания / Сост. О. П. Шафеева, Ю.Г. Каворина, Шукурова Г.С.: Изд-во ОмГТУ, 2008. - 72 с.

Системы программирования: Метод. указания / Сост. О.П. Шафеева, И.А. Волчкова, С.А.Гончаров. Омск: ОмГТУ, 2012. - 32 с.

5. Шафеева, О.П. Технологии программирования. С++. Учебное пособие. - Омск, Изд-во ОмГТУ. 2007. - 80 с.

Оглавление

Введение

1. Анализ и формулировка задачи

2. Разработка алгоритмов для базы данных “Поэты” и меню

2.1 Разработка алгоритма работы меню

2.2 Разработка алгоритма базы данных, заставки и теста

3. Особенности разработки программы

4. Инструкция пользователя

5. Результаты тестирования

5.1 Тестирование справочника «Поэты»

5.2 Тестирование психологического теста Роршаха

Заключение

Введение

База данных - это упорядоченная совокупность данных, предназначенных для хранения, накопления и обработки с помощью ЭВМ, которая предполагает какой либо метод сохранения информации на диске и возможности доступа и манипуляции с нею, а так же набор программных продуктов, предоставляющий пользователю все допустимые средства работы с данными.

Для упорядочивания информации о популярных поэтах и об их творчестве, необходимо было создать базу данных, в которую будет занесено всё необходимое. Так как в базе данных содержится не большое количество информации, пользователь быстрее сможет найти именно то, что искал, а поможет ему функция поиска в данном справочнике. Поиск будет по всем представленным полям справочника, что во многом упрощает поиск.

Так же, как и базы данных, в данное время очень актуальна психологические тесты, которые определяют твой тип личности, мышления и многого другого. Тест Роршаха -- психодиагностический тест для исследования личности, опубликован в 1921 году швейцарским психиатром и психологом Германом Роршахом (нем. Hermann Rorschach). Известен также под названием «Пятна Роршаха». Тест Роршаха - один из самых популярных психодиагностических тестрований на данный момент, который используют ведущие психоаналитики в своей практике. С помощью ассоциативного ряда пользователь выбирает подходящий для него ответ. Это не занимает много времени, но этот тест является одним из точнейших в данной области.

Это один из тестов, применяемых для исследования психики и её нарушений. Испытуемому предлагается дать интерпретацию десяти симметричных относительно вертикальной оси чернильных клякс. Каждая такая фигура служит стимулом для свободных ассоциаций -- испытуемый должен назвать любое возникающее у него слово, образ или идею. Тест основан на предположении, согласно которому то, что индивид«видит» в кляксе, определяется особенностями его собственной личности.

1. Анализ и формулировка задачи

Целью курсового проектирования является закрепление теоретических знаний и отработка практических навыков программирования. Для реализации поставленной цели, необходимо решить следующие задачи: разработать Базу данных “Поэты” и психологический тест Роршаха, а так же реализация графической заставки. Помимо определённых задач, указанных ранее, курсовой проект должен включать в себя следующие элементы:

Меню - связующее звено между всей курсовой работой. Именно с помощью него пользователь может перемещаться по пунктам, свободно возвращаясь обратно к выбору пунктов. Меню содержит такие пункты как «Тест», «Справочник “Поэты”» «Об авторе», а также выход из программы.

База данных “Поэты” - упорядоченная совокупность данных, которая содержит в себе информацию об известных поэтах. Так же для удобства поиска реализован поиск по главным полям справочника: Поиск по стране рождения поэта, по году рождения поэта и по количеству произведений. Так же, для перехода к простому просмотру справочника сделано небольшое подменю, где можно выбрать простой просмотр и поиск по полям справочника. Анимационная заставка, которая совмещена с информацией о разработчике - анимация представляет собой салют, которым можно управлять с помощью клавиш мышки. Информация о разработчике содержит сведения о студенте, который разработал данный проект.

Психологический тест Роршаха - красочный психодиагностический тест, который известен ведущим специалистом в области психологии, в котором при помощи ассоциативного ряда нужно выбирать подходящее определение к данным иллюстрациям. Картинки представляют собой главную составляющую данного теста.

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

2. Разработка алгоритмов для базы данных “Поэты” и меню

2.1 Разработка алгоритма работы меню

В курсовой работе необходимо разработать следующие задачи: «База данных», «О разработчике», «Заставка», «Тест», «Выход». Для управления этими задачами было разработано меню, в котором при выборе определенного пункта управление передается на соответствующую задачу. Меню представляет собой бесконечный цикл выбора одного из пунктов посредством управления мышью. При выборе пункта запускается индивидуальная функция перерисовки окна программы для выполнения индивидуальных задач. Общая схема алгоритма и схема алгоритма работы меню представлена на рисунке 1.

Рисунок 1. Схема алгоритма работы меню

2.2 Разработка алгоритма базы данных, заставки и теста

Для решения каждой задачи были разработаны следующие схемы алгоритмов. Для анимации разработана схема алгоритма, представленная на рисунке 2. Анимация реализована с помощью многофункциональной кроссплатформенной библиотеки SFML, а именно с помощью одной из её составляющей связанной с улучшением графической составляющей. Анимация является управляемой при помощи левой кнопки мыши. Так же был заменён стандартный шрифт на более современный.

Рисунок 2. Схема алгоритма работы анимации

Схема алгоритма работы базы данных «Поэты» представлена на рисунке 3. Для удобства использования справочника было разработано небольшое подменю, состоящее из двух пунктов. Один из пунктов ведёт к простому просмотру справочника, второе же переносит пользователя к поиску по определённым полям, а именно: По стране, по году рождения и по количеству книг. После того, как справочник просмотрен, по кнопке выход можно вернуться обратно к главному меню.

Рисунок 3. Схема алгоритма работы базы данных

Схема алгоритма теста Роршаха представлена на рисунке 4. С помощью универсальной библиотеки SFML в тест были вставлены картинки, которые и являются главной составляющей психологического теста Роршаха. Выбор подходящих ответов осуществляется при помощи мыши,

Рисунок 4. Схема алгоритма работы теста Роршаха.

3. Особенности разработки программы

Для создания данного курсового проекта выбран универсальный язык программирования С/С++ и свободная кроссплатформенная мультимедийная библиотека SFML, при помощи которой улучшена визуальная графическая составляющая окон и переходов между ними. Программа разработана в парадигме объектно-ориентрованного программирования. Для хранения координат отдельных геометрических фигур используются статические структуры и векторы. Программа разработана в соответствии со структурными алгоритмами, представленными выше. Предусмотрен выход из пунктов (с помощью клавиши “Назад”) и плавный переход по пунктам, а также выход полностью из программы. Разработано управление с помощью мыши. В проекте используются нестандартные шрифты. В тесте Роршаха используется массив адресов картинок к проекту. Текст программы находится в приложении А.

4. Инструкция пользователя

Запуск программы осуществляется через VisualStudio. После чего перед пользователем откроется графическое изображение с пунктами(рис 5.).В меню присутствует возможность перехода в окно теста Роршаха, базы данных “Поэты”, анимации или же выйти из программы.

Рисунок 5. Меню программы

При клике в пункте меню «Об авторе» и клике левой кнопкой мыши пользователь увидит информацию о разработчике и салют (рис.6). Выйти можно, нажав кнопку “ESC”

Рисунок 6. Анимация

При переходе в пункт справочник “Поэты” откроется консоль с базой данных о поэтах (Рис.7) Выйти из нее можно, нажав на пункт “ESC”.

Рисунок 7. Справочник “Поэты”

При переходе в пункт “Тест” откроется психологический тест Роршаха, пройдя который вы увидите результат. (Рис.8). Выйти из него можно, нажав на пункт “ESC”.

Рисунок 8. Тест Роршаха

Рисунок 8. Тест Роршаха.

Рисунок 8. Тест Роршаха.

После перехода в пункт “Выход” программа немедленно закроется.

5. Результаты тестирования

5.1 Тестирование справочника «Поэты»

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

Поиск и сама база поэтов работает хорошо, информация выдаётся в соответствующей таблице, где наглядно видна информация о поэтах, занесённых в этот справочник. Работу самой программы можно увидеть на рисунке 7. Поиск выполняется, как указывалось ранее, по трём критерием:

1) по стране поэта.

2) по дате рождения поэта.

3) по количеству написанных произведений.

Если же пользователь указывает поэта, которого нет в базе, программа выдаёт сообщение о отсутствии данного человека в предоставленной базе.

5.2 Тестирование психологического теста Роршаха

Тест, как видно из рисунков 8, наполнен красочными картинками, из которых состоит данный психологический тест. Последствием выбора ассоциативного ряда тест определяет психологическое восприятие окружающего мира пользователя, после чего выдаёт результат. Тест был построен таким образом, что каждый ответ учитывается программой, анализируется, и выдаётся подготовленный ответ. Так, например, если было больше выбрано пункта 1, то выдаётся один из результатов, если же больше выбрано 2 пункта, программа выдаст совершенно противоположный результат. Все ответы соответствуют оригиналу теста Роршаха, и самой системе в частности.

Заключение

В результате выполнения курсового проекта был разработан программный продукт, реализующий следующий функционал:

-Заставка

- Меню навигации по приложению с помощью мыши;

- База данных “Поэты”;

- Тест Роршаха;

- Выход из программы.

Проведены тестирования на неправильный ввод данных пользователем. После тестирования несколькими людьми были выявлены достоинства и недостатки данного приложения.

Достоинства:

- графическая визуализация за счет библиотеки SFML;

- плавный переход между окнами (пунктами);

- предусмотрено управление мышью;

- подсветка кнопок при наведении;

- управляемая анимация;

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

Недостатки:

- Возможность доработки всего проекта в целом.

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

Приложение А.

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

ФайлSourse.cpp

#include <SFML/Graphics.hpp>

#include <SFML\Audio.hpp>

#include "Menu.h"

void main() {

setlocale(LC_ALL, "");

Menu();

}

ФайлMenu.cpp

#include "Menu.h"

#include "Test.h"

#include "Baze.h"

#include "About.h"

void Menu() {

int MenuNumber;

RenderWindow window(VideoMode(1920, 1000), "Menu");

Texture BackgroundTexture;

BackgroundTexture.loadFromFile("images/Paris.jpg");

Sprite Background(BackgroundTexture);

Font font;

font.loadFromFile("fonts/font.ttf");

Text t1("", font, 40), t2("", font, 40), t3("", font, 40), t4("", font, 40);

t1.setString("Тест");

t2.setString("Справочник 'Поэты'");

t3.setString("Обавторе");

t4.setString("Выход");

t1.setPosition(900, 250);

t2.setPosition(750, 375);

t3.setPosition(850, 500);

t4.setPosition(900, 625);

while (window.isOpen())

{

Event e;

while (window.pollEvent(e))

{

if (e.type == Event::Closed) {

window.close();

}

}

t1.setColor(Color::Black);

t2.setColor(Color::Black);

t3.setColor(Color::Black);

t4.setColor(Color::Black);

if (IntRect(900, 250, 100, 40).contains(Mouse::getPosition(window))) {

t1.setColor(Color::Blue);

MenuNumber = 1;

}

if (IntRect(750, 375, 445, 40).contains(Mouse::getPosition(window))) {

t2.setColor(Color::Blue);

MenuNumber = 2;

}

if (IntRect(850, 500, 225, 40).contains(Mouse::getPosition(window))) {

t3.setColor(Color::Blue);

MenuNumber = 3;

}

if (IntRect(900, 625, 140, 40).contains(Mouse::getPosition(window))) {

t4.setColor(Color::Blue);

MenuNumber = 4;

}

if (Mouse::isButtonPressed(Mouse::Left))

{

switch (MenuNumber)

{

case 1:

window.close();

Test();

break;

case 2:

Base();

window.close();

break;

case 3:

window.close();

About();

case 4:

window.close();

break;

default:

break;

}

}

window.clear();

window.draw(Background);

window.draw(t1);

window.draw(t2);

window.draw(t3);

window.draw(t4);

window.display();

}

}

ФайлMenu.h

#pragma warning(once : 4996)

#ifndef MENU_H

#define MENU_H

#include <SFML\Graphics.hpp>

using namespace sf;

void Menu();

#endif // !MENU_H

ФайлTest.cpp

#include "Test.h"

#include "SFML/Graphics.hpp"

void Test() {

int good = 0, bad = 0, middle = 0, i = 0;

bool isTest = false;

String arr[10] = { "images/1.jpg","images/2.jpg" ,"images/3.jpg" ,"images/4.jpg" ,"images/5.jpg" ,"images/6.jpg" ,"images/7.jpg" ,"images/8.jpg" ,"images/9.jpg" ,"images/10.jpg" };

String arrAnswer[30] = { "мышь","бабочка","дьявол","зверь","человек","две фигуры","2 человека","трапеза","макска","монстр","ковер","шкура животного","бабочка","моль","летучая мышь","лодка","животное","ковер","2 ведьмы","2 головы","поцелуй","животные","скелет","бабочка","звери","клякса","образ зла","краб","омар","паук" };

RenderWindow window(VideoMode(1920, 1000), "Test");

Texture BackgroundTexture;

BackgroundTexture.loadFromFile("images/Paris.jpg");

Sprite Background(BackgroundTexture);

Font font;

font.loadFromFile("fonts/font.ttf");

Text buttonBack("", font, 50), startTest("", font, 50), firstText("", font, 30), secondText("", font, 30), threeText("", font, 30);

buttonBack.setString("Назад");

buttonBack.setPosition(950, 850);

startTest.setString("Тестирование");

startTest.setPosition(900, 500);

firstText.setPosition(750, 650);

secondText.setPosition(1100, 650);

threeText.setPosition(900, 750);

firstText.setColor(Color::Black);

secondText.setColor(Color::Black);

threeText.setColor(Color::Black);

Texture slaidt;

Sprite slaid;

while (window.isOpen())

{

Event e;

while (window.pollEvent(e))

{

if (e.type == Event::Closed) {

window.close();

}

if (e.type == Event::KeyPressed) {

if (e.key.code == Keyboard::Escape)

{

window.close();

Menu();

}

}

if (IntRect(900, 500, 400, 50).contains(Mouse::getPosition(window)) && !isTest)

if (Mouse::isButtonPressed(Mouse::Left) && i == 0)

{

slaidt.loadFromFile(arr[i]);

firstText.setString(arrAnswer[0]);

secondText.setString(arrAnswer[1]);

threeText.setString(arrAnswer[2]);

isTest = true;

i = 1;

slaid.setTexture(slaidt);

}

if (IntRect(750, 650, 150, 50).contains(Mouse::getPosition(window)) && isTest && Mouse::isButtonPressed(Mouse::Left)) {

i++;

bad++;

if (i > 9) {

window.close();

Result(bad, good, middle);

}

slaidt.loadFromFile(arr[i - 1]);

firstText.setString(arrAnswer[(i - 1) * 3]);

secondText.setString(arrAnswer[(i - 1) * 3 + 1]);

threeText.setString(arrAnswer[(i - 1) * 3 + 2]);

isTest = true;

slaid.setTexture(slaidt);

}

if (IntRect(1100, 650, 150, 50).contains(Mouse::getPosition(window)) && isTest && isTest && Mouse::isButtonPressed(Mouse::Left)) {

i++;

good++;

if (i > 9) {

window.close();

Result(bad, good, middle);

}

slaidt.loadFromFile(arr[i - 1]);

firstText.setString(arrAnswer[(i - 1) * 3]);

secondText.setString(arrAnswer[(i - 1) * 3 + 1]);

threeText.setString(arrAnswer[(i - 1) * 3 + 2]);

isTest = true;

slaid.setTexture(slaidt);

}

if (IntRect(900, 750, 150, 50).contains(Mouse::getPosition(window)) && isTest && isTest && Mouse::isButtonPressed(Mouse::Left)) {

i++;

middle++;

if (i > 9) {

window.close();

Result(bad, good, middle);

}

slaidt.loadFromFile(arr[i - 1]);

firstText.setString(arrAnswer[(i - 1) * 3]);

secondText.setString(arrAnswer[(i - 1) * 3 + 1]);

threeText.setString(arrAnswer[(i - 1) * 3 + 2]);

isTest = true;

slaid.setTexture(slaidt);

}

slaid.setPosition(570, 100);

}

buttonBack.setColor(Color::White);

startTest.setColor(Color::White);

if (IntRect(950, 850, 170, 50).contains(Mouse::getPosition(window)) && !isTest) {

buttonBack.setColor(Color::Blue);

if (Mouse::isButtonPressed(Mouse::Left))

{

window.close();

Menu();

}

}

if (IntRect(900, 500, 400, 50).contains(Mouse::getPosition(window)))

startTest.setColor(Color::Blue);

window.clear();

window.draw(Background);

if (i == 0 && !isTest)

{

window.draw(startTest);

window.draw(buttonBack);

}

if (i > 0 && isTest) {

window.draw(firstText);

window.draw(secondText);

window.draw(threeText);

window.draw(slaid);

}

window.display();

}

}

void Result(int bad, int good, int midle) {

RenderWindow window(VideoMode(1920, 1000), "Test");

Texture BackgroundTexture;

BackgroundTexture.loadFromFile("images/Paris.jpg");

Sprite Background(BackgroundTexture);

Font font;

font.loadFromFile("fonts/font.ttf");

Text buttonNew("", font, 50), textResult("", font, 35);

buttonNew.setString("Новыйтест");

buttonNew.setPosition(950, 800);

textResult.setPosition(300, 300);

textResult.setColor(Color::Black);

if (bad > good && bad > midle) {

textResult.setString("Чувство недооцененности, недовольство собственной внешностью, \n\n А также слабость и раздражение может символизировать агрессию,\n\n Конкуренцию, независимость, восстановление, \n\nА также -- чувство уязвимости, незащищенность или открытость и честность.");

}

else if (good > bad && good > midle) {

textResult.setString("Символизируют переходный период, трансформацию, а также способность\n\n Pасти, изменяться и преодолевать препятствия\n\nСимволизирует умение реагировать на проблемы,\n\n Cтрах и нежелание заглянуть внутрь себя\n\nCимволизируют чувства, связанные с детством\n\n И необходимостью заботиться о внутреннем ребенке.");

}

else

{

textResult.setString("Символизировать склонность к зацикливанию на определенных вещах\n\n Или людях или свидетельствовать о назойливости человека\n\n Может символизировать плодородие и позитивное мышление\n\n Это свидетельствует о перспективах развития и осознания того,\n\n Что личность постоянно меняется и эволюционирует.");

}

while (window.isOpen())

{

Event e;

while (window.pollEvent(e))

{

if (e.type == Event::Closed) {

window.close();

}

if (e.type == Event::KeyPressed) {

if (e.key.code == Keyboard::Escape)

{

window.close();

Menu();

}

}

}

buttonNew.setColor(Color::White);

if (IntRect(950, 800, 320, 50).contains(Mouse::getPosition(window))) {

buttonNew.setColor(Color::Blue);

if (Mouse::isButtonPressed(Mouse::Left))

{

window.close();

Test();

}

}

window.clear();

window.draw(Background);

window.draw(buttonNew);

window.draw(textResult);

window.display();

}

}

ФайлTest.h

#ifndef TEST_H

#define TEST_H

#include <SFML\Graphics.hpp>

#include "Menu.h"

void Test();

void Result(int bad, int good, int midle);

#endif // TEST_H

ФайлBaze.cpp

#include "Baze.h"

int n;

struct Poets {

string name;

string country;

int year, books, proses;

}poet[5];

void Base() {

do

{

ToViewMenu();

} while (true);

}

void ToViewMenu() {

HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE), hStdout = GetStdHandle(STD_OUTPUT_HANDLE);

DWORD result;

COORD position;

INPUT_RECORD keyBuff;

ToDrawMenu();

ReadConsoleInput(hStdin, &keyBuff, 1, &result);

switch (keyBuff.Event.KeyEvent.uChar.AsciiChar)

{

case '1':

system("cls");

ToShowBase();

system("cls");

break;

case '2':

system("cls");

ToFindInBase();

break;

default: ToViewMenu();

}

}

void ToDrawMenu() {

HANDLE hstdout = GetStdHandle(STD_OUTPUT_HANDLE);

COORD position;

position.X = 46;

position.Y = 5;

SetConsoleCursorPosition(hstdout, position);

cout << "1)Просмотрсправочника" << endl;

position.X = 50;

position.Y = 9;

SetConsoleCursorPosition(hstdout, position);

cout<< "2)Поискпополям" <<endl;

}

void ToShowBase() {

ToCreateBase();

printf(" ________________________\n");

printf("| ФИО | Страна | Год рождения | Кол-во книг | Кол-во стихов |\n");

printf("|-----------|--------------|----------------|---------------|-----------------|\n");

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

{

cout << "| " << poet[i].name << " | " << poet[i].country;

printf(" | %4d | %4d | %4d |\n", poet[i].year, poet[i].books, poet[i].proses);

}

printf(" __________________________________\n");

cin.get();

}

void ToCreateBase() {

FILE *f1, *f2, *f3;

poet[0].name = "Pushkin ";

poet[0].country = "Russia";

poet[1].name = "Lermontov";

poet[1].country = "Russia";

poet[2].name = "Tolstoi ";

poet[2].country = "Russia";

poet[3].name = "Shakspere";

poet[3].country = "Britan";

poet[4].name = " Adam ";

poet[4].country = "Britan";

f1 = fopen("YearsPoets.txt", "r");

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

fscanf_s(f1, "%d", &poet[i].year);

fclose(f1);

f2 = fopen("BooksPoets.txt", "r");

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

fscanf_s(f2, "%d", &poet[i].books);

fclose(f2);

f3 = fopen("ProsesPoets.txt", "r");

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

fscanf_s(f3, "%d", &poet[i].proses);

fclose(f3);

}

void ToFindInBase() {

ToCreateBase();

int num;

bool test;

cout << "1)Постране." <<endl;

cout << "2)По году рождения." << endl;

cout << "3)По количеству книг." <<endl;

cin >> num;

switch (num)

{

case 1:

system("cls");

findCountry();

cin.get();

system("cls");

break;

case 2:

system("cls");

findYear();

cin.get();

system("cls");

break;

case 3:

system("cls");

findBooks();

cin.get();

system("cls");

break;

default:

break;

}

}

void findCountry() {

bool test = false;

string hisCountry;

cout << "Введитестранупоэта : ";

cin >> hisCountry;

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

{

if (poet[i].country == hisCountry) {

test = true;

cout << "Имяпоэта : " << poet[i].name << endl;

cout << "Год рождения поэта : " << poet[i].year << endl;

cout << "Количество книг поэта : " << poet[i].books << endl;

cout << "Количествостихов : " << poet[i].proses << endl;

break;

}

}

if (!test) {

cout << "Данных по запросу нет!" << endl;

}

cin.get();

}

void findYear() {

bool test = false;

inthisYear;

cout << "Введите год рождения поэта : ";

cin >> hisYear;

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

{

if (poet[i].year == hisYear) {

test = true;

cout << "Имяпоэта : " << poet[i].name << endl;

cout << "Странапоэта : " << poet[i].country << endl;

cout << "Количествокнигпоэта : " << poet[i].books << endl;

cout << "Количествостихов : " << poet[i].proses << endl;

break;

}

}

if (!test) {

cout << "Данных по запросу нет!" << endl;

}

cin.get();

}

void findBooks() {

bool test = false;

inthisBooks;

cout << "Введите количество книг поэта : ";

cin >> hisBooks;

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

{

if (poet[i].books == hisBooks) {

test = true;

cout << "Имяпоэта : " << poet[i].name << endl;

cout << "Год рождения поэта : " << poet[i].year << endl;

cout << "Странапоэта : " << poet[i].country << endl;

cout << "Количествостихов : " << poet[i].proses << endl;

break;

}

}

if (!test) {

cout << "Данных по запросу нет!" << endl;

}

cin.get();

}

ФайлBaze.h

#ifndef BAZE_H

#define BAZE_H

#include "Menu.h"

#include <iostream>

#include <conio.h>

#include <cstring>

#include <Windows.h>

using namespace std;

void Base();

void ToDrawMenu();

void ToViewMenu();

void ToShowBase();

void ToCreateBase();

void ToFindInBase();

void findCountry();

void findYear();

void findBooks();

#endif // !BAZE_H

Файл About.cpp

#include <iostream>

#include <SFML/Graphics.hpp>

#include <stdlib.h>

#include <ctime>

#include "Particle.h"

#include "About.h"

#include <cmath>

using namespace sf;

using namespace std;

vector<Particle> generateDots(int, RenderWindow & window);

vector<Vertex> generateSpecks(vector<Particle>);

void About()

{

srand(time(0));

vector<Particle> dots;

vector<Vertex> specks;

int num = 20000;

RenderWindow window(VideoMode(1080, 720), "About Me!");

window.setFramerateLimit(150);

Font font;

font.loadFromFile("fonts/font.ttf");

Text textAboutMe("", font, 25);

textAboutMe.setString("Проектвыполниластуденткапервогокурса ФГО \n\n\n ГруппыИСТ-171, БессоноваАлександраАнатольевна");

textAboutMe.setPosition(200, 100);

while (window.isOpen())

{

Event event;

while (window.pollEvent(event))

{

if (event.type == Event::Closed)

{

window.close();

Menu();

}

if (event.type == Event::KeyPressed) {

if (event.key.code == Keyboard::Escape)

{

window.close();

Menu();

}

}

}

if (Mouse::isButtonPressed(Mouse::Left))

{

dots = generateDots(num, window);

specks = generateSpecks(dots);

}

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

{

dots[i].update();

specks[i].position = dots[i].pos;

}

window.clear();

window.draw(&specks[0], specks.size(), Points);

window.draw(textAboutMe);

window.display();

}

}

vector<Particle> generateDots(int num, RenderWindow & window)

{

vector<Particle> parts;

float radius, theta, X, Y;

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

{

Particle temp;

radius = rand() % 1000;

radius = (radius / 1000) + .005;

theta = rand() % 10000;

Y = radius * sin(theta);

X = radius * cos(theta);

temp.vel = Vector2f(X, Y);

temp.pos = Vector2f(Mouse::getPosition(window));

parts.push_back(temp);

}

return parts;

}

vector<Vertex> generateSpecks(vector<Particle> dots)

{

vector<Vertex> verts;

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

{

Vertex temp;

temp.position = dots[i].pos;

temp.color = Color(Color::Magenta);

verts.push_back(temp);

}

return verts;

}

Файл About.h

#ifndef ABOUT_H

#define ABOUT_H

#include <SFML\Graphics.hpp>

#include "Menu.h"

void About();

#endif // !ABOUT_H

Файл Particle.cpp

#include "Particle.h"

#include <SFML/Graphics.hpp>

#include <math.h>

using namespace sf;

using namespace std;

void Particle::update()

{

vel = acc + vel;

pos = vel + pos;

}

ФайлParticle.h

#ifndef Particle_hpp

#define Particle_hpp

#include <SfML/Graphics.hpp>

#include <stdio.h>

using namespace sf;

using namespace std;

class Particle

{

public:

Particle()

{

acc = Vector2f(0, 0);

vel = Vector2f(0, 0);

pos = Vector2f(0, 0);

}

void update();

float distance(float, float, float, float);

Vector2f acc;

Vector2f vel;

Vector2f pos;

};

#endif /* Particle_hpp */

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


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

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

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

  • Осуществление работы разрабатываемой программы на основе алгоритма, использующего Z-буфер. Аналитическое описание программной реализации. Алгоритмы основных функций программы. Содержание руководства пользователя. Файлы программы, пункты главного меню.

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

  • Определение необходимых модулей программы, структуры файла базы данных. Описание разработки программы, отладка и тестирование. Разработка приложения Organizer.exe, меню и руководство пользователя. Алгоритм обработки событий главного меню (расписания).

    курсовая работа [901,8 K], добавлен 11.02.2014

  • Реляционная модель базы данных в текстовом виде. Код, с помощью которого были созданы и заполнены таблицы. Разработка схемы базы данных справочника селекционера. Создание запросов, их основные виды. Процедуры на выбор данных, добавление и удаление.

    методичка [1,1 M], добавлен 20.05.2014

  • Графическая схема алгоритма выполнения программы определения запасов сырья. Решение задачи с помощью программы MS Excel. Разработка макроса для построения диаграммы. Использование интерфейса программы для работы с таблицей. Разработка базы данных.

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

  • Проектирование и описание логической структуры программы для работы электронного магазина в среде Microsoft Visual C++. Инструкция, описывающая сведения для запуска программы. Обновление данных о доступных товарах. Поиск по каталогу доступных товаров.

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

  • Создание на языке C базы данных "Стадионы города", требования к программе. Осуществление загрузки базы данных в массив и вывод главного меню в основной программе. Алгоритм работы программы в виде блок-схемы. Описание функций программы и ее листинг.

    курсовая работа [183,6 K], добавлен 06.10.2010

  • Переменные типа integer, real, их функции. Общее понятие о массиве, файлы для Pascal. Информационный и информанизационный набор списка. Реализация и тестирование программы. Выбор базы данных, внесение имени, меню. Блок-схема алгоритма, листинг программы.

    курсовая работа [306,0 K], добавлен 04.02.2013

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

    курсовая работа [391,1 K], добавлен 30.09.2013

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

    контрольная работа [94,5 K], добавлен 24.12.2017

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