Автор: Пользователь скрыл имя, 04 Мая 2013 в 00:36, курсовая работа
Широкое проникновение информационных технологий во все сферы человеческой деятельности предъявляет повышенные требования к компьютерной подготовке специалистов в высших учебных заведениях. Изначально вычислительные машины были созданы для решения сложных инженерных и математических задач и, несмотря на значительное расширение сферы их применения, это направление их использования остается главным. Но теперь также в сферу использования вычислительной техники входит и решение всяких второстепенных задач, таких как построение калькуляторов и календарей, нацеленных, прежде всего, на удобства пользователя.
ВВЕДЕНИЕ..………………………………………………………………….5
1 ПОСТАНОВКА ЗАДАЧИ И СРЕДА ЕЁ ИСПОЛЬЗОВАНИЯ………….7
2 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.…………………………………………8
3 ОСНОВНОЙ АЛГОРИТМ………………………………………………..13
4 ОСОБЕННОСТИ РЕАЛИЗАЦИИ НА ЯЗЫКЕ С++..…………………...16
5 ИНСТРУКЦИЯ ПО ИСПОЛЬЗОВАНИЮ.……………………………...21
ВЫВОДЫ……………………………………………………………………22
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ…………………………..23
Приложение А Текст программы………………………………………….24
Далее выполняется проверка на корректность ввода данных пользователем для каждой переменной.
Условия корректного ввода для года следующие: он не должен быть меньше нуля и больше 3000 (при желании пользователь может продлить вторую границу до бесконечности). Для месяца: не меньше единицы и не больше двенадцати. А вот для дней месяца (в тексте программы переменная day) то тут условия правильного ввода для каждого месяца( а для февраля ещё и для года), свои: для января, марта, мая, июля, август, октября и декабря число дней в месяце не должно превышать 31; для апреля, июня, сентября и октября оно должно быть не более 30; ну а для февраля в зависимости от того високосный введенный год или нет оно должно быть не больше 29 и 28 соответственно. И, конечно же, число не может быть менее 1.
В программной реализации это выглядит следующим образом:
if ((((m==1)||(m==3)) || ((m==5)||(m==7)) || ((m==8)||(m==10)) ||(m==12)) &&(data<=0||data>31)) {cout<<"\nERROR! Enter right data, please"; goto vvod_data; };
if ((m==2)&&(((data<=0)||(data>
if ((((m==4)||(m==6))||((m==9)||(
Если условия корректного ввода для какого-либо параметра не выполнены, то высвечиваеться сообщение об ошибке и программа с помощью оператора goto передаёт управление на повторный ввод ошибочной переменной.
Например, если пользователь вводит неверный порядковый номер месяца (13, 14, -5) программа будет запрашивать повторный ввод до тех пор, пока не будет введён месяц с номером от 1 до 12, и только после этого управление передастся на следующий после ввода месяца оператор.
Рисунок 4.1 – проверка на корректность ввода месяца
Следует, также, подчеркнуть, что оператор goto – это не единственный способ возврата на повторный ввод при неверном первоначальном введении параметра.
Данную операцию можно реализовать с помощью циклов, а именно цикла с послеусловием do while.
Данный цикл используется в том случае, когда тело цикла выполняется хотя бы 1 раз.
Синтаксис данного оператора следующий:
do оператор
while (выражение-условие);
где оператор – тело цикла, что может быть представлено в виде простого или сложного оператора.
В процессе выполнения оператора do while сначала выполняется вход в тело цикла и выполняется оператор, что представляет собой тело цикла (он может быть как простой, так и сложенный); далее проверяется выражение-условие, и, если оно истинно,– цикл повторяется, а когда оно ошибочно, то происходит выход из цикла и управление идёт на слудующий за do while оператор.
В данной фрагменте проверки корректности (рассмотрим на примере месяца) этот цикл использовался бы следующим образом:
do {cout<<"\nEnter month\n";
cin>>m;}
while ((m<1)||(m>12)) ;
Из условия цикла видно, что ввод месяца будет проходить до тех пор, пока переменная m не попадёт в промежуток от 1 до 12, что и будет условием выхода и передачи управления на следующий оператор.
После ввода данных диалог с пользователем окончен и программа начинает высчитывать, высокосный ли год, выводит нам сообщение о животном-символе года, выводит словесный эквивалент месяца, и, собственно, день недели. Если введённая дата совпадает из каким-то из зафиксированых разработчиком праздников (Новый год, 8 марта), то мы получаем сообщение и об отмечаемом в этот день празднике.
Далее программа передаёт управление на отвечающие за знак зодиака оператор.
Программа делает запрос о том, хочет ли пользователь по ранее введеным датам получить информацию о знаке зодиака, припадающего на эти числа:
cout<<"\n\n\nDo you want to know your zodiac about this data?";
cout<<"\nEnter 1-yes, 0-no\n\n";
cout<<"answer ";
cin>>z;
Если пользователь введёт 1, то получит на экран знак зодиака, а если 0, то программа заканчивает свою работу, т.к. она уже выполнила все требуемые операции.
Рисунок 4.2 – пример работы зодиака
Из рисунка 4.2 видим, что программа действительно высвечивает верную информацию:
это год тигра;
9й месяц – это сентябрь;
19е сентября будет воскресенье;
человек, родившийся в этот день, по знаку зодиака Virgo, т.е.дева.
5. ИНСТРУКЦИЯ ПО ИСПОЛЬЗОВАНИЮ
На самом деле, проверить самостоятельно данную программу не составляет особых сложностей.
После запуска программы в Microsoft Visual Studio 2008 выполняйте показываемые на экране требования:
введите год;
введите месяц;
введите число;
если вы хотите узнать свой знак зодиака, то на вопрос «Do you want to know your zodiac about this data?» в поле «answer » введите 1, что эквивалентно положительному ответу.
P.S. Если вы получаете сообщение об ошибке, то вам следует повторно ввести запрашуемый параметр, так что следите за правильностью своего ввода и диалогом с программой.
ВЫВОДЫ
Во время выполнения курсовой работы была создана программа для нахождения дня недели по введённым году, месяцу, числу, а также, как дополнения, знак зодиака и символ года.
Мною лично были приобретены новые навыки , а также закреплены старые и изучены особенности написания программ на языке программирования С++.
Были рассмотрены принципы построения вечного календаря и работы с ним по самому распространённому на сегодняшний день способом.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
Приложение А текст программы
#include "stdafx.h"
#include <math.h>
#include <conio.h>
#include <iostream>
#include <string.h>
#include <time.h>
#include <windows.h>
using namespace std;
void main ()
{int god;
vvod_g:cout<<"Enter year ";
cin>>god;
if ((god<=0)||(god>=3000)) {cout<<"ERROR! Enter right year, please";
goto vvod_g;
}
int m;
vvod_m:cout<<"\nEnter month ";
cin>>m;
if (m<=0||m>12) {cout<<"\nERROR! Enter right month, please";
goto vvod_m;
}
int data;
vvod_data:cout<<"\nEnter data ";
cin>>data;
cout<<"\n\n\n\n";
if ((god%4==0&&god%100!=0)||(god%
cout<<god<<" year is leap";
if (god%12==0) cout<<"\nMonkey_s year";
if ((god-1)%12==0) cout<<"\nCock_s year";
if ((god-2)%12==0) cout<<"\nDog_s year";
if ((god-3)%12==0) cout<<"\nPig_s year";
if ((god-4)%12==0) cout<<"\nMouse_s year";
if ((god-5)%12==0) cout<<"\nCow_s year";
if ((god-6)%12==0) cout<<"\nTiger_s year";
if ((god-7)%12==0) cout<<"\nRabbit_s year";
if ((god-8)%12==0) cout<<"\nDragon_s year";
if ((god-9)%12==0) cout<<"\nShake_s year";
if ((god-10)%12==0) cout<<"\nHorse_s year";
if((god-11)%12==0) cout<<"\nSheep year";
switch (m)
{ case 1: cout<<"\n\nJanuary"; break;
case 2:cout<<"\n\nFebruary"; break;
case 3:cout<<"\n\nMarch"; break;
case 4:cout<<"\n\nApril"; break;
case 5:cout<<"\n\nMay"; break;
case 6:cout<<"\n\nJune"; break;
case 7:cout<<"\n\nJuly"; break;
case 8:cout<<"\n\nAvgust"; break;
case 9:cout<<"\n\nSeptember"; break;
case 10:cout<<"\n\nOctomber"; break;
case 11:cout<<"\n\nNovember"; break;
case 12:cout<<"\n\nDecember"; break; };
if ((((m==1)||(m==3)) || ((m==5)||(m==7)) || ((m==8)||(m==10)) ||(m==12)) &&(data<=0||data>31)) {cout<<"\nERROR! Enter right data, please"; goto vvod_data; };
if ((m==2)&&(((data<=0)||(data>
if ((((m==4)||(m==6))||((m==9)||(
int d;
if ((god+8)%28==0) {switch (m)
{ case 1:d=2; goto day; break;
case 2:d=5;goto day; break;
case 3:d=6;goto day; break;
case 4:d=2;goto day; break;
case 5:d=4;goto day; break;
case 6:d=0;goto day; break;
case 7:d=2;goto day; break;
case 8:d=5;goto day; break;
case 9:d=1; goto day; break;
case 10:d=3;goto day; break;
case 11:d=1;goto day; break;
case 12:d=6;goto day; break; };
};
if ((god+7)%28==0) {switch (m)
{ case 1:d=4; goto day; break;
case 2:d=0;goto day; break;
case 3:d=0;goto day; break;
case 4:d=3;goto day; break;
case 5:d=5;goto day; break;
case 6:d=1;goto day; break;
case 7:d=3;goto day; break;
case 8:d=6;goto day; break;
case 9:d=2; goto day; break;
case 10:d=4;goto day; break;
case 11:d=0;goto day; break;
case 12:d=2;goto day; break; };
};
if ((god+6)%28==0) {switch (m)
{ case 1:d=5; goto day; break;
case 2:d=1;goto day; break;
case 3:d=1;goto day; break;
case 4:d=4;goto day; break;
case 5:d=6;goto day; break;
case 6:d=2;goto day; break;
case 7:d=4;goto day; break;
case 8:d=0;goto day; break;
case 9:d=3; goto day; break;
case 10:d=5;goto day; break;
case 11:d=1;goto day; break;
case 12:d=3;goto day; break; };
};
if ((god+5)%28==0) {switch (m)
{ case 1:d=6;goto day; break;
case 2:d=2;goto day; break;
case 3:d=2;goto day; break;
case 4:d=5;goto day; break;
case 5:d=0;goto day; break;
case 6:d=3;goto day; break;
case 7:d=5;goto day; break;
case 8:d=1;goto day; break;
case 9:d=4;goto day; break;
case 10:d=6;goto day; break;
case 11:d=2;goto day; break;
case 12:d=4;goto day; break; };
};
if ((god+4)%28==0) {switch (m)
{ case 1:d=0; goto day; break;
case 2:d=3;goto day; break;
case 3:d=4;goto day; break;
case 4:d=0;goto day; break;
case 5:d=2;goto day; break;
case 6:d=5;goto day; break;
case 7:d=0;goto day; break;
case 8:d=3;goto day; break;
case 9:d=6;goto day; break;
case 10:d=1;goto day; break;
case 11:d=4;goto day; break;
case 12:d=6;goto day; break; };
};
if ((god+3)%28==0) {switch (m)
{ case 1:d=2; goto day; break;
case 2:d=5; goto day; break;
case 3:d=5; goto day; break;
case 4:d=1; goto day; break;
case 5:d=3;goto day; break;
case 6:d=6;goto day; break;
case 7:d=1;goto day; break;
case 8:d=4;goto day; break;
case 9:d=0;goto day; break;
case 10:d=2;goto day; break;
case 11:d=5;goto day; break;
case 12:d=0;goto day; break; };
};
if ((god+2)%28==0) {switch (m)
{ case 1:d=3; goto day; break;
case 2:d=6;goto day; break;
case 3:d=6;goto day; break;
case 4:d=2;goto day; break;
case 5:d=4;goto day; break;
case 6:d=0;goto day; break;
case 7:d=2;goto day; break;
case 8:d=5;goto day; break;
case 9:d=1;goto day; break;
case 10:d=3;goto day; break;
case 11:d=6;goto day; break;
case 12:d=1;goto day; break; };
};
if ((god+1)%28==0) {switch (m)
{ case 1:d=4;goto day; break;
case 2:d=0;goto day; break;
case 3:d=0;goto day; break;
case 4:d=3;goto day; break;
case 5:d=5;goto day; break;
case 6:d=1;goto day; break;
case 7:d=3;goto day; break;
case 8:d=6;goto day; break;
case 9:d=12;goto day; break;
case 10:d=4;goto day; break;
case 11:d=0;goto day; break;
case 12:d=2;goto day; break; };
};
if (god%28==0) {switch (m)
{ case 1:d=5;goto day; break;
case 2:d=1;goto day; break;
case 3:d=2;goto day; break;
case 4:d=5;goto day; break;
case 5:d=0;goto day; break;
case 6:d=3;goto day; break;
case 7:d=5;goto day; break;
case 8:d=1;goto day; break;
case 9:d=4;goto day; break;
case 10:d=6; goto day; break;
case 11:d=2;goto day; break;
case 12:d=4;goto day; break; };
};
if ((god-1)%28==0) {switch (m)
{ case 1:d=0;goto day; break;
case 2:d=3; goto day; break;
case 3:d=3;goto day; break;
case 4:d=6;goto day; break;
case 5:d=1;goto day; break;
case 6:d=4;goto day; break;
case 7:d=6;goto day; break;
case 8:d=2;goto day; break;
case 9:d=5;goto day; break;
case 10:d=0;goto day; break;
case 11:d=3;goto day; break;
case 12:d=5;goto day; break; };
};
if ((god-2)%28==0) {switch (m)
{ case 1:d=1;goto day; break;
case 2:d=4;goto day; break;
case 3:d=4;goto day; break;