- •Задание на курсовое проектирование
- •1.Представление расписания занятий вуз’а
- •2. Алгоритм решения задачи – описательная модель программы
- •3.Модель на основе абстракций и спецификаций
- •3.2 Процедура выбора занятия
- •3.3 Процедура проверки занятости группы
- •3.4 Процедура проверки занятости преподавателя
- •3.5 Процедура проверки занятости аудитории
- •3.6 Процедура замены значений
- •3.7. Процедура очистки значений
- •3.8. Процедура выбора занятия среди тех которые требуют корректировки
- •3.9. Замена значений в занятиях требующих корректировку
2. Алгоритм решения задачи – описательная модель программы
В таблице занятий присутствует атрибут корректировка, значения этого атрибута :
0 – занятие может корректироваться
1 – занятие должно быть скорректировано
2 – признак мешающего занятия
3 – занятие не может быть скорректированно
- Описание алгоритма.
1. Выбор пользователем необходимого для корректировки занятия путем последовательного просмотра строк таблицы. Просмотр строк таблицы обеспечивается программой. Просмотр строк таблицы обеспечивается программой для занятий значения атрибута, корректировка=0
2. Запоминание программой значений всех атрибутов выбранного занятия.
День недели Признак недели. «Пара». Дисциплина. Вид занятия. Преподаватель. Группа. Подгруппа. Аудитория. Поток.
Присвоение атрибуту корректировка значения 1
3. указание дня, признака недели и № «пары» в которые необходимо провести занятие, запоминание их в День1, Признак1, «Пара1»
4.Проверка занятости Группа в День1, Признак1, «Пара1».
5.Если Группа занята, то программно помечается мешающее занятие и атрибуту корректировка присваивается значение 2.
6.Проверка занятости Преподаватель в День1, Признак1, «Пара1».
7.Если преподаватель занят , то программно помечается мешающее занятие и атрибуту корректировка присваивается значение 2.
8.Проверка занятости Аудитория в День1, Признак1, «Пара1».
9.Если Аудитория занята, то программно помечается мешающее занятие и атрибуту корректировка присваивается значение 2.
10.Для занятия со значением атрибута корректировка=1, заменить значения День, Признак, «Пара» на День1, Признак1, «Пара1».
11.последовательный просмотр строк таблицы, атрибут корректировка которых =2
12. программное запоминание следующих атрибутов выбранного занятия: День недели. Признак недели. «Пара». Дисциплина. Вид занятия. Преподаватель. Группа. Подгруппа. Аудитория. Поток.
Присвоение атрибуту корректировка значения 1
13. указание дня, признака недели и № «пары» в которые необходимо провести занятие, запоминание их в День1, Признак1, «Пара1»
14. Проверка занятости Группа в День1, Признак1, «Пара1». Если Группа занята, то программно помечается мешающее занятие и атрибутам присваивается значение 2.
15.Проверка занятости Преподаватель в День1, Признак1, «Пара1».
16.Если преподаватель занят, то программно помечается мешающее занятие и атрибуту корректировка присваивается значение 2.
17.Проверка занятости Аудитория в День1, Признак1, «Пара1».
18.Если Аудитория занята, то программно помечается мешающее занятие и атрибуту корректировка присваивается значение 2.
19.Для занятия со значением атрибута корректировка=1, заменить значения День, Признак, «Пара» на День1, Признак1, «Пара1».
20. если в таблице есть занятия атрибут корректировка которых = 2, переход к 11.
3.Модель на основе абстракций и спецификаций
Таблица = data type is вызов, переход, атрибут, замена элемента.
Описание
Неизменяемый по количеству и последовательности атрибутов набор строк одинакового размера. Каждая строка содержит одинаковое количество одинаково размещённых данных различного типа.
N - фиксированное количество строк таблицы
M- количество атрибутов в строке таблицы
Операции
вызов = proc(t:таблица) returns (s:строка)
effects - показывает текущую строку таблицы при вызове t
переход = proc(t:таблица)returns (s:строка)
effects – переводит курсор на следующую строку таблицы t
атрибут = proc(t:таблица; i:int)returns (s:строка)
requires – номер желаемого атрибута i меньше или равен M
effects – возвращает значение i-го атрибута в текущей строке таблицы
замена_элемента = proc(t:таблица; i:int; x:data type)
requires – номер желаемого атрибута i меньше или равен M
effects заменяет существующее значение i-го атрибута текущей строки таблицы t на x
end таблица
3.1 Main
а(66;11): таблица
В(10): массив
с(10) : массив
D(3) : массив
g=0 : таблица
z=false : boolean
перестановка_занятий=proc(а;В;с;D;g) returns(a)
если необходимо то
выбор_занятия(а;В;с)
ввод временых параметров день1,признак1,пара1 в D
g=атрибут(в;1)
проверка_занятости_группы(a;g;D;z)
g=атрибут(B;6)
проверка_занятости_преподавателя(a;g;D;z)
g=атрибут(В;7)
проверка_занятости_аудитории(a;g;B;z)
замена_значений(a;B;D;z)
если с(1)<>" "
то
g=атрибут(c;1)
проверка_занятости_группы(a;g;D;z)
g=атрибут(c;6)
проверка_занятости_преподавателя(a;g;D;z)
g=атрибут(c;7)
проверка_занятости_аудитории(a;g;B;z)
замена_значений(a;B;D)
конец если
конец если
метка (1)
очистка_значений(B,c,D,g)
требуют_корректировки(а;В;с)
ввод временых параметров день1,признак1,пара1 в D
g=атрибут(в;1)
проверка_занятости_группы(a;g;D;z)
g=атрибут(B;6)
проверка_занятости_преподавателя(a;g;D;z)
g=атрибут(В;7)
проверка_занятости_аудитории(a;g;B;z)
замена_значений(a;B;D)
если с(1)<>" "
то
g=атрибут(c;1)
проверка_занятости_группы(a;g;D;z)
g=атрибут(c;6)
проверка_занятости_преподавателя(a;g;D;z)
g=атрибут(c;7)
проверка_занятости_аудитории(a;g;B;z)
замена_значений(a;B;D)
конец если
если z=true то go to метка (1)