Прикладное программирование
Федеральное агентство по образованию
ФГАОУ ВПО «Уральский федеральный университет
имени первого Президента России Б.Н.Ельцина»
Физико-технологический институт
Кафедра вычислительной техники
23.04.00 000000 007
Курс «ИНФОРМАТИКА»
Семестр I
«Разработка прикладных программ на языке программирования
высокого уровня С++.
Основы работы с виртуальными машинами и Linux-based операционными системами.»
Курсовая работа
П О Я С Н И Т Е Л Ь Н А Я З А П И С К А
Руководитель: ___________________Фокин Алексей Андреевич
Студент : ___________________Лопанцева Юлия Владимировна
Группа : Фт — 120801
Дата : 24.12.2012
Екатеринбург
2012
ФГАОУ ВПО УрФУ
ЗАДАНИЕ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ
«УТВЕРЖДАЮ»
Зав кафедрой
«____»_______________________ 2012 г.
______________________________ С.Л. Гольдштейн
Студент группы Фт-120801 специальность 230200
Лопанцева Юлия Владимировна
Руководитель курсовой работы А.А. Фокин
Сроки выполнения работы: с 12 ноября 2012г. по 25 декабря 2011г.
1. Тема курсовой работы: «Разработка прикладных программ на языке программирования высокого уровня С++»
1.1 Содержание работы:
1.1.1 Создать функцию для вычисления радиуса круга.
1.1.2 Создать структуру для хранения данных самолетах, найти самый неэкономичный и самый старый самолет.
1.1.3 Создать класс, позволяющий имитировать работу автомата, попускающего на мероприятие. Подсчитать количество гостей и выручку.
2.Тема курсовой работы: « Основы работы с виртуальными машинами и Linux-based операционными системами»
2.1 Содержание работы:
2.1.1 Установить виртуальную машину и изучить ее свойства, установить ОС Linux на виртуальную машину.
3. Особые дополнительные сведения. Задания должны быть реализованы в среде разработки Borland C++ Builder 6.
4. План выполнения курсовой работы:
Наименование элементов работы|Сроки |Примечание|Отметка о вы-
| | | полнении
Выдача задания
| |
|
Оформление технического зада-|
| |
ния
| |
|
Эскизный проект
| |
|
| |
|
Технический проект
| |
|
| |
|
Рабочий проект
| |
|
| |
|
Оформление пояснительной за- |
| |
писки
| |
|
Защита курсовой работы
| |
|
5. Курсовая работа закончена
6. Работа зачтена
Руководитель
Оглавление
I Часть
1. Аннотация 4
2. Техническое задание 4
3. Спецификация 5
4. Структура интерфейса пользователя 6
5. Описание работы программы 8
6. Руководство пользователя 8
7. Заключение 9
II Часть
Основы работы с виртуальными машинами и Linux-based операционными системами.
1.Введение....................
2.Постановка задачи...........
3.Реализация работы...........
3.1.Скриншоты основных
моментов установки............
3.2.Ответы на вопросы.........
4.Сравнительный анализ
Windows и Linux.........................
6.Библиографический список....
Приложение A.............................
Приложение B..................
Приложение C.............................
I Часть
Аннотация
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. Файл 'Project1.bpr' является файлом проекта.
1.4.3 Файл 'Project1.exe' исполняемым файлом, предоставляемым заказчику.
1.4.4. В программе используются стандартные средства среды программирования Borland C++ Builder 6.
1.4.5. Программа не предусматривает взаимодействие с другими программными продуктами.
1.4.6. Программа проектировалась в среде С++ Builder 6.
1.4.7. Требуемая операционная система Windows Vista/98/XP/ME/7.
1.5. Требования
к вычислительной системе.
1.5.1. Объем программного продукта = 72.4Кб
1.5.2. Программа не защищена
2. Техническое задание
Курсовая работа для специальности 23.02.00.
2.1.1. Задание №1
Пользователь вводит с клавиатуры значение площади круга (тип float), это значение сообщается в функцию, которая вычисляет радиус круга (также тип float) и возвращает это значение. Установить ограничение на вводимое значение площади круга только
положительное число [1..100].
2.1.2. Задание №2
Создать структуру Airplane и в ней переменные для хранения характеристик самолета:пассажировместимость (целое), расход топлива на час полета в тоннах (дробное), год выпуска (целое), отечественный или импортный (булев тип). Создать 4 переменных этой
структуры, две заполните значениями самостоятельно разными способами, значение последних двух спросить у пользователя. Оформить вывод значений всех четырех переменных на экран. Найдити самый неэкономичный самолет, самый старый самолет
2.1.3. Задание №3
Создать класс, имитирующий пропускной автомат на мероприятие. Через автомат проходят люди, среди них есть те, кто платит полную сумму (определена константой), и те, кто платит 50% и
25% от нее
(со скидкой). Создать в классе
конструктор и соответствующие
методы (прошел человек за полную
стоимость, человек со скидкой
50%, человек со скидкой 25%). Описать
метод расчёта суммарной
2.2. Требования к интерфейсу пользователя: реализовать консольное приложение.
2.3. Прочие детали разработки. Разработка программного продукта должна осуществляться в соответствии со сроками, указанными в «Задании по курсовому проектированию».
3. Спецификация
3.1. Структура программного продукта
Таблица 1. Структура программного продукта
№ задания |
Имя файла |
Тип |
Размер |
Описание |
1 |
Unit1.cpp
Project1.bpr
Project1.exe |
Исходный код
Описывает структуру программного проекта Исполняемый Файл |
557 байт
3 Кб
24.6 Кб |
Файл содержит исходный текст задачи №1
файл содержит структуру проекта задания №1 исполняемый файл, предоставляемый заказчику |
2 |
Unit2.cpp
Project2.bpr
Project2.exe |
Исходный код
Описывает структуру программного проекта
Исполняемый файл |
4.74 Кб
4.2 Кб
31 Кб |
Файл содержит исходный текст задачи №2
файл содержит структуру проекта задания №2
исполняемый файл, предоставляемый заказчику |
3 |
Unit3.cpp
Project3.bpr
Project3.exe |
Исходный код
Описывает структуру программного проекта
Исполняемый файл |
2.7 Кб
3.8 Кб
17 Кб |
Файл содержит исходный текст задачи №3
файл содержит структуру проекта задания №3
исполняемый файл, предоставляемый заказчику |
4. Структура интерфейса пользователя
4.1. Пользователю не доступны
кнопки и элементы управления
во всех трех задачах, так
как работа в приложениях
Рис 1. Пример работы программы №1
Рис 2. Пример работы программы №2
Рис 3. Пример работы программы №3
5. Описание работы программы
5.1. Задача №1. У пользователя запрашивается площадь круга. Затем выводится радиус этого круга.
5.2. Задача №2. У пользователя запрашиваются значения пассажировместимости двух самолетов, расхода топлива, года выпуска и производитель самолетов. Затем на экран выводятся данные о самом неэкономичном и о самом старом самолете.
5.3 Задача №3. Пользователю предоставляется выбор типа билета или выхода из программы. Затем выводится количество человек прошедших на мероприятие и общая выручка.
6. Руководство пользователя
6.1 Задача №1. На запрос программы ввести значение площади круга. После ввода значения нажать клавишу Enter для продолжения. На экран будет выведен радиус этого круга. Для выхода из программы нажать Enter.
6.2 Задача №2. На запрос программы ввести значение пассажировместимости, затем нажать клавишу Enter. Ввести значение расхода топлива. Затем снова Enter. Ввести год выпуска. Enter. Выбрать производителя(1 или 0). Затем также для второго самолета. Чтобы вывести информацию о самолетах, о самом неэкономичном и старом самолетах, снова нажать Enter. Для выхода из программы нажать Enter.
6.3 Задача №3. На запрос программы выбрать тип билета(1,2 или 3)или выбрать выход из программы(0). После нажатия каждого из значений нажать Enter. После каждого ввода на экране будет появляться текущее количество человек и текущая выручка. Для выхода из программы выбрать 0.
7. Заключение
Требования,
указанные в техническом
В этой программном
комплексе можно
7.1 В задаче №1 можно найти самый мало вмещаемый самолет.
7.2 В задаче №2 можно сделать так, чтобы программа вычисляла еще длину окружности или диаметр круга.
7.3 В задаче №3 можно дополнительно сортировать сколько человек прошли по каждого типа билету.
II Часть
1.Введение
Целью данной работы является установка виртуальной машины, изучение ее свойств, установка операционной системы Linux Russian Fedora и изучение основ работы с ней.
2.Постановка задачи
Требуется установить виртуальную машину на компьютер. Установить операционную систему Linux Russian Fedora на виртуальную машину.
3.Реализация работы
3.1.Скриншоты основных
Рис. 1. Главное окно программы VirtualBox
Рис. 2. Окно создания виртуальной машины
Рис. 3 Главное окно программы с созданной виртуальной машиной.
Рис 4 Окно виртуальной машины с операционной системой Linux
Рис.5 Установка операционной системы Linux Russian Fedora
Рис.6 Создание суперпользователя
Рис.7 Внешний вид операционной системы Linux Russian Fedora
Рис.8 Наличие подключенного Flash-накопителя
3.2.Ответы на вопросы.
1.
Общие: Имя- Linux Fedora; тип ОС- Fedora;
Система: Оперативная память 512 Мб; Порядок загрузки: дискета, СD/DVD-ROM, жесткий диск;
Дисплей: Видеопамять 12 Мб
Носители:SATA контроллер: Linux.vdi(обычный,8,00ГБ)
Аудио: Аудиодрайвер: Windows DirectSound
Контроллер: ACH AC 97
Cеть: Адаптер 1: Intel PRO/1000 MT Desktop (NAT)
USB
Общие папки
Описание
2. Поддержка сетевых
NAT— это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса тран
Режим Network Address Translation (NAT) предоставляет наиболее простой способ доступа к внешней среде из виртуальной машины.
Маршрутизатором для виртуальной машины является сетевой модуль VirtualBox.
3.Для настройки доступны общие данные, носители информации, системные данные, COM-порты, данные дисплея.
Увеличить количество ЦПУ мы не можем, так как необходима поддержка аппаратной визуализации, для задействования более одного процесса в виртуальной машине.
4.Виртуальная машина сообщает, что не найдена загрузочная среда.
5. Включился автозахват клавиатуры. Отменить его можно правой клавишей Ctrl или нажав хост клавишу.
6. ISO-образ – это неформальный термин для обозначения образа оптического образа, содержащего файловую систему
7. Войдя в систему под пользователем root, любые действия в системе будут разрешены. Пребывая в системе в качестве root легко уничтожить систему. Поэтому работать нужно с осторожностью и входить под именем root только тогда, когда это абсолютно необходимо.
8. В меню приложения имеются программы для работы с аудио-, видео-файлами и картинками. Имеется установленный браузер Firefox. Стандартные- текстовый редактор, калькулятор идт., системные программы и приложение установки/удаления программ.
9. На панели быстрого
доступа по умолчанию
10. В операционной системе Linux Russian Fedora имеются элементы интерфейса сходные с элементами интерфейса операционных систем семейства Windows. На пример- наличие панели быстрого запуска, наличие окон и способ управления ими. «Компьютер» и «Корзина».
11. С помощью меню «Система»-«
12. Если основной компьютер
имеет подключение к сети
13. В домашнем подкаталоге содержатся папки Видео, Документы, Загрузки, Изображения, Общедоступные, Музыка, Рабочий стол, Шаблоны. Они нужны для хранения файлов и упрощения работы пользователя. Чтобы создать новую папку необходимо нажать правую кнопку мыши и выбрать «Создать папку»
14. Просмотреть файлы в папке root не удается. Так как вход в систему был произведен не от пользователя root, а доступ в эту папку есть только у него.
15. Был возможен доступ к содержимому USB – диска в операционной виртуальной машине после установки драйверов.
4.Сравнительный анализ Windows и Linux
На сегодняшний день Windows является самой популярной операционной системой. Изначально Windows создавался для пользователей, а Linux- для серверов.
Windows и Linux имеют множество различий. На пример в ОС Linux обязательно создание и обычного пользователя и пользователя с правами администратора. При этом обычный пользователь не имеет доступа к домашнему каталогу администратора. В Windows же это не обязательно.
В ОС Linux несколько рабочих столов, когда в Windows рабочий стол только один. Все доступное для Linux дисковое пространство объединяется в одно понятие «Файловая система». В Windows же локальные диски C и D.В Windows-системах полный путь к файлам начинаетсяс диска и выглядит, например, так:
C:\Temp\Downloads\ user.txt
В Linux полный путь к файлу начинается с корневой папки / и выглядит, например, так:
/home/taylor/doc/1.sh
Linux это свободное ПО, в то время как Windows- платное.
5.Заключение
В данной работе изучили основы работы с виртуальными машинами, ознакомились с некоторыми имеющимися решениями для создания ВМ, создали свою собственную виртуальную машину, установили на ВМ операционную систему Linux и поработали с ней.
6. Библиографический список
- Бьерн Страуструп. Язык программирования С++:. Бином, 2011-1136c
- В.В.Пообельский.Язык Си++ -М.:Финансы и статистика,1996-560с
- Как программировать на С++ [Электронный ресурс] -
Режим доступа: http://deitel-
- Википедия – Свободная энциклопедия [Электронный ресурс] -
Режим доступа: http://www.wikipedia.ru/
Приложение A
Тексты исходных кодов с комментариями:
Задача 1
//----------------------------
#include <iostream.h>
#include <conio.h>
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#pragma argsused
float rad(float);
int main()
{
float s;
cout << "Vvedite ploschad kruga: "; //запрашиваем у пользователя площадь круга
cin >> s;
while ((s > 100) || (s < 1))
{
cout << "Nevernye dannye. Vvedite snova: ";
cin >> s;
}
cout << "Radius: " << rad(s);
getch();
return 0;
}
float rad(float p1) //вызываем функцию
{
float r;
r = sqrt(p1/3.14); // вычисляем радиус
return r; //возвращаем значение
}
Приложение B
Задача 2
//----------------------------
#include <iostream.h>
#include <conio.h>
#include <vcl.h>
#pragma hdrstop
#pragma argsused
struct airplane // вводим тип данных, способный объединить переменные разных типов - структуру
{
int pass; //поля структуры
float topl;
int god;
bool proizv;
};
int main()
{
airplane a1, a2, a3, a4; //создаем объекты структуры
a1.pass = 140; //вводим данные по 1 самолету
a1.topl = 60;
a1.god = 1980;
a1.proizv = 1;
a2.pass = 159; //вводим данные по 2 самолету
a2.topl = 89.4;
a2.god = 2000;
a2.proizv = 0;
//-----------
cout << "Samolet #3" << endl;
cout << "Kol-vo passazhirov: ";
cin >> a3.pass; //считывание из поля структурной переменной и запись в нее значения введенное пользователем
while (a3.pass < 0) //проверям, чтобы не было отрицательных значений
{
cout << " Oshibka! Kol-vo passazhirov: ";
cin >> a3.pass;
}
cout << "Kol-vo topliva: ";
cin >> a3.topl;
while (a3.topl < 0)
{
cout << " Oshibka ! Kol-vo topliva: ";
cin >> a3.topl;
}
cout << "God vipuska: ";
cin >> a3.god;
while (a3.god < 0)
{
cout << " Oshibka ! God vipuska: ";
cin >> a3.god;
}
cout << "Proizvoditel: 1 - otechestvenniy, 0 - zarubezhniy: ";
cin >> a3.proizv;
while ((a3.proizv < 0) && (a3.proizv > 1))
{
cout << " Oshibka ! Proizvoditel: 1 - otechestvenniy, 0 - zarubezhniy: ";
cin >> a3.proizv;
}
//-----------------
cout << endl << "Samolet #4" << endl;
cout << "Kol-vo passazhirov: ";
cin >> a4.pass;
while (a4.pass < 0)
{
cout << " Oshibka ! Kol-vo passazhirov: ";
cin >> a4.pass;
}
cout << "Kol-vo topliva: ";
cin >> a4.topl;
while (a4.topl < 0)
{
cout << " Oshibka ! Kol-vo topliva: ";
cin >> a4.topl;
}
cout << "God vipuska: ";
cin >> a4.god;
while (a4.god < 0)
{
cout << " Oshibka ! God vipuska: ";
cin >> a4.god;
}
cout << "Proizvoditel: 1 - otechestvenniy, 0 - zarubezhniy: ";
cin >> a4.proizv;
while ((a4.proizv != 0) && (a4.proizv != 1))
{
cout << " Oshibka ! Proizvoditel: 1 - otechestvenniy, 0 - zarubezhniy: ";
cin >> a4.proizv;
}
//--------------
cout << endl << "1 samolet:" << endl << "kolvo passazhirov: " << a1.pass << endl << "kol-vo topliva: " << a1.topl << endl << "god vipuska: " << a1.god << endl << "proizvoditel: ";
if (a1.proizv == 1)
{
cout << "otechestvenniy" << endl;
}
else
{
cout << "zarubezhniy" << endl;
}
cout << "2 samolet:" << endl << "kolvo passazhirov: " << a2.pass << endl << "kol-vo topliva: " << a2.topl << endl << "god vipuska: " << a2.god << endl << "proizvoditel: ";
if (a2.proizv == 1)
{
cout << "otechestvenniy" << endl;
}
else
{
cout << "zarubezhniy" << endl;
}
cout << "3 samolet:" << endl << "kolvo passazhirov: " << a3.pass << endl << "kol-vo topliva: " << a3.topl << endl << "god vipuska: " << a3.god << endl << "proizvoditel: ";
if (a3.proizv == 1)
{
cout << "otechestvenniy" << endl;
}
else
{
cout << "zarubezhniy" << endl;
}
cout << "4 samolet:" << endl << "kolvo passazhirov: " << a4.pass << endl << "kol-vo topliva: " << a4.topl << endl << "god vipuska: " << a4.god << endl << "proizvoditel: ";
if (a4.proizv == 1)
{
cout << "otechestvenniy" << endl;
}
else
{
cout << "zarubezhniy" << endl;
}
if ((a1.topl > a2.topl) && (a1.topl > a3.topl) && (a1.topl > a4.topl)) // сравниваем расход топлива и находим самый неэкономичный
{
cout << "1 samolet ne ekonomichniy" << endl;
}
else
{
if ((a2.topl > a1.topl) && (a2.topl > a3.topl) && (a2.topl > a4.topl))
{
cout << "2 samolet ne ekonomichniy" << endl;
}
else
{
if ((a3.topl > a2.topl) && (a3.topl > a1.topl) && (a3.topl > a4.topl))
{
cout << "3 samolet ne ekonomichniy" << endl;
}
else
{
if ((a4.topl > a2.topl) && (a4.topl > a3.topl) && (a4.topl > a1.topl))
{
cout << "4 samolet ne ekonomichniy" << endl;
}
}
}
}
if ((a1.god < a2.god) && (a1.god < a3.god) && (a1.god < a4.god)) // сравниваем года выпуска и находим самый старый
{
cout << "1 samolet samiy stariy" << endl;
}
else
{
if ((a2.god < a1.god) && (a2.god < a3.god) && (a2.god < a4.god))
{
cout << "2 samolet samiy stariy" << endl;
}
else
{
if ((a3.god < a2.god) && (a3.god < a1.god) && (a3.god < a4.god))
{
cout << "3 samolet samiy stariy" << endl;
}
else
{
if ((a4.god < a2.god) && (a4.god < a3.god) && (a4.god < a1.god))
{
cout << "4 samolet samiy stariy" << endl;
}
}
}
}
getch();
return 0;
}
//----------------------------
Приложение C
Задача 3
//----------------------------
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#pragma hdrstop
class club
{
private:
int v, k, b; // создаем переменные класса
public:
club():v(500), k(0), b(0)// создаем конструктор класса
{}
float full() //создаем методы
{
b=b+v;
return b;
}
float half()
{
b=b+v*0.5;
return b;
}
float quarter ()
{
b=b+v*0.75;
return b;
}
int people ()
{
k=k+1;
return k;
}
};
//----------------------------
#pragma argsused
int main(int argc, char* argv[])
{
club c; //создаем объект класса
int y;//создаем переменную для выполнения цикла
do //создаем цикл
{
cout << "Choose the type of your ticket 1-full cost; 2-sale 50%;
3-sale 25%; 0-exit of programm: ";
cin >> y;
while((y<0) || (y>3))//проверяем, чтобы значение было не меньше 0 и не больше 3
{
cout << "Error!Choose the type of your ticket 1-full
cost; 2- sale 25%; 3-sale 50%; 0-exit of programm: ";
cin >> y ;
}
if(y==1)//сравниваем y с 1,2,3
{
cout << c.full()<<endl; /*выводим значение стоимости билета*/
}
if(y==2)
{
cout << c.half()<<endl; /*выводим значение стоимости билета*/
}
if(y==3)
{
cout << c.quarter()<<endl; /*выводим значение стоимости билета*/
}
cout<< c.people()<<endl; /*выводим количество людей пришедших на мероприятие*/
}
while (y!=0);
return 0;
}
//----------------------------