Курс «ИНФОРМАТИКА»
Семестр I
«Разработка прикладных программ на языке программирования
высокого уровня С++»
Курсовая работа
П О Я С Н И Т Е Л Ь Н А Я З А П И С К А
Руководитель: _____________ А.А. Фокин
Студент: _____________ Проскурина Анастасия Константиновна
Группа: _____________ Фт — 100801
Дата: _____________ 25.12.2010
Екатеринбург
ФГАОУ ВПО УрФУ
ЗАДАНИЕ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ
«УТВЕРЖДАЮ»
Зав кафедрой
«____» __________________ 2010г.
______________________________ С.Л. Гольдштейн
Специальность 230102
Студент группы Фт-100801
Проскурина Анастасия Константиновна
Руководитель курсовой работы А.А. Фокин
Сроки выполнения работы: с 25 ноября 2010г. по 25 декабря 2010г.
1. Тема курсовой работы: «Разработка прикладных программ на языке программирования высокого уровня С++»
2. Содержание работы: Анализ задания, проект, спецификации, функции проекта. Оформить техническое задание и пройти все этапы разработки программы и документов сопровождения. Написать пояснительную записку. Указать среду проектирования.
3. Особые дополнительные сведения. Этапы проектирования и реализации программы и оформления документов выполняются в оптимальном сочетании машинного и безмашинного способов исполнения.
4. План выполнения курсовой работы:
Наименование элементов работы | Сроки | Примечания | Отметка о выполнении |
Выдача задания | 25.11.2010 | ||
Оформление технического задания | 25.11.10.-29.11.10 | ||
Эскизный проект | 30.11.10-03.12.10 | ||
Технический проект | 03.12.10-08.12.10 | ||
Рабочий проект | 08.12.10-.13.12.10 | ||
Оформление пояснительной записки | 14.12.10-17.12.10 | ||
Защита курсовой работы | 20.12.10-25.12.10 |
5. Курсовая работа закончена
6. Работа зачтена
Руководитель А.А. Фокин
Оглавление
1. Аннотация........................................................ 3
2. Техническое задание.............................................. 3
3. Спецификация..................................................... 4
4. Структура интерфейса пользователя................................ 5
5. Описание работы программы........................................ 6
6. Руководство пользователя......................................... 6
7. Заключение....................................................... 6
8. Библиографический список......................................... 7
Приложение A........................................................ 8
Приложение B....................................................... 11
Приложение C....................................................... 14
1. Аннотация
1.1. Наименование Области Знаний: информатика
1.2. Разработка велась по заказу кафедры ВТ УрФУ
1.3. Программный комплекс предназначен для:
1.3.1. Хранения и вывода информации о стране
1.3.2. Калькулятора с тремя функциями
1.3.3. Имитации транспортной карты
1.4. Технические характеристики для всех задач:
1.4.1. Файл 'Unit1.cpp' является файлом, содержащим исходный код.
1.4.2. Файл 'Unit1.bpr' является файлом проекта.
1.4.3. Файл 'Unit1.exe' является исполняемым файлом, предоставляемым заказчику.
1.4.4. В программе используются стандартные средства среды программирования С++.
1.4.5. Программа не предусматривает взаимодействие с другими программными продуктами.
1.4.6. Программа проектировалась в среде Borland С++ Builder 6.0
1.4.7. Требуемая операционная система Windows 98/XP/Vista /ME.
1.5. Требования к вычислительной системе. Процессор не ниже Intel Pentium 100MHz Оперативная память 32Mb, места на жестком диске – 3Mb.
1.5.1. Объем программного продукта = 70 Kb.
1.5.2. Программа не защищена
2. Техническое задание
Курсовая работа для специальности 23.01.02.
2.1.1. Задание №1
Создайте структуру Country и в ней переменные для хранения характеристик стран мира: площадь в тыс.кв.км. (целое), численность населения в млн.чел. (дробное), бюджет в млн.долл. (дробное). Создайте 4 переменных этой структуры, две заполните значениями самостоятельно разными способами, значение последних двух спросите у пользователя. Оформите вывод значений всех четырех переменных на экран. Найдите самую населенную страну, страну с самым высоким бюджетом.
2.1.2. Задание №2
Напишите калькулятор, умеющий умножать два числа, находить остаток от деления одного числа на другое и делить одно число на другое. Все эти три операции опишите с помощью функций, принимающих и возвращающих дробные значения (тип float). Установите ограничение на вводимые операнды [-100,0..100,0].
2.1.3. Создайте класс, имитирующий транспортную карту. На карту заносится изначальное число поездок (реализовать через конструктор), в классе определены методы для уменьшения количества поездок на карте (пассажир воспользовался ей) и увеличения (пассажир докупил "проходы"). Программа должна определять, когда на карте осталось 3 поездки или менее, и предупреждать пользователя о необходимости пополнить баланс, а также не разрешать проход при достижении нулевого состояния счёта.
2.2. Требования к интерфейсу пользователя: реализовать консольное приложение.
2.3. Прочие детали разработки. Разработка программного продукта должна осуществляться в соответствии со сроками, указанными в «Задании по курсовому проектированию».
3. Спецификация
3.1. Структура программного продукта
Таблица 1. Структура программного продукта
№ задания | Имя файла | Тип | Размер | Описание |
Unit1.cpp | Исходный код | 4.60 КB | Файл содержит исходный текст задачи №1 | |
Unit1.bpr | Описывает структуру программного проекта | 3.30 KB | Файл содержит структуру проекта задания №1 | |
Unit1.exe | Исполняемый Файл | 17.5 КВ | Исполняемый файл, предоставляемый заказчику | |
Unit1.cpp | Исходный код | 3.31 KB | Файл содержит исходный текст задачи №2 | |
Unit1.bpr | Описывает структуру программного проекта | 3.30 KB | Файл содержит структуру проекта задания №2 | |
Unit1.exe | Исполняемый файл | 15.0 КВ | Исполняемый файл, предоставляемый заказчику | |
Unit1.cpp | Исходный код | 4.37 KB | Файл содержит исходный текст задачи №3 | |
Unit1.bpr | Описывает структуру программного проекта | 3.30 KB | Файл содержит структуру проекта задания №3 | |
Unit1.exe | Исполняемый файл | 14.5 КВ | Исполняемый файл, предоставляемый заказчику |
4. Структура интерфейса пользователя
4.1. Пользователю не доступны кнопки и элементы управления во всех трех задачах, так как работа в приложениях происходит в консоли.
Рис 1. Пример работы программы №1
Рис 2. Пример работы программы №2
Рис 3. Пример работы программы №3
Описание работы программы
6.1. Задача №1. У пользователя программа запрашивает значения площади, численности населения и суммы бюджета двух стран, проверяя правильность ввода – все значения больше нуля. Затем выводит значения о всех 4-х странах. После этого на экран выводится номер самой населенной страны и страны с самым высоким бюджетом.
6.2. Задача №2. Программа запрашивает у пользователя две переменные,
проверяя вводимые операнды на установленные ограничения
[-100,0..100,0]. Затем выводит результат умножения, деления или нахождения остатка от деления, в зависимости от выбора пользователя.
6.3 Задача №3. Программа делает запрос, сколько поездок пользователь заносит на транспортную карту. Затем в зависимости от того, пользователь воспользовался или докупил «проходы», уменьшает или увеличивает на единицу количество поездок на карте соответственно, а также каждый раз выводит состояние счета. Если на карте остается 3 или менее «проходов», то программа предупреждает пользователя о необходимости пополнить баланс и, при достижении нулевого состояния счёта, не разрешает проход.
6. Руководство пользователя
7.1 Задача №1. Ввести на запрос программы значение площади первой страны (в тыс.кв.км.), численности населения (в млн.чел.) и бюджета (в млн.долл.).После введения каждого из значений нажать клавишу Enter для продолжения. На экран будут выведены характеристики 4-х стран, а также самая населенная страна и страна с самым высоким бюджетом. Для выхода из программы нажать любую клавишу на клавиатуре.
7.2 Задача №2. Ввести на запрос программы две переменные (x1, x2). Программа проверит введенные значения на ограничения. Далее она спросит, какое действие сделать: умножить, поделить, найти остаток от деления. Выбрать действие и нажать Enter для вывода результата. Для выхода из программы нажать любую клавишу на клавиатуре.
7.3 Задача №3. Ввести на запрос программыизначальное количество поездок на транспортной карте. После ввода программа спросит, воспользоваться картой или докупить «проходы». В зависимости от выбора пользователя уменьшится или увеличится число «проходов» на единицу, соответственно. Если на карте 3 или меньше поездок, программа предупредит пользователя о необходимости пополнить баланс, а также не разрешит проход при достижении нулевого состояния счёта.
7. Заключение
Требования, указанные в техническом задании, реализованы полностью. Программный комплекс можно использовать для решения определенных задач.
В этой программном комплексе можно усовершенствовать:
8.1. Оформить цикл с выбором: продолжить или завершить программу для сравнения других значений характеристик у стран. Сделать так, чтобы программа находила страну со средними характеристиками среди 4х стран.
8.2. Добавить возможность выполнять различные действия с несколькими переменными. Оформить цикл с выбором: продолжить или завершить программу с получившимся результатом или с новыми переменными.
8.3. Добавить счетчик, который считает число потраченных поездок пользователем.
8. Библиографический список
1. Сервер CodeNet – всё для программиста [Электронный ресурс] -
Режим доступа: https://www.codenet.ru/
2. Бьерн Страуструп. Язык программирования С++ [Электронный ресурс] -
Режим доступа: https://lib.ru/CPPHB/cpptut.txt
3. Как программировать на С++ [Электронный ресурс] -
Режим доступа: https://deitel-index.blogspot.com/
4. SIZOV.INFO Портал для программистов [Электронный ресурс] -
Режим доступа: https://sizov.by.ru/books/cpp/cpp1.shtml
Приложение A
Текст исходного кода с комментариями:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
struct Country /* Определение и обозначение структуры Country */
{
int area;
float population;
float budget;
/* Структура Country имеет 3 элемента area(типа int),
population и budget(типа float)*/
};
int main(int argc, char * argv[])
{
Country c3 = {9373,274.2,142000}; / * Инициализация переменных
типа struct одним способом */
Country c1,c2,c4;
c4.area = 17075;
c4.population = 145;
c4.budget = 695000; /* Инициализация переменных типа struct
вторым способом */
do
{
cout << "Enter area Country c1: ";
cin >> c1.area; /* Заполнение пользователем площади
первой страны */
if (c1.area<=0) /* Проверка ввода */
cout << "Error!\n";
}
while (c1.area<=0);
do
{
cout << "Enter population Country c1: ";
cin >> c1.population; /* Заполнение пользователем
численности населения первой страны */
if (c1.population<=0) /* Проверка ввода */
cout << "Error!\n";
}
while (c1.population<=0);
do
{
cout << "Enter budget Country c1: ";
cin >> c1.budget; /* Заполнение пользователем
суммы бюджета первой страны */
if (c1.budget<=0) /* Проверка ввода */
cout << "Error!\n";
}
while (c1.budget<=0);
do
{
cout << "Enter area Country c2: ";
cin >> c2.area; /* Заполнение пользователем площади
второй страны */
if (c2.area<=0) /* Проверка ввода */
cout << "Error!\n";
}
while (c2.area<=0);
do
{
cout << "Enter population Country c2: ";
cin >> c2.population; /* Заполнение пользователем
численности населения второй страны */
if (c2.population<=0) /* Проверка ввода */
cout << "Error!\n";
}
while (c2.population<=0);
do
{
cout << "Enter budget Country c2: ";
cin >> c2.budget; /* Заполнение пользователем
суммы бюджета второй страны */
if (c2.budget<=0) /* Проверка ввода */
cout << "Error!\n";
}
while (c2.budget<=0);
/* Значение двух других переменных структуры заполняется
пользователем, при проверке об условии, что характеристики
cтран не могут быть отрицательными*/
cout << "\nArea c1: " << c1.area << " Population c1: " <<
c1.population;
cout << " Budget c1: " << c1.budget << endl;
cout << "\nArea c2: " << c2.area << " Population c2: " <<
c2.population;
cout << " Budget c2: " << c2.budget << endl;
cout << "\nArea c3: " << c3.area << " Population c3: " <<
c3.population;
cout << " Budget c3: " << c3.budget << endl;
cout << "\nArea c4: " << c4.area << " Population c4: " <<
c4.population;
cout << " Budget c4: " << c4.budget << endl << endl;
/* Вывод на экран трех характеристик о 4х стран мира */
if (c1.population > c2.population && c1.population >
c3.population && c1.population > c4.population)
cout << "Most population country c1: " <<
c1.population<< endl << endl;
if (c2.population > c1.population && c2.population >
c3.population && c1.population > c4.population)
cout << "Most population country c2: " << c2.population
<< endl << endl;
if (c3.population > c2.population && c3.population >
c1.population && c3.population > c4.population)
cout << "Most population country c3: " << c3.population
<< endl << endl;
if (c4.population > c2.population && c4.population >
c3.population && c4.population > c1.population)
cout << "Most population country c4: " << c4.population
<< endl << endl;
/* Поиск и вывод самой населенной страны */
if (c1.budget > c2.budget && c1.budget > c3.budget && c1.budget
> c4.budget)
cout << "Most budget country c1: " << c1.budget;
if (c2.budget > c1.budget && c2.budget > c3.budget && c2.budget
> c4.budget)
cout << "Most budget country c2: " << c2.budget;
if (c3.budget > c2.budget && c3.budget > c1.budget && c3.budget
> c4.budget)
cout << "Most budget country c3: " << c3.budget;
if (c4.budget > c2.budget && c4.budget > c3.budget && c4.budget
> c1.budget)
cout << "Most budget country c4: " << c4.budget;
/* Поиск и вывод страны с самым высоким бюджетом */
getch ();
return 0;
}
//---------------------------------------------------------------------------
Приложение B
Текст исходного кода с комментариями:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#include <math.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
float multiplication(float, float);
float division(float, float);
int modulo(int, int);
/* Создаются прототипы трёх функций под именами:
- умножение,
- деление,
- остаток от деления,
все эти функции имеют свой тип возвращаемого значения,
а также типы и имена своих параметров */
int main(int argc, char * argv[])
{
float x1,x2; /* переменные x1, x2 тоже типа float */
int a;
do
{
cout << "Enter x1: "; /* запрос 1й переменной */
cin >> x1; /* чтение и запись в 1ю переменную */
if (x1<-100 || x1>100) /* проверка условия ограничения
вводимых данных */
cout << "Error!\n";
/* если x1 меньше -100 или больше 100, то пишет
ошибку */
}
while (x1<-100 || x1>100);
/* пока переменная x1 не входит в область определения,
запрашивать ее значение */
do
{
cout << "Enter x2: "; /* запрос 2й переменной */
cin >> x2; /* чтение и запись во 2ю переменную */
if (x1<-100 || x1>100) /* проверка условия ограничения
вводимых данных */
cout << "Error!\n";
/* если x2 меньше -100 или больше 100, то пишет
ошибку */
}
while (x1<-100 || x1>100);
/* пока переменная x2 не входит в область определения,
запрашивать ее значение */
cout << "Enter 1-multiply, 2-divide, 3-modulo: "; /* программа
запрашивает пользователя действие */
cin >> a;
if (a==1)
cout << "Reply: " << multiplication(x1, x2);
/* возврат значения из функции multiplication и его
вывод на экран */
if (a==2)
cout << "Reply: " << division(x1,x2); /* возврат
значения из функции division и его вывод на экран */
if (a==3)
cout << "Reply: " << modulo(x1,x2); /* возврат значения
из функции modulo и его вывод на экран */
if (a!=1 && a!=2 && a!=3)
cout << "Error! This choice is not!"; /* программа
проверяет правильность ввода пользователя */
getch();
return 0;
}
float multiplication(float a1, float a2)
{
float x1,x2; /* переменные внутри функции, которые нужны для
расчетов */
return a1*a2; /* Значение возвращается из функции с помощью
оператора return */
}
float division(float a1, float a2)
{
float x1,x2; /* переменные внутри функции, которые нужны для
расчетов */
return a1/a2; /* Значение возвращается из функции с помощью
оператора return */
}
int modulo(int a1, int a2)
/* операция нахождения остатка от деления определена только для целых чисел */
{
float x1,x2; /* переменные внутри функции, которые нужны для
расчетов */
return a1 % a2; /* Значение возвращается из функции с помощью
оператора return */
}
//---------------------------------------------------------------------------
Приложение C
Текст исходного кода с комментариями:
//---------------------------------------------------------------------------
#include <clx.h>
#include <conio.h>
#include <iostream.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
class Card /* Создание класса */
{
private: /* Описание типов данных и создание механизма
регулирования */
int travel; /* Создание полей класса */
public: /* Описание действий, на которые имеется
право доступа */
Card(int a): travel(a) /* Создание конструктора с
переменной а; «travel(a)» - значение переменной
конструктора со значением a, которое вводит
пользователь */
{}
void traveldown() /* Создание функции */
{
if (travel>0)
travel--; /* для уменьшения числа
поездок, при условии, что их кол-во
больше нуля */
}
void travelup() /* Создание функции */
{
travel++; /* для увеличения числа поездок */
}
void control() /* Создание функции-проверки карты */
{
if (travel<=3 && travel>0)
{
cout << "Attention! Travel on card " <<
travel << ". Improve your balance,
please.\n";
/* Если на карте осталось 3 или меньше поездок,
программа предупреждает об этом */
}
else if (travel==0)
cout << "Sorry, the card has 0 trips.
Passage interdit!"
<< " Improve your balance, please.\n ";
/* Если на карте 0 "проходов", проход
воспрещен, то программа просит
пополнить счет */
Else
cout << "The current number of trips: "
<< travel << endl;
}
};
int main()
{
int trips;
do
{
cout << "Enter travel: "; /* Программа спрашивает
изначальное число поездок */
cin >> trips;
if (trips<0)
cout << "Error!\n";
}
while (trips<0); /* Проверка вводимого числа поездок */
Card ecard(trips); /* Создается объект с параметром, параметр
передается в конструктор, который устанавливает изначальное
число поездок */
int choice;
do
{
do
{
cout << "1-to use a card, 2-to buy travel, 3-
exit: ";
cin >> choice; /* Программа предлагает
пользователю воспользоваться картой или
докупить проходы */
}
while (choice<=0 || choice>=4); /* Программа будет
спрашивать действие у пользователя до тех пор, пока
вводимая переменная не будет равна 1, 2 или з*/
switch (choice) /* Создается переключатель */
{
case 1: /* Если пользователь воспользовался
картой, будут выполнены функции:
- уменьшениче числа «проходов» на карте
- проверка карты */
ecard.traveldown();
ecard.control();
break; /* Вместо фигурных скобок */
case 2: /* Если пользователь докупил "проходы",
будут выполнены функции:
- повышение числа проходов на карте
- проверка карты */
ecard.travelup();
ecard.control();
break;
case 3:
cout << "Exit -->";
break;
default: /* При любом другом значении
переменной choice, программа выдаст ошибку */
cout << "Error!";
break;
}
}
while (choice!=3); /* Цикл с пост-условием выполняется до тех
пор, пока пользователь не введет 3 - exit */
getch ();
return 0;
}