Автор работы: Пользователь скрыл имя, 02 Декабря 2012 в 15:43, курсовая работа
Цель работы: цель данной курсовой работы - это закрепление и демонстрация данных, полученных при изучении курса «Информатика».
Выполнение работы требует творческого подхода и всестороннего изучения поставленной задачи.
Тема курсовой работы: Разработка программы электронного календаря.
Основные этапы курсовой работы:
- анализ поставленной задачи;
- выбор, обоснование и изложение метода решения поставленной задачи;
- построение алгоритма решения задачи;
- создание и отладка программы;
Введение…………………………………………………………………………………………….3
Постановка задачи………………………………………………………………………………...4
Математические методы и средства решения задачи………………………………………...5
Описание данных………………………………………………………………………………....12
Алгоритмы и блок-схемы……………………………………………………………………….13
Программы на языке Pascal или Си с комментариями……………………………………..19
Текстовый пример……………………………………………………………………………….22
Руководство пользователя для работы программы………………………………………....24
Заключение………………………………………………………………………………………..26
Недостатки
Описание данных.
Наименование |
Тип |
Назначение |
a |
word |
Переменная для дня |
b |
word |
Переменная для месяца |
с |
word |
Переменная для года |
сh |
char |
Переменная для вводимого символа |
days |
word |
Счетчик номера дня в году |
i |
word |
Cчетчик месяца |
Алгоритмы и Блок-схемы.
Блок-схема программы
Блок-схема функции LeapYear
Блок-схема процедуры ReadDate
Блок-схема функции CheckDate
Псевдокод
Функция: LeapYear
Назначение: Проверяет, является ли год високосным
Параметры: y:word (год)
Тип возвращаемого значения: boolean
Локальные переменные: нет
1. Начало
2. Если ((y mod 4=0)и(y mod 100<>0))или(y mod 400=0), то LeapYear:=true, переход к п.4
3. LeapYear:=false
4. Возврат
Функция: CheckDate
Назначение: Проверяет, является ли дата корректной
Параметры: d,m,y:word (день, месяц, год)
Тип возвращаемого значения: boolean
Локальные переменные: нет
1. Начало
2. CheckDate:=true
3. Если (d<1)или(m<1)или(y<1), то CheckDate:=false, переход к п.10
4. Если m не принадлежит (1,3,5,7,8,10,12), то переход к п.6
5. Если d>31, то CheckDate:=false, переход к п.10
6. Если m не принадлежит (2), то переход к п.8
7. Если (LeapYear(y)и(d>29))или(не LeapYear(y)и(d>28)), то CheckDate:=false, переход к п.10
8. Если m не принадлежит (4,6,9,11), то CheckDate:=false, переход к п.10
9. Если d>30, то CheckDate:=false, переход к п.10
10. Возврат
Процедура: ReadDate
Назначение: Выполняте ввод и проверку даты
Параметры: нет
Тип возвращаемого значения: нет
Локальные переменные:
days:word (счетчик количества дней)
i:word (счетчик месяца)
1. Начало
2. Вывод "День a="
3. Ввод a
4. Вывод"Месяц b="
5. Ввод b
6. Вывод"Год c="
7. Ввод c
8. Если не CheckDate(a,b,c), то переход к п.25
9. Вывод "Дата корректна"
10. days:=0
11. i:=1
12. Если i>=b, то переход к п.20
13. Если i принадлежит (1,3,5,7,8,10,12), то days:=days+31, переход к п.19
14. Если i не принадлежит (2), то переход к п.18
16. Если LeapYear(c), то days:=days+29, переход к п.19
17. days:=days+28, переход к п.19
18. Если i принадлежит (4,6,9,11), то days:=days+30
19. i:=i+1, переход к п.12
20. days:=days+a
21. Вывод "Номер дня в году:", days
22. Если LeapYear(c), то переход к п.24
23. Вывод "Дней до конца года: ", 365-days, переход к п.26
24. Вывод "Дней до конца года: ", 366-days, переход к п.26
25. Вывод "Дата некорректна"
26. Вывод "Нажмите любую клавишу"
27. readkey
28. Возврат
Программа: curs.pas
Назначение: Ввод даты, проверка ее корректности, вывод номера дня и количества дней до конца года
Параметры: нет
Тип возвращаемого значения: нет
Переменные:
a,b,c:word (день, месяц, год)
ch:char (символ)
1. Начало
2. clrscr
3. Вывод "--------МЕНЮ--------"
4. Вывод "1. Справка"
5. Вывод "2. Запуск программы"
6. Вывод "3. Выход"
7. ch:=readkey
8. Если ch≠'1', то переход к п.12
9. Вывод
"Справка: Программа для
10. Вывод "Нажмите любую клавишу";
11. readkey, переход к п.14
12. Если ch≠'2', то переход к п.14
13. ReadDate
14. Если ch≠'3', то переход к п.2
15. Выход
Данные для проверки
Год является високосным в следующих случаях:
- год кратен 4 и не кратен 100;
- год кратен 400;
Год не является високосным в следующих случаях:
- год не кратен 4;
- год кратен 100 и не кратен 400;
Високосные года: 1600, 1996, 2000, 2004, 2008, 2012
Не високосные года: 1700, 1800, 1900, 2001, 2010, 2100
Корректные даты:
29.02.1600
29.02.1996
29.02.2000
29.02.2004
29.02.2008
29.02.2012
Не корректные даты:
29.02.1700
29.02.1800
29.02.1900
29.02.2001
29.02.2010
29.02.2100
Текст программы с комментариями (curscomm.pas)
program curs;
uses crt; {Подключаемый модуль содержит процедуру clrscr (очистка экрана) и функцию readkey (считывание символа)}
var
a,b,c:word; {переменные для дня, месяца и года}
ch:char; {переменная для вводимого символа}
function LeapYear(y:word):boolean; {функция для проверки високосности года, возвращает true, если год високосные и false, если нет}
begin
if ((y mod 4=0)and(y mod 100<>0))or(y mod 400=0) then LeapYear:=true {Год является високосным в следующих случаях: (год кратен 4 и не кратен 100) или (год кратен 400)}
else LeapYear:=false; {иначе год не високосный}
end; {конец функции LeapYear}
function CheckDate(d,m,y:word):boolean; {функция для проверки корректности даты, возвражает true, если дата корректна и false, если нет}
{параметры функции: d-день, m-месяц, y-год}
begin
CheckDate:=true; {изначально предполагаем, что дата корректна, далее проверяем условия, когда она некорректна}
if (d<1)or(m<1)or(y<1) then CheckDate:=false {если день, месяц или год меньше 1, то дата некорректна}
else {иначе проверяем месяц}
case m of
1,3,5,7,8,10,12: if d>31 then CheckDate:=false; {для месяцев, в которых 31 день: если введенный день больше 31, то дата некорректна}
2: if (LeapYear(y) and (d>29)) or (not LeapYear(y) and (d>28)) then CheckDate:=false; {для февраля: (если високосный год и день больше 29)или(не високосный и день больше 28), то дата некорректна}
4,6,9,11: if d>30 then CheckDate:=false; {для месяцев, в которых 30 дней: если день больше 30, то дата некорректна}
else {при всех других значениях месяца дата некорректна}
CheckDate:=false;
end; {конец оператора case}
end; {конец функции CheckDate}
procedure ReadDate; {процедура ввода и проверки даты}
var
days,i:word; {days - счетчик номера дня в году, i - счетчик месяца}
begin
write('День a=');
readln(a); {читаем день}
write('Месяц b=');
readln(b); {читаем месяц}
write('Год c=');
readln(c); {читаем год}
if CheckDate(a,b,c) then {проверяем введенные данные, передавая a, b и c в качестве параметров d,m и y}
begin {если Функция CheckDate вернула значение true, то введенная дата корректна}
writeln('Дата корректна');
days:=0; {инициализируем счетчик количества дней}
i:=1; {инициализируем счетчик месяцев}
while i<b do {для каждого полного месяца, прошедшего с начала года до введенной даты посчитаем количество дней}
begin
case i of
1,3,5,7,8,10,12: days:=days+31; {в случае если месяц из 31 дня, то добавляем к счетчику дней 31}
2: if LeapYear(c) then days:=days+29 else days:=days+28; {если февраль: если год високосный, то добавим 29, иначе добавим 28}
4,6,9,11: days:=days+30; {для остальных месяцев добавим 30}
end; {конец оператора case}
i:=i+1; {переходим к следующему месяцу}
end; {конец цикла while}
days:=days+a; {добавим к счетчику количество дней, прошедших в текущем месяце}
writeln('Номер дня в году: ',days); {выводим номер дня}
if LeapYear(c) then writeln('Дней до конца года: ',366-days) {выводим количество дней до конца месяца, для високосного года на день 1 больше}
else writeln('Дней до конца года: ',365-days);
end {конец условия CheckDate=true оператора if}
else
writeln('Дата некорректна'); {если функция CheckDate вернула значение false, то дата некорректна}
writeln('Нажмите любую клавишу');
readkey; {ждем нажатия клавиши}
end; {конец процедуры ReadDate}
begin
repeat
clrscr; {очищаем экран и выводим меню}
writeln('--------МЕНЮ--------'
writeln('1. Справка');
writeln('2. Запуск программы');
writeln('3. Выход');
ch:=readkey; {ждем выбора пункта меню - нажатия клавиши}
if ch='1' then {если нажали '1'}
begin
writeln('Справка:
Программа для проверки
writeln('Нажмите любую клавишу');
readkey; {ждем нажатия клавиши}
end
else if ch='2' then {если нажали '2'}
ReadDate; {вызываем процещуру ввода и проверки даты}
until ch='3'; {повторяем работу в меню, пока не нажали '3'}
end. {конец программы}
Текстовые примеры:
Проверка на некорректность даты:
Руководство пользователя для работы с данной программой:
2) Запустите программу, нажав Run на панели меню.
4) Нажмите Enter для получения результата
6) Нажатием любой клавиши, очистите окно. Введите любые другие значения a, b, c.
Заключение
Мною разработана программа электронного календаря. Решая данную задачу, я закрепила навыки работы на языке программирования Паскаль. Созданная мною программа обеспечивает выполнение поставленной задачи в данной курсовой работе. Представлены блок-схемы программы, псевдокод, а также продемонстрирована работа программы. Поставленная задача выполнена.
Список литературы:
1) Могилев А. В., Пак Н. И., Хенер Е. К. Информатика: учебное пособие для студентов ВУЗов./ Москва.: издательский центр «Академия», 2005. – 816 стр.
2) Абрамов В.Г., Трифонов Н.П. Введение в язык Паскаль. – М. :Наука,
1988.-320 с.
3) Пильщиков В.Н. Сборник упражнений по языку Паскаль: Учеб. пособие для вузов.-М.:Наука, 1989.-160с.
Информация о работе Разработка программы электронного календаря