.

Организация баз данных Паспортный стол

Язык: русский
Формат: реферат
Тип документа: Word Doc
64 1300
Скачать документ

Министерство образования Украины

Криворожский технический университет

Кафедра моделирования и программного обеспечения

КУРСОВАЯ РАБОТА

по ку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

Похожие документы
Обсуждение

Ответить

Курсовые, Дипломы, Рефераты на заказ в кратчайшие сроки
Заказать реферат!
UkrReferat.com. Всі права захищені. 2000-2020