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

Применение баз данных и средств их обработки для распределения и учета товаров. Формулирование основных требований к программе, входные документы. Обзор структуры баз и индексов, назначение полей. Программный код и техническая документация баз данных.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 01.09.2010
Размер файла 16,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

по курсу: "Организация баз данных"

Содержание

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

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

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

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

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

2.1 Описание структуры баз и индексов, которые используются для них, а так же назначение и типы полей всех баз

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ѕ пользователь должен иметь возможность ввода новой информации, корректировки и просмотра уже имеющейся.

ѕ необходимо обеспечить возможность поиска информации в базе данных по каким либо критериям.

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

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

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

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

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

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

2.1 Описание структуры баз и индексов, которые используются для них, а так же назначение и типы полей всех баз

На основе описания входной информации и требований, сформулированных к программе можно создать следующую структуру базы данных 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.Документирование

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Подобные документы

  • Формы представляемой информации. Основные типы используемой модели данных. Уровни информационных процессов. Поиск информации и поиск данных. Сетевое хранилище данных. Проблемы разработки и сопровождения хранилищ данных. Технологии обработки данных.

    лекция [15,5 K], добавлен 19.08.2013

  • Минимизация количества операций ввода-вывода данных как цель упорядочения расположения данных на диске (структуры хранения), используемые в данном процессе методы. Принципы обработки файлов. Назначение индексов и индексирования. Техники хеширования.

    реферат [22,7 K], добавлен 21.06.2016

  • Изучение понятия баз данных - набора специальным образом организованных, хранящихся вместе данных, относящихся к определенному роду или кругу деятельности. СУБД – комплекс программных и языковых средств для создания, редактирования и ведения баз данных.

    презентация [4,3 M], добавлен 21.02.2011

  • Принципы построения и основные компоненты хранилищ данных, общая характеристика основных требований к ним по Р. Кинболлу. Понятие и виды баз данных. Методика проектирования комплекса задач автоматизации учета по счету 02 "Амортизация основных средств".

    контрольная работа [27,8 K], добавлен 12.11.2010

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

    курсовая работа [2,1 M], добавлен 16.02.2015

  • Разработка структурной схемы организации данных в информационной системе с описанием всех полей. Анализ требований к программному изделию, к параметрам технических средств, документации. Исследование методов сортировки данных, руководства программиста.

    курсовая работа [5,4 M], добавлен 03.04.2012

  • Автоматизированные базы данных в учебном процессе. Создание базы данных для МОУ СОШ № 12 с целью помощи в обеспечении централизованного управления, хранения информации об учениках. Требования к программе, условия эксплуатации. Программный код базы данных.

    дипломная работа [2,0 M], добавлен 25.03.2014

  • Назначение и область применения базы данных "Филателист". Описание предметной области, предполагаемые пользователи и цель проекта. Входные и выходные документы и сообщения. Реализация базы данных в среде MS Access 2007. Руководство пользователя.

    курсовая работа [1,6 M], добавлен 20.03.2017

  • Назначение разработанных программных средств. Визуализации иклинометрии и каротажа. Изучение структуры баз данных, используемых в приложении. Встроенные типы данных Oracle и описание разработанных методов. Взаимодействие пользователя с экранной формой.

    курсовая работа [1,1 M], добавлен 14.08.2014

  • Распределенная обработка данных. Двухуровневые модели распределения основных функций. Применение модели сервера приложений и баз данных. Основные пути распараллеливания запросов. Общая характеристика программных средств подготовки табличных документов.

    отчет по практике [52,6 K], добавлен 30.09.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.