Разработка программы электронного календаря
Курсовая работа, 02 Декабря 2012, автор: пользователь скрыл имя
Описание работы
Цель работы: цель данной курсовой работы - это закрепление и демонстрация данных, полученных при изучении курса «Информатика».
Выполнение работы требует творческого подхода и всестороннего изучения поставленной задачи.
Тема курсовой работы: Разработка программы электронного календаря.
Основные этапы курсовой работы:
- анализ поставленной задачи;
- выбор, обоснование и изложение метода решения поставленной задачи;
- построение алгоритма решения задачи;
- создание и отладка программы;
Содержание работы
Введение…………………………………………………………………………………………….3
Постановка задачи………………………………………………………………………………...4
Математические методы и средства решения задачи………………………………………...5
Описание данных………………………………………………………………………………....12
Алгоритмы и блок-схемы……………………………………………………………………….13
Программы на языке Pascal или Си с комментариями……………………………………..19
Текстовый пример……………………………………………………………………………….22
Руководство пользователя для работы программы………………………………………....24
Заключение………………………………………………………………………………………..26
Файлы: 1 файл
Курсач по инфе.doc
— 531.50 Кб (Скачать файл)- Удобная среда разработки, включающая функциональный отладчик, доступный в любой момент.
- Контекстная справочная система, по которой можно изучать язык без обращения к сторонним источникам.
- Высокая скорость компиляции, высокая скорость выполнения откомпилированных программ.
- Встроенная возможность использовать вставки на языке ассемблера.
Недостатки
- Компилятор рассчитан на реальный режим DOS, применение которого сходит на нет. Однако в последних версиях компилятора и среды введена поддержка защищенного режима вместе с соответствующим наладчиком (TD).
- В модуле CRT имеется ошибка (некорректный подсчёт количества циклов для функции delay, не рассчитанный на быстрые процессоры, процессоры с переменной частотой и многозадачные среды), из-за которой при запуске программы на компьютерах с тактовой частотой более 200 МГц сразу происходило аварийное завершение с сообщением « Runtime error 200 at…». Существуют разные варианты исправления модуля CRT. В варианте Клауса Хартнегга ошибка 200 не возникает, но длительность Delay на быстрых компьютерах меньше желаемой, и эта проблема по незнанию иногда тоже считается недостатком Turbo Pascal.
Описание данных.
Наименование |
Тип |
Назначение |
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 на панели меню.
- В открывшемся окне введите с клавиатуры числа а- день, b- месяц, с- год.
4) Нажмите Enter для получения результата
6) Нажатием любой клавиши, очистите окно. Введите любые другие значения a, b, c.
Заключение
Мною разработана программа электронного календаря. Решая данную задачу, я закрепила навыки работы на языке программирования Паскаль. Созданная мною программа обеспечивает выполнение поставленной задачи в данной курсовой работе. Представлены блок-схемы программы, псевдокод, а также продемонстрирована работа программы. Поставленная задача выполнена.
Список литературы:
1) Могилев А. В., Пак Н. И., Хенер Е. К. Информатика: учебное пособие для студентов ВУЗов./ Москва.: издательский центр «Академия», 2005. – 816 стр.
2) Абрамов В.Г., Трифонов Н.П. Введение в язык Паскаль. – М. :Наука,
1988.-320 с.
3) Пильщиков В.Н. Сборник упражнений по языку Паскаль: Учеб. пособие для вузов.-М.:Наука, 1989.-160с.