Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Организация баз данных

Работа добавлена на сайт samzan.net: 2015-07-05

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 18.5.2024

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

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

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

                                                                 

                                                                 

                                                                 

                                                                 

                                                                 

                                                                 

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

по куpсу

"Организация баз данных".

                                                                 

                                                                 

                                                                 

                                                                 

                                                                 

Выполнил: ст. группы ПЗОТ-97

Вишневый Р.И.                   

                                                                 

Принял: преподаватель

Смолянский П. С.           

                                                        

                                                                 

                                                                 

                                                                 

                                                                 

                                                                 

                                                                

Кривой Рог

2000 г.

 

Содержание

1. Техническое задание.

   1.1 Описание объекта ................................................................

   1.2 Формулирование требований к программе .....................

описание входной информации и входных

     документов............................................................................

2. Технический проект.

Описание структуры баз и индексов, которые исполь-   

      зуются для них, а так же назначение и типы полей

      всех баз ................................................................................

Описание назначения всех глобальных переменных ....

Функциональная блок-схема взаимодействия про-

      граммных модулей .............................................................

Текст программы ................................................................

3. Документирование.

Инструкция пользователя ..................................................

Общие правила работы с программой ...................

Подготовка исходных данных ................................

Корректировка информации ....................................

Инструкция программисту...................................................

Требования программы к ОЗУ и HDD .....................

Требования к техническим средствам ......................

Требования по настройке системных установок ....

1. Техническое задание.

Описание объекта.

В настоящее время компьютеры получили широкое распространение во всех сферах деятельности человека. Создание и обработка баз данных - одна из широчайших областей применения ЭВМ. Они дают возможность  накапливать огромное количество информации, производить ее сортировку и выборку по различным признакам, производить формирование различного рода списков и таблиц, что позволяет существенно облегчить и ускорить труд людей по выполнению данных операций. Одна из задач такого типа - «Распределение и учет продовольственных товаров», представляющая собой проблемы учета и сортировки различных продовольственных товаров в магазинах данного типа. В данной области возникает необходимость быстрого получения информации как об отдельных еденицах товара, так и о целых отделах, в которых сгрупированы товары по качественым признакам.

Для решения этой задачи является целесообразным применение баз данных и средств их обработки.

 1.2 Формулирование требований к программе.

 

Формулирование требований к программному обеспечению, разрабатываемому для решения данной задачи , можно свести к следующим критериям:

- разрабатываемая программа должна обеспечивать быстрое и

 удобное получение информации, иметь простой и интуитивно

 понятный интерфейс.

- пользователь должен иметь возможность ввода новой инфор-

 мации, корректировки и просмотра уже имеющейся.

- необходимо обеспечить возможность поиска информации в  

 базе данных по каким либо критериям.

- структура используемой базы данных должна быть подобрана

 оптимально.

- программа должна обеспечить восстановление баз данных

 при повреждении файлов баз.

Описание входной информации и входных

      документов.

Входная информация для данной задачи представляет собой данные о продовольственных товарах в специализиролванных магазинах.

Таким образом в данной программе учтены основные параметры, которыми могут обладать товары данного вида, такие как цена товаров, представленная в условных еденицах; наименованеие товаров, однозначно определяющее товар; срок годности, определяющий возможность продажи товаров; отдел, который собирает в себе товары одного вида, например, если взять хлебный отдел, то в нем собраны все хлебо-булочные товары; количество товаров, т. е. если товар продается поштучно, то это количество определяется в абсолютных еденицах, если же, товар продается на развес, то это масса товара в килограммах; качество товаров, в какой-то мере зависит от цены товара, или вернее даже определяет ее; адрес изготовителя, адрес фирмы или завода изготовителя готовой продукции, поставляемой в продовольственный магазин.

 2. Технический проект.

Описание структуры баз и индексов, которые

      используются для них, а так же назначение и

      типы полей всех баз.

На основе описания входной информации и требований, сформулированных к программе можно создать следующую структуру базы данных tovar.dbf

 Наименование 

 Тип

 Ширина

 Назначение

NAIM

Character

35

 Наименование товара

DATAG

Date

8

 Срок годности товара

OTDEL

Character

20

 Название отдела

KOL

Numeric

4

 Количество товаров

KACH

Character

10

 Качество товара

ADRES

Character

100

 Адрес изготовителя

CENA

Numeric

3

 Цена товара

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,k4

 l:=0

 for i=1 to len(mnu)

   if l<len(mnu[i])

        l:=len(mnu[i])

   endif

 next

 k1:=int((maxrow()-len(mnu))/2)

 k2:=int((maxcol()-l)/2)

 k3:=k1+len(mnu)-1

 k4:=k2+l

 k:=1

 k=MenuRam(mnu,k1,k2,k3,k4,k)

return k

/*------------------------------------------------------------------*/

/*  Организвция меню с рамкой       */

/*------------------------------------------------------------------*/

Func MenuRam(a,n1,n2,n3,n4,i)

 local k,a1:=savescreen(n1-1,n2-2,n3+1,n4+1)

 local i1,j1

 setcolor('g+/n+')

 @ n1-1,n2-2,n3+1,n4+1 box "г=¬¦-=L¦ "

 setcolor('w/n+,gr+/rb+,,,n/n+')

 k:=achoice(n1,n2,n3,n4-1,a,,,i,)

 restscreen(n1-1,n2-2,n3+1,n4+1,a1)

return k

/*------------------------------------------------------------------*/

/*                Выбор пункта меню для заданного сезона            */

/*------------------------------------------------------------------*/

Func Obrab(n)

 local select

     if n=1

       select=Perech()

     elseif n=2

       select=NewTovar(1)

     elseif n=3

       setcolor("w/n")

       cls

       return 0

    endif

return select

/*------------------------------------------------------------------*/

/*                  Перечень товаров в магазине                     */

/*------------------------------------------------------------------*/

Func Perech()

 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 k,sel

 field sezon_i

 private maspol:={},redakt:={}

/* УСТАНОВКИ */

 set cursor off

 set deleted on

/*   Открываем базу    */

 use (".\DBF\tovar")  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

 setcolor ("r/b+")

 @ 00,00 say padc("Перечень товаров магазина №1 ",80," ")

 @ 24,00 say ""+space(2)+"F1"+space(15)+"F3"+space(12)+"F4"+space(19)+"F9"+space(13)+"ESC"+space(10)

 setcolor ("gr+/b+")

 @ 24,4  say "-Помощь"

 @ 24,21 say "-Поиск"

 @ 24,35 say "-Редактировать"

 @ 24,56 say "-Возврат"

 @ 24,72 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

 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 (".\DBF\tovar") 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)

         endIF

  endCASE

  SetCursor(0)

enddo

RestScreen(0, 0, 24, 79, cScrSave)

return 0

/********************************************************************/

/*------------------------------------------------------------------*/

/*                      Поиск товаров               */

/*------------------------------------------------------------------*/

/********************************************************************/

PROC Poisk()

local k,savewin

local pnaim,pgod,potdel,pcena

local GetList:={}

local amenu:={}

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 sel

 field naim,datag,otdel,cena

 private maspol:={},redakt:={}

aadd(amenu,"Наименование")

aadd(amenu,"Срок годности")

aadd(amenu,"Отдел")

 aadd(amenu,"Цена")

k=Vichis(amenu)

savewin=SaveScreen(0,0,24,79)

pnaim:="                         "

if k=1

    while .t.

      setcolor("gr+/b,")

      @ 7,10 say " Введите наименование товара "

      @ 7,45 get pnaim

      read

      RestScreen(0,0,24,79,savewin)

      if lastkey()=K_ENTER

           exit

      endif

    enddo

    close all

/* УСТАНОВКИ */

 set cursor off

 set deleted on

/*   Открываем базу    */

 use (".\DBF\tovar")  new

 set filter to naim=pnaim

 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=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 (".\DBF\tovar")  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 (".\DBF\tovar")  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 (".\DBF\tovar")  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

       if ( Eof() )

         nCount++

         exit

       endif

       nCount++

     enddo

   elseif ( 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 1

   @ i,j say ('*')

   @ maxrow(),i say ('*')

   @ i,maxcol()-j say ('*')

  next

 next

 @ maxrow(),0 say ('****')

return

/*------------------------------------------------------------------*/

/*                Текст для helpa (принятые сокращения)             */

/*------------------------------------------------------------------*/

Proc TextHelp1()

 local k,i   

    setcolor("w+/b,")

    @ 5,9 to 21,71

    k=10

    @ 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 20

      @ i,k say ""+space(61)

    next

    setcolor("gr+/b,")

    @ 20,k+45 say "F10 - Очистить"

return

3. Документирование.

Инструкция пользвателя.

Общие правила работы с программой.

Для работы с программой необходимо наличие файла kurs.exe в любом из каталогов жесткого диска, атак же наличие директории DBF с соответствующими файлами в этом же каталоге диска. Для запуска программы необходимо запустить файл kurs.exe. После этого пользователь попадает в главное меню программы, которое состоит из пунктов:

- Перечень товаров, он может просмотреть весь перечень това-

 ров , имеющихся в асортименте магазина, отредактировать  

 или внести новую информацию.

- Добавление товаров в перечень. Этот пункт позволяет вносить

 новые и убирать старые или проданные товары.

-Выход. Служит для выхода из программы в DOS.

Подготовка исходных данных.

При подготовке исходных данных удобно свести всю входную информацию в таблицу, напоминающую структуру базы данных. Вначале выписываются наименование товара, затем цена, срок годности, отдел, количество товара, качество товара, адрес изготовителя.

3.1.3 Корректировка информации.

Передвижение по пунктам всех меню и по таблицам осуществляется при помощи клавиш управления курсором и клавиш PageUp и PageDown. Для редактирования/ввода полей необходимо переместиться на поле,которое необходимо отредактировать/ввести и нажать клавишу Enter. Завершение редактирования/ввода осуществляется при помощи той же клавиши.

Инструкция программисту.

Требования программы к ОЗУ и HDD.

Требования разработанной программы к ОЗУ и HDD в значительной степени определяются структурой самой программы. Исходя из этого  было установлено, что для нормальной работы программы необходимо наличие не менне 350 кб свободной основной памяти и не менее 200 кб свободного дискового пространства.

Требования к техническим средствам.

Данная программа успешно была протестирована на ЭВМ типа IBM 386DX . Для нормальной работы программы желательно наличие Pentium 100.

Настройка системных установок.

Данная программа не отличается особыми требованиями к системным установкам. Она лишь требует установки переменной окружения ДОС FILES не менне 30 и наличия русификатора для обеспечения возможности ввода информации.




1. Компьютерные вирусы и антивирусы
2. питання.Сукупність загальних і спеціальних способів роботи що дає змогу максимально використовувати цінні
3. реферату- Сутність юридичної особиРозділ- Правознавство Сутність юридичної особи Тривалий час сутність ю
4. Введение Актуальность исследования
5. вариантов решения проблем цивилизованные методы межгосударственного общения
6. Сущность инструментария анализа инвестиционных проектов
7. Мир мультимедиа технологий Срок реализации программы ~ 3 года Возраст детей 1114 лет
8. тема- ’ 11 ВОЗБУЖДЕНИЕ УГОЛОВНОГО ДЕЛА.html
9. Напоминание о выборе лучшего ответа ~ на почту присылать сообщение о том чтобы чел выбрал ответ через 3 дня
10. КОНСПЕКТ ЛЕКЦИЙ ПО КУРСУ ТЕОРИЯ ЭЛЕКТРИЧЕСКОЙ СВЯЗИ
11. Иностранные заимствования в лексике английского языка
12. химических свойств газов
13. Решение обыкновенных дифференциальных уравнений
14. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата юридичних наук Київ 2001 Дисерта
15. . Нормативные правовые акты АПК РФ Арбитражный процессуальный кодекс Российской Федерации от 24
16. тематичних наук Київ 2004 Дисертація є рукопис Робота виконана в Інститут
17. МАКІЇВСЬКЕ ПЕДАГОГІЧНЕ УЧИЛИЩЕ Освітньокваліфікаційний рівень- мол
18. Могилянської Академії КиєвоМогилянська академія була першим вищим навчальним закладом що відповідав з
19. 1 Постановка задачи оптимальной фильтрации В общем случае задача фильтрации формулируется следующим
20.  Методы отбора персонала- Предварительная отборочная беседа