Министерство общего и профессионального образования
Российской Федерации
Дагестанский государственный технический университет
Кафедра информационных систем в экономике
КУРСОВОЙ ПРОЕКТ
По дисциплине БД
На тему: «Учет товаров в фирме по продаже аудиотехники»
Тема курсового проекта: СПРАВОЧНИК “АУДИО-КИОСК”
Датаготовности проекта “ ” 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,79IN 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,77IN 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 INWINDOW 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 MainMenuACTIVATE POPUP DataPopup
ON SELECTION PAD SearchMenu OF MainMenuACTIVATE POPUP SearchPopup
ON SELECTION PAD FiltrMenu OF MainMenuACTIVATE POPUP FiltrPopup
ON SELECTION PAD QuitMenu OF MainMenuACTIVATE POPUP QuitPopup
DEFINE POPUP DataPopup FROM 1,0 IN WINDOWMainWindow COLOR SCHEME 10
DEFINE BAR 1 OF DataPopup PROMPT 'Просмотрданных';
MESSAGE 'Просмотр данных без внесения изменений'
DEFINE BAR 2 OF DataPopup PROMPT 'Редактированиеданных';
MESSAGE 'Просмотр данных с возможностью изменения данных'
ON SELECTION POPUP DataPopup DO BrowseDataWITH 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 WINDOWMainWindow 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 DOSearchProc
DEFINE POPUP FiltrPopup FROM 1,15 IN WINDOWMainWindow 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 WINDOWMainWindow COLOR SCHEME 10
DEFINE BAR 1 OF QuitPopup PROMPT '\
DEFINE BAR 2 OF QuitPopup PROMPT 'Выходв Ms-Dos'
ON SELECTION POPUP QuitPopup DO EndProcWITH 2
ACTIVATE WINDOW MainWindow
ACTIVATE MENU MainMenu
DO EndProc WITH 1
PROCEDURE Titul
SET CURSOR OFF
DEFINE WINDOW TitleWindow FROM 0,0 TO 24,79DOUBLE
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 TO12,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 TO12,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. Четвериков В.Н, Ревунков Г.И., Самохволов Э.Н. Базы ибанки данных.