Разработка Windows приложения определения гороскопа по дате рождения

Структурная схема получения гороскопа по дате рождения. Листинг исходных кодов программы и руководство пользователя. Ввод данных с помощью объекта класса QDateEdit. Разработка пользовательского интерфейса. Выбор стратегии тестирования и отладка программы.

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

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

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

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

САРОВСКИЙ ГОСУДАРСТВЕННЫЙ ФИЗИКО-ТЕХНИЧЕСКИЙ ИНСТИТУТ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ЭЛЕКТРОНИКИ

КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ И ИНФОРМАЦИОННОЙ ТЕХНИКИ

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К КУРСОВОМУ ПРОЕКТУ

На тему:

«Разработка Windows приложения определения гороскопа по дате рождения»

СТУДЕНТ:

Терехиной Златы Александровной

ГРУППА: ИТ-32Д

РУКОВОДИТЕЛЬ РАБОТЫ:

Декан ФПК, к.э.н, доцент Федоренко Г.А.

ЗАВЕДУЮЩИЙ КАФЕДРОЙ ВИТ:

к.ф.-м.н. Холушкин В.С.

САРОВ 2015

Аннотация

Данная курсовая работа состоит из двух частей: программы, выполненной в среде Qt Creator 2.7.1 и пояснительной записки.

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

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

Содержание

  • Введение
  • 1. Анализ задания, выбор технологии, языка и среды разработки
  • 2. Разработка ПС
    • 2.1 Описание задачи
    • 2.2 Определение структуры ПС
    • 2.3 Определение спецификации
    • 2.4 Описание работы ПС
    • 2.5 Организация данных
    • 2.6 Разработка пользовательского интерфейса
    • 2.7 Кодирование классов ПС
  • 3. Выбор стратегии тестирования и отладка ПС
  • 4. Системные требования, возможности ПС
  • Заключение
  • Список литературы
  • Приложение 1. Результат работы программы
  • Приложение 2. Листинг программы

Введение

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

Дать однозначное определение гороскопу нельзя. Это собрание характеристик, привязанных к определенным данным о человеке: его году, сезону или дню рождения. Что это - совокупность характеристик, которые могут подходить всем и каждому или какие-то конкретные вековые мудрости - подобный спор ведется уже не один десяток лет. Собственно, это и есть вечный вопрос: верить или не верить в гороскопы.

Знак зодиака определяется датой рождения человека и каждый из этих 12 знаков обладает основными характерными только для него чертами и особенностями, описываемые в гороскопе знаков зодиака, и большинство из нас справедливо полагает, что знаки зодиака отражают сущность нашей натуры.

1. Анализ задания, выбор технологии, языка и среды разработки

Для создания приложения использовался язык программирования С++ и кроссплатформенный инструментарий Qt 4.8 для Windows 7 и выше. Qt позволяет запускать написанное с его помощью ПО в большинстве современных операционных систем путём простой компиляции программы для каждой ОС без изменения исходного кода. Включает в себя все основные классы, которые могут потребоваться при разработке прикладного программного обеспечения, начиная от элементов графического интерфейса и заканчивая классами для работы с сетью, базами данных и XML. Qt является полностью объектно-ориентированным, легко расширяемым и поддерживающим технику компонентного программирования.

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

· Основным достоинством объектно-ориентированного программирования по сравнению с модульным программированием является «более естественная» декомпозиция программного обеспечения, которая существенно облегчает его разработку;

· Объектный подход предлагает новые способы организации программ, основанные на механизмах наследования, полиморфизма, композиции, наполнения.

· Эти механизмы позволяют конструировать сложные объекты из сравнительно простых. В результате существенно увеличивается показатель повторного использования кодов и появляется возможность создания библиотек классов для различных применений.

2. Разработка ПС

2.1 Описание задачи

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

2.2 Определение структуры ПС

Проанализировав проблемную область поставленной задачи, структура создаваемого ПС будет такова:

Рис. 1. Структурная схема получения гороскопа по дате рождения

Всего существует двенадцать знаков Зодиака. Они олицетворяют основные черты характера человеческой личности. Посредством знаков выражаются характерные качества человека, отличающие его от других людей.

Дата рождения

Знак Зодиака

21 марта - 20 апреля

Овен

21 апреля - 20 мая

Телец

21 мая - 21 июня

Близнецы

22 июня - 22 июля

Рак

23 июля - 23 августа

Лев

24 августа - 23 сентября

Дева

24 сентября - 23 октября

Весы

24 октября - 22 ноября

Скорпион

23 ноября - 21 декабря

Стрелец

22 декабря - 20 января

Козерог

21 января - 20 февраля

Водолей

21 февраля - 20 марта

Рыбы

Данная программа позволяет определить по дате рождения человека его гороскоп. Она состоит из следующего:

· Ввод первичных данных (дата рождения)

· Вывод информации в диалоговом окне (гороскоп)

· Редактирование текстовых файлов (изменение гороскопа)

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

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

1. определить по дате рождения гороскоп;

2. разработать алгоритм получения данных;

3. отобразить информацию в графическом окне.

2.4 Описание работы ПС

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

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

2.5 Организация данных

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

2.6 Разработка пользовательского интерфейса

При разработке ПС использовалось создание приложения на базе главного окна класса QMainWindow. Главное окно предоставляет структуру для создания пользовательского интерфейса приложения. Qt имеет класс QMainWindow и связанные с ним классы для управления главным окном. QMainWindow имеет собственный компоновщик, в который вы можете добавлять QToolBar'ы, QDockWidget'ы, QMenuBar, и QStatusBar. Компоновщик имеет центральную область, которая может быть занята любым виджетом. В данной программе в центральной области поле ввода даты и кнопка.

2.7 Кодирование модулей ПС

Для получения прогноза пользователь выбирает нужную дату и нажимает кнопку «Получить». По нажатию данной кнопки вызывается слот on_pushButton_clicked(), в котором считывается дата. После чего создается диалоговое окно с помощью класса QDialog, и начинается считывание гороскопа из файла. Какой именно выбрать файл позволяет функция what_sign(day,month), аргументами которой являются день и месяц.

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

Для редактирования гороскопа нужно вызвать диалоговое окно путем выбора из «Меню» пункта «Редактировать гороскоп», либо открыть одноименное окно путем сочетания клавиш «Ctrl» + «E». После чего вызовется слот on_actionEdit_triggered(). После вывода окна редактирования на нем будут доступны две кнопки «Открыть файл» и «Сохранить», которые связаны со слотами on_pushButton_clicked() и on_pushButton_2_clicked() соответственно. Первый слот позволяет считать и вывести на экран выбранный файл, второй слот сохраняет этот файл, а именно обновляет его содержимое.

void MainWindow::on_pushButton_clicked()

{

QDate date = ui->dateEdit->date();//считываем дату

int day = date.day();//разделяем день

int month = date.month();//и месяц

QDialog *dlg = new QDialog(this);//создаем указатель на диалоговое окно

QTextEdit *textEdit = new QTextEdit(dlg);//и указатель текст , который будет выводится из файла

textEdit->viewport()->setAutoFillBackground(false);//сделаем фон прозрачный

textEdit->setFrameStyle(QFrame::NoFrame);//и без рамки

textEdit->setReadOnly(true);//и только для чтения

QString filename,name;// перменные текстового файла и знака

// Вычисляем знак зодиака

filename = what_sign(day,month);// получаем название текст. файла

name = name_sign(day,month);//и название гороскопа

QString pp(PROJECT_PATH);//путь к папке с гороскопами

QFile file(pp+"/zz/"+filename); /* объявляем файл */

if (file.exists()) // если файл найден

{

file.open(QIODevice::ReadOnly|QIODevice::Text);//открываем для чтения

QString text = file.readAll(); // считываем весь текст

textEdit->setText(text); // выводим текст файла на экран

textEdit->show();//выводим текст

dlg->setWindowTitle(name);//установиим название окна

dlg->show();//и выведем окно

}

else// если не найдет файл выведем предупреждение об ошибке

QMessageBox::critical(this,"Ошибка","Файл "+filename+" не найден");

}

3. Выбор стратегии тестирования и отладка ПС

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

Тестирование - это выполнение комплекса упражнений (заданий) для проверки работоспособности программы при любых условиях. Тестирование может выявить факт наличия ошибки, а налаживание выявляет причину ошибки, так что эти два этапа разработки "перекрываются".

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

Для тестирования данной программы нужно запустить программу и подать ей на вход дату «08.04». Следовательно, программа должна дать на выходе гороскоп Знака Зодиака Овен.

4. Системные требования, возможности ПС

Платформой для функционирования, разработанного ПС является любой персональный компьютер. Минимальные системные требования к аппаратно-операционной среде: OC Windows 7/8, Linux, Mac OS X с предустановленным инструментарием Qt 4.8.x и средой разработки Qt Creator 2.7 и выше. Клавиатура, мышь.

Заключение

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

Программа реализована на языке C++ в программной оболочке QtCreator 2.7.1. Изучение данного языка освоено на уровне, позволяющем справиться с данной задачей

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

1. Страуструп, Б. «Язык программирования C++» Москва: Бином, 2011г Шлее, М. «Qt 4.5. Профессиональное программирование на C++», Санкт-Петербург: БХВ-Петербург, 2009 г.

2. Характеристика знаков зодиака [Электронный ресурс], 2007. - Режим доступа: http://www.astrotime.ru/zodiak.html, свободный.

3. Знаки зодиака и гороскоп на английском языке [Электронный ресурс], 2005. - Режим доступа: http://www.homeenglish.ru/OtherGoroscop.htm, свободный.

4. Работа с файлами. Класс QFile [Электронный ресурс], 2011. - Режим доступа: http://www.homeenglish.ru/OtherGoroscop.htm, свободный.

5. Вронский, С. «Классическая Астрология. Введение в астрологию» - Москва: ВШКА, 2003 г.

Приложение 1. Результат работы программы

После запуска можно увидеть основное окно программы. В ней нужно выбрать желаемую дату и нажать кнопку «Получить».

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

Для редактирования гороскопа следует выбрать в «Меню» пункт «Редактировать гороскоп», либо нажать клавиши «Ctrl» + «E».

Откроется окно редактирования, где нужно нажать на кнопку «Открыть файл»

После чего выбрать нужный файл из списка и нажать «Открыть».

В окне редактирования изменить текущий текст на нужный.

Нажав кнопку «Сохранить» приложение сохранит новый гороскоп.

После чего можно продолжить работу с программой.

Приложение 2. Листинг программы

Файл dialog.h

#ifndef DIALOG_H

#define DIALOG_H

#include <QDialog>

namespace Ui {

class Dialog;

}

class Dialog : public QDialog

{

Q_OBJECT

QString fileName;

public:

explicit Dialog(QWidget *parent = 0);

~Dialog();

private slots:

void on_pushButton_clicked();

void on_pushButton_2_clicked();

private:

Ui::Dialog *ui;

};

#endif // DIALOG_H

Файл mainwindow.h

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {

class MainWindow;

}

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

explicit MainWindow(QWidget *parent = 0);

~MainWindow();

public:

QString what_sign(int day, int month);

QString name_sign(int day, int month);

private slots:

void on_pushButton_clicked();

void on_actionEdit_triggered();

private:

Ui::MainWindow *ui;

};

#endif // MAINWINDOW_H

Файл dialog.cpp

#include "dialog.h"

#include "ui_dialog.h"

#include <QtGui>

Dialog::Dialog(QWidget *parent) :

QDialog(parent),

ui(new Ui::Dialog)

{

ui->setupUi(this);

}

Dialog::~Dialog()

{

delete ui;

}

void Dialog::on_pushButton_clicked()

{

QString pp(PROJECT_PATH+QString("/zz/"));

fileName = QFileDialog::getOpenFileName(

this, // указатель на родительское окно

"Открыть файл", // заголовок окна

QString(pp), // выбор начинается с текущего каталога

QString("Текстовые файлы (*.txt);;Все файлы (*.*)") );

// фильтры для списка файлов

QFile file;

if (!fileName.isEmpty()) // если имя файла выбрано

{

file.setFileName(fileName);

// связываем объект file с физическим файлом

file.open(QIODevice::ReadOnly|QIODevice::Text);

file.setFileName(fileName);

// связываем объект file с физическим файлом

file.open(QIODevice::ReadOnly|QIODevice::Text);

QString text = file.readAll();

ui->textEdit->setText(text); // отображаем текст на экране

}

}

void Dialog::on_pushButton_2_clicked()

{

QString pp(PROJECT_PATH+QString("/zz/"));

if (!fileName.isEmpty()) // если имя файла задано

{

QFile rezFile(pp+fileName); // объявляем объект, соответствующий новому файлу

rezFile.setFileName(fileName); // связываем объект и файл

rezFile.open(QIODevice::WriteOnly|QIODevice::Text);

// открываем файл

QTextStream out(&rezFile); // создаем поток для работы с файлом

out << ui->textEdit->toPlainText(); // переписываем текст в файл

rezFile.close(); // обязательно закрываем созданный файл

QMessageBox::information(this,"Готово","Сохранено!");

}

else QMessageBox::critical(this,"Ошибка","Файл не выбран");

}

Файл main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

MainWindow w;

w.show();

return a.exec();

}

Файл mainwindow.cpp

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include "dialog.h"

#include <QtGui>

MainWindow::MainWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow)

{

ui->setupUi(this);

QTextCodec* codec = QTextCodec::codecForName("UTF-8");

QTextCodec::setCodecForCStrings(codec);

QTextCodec::setCodecForLocale(codec);

QTextCodec::setCodecForTr(codec);

}

MainWindow::~MainWindow()

{

delete ui;

}

QString MainWindow::what_sign(int day, int month){ //функция определения знака и его файла

QString filename;//имя файла

if ( (month == 3 && day >= 21) || (month == 4 && day <= 20) )

filename="Aries.txt"; // Овен

else

if ( (month == 4 && day >= 21) || (month == 5 && day <= 20) )

filename="Taurus.txt"; //Телец

else

if ( (month == 5 && day >= 21) || (month == 6 && day <= 21) )

filename="Gemini.txt"; // Близнецы

else

if ( (month == 6 && day >= 22) || (month == 7 && day <= 22) )

filename="Cancer.txt"; // Рак

else

if ( (month == 7 && day >= 23) || (month == 8 && day <= 23) )

filename="Leo.txt"; // Лев

else

if ( (month == 8 && day >= 24) || (month == 9 && day <= 23) )

filename="Virgo.txt"; // Дева

else

if ( (month == 9 && day >= 24) || (month == 10 && day <= 22) )

filename="Libra.txt"; //Весы

else

if ( (month == 10 && day >= 23) || (month == 11 && day <= 22) )

filename="Scorpio.txt"; // Скорпион

else

if ( (month == 11 && day >= 23) || (month == 12 && day <= 21) )

filename="Sagittarius.txt"; // Стрелец

else

if ( (month == 12 && day >= 22) || (month == 1 && day <= 20) )

filename="Capricorn.txt"; // Козерог

else

if ( (month == 1 && day >= 21) || (month == 2 && day <= 19) )

filename="Aquarius.txt"; // Водолей

else

if ( (month == 2 && day >= 20) || (month == 3 && day <= 20) )

filename="Pisces.txt"; // Рыбы

return filename;//возвращаем имя файла

}

QString MainWindow::name_sign(int day, int month){ //функция определения знака и его названия

QString name;

if ( (month == 3 && day >= 21) || (month == 4 && day <= 20) )

name="Овен"; // Овен

else

if ( (month == 4 && day >= 21) || (month == 5 && day <= 20) )

name="Телец"; //Телец

else

if ( (month == 5 && day >= 21) || (month == 6 && day <= 21) )

name="Близнецы"; // Близнецы

else

if ( (month == 6 && day >= 22) || (month == 7 && day <= 22) )

name="Рак"; // Рак

else

if ( (month == 7 && day >= 23) || (month == 8 && day <= 23) )

name="Лев"; // Лев

else

if ( (month == 8 && day >= 24) || (month == 9 && day <= 23) )

name="Дева"; // Дева

else

if ( (month == 9 && day >= 24) || (month == 10 && day <= 22) )

name="Весы"; //Весы

else

if ( (month == 10 && day >= 23) || (month == 11 && day <= 22) )

name="Скорпион"; // Скорпион

else

if ( (month == 11 && day >= 23) || (month == 12 && day <= 21) )

name="Стрелец"; // Стрелец

else

if ( (month == 12 && day >= 22) || (month == 1 && day <= 20) )

name="Козерог"; // Козерог

else

if ( (month == 1 && day >= 21) || (month == 2 && day <= 19) )

name="Водолей"; // Водолей

else

if ( (month == 2 && day >= 20) || (month == 3 && day <= 20) )

name="Рыбы"; // Рыбы

return name;

}

void MainWindow::on_pushButton_clicked()

{

QDate date = ui->dateEdit->date();//считываем дату

int day = date.day();//разделяем день

int month = date.month();//и месяц

QDialog *dlg = new QDialog(this);//создаем указатель на диалоговое окно

QTextEdit *textEdit = new QTextEdit(dlg);//и указатель текст , который будет выводится из файла

textEdit->viewport()->setAutoFillBackground(false);//сделаем фон прозрачный

textEdit->setFrameStyle(QFrame::NoFrame);//и без рамки

textEdit->setReadOnly(true);//и только для чтения

QString filename,name;// перменные текстового файла и знака

// Вычисляем знак зодиака

filename = what_sign(day,month);// получаем название текст. файла

name = name_sign(day,month);//и название гороскопа

QString pp(PROJECT_PATH);//путь к папке с гороскопами

QFile file(pp+"/zz/"+filename); /* объявляем файл */

if (file.exists()) // если файл найден

{

file.open(QIODevice::ReadOnly|QIODevice::Text);//открываем для чтения

QString text = file.readAll(); // считываем весь текст

textEdit->setText(text); // выводим текст файла на экран

textEdit->show();//выводим текст

dlg->setWindowTitle(name);//установиим название окна

dlg->show();//и выведем окно

}

else// если не найдет файл выведем предупреждение об ошибке

QMessageBox::critical(this,"Ошибка","Файл "+filename+" не найден");

}

void MainWindow::on_actionEdit_triggered()//слот взывающий диалоговое окно редактирования прогноза

{

Dialog *dlg = new Dialog(this);

dlg->exec();

}

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


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

  • Основы программирования на 32-битном Ассемблере, разработка с его помощью программы, демонстрирующей работу одного из разделов ОС Windоws. Описание используемых АРI-функций как интерфейса программирования приложений. Листинг программы, результаты работы.

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

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

    курсовая работа [394,2 K], добавлен 18.05.2013

  • Проектирование модульной структуры программы сетевого мессенджера, назначение модуля "frmMsg". Разработка главной формы и интерфейса пользователя программы. Проектирование модуля формы "About". Разработка методики тестирования и отладка программы.

    курсовая работа [606,7 K], добавлен 19.01.2012

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

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

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

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

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

    курсовая работа [867,9 K], добавлен 16.07.2013

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

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

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