Министерство образования Украины
Криворожский технический университет
Кафедра моделирования и программного обеспечения
КУРСОВАЯ РАБОТА
по куpсу
“Организация баз данных”.
Выполнил: ст. группы ПЗОТ-97
Вишневый Р.И.
Принял: преподаватель
Смолянский П. С.
Кривой Рог
2000 г.
Содержание
1. Техническое задание.
1.1 Описание объекта
……………………………………………………….
1.2 Формулирование требований к программе …………………
3) описание входной информации и входных
документов……………………………………………………..
…………..
2. Технический проект.
1) Описание структуры баз и индексов, которые исполь-
зуются для них, а так же назначение и типы полей
всех баз
………………………………………………………………
……..
2) Описание назначения всех глобальных переменных ….
3) Функциональная блок-схема взаимодействия про-
граммных модулей
…………………………………………………….
4) Текст программы
……………………………………………………….
3. Документирование.
1) Инструкция пользователя
…………………………………………..
2) Общие правила работы с программой ……………….
3) Подготовка исходных данных …………………………..
4) Корректировка информации ………………………………
2) Инструкция
программисту……………………………………………
1) Требования программы к ОЗУ и HDD …………………
2) Требования к техническим средствам ………………….
3) Требования по настройке системных установок ….
1. Техническое задание.
1) Описание объекта.
В настоящее время компьютеры получили широкое распространение во всех
сферах деятельности человека. Создание и обработка баз данных – одна из
широчайших областей применения ЭВМ. Они дают возможность накапливать
огромное количество информации, производить ее сортировку и выборку по
различным признакам, производить формирование различного рода списков и
таблиц, что позволяет существенно облегчить и ускорить труд людей по
выполнению данных операций. Одна из задач такого типа – «Распределение и
учет продовольственных товаров», представляющая собой проблемы учета и
сортировки различных продовольственных товаров в магазинах данного типа.
В данной области возникает необходимость быстрого получения информации
как об отдельных еденицах товара, так и о целых отделах, в которых
сгрупированы товары по качественым признакам.
Для решения этой задачи является целесообразным применение баз данных и
средств их обработки.
1.2 Формулирование требований к программе.
Формулирование требований к программному обеспечению, разрабатываемому
для решения данной задачи , можно свести к следующим критериям:
– разрабатываемая программа должна обеспечивать быстрое и
удобное получение информации, иметь простой и интуитивно
понятный интерфейс.
– пользователь должен иметь возможность ввода новой инфор-
мации, корректировки и просмотра уже имеющейся.
– необходимо обеспечить возможность поиска информации в
базе данных по каким либо критериям.
– структура используемой базы данных должна быть подобрана
оптимально.
– программа должна обеспечить восстановление баз данных
при повреждении файлов баз.
3) Описание входной информации и входных
документов.
Входная информация для данной задачи представляет собой данные о
продовольственных товарах в специализиролванных магазинах.
Таким образом в данной программе учтены основные параметры, которыми
могут обладать товары данного вида, такие как цена товаров,
представленная в условных еденицах; наименованеие товаров, однозначно
определяющее товар; срок годности, определяющий возможность продажи
товаров; отдел, который собирает в себе товары одного вида, например,
если взять хлебный отдел, то в нем собраны все хлебо-булочные товары;
количество товаров, т. е. если товар продается поштучно, то это
количество определяется в абсолютных еденицах, если же, товар продается
на развес, то это масса товара в килограммах; качество товаров, в
какой-то мере зависит от цены товара, или вернее даже определяет ее;
адрес изготовителя, адрес фирмы или завода изготовителя готовой
продукции, поставляемой в продовольственный магазин.
2. Технический проект.
1) Описание структуры баз и индексов, которые
используются для них, а так же назначение и
типы полей всех баз.
На основе описания входной информации и требований, сформулированных к
программе можно создать следующую структуру базы данных tovar.dbf
Наименование Тип Ширина НазначениеNAIMCharacter35 Наименование
товараDATAGDate8 Срок годности товараOTDELCharacter20 Название
отделаKOLNumeric4 Количество товаровKACHCharacter10 Качество
товараADRESCharacter100 Адрес изготовителяCENANumeric3 Цена товара
2.2 Описание назначения всех глобальных
переменных.
В данной программе глобальные переменные отсутсвуют, так как при вызове
всех подпрограмм все необходимые параметры передаются по иерархии
процедур вглубь.
2.3 Функциональная блок-схема взаимодействия
программных модулей.
Данная блок-схема отражает взаимодействие отдельных программных частей
основной программы. Она показывает последовательность вызова одних
процедур и функций другими. Основой всей программы служит главное меню,
из которого вызываются все остальные программные модули, реализованные
как отдельные независимые процедуры. Те, в свою очередь вызывают свои
другие вложенные независимые процедуры и функции. При вызове всех
подпрограмм все необходимые параметры передаются по иерархии процедур
вглубь, поэтому глобальные переменные не используются. Такое их
построение позволяет упростить отслеживание значений переменных и
избежать ошибок, связанных с возможностью изменения значений глобальных
переменных из разных программных модулей, а так же сделать их
независимыми и более универсальными.
2.4 Текст программы.
#include “inkey.ch”
#include “fileio.ch”
/*——————————————————————*/
/* Основная программа */
/*——————————————————————*/
PROC Main
local k,n
local select,select0:=10
do while select0=10
Fon()
select0=Menu0()
if lastkey()=K_ESC .or. select0=3
Ochis()
exit
endif
select=Obrab(select0)
select0=select
enddo
Ochis()
RETURN
/*——————————————————————*/
/* Организация основного меню */
/*——————————————————————*/
Func Menu0
local i,l,k,k1,k2,k3,k4
local sezd,yy,sty,sty1,savewin
local GetList:=
local amenu:=
local sezon:=
memvar sez
setcolor(‘gr+/b,’)
@ 7,30 say ” > ОСНОВНОЕ МЕНЮ naim)
STOLB1:HEADING=” Наименование”
OB:ADDCOLUMN(STOLB1)
aadd(maspol,”naim”)
AADD(REDAKT,.T.)
stolb1:=tbcolumnnew(“Цена”,||tovar->cena)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”cena”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Срок годности”,||tovar->datag)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”datag”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(” Отдел”,||tovar->otdel)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”otdel”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Количество товара”,||tovar->kol)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”kol”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Качество товара”,||tovar->kach)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”kach”)
aadd(redakt,.t.)
STOLB1:=(TBCOLUMNNEW(” Адрес изготовителя”,||tovar->adres))
STOLB1:COLORBLOCK:=||5,3
OB:ADDCOLUMN(STOLB1)
aadd(maspol,”adres”)
AADD(REDAKT,.T.)
ob:freeze:=1
while ( !oB:stabilize() ) ; end
while .T.
NKEY:=0
WHILE NKEY=0.AND.!OB:STABLE
oB:stabilize()
NKEY:=INKEY()
ENDDO
IF OB:STABLE
NKEY:=INKEY(0)
*OB:ROWPOS:=3
*OB:COLPOS++
*OB:NTOP+=1
OB:HITTOP=.F.
ENDIF
IF NKEY=K_ESC
EXIT
ENDIF
if nkey=K_F1
oldscreen:=SaveScreen(0,0,24,79)
setcolor(“n/n,”)
for i=6 to 22
@ i,11 say “”+space(63)
next
TextHelp1()
endif
if nkey=K_F3
Poisk()
endif
if nkey=K_F10
RestScreen(0,0,24,79,oldscreen)
endif
if nkey=K_F9
close all
return 10
endif
COLP:=OB:COLPOS
DO CASE
case nKey = K_DOWN
oB:down()
case nkey=K_UP
oB:up()
case ( nKey == K_PGDN )
ob:gobottom()
case ( nKey == K_PGUP )
ob:gotop()
case ( nKey == K_RIGHT )
oB:right()
case ( nKey == K_LEFT )
oB:left()
case ( nKey == K_HOME )
oB:home()
case ( nKey == K_END )
oB:end()
case ( nKey == K_F4 )
close all
sel=NewTovar(2)
if sel=10
sel=Perech()
if sel=10
close all
return 10
endif
elseif sel=11
exit
endif
endCASE
endDO
RestScreen(0, 0, 24, 79, cScrSave)
RETURN 0
/*——————————————————————*/
/* Редактирование базы данных перечня товаров */
/*——————————————————————*/
Func NewTovar(vp)
memvar maspol,redakt,sez
local ntop:=3,nleft:=01,nbottom:=maxrow()-2,nright:=maxcol()-1
local cs0,ipol,nom,rec0,colp,sv,cvv,cvg,key,i
local cscrsave:=savescreen(0,0,24,79),oldscreen
local stolb1,ob,nkey,rec,nrec
local in,k,kn,string,maskom:=
field sezon_i
private maspol:=,redakt:=
/* УСТАНОВКИ */
set cursor on
set deleted on
/* Открываем базу */
use (“.DBFtovar”) new
// set filter to sezon_i=sez
// go top
set color to +N/W
cls
for i:=0 to 24
@ i,00 say repl(“-“,80)
next
/* set color to B/BG */
setcolor (“r/b+”)
if vp=1
@ 00,00 say padc(“Добавление товаров в перечень “,80,” “)
elseif vp=2
@ 00,00 say padc(“Редактирование перечня товаров”,80,” “)
endif
@ 24,00 say “”+space(2)+”F1-Помощь”+space(11)+”F3-поиск
товаров”+space(9)+”F9-Возврат”+space(12)+”ESC-Выход”+space(2)+””
set color to N/BG
setcolor(“B/BG,N/W”)
@ nTop-1, nLeft-1 CLEAR TO nBottom+1, nRight+1
@ nTop-1, nLeft-1, nBottom+1, nRight+1 box “г=¬¦-=L¦”
@ nTop+1, nLeft-1 SAY “¦”
@ nTop+1, nRight+1 SAY “¦”
// Создание TBrowse-объекта для базы данных
ob := TBrowseDB(nTop , nLeft , nBottom+1 , nRight )
ob:headSep := “T-”
ob:footsep:=”¦=”
ob:colsep=”¦”
ob:skipBlock := |x| Skipped(x,1)
ob:colorSpec:=”B/BG,N/W,+R/BW,G/WR,W+/GB,B/GR”
STOLB1:=TBCOLUMNNEW(“”,||tovar->naim)
STOLB1:HEADING=” Наименование”
OB:ADDCOLUMN(STOLB1)
aadd(maspol,”naim”)
AADD(REDAKT,.T.)
stolb1:=tbcolumnnew(“Цена”,||tovar->cena)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”cena”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Срок годности”,||tovar->datag)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”datag”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(” Отдел”,||tovar->otdel)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”otdel”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(” Количество товара”,||tovar->kol)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”kol”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Качество товара”,||tovar->kach)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”kach”)
aadd(redakt,.t.)
STOLB1:=(TBCOLUMNNEW(” Адрес изготовителя”,||tovar->adres))
STOLB1:COLORBLOCK:=||5,3
OB:ADDCOLUMN(STOLB1)
aadd(maspol,”adres”)
AADD(REDAKT,.T.)
ob:freeze:=1
while ( !oB:stabilize() ) ; end
while .T.
NKEY:=0
WHILE NKEY=0.AND.!OB:STABLE
oB:stabilize()
NKEY:=INKEY()
ENDDO
IF OB:STABLE
NKEY:=INKEY(0)
*OB:ROWPOS:=3
*OB:COLPOS++
*OB:NTOP+=1
OB:HITTOP=.F.
ENDIF
IF NKEY=K_ESC
return 11
EXIT
ENDIF
if nkey=K_F1
oldscreen:=SaveScreen(0,0,24,79)
setcolor(“n/n,”)
for i=6 to 22
@ i,11 say “”+space(63)
next
TextHelp1()
endif
if nkey=K_F10
RestScreen(0,0,24,79,oldscreen)
endif
if nkey=K_F3
Poisk()
endif
if nkey=K_F9
close all
return 10
endif
COLP:=OB:COLPOS
DO CASE
case nKey = K_DOWN
oB:down()
case nkey=K_UP
oB:up()
case ( nKey == K_PGDN )
ob:gobottom()
case ( nKey == K_PGUP )
ob:gotop()
case ( nKey == K_RIGHT )
oB:right()
case ( nKey == K_LEFT )
oB:left()
case ( nKey == K_HOME )
oB:home()
case ( nKey == K_END )
oB:end()
case ( nKey == K_RETURN )
DoGet(oB)
oB:refreshAll()
while ( !oB:stabilize() ) ; end
oB:right()
otherwise
if ( nKey >= 32 .and. nKey naim)
STOLB1:HEADING=” Наименование”
OB:ADDCOLUMN(STOLB1)
aadd(maspol,”naim”)
AADD(REDAKT,.T.)
stolb1:=tbcolumnnew(“Цена”,||tovar->cena)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”cena”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Срок годности”,||tovar->datag)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”datag”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(” Отдел”,||tovar->otdel)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”otdel”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Количество товара”,||tovar->kol)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”kol”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Качество товара”,||tovar->kach)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”kach”)
aadd(redakt,.t.)
STOLB1:=(TBCOLUMNNEW(” Адрес изготовителя”,||tovar->adres))
STOLB1:COLORBLOCK:=||5,3
OB:ADDCOLUMN(STOLB1)
aadd(maspol,”adres”)
AADD(REDAKT,.T.)
ob:freeze:=1
while ( !oB:stabilize() ) ; end
while .T.
NKEY:=0
WHILE NKEY=0.AND.!OB:STABLE
oB:stabilize()
NKEY:=INKEY()
ENDDO
IF OB:STABLE
NKEY:=INKEY(0)
*OB:ROWPOS:=3
*OB:COLPOS++
*OB:NTOP+=1
OB:HITTOP=.F.
ENDIF
IF NKEY=K_ESC
EXIT
ENDIF
COLP:=OB:COLPOS
DO CASE
case nKey = K_DOWN
oB:down()
case nkey=K_UP
oB:up()
case ( nKey == K_PGDN )
ob:gobottom()
case ( nKey == K_PGUP )
ob:gotop()
case ( nKey == K_RIGHT )
oB:right()
case ( nKey == K_LEFT )
oB:left()
case ( nKey == K_HOME )
oB:home()
case ( nKey == K_END )
oB:end()
endCASE
endDO
RestScreen(0, 0, 24, 79, cScrSave)
elseif k=2
pgod=tovar->datag
while .t.
setcolor(“gr+/b,”)
@ 7,10 say ” Введите срок годности товара ”
@ 7,45 get pgod
read
RestScreen(0,0,24,79,savewin)
if lastkey()=K_ENTER
exit
endif
enddo
close all
/* УСТАНОВКИ */
set cursor off
set deleted on
/* Открываем базу */
use (“.DBFtovar”) new
set filter to datag=pgod
go top
set color to +N/W
cls
for i:=0 to 24
@ i,00 say repl(“-“,80)
next
setcolor (“r/b+”)
@ 00,00 say padc(“Перечень найденных товаров”,80,” “)
@ 24,00 say “”+space(62)+”ESC”+space(20)
setcolor (“gr+/b+”)
@ 24,65 say “-Возврат”
set color to N/BG
setcolor(“B/BG,N/W”)
@ nTop-1, nLeft-1 CLEAR TO nBottom+1, nRight+1
@ nTop-1, nLeft-1, nBottom+1, nRight+1 box “г=¬¦-=L¦”
@ nTop+1, nLeft-1 SAY “¦”
@ nTop+1, nRight+1 SAY “¦”
// Создание TBrowse-объекта для базы данных
ob := TBrowseDB(nTop , nLeft , nBottom+1 , nRight )
ob:headSep := “T-”
ob:footsep:=”¦=”
ob:colsep=”¦”
ob:skipBlock := |x| Skipped(x,0)
ob:colorSpec:=”B/BG,N/W,+R/BW,G/WR,W+/GB,B/GR”
STOLB1:=TBCOLUMNNEW(“”,||tovar->naim)
STOLB1:HEADING=” Наименование”
OB:ADDCOLUMN(STOLB1)
aadd(maspol,”naim”)
AADD(REDAKT,.T.)
stolb1:=tbcolumnnew(“Цена”,||tovar->cena)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”cena”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Срок годности”,||tovar->datag)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”datag”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(” Отдел”,||tovar->otdel)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”otdel”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Количество товара”,||tovar->kol)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”kol”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Качество товара”,||tovar->kach)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”kach”)
aadd(redakt,.t.)
STOLB1:=(TBCOLUMNNEW(” Адрес изготовителя”,||tovar->adres))
STOLB1:COLORBLOCK:=||5,3
OB:ADDCOLUMN(STOLB1)
aadd(maspol,”adres”)
AADD(REDAKT,.T.)
ob:freeze:=1
while ( !oB:stabilize() ) ; end
while .T.
NKEY:=0
WHILE NKEY=0.AND.!OB:STABLE
oB:stabilize()
NKEY:=INKEY()
ENDDO
IF OB:STABLE
NKEY:=INKEY(0)
*OB:ROWPOS:=3
*OB:COLPOS++
*OB:NTOP+=1
OB:HITTOP=.F.
ENDIF
IF NKEY=K_ESC
EXIT
ENDIF
COLP:=OB:COLPOS
DO CASE
case nKey = K_DOWN
oB:down()
case nkey=K_UP
oB:up()
case ( nKey == K_PGDN )
ob:gobottom()
case ( nKey == K_PGUP )
ob:gotop()
case ( nKey == K_RIGHT )
oB:right()
case ( nKey == K_LEFT )
oB:left()
case ( nKey == K_HOME )
oB:home()
case ( nKey == K_END )
oB:end()
endCASE
endDO
RestScreen(0, 0, 24, 79, cScrSave)
elseif k=3
potdel=tovar->otdel
while .t.
setcolor(“gr+/b,”)
@ 7,10 say ” Введите отдел ”
@ 7,45 get potdel
read
RestScreen(0,0,24,79,savewin)
if lastkey()=K_ENTER
exit
endif
enddo
close all
/* УСТАНОВКИ */
set cursor off
set deleted on
/* Открываем базу */
use (“.DBFtovar”) new
set filter to otdel=potdel
go top
set color to +N/W
cls
for i:=0 to 24
@ i,00 say repl(“-“,80)
next
setcolor (“r/b+”)
@ 00,00 say padc(“Перечень найденных товаров”,80,” “)
@ 24,00 say “”+space(62)+”ESC”+space(20)
setcolor (“gr+/b+”)
@ 24,65 say “-Возврат”
set color to N/BG
setcolor(“B/BG,N/W”)
@ nTop-1, nLeft-1 CLEAR TO nBottom+1, nRight+1
@ nTop-1, nLeft-1, nBottom+1, nRight+1 box “г=¬¦-=L¦”
@ nTop+1, nLeft-1 SAY “¦”
@ nTop+1, nRight+1 SAY “¦”
// Создание TBrowse-объекта для базы данных
ob := TBrowseDB(nTop , nLeft , nBottom+1 , nRight )
ob:headSep := “T-”
ob:footsep:=”¦=”
ob:colsep=”¦”
ob:skipBlock := |x| Skipped(x,0)
ob:colorSpec:=”B/BG,N/W,+R/BW,G/WR,W+/GB,B/GR”
STOLB1:=TBCOLUMNNEW(“”,||tovar->naim)
STOLB1:HEADING=” Наименование”
OB:ADDCOLUMN(STOLB1)
aadd(maspol,”naim”)
AADD(REDAKT,.T.)
stolb1:=tbcolumnnew(“Цена”,||tovar->cena)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”cena”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Срок годности”,||tovar->datag)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”datag”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(” Отдел”,||tovar->otdel)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”otdel”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Количество товара”,||tovar->kol)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”kol”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Качество товара”,||tovar->kach)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”kach”)
aadd(redakt,.t.)
STOLB1:=(TBCOLUMNNEW(” Адрес изготовителя”,||tovar->adres))
STOLB1:COLORBLOCK:=||5,3
OB:ADDCOLUMN(STOLB1)
aadd(maspol,”adres”)
AADD(REDAKT,.T.)
ob:freeze:=1
while ( !oB:stabilize() ) ; end
while .T.
NKEY:=0
WHILE NKEY=0.AND.!OB:STABLE
oB:stabilize()
NKEY:=INKEY()
ENDDO
IF OB:STABLE
NKEY:=INKEY(0)
*OB:ROWPOS:=3
*OB:COLPOS++
*OB:NTOP+=1
OB:HITTOP=.F.
ENDIF
IF NKEY=K_ESC
EXIT
ENDIF
COLP:=OB:COLPOS
DO CASE
case nKey = K_DOWN
oB:down()
case nkey=K_UP
oB:up()
case ( nKey == K_PGDN )
ob:gobottom()
case ( nKey == K_PGUP )
ob:gotop()
case ( nKey == K_RIGHT )
oB:right()
case ( nKey == K_LEFT )
oB:left()
case ( nKey == K_HOME )
oB:home()
case ( nKey == K_END )
oB:end()
endCASE
endDO
RestScreen(0, 0, 24, 79, cScrSave)
elseif k=4
pcena=tovar->cena
while .t.
setcolor(“gr+/b,”)
@ 7,10 say ” Введите цену ”
@ 7,45 get pcena
read
RestScreen(0,0,24,79,savewin)
if lastkey()=K_ENTER
exit
endif
enddo
close all
/* УСТАНОВКИ */
set cursor off
set deleted on
/* Открываем базу */
use (“.DBFtovar”) new
set filter to cena=pcena
go top
set color to +N/W
cls
for i:=0 to 24
@ i,00 say repl(“-“,80)
next
setcolor (“r/b+”)
@ 00,00 say padc(“Перечень найденных товаров”,80,” “)
@ 24,00 say “”+space(62)+”ESC”+space(20)
setcolor (“gr+/b+”)
@ 24,65 say “-Возврат”
set color to N/BG
setcolor(“B/BG,N/W”)
@ nTop-1, nLeft-1 CLEAR TO nBottom+1, nRight+1
@ nTop-1, nLeft-1, nBottom+1, nRight+1 box “г=¬¦-=L¦”
@ nTop+1, nLeft-1 SAY “¦”
@ nTop+1, nRight+1 SAY “¦”
// Создание TBrowse-объекта для базы данных
ob := TBrowseDB(nTop , nLeft , nBottom+1 , nRight )
ob:headSep := “T-”
ob:footsep:=”¦=”
ob:colsep=”¦”
ob:skipBlock := |x| Skipped(x,0)
ob:colorSpec:=”B/BG,N/W,+R/BW,G/WR,W+/GB,B/GR”
STOLB1:=TBCOLUMNNEW(“”,||tovar->naim)
STOLB1:HEADING=” Наименование”
OB:ADDCOLUMN(STOLB1)
aadd(maspol,”naim”)
AADD(REDAKT,.T.)
stolb1:=tbcolumnnew(“Цена”,||tovar->cena)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”cena”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Срок годности”,||tovar->datag)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”datag”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(” Отдел”,||tovar->otdel)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”otdel”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Количество товара”,||tovar->kol)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”kol”)
aadd(redakt,.t.)
stolb1:=tbcolumnnew(“Качество товара”,||tovar->kach)
stolb1:colorblock:=||5,3
ob:addcolumn(stolb1)
aadd(maspol,”kach”)
aadd(redakt,.t.)
STOLB1:=(TBCOLUMNNEW(” Адрес изготовителя”,||tovar->adres))
STOLB1:COLORBLOCK:=||5,3
OB:ADDCOLUMN(STOLB1)
aadd(maspol,”adres”)
AADD(REDAKT,.T.)
ob:freeze:=1
while ( !oB:stabilize() ) ; end
while .T.
NKEY:=0
WHILE NKEY=0.AND.!OB:STABLE
oB:stabilize()
NKEY:=INKEY()
ENDDO
IF OB:STABLE
NKEY:=INKEY(0)
*OB:ROWPOS:=3
*OB:COLPOS++
*OB:NTOP+=1
OB:HITTOP=.F.
ENDIF
IF NKEY=K_ESC
EXIT
ENDIF
COLP:=OB:COLPOS
DO CASE
case nKey = K_DOWN
oB:down()
case nkey=K_UP
oB:up()
case ( nKey == K_PGDN )
ob:gobottom()
case ( nKey == K_PGUP )
ob:gotop()
case ( nKey == K_RIGHT )
oB:right()
case ( nKey == K_LEFT )
oB:left()
case ( nKey == K_HOME )
oB:home()
case ( nKey == K_END )
oB:end()
endCASE
endDO
RestScreen(0, 0, 24, 79, cScrSave)
endif
RETURN
/*——————————————————————*/
/* Вспомогательная функция для работы с базой */
/*——————————————————————*/
Func DoGet(oB)
memvar maspol,redakt
local impol,ro,co,ipol,colp0,lins
local getlist:=,mgetvar,nkey,colp
while ( !oB:stabilize() ) ; end
colp:=OB:COLPOS
IF REDAKT[COLP]
LINS:=READINSERT(.T.)
IPOL:=MASPOL[COLP]
COLP0:=FIELDPOS(IPOL)
MGETVAR:=FIELDGET(COLP0)
RO:=ROW()
CO:=COL()
@ RO,CO GET MGETVAR
READ
if (Recno() == LastRec() + 1 )
APPEND BLANK
endif
FIELDPUT(COLP0,MGETVAR)
ENDIF
oB:refreshCurrent()
return NIL
/*——————————————————————*/
/* Вспомогательная функция для работы с базой */
/*——————————————————————*/
Func Skipped(nRequest,parametr)
local nCount
nCount := 0
if ( LastRec() != 0 )
if ( nRequest == 0 )
skip 0
elseif ( nRequest > 0 .and. Recno() != LastRec() + parametr)
// вперед
while ( nCount nRequest )
skip -1
if ( Bof() )
exit
end
nCount–
enddo
endif
endif
return (ncount)
/*——————————————————————*/
/* Очистка экрана */
/*——————————————————————*/
Proc Ochis()
setcolor(“w/n,”)
cls
return
/*——————————————————————*/
/* Основное фоновое изображение программы */
/*——————————————————————*/
Proc Fon()
local i,j
local mc:=”b/b”,”g/g”,”bg/bg”,”r/r”,”rb/rb”
cls
setcolor(‘b/g+’)
for i=1 to maxrow()-1
for j=1 to maxcol()-1
@ i,j say “-”
next
next
setcolor(‘gr+/rb’)
@ 0,0 say padc(‘*** -> РАСПРЕДЕЛЕНИЕ ТОВАРОВ В МАГАЗИНЕ
Нашли опечатку? Выделите и нажмите CTRL+Enter