Набор компиляторов для различных языков программирования, разработанный в рамках проекта GNU

Автор работы: Пользователь скрыл имя, 23 Мая 2013 в 18:51, курсовая работа

Краткое описание

Тип есть вполне конкретное представление некоторого понятия. Например, в С++ тип float с операциями +, -, * и т.д. является хотя и ограниченным, ноконкретным представлением математического понятия вещественного числа. Новыйтип создается для того, чтобы стать специальным и конкретным представлениемпонятия, которое не находит прямого и естественного отражения средивстроенных типов. Например, в программе из области телефонной связи можноввести тип trunk_module (линия-связи), в видеоигре - тип explosion (взрыв), ав программе, обрабатывающей текст, - тип list_of_paragraphs (список параграфов).

Содержание

ПЕРЕЧЕНЬ УСЛОВНЫХ ОБОЗНАЧЕНИЙ, СИМВОЛОВ, СОКРАЩЕНИЙ, ТЕРМИНОВ 4
ВВЕДЕНИЕ 5
1. ОПИСАНИЕ ИСПОЛЬЗОВАННЫХ КОМПОНЕНТОВ 6
1.1 Файлы 6
1.2 Структуры…………………………………………………………………..7
1.3 Классы 7
1.4 Методы динамической памяти 8
2. ОПИСАНИЕ АЛГОРИТМА ПРОГРАММЫ 12
3. ОПИСАНИЕ ОСНОВНЫХ ФУНКЦИЙ И ПЕРЕМЕННЫХ ПРОГРАММЫ 16
3.1 Функциясохранения в файл 17
3.2 Функция вывода данных из файла 18
3.3 Функции поиска данных 19
4. ТЕСТИРОВАНИЕ ПРОГРАММЫ 22
ЗАКЛЮЧЕНИЕ 26
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 27
ПРИЛОЖЕНИЯ 28

Вложенные файлы: 1 файл

Мила курсовая по ООП3.docx

— 985.76 Кб (Скачать файл)

while(proverka!=1)

                   {

if(T.size<20||T.size>50)

{

cout<<" "<<"-=Некорректный ввод  размера=-"<<endl;

cout<<" "<<"-=можно внести размеры от 20-го до 50-го=-"<<endl;

cout<<" "<<"Введите размер: ";cin>>T.size;

                                  }else{proverka=1;} }

 

Листинг 2. Проверка ввода  размера.

 

При проверке количества проверяется  только знак перед числом, т.е. ввести можно только целое положительное число.

Описание функций класса рассмотрим сокращённо, потому что он имеет  сходные по алгоритму функции  поиска.

    1. ФУНКЦИЯ СОХРАНЕНИЯ В ФАЙЛ

 

Функция сохранения в файл является функцией, не возвращающей значение, а  возвращающей действие. В функцию  передаются значения: цвет, название, модель, размер, количество и сохраняются в файл. Запись производится в конец, существующего файла, а в случае отсутствии файла, файл будет автоматически создан и в него будет произведена запись. Алгоритм действий приведён на Рисунке8 ниже.

Рисунок 8 Алгоритм сохранения в файл

    1. ФУНКЦИЯ ВЫВОДА ДАННЫХ ИЗ ФАЙЛА

 

Вывод из файла производится только после открытия файла в режиме чтения f=fopen("txt.dat","rb") если файл не удалось, то будет произведён вывод соответствующего сообщения и прервано выполнение функции. После успешного открытия файла данные из файла будут циклически считываться до тех пор, пока не будет достигнут конец файла. Для считывания используется команда fscanf(<указатель на файл>,<%тип считываемой переменной>,<переменная>); считывая значения переменных числового типа нужно перед переменной написать знак амперсант (&). Алгоритм работы функции приведён на Рисунке 9 в виде логической блок-схемы.

Рисунок 9 Алгоритм вывода из файла

    1. ФУНКЦИИ ПОИСКА ЗАПИСИ

 

В этой программе функции поиска –  самые ресурсоёмкие и содержат в  себе внешние функции. Все присутствующие в программе функции поиска можно условно разделить на две группы: сравнение символьных комбинаций и сравнение чисел.

В первую группу входят:поиск по названию, по цвету, по модели. Их алгоритмы почти одинаковы. Во вторую: поиск по номеру, по количеству. Общая блок-схема поиска данных отображена на Рисунке 11. Отличием символьного поиска от поиска по числовому критерию это то, что нельзя прямо сравнивать две символьные (строковые) переменные, как это делается при поиске по числам. Для решения этой задачи мы описали функцию сравнения двух символьных переменных и назвали её Seach. Входные параметры – это два сравниваемых слова, выходные– это результат сравнения полученных значений переменных и если значения переменных одинаковы, то будет возвращена 1 иначе 0. Алгоритм работы функции intSeach указан на Рисунке 10.

 

Рисунок 10 Алгоритм работы функции intSeach (char*,char*)

Рисунок 11 Общая блок схема поиска

 

  1. ТЕСТИРОВАНИЕ  ПРОГРАММЫ

 

В этом разделе более детально продемонстрируем работу программы. Начнём с тестирования главного меню. Введём не число не равное ни одному пункту меню (вводить не числа, нельзя т.к. программа зациклится) и посмотрим реакцию, а после выберем правильный пункт.

 

Рисунок 12 Некорректный ввод пункта меню

 

Выберем 1-й пункт. В открывшемся окне заполним все поля и посмотрим реакции  на неправильный ввод модели, размера  и количества.

 

Рисунок 13 Ввод данных

А теперь продолжив ввод, заполнив поля на английском языке.

 

Рисунок 14 Ввод латиницей

 

Завершим  ввод и проверим вывод данных из файла.

 

Рисунок 15 Вывод  данных их файла

 

Осталось  проверить различные способы  поиска. Первым продемонстрируем поиск по названию.

Рисунок 16 Меню критериев поиска.

 

В меню критериев (рис.16) выберем первый критерий. В появившемся окне (рис.17) вводим искомое название и жмём Enter. На рис.18 продемонстрирован вывод в случае успешного поиска.

 

Рисунок 17 Ввод искомого названия.

 

Рисунок 18 Результат  успешного поиска.

 

Покажем вывод неуспешного поиска, не найдена  ни одна искомая запись.

Рисунок 19

 

Поиск по числовым параметрам, размер и количество, ничем особенным для пользователя не отличается.

 

Заключение

 

 

В ходе выполнения курсовой работы были выполнены все поставленные задачи и разработано работоспособное  приложение «Market». В частности, разработана и описана предметная область программы, разработан и реализован алгоритм на языке C++, проведено тестирование, которое не выявило существенных ошибок, однако это не исключает возможности их появления при проведении более глубокого и длительного тестирования.

Так же в процессе выполнения работы были получены и закреплены практические навыки разработки программ в среде  консольного программирования DevC++ .

 

Список ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 

  1. Архангельский А. Я. Программирование в C++Builder. 7-е изд. - :ООО «Бином-Пресс», 2010г. – 1230с.
  2. Культин Н.Б. Самоучитель C++Builder. СПб. БХВ-Петербург.2004г. – 320с.
  3. Бобровский С. Самоучитель програмирования на языке C++ в среде Borland C++ Builder 5.0
  4. Учебник по программированию в среде C++ Builder (материалы сайта www.PowerBuilder.sbn.bz).
  5. Культин. C# в задачах и примерах. 2007, 241 стр.
  6. Позднев А.В. Введение в язык C++, среда программированияDev-C++, простейшие алгоритмы и программыПрограммирование, численные методы и информатика. 2010г. 36 стр.

 

Приложения

Приложение 1. Листинг интерфейса пользователя

 

#include<iostream.h>

#include "clas.h"

 

usingnamespacestd;

 

intmain()

{

setlocale(LC_ALL, "Russian");

system("chcp 1251");

system("color f0");

system("cls");

tovar t;//объявляем объект типа tovar

int menu=99;

int menu1=99;

tov T;

//организуем  циклическое меню

while(menu!=0)

{     menu=99; menu1=99;

system("cls");//чистим место под меню

cout<<" "<<"1. Ввод данных"<<endl;

cout<<" "<<"2. Вывод из файла"<<endl;

cout<<" "<<"3. Поиск"<<endl;

cout<<" "<<"0. Выход"<<endl;

cin>>menu;

          //проверка коректности ввода (работает только с числами)

for(;;)

          {

if(menu>0)

                {

if(menu>1)

                  {

if(menu>2)

                     {

if(menu>3||menu<0)

{

cout<<" "<<"Неверный ввод!!!"<<endl;

cout<<"Снова введите нужныйпунккт меню : ";

cin>>menu;

}else {break;}

}else {break;}

}else {break;}

}else {break;}

          }

switch(menu)

{

//ввод данных

case 1:

                       //цикл осуществляет циклический  ввод

while(menu1!=0)

                       {

system("cls");

cout<<"-=ВВОДДАННЫХ=-"<<endl;

cout<<" "<<"Введите название: ";cin>>T.name;

cout<<"Возможные значения модели: М,м,Ж,ж,W,w,M,m"<<endl;

cout<<" "<<"Введите модель: ";cin>>T.model;

intproverka=0;

int l;

                             l=strlen(T.model);

while(proverka!=1)

                             {

if(l>1)

                                {

cout<<" -=Некоректныйввод=-"<<endl;

cout<<"Возможные значения: М,м,Ж,ж,W,w,M,m"<<endl;

cout<<"Введите модель: ";cin>>T.model;

l=strlen(T.model);

}else {proverka=1;}

                             }

cout<<" "<<"Введитецвет: ";cin>>T.color;

cout<<" "<<"Введите размер: ";cin>>T.size;

proverka=0;

while(proverka!=1)

                             {

if(T.size<20||T.size>50)

{

cout<<" "<<"-=Некорректный ввод  размера=-"<<endl;

cout<<" "<<"-=Можно внести размеры от 20-го до 50-го=-"<<endl;

cout<<" "<<"Введите размер: ";cin>>T.size;

}else{proverka=1;}

                             }

cout<<" "<<"Введите количество: ";cin>>T.amount;

proverka=0;

while(proverka!=1)

                             {

if(T.amount<0)

{

cout<<" "<<"-=Некорректный ввод  количества=-"<<endl;

cout<<" "<<"-=Количество товара не может быть отрицательным=-"<<endl;

cout<<" "<<"Введите количество: ";cin>>T.amount;

 

}else{proverka=1;}

                             }

                             //вызов ф-ции для сейва

t.saveToFile(T.name,T.model,T.size,T.color,T.amount);

cout<<" "<<"Продолжить ввод даннвх (1-да 0-нет) ";

cin>>menu1;

for(;;){

if(menu==1){break;}

else

                                {

if(menu==0){break;}

else

                                        {

cout<<" "<<"-=Неверный ввод!!!=-"<<endl;

cout<<" Введите нужный пункт меню : ";

cin>>menu;

                                        }

                                }

                             }

cout<<" "<<endl;

system("pause");

}

break;

case 2:

                       //вывод всех записей

t.out();

break;

 

case 3:

                       //поиск

system("cls");

while(menu1!=0)

{

cout<<" "<<"1. Поиск по названию"<<endl;

cout<<" "<<"2. Поиск по модели"<<endl;

cout<<" "<<"3. Поиск по цвету"<<endl;

cout<<" "<<"4. Поиск по размеру"<<endl;

cout<<" "<<"5. Поиск по количеству"<<endl;

cout<<" "<<"0. Назад"<<endl;

cout<<" "<<"Выберите критерий поиска: "<<endl;

cin>>menu1;

                                //проверка коректности ввода (работает только с числами)

for(;;)

                                {

if(menu1>0)

                                      {

if(menu1>1)

                                        {

if(menu1>2)

                                           {

if(menu1>3)

                                             {

if(menu1>4)

                                               {

if(menu1>5||menu1<0)

                                                  {

cout<<" "<<"Неверныйввод!!!"<<endl;

cout<<"Снова введите нужныйпунккт меню : ";

cin>>menu1;

}else {break;}

}else {break;}

}else {break;}

}else {break;}

}else {break;}

}else {break;}

                                }

switch(menu1)

                                {

case 1:

//поискпоназванию

system("cls");

charseachName[50];

cout<<"Введитеискомоеназвание"<<endl;

cin>>seachName;

t.seachName(seachName);

break;

case 2:

                                        //поискпомодели

system("cls");

Информация о работе Набор компиляторов для различных языков программирования, разработанный в рамках проекта GNU