Приглашенный на свадьбу фотограф способен запечатлеть навсегда самые лучшие моменты в жизни! Главное, чтобы это был профессионал, который знает свое дело.
Это подпрограмма загрузочного меню, из которого осуществляется переход к другим меню или выход из программы
SUB MainMenu
DO
CLS
PRINT "ЖИЛИЩНОЕ УПРАВЛЕНИЕ"
PRINT "1-Меню Операций"
PRINT "2-Меню Справок"
PRINT "3-Выход"
DO
M$ = INPUT$(1)
LOOP WHILE INSTR("123", M$) = 0
CLS
SELECT CASE M$
CASE IS = "1"
MenuOperation
CASE IS = "2"
SpravMenu
CASE ELSE
END SELECT
LOOP UNTIL M$ = "3"
END
END SUB
3.3. Подпрограмма MenuOperation
Эта подпрограмма позволяет выбирать и переходить на операции: ввод данных, коррекция и удаление, и позволяет выйти в главное меню.
SUB MenuOperation
DO
CLS
PRINT "МЕНЮ ОПЕРАЦИЙ"
PRINT "1-Добавление специальности"
PRINT "2-Добавление сотрудника"
PRINT "3-Ввод объема работ"
PRINT "4-Коррекция данных"
PRINT "5-Удаление данных"
PRINT "6-Главное меню"
DO
M$ = INPUT$(1)
LOOP WHILE INSTR("123456", M$) = 0
CLS
SELECT CASE M$
CASE IS = "1"
AddSpez
CASE IS = "2"
AddFam
CASE IS = "3"
Enter
CASE IS = "4"
Redact
CASE IS = "5"
DelMenu
CASE ELSE
END SELECT
LOOP UNTIL M$ = "6"
CALL MainMenu
END SUB
3.4. Подпрограмма Enter
Подпрограмма ввода сведений по сотруднику.
SUB Enter
SHARED Fam$(), Spez$(), Dann(), DN, SP, FM, Fa
DO
CLS
PRINT "ВВОД ОБЪЕМА РАБОТ"
FindFam
CLS
INPUT "Введите число месяца ", Day
IF Day > 31 OR Day < 1 THEN PRINT "Такого числа в месяце нет": GOTO 4
FOR i = 1 TO DN
IF Dann(i, 1) = AND Dann(i, 2) = Day THEN GOTO 3
NEXT i
PRINT "Введите трудозатраты"
INPUT Tr
IF Tr > 24 OR Tr < 0 THEN PRINT "Столько часов в сутках не бывает": GOTO 4
DN = DN + 1
Dann(DN, 1) = Fa
Dann(DN, 2) = Day
Dann(DN, 3) = Tr
GOTO 4
3 CLS
PRINT "Запись для данного сотрудника уже существует"
4 PRINT "Хотите продолжить ввод"
PRINT "1-Да, 2-Нет"
DO
M$ = UCASE$(INPUT$(1))
LOOP WHILE INSTR("YN", M$) = 0
CLS
SELECT CASE M$
CASE IS = "1"
Enter
CASE ELSE
END SELECT
LOOP UNTIL M$ = "2"
CALL MainMenu
END
3.5. Подпрограмма AddFam
Подпрограмма добавления фамилий
SUB AddFam
SHARED Fam$(), Spez$(), FM, Sz
DO
CLS
PRINT "СПРАВОЧНИК СОТРУДНИКОВ"
PRINT "Номер", "Фамилия", "Специальность"
FOR i = 1 TO FM
PRINT i, Fam$(i, 1), Spez$(VAL(Fam$(i, 2)))
NEXT i
PRINT "ХОТИТЕ ВВЕСТИ НОВОГО СОТРУДНИКА"
PRINT "1-Да, 2-Нет"
DO
M$ = UCASE$(INPUT$(1))
LOOP WHILE INSTR("12", M$) = 0
CLS
SELECT CASE M$
CASE IS = "1"
CLS
FM = FM + 1
PRINT "ВВЕДИТЕ СОТРУДНИКА"
INPUT Fam$(FM, 1)
FindSpez
Fam$(FM, 2) = STR$(Sz)
CASE ELSE
END SELECT
LOOP UNTIL M$ = "2"
CALL MainMenu
END SUB
3.6. Подпрограмма AddSpez
Подпрограмма добавления специальностей
SUB AddSpez
SHARED Spez$(), SP
DO
CLS
PRINT "СПРАВОЧНИК СПЕЦИАЛЬНОСТЕЙ"
PRINT "Номер", "Специальность"
FOR i = 1 TO SP
PRINT i, Spez$(i)
NEXT i
PRINT "ХОТИТЕ ВВЕСТИ НОВУЮ СПЕЦИАЛЬНОСТЬ"
PRINT "1-Да, 2-Нет"
DO
M$ = UCASE$(INPUT$(1))
LOOP WHILE INSTR("12", M$) = 0
CLS
SELECT CASE M$
CASE IS = "1"
CLS
PRINT "ВВЕДИТЕ СПЕЦИАЛЬНОСТЬ"
INPUT PS$
FOR i = 1 TO SP
IF PS$ = Spez$(i) THEN 1 ELSE 2
1 PRINT "Такая специальность уже есть"
WHILE INKEY$ = ""
WEND
AddSpez
2 NEXT i
SP = SP + 1
Spez$(SP) = PS$
CASE ELSE
END SELECT
LOOP UNTIL M$ = "2"
CALL MainMenu
END SUB
3.7. Подпрограмма Del
Подпрограмма удаления данных
SUB Del
SHARED Spez$(), SP, Fam$(), FM, Dann(), DN, d, Sz, Fa, Num
DO
DO
IF d <> 1 THEN 9
PRINT "УДАЛЕНИЕ СПЕЦИАЛЬНОСТЕЙ"
PRINT "ХОТИТЕ УДАЛИТЬ СПЕЦИАЛЬНОСТЬ"
PRINT "1-Да, 2-Нет"
DO
M$ = UCASE$(INPUT$(1))
LOOP WHILE INSTR("12", M$) = 0
CLS
SELECT CASE M$
CASE IS = "1"
CLS
FindSpez
FOR i = Sz TO SP
Spez$(Sz) = Spez$(Sz + 1)
NEXT i
SP = SP - 1
GOTO 10
CASE ELSE
END SELECT
LOOP UNTIL M$ = "2"
CALL MainMenu
9 DO
CLS
IF d <> 2 THEN 14
PRINT "УДАЛЕНИЕ СОТРУДНИКА"
PRINT "ХОТИТЕ УДАЛИТЬ СОТРУДНИКА"
PRINT "1-Да, 2-Нет"
DO
M$ = UCASE$(INPUT$(1))
LOOP WHILE INSTR("12", M$) = 0
CLS
SELECT CASE M$
CASE IS = "1"
CLS
FindFam
i = Fa
GOTO 11
CASE ELSE
END SELECT
LOOP UNTIL M$ = "2"
CALL MainMenu
10 FOR i = 1 TO FM
IF VAL(Fam$(i, 2)) <> Sz THEN 13 ELSE 11
11 Fam$(i, 1) = Fam$(i + 1, 1)
Fam$(i, 2) = Fam$(i + 1, 2)
FM = FM - 1
FOR j = 1 TO DN
IF Dann(j, 1) <> i THEN 12
Dann(j, 1) = Dann(j + 1, 1)
Dann(j, 2) = Dann(j + 1, 2)
Dann(j, 3) = Dann(j + 1, 3)
DN = DN - 1
j = j - 1
12 NEXT j
i = i - 1
IF d = 2 THEN 15
13 NEXT i
GOTO 15
14 DO
PRINT "УДАЛЕНИЕ ТРУДОДНЯ"
PRINT "ХОТИТЕ УДАЛИТЬ ДЕНЬ"
PRINT "1-Да, 2-Нет"
DO
M$ = UCASE$(INPUT$(1))
LOOP WHILE INSTR("12", M$) = 0
CLS
SELECT CASE M$
CASE IS = "1"
CLS
FindDann
FOR i = Num TO DN
Dann(i, 1) = Dann(i + 1, 1)
Dann(i, 2) = Dann(i + 1, 2)
Dann(i, 3) = Dann(i + 1, 3)
DN = DN - 1
i = i - 1
IF DN = 0 THEN 15
NEXT i
GOTO 15
CASE ELSE
END SELECT
LOOP UNTIL M$ = "2"
CALL MainMenu
15 PRINT "Хотите продолжить удаление"
PRINT "1-Да, 2-Нет"
DO
M$ = UCASE$(INPUT$(1))
LOOP WHILE INSTR("12", M$) = 0
CLS
SELECT CASE M$
CASE IS = "1"
DelMenu
CASE ELSE
END SELECT
LOOP UNTIL M$ = "2"
CALL MainMenu
END SUB
3.8. Подпрограмма DelMenu
Подпрограмма меню удаления
SUB DelMenu
SHARED d
DO
CLS
PRINT "МЕНЮ УДАЛЕНИЯ"
PRINT "1-Удаление специальности"
PRINT "2-Удаление сотрудника"
PRINT "3-Удаление данных"
PRINT "4-Главное меню"
DO
M$ = INPUT$(1)
LOOP WHILE INSTR("1234", M$) = 0
CLS
SELECT CASE M$
CASE IS = "1"
d = 1
Del
CASE IS = "2"
d = 2
Del
CASE IS = "3"
d = 3
Del
CASE ELSE
END SELECT
LOOP UNTIL M$ = "4"
CALL MainMenu
END SUB
3.9. Подпрограмма FindDann
Подпрограмма поиска данных
SUB FindDann
SHARED Spez$(), Dann(), Fam$(), DN
DO
PRINT "Номер", "Фамилия", "Спец-ть", "Число", "Трудозатраты"
FOR i = 1 TO DN
PRINT i, Fam$(Dann(i, 1), 1), Spez$(VAL(Fam$(Dann(i, 1), 2))), Dann(i, 2), Dann(i, 3)
NEXT i
PRINT "Введите номер запись"
INPUT Num
FOR i = 1 TO DN
IF Num = i THEN 16
NEXT i
CLS
PRINT "Записи под таким номером нет"
PRINT "Хотите ввести заново"
PRINT "1-Да, 2-Нет"
DO
M$ = UCASE$(INPUT$(1))
LOOP WHILE INSTR("12", M$) = 0
CLS
SELECT CASE M$
CASE IS = "1"
FindDann
CASE ELSE
END SELECT
LOOP UNTIL M$ = "2"
MainMenu
16 END SUB