Календар

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра інформатики

Інформація про роботу

Рік:
2011
Тип роботи:
Курсова робота
Предмет:
Програмування частина 4 Технологія системного програмування

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Тернопільський національний технічний університет ім. Івана Пулюя   Кафедра інформатики і математичного моделювання     Курсова робота З дисципліни «Програмування» на тему «Календар» Зміст Вступ ………………………………...………………………………… 2 Аналіз завдання ………………………………………………………. . 4 Розробка алгоритму функціонування ………………………………... 5 Опис основних змінних та функцій …………………………………. 6 Тестування програми …………………………………………………. .8 Висновки ………………………………………………………………...14 Перелік використаної літератури ……………………………………...15 Лістинг програми …………………………………………………….....16 Вступ Серед основних функції програмних засобів виділяють: збір, обробку, передачу, збереження інформації; автоматизацію проектно-конструкторських та інших управлінських робіт. Сучасний спеціаліст, пов'язаний с комп’ютерною автоматизацією обов’язково повинен володіти основами програмування, так як раціональне і правильне використання цифрового апарату є дуже важливим аспектом багатьох сучасних систем автоматики. Щоб реалізувати завдання даної курсової роботи, я повинен створити програму для перегляду календаря на будь-який, заданий користувачем річ, а також визначення дня тижня за введеними роком, місяцем та днем. Справитися з цією задачею мені допоможе об’єктна-орієнтоване програмування, або ООП. На даний момент ООП являється домінуючим стилем при створення програм. ООП являється третім великим етапом (після структурного і модульного програмування) в процесі розвитку структурного підходу. Створювані в середині 70-х років великі програмні системи продемонстрували, що в рамках процедурно-орієнтованого стилю використання структурного підходу не дає бажаного результату. Число помилок, пов’язаних з неправильним використанням процедур і некоректним врахуванням взаємозв’язків між компонентами, стало нелінійно рости. Терміни уводу в експлуатацію цих систем постійно зривались. Зменшити число подібних помилок і спростити їх знаходження могла дозволити алгоритмічна декомпозиція, що орієнтується на «природні» елементи (об’єкти) простору вирішуваної задачі. В цьому випадку спрощувалось зіставлення програмованих конструкцій з модельованими об’єктами. Основним поняттям ООП являється клас, який можна розглядувати з двох сторін: по-перше, з позиції предметної області: клас відповідає певному характерному об’єкту цієї області. По-друге, з позиції технології програмування, що реалізує дані зіставлення: «клас» в ООП – це певна програмна структура, яка володіє трьома важливими властивостями: інкапсуляція, спадкування, ізоморфізму. Не мало важливі і такі властивості ООП: об’єктна-орієнтований аналіз предметної області, створення і знищення об’єктів, принципи організації взаємодії об’єктів. Аналіз завдання Метою роботи являється розробка програми на мові Сі для обробки даних. Моя програма повинна коректно обробляти дані, представлені у вигляді таблиці: Назва місяця Нд Пн Вт Ср Чт Пт Сб                                                 Розроблена програма повинна виконувати наступні задачі: Створювати календар на будь-який рік, заданий користувачем. Визначати день тижня Завершувати роботу. Розробка алгоритму функціонування Для виконання даної курсової роботи знадобиться стандартна бібліотека мови програмування Сі – time.h. Щоб створити календар на заданий рік, потрібно використовувати арифметичний тип time_t для представлення часу, та структуру struct tm,що містить компоненти календарного часу: Ім’я Опис  int tm_sec; Секунди від початку хвилини(0,59)  int tm_min; Хвили від початку години(0,59)  int tm_hour; Години до півночі(0,23)  int tm_mday; Число місяця(1,31)  int tm_mon; Місяці після січня(0,11)  int tm_year; Роки із 1900(в Windows), с 1970(в Unix)  int tm_wday; Дні з неділі(0,6)  int tm_yday; Дні з першого січня(0,365)  int tm_isdst; Ознака літнього часу   Опис основних змінних та функцій В програмі використовуються наступні основні функції: Назва функції Параметри Призначення  void main ( ) основна функція програми  void intro ( ) титульна сторінка  void calendar ( ) визначення дня неділі  void calendar_1 ( ) створення календаря   В програмі використовуються наступні основні змінні: Назва змінної Тип Призначення К-сть символів  ch char зберігає поточний пункт меню 1  i int лічильник циклу або елемент масиву 1  j int лічильник циклу або елемент масиву 1  m int лічильник масиву 1  *month[ ] char масив, що містить місяці 12  *wday[] char масив, що містить дні тижня 8  tm*timeinfo struct структура компонентів часу 1  year int зберігає поточний рік 1  month int зберігає поточний місяць 1  day int зберігає поточний день 1   В програмі використовуються наступні стандартні бібліотеки мови Сі: #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<iostream.h> #include <time.h> iostream.h - заголовний файл з класами, функціями і змінними для організації вводу-виводу в мові програмування C + +. stdio.h - містить визначення макросів, константи та оголошення функцій і типів, що використовуються для різних операцій стандартного вводу і виводу. conio.h - заголовний файл для створення текстового інтерфейсу користувача. stdlib.h - заголовний файл, який містить у собі функції, що займаються виділенням пам'яті, контроль процесу виконання програми, перетворення типів та інші. time.h – заголовний файл, що містить типи і функції для роботи з датою і часом. Тестування програми Після запуску програми перед користувачем з’явиться екран з титульною сторінкою. / Для продовження роботи потрібно натиснути будь-яку клавішу. Після чого з’явиться головне меню програми: / Тепер подивимось, що відбудеться при натисненні користувачем кожного пункту меню. Нумерація пунктів – є нумерацією клавіш на клавіатурі. При натисненні клавіші 1, програма запросить ввести рік, який потрібно вивести на екран: / / Після уведення року, програма помісячно буде виводити результат виконання на екран: / / Якщо рік буде уведено некоректно, то програма видасть відповідне повідомлення і знову повернеться до пункту введення року: / Після успішного виведення останнього місяця календаря, виведеться повідомлення із пропозицією повернутися до головного меню , або повністю завершити роботу програми. / При натисненні клавіші 2, програма почергово буде запрошувати ввід року, місяця і дня для визначення дня тижня. / / / Після уведення всіх даних, програма виведене на екран, який день тижня випаде в той рік, місяць та день, які ввів користувач та запитає, чи продовжити роботу далі, чи завершити роботу: / Якщо дані були введені некоректно, то видасться відповідне повідомлення: / 3 – вихід із програми. При натисненні на клавіатурі клавіші 3 буде здійснено вихід. Висновки В процесі виконання курсової роботи, розроблена програма на мові Сі для обробки даних типу структура. Обробка даних включає: Створення календаря на будь-який рік Визначення дня неділі за введеними роком, місяцем та днем Вихід із програми Також в програмі розроблено титульну сторінку, яка містить інформацію про курсову роботу. При розробці програми використовувалися функції, масиви, вказівники. Перелік використаної літератури Гукин Д. Язык программирования Си для «чайников» — М.: Диалектика,2006. — С. 352 Кочан С. Программирование на языке Си — 3-е изд. — М.: Вильямс, 2006. — С. 496 Шилдт Г. Полный справочник по C — 4-е изд. — М.: Вильямс, 2004. — С. 704 Прата С. Язык программирования С: Лекции и упражнения — 1-е изд. — М.: Вильямс, 2006. — С. 960 Керниган Б., Ритчи Д. Язык программирования Си — 2-е изд. — М.: Вильямс, 2007. — С. 304 Лістинг програми #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> #include<iostream.h> #include <time.h> #include <windows.h> void kalendar() { clrscr(); struct tm time_check; int year, month, day; char ch; char Su[20]; CharToOem("недiля ", Su); char Mo[20]; CharToOem("понедiлок", Mo); char Tu[20]; CharToOem("вiвторок", Tu); char We[20]; CharToOem("середа", We); char Th[20]; CharToOem("четвер", Th); char Fr[20]; CharToOem("п'ятниця", Fr); char Sa[20]; CharToOem("субота", Sa); char error[100]; CharToOem("Неправильно введенi данi", error); char *wday[] = {Su, Mo, Tu, We, Th, Fr, Sa, error}; char year_1[100]; CharToOem("1 - Рiк(1970-2037): ", year_1); char month_1[100]; CharToOem("2 - Мiсяць: ", month_1); char day_1[100]; CharToOem("3 - День: ", day_1); char rez[100]; CharToOem("Цим днем є ", rez); char back[100]; CharToOem("0 - повернутися до головного меню \\ 1 - вихiд iз програми ", back); textbackground(1); textcolor(15); clrscr(); clrscr(); cprintf("\n\r"); cprintf(year_1); cscanf("%d", &year); cprintf("\n\r"); cprintf(month_1); cscanf("%d", &month); cprintf("\n\r"); cprintf(day_1); cscanf("%d", &day); cprintf("\n\r"); cprintf("\n\r"); time_check.tm_year = year - 1900; time_check.tm_mon = month - 1; time_check.tm_mday = day; time_check.tm_hour = 0; time_check.tm_min = 0; time_check.tm_sec = 1; time_check.tm_isdst = -1; if (mktime(&time_check) == -1) time_check.tm_wday = 7; if (mktime(&time_check) == -1) {cprintf(error);cprintf("\n\r"); cprintf("\n\r");} else { cprintf(rez); cprintf(wday[time_check.tm_wday]); cprintf("\n\r"); cprintf("\n\r"); } cprintf(back); do ch=getch();while((ch!='0')&&(ch!='1')); if (ch=='0')/*kalendar()*/return; else exit(0); getchar(); getchar(); } void kalendar_1() { clrscr(); char ch, start, ph; time_t now; struct tm * timeinfo; int year, m, i, j; char wday[100]; CharToOem(" Нд Пн Вт Ср Чт Пт Сб \n", wday); char January[20]; CharToOem("Сiчень", January); char February[20]; CharToOem("Лютий", February); char March[20]; CharToOem("Березень", March); char April[20]; CharToOem("Квiтень", April); char May[20]; CharToOem("Травень", May); char June[20]; CharToOem("Червень", June); char July[20]; CharToOem("Липень", July); char August[20]; CharToOem("Серпень", August); char September[20]; CharToOem("Вересень", September); char October[20]; CharToOem("Жовтень", October); char November[20]; CharToOem("Листопад", November); char December[20]; CharToOem("Грудень", December); char error[200]; CharToOem("Некоректно введенi данi!", error); char* month[] = {January,February,March,April,May,June,July,August,September,October,November,December}; char back[100]; CharToOem("0 - повернутися до головного меню \\ 1 - вихiд iз програми ", back); char enter_year[200]; CharToOem("Введiть рiк (1970-2037): ", enter_year); char xt[100]; CharToOem("Для продовження натиснiть '+' ", xt); char weit[100]; CharToOem(" ('+' - наступний мiсяць \\ '-' - попереднiй мiсяць)", weit); textbackground(1); textcolor(7); do{ clrscr(); cprintf("\n\r"); cprintf (enter_year); cscanf ("%d",&year); time (&now); timeinfo = localtime (&now); timeinfo->tm_year = year-1900; timeinfo->tm_mon = 0; if(mktime (timeinfo)==-1) { cprintf("\n\r"); cprintf(error); getch(); getch();} } while(mktime (timeinfo)==-1); cprintf("\n\r"); cprintf("\n\r"); cprintf (xt); m =-1; cprintf("\n\r"); while(m<12) { for(i=1; i<33; i++) { timeinfo->tm_mday = i; mktime (timeinfo); if(timeinfo->tm_mon > m) { do start=getch();while((start!='+') && (start!='-')); if(start=='+') { clrscr(); cprintf("\n\r"); cprintf(" %d", year); cprintf("\n\r"); cprintf("\n\r"); textcolor(8); cprintf(weit); textcolor(7); cprintf("\n\r"); cprintf("\n %s\n",month[timeinfo->tm_mon]); cprintf("\n\r"); cprintf("_______________________________\n"); cprintf("\n\r"); textcolor(14); cprintf(wday); cprintf("\n\r"); textcolor(7); cprintf("_______________________________\n"); cprintf("\n\r"); for(j=0;j<(timeinfo->tm_wday);j++) cprintf(" "); m++; break; } //----------------------------------------------------------------- if(start=='-' && timeinfo->tm_mon!=1 ) { timeinfo->tm_mon=m-1; mktime (timeinfo); clrscr(); cprintf("\n\r"); cprintf(" %d", year); cprintf("\n\r"); cprintf("\n\r"); textcolor(8); cprintf(weit); textcolor(7); cprintf("\n\r"); cprintf("\n %s\n",month[timeinfo->tm_mon]); cprintf("\n\r"); cprintf("_______________________________\n"); cprintf("\n\r"); textcolor(14); cprintf(wday); cprintf("\n\r"); textcolor(7); cprintf("_______________________________\n"); cprintf("\n\r"); for(j=0;j<(timeinfo->tm_wday);j++) cprintf(" "); m--; break;} else { do ph=getch();while(ph!='+');} } if (m==11 && timeinfo->tm_mon ==0) { m++; break; } cprintf("%4d",timeinfo->tm_mday if(timeinfo->tm_wday==6) printf("\n"); } } cprintf("\n\r"); cprintf("\n\r"); cprintf(back); do ch=getch();while((ch!='0')&&(ch!='1')); if (ch=='0')/*kalendar()*/return; else exit(0); getchar(); getchar(); } void intro(); void main() { intro(); char ch; char ch1[100]; char ch2[100]; char ch3[100]; char ch4[100]; clrscr(); do{ clrscr(); _setcursortype(_NOCURSOR); CharToOem("1 - Перегляд календаря\n", ch1); CharToOem("2 - Визначення дня недiлi\n", ch2); CharToOem("3 - Вихiд\n", ch3); CharToOem(" Натиснiть клавiшу, вiдповiдно до обраної дiї: ", ch4); textbackground(1); textcolor(15); clrscr(); cprintf("\n\r"); cprintf(ch1); cprintf("\n\r"); cprintf(ch2); cprintf("\n\r"); cprintf(ch3); cprintf("\n\r"); cprintf(ch4); do ch=getch();while((ch!='1')&&(ch!='2')&&(ch!='3')); if (ch=='3') exit(0); if (ch=='2') kalendar (); if (ch=='1') kalendar_1(); } while(1); } void intro(){ char ch1[100]; CharToOem(" Мiнiстерство освiти i науки України", ch1); char ch2[100]; CharToOem(" Тернопiльський нацiональний технiчний унiверситет iменi Iвана Пулюя", ch2); char ch3[100]; CharToOem(" Факультет комютерно-iнформацiйних систем i програмної iнженерiї", ch3); char ch4[100]; CharToOem(" Курсова робота", ch4); char ch5[100]; CharToOem(" на тему:", ch5); char ch6[100]; CharToOem(" \"Створення календаря\"", ch6); char ch7[100]; CharToOem(" Виконав", ch7); char ch8[100]; CharToOem(" студент групи СI-11", ch8); char ch9[100]; CharToOem(" Зеньков В.Л.", ch9); char ch10[100]; CharToOem(" Прийняв", ch10); char ch11[100]; CharToOem(" Гладьо Ю.Б.", ch11); char ch12[100]; CharToOem(" Тернопiль 2011", ch12); _setcursortype(_NOCURSOR); textbackground(1); textcolor(3); clrscr(); cprintf("\n\r"); cprintf(ch1); cprintf("\n\r"); cprintf("\n\r"); cprintf(ch2); cprintf("\n\r"); cprintf("\n\r"); cprintf(ch3); cprintf("\n\r"); cprintf("\n\r"); cprintf("\n\r"); cprintf("\n\r"); cprintf(ch4); cprintf("\n\r"); cprintf("\n\r"); cprintf(ch5); cprintf("\n\r"); cprintf("\n\r"); cprintf(ch6); cprintf("\n\r"); cprintf("\n\r"); cprintf("\n\r"); cprintf(ch7); cprintf("\n\r"); cprintf(ch8); cprintf("\n\r"); cprintf(ch9); cprintf("\n\r"); cprintf("\n\r"); cprintf(ch10); cprintf(ch11); cprintf("\n\r"); cprintf("\n\r"); cprintf("\n\r"); cprintf("\n\r"); cprintf(ch12); getch(); }
Антиботан аватар за замовчуванням

09.09.2013 10:09-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!