.

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

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

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

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

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

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

по ку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 ” > ОСНОВНОЕ МЕНЮ < "setcolor("w/b+,gr+/bg")aadd(amenu,"Перечень товаров")aadd(amenu,"Добавление товаров в перечень")aadd(amenu,"Выход")k=Vichis(amenu)return k/*------------------------------------------------------------------*//* Вычисление координат рамки и окна меню *//*------------------------------------------------------------------*/Func Vichis(mnu)local i,l,k,k1,k2,k3,k4l:=0for i=1 to len(mnu)if lnaim)

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 <= 255 )// начало редактирования с нажатия клавишиkeyboard Chr(K_RETURN) + Chr(nKey)endIFendCASESetCursor(0)enddoRestScreen(0, 0, 24, 79, cScrSave)return 0/********************************************************************//*------------------------------------------------------------------*//* Поиск товаров *//*------------------------------------------------------------------*//********************************************************************/PROC Poisk()local k,savewinlocal pnaim,pgod,potdel,pcenalocal GetList:=local amenu:=memvar maspol,redakt,sezlocal ntop:=3,nleft:=01,nbottom:=maxrow()-2,nright:=maxcol()-1local cs0,ipol,nom,rec0,colp,sv,cvv,cvg,key,ilocal cscrsave:=savescreen(0,0,24,79),oldscreenlocal stolb1,ob,nkey,rec,nreclocal selfield naim,datag,otdel,cenaprivate maspol:=,redakt:=aadd(amenu,"Наименование")aadd(amenu,"Срок годности")aadd(amenu,"Отдел")aadd(amenu,"Цена")k=Vichis(amenu)savewin=SaveScreen(0,0,24,79)pnaim:=" "if k=1while .t.setcolor("gr+/b,")@ 7,10 say " Введите наименование товара "@ 7,45 get pnaimreadRestScreen(0,0,24,79,savewin)if lastkey()=K_ENTERexitendifenddoclose all/* УСТАНОВКИ */set cursor offset deleted on/* Открываем базу */use (".DBFtovar") newset filter to naim=pnaimgo topset color to +N/Wclsfor i:=0 to [email protected] i,00 say repl("-",80)nextsetcolor ("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/BGsetcolor("B/BG,N/W")@ nTop-1, nLeft-1 CLEAR TO nBottom+1, [email protected] 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=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 )skipif ( Eof() )nCount++exitendifnCount++enddoelseif ( nRequest < 0 )// назад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(‘*** -> РАСПРЕДЕЛЕНИЕ ТОВАРОВ В МАГАЗИНЕ <- ***',80,' ')for i=0 to maxcol()for j=0 to [email protected] i,j say ('*')@ maxrow(),i say ('*')@ i,maxcol()-j say ('*')[email protected] maxrow(),0 say ('****')return/*------------------------------------------------------------------*//* Текст для helpa (принятые сокращения) *//*------------------------------------------------------------------*/Proc TextHelp1()local k,isetcolor("w+/b,")@ 5,9 to 21,[email protected] 6,k say ""+space(61)setcolor("r+/b,")@ 7,k say " Краткая справка "@ 8,k say ""+space(61)setcolor("w+/b,")@ 9,k say " Данная программа может служить для упрощения работы "@ 10,k say " в крупных магазинах, по распределению и учету продо- "@ 11,k say " вольственных товаров. "@ 12,k say " "@ 13,k say " Горячие клавиши: "@ 14,k say " F3 - возможность поиска товаров, по одному из 4-х критериев"@ 15,k say " F4 - редактирование перечня имеющихся товаров "@ 16,k say " F9 - возврат в основное меню "@ 17,k say " ESC - выход в DOS "for i=18 to [email protected] i,k say ""+space(61)nextsetcolor("gr+/b,")@ 20,k+45 say "F10 - Очистить"return3. Документирование.1) Инструкция пользвателя.2) Общие правила работы с программой.Для работы с программой необходимо наличие файла kurs.exe в любом из каталогов жесткого диска, атак же наличие директории DBF с соответствующими файлами в этом же каталоге диска. Для запуска программы необходимо запустить файл kurs.exe. После этого пользователь попадает в главное меню программы, которое состоит из пунктов:- Перечень товаров, он может просмотреть весь перечень това-ров , имеющихся в асортименте магазина, отредактироватьили внести новую информацию.- Добавление товаров в перечень. Этот пункт позволяет вноситьновые и убирать старые или проданные товары.-Выход. Служит для выхода из программы в DOS.2) Подготовка исходных данных.При подготовке исходных данных удобно свести всю входную информацию в таблицу, напоминающую структуру базы данных. Вначале выписываются наименование товара, затем цена, срок годности, отдел, количество товара, качество товара, адрес изготовителя.3.1.3 Корректировка информации.Передвижение по пунктам всех меню и по таблицам осуществляется при помощи клавиш управления курсором и клавиш PageUp и PageDown. Для редактирования/ввода полей необходимо переместиться на поле,которое необходимо отредактировать/ввести и нажать клавишу Enter. Завершение редактирования/ввода осуществляется при помощи той же клавиши.2) Инструкция программисту.1) Требования программы к ОЗУ и HDD.Требования разработанной программы к ОЗУ и HDD в значительной степени определяются структурой самой программы. Исходя из этого было установлено, что для нормальной работы программы необходимо наличие не менне 350 кб свободной основной памяти и не менее 200 кб свободного дискового пространства.2) Требования к техническим средствам.Данная программа успешно была протестирована на ЭВМ типа IBM 386DX . Для нормальной работы программы желательно наличие Pentium 100.3) Настройка системных установок.Данная программа не отличается особыми требованиями к системным установкам. Она лишь требует установки переменной окружения ДОС FILES не менне 30 и наличия русификатора для обеспечения возможности ввода информации.4)?

Нашли опечатку? Выделите и нажмите CTRL+Enter

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

Оставить комментарий

avatar
  Подписаться  
Уведомление о
Заказать реферат
UkrReferat.com. Всі права захищені. 2000-2019