Розробка календаря на C++

Призначення та область використання програми "Календар". Перегляд аналогічних існуючих систем. Обґрунтування вибору засобів для побудування системи та мови програмування. Опис функціонування системи. Розробка структурної схеми, діаграма процесів.

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

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

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

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

Зміст

  • Вступ
  • 1. Призначення та область використання
  • 2. Перегляд аналогічних існуючих систем
  • 2.1 Огляд існуючих систем, технологій, архітектур та програмних рішень по профілю теми курсової роботи
  • 2.2 Обгрунтування вибору засобів для побудування системи та мови програмування
  • 2.3 Опис та обґрунтування вибору складу технічних та програмних засобів
  • 3. Опис і обґрунтування проектних рішень
  • 3.1 Розгорнута постановка задачі
  • 3.2 Опис функціонування системи
  • 3.3 Розробка структурної схеми
  • 3.4 Діаграма процесів
  • Основні висновки
  • Перелік скорочень, символів та спеціальних термінів
  • Список літератури

Вступ

C + + - компільований статично типізований мова програмування загального призначення.

Календар (лат. calendarium - боргова книга) - система числення великих проміжків часу, заснована на періодичності руху небесних тіл: Сонця - в сонячних календарях, Місяця - в місячних календарях і одночасно Сонця і Місяця в місячно-сонячних календарях. Також календарем називається список днів року з поділом на тижні і місяці і позначенням свят і періодичне довідкове видання з послідовним переліком днів, тижнів, місяців даного року, а також іншими відомостями різного характеру.

Календар (лат. calendarium - боргова книжка) - система числення великих проміжків часу, заснована на періодичності руху небесних тіл: Сонця - в сонячних календарях, Місяця - в місячних календарях і одночасно Сонця і Місяця в місячно-сонячних календарях. Також календарем називається список днів року з поділом на тижні і місяці і позначенням свят і періодичне довідкове видання з послідовним переліком днів, тижнів, місяців даного року, а також іншими відомостями різного характеру.

Моя програма пропоную ввести рік, а після вводу даних виводить календар на цей рік.

1. Призначення та область використання

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

Існують календарі, що мають у своїй основі не Сонце і Місяць, а інші астрономічні об'єкти: наприклад, в давньоєгипетському календарі рік - це проміжок часу між двома послідовними сходами Сіріуса. Але такі календарі вельми рідкісні.

Кожен народ використовував свої способи датування історичних подій. Одні намагалися вести відлік років від створення світу: євреї датували його 3761 роком до н. е., олександрійська хронологія вважала цією датою 25 травня 5493 до н. е. Римляни починали відлік від легендарного заснування Риму (753 рік до н. Е.)

Переклад з одного літочислення в інше представляє певні труднощі через різної тривалості року і за різної дати початку року в різних системах.

Рахунок року з 1 січня був введений в Римі Юлієм Цезарем в 45 році до н. е. (юліанський календар). У 325 році юліанський календар був прийнятий Візантією. На Русі з 1492 початком року стало вважатися не 1 березня, а 1 вересня.

Юліанський календар встановив середню тривалість року в 365,25 доби: звичайні роки тривали 365 днів, один раз на чотири роки (високосний рік) - 366 днів.

Сучасний календар названий григоріанським (новий стиль). Він введений при папі римському Григорія XIII 15 жовтня 1582 замість юліанського календаря (старого стилю). Реформа, яку провів Григорій XIII і визнали в більшості католицьких країн, складалася з двох частин:

програма календар структурна схема

1) Була усунена помилка в 10 днів, що накопичилася з часів I Вселенського собору (325 рік), на якому були встановлені правила обчислення християнської Пасхи. Побутує хибна думка, що папа Григорій XIII виправив помилку, накопичилася з моменту введення юліанського календаря. Але тоді це було б 12 днів. Мета у реформи була інша: "повернути" дату реального весняного рівнодення (пасхальну кордон) на 21 березня, як це було за часів Нікейського собору, який встановив пасхалію.

2) На майбутнє ж була введена поправка, що забезпечує більш точну відповідність з сонячним обчисленням, яка полягає в тому, що з кожних 400 років повинні були бути виключені три високосних року. Таким чином, помилка в один день накопичується лише через 3333. Виняток трьох високосних років за чотири століття досягалося наступним правилом. Якщо номер року закінчується не так на два нуля, то він вважається високосним тоді, коли номер року кратний чотирьом (наприклад, 1996, 2004, 2008 роки). Якщо рік закінчується на два нулі, то він високосний тільки тоді, коли число сотень в ньому також кратно чотирьом (наприклад, 1600, 2000, 2400 роки). У всіх інших випадках рік вважається невисокосний (наприклад, 1900 і 2100 роки). Правило визначення "Високосний " року, що закінчується на два нулі, є однією з відмінних особливостей григоріанського календаря в порівнянні з юліанським.

Різниця між старим і новим стилями становила в XVI - XVII століттях 10 діб, XVIII столітті - 11 діб, в XIX столітті - 12 діб, в XX - XXI століттях становить 13 діб. З 15 березня 2100 вона складе 14 діб.

2. Перегляд аналогічних існуючих систем

2.1 Огляд існуючих систем, технологій, архітектур та програмних рішень по профілю теми курсової роботи

Крім цифрових календарів люди багато використовують паперові календарі. Крім григоріанського календаря є багато інших календарів. Далі я приведу найбільш відомі календарі.

Відривний календар - кишеньковий або настінний календар - книжка з відривними листами, де на одному аркуші розташовується інформація з даного дня (рідше - тиждень або місяць). Нерідко використовується як настінний календар.

Перекидний календар - настільний або настінний календар - книжка, у якого після зазначеного періоду (дня, тижня чи місяця) перекидаються сторінки (наприклад на " пружині "). На початок XXI століття набрав більшу популярність, ніж відривний.

Кишеньковий календар - малоформатний друкований календар такого розміру, щоб його можна було покласти в кишеню (тобто не більше поштової листівки). Випускається у вигляді таблиці (один щільний аркуш) або книжки (відривний кишеньковий календар).

Календар-щоденник - довідкове видання у вигляді книжки середнього формату в щільній обкладинці, містить, крім власне календарних сторінок, багато іншої корисної інформації, яка може знадобитися в будь-який час: календар на кілька років вперед, адресні сторінки, телефонні коди міст і країн, таблиця державних свят своєї країни і зарубіжних країн, календарна таблиця планування відпусток, таблиця зон часу, одиниці обчислення, валюти країн світу, карти світу та багато іншого. Є незамінною приналежністю і складовою будь-якого планування робочого часу і фіксації всієї необхідної корисної інформації.

2.2 Обгрунтування вибору засобів для побудування системи та мови програмування

Для реалізації поставленої задачі, мною була обрана мова програмування С++, зокрема оболонка Dev C++. Невеликий огляд мови наведений нижче.

C++ (Сі-плюс-плюс або Сі-плас-плас) - мова програмування високого рівня з підтримкою декількох парадигм програмування: об'єктно-орієнтованої, узагальненої та процедурної. Розроблена Б'ярном Страуструпом (англ. Bjarne Stroustrup) в AT&T Bell Laboratories (Мюррей-Хілл, Нью-Джерсі) у 1979 році та названа "Сі з класами". Страуструп перейменував мову у C++ у 1983 р. Базується на мові С. Визначена стандартом ISO/IEC 14882: 2003. [1]

У 1990-х роках С++ стала однією з найуживаніших мов програмування загального призначення. Мову використовують для системного програмування, розробки програмного забезпечення, написання драйверів, потужних серверних та клієнтських програм, а також для розробки розважальних програм таких як відео ігри. С++ суттєво вплинула на інші, популярні сьогодні, мови програмування: С# та Java.

При створенні С++ прагнули зберегти сумісність з мовою С. Більшість програм на С справно працюватимуть і з компілятором С++. С++ має синтаксис, заснований на синтаксисі С.

Нововведеннями С++ порівняно з С є:

підтримка об'єктно-орієнтованого програмування через класи;

підтримка узагальненого програмування через шаблони;

доповнення до стандартної бібліотеки;

додаткові типи даних;

обробка винятків;

простори імен;

вбудовані функції;

перевантаження операторів;

перевантаження імен функцій;

посилання і оператори управління вільно розподіленою пам'яттю.

У 1998 році ратифіковано міжнародний стандарт мови С++: ISO/IEC 14882 "Standard for the C++ Programming Language". Поточна версія цього стандарту - ISO/IEC 14882: 2003.

Мова С++ багато в чому є надмножиною С. Нові можливості С++ включають оголошення у вигляді виразів, перетворення типів у вигляді функцій, оператори new і delete, тип bool, посилання, розширене поняття константності та змінності, функції, що підставляються, аргументи за умовчанням, перевизначення, простори імен, класи (включаючи і всі пов'язані з класами можливості, такі як успадкування, функції-члени (методи), віртуальні функції, абстрактні класи і конструктори), перевизначення операторів, шаблони, оператор::, обробку винятків, динамічну ідентифікацію і багато що інше. С++ є також мовою строгого типування і накладає більше вимагань щодо дотримання типів, порівняно з С.

У С++ з'явилися коментарі у вигляді подвійної косої риски (" // "), які були в попереднику Сі - мові BCPL.

Деякі особливості С++ пізніше були перенесені в С, наприклад ключові слова const і inline, оголошення в циклах for і коментарі в стилі С++ (" // "). У пізніших реалізаціях С також були представлені можливості, яких немає в С++, наприклад макроси vararg і покращена робота з масивами-параметрами.

2.3 Опис та обґрунтування вибору складу технічних та програмних засобів

Для розробки цієї програми використовувалась програма Dev C++.

Dev C++ - вільна інтегрована середа розробки додатків для мов програмування C / C + +. У дистрибутив входить компілятор MinGW. Сам Dev-C + + написаний на Delphi. Поширюється згідно GPL. Проект підтримується SourceForge. Засновник проекту Колін Лаплас, компанія Bloodshed Software. Один час був доступний Linux-порт, однак на даний час актуалізована тільки Windows-версія. На даний момент оригінальний Dev-C + + не розробляється, замість нього активно розробляється порт інтерфейсу Dev-C + + на wxWidgets - wxDev-C + + і форк Orwell Dev-C + + (Johan Mes).

3. Опис і обґрунтування проектних рішень

3.1 Розгорнута постановка задачі

Мені була поставлена задача з нуля розробити програму для вичислення року, я вирішив зробити це досить простим способом. Достатньо просто вбити інтересуючий Вас рік і через мить ви вже отримаєте на відповідь. Мова програмування С++ дозволяє просто і коротко написати невелику програму для цього завдання.

Спочатку я задумався, які бібліотеки використовувати у своїй роботі і, згодом, зупинився на цих двох стандартних бібліотеках:

1. stdio. h (від англ. standard input / output header - стандартний заголовний файл вводу-виводу) заголовний файл стандартної бібліотеки мови Сі, що містить визначення макросів, константи та оголошення функцій і типів, що використовуються для різних операцій стандартного введення і виведення. Функціональність успадкована від "портативного пакета введення-виведення" ("portable I / O package"), написаного Майком Ліском з Bell Labs на початку 1970-х. C + + заради сумісності також використовує stdio. h поряд зі схожим по функціональності заголовним файлом cstdio.

2. time. h - заголовний файл стандартної бібліотеки мови програмування СІ, що містить типи і функції для роботи з датою і часом.

На мій погляд, вони дуже відповідають для реалізації поставленої мені задачі.

3.2 Опис функціонування системи

Программа може вивести календар на у діапазоні із 1970 року включно до 2999 року. Те що програма може вивести рік тільки починаючи з 1970 пояснюється нижче.

UNIX - час (англ. Unix time) або POSIX - час - система опису моментів у часі, прийнята в UNIX та інших POSIX - сумісних операційних системах. Визначається як кількість секунд, що пройшли з півночі (00: 00: 00 UTC) 1 січня 1970 (четвер); час з цього моменту називають "ерою UNIX " (англ. Unix Epoch).

Час UNIX узгоджується з UTC - зокрема, при оголошенні високосних секунд UTC відповідні номери секунд повторюються, тобто високосні секунди не враховуються.

Подання часу у вигляді кількості секунд зручно використовувати для порівняння та зберігання дат (дата і час в цьому форматі займають всього 4 або 8 байтів). При необхідності звернення до елементів дат (день, місяць, рік) секунди можна перетворити в будь-який відповідний формат (і навпаки), але якщо такі перетворення виконуються часто, вони знижують продуктивність.

У програмах для зберігання UNIX - часу використовується цілочисельний знаковий тип. Знаковість спрощує обчислення різниці в секундах між двома моментами часу, яка може бути негативною.32 - бітові числа зі знаком можуть посилатися на моменти часу від п'ятниці 13 грудня 1901 20: 45: 52 до вівторка 19 січня 2038 3: 14: 07 включно.

Щоб дізнатися поточний UNIX - час у більшості UNIX - подібних систем, можна використовувати команду date + % s.

Я пояснив деякі моменти, наприклад time_t, та далі я починаю поснювати принцип родоти програми. Спочатку я підключаю стандартні бібліотеки С++, такі, як stdio. h та time. h.

Потім починається основне тіло програми:

int_main ()

Ініціалізую структуру та ставлю вказник на неї:

struct tm * timeinfo;

Після цього я створюю змінні типа int:

int year, m, i, j;

Та типа char, яким зразу ж даю значення:

char* month [12] = { "January","February", "March","April", "May","June", "July", "August","September","October", "November","December"};

Виводжу на екран повідомлення с текстом YEAR:, яке спонукає до вводу інтересуючого вас року та программа перевіряє те, який рік ви вводите:

printf ("YEAR: "); scanf ("%d",&year);

Після цього ми за допомогою команди:

time (&now);

Отримуємо даний час, там модифікуємо його за вибиром користувача.

Потім прирівнюємо місцевий час до структури timeinfo:

timeinfo = localtime (&now);

Починаємо нумерувати роки починаючи з 1900:

timeinfo->tm_year = year-1900;

Після я використовую цикл while, описання дій программи я зробив у коді:

while (m<12)

{ for (i=1; i<33; i++) // дні року з "перегрузкою"

{ timeinfo->tm_mday = i;

mktime (timeinfo); // визиваємо mktime: буде встановлено значення всієї timeinfo протягом дня

if (timeinfo->tm_mon > m) // подія "кінць місяця","перегрузка" у процесі

{ printf ("\n %s\n",month [timeinfo->tm_mon]);

printf ("_______________________________\n");

printf (" Su Mo Tu We Th Fr Sa\n");

printf ("_______________________________\n");

for (j=0; j< (timeinfo->tm_wday); j++)

printf (" ");

m++;

break;

}

if (m==11 && timeinfo->tm_mon ==0) // подія "кінець року"

{ m++;

break;

}

printf ("%4d",timeinfo->tm_mday);

if (timeinfo->tm_wday==6) // подія "кінець тижня"

printf ("\n");

}

}

Якщо рік був введен правильно, то виводиться календар на той (високосні також враховуються). Там показані 12 місяців, також можна побачити, який день буде вихідним, або понеділком. Словом, відображається звичайнісінький календар, який міг би висіти у вас на стіні.

Нижче, на мал.1. зображен готовий календар на 2014 р. (не повний)

3.3 Розробка структурної схеми

Структурна схема - це сукупність елементарних ланок об'єкта і зв'язків між ними, один з видів графічної моделі. Під елементарним ланкою розуміють частину об'єкта, системи управління і т.д., яка реалізує елементарну функцію.

Структурна схема призначена для відображення загальної структури пристрою (алгоритму), тобто його основних блоків, вузлів, частин та головних зв'язків між ними. Із структурної схеми повинно бути зрозуміло, навіщо потрібний даний пристрій і як він працює в основних режимах роботи, як взаємодіють його частини, або ж у випадку з програмним забезпеченням - структурні елементи програми.

Мал.2. Структурна схема роботи будь-якої програми

3.4 Діаграма процесів

Діаграма процесів показує структуру впливу певних дій,що відбуваються при роботі програмного забезпечення, одна на одну, та показує переходи, що відбуваються по завершенню дій.

Мал. 3. Діаграма процесів

Основні висновки

Виконуючи цю курсову я придбав багато навичок при роботі з середою програмування Dev C++, що безумовно знадобиться мені у майбутньому. Також я багато зрозумів о необхідності писати свій код якомога компактніше та зрозумів, що свою програму треба оптимізовувати. Мені дуже допомогла інформація, яку я чув на лекціях, але деякі моменти мені прийшлось знаходити у підручниках та шукати у світовій мережі. Дуже цікаво було працювати з новими бібліотеками та функціями (time. h, наприклад). Моя програма чідко підлючує календар на рік, який вводить користувач. При написанні даної програми, я освоїв багато навиків у роботі з циклами, функціями, що дало мені змогу закріпити знання, отримані з основного курсу.

Перелік скорочень, символів та спеціальних термінів

Windows - операційна система корпорації Microsoft.

С++ - мова програмування.

OC - операційна система.

Dev C++ - оболонка для програмування на мові С++.

UNIX (читається юнікс) - сімейство переносимих, багатозадачних і багатокористувацьких операційних систем.

GNU General Public License (перекладають як Універсальна громадська ліцензія GNU, Універсальна загальнодоступна ліцензія GNU або Відкрите ліцензійну угоду GNU) - ліцензія на вільне програмне забезпечення, створена в рамках проекту GNU в 1988 р.

Delphi - мова програмування.

С# - мова програмування.

Java - мова програмування.

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

1. Прата С. - Язык программирования С++. Лекции и упражнения - 2011. - 558с.

2. Страуструп Б. - Программирование. Принципы и практика использования C++ - 2011. - 574с.

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

...

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

  • Розробка ефективних засобів навчання. Виявлення системи, способів, що сприяють підвищенню активності учнів. Призначення та область використання програми електронний довідник. Розробка алгоритму програми. Обґрунтування вибору мови і системи програмування.

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

  • Призначення менеджеру пристроїв. Обґрунтування вибору мови програмування. Розробка структурної схеми і опис діалогового інтерфейсу програми. Блок-схема програмного додатку, основні функції і алгоритм його роботи. Методики і інструкція його тестування.

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

  • Побудування блок-схеми рішення завдання зі знайдення центра ваги однорідної усіченої призми. Розробка програми за допомогою язика програмування C++, опис змінних та функцій програми та загальної математичної моделі. Розробка інструкції користувача.

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

  • Дослідження класифікації автоматизованих інформаційних систем. Обґрунтування вибору мови і системи програмування. Програмне забезпечення та опис компонентів середовища. Інтерфейс програмного комплексу. Розрахунок повної собівартості програмного продукту.

    дипломная работа [584,1 K], добавлен 26.06.2015

  • Медична інформаційно-аналітична система "Емсімед". Аналіз програмних, апаратних засобів. Архітектурне проектування автоматизованої системи обліку медичних інструментів. Опис структурної та логічної схеми. Вибір мови програмування, керівництво користувача.

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

  • Критерії (вимоги) до створення автоматичного робочого місця оператора реєстратури. Обґрунтування вибору середовища програмування та засобів збереження даних. Алгоритм програми. Опис інтерфейсу проекту системи. Програмні модулі та керівництво користувача.

    дипломная работа [1017,0 K], добавлен 31.10.2014

  • Створення баз даних для автоматизування роботи торгового представника в середовищі програмування Delрhі. Опис вхідної та результуючої інформації, формалізований опис задачі. Розробка технічного та робочого проекту, опис та обґрунтування вибору структури.

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

  • Широкі можливості по використанню комп'ютерних навчальних систем. Розробка навчальної системи мультимедійного посібника з дисципліни "Інформатика і ОТ" на тему "Особливості мови програмування С++. Вказівники". Вимоги до розробки навчальної програми.

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

  • Постановка та описання алгоритму розв’язання задачі про оптимальне призначення, формулювання вимог. Обґрунтування вибору засобів програмування. Розробка структури програми та системи її візуалізації, тестування та верифікація, оцінка ефективності.

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

  • Вибір первинних вимірювальних перетворювачів та виконавчих механізмів, мікропроцесорних засобів автоматизації. Розробка блок-схеми системи автоматичного керування, програми функціонування вибраних засобів, принципових електричних схем зовнішніх з’єднань.

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

  • Розробка структурної схеми системи управління, головні вимоги до основних елементів. Обґрунтування та вибір елементної бази. Блок-схема алгоритму і програми реалізації закону управління (лістинг програми). Зміст програми керування мікроконтроллером.

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

  • Аналіз навігаційних технологій у сучасних AVL системах. Структура системи і вимоги до апаратного забезпечення, розробка алгоритмів функціонування окремих програмних модулів. Вибір мови програмування і СУБД. Тестовий варіант програмного забезпечення.

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

  • Розробка структурної та принципипової схеми мікропроцесорної системи, їх структура и головні елементи. Розробка програми мікропроцесора, а також пристрою для блоку воду-виводу, схеми дешифратора. Інтерфейс і закономірності зв’язку в комп’ютером.

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

  • Класифікація існуючих інформаційних систем. Особливості створення інформаційної системи роботи меблевого магазину. Розробка програми, що забезпечує роботу торгівельної организації, в середовищі Microsoft Visual Studio 2008 на мові програмування Vb.NEt.

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

  • Модель аналізу-синтезу компіляції. Формальний опис вхідної мови програмування. Вибір технології програмування, проектування таблиць транслятора та вибір структур даних. Опис програми реалізації лексичного аналізатора. Розробка дерев граматичного розбору.

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

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

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

  • Обґрунтування вибору автоматизованої системи для створення конструкторської документації. Проектування 3D моделі і креслення деталі в системі SolidWorks. Розробка API програми. Призначення деталі "прес-форма". Розробка керуючої програми для устаткування.

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

  • Опис мови програмування PHP. Стратегія Open Source. Мова розмітки гіпертекстових документів HTML. Бази даних MySQL. Обґрунтування потреби віддаленого доступу до БД. Веб-сервер Apache. Реалізація системи. Інструкція користувача і введення в експлуатацію.

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

  • Аналіз особливостей мови програмування Java та середовища Android Studio. Розробка програмного забезпечення для якісного та ефективного вивчення іноземних слів. Побудова базових алгоритмів і структури даних. Вибір мови програмування, реалізація програми.

    курсовая работа [335,3 K], добавлен 11.01.2015

  • Розробка програми, яка б дозволяла протестувати знання з дисципліни "Програмування на мові С", виставити оцінку. Опис та обґрунтування методу організації вхідних та вихідних даних, вибору складу технічних та програмних засобів. Проведення лістингу.

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

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