Реферат: По решению прикладных задач на языке FRED
@setdrive("a:"),
@pk("{in}"),
@setselection("resume.fw3"),
@pk("{return}{scroll-lock}{out}{return}{scroll-lock}"),
;---Установка а меню операции Новое:Пустой/Текст-Фрейм---
@prompt("Нажмите INS, установите ""Новое:Пустой/Текст-Фрейм"",нажмите ESC и F5"),
@suspend,
;---Завершение начальной установки---
@delete("resume")
MAINMENU.[Загрузка БД]:
;---Загрузка базы данных [base]---
@pk("{scroll-lock}"),
@setdrive("a:"),
@pk("{in}"),
@setselection("base.fw3"),
@pk("{return}{scroll-lock}{out}{return}{scroll-lock}"),
@position("base",1,1,80,10),
@reset(base,1)
MAINMENU.[Коррекция БД]:
;***Коррекция базы данных: Вставка, Изменение, Удаление записей***
MAINMENU.[Коррекция БД].[Вставка Записи]:
;---Подготовка операции Вставка---
@local(a,p,q,r),p:=7,
@pk("{ins}{home}"),
@while(p>0,
@list(@pk("{dnarrow}"),p:=p-1)),
@pk("{esc}"),
;---Вход в базу данных---
@setselection("base"),
@pk("{in}"),
r:=@get(base,5),
;---Вставка новых записей---
p:="y",r:=0,
@integer(r),
@while(@not(p<>"y"),
@list(@pk("{ins}{return}{return}"),
r:=r+1,
q:=@value(@inputline("Введите N")),
@put(base,1,q),
q:=@inputline("Введите НАЗВАНИЕ"),
@put(base,2,q),
q:=@value(@inputline("Введите ОТДЕЛ")),
@put(base,3,q),
q:=@value(@inputline("Введите ИНВ.N")),
@put(base,4,q),
q:=@value(@inputline("Введите первонач.стоимость")),
@put(base,5,q),
q:=@value(@inputline("Введите аморт. отчисл.")),
@put(base,6,q),
q:=@inputline("Введите дату оприход."),
@put(base,7,q),
q:=@value(@inputline("Введите N акта оприход.")),
@put(base,8,q),
a:=@inputline(" Ресурс выбыл? Да(y)/Нет(n)"),
@if(a="y",
@list(q:=@inputline("Введите дату выбытия"),
@put(base,9,q),
q:=@value(@inputline("Введите N акта выбытия")),
@put(base,10,q))),
q:=@inputline("Введите фам. мат. отв."),
@put(base,11,q),
p:=@inputline("Вставлять еще? ДА(y)/НЕТ(n)"))),
;---Сортировка базы данных---
@setformula(base,@sort(base.[ N],#ascend)),@base,
;---Завершение вставки записей---
@reset(base,1),
@put(base,5,r),
@pk("{out}{return}"),
@pk("{ins}{home}{dnarrow}{esc}")
MAINMENU.[Коррекция БД].[Удаление Записи]:
;---Подготовка операции Удаление---
@local(p,q,r),
@pk("{ins}{rightarrow}{home}{dnarrow}{dnarrow}{esc}"),
;---Вход в базу данных---
@setselection("base"),@pk("{return}"),r:=@get(base,5),
;---Удаление записей---
p:="y",
@while(@not(p<>"y"),
@list(q:=@value(@inputline("Введите номер удаляемой записи")),
@reset(base,q),
@pk("{in}{ins}{return}y{esc}{out}"),r:=r-1,
p:=@inputline("Удалять еще?ДА(y)/НЕТ(n)"))),
;---Завершение удаления записей в базе данных---
@reset(base,1),
@put(base,5,r),
@pk("{return}{ins}{leftarrow}{esc}")
MAINMENU.[Коррекция БД].[Изменение Записи]:
;--- Вход в базу данных ---
@local(p,q,r,s),
@setselection("base"),
@pk("{in}"),
;--- Изменение записей в базе данных ---
p:="y",
@while(@not(p<>"y"),
@list(q:=@value(@inputline("Введите номер записи")),
r:=@value(@inputline("Введите номер поля")),
@reset(base,q),s:=@get(base,r),
@if(@isnumeric(s),
@list(s:=@value(@inputline("Введите значение")),
@put(base,r,s)),
@list(s:=@inputline("Введите запись"),
@put(base,r,s))),
p:=@inputline("Изменять еще? ДА(у)\НЕТ(n)"))),
;--- Завершение изменения записей ---
@setselection("base"),@setformula(base,@sort(base.[ N],#ascend)),@base,
@reset(base,1),
@pk("{out}{return}")
MAINMENU.[Коррекция БД].[Сохранение БД]:
;---Запись базы данных на диск А ---
@setselection("base"),
@pk("{scroll-lock}"),
@setdrive("a:"),
@pk("{in}{scroll-lock}{f8}{scroll-lock}{return}y{out}{return}{scroll-lock}")
MAINMENU.[Документ]:
;***Формирование выходного документа в таблице [tabl]***
;---Загрузка фреймов [tabl],[printdoc]---
@local(p,q,r,m),
@pk("{scroll-lock}"),
@setdrive("a:"),@pk("{in}"),
@setselection("tabl.fw3"),@pk("{return}{scroll-lock}"),
@setselection("printdoc.fw3"),@pk("{return}{scroll-lock}"),
@pk("{out}{return}{scroll-lock}"),
;---Фильтрация базы данных---
q:="@not(@isnumeric([N АВ]))",@setformula(base,q),
@setselection("base"),@pk("{F5}"),@beep,
p:=@inputline("Введите номер интересующего вас отдела"),m:=p,
q:="@not([Отдел]<>"&p&")",@setformula(base,q),
@setselection("base"),@pk("{F5}"),
;---Определение количества записей в отфильтрованой БД---
p:=7,@pk("{ins}{home}"),
@while(p>0,
@list(@pk("{dnarrow}"),p:=p-1)),
@pk("{esc}"),
@setselection("base"),@pk("{in}"),
@pk("{ins}{return}{return}"),p:=99,@put(base,1,p),
@setformula(base,@sort(base.[ N],#ascend)),@base,
@pk("{out}{return}"),@pk("{ins}{home}{dnarrow}{esc}"),
@setselection("base"),@reset(base,1),p:=@get(base,1),
q:=0,
@while(@not(p=99),
@list(q:=q+1,@next(base),p:=@get(base,1))),
@reset(base,1),@put(base,12,q),@reset(base,2),
@put(base,12,m),
p:=@get(base,1),
@while(@not(p=99),
@list(@next(base),p:=@get(base,1))),
@pk("{in}{del}{out}{return}"),
;---Переход к программе формирования выходного документа-
@printdoc,
PRINTDOC.FW3
;***Программа формирования выходного документа в таблице [tabl]***
@local(p,q,n,i,r,f,m),
;---Ввод из [base] в [tabl] номера отдела---
@reset(base,2),m:=@get(base,12),@reset(tabl,5,3),
@put(tabl,m),
;---Ввод из [base] в [tabl] исходных данных---
; N, Название, Инв.N, Перв.ст., Фам.мат.отв.
@reset(base,1),p:=@get(base,12),q:=7,
@while(p>0,
@list(n:=@get(base,2),i:=@get(base,4),
r:=@get(base,5),f:=@get(base,11),
@reset(tabl,1,q),@put(tabl,q-6),
@reset(tabl,2,q),@put(tabl,n),
@reset(tabl,3,q),@put(tabl,i),
@reset(tabl,4,q),@put(tabl,r),
@reset(tabl,5,q),@put(tabl,f),
@next(base),q:=q+1,p:=p-1)),
;---Вывод на экран таблицы [tabl]---
@setselection("tabl"),@position("tabl",1,1,60,15),
@pk("{return}"),
;---Ввод в таблицу [tabl] значения Итого:---
@reset(base,1),p:=@get(base,12),n:=q+1,
q:=p+7,r:="Итого:",@reset(tabl,1,q),@put(tabl,r),
p:=@integer(p+6),r:="@sum(tabl.d7:tabl.d"&p&")",
q:=@integer(q),i:="@setformula(tabl.d"&q&","&r&")",
@setformula(tabl,i),@tabl,@pk("{in}{F5}"),
;---Ввод в таблицу даты---
@reset(tabl,1,n),p:="Дата: ",@put(tabl,p),
@reset(tabl,3,n),p:=@inputline("Введите дату"),
@put(tabl,p),@pk("{out}"),
;---Возврат в меню: [Документ]---
@return(p)
;---Завершение формирования выходного документа---
@pk("{ins}{leftarrow}{esc}"),
@beep,
@prompt("Справка сформирована",30),
@nextkey(5),
@eraseprompt
MAINMENU.[Печать]:
;---Подготовка принтера к печати---
@prompt("Подготовте принтер, нажмите RETURN.")
@nextkey,
@eraseprompt,
;---Печать выходного документа---
@local(p),
@pk("{ins}"),p:=7,
@while(p>0,
@list(@pk("{rightarrow}"),p:=p-1)),
@pk("{home}{return}"),
;---Завершение печати выходного документа---
@pk("{ins}"),p:=7,
@while(p>0,
@list(@pk("{leftarrow}"),p:=p-1)),
@pk("{esc}")
MAINMENU.[Выход]:
;---Удаление фреймов [base], [tabl], [printdoc]---
@delete("base"),
@delete("tabl"),
@delete("printdoc"),
;---Выход из меню---
@eraseprompt,
@prompt("Спасибо за работу!",30),
@beep,
@nextkey(5),
@quitmenu,
@eraseprompt
RESUME.FW3
@resume
TABL.FW3
С П Р А В К А
------------------
О наличии средств, в отделе N
------------------------------------------------------
N Название Инв.N Перв.ст. Фам.мат.отв.
------------------------------------------------------
Инструкция по пользованию программой:
READ.ME
mainmenu.fw3 - Файл с меню пользователя.
base.fw3 - Исходная база данных.
printdoc.fw3 - Программа формирования выходного документа.
tabl.fw3 - Шаблон выходного документа в таблице.
resume.fw3 - Служебный файл.
read.me - Данная инструкция.
Для выполнения задачи необходимо войти в пакет Радуга, установить дискету с курсовой работой в дисковод А, загрузить фрейм с именем a:\mainmenu.fw3 и нажать F5.
Образцы выдаваемых справок:
С П Р А В К А
------------------
О наличии средств, в отделе N 4
------------------------------------------------------
N Название Инв.N Перв.ст. Фам.мат.отв.
------------------------------------------------------
1 Принтер 1748 34000 Кутузов А.А
2 Компьютер 2458 507000 Медведев Д.В.
Итого: 541000
Дата: 17.05.94
С П Р А В К А
------------------
О наличии средств, в отделе N 8
------------------------------------------------------
N Название Инв.N Перв.ст. Фам.мат.отв.
------------------------------------------------------
1 АТС 22587 898800 Шамин С.В.
2 Телекс 1109 500000 Петров Н.О.
Итого: 1398800
Дата: 17.05.94
С П Р А В К А
------------------
О наличии средств, в отделе N 3
------------------------------------------------------
N Название Инв.N Перв.ст. Фам.мат.отв.
------------------------------------------------------
1 Компьютер 1007 900300 Разумовский О.Р.
2 Ксерокс 2367 431000 Григорьева С.В.
3 Телефоны 4376 95680 Нагария А.С.
4 Ксерокс 4643 987999 Аганин Ю.В.
5 Плоттер 6350 289700 Поганин М.Д.
Итого: 2704679
Дата: 17.05.94
ЛИТЕРАТУРА: В.В.Евтеев, А.М.Махонько "Методические указания к самостоятельной работе студентов по дисциплине "ЭВМ и программирование". Раздел "Алгоритмический язык ФРЕД"."