ЗМІСТ
1. Завдання. Лист
1.1. Опис предметної області.
1.2. Запити.
2. Таблиця атрибутів.
3. Діаграма ER-типу.
4. Спроектовані відносини.
5. Структура меню.
6. Лістинг меню.
7. Лістинг програм.
1.ЗАДАНІЕ.
1.1.Опісаніе предметної області.
База даних для обліку оплати за міжміські розмови.
На міжміського станції ведеться облік оплати за надані нею послуги. МТС реєструє номер телефону, з якого здійснюється міжміський зв'язок,
тривалість розмови у хвилинах, час і дату розмови, місто куди телефонував абонент.
Для тих, хто телефонує з 18:00 по 8:00 в робочі дні, у вихідні та святкові дні діє пільговий тариф.
Всі міста поділені по дальності на 7 зон.
Плата за розмову P обчислюється наступним чином:
P = K * t, де
- K-тариф зони
- P-тривалість розмови
1. Якщо не був внесений аванс, то береться відсоток за кредит P.
2. Якщо був внесений аванс, але сума P перевищила його, то оплата за кредит нараховується на суму перевищення.
3. Якщо оплата не внесена на протязі двох місяців, то телефон вимикається.
1.2.Запроси до завдання 4.
1. Виведіть прізвища абонентів, у яких борг перевищує
100000 рублів.
2. Відберіть абонентів, що дзвонили в зону № і мають аванс менше тарифу даної зони. № зони повинен вводитися користувачем.
3. Введіть № зони і назва місяця та отримайте дохід по цій зоні за даний місяць.
2.ТАБЛІЦА Атрибути.
Таблиця 1.
ім'я
тип
довжина
примітка
av
N
7
аванс
dolg
N
7
борг
data_v
Date
8
дата
n_t
C
8
№ телефону
n_z
N
1
№ зони
fio
C
20
П.І.Б.
tar
N
7
тариф
t
N
3
час розмови
data_raz
Date
8
дата розмови
br
C
5
час дня
3. ER-ДІАГРАМА.
4. Спроектований ВІДНОСИНИ
Abon Таблиця 2
FIO
N_t
ZONA Таблиця 3.
N_Z
Tar
Plata Таблиця 4.
AV
DOLG
DATA_V
N_T
N_Z
Razg Таблиця 5.
t
Br
Data-razg
N_z
N_t
5. СТРУКТУРА МЕНЮ
6. Лістинг МЕНЮ
Z 4.PRG
clear
set safe off
set talk off
close database
define menu ats bar at line 3
define pad x1 of ats prompt "запити 1-3"
define pad x2 of ats prompt "дані"
define pad x3 of ats prompt "вихід"
on pad x1 of ats activ popup xx1
on pad x2 of ats activ popup xx2
on pad x3 of ats quit
define popup xx1 from 4,1 to 11,11
define bar 1 of xx1 prompt "запит 1"
define bar 2 of xx1 prompt "запит 2"
define bar 3 of xx1 prompt "запит 3"
on sele bar 1 of xx1 do zapros1
on sele bar 2 of xx1 do zapros2
on sele bar 3 of xx1 do zapros3
define popup xx2 from 4,12 to 12,20
define bar 1 of xx2 prompt "абонент"
define bar 2 of xx2 prompt "плата"
define bar 3 of xx2 prompt "розмова"
define bar 4 of xx2 prompt "зона"
on sele popup xx2 do basa with bar ()
activ menu ats
deactiv menu ats
procedure basa
parameters k
close database
do case
case k = 1
use abon
browse
use
case k = 2
use mts
browse
use
case k = 3
use plata
browse
use
case k = 4
use razg
browse
use
case k = 5
use zona
browse
use
endcase
7. Лістинг ПРОГРАМ.
zapros1.prg
close database
use abon
use plata in 2
index on n_t to abon
sele 2
index on n_t to plata
sele 1
set rela to n_t into 2
set filter to b.dolg> 100000
brow fields a.fio, b.dolg
set rela to
set filter to
zapros2.prg
clear
set safe off
close database
set talk off
sele 1
use razg
index on n_z to k1
sele 2
use zona
index on n_z to k2
sele 1
set rela to n_z into 2
set skip to 2
c = date ()
@ 2,10 say "Введіть дату" get c
read
v = 0
@ 4,10 say "Введіть номер зони" get v
read
set filter to a.data_razg = c.and. b.n_z = v
browse fields a.data_razg, b.n_z, a.t, b.tar
X1 = a.T
X2 = b.Tar
h = a.T * b.tar
? h, a.n_t
set filter to
close database
zapros3.prg
clear
set safe off
close database
set talk off
sele 1
use razg
index on n_z to k1
sele 2
use zona
index on n_z to k2
sele 1
set rela to n_z into 2
set skip to 2
c = date ()
@ 2,10 say "Введіть дату" get c
read
v = 0
@ 4,10 say "Введіть номер зони" get v
read
set filter to a.data_razg = c.and. b.n_z = v
browse fields a.data_razg, b.n_z, a.t, b.tar
X1 = a.T
X2 = b.Tar
h = a.T * b.tar
? h, a.n_t
set filter to
close database