Протокол НТТР. Реализовать алгоритм очереди на основе структуры «Счет»

Автор работы: Пользователь скрыл имя, 31 Января 2013 в 02:03, курсовая работа

Описание

Цель курсовой работы - закрепление и углубление знаний, полученных при изучении курса «Языки программирования» посредством разработки программного обеспечения для компьютера.

Содержание

Содержание 2
Введение 3
Постановка задачи 4
Описание программы 6
Руководство пользователя 7
Тестирование 8
Выводы 9
Литература 10
Приложение 11

Работа состоит из  1 файл

Курсовая отредактированная.doc

— 131.50 Кб (Скачать документ)

Белорусский национальный технический  университет

 

 

Кафедра программного обеспечения  вычислительной техники 

и автоматизированных систем

 

 

 

 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

 

к курсовому  проекту (работе)

 

  по дисциплине Языки программирования 

 

 

Тема проекта:

 

Протокол НТТР.

Реализовать алгоритм очереди  на основе структуры «Счет».

 

 

 

 

 

Исполнитель:                                                                                  А.Н.Дракова

                                            (подпись)

 

Студентка       I I      курса    307211   группы

 

 

Руководитель:                                                                                  И.М.Желакович

                                             (подпись)

 

 

 

 

 

 

 

 

 

 

 

 

Минск 2013

 

 

Содержание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

 

Цель курсовой работы - закрепление и углубление знаний, полученных при изучении курса «Языки программирования» посредством разработки программного обеспечения для компьютера.

 

Постановка  задачи

 

Задание 1. Очередь

Разработать программу, реализующую алгоритм очереди (20 элементов). Задача решается в двух вариантах: статическом (на основе массива структур) и динамическом. Реализовать алгоритм кольцевой очереди на основе динамического списка. В качестве элемента очереди выбрать структуру, соответствующую индивидуальному варианту.

Предусмотреть заполнение очереди из файла (подготовить файл на 20 элементов).

Предусмотреть многоуровневое меню:

1) Заполнение очереди

a) с консоли (циклически)

b)  из файла (выбор файла, тек.папка, любая папка)

2) Удаление элемента из очереди (циклически)

a) безвозвратно

b)  с сохранением в файл

3) Очистка очереди (с выводом удаляемых элементов)

a)  безвозвратно

b) с сохранением в файл

4) Вывод элементов, содержащихся в очереди

a) на экран

b)  в файл

5) Вывод количества элементов в очереди

6) Сдвиг всех элементов очереди к началу при наличии пустых мест в начале очереди (для статического варианта)

7) Выход

Реализовать алгоритм обработки  исключений.

Проанализировать достоинства  и недостатки статического и динамического вариантов.

Продемонстрировать работу всех пунктов меню. Продемонстрировать обработку ошибочных ситуаций (ввод данных другого типа, ввод пустых данных, переполнение очереди, пустая очередь). Графический интерфейс и использование классов необязательны, но приветствуются.

 

10. Счет

i. Номер (ключ)

ii. Вид услуги

iii. Количество

iv. Цена

v. Дата оказания услуги

 

 

Описание программы

 

Структурная схема алгоритма программы:


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Словесное описание особенностей программной  реализации разработанного алгоритма:

 

 

1)Вывод меню на экран.

2)В зависимости от  выбранного пункта вызывается соответствующая функция:zapoln();udal();ochist();vivod();kolvo();

А также из функции zapoln(); вызывается: zapoln1(); zapoln2(); в зависимости от выбора пользователя.

3) Используя методы  класса ochered выполняются все требуемые положения.

 

Руководство пользователя

 

Для запуска программы  необходимо запустить Release/proekt.exe, в файле input.txt содержится массив структур.

 

Тестирование

 

 

Выводы

 

В ходе выполнения курсовой работы мною были закреплены теоретические знания в области объектно-ориентированного программирования на зыке С++. Я Познакомилась с проектированием и с разработкой архитектуры проекта.

 

 

.

 

 

Литература

 

1. УолтерСэвитч. С++ в примерах. Москва: Эком, 1997. (3 шт.)

2. В.А. Скляров. Язык  С++ и объектно-ориентированное  программирование. –Мн.: Выш. шк.,1997. (20 шт.)

3. Язык программирования  Си. Москва: Производственно-внедренческий  кооператив "И Н Т Е Р Ф  Е Й С", 1988. (0)

4. Б.В. Керниган,Д.М.  Ричи. ЯЗЫК С. (17 шт.)

5. В.А. Скляров. Программирование  на языках Си и Си++. Мн.: Выш. шк.,1997. (2 шт.)

6. Страуструп Бьерн.  Язык программирования Си++. М.: Софт,1999. (10 шт.).

7. Шилд Герберт. - Самоучитель  C++ / Герберт Шилдт . - СПб : BHV - Санкт-Петербург, 1997. - 511 с. (1).

8. Как программировать  на С++ . Дж. Дейтел. Пер. В. Кузьменко . - М. : ЗАО "Издательство БИНОМ", 1998. - 1021 с. : ил.(1).

9. Visual C++ 6 Новые возможности для  программистов. Ю. Тихомиров.- СПб.:БХВ-Санкт-Петербург,1998.-496 с.

10. Основы алгоритмизации и программирования. Язык СИ. Е.М.Демидович.Мн.: “Бестпринт” 2003 г.

11.Использование Visual C++ 6. Специальное  издание. Грегори К.: Пер. с англ.-М.;СПб.;К.: Издательский дом “Вильямс”, 2001.-864 с.

 

 

 

 

 

 

 

Приложение

// kurs.cpp: определяет  точку входа для консольного  приложения.

//

 

#include"stdafx.h"

#include<iostream>

#include<fstream>

usingnamespace std;

struct spis

{

int number;

char*usluga;

int kol;

int cena;

char*data;

spis * next;

spis*prev;

//spis(int k){number=k;}

spis(int n,int k,int c,char*u,char*d)//структура хранящая информацию о элементе очереди

{data=newchar[255]; usluga=newchar[255];number=n;kol=k;cena=c;usluga=u;data=d;}

};

class ochered//класс реализующий методы для создания и управления очередью

{

spis*first;//указатель на первый элемент

public:

ochered(){first=NULL;}//конструктор

void clear()//очистка очереди

{

while(first!=NULL)

del();

}

void del()//удаление последнего элемента очереди

{

spis * d=first;

if(d!=NULL)

{

while(d->next!=NULL)

d=d->next;

if(d->prev!=NULL)

d->prev->next=NULL;

if(first==d)

first=NULL;

delete(d);

}

}

int kol()//функция возвращает количество элементов в очереди

{

spis*d=first;

int k=0;

while(d!=NULL)

{

d=d->next;

k++;

}

return k;

}

void delNum(int k)//удалениеэлементапослезаданного

{

spis * d=first;

if(d!=NULL)

if(first->number==k)

{

first=d->next;

if(first!=NULL)

first->prev=NULL;

delete(d);

} else

{

 

while((d->next!=NULL)&&(d->number!=k))

d=d->next;

if(d->number==k)

{

if(d->prev!=NULL)

d->prev->next=d->next;

if(d->next!=NULL)

d->next->prev=d->prev;

delete(d);

}

}

}

void insert(int n,int k,int c,char*u,char*data)//вставкаэлементавначалоочереди

{

if(first==NULL)

{

first=new spis(n,k,c,u,data);

first->prev=NULL;

first->next=NULL;

} else

{

spis*d=first;

first=new spis(n,k,c,u,data);

first->prev=NULL;

first->next=d;

d->prev=first;

 

}

}

void printF()//выводвчехэлементовочередивфайл output.txt

{

ofstream  fout("output.txt");

spis*d=first;

while(d!=NULL)

{

fout<<"Номер(ключ) счета: "<<d->number<<endl;;

fout<<"Видуслуги: "<<d->usluga<<endl;

fout<<"Kоличество: "<<d->kol<<endl;

fout<<"Цена: "<<d->cena<<endl;

fout<<"Дата оказания услуги: "<<d->data<<endl;

fout<<"_____________________\n";

d=d->next;

}

fout.close();

}

void printC()//вывод всех элементов очереди на экран

{

spis*d=first;

while(d!=NULL)

{

cout<<"Номер(ключ) счета: "<<d->number<<endl;;

cout<<"Видуслуги: "<<d->usluga<<endl;

cout<<"Kоличество: "<<d->kol<<endl;

cout<<"Цена: "<<d->cena<<endl;

cout<<"Дата оказания услуги: "<<d->data<<endl;

cout<<"_____________________\n";

d=d->next;

}

}

void printElF(char*file)//вывод всех элементов очереди в заданный файл

{

ofstream  fout(file);

spis * d=first;

if(d!=NULL)

{

while(d->next!=NULL)

d=d->next;

if(d->prev!=NULL)

d->prev->next=NULL;

if(first==d)

first=NULL;

fout<<"Номер(ключ) счета: "<<d->number<<endl;;

fout<<"Видуслуги: "<<d->usluga<<endl;

fout<<"Kоличество: "<<d->kol<<endl;

fout<<"Цена: "<<d->cena<<endl;

fout<<"Дата оказания услуги: "<<d->data<<endl;

delete(d);

}

}

};

ochered li;

void zapoln1()//заполнение очереди из консоли

{

system("cls");

int l;

int n,k,c;

char*u=newchar[255],*d=newchar[255];

cout<<"Введите количество добавляемых элементов\n";

cin>>l;

for(int i=0;i<l;i++)

{

u=newchar[255];

d=newchar[255];

cout<<"Введите номер(ключ) счета\n";

cin>>n;

cout<<"Введите вид услуги\n";

cin>>u;

cout<<"Введите количество\n";

cin>>k;

cout<<"Введите цену\n";

cin>>c;

cout<<"Введите дату оказания услуги\n";

cin>>d;

li.insert(n,k,c,u,d);

}

}

void zapoln2()//заполнение очереди из файла

{

int l;

int n,k,c;

char*u=newchar[255],*d=newchar[255];

char* fileName=newchar[255], *path=newchar[255];

system("cls");

cout<<"Введитеимяфайла\n";

cin>>fileName;

cout<<"Введите путь к файлу(введите '0' если текущая папка):\n";

cin>>path;

if(strcmp(path,"0")==0) path="";

if(strlen(path)!=0)

path=strcat(path,fileName);

else

path=fileName;

cout<<"Путькфайлу: "<<path<<endl;

ifstream  fin(path);

if (fin.fail())

cout<<"Такого файла не существует\n";

else

{

fin>>l;

for(int i=0;i<l;i++)

{

u=newchar[255];

d=newchar[255];

fin>>n;

fin>>u;

fin>>k;

fin>>c;

fin>>d;

li.insert(n,k,c,u,d);

}

cout<<"Файлпрочтен";

}

 

system("pause");

 

}

void zapoln()//меню 2-ого уровня выбор откуда будет осуществляется ввод элементов очереди

{

bool flag=true;

char m;

while(flag)

{

system("cls");

cout<<"Заполнениеочереди\n1)Сконсоли\n2)Изфайла\n0)Назад\n";

try

{

cin>>m;

if((m<'0')||(m>'2')) throw 1;

}

catch(...)

{

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

system("pause");

}

if(m=='1')

{

zapoln1();

} else

if(m=='2')

{

zapoln2();

}

else

if(m=='0')

flag=false;

}

}

void udal()//удалениеэлемента

{

bool flag=true;

char m;

while(flag)

{

system("cls");

cout<<"Удаление элемента\n1)Безвозвратно\n2)С сохранением в файл\n0)Назад\n";

 

try

{

cin>>m;

if((m<'0')||(m>'2')) throw 1;

}

catch(...)

{

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

system("pause");

}

system("cls");

if(m=='1')

{

li.del();

cout<<"Элемент удален\n";

system("pause");

} else

if(m=='2')

{

char*file=newchar[255];

cout<<"Введитеимяфайла\n";

cin>>file;

li.printElF(file);

li.del();

cout<<"Элемент удален\n";

system("pause");

}

else

if(m=='0')

flag=false;

}

}

void ochist()//очисткасписка

{

bool flag=true;

char m;

while(flag)

{

system("cls");

cout<<"Очисткасписка (свыводомудаляемыхэлементов)\n1)Безвозвратно\n2)Ссохранениемвфайл(output.txt)\n0)Назад\n";

 

try

{

cin>>m;

if((m<'0')||(m>'2')) throw 1;

}

catch(...)

{

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

system("pause");

}

system("cls");

if(m=='1')

{

li.printC();

li.clear();

system("pause");

} else

if(m=='2')

{

li.printC();

li.printF();

li.clear();

cout<<"Списоксохраненвфайл output.txt\n";

system("pause");

}

else

if(m=='0')

flag=false;

}

}

void vivod()//выводэлементов

{

bool flag=true;

char m;

while(flag)

{

system("cls");

cout<<"Выводэлементовочереди\n1)Наэкран\n2)Вфайл(output.txt)\n0)Назад\n";

 

try

{

cin>>m;

if((m<'0')||(m>'2')) throw 1;

}

catch(...)

{

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

system("pause");

}

system("cls");

if(m=='1')

{

li.printC();

system("pause");

} else

if(m=='2')

{

li.printF();

cout<<"Списоксохраненвфайл output.txt\n";

system("pause");

}

else

if(m=='0')

flag=false;

}

}

void kolvo()//количество элементов

{

system("cls");

cout<<"Количество элементов в списке: "<<li.kol()<<endl;

system("pause");

}

void main()//головная программа

{

setlocale(LC_ALL,"Russian");

bool flag=true;

char m;

while(flag)//бесконечный цикл обеспечивающий работу меню

{

system("cls");

cout<<"Меню\n1)Заполнение очереди\n2)Удаление элемента из очереди\n3)Очистка очереди (с выводом удаляемых элементов)\n4)Вывод элементов, содержащихся в очереди\n5)Вывод количества элементов в очереди\n0)Выход\n";

try

{

cin>>m;

if((m<'0')||(m>'5')) throw 1;

}

catch(...)

{

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

system("pause");

}

 

switch(m)

{

case'1': zapoln(); break;

case'2': udal(); break;

case'3': ochist(); break;

case'4': vivod(); break;

case'5': kolvo(); break;

case'0': flag=false; break;

}

}

system("pause");

}

 



         


Информация о работе Протокол НТТР. Реализовать алгоритм очереди на основе структуры «Счет»