Организация баз данных
Применение баз данных и средств их обработки для распределения и учета товаров. Формулирование основных требований к программе, входные документы. Обзор структуры баз и индексов, назначение полей. Программный код и техническая документация баз данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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