Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 проги на си ОАИП 2 сем 2009 вмсис / отчёт УЧЕБНАЯ ПРАКТИКА.doc
Скачиваний:
18
Добавлен:
15.06.2014
Размер:
1.59 Mб
Скачать

11 Результаты работы программы

12 Условие задачи №3

Имеется кольцо автостоянок. В элементе кольца содержится информация: название стоянки, количество мест. К элементам кольца указатель на очередь, содержаущую номера машин и ФИО владельцев. Все данные из кольца и очереди записываются в файл и читаются из него.

13 Структура входных/выходных данных

Входные данные:

Бинарные файлы parking.dat и _f.dat

Кольцо автостоянок struct RING с полями

R rr - подструктура R

struct LINE *h,*t - указатели на голову и хвост очереди LINE

RING *l, *r - указатели на левый и правый элементы кольца

Подструктура элемента кольца struct R с полями

int p - кол-во мест

int f_p - кол-во свободных мест

char name[15] - название стоянки

Очередь машин struct LINE с полями

L ll - подструктура L

LINE *next - указатель на следующий элемент очереди LINE

Подструктура элемента очереди struct LINE с полями

char fio[30] - фио владельца

char num[10] - номер машины

Выходные данные:

Изменённые бинарные файлы parking.dat и _f.dat

14 Блок-схемы алгоритмов и алгоритмы по шагам

Алгоритм по шагам функции main

  1. Объявление переменных:

RING *s = NULL, *cur - структурная переменная указатель на кольцо;

int k = 1 - флаг окончания ввода стоянок и машин;

int kk = 0 - флаг поиска стоянки (равен 0, если нет стоянки);

char in[15] - буфер для ввода.

  1. Вызов функции записи информации из файла в оперативную память from_file().

  2. Организация бесконечного цикла.

  3. Вывод диалогово меню.

  4. Если нажата клавиша ‘1’, то переход к пункту 6, если ‘2’, то переход к пункту 13, если ‘3’, то переход к пункту 20, если ‘4’, то переход к пункту 22, если ‘5’, то переход к пункту 24, если ‘q’, то переход к пункту 26.

  5. Ввод названия стоянки in.

  6. Начало цикла по элементам кольца cur.

  7. Если найдена стоянка (in равно cur->rr.name), то kk=1 и прервать цикл, иначе пункт 9.

  8. Двигаемся по кольцу cur=cur->l.

  9. Прервать цикл.

  10. Если стоянка была найдена (kk равно 1), то вызов функции добавления машины add_car(), иначе пункт 12.

  11. Прервать цикл

  12. Ввод названия стоянки in.

  13. Начало цикла по элементам кольца cur.

  14. Если найдена стоянка (in равно cur->rr.name), то kk=1 и прервать цикл, иначе пункт 16.

  15. Двигаемся по кольцу cur=cur->l.

  16. Прервать цикл.

  17. Если стоянка была найдена (kk равно 1), то вызов функции удаления машины del_car(), иначе пункт 19.

  18. Прервать цикл.

  19. Вызов функции добавления стоянки add_park().

  20. Прервать цикл.

  21. Вызов функции удаления стоянки del_park().

  22. Прервать цикл.

  23. Вызов функции вывода информации о стоянках out().

  24. Прервать цикл.

  25. Вызов функции записи информации в файл to_file().

  26. Вызов функции освобождения памяти от списков free_mem().

  27. Выход из функции.

  28. Конец функции.

Блок-схема функции занесения информации в файлы to_file: (передаётся указатель на элемент кольца s)

Алгоритм по шагам функции удаления стоянки del_park: (передаётся указатель на элемент кольца s)

  1. Объявление переменных:

RING *cur = s - структурная переменная указатель на кольцо;

char in[15] – буфер для ввода.

  1. Ввод названия удаляемой стоянки in.

  2. Организация цикла по кольцу стоянок cur.

  3. Если стоянка не найдена(in не равно cur->rr.name), то пункт 5, иначе 6.

  4. Преход к следующему элементу кольца cur=cur->r.

  5. Если это единственный элемент (cur равен cur->r), то пункт 7, иначе 9.

  6. Освобождение памяти от cur.

  7. Выход из функции.

  8. Если текущий равен головному (cur равен s), то пункт 10, иначе 11.

  9. Сдвиг головного элемента s=s->r.

  10. Обход удаляемого элемента cur->l->r=cur->r.

  11. Освобождение памяти от cur.

  12. Выход из функции.

  13. Конец цикла по кольцу cur.

  14. Конец функции.

Блок-схема функции освобождения памяти от списков free_mem: (передаётся указатель на элемент кольца s)