Учет товаров в фирме по продаже аудиотехники

2



Министерство общего и профессионального образования

Российской Федерации

Дагестанский государственный технический университет

Кафедра информационных систем в экономике











КУРСОВОЙ ПРОЕКТ

По дисциплине БД

На тему: "Учет товаров в фирме по продаже аудиотехники"

Тема курсового проекта: СПРАВОЧНИК “АУДИО-КИОСК”











Дата готовности проекта “ ” 2003г. 

Студент Курбанов Ш.М. группы 3164/

Руководитель проекта /Махулова Э.М. 

Защищен “ ” 2003г. с оценкой 













МАХАЧКАЛА

2003 г. 


Требования к программе: подобрать поля для БД: название фильма, тип носитель, продолжительность, качество, цена, код поставщика, жанр, главный артист, код фильма. Поиск по 3 полям БД,, фильтрацию по 4 полям БД, вывод списка на устройство РС. 

Краткие теоретические комментарии к объекту исследования. 

Слова “видео”, “аудиозал”, прочно вошли в жизнь современного человека с 70-х гг., отражая появление, по мнению искусствоведов, нового пласта современной культуры –видео культуры. 

Конечно, понятия и термины со словом “видео” использовались намного раньше в телевидении, например “видеосигнал”, “видеоусилитель” и другие, но тогда в “видео” вкладывался несколько иной смысл, нежели сейчас. 

Кроме видеозаписи (на магнитных лентах, дисках, на видеопластинках) в технику входит видеопоказ (на мониторах, с помощью видеопроекторов, видеопанелей), а также получение видеосигнала(“натурального” с помощью видеокамер или синтезированного электронными устройствами), его преобразование и обработка при монтаже, записи и воспроизведении и для достижения определенных эффектов. 

До настоящего времени в мире наблюдался количественный рост видео, хотя очень трудно его оценить из-за недостаточности данных. 

Инфологическая модель. 

Для проектирования структуры БД необходима исходная информация о предметной области. Информация требуемая для проектирования БД мало зависит от СУБД. 

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

Инфологическая модель предметной области строится первой, после строится датологическая и физическая модели БД. 

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

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

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

Для описания инфологической используются языки описательного типа и языки, так и графические средства в настоящее время приобретают все большую популярность. Существует ряд средств автоматизации проектирования, для которых исходные данные представляются в виде совокупности графических схем. Графическое представление является наиболее простым для восприятия. 

При описании предметной области надо отразить связи между объектом и характеризующими его свойствоми. 

Построение инфологической модели.

Рассмотрим полученные базы данных. 

БД1 "видео" (video. dbf) 

Название товара (nazvan_f) –character(40) 

Тип носителя (tip_nosit) – character(3) 

Продолжительность (prodol) –character(10) 

Название поставщика (nazv_post) – character (25) 

Качество (kachestvo) – character (18) 

Цена (zena) – numeric (3,0) 

Код поставщика (kod_post) – numeric (3,0) 

Жанр (janr) – character (15) 

Главный артист (gl_artist) – character (27)



Жанр

Код фильма

Адрес поставщика

Телефон поставка

Главный артист

ФИЛЬМ

Название фильма

Продолжительность

Тип носитель

Качество

Код поставщика

Название поставка

Код поставщика

Тип носитель

Название носителя

Код фильма (kod_f) – character(3) 

БД2 "Тип носителя" (nosit. dbf) 

Тип носителя (tip_nosit) – character(3) 

Назв-е носителя (nom) – character (15) 

БД3 "Код поставщика" (post. dbf) 

Код поставщика (kod_post) – numeric (3,0) 

Название Телефон поставщика (telefon_post) – character (20) 

Адрес поставщика (adres_post) – character (15) 



ДАТОЛОГИЧЕСКАЯ МОДЕЛЬ БД. 



Датологическая модель является моделью логического уровня и представляет собой отображение логических связей между элементами данных безотносительно к их содержанию и среде хранения. Эта модель строится в терминах информационных единиц, допустимых в той конкретной СУБД, в среде которой мы проектируем базу данных. 

Этап создания датологической модели называется датологическим проектированием. Описание логической структуры базы данных на языке СУБД называется схемой. 



ПО

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

Инфологическая модель

Датологическая модель

анализ

Физическая модель

анализ

БД



ПРОГРАММЫ

SET TALK OFF

SET DATE GERMAN

CLEAR ALL

SET DELETED ON

SET ESCAPE OFF

SET HELP OFF

SET BELL OFF

CLEAR MACROS

ON KEY 

*DO Titul

CLOSE DATABASES

DELETE FILE video. idx

DELETE FILE nosit. idx

DELETE FILE post. idx

USE video

INDEX ON tip_nosit TO video COMPACT

USE nosit

INDEX ON tip_nosit TO nosit COMPACT

USE post

INDEX ON kod_post TO post COMPACT

USE video IN A INDEX video

USE nosit IN B INDEX nosit

USE post IN C INDEX post

SELECT A

SET RELATION TO tip_nosit INTO B

SET RELATION TO kod_post INTO C

ON KEY LABEL Ctrl+PgUp GO TOP

ON KEY LABEL Ctrl+PgDn GO BOTTOM

ON KEY LABEL Ctrl+Q DO EndProc WITH 1

DEFINE WINDOW MainWindow FROM 0,0 TO 24,79 IN SCREEN; 

TITLE ' Справочник "ВИДЕО КИОСК" '; 

DOUBLE SHADOW FILL '-' COLOR GR+/N

DEFINE WINDOW ViewWindow FROM 0,0 TO 21,77; 

IN WINDOW MainWindow; 

DOUBLE CLOSE FLOAT GROW ZOOM

DEFINE WINDOW HintWindow FROM 22,0 TO 22,77 IN WINDOW MainWindow; 

NONE COLOR GR+/GR

DEFINE WINDOW HelpWindow FROM 5,17 TO 16,63; 

TITLE ' ПОМОЩЬ ' COLOR W+/G

DEFINE WINDOW PrintWindow FROM 5,8 TO 19,67; 

TITLE 'Вывод на устройство PC'; 

DOUBLE SHADOW COLOR GR+/GR

DEFINE WINDOW AddWindow FROM 3,13 TO 18,67; 

TITLE ' Дополнение базы данных '; 

FLOAT SHADOW SYSTEM COLOR SCHEME 8

DEFINE WINDOW FindWindow FROM 5,13 TO 19,70; 

TITLE 'Информация о фильме' DOUBLE

SET MESSAGE WINDOW MainWindow

DEFINE MENU MainMenu BAR AT LINE 0 IN WINDOW MainWindow; 

COLOR SCHEME 10

DEFINE PAD DataMenu OF MainMenu PROMPT 'ДАННЫЕ'; 

MESSAGE 'Работа с базами данных'

DEFINE PAD SearchMenu OF MainMenu PROMPT 'ПОИСК'; 

MESSAGE 'Поиск данных по ключу'

DEFINE PAD FiltrMenu OF MainMenu PROMPT 'ФИЛЬТРАЦИЯ'; 

MESSAGE 'Фильтр просмотра данных'

DEFINE PAD QuitMenu OF MainMenu PROMPT 'ВЫХОД'; 

MESSAGE 'Выход из программы'

ON SELECTION PAD DataMenu OF MainMenu ACTIVATE POPUP DataPopup

ON SELECTION PAD SearchMenu OF MainMenu ACTIVATE POPUP SearchPopup

ON SELECTION PAD FiltrMenu OF MainMenu ACTIVATE POPUP FiltrPopup

ON SELECTION PAD QuitMenu OF MainMenu ACTIVATE POPUP QuitPopup

DEFINE POPUP DataPopup FROM 1,0 IN WINDOW MainWindow COLOR SCHEME 10

DEFINE BAR 1 OF DataPopup PROMPT 'Просмотр данных'; 

MESSAGE 'Просмотр данных без внесения изменений'

DEFINE BAR 2 OF DataPopup PROMPT 'Редактирование данных'; 

MESSAGE 'Просмотр данных с возможностью изменения данных'

ON SELECTION POPUP DataPopup DO BrowseData WITH BAR() 

DEFINE POPUP PrintPopup FROM 8,32; 

TITLE 'Вывод данных' IN SCREEN COLOR SCHEME 10

DEFINE BAR 1 OF PrintPopup PROMPT 'На экран'; 

MESSAGE 'Вывод данных на экран'

DEFINE BAR 2 OF PrintPopup PROMPT 'В файл'; 

MESSAGE 'Вывод данных в файл'

DEFINE BAR 3 OF PrintPopup PROMPT 'На принтер'; 

MESSAGE 'Вывод данных на принтер' 

ON SELECTION POPUP PrintPopup DO Print

DEFINE POPUP SearchPopup FROM 1,8 IN WINDOW MainWindow COLOR SCHEME 10

DEFINE BAR 1 OF SearchPopup PROMPT 'по названию фильма'; 

MESSAGE 'Поиск данных по названию фильма'

DEFINE BAR 2 OF SearchPopup PROMPT 'по типу'; 

MESSAGE 'Поиск данных по типу'

DEFINE BAR 3 OF SearchPopup PROMPT 'по коду'; 

MESSAGE 'Поиск данных по коду' 

ON SELECTION POPUP SearchPopup DO SearchProc

DEFINE POPUP FiltrPopup FROM 1,15 IN WINDOW MainWindow COLOR SCHEME 10

DEFINE BAR 1 OF FiltrPopup PROMPT 'по названию фильма'; 

MESSAGE 'Фильтрация данных по названию фильма'

DEFINE BAR 2 OF FiltrPopup PROMPT 'по типу'; 

MESSAGE 'Фильтрация данных по типу'

DEFINE BAR 3 OF FiltrPopup PROMPT 'по коду'; 

MESSAGE 'Фильтрация данных по коду' 

DEFINE BAR 4 OF FiltrPopup PROMPT 'по качеству'; 

MESSAGE 'Фильтрация данных по качеству' 

ON SELECTION POPUP FiltrPopup DO FiltrProc

DEFINE POPUP QuitPopup FROM 1,27 IN WINDOW MainWindow COLOR SCHEME 10

DEFINE BAR 1 OF QuitPopup PROMPT '\<Выход в FoxPro'

DEFINE BAR 2 OF QuitPopup PROMPT 'Выход в Ms-Dos'

ON SELECTION POPUP QuitPopup DO EndProc WITH 2

ACTIVATE WINDOW MainWindow

ACTIVATE MENU MainMenu

DO EndProc WITH 1

PROCEDURE Titul

SET CURSOR OFF

DEFINE WINDOW TitleWindow FROM 0,0 TO 24,79 DOUBLE

ACTIVATE WINDOW TitleWindow

TEXT

ENDTEXT

Key=INKEY(20) 

RELEASE WINDOW TitleWindow

RETURN

PROCEDURE PrintRec

? ' '

? 'Название фильма: ',A. nazv_f

? 'Тип носителя: ',A. tip_nosit 

? 'Название носителя: ',B. nazv_nosit 

? 'Продолжительность: ',A. prodol 

? 'Качество: ',A. kachestvo 

? 'Цена: ',A. zena 

? 'Код поставщика: ',A. kod_post

? 'Название поставщика: ',C. nazv_post 

? 'Адрес поставщика: ',C. adres_post

? 'Телефон поставщика: ',C. telef_post 

? 'Жанр: ',A. janr 

? 'Главный артист: ',A. gl_artist 

? 'Код фильма: ',A. kod_f 

RETURN

PROCEDURE Print

SET CURSOR OFF

y=BAR() 

ACTIVATE WINDOW PrintWindow

DO CASE

CASE y=1

SCAN

Do PrintRec

WAIT 'Любая клавиша - Продолжить, Esc - ОТКАЗ' WINDOW

IF LASTKEY() =27 

EXIT

ENDIF

ENDSCAN 

CASE y=2

WAIT 'Данные записываются в файл INFO. DAT Любая клавиша - ЗАПИСЬ, Esc - ОТКАЗ' WINDOW

IF LASTKEY() #27 

SET PRINTER TO info. dat ADDITIVE

SET PRINTER ON

SCAN

Do PrintRec

ENDSCAN 

SET PRINTER OFF

ENDIF

CASE y=3

SET PRINTER TO LPT1 

IF PRINTSTATUS() 

SET PRINTER ON 

SCAN

Do PrintRec

ENDSCAN 

SET PRINTER OFF

ELSE

WAIT 'Принтер не готов' WINDOW NOWAIT

ENDIF

ENDCASE

DEACTIVATE WINDOW PrintWindow

DEACTIVATE POPUP

RETURN

PROCEDURE AddRec

PUSH KEY CLEAR

SET CURSOR ON

ACTIVATE WINDOW AddWindow

@ 1,1 TO 11,51

SCATTER MEMVAR BLANK

@2,2 SAY 'НАЗВАНИЕ ФИЛЬМА: ' GET m. nazv_f DEFAULT SPACE(20) 

@3,2 SAY 'ТИП НОСИТЕЛЯ: ' GET m. tip_nosit PICTURE '999'

@4,2 SAY 'ПРОДОЛЖИТЕЛЬНОСТЬ: ' GET m. prodol DEFAULT SPACE(12) 

@5,2 SAY 'КАЧЕСТВО: ' GET m. kachestvo DEFAULT SPACE(18) 

@6,2 SAY 'ЦЕНА: ' GET m. zena

@7,2 SAY 'КОД ПОСТАВЩИКА: ' GET m. kod_post PICTURE '999'

@8,2 SAY 'ЖАНР: ' GET m. janr DEFAULT SPACE(15) 

@9,2 SAY 'ГЛАВНЫЙ АРТИСТ: ' GET m. gl_artist DEFAULT SPACE(17) 

@10,2 SAY 'КОД ФИЛЬМА: ' GET m. kod_f PICTURE '999'

@12,14 GET choice FUNCTION '*th \! Добавить; \? Выход' DEFAULT 2 SIZE 1,10,6

READ CYCLE MODAL

IF choice=1

APPEND BLANK

GATHER MEMVAR 

ENDIF 

DEACTIVATE WINDOW AddWindow 

ENDIF 

POP KEY

RETURN

FUNCTION Refresh

SHOW GETS OFF

RETURN

FUNCTION PopShow

@ 12,3 SAY VideoArray(FocKlub) SIZE 1,36

RETURN

PROCEDURE DelRec

WAIT 'Вы действительно хотите удалить запись? (ДА-любая клавиша, НЕТ-ESC) ? ' WINDOW

IF LASTKEY() #27

POP KEY

DELETE

PACK

DO BrowseData WITH 2

ENDIF

RETURN

PROCEDURE Help

PUSH KEY CLEAR

SET CURSOR OFF

ACTIVATE WINDOW HelpWindow

TEXT

^N - дополнение базы новой записью

^D - удаление текущей записи 

^P - вывод/печать всех записей

--------------------------------------------

^PgUp - переход в начало базы

^PgDn - переход в конец базы

--------------------------------------------

^Q - выход из окна редактирования 

(внесенная информация сохраняется) 

Esc - то же, но информация не сохраняется

ENDTEXT

WAIT ''

DEACTIVATE WINDOW HelpWindow

SET CURSOR ON 

POP KEY

RETURN

FUNCTION Hlp

SET CURSOR OFF

@ 0,0 FILL TO 0,77 COLOR GR/GR

Hint=''

DO CASE 

CASE VARREAD() ='Nazvan_f'

Hint='Название фильма'

CASE VARREAD() ='Tip_nosit'

Hint='Тип носитель'

CASE VARREAD() ='Prodol'

Hint='Продолжительность'

CASE VARREAD() ='Kachestvo'

Hint='Качество'

CASE VARREAD() ='Zena'

Hint='Цена'

CASE VARREAD() ='Kod_post'

Hint='Код поставщика'

CASE VARREAD() ='Janr'

Hint='Жанр'

CASE VARREAD() ='Gl_artist'

Hint='Главный артист' 

CASE VARREAD() ='Kod_f'

Hint='Код фильма'

ENDCASE

@0,(78-LEN(Hint)) /2 SAY Hint

RETURN

PROCEDURE BrowseData

PARAMETER y

DO CASE

CASE BAR() =1. OR. y=1

TitleStr='БАЗА ДАННЫХ'

STR1='NOAPPEND NODELETE NOMODIFY'

CASE BAR() =2. OR. y=2

PUSH KEY

ON KEY LABEL Ctrl+N DO AddRec

ON KEY LABEL Ctrl+D DO DelRec

ON KEY LABEL Ctrl+P ACTIVATE POPUP PrintPopup 

ON KEY LABEL F1 DO Help

TitleStr='F1 - Вызов окна помощи РЕДАКТИРОВАНИЕ '

STR1=''

ENDCASE 

ACTIVATE WINDOW HintWindow

GO TOP

BROWSE TITLE TitleStr; 

FIELDS A. nazv_f: H='Название фильма': W=Hlp(),; 

A. tip_nosit: H='Тип носителя': W=Hlp(),; 

B. nazv_nosit: H='Название носителя': R: W=Hlp(),; 

A. prodol: H='Продолжительность': W=Hlp(),; 

A. kachestvo: H='Качество': W=Hlp(),; 

A. zena: H='Цена': W=Hlp(),; 

A. kod_post: H='Код поставщика': W=Hlp(),; 

C. nazv_post: H='Название поставщика': R: W=Hlp(),; 

C. adres_post: H='Адрес поставщика': R: W=Hlp(),; 

C. telef_post: H='Телефон поставщика': R: W=Hlp(),; 

A. janr: H='Жанр': W=Hlp(),; 

A. gl_artist: H='Главный артист': W=Hlp(),; 

A. kod_f: H='Код фильма': W=Hlp(); 

WINDOW ViewWindow &STR1 COLOR GR+/N

DO CASE

CASE BAR() =1. OR. y=1

SET FILTER TO

CASE BAR() =1. OR. y=2

POP KEY

ENDCASE 

DEACTIVATE WINDOW HintWindow 

DEACTIVATE POPUP

RETURN

PROCEDURE SearchProc

SET CURSOR ON

y=BAR() 

str=PROMPT() 

DEFINE WINDOW SearchWindow FROM 7,20 TO 12,60; 

TITLE 'Поиск '+ str

ACTIVATE WINDOW SearchWindow

@ 1,1 SAY 'Укажите ключ: '

DO CASE

CASE y=1

@ 1,15 GET a DEFAULT SPACE(20) 

CASE y=2

@ 1,15 GET a DEFAULT SPACE(3) 

CASE y=3

@ 1,15 GET a PICTURE '999' DEFAULT 0

ENDCASE

@3,11 GET choice FUNCTION '*th \! Поиск; \? Выход' DEFAULT 2 SIZE 1,7,4

READ CYCLE

RELEASE WINDOW SearchWindow

SET CURSOR OFF

IF choice=1

ACTIVATE WINDOW FindWindow

IF y=1. OR. y=2 

a=Zag(ALLTRIM(a),. f) 

ENDIF 

IsFind=. F. 

Find=. F. 

SCAN

DO CASE

CASE y=1

Find=Zag(ALLTRIM(A. nazv_f),. f) =a 

CASE y=2

Find=A. tip_nosit=a

CASE y=3

Find=A. kod_post=a

ENDCASE

IF Find

IsFind=. T. 

? 'Название фильма: ',A. nazv_f

? 'Тип носителя: ',A. tip_nosit 

? 'Название носителя: ',B. nazv_nosit 

? 'Продолжительность: ',A. prodol 

? 'Качество: ',A. kachestvo 

? 'Цена: ',A. zena 

? 'Код поставщика: ',A. kod_post

? 'Название поставщика: ',C. nazv_post 

? 'Адрес поставщика: ',C. adres_post

? 'Телефон поставщика: ',C. telef_post 

? 'Жанр: ',A. janr 

? 'Главный артист: ',A. gl_artist 

? 'Код фильма: ',A. kod_f 

WAIT 'Продолжить поиск? (ДА - любая клавища, НЕТ - ESC) ' WINDOW

IF LASTKEY() =27

EXIT

ENDIF 

ENDIF

ENDSCAN

IF! IsFind

WAIT 'ПОИСК НЕ УДАЧНЫЙ' WINDOW

ENDIF

DEACTIVATE WINDOW FindWindow

ENDIF

DEACTIVATE POPUP SearchPopup

RETURN

PROCEDURE FiltrProc

SET CURSOR ON

y=BAR() 

str=PROMPT() 

DEFINE WINDOW FiltrWindow FROM 7,20 TO 12,60; 

TITLE 'Фильтрация '+ str

ACTIVATE WINDOW FiltrWindow

@ 1,1 SAY 'Укажите ключ: '

DO CASE

CASE y=1

@ 1,15 GET a DEFAULT SPACE(20) 

CASE y=2

@ 1,15 GET a DEFAULT SPACE(3) 

CASE y=3

@ 1,15 GET a PICTURE '999' DEFAULT 0

CASE y=4

@ 1,15 GET a DEFAULT SPACE(18) 

ENDCASE

@3,11 GET choice FUNCTION '*th \! Фильтр; \? Выход' DEFAULT 2 SIZE 1,6,4

READ CYCLE

DEACTIVATE WINDOW FiltrWindow

SET CURSOR OFF

IF choice=1

DO CASE

CASE y=1

SET FILTER TO a. nazv_f=alltrim(a) 

CASE y=2

SET FILTER TO a. tip_nosit=a

CASE y=3

SET FILTER TO a. kod_post=a

CASE y=4

SET FILTER TO a. kachestvo=alltrim(a) 

ENDCASE

DO BrowseData WITH 1 

ENDIF 

RETURN

FUNCTION Zag

PARAMETER p,k

PUSH KEY clear

s='абвгдежзийклмнопрстуфхцчшщыьъэюя'

z='АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЬЪЭЮЯ'

IF k

REPLACE &p WITH CHRTRAN(&p,s,z) 

ELSE

POP KEY

RETURN CHRTRAN(p,s,z) 

ENDIF

POP KEY

RETURN

PROCEDURE EndProc

PARAMETER y

DO CASE

CASE BAR() =1. OR. y=1

ON KEY

SET HELP ON

SET RELATION TO

SET FILTER TO 

DEACTIVATE WINDOW ALL

DEACTIVATE MENU

DEACTIVATE POPUP

CLEAR ALL

CANCEL

CASE BAR() =2. OR. y=2

QUIT

ENDCASE

POP KEY

CLOSE DATABASES

RETURN




Список использованной литературы



1. Четвериков В.Н, Ревунков Г.И., Самохволов Э.Н. Базы и банки данных.