Разработка программы расчёта интервала времени между датами

Анализ предметной области. Разработка алгоритмов нахождения интервала между датами и их реализация в среде разработки C++Builder10.2. Функциональное назначение и логическая структура программы. Требования к информационной и программной совместимости.

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

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

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

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

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Кафедра «Информационно-вычислительные системы»

Курсовая работа

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

на тему “Разработка программы расчёта интервала времени между датами”

ПГУ 1.090303.04

Направление подготовки - 09.03.03 Прикладная информатика

Профиль подготовки - Прикладная информатика в экономике

Выполнил студент Елин Н.А.

Реферат

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

Цель работы - разработка программы расчёта интервала времени между датами. В курсовой работе проведен анализ предметной области, разработано техническое задание, разработаны алгоритмы нахождения интервала между датами. Эти алгоритмы реализованы в среде разработки C++ Builder 10.2.

Проведенные испытания показали правильность работы приложения. Ключевые слова: Программа, Интервал, Дата, C++.

  • Содержание
  • Введение
  • 1. Анализ предметной области
  • 2. Техническое задание
    • 2.1 Основание для разработки
    • 2.2 Назначение разработки
    • 2.3 Требования к программе
    • 2.3.1 Требования к функциональным характеристикам
    • 2.3.2 Требования к составу и параметрам технических средств
    • 2.3.3 Требования к информационной и программной совместимости
    • 2.4 Требования к программной документации
    • 2.5 Порядок контроля и приёмки
  • 3. Описание программы
    • 3.1 Общие сведения
    • 3.2 Функциональное назначение
    • 3.3 Описание логической структуры
    • 3.4 Используемые технические средства
    • 3.5 Вызов и загрузка
    • 3.6 Входные данные
    • 3.7 Выходные данные
  • 4. Программа и методика испытаний
    • 4.1 Объект испытаний
    • 4.2 Цель испытаний
    • 4.3 Требования к программе
    • 4.4 Требования к программной документации
    • 4.5 Средства и порядок испытаний
    • 4.6 Методика испытаний
  • 5. Описание применения
    • 5.1 Назначение программы
    • 5.2 Условия применения
    • 5.3 Описание задачи
    • 5.4 Входные и выходные данные
  • Заключение
  • Список используемых источников
  • Приложение

Введение

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

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

1. Анализ предметной области

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

Программа реализована на языке программирования C++ в среде разработки C++ Builder 10.2.

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

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

алгоритм интервал builder программа

2. Техническое задание

2.1 Основание для разработки

Программа разрабатывается на основании задания на курсовое проектирование по дисциплине «Программирование на языках высокого уровня». Задание утверждено заведующей кафедрой ИВС Пензенского государственного университета Бобрышевой Г.В. и выдано доцентом кафедры ИВС Масленниковым А.А.

2.2 Назначение разработки

Разрабатываемая программа предназначена для расчёта интервала между датами.

2.3 Требования к программе

2.3.1 Требования к функциональным характеристикам

Программа должна вычислять интервал между датами в днях месяцах и годах.

2.3.2 Требования к составу и параметрам технических средств

Программа предназначена для работы на персональных компьютерах, имеющих следующие минимальные характеристики: оперативная память - 512 Мбайт; объем жестокого диска от 64 Гбайт.

2.3.3 Требования к информационной и программной совместимости

Программа должна быть разработана в среде C++ Builder 10.2 работающей под управлением операционной системы Windows XP и выше.

2.4 Требования к программной документации

Разрабатываемая программа должна сопровождаться следующими программными документами:

Описание программы

Программа и методика испытаний

Описание применения

Текст программы

2.5 Порядок контроля и приёмки

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

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

Для проверки работоспособности необходимо выполнить расчёты вручную или в программах аналогах (если имеются). Затем сравнить результаты.

3. Описание программы

3.1 Общие сведения

Программа разработана в среде C++ Builder 10.2, её текст приведен в приложении А.

3.2 Функциональное назначение

Программа служит для расчёта интервала между датами.

3.3 Описание логической структуры

Блок-схема алгоритма метода Run класса BetweenDates представлена на рисунках 1, 2, 3.

Рисунок 1

Рисунок 2

Рисунок 3

Текст программы приведён в приложении А

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

Модуль main состоит из методов Button1Click и init. Метод Button1Click вызывается при нажатии на кнопку «Рассчитать интервал». В нём создаётся экземпляр класса BetweenDates, в конструктор которого передаются такие свойства, как: DateTimePicker1->DateTime (номер дня), DateTimePicker2->DateTime, DateTimePicker1->Date.FormatString("mm") (месяц), DateTimePicker2->Date.FormatString("mm"), DateTimePicker1->Date.FormatString("yyyy") (год), DateTimePicker2->Date.FormatString("yyyy"). Далее из экземпляра класса BetweenDates получаем следующие данные:

­ TotalDays - разница в днях

­ TotalMonths - разница в месяцах

­ TotalYears - разница в годах

­ ResidualDays - остаток дней с вычетом полных месяцев и полных лет

­ ResidualMonths - остаток месяцев с вычетом полных лет

Полученные данные выводим в форме в компонентах Label.

В методе init задаётся текущая дата для DateTimePicker1 и DateTimePicker2.

Модуль BetweenDates - это класс, который состоит из конструктора и методов: Run, Days, Years, CountLeapYears, IsLeap, Subtraction. В конструкторе принимаются свойства класса и вызывается метод Run, в котором производятся вычисления.

Описание методов и свойств класса BetweenDates:

­ public: int TotalDays - разница в днях

­ public: int TotalMonths - разница в месяцах

­ public: int TotalYears - разница в годах

­ public: int ResidualDays - остаток дней с вычетом полных месяцев и полных лет

­ public: int ResidualMonths - остаток месяцев с вычетом полных лет

­ private: int InputDate1 - номер дня первой даты

­ private: int InputDate2; - номер дня второй даты

­ private: int InputMonth1 - месяц первой даты

­ private: int InputMonth2 - месяц второй даты

­ private: int InputYear1 - год первой даты

­ private: int InputYear2 - год второй даты

­ private: int Days(int date1, int date2) - разница между датами в днях

­ private: int Years() - разница межу датами в годах

­ private: int CountLeapYears(int year1, int year2) - количество високосных лет

­ private: bool IsLeap(int year) - определяет является ли год високосным

­ private: int Subtraction(int x, int y) - вычитает из большего числа меньшее

­ private: void Run() - производит необходимые расчёты с использованием методов описанных выше

3.4 Используемые технические средства

Программа предназначена для работы на персональных компьютерах, имеющих следующие минимальные характеристики: оперативная память - 512 Мбайт; объем жестокого диска от 64 Гбайт.

3.5 Вызов и загрузка

Исполняемый файл: BetweenDates.exe

3.6 Входные данные

­ Дата 1

­ Дата 2

3.7 Выходные данные

­ Интервал полных дней

­ Интервал полных месяцев

­ Интервал полных лет

­ Интервал в формате д.м.г.

4. Программа и методика испытаний

4.1 Объект испытаний

Объектом испытаний является программа, предназначенная для расчёта интервала между датами.

4.2 Цель испытаний

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

4.3 Требования к программе

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

4.4 Требования к программной документации

Состав программной документации, предъявляемой на испытания:

­ Техническое задание

­ Описание программы

­ Программа и методика испытаний

­ Описание применения

­ Текст программы

4.5 Средства и порядок испытаний

Программа предназначена для работы на персональных компьютерах, имеющих следующие минимальные характеристики: оперативная память - 512 Мбайт; объем жестокого диска от 64 Гбайт.

Для проверки правильности работы системы был принят следующий порядок действий:

а) запустить программу на выполнение;

б) провести тестирование программы по тестам, описанным в пункте 4.6;

в) сравнить реакции программы с ожидаемым результатом;

г) сделать выводы по результатам тестирования о работоспособности программы.

4.6 Методика испытаний

Для проверки правильности работы программы подготовим тестовые наборы данных:

Набор №1

Дата 1: 01.02.2002

Дата 2: 03.05.2017

Набор №2

Дата 1: 08.09.1996

Дата 2: 01.07.2015

Набор №3

Дата 1: 03.01.1940

Дата 2: 08.05.2010

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

5. Описание применения

5.1 Назначение программы

(См. п. 3.2)

5.2 Условия применения

(См. п. 3.4 и п.4.5)

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

Программа вычисляет интервал между датами в днях, месяцах, годах.

5.4 Входные и выходные данные

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

Заключение

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

Список используемых источников

1. Бьёрн Страуструп. Программирование: принципы и практика в С++.

2. Стэнли Липман, Джосе Ладжойе, Барбара Му. Учебник для начинающих: С++. 2012г.

3. Эндрю Кёниг и Барбара Му. Ускоренный С++.

4. Николай Джосаттис С++: справочник по стандартной библиотеке. 2012г.

5. Архангельский А.Я. Программирование в C++ Builder. 2010г.

Приложение А

Текст программы

main.cpp:

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "main.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

#include "BetweenDates.h"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender) {

BetweenDates BetweenDates(

StrToDate(DateTimePicker1->DateTime),

StrToDate(DateTimePicker2->DateTime),

StrToInt(DateTimePicker1->Date.FormatString("mm")),

StrToInt(DateTimePicker2->Date.FormatString("mm")),

StrToInt(DateTimePicker1->Date.FormatString("yyyy")),

StrToInt(DateTimePicker2->Date.FormatString("yyyy"))

);

Days->Caption = "Полных дней: " + IntToStr(BetweenDates.TotalDays);

Months->Caption = "Полных месяцев: " + IntToStr(BetweenDates.TotalMonths);

Years->Caption = "Полных лет: " + IntToStr(BetweenDates.TotalYears);

All->Caption = "Разница составляет: " +

IntToStr(BetweenDates.ResidualDays) + " д. " +

IntToStr(BetweenDates.ResidualMonths) + " мес. " +

IntToStr(BetweenDates.TotalYears) + " года/лет";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::init(TObject *Sender) {

DateTimePicker1->Date = Date();

DateTimePicker2->Date = Date();

}

//---------------------------------------------------------------------------

main.h:

//---------------------------------------------------------------------------

#ifndef mainH

#define mainH

//---------------------------------------------------------------------------

#include <System.Classes.hpp>

#include <Vcl.Controls.hpp>

#include <Vcl.StdCtrls.hpp>

#include <Vcl.Forms.hpp>

#include <Vcl.ComCtrls.hpp>

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published:// IDE-managed Components

TDateTimePicker *DateTimePicker1;

TDateTimePicker *DateTimePicker2;

TLabel *Label1;

TLabel *Label2;

TButton *Button1;

TLabel *Label3;

TLabel *Days;

TLabel *Months;

TLabel *Years;

TLabel *All;

TLabel *Label4;

void __fastcall Button1Click(TObject *Sender);

void __fastcall init(TObject *Sender);

private:// User declarations

public:// User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

BetweenDates.cpp:

//---------------------------------------------------------------------------

#pragma hdrstop

#include "BetweenDates.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

BetweenDates::BetweenDates(

int date1,

int date2,

int month1,

int month2,

int year1,

int year2

) {

InputDate1 = date1;

InputDate2 = date2;

InputMonth1 = month1;

InputMonth2 = month2;

InputYear1 = year1;

InputYear2 = year2;

Run();

}

void BetweenDates::Run() {

TotalDays = Days(InputDate1, InputDate2);

int days = TotalDays;

int input_month = InputYear1 > InputYear2 ? InputMonth2 : InputMonth1;

int month = input_month;

int month_in_year = month;

int year = InputYear1 > InputYear2 ? InputYear2 : InputYear1;

while (true) {

if (month_in_year == 12) {

month_in_year = 0;

year++;

}

if (month_in_year == 4 || month_in_year == 6 || month_in_year == 9 || month_in_year == 11) {

if (days < 30) break;

days -= 30;

} else if (IsLeap(year) && month_in_year == 2) {

if (days < 29) break;

days -= 29;

} else if (month_in_year == 2) {

if (days < 28) break;

days -= 28;

} else {

if (days < 31) break;

days -= 31;

}

month++;

month_in_year++;

}

TotalMonths = month - input_month;

TotalYears = Years();

ResidualDays = days;

ResidualMonths = TotalMonths - TotalYears * 12;

}

int BetweenDates::Days(int date1, int date2) {

return Subtraction(date1, date2);

}

int BetweenDates::Years() {

int full_years = Subtraction(InputYear1, InputYear2);

int leap_years = CountLeapYears(InputYear1, InputYear2);

int non_leap_years = full_years - leap_years;

int days = TotalDays - (leap_years * 366 + non_leap_years * 365);

return days >= 0 ? full_years : full_years - 1;

}

int BetweenDates::CountLeapYears(int x, int y) {

int count = 0;

if (x > y) {

int z = x;

x = y;

y = z;

}

for (x; x < y; x++)

if (IsLeap(x)) count++;

return count;

}

bool BetweenDates::IsLeap(int year) {

return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ? true : false;

}

int BetweenDates::Subtraction(int x, int y) {

return y > x ? y - x : x - y;

}

BetweenDates.h:

//---------------------------------------------------------------------------

#ifndef BetweenDatesH

#define BetweenDatesH

class BetweenDates {

public: BetweenDates(

int date1,

int date2,

int month1,

int month2,

int year1,

int year2

);

public: int TotalDays;

public: int TotalMonths;

public: int TotalYears;

public: int ResidualDays;

public: int ResidualMonths;

private: int InputDate1;

private: int InputDate2;

private: int InputMonth1;

private: int InputMonth2;

private: int InputYear1;

private: int InputYear2;

private: int Days(int date1, int date2);

private: int Years();

private: int CountLeapYears(int year1, int year2);

private: bool IsLeap(int year);

private: int Subtraction(int x, int y);

private: void Run();

};

//---------------------------------------------------------------------------

#endif

Приложение Б

РЕЗУЛЬТАТЫ ИСПЫТАНИЙ

Рисунок Б.1

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


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

  • Ввод ряда дат. Созданиу упорядоченный ряд дат в строке или столбце. Ввод ряда дат с автозаполнением. Создание рядов. Форматирование дат и времени. Арифметические операции с датами. Функции дат и времени. Специальные функции для работы с датами.

    лабораторная работа [14,4 K], добавлен 10.03.2007

  • Анализ предметной области. Проектирование структуры базы данных в среде case-средства ERWIN в виде инфологической и даталогической моделей. Общие сведения о AllFusion Process Modeler 7. Требования к надежности, информационной и программной совместимости.

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

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

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

  • Обоснование выбора средств разработки. Анализ предметной области. Сущность структурного подхода к разработке информационных систем. Требования к информационной и программной совместимости. Запросы к базе данных. Инфологическое проектирование системы.

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

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

    отчет по практике [1,9 M], добавлен 13.12.2011

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

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

  • Оценка предметной области: концептуальные требования; выявление информационных объектов и связей между ними; построение базы данных. Описание входных и выходных данных информационной системы "Магазин компьютерной техники". Анализ диаграммы прецедентов.

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

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

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

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

    отчет по практике [934,7 K], добавлен 25.03.2012

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

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

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