Реферат: По решению прикладных задач на языке 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


ЛИТЕРАТУРА: В.В.Евтеев, А.М.Махонько "Методические указания к самостоятельной работе студентов по дисциплине "ЭВМ и программирование". Раздел "Алгоритмический язык ФРЕД"."