База данных 'Местная телефонной связь'
Содержание
Введение
. Разработка
базы данных
.1 Инфологическое
проектирование
1.2 Запросы
.3 Схема
данных
.4 Отчет
- квитанция
2. Разработка
программы
.1 Блок-схема
программы
2.2 Описание
интерфейса программы
Приложение
А
Введение
Прохождение практики осуществлялось на
Тираспольском филиале Московской академии экономики и права. В Тираспольском
филиале ведется обучение на юридическом факультете, экономическом факультете,
факультете прикладной информатики, факультете повышения квалификации и
профессиональной подготовки специалистов и факультете дополнительного
образования.
Общий контингент студентов и слушателей
составляет около 600 человек. За время своего существования Тираспольский
филиал подготовил 1056 высококвалифицированных специалистов в области экономики
и юриспруденции.
Плодотворным является сотрудничество с
преподавателями Московской Академии экономики и права, которые приезжают в
Тираспольский филиал для чтения лекций и участия в государственных
экзаменационных и аттестационных комиссиях.
В учебном процессе задействованы: 3 компьютерных
класса, лекционные залы и аудитории, конференц-зал, оснащенный современным
презентационным оборудованием, интернет-клуб, компьютеризованная
криминалистическая лаборатория, зал судебных заседаний, библиотека с читальным
залом, медиатека (аудио/видео материалы), столовая, спортивный зал,
медико-оздоровительный комплекс.
1. Разработка базы данных
.1 Инфологическое проектирование
Основными задачами инфологического
проектирования являются определение предметной области системы и формирование
взгляда на программное обеспечение с позиций сообщества будущих пользователей
БД, т.е. инфологической модели.
Инфологическая модель представляет собой
описание будущей базы данных, представленное с помощью естественного языка, формул,
графиков, диаграмм, таблиц и других средств, понятных как разработчикам БД, так
и обычным пользователям.
Предметной областью является тема “Услуги
местной телефонной связи”. В ходе работы с представленной базой данных можно
определить следующие основные действия: занесение, изменение и удаление данных
об абонентах, поиск абонентов по лицевому счету, ФИО или адресу абонента,
формирование отчета-квитанции об оплате услуги. Анализируя данную предметную
область можно выделить следующие объекты и процессы предметной области:
Объекты:
· справочник абонентов - сведения об абонентах
· платежи - сведения о ценах,
количестве минут разговора, дате
· расчет оплаты услуг - на основе
платежей рассчитывается оплата за поставляемые услуги
Процессы:
· добавление новых абонентов
· удаление абонентов
· редактирование абонентов
· создание отчетов.
· поиск абонентов по лицевому счету,
ФИО или адресу
В данной предметной области можно выделить
сущности:
Сущность “Справочник абонентов” со следующими
атрибутами: лицевой счет, адрес, ФИО, наличие льгот. В просматриваемой сущности
в качестве идентифицирующего атрибута можно выделить однозначный ключ в виде
поля «лицевой счет», так как исключается возможность его повторения.
Сущность “Платежи” имеет следующие атрибуты:
лицевой счет, количество минут, цена за минуту разговора, дата разговора.
Сущность “Расчет оплаты услуг” имеет следующие
атрибуты: ФИО, адрес, лицевой счет, дата разговора, наличие льгот, количество
минут, количество минут с учетом льгот, цена за минуту, к оплате. В качестве
идентифицирующего ключа определено поле “Лицевой счет”.модель - модель данных,
позволяющая описывать концептуальные схемы. Имеет графическое представление,
основанное на блоках и соединяющих их линиях, с помощью которых можно описывать
объекты и отношения между ними какой-либо другой модели данных.модель является
удобным средством при проектировании информационных систем, баз данных,
архитектур компьютерных приложений, и других систем. С её помощью можно
выделить ключевые сущности, присутствующие в модели, и обозначить отношения,
которые могут устанавливаться между этими сущностями.
Для исследуемой предметной области изобразим ER
схему.
Представим модель базы данных на языке
инфологического проектирования:
Справочник абонентов (Лицевой счет, ФИО, Адрес,
Наличие льгот).
Платежи (Лицевой счет, Количество минут, Дата
разговора, Цена за минуту разговора).
К оплате (Лицевой счет, ФИО, Адрес, Дата
разговора, Цена за минуту, Наличие льгот, Количество минут, Количество минут с
учетом льгот, К оплате).
Представим структуры, имеющихся отношений
Таблица
1
Структура отношения “Справочник абонентов”
Имя
атрибута
|
Домен
|
Описание
|
Имя
поля
|
Лицевой
счет
|
Текстовый
|
Содержит
идентификационное значение абонента. Используется для связи с другими
таблицами.
|
Лицевой_счет
|
Адрес
|
Текстовый
|
Адрес
абонента
|
Адрес
|
ФИО
|
Текстовый
|
Фамилия,
имя и отчество абонента.
|
ФИО
|
Наличие
льгот
|
Логический
|
Содержит
информацию о наличии льгот, по типу логического “CheckBox”-а:
“Да” - есть галочка, “Нет” - нет галочки
|
Наличие_льгот
|
Отношение находится в третьей нормальной форме,
потому что:
- На пересечении столбцов и строк каждой таблицы,
находятся только элементарные значения атрибутов;
- Отношения не содержат неполных
функциональных зависимостей;
- Между отношениями нет транзитивных зависимостей.
Далее рассмотрим структуру отношения “Платежи”:
Таблица
2
Имя
атрибута
|
Домен
|
Описание
|
Имя
поля
|
Лицевой
счет
|
Текстовый
|
Содержит
идентификационное значение абонента. Используется для связи с другими
таблицами.
|
Лицевой_счет
|
Количество
минут разговора
|
Числовой
|
Информация
о количестве минут, которые абонент потратил на разговор в определенный день.
|
Кол-во_минут
|
Дата
разговора
|
Дата/Время
|
Дата,
по которой происходит платеж.
|
Дата_разговора
|
Цена
за минуту разговора
|
Денежный
|
Цена
за минуту разговора.
|
Цена_за_минуту
|
Отношение находится в третьей нормальной форме,
потому что:
- На пересечении столбцов и строк каждой таблицы,
находятся только элементарные значения атрибутов;
- Отношения не содержат неполных
функциональных зависимостей;
- Между отношениями нет транзитивных зависимостей.
Представим структуру отношения “Расчет оплаты”:
Таблица
3
Структура отношения “Расчет оплаты”
Имя
атрибута
|
Домен
|
Описание
|
Имя
поля
|
ФИО
|
Текстовый
|
Фамилия,
имя и отчество абонента.
|
ФИО
|
Адрес
|
Текстовый
|
Адрес
абонента
|
Адрес
|
Лицевой
счет
|
Текстовый
|
Содержит
идентификационное значение абонента. Используется для связи с другими
таблицами.
|
Лицевой
счет
|
Дата
разговора
|
Дата/Время
|
Дата,
по которой происходит платеж.
|
Дата_разговора
|
Наличие
льгот
|
Логический
|
Содержит
информацию о наличии льгот, по типу логического “CheckBox”-а: “Да” - есть
галочка, “Нет” - нет галочки
|
Наличие_льгот
|
Общее
количество минут разговора
|
Числовой
|
Количество
минут разговора без учета льгот
|
Кол-во_минут
|
Количество
минут разговора с учетом льгот
|
Числовой
|
Количество
минут разговора с учетом льгот
|
Кол-во_минут_с_учетом_льгот
|
Цена
за минуту разговора
|
Денежный
|
Цена
за минуту разговора.
|
Цена_за_минуту
|
Итого
к оплате
|
Денежный
|
Итоговая
сумма к оплате.
|
К_оплате
|
Отношение находится в третьей нормальной форме,
потому что:
- На пересечении столбцов и строк каждой таблицы,
находятся только элементарные значения атрибутов;
- Отношения не содержат неполных
функциональных зависимостей;
1.2 Запросы
Для реализации и нормального функционирования
базы данных, необходимо выполнить целый ряд SQL
запросов. Часть запросов формируется автоматически, однако некоторые запросы -
вводятся вручную.
Запросы с условием выбора выглядят следующим
образом:
Кол-во_минут_с_учетом_льгот: IIf([Наличие_льгот]
= Истина;([Кол-
во_минут]-100);[Кол-во_минут])
В данном запросе проверяется поле “Наличие
льгот”, если условие удовлетворяется, то льготному абоненту предоставляется 100
бесплатных минут, в противном случае - количество минут остается прежним.
К_оплате: IIf([Наличие_льгот] = Истина;[Кол-
во_минут_с_учетом_льгот] *
[Цена_за_минуту];[Кол-во_минут] *
[Цена_за_минуту])
В данном запросе проверяется поле “Наличие
льгот”, если условие удовлетворяется, то расчет производится по льготному
тарифу, т.е. с учетом вычета 100 бесплатных минут, в противном случае -
оплачивается полная стоимость разговора.
SQL запрос на
создание новой таблицы, для расчета оплаты за услуги:
Справочник_абонентов. ФИО, Справочник_абонентов.
Адрес,
Платежи.Лицевой_счет, Платежи.Дата_разговора,
Справочник_абонентов.Наличие_льгот,
Платежи.[Кол-во_минут],
([Наличие_льгот]=True,([Кол-во_минут]-100),[Кол-во_минут]) AS
[Кол-во_минут_с_учетом_льгот], Платежи.Цена_за_минуту,
IIf([Наличие_льгот]=True,[Кол-во_минут_с_учетом_льгот]
*
[Цена_за_минуту],
[Кол-во_минут]*[Цена_за_минуту]) AS К_оплате Расчет_оплаты_2
FROM Справочник_абонентов INNER JOIN Платежи ON
Справочник_абонентов.[Лицевой_счет] =
Платежи.[Лицевой_счет];
Данный запрос формирует таблицу, под названием
“Расчет_оплаты_2”, в которой осуществляется итоговый расчет оплаты.
1.3 Схема данных
Структура реляционной базы данных в Access
задается схемой данных, которая имеет иерархическую структуру и называется канонической
реляционной моделью предметной области.
При построении схемы данных Access автоматически
определяет по выбранному полю тип связи между таблицами. Если поле, по которому
нужно установить связь, является уникальным ключом как в главной таблице, так и
в подчиненной, Access устанавливает связь типа один к одному. Если поле связи
является уникальным ключом в главной таблице, а в подчиненной таблице является
не ключевым или входит в составной ключ. Access устанавливает связь типа один
ко многим от главной таблицы к подчиненной.
В представленной базе данных - схема данных
выглядит следующим образом:
Рисунок 1 - Схема данных
.4 Отчет-квитанция
Отчет - это форматированное представление
данных, которое выводится на экран, в печать или файл. Они позволяют извлечь из
базы нужные сведения и представить их в виде, удобном для восприятия, а также
предоставляют широкие возможности для обобщения и анализа данных.
В данной базе данных - отчет представляет собой
квитанцию по оплате за услуги местной телефонной связи. В отчете производится
вывод таких данных как: ФИО, Адрес, Лицевой счет, Дата разговора, Наличие льгот
и Итоговая сумма оплаты.
Рисунок 2 - Представление отчета в форме
конструктора
Рисунок 3 - Предварительный просмотр отчета
база данный телефонный связь
2. Разработка программы
.1 Блок-схема программы
.2 Описание интерфейса программы
Главная форма программы Form1 открывается после
запуска программы и содержит в себе следующие элементы: Форму для ввода имени
абонента, форму для ввода количества минут разговора, форму для ввода цены за
минуту разговора, форму для выбора типа абонента (Простой абонент или Льготный
абонент), а также кнопку расчета вычислений с последующим выводом их на экран,
и кнопу выхода из программы.
Форма для ввода имени абонента - позволяет
водить ФИО абонента.
Форма для ввода количества минут разговора -
позволяет вводить начисленное количество минут разговора, для последующего
расчета итоговой оплаты.
Форма для ввода цены за минуту разговора -
позволяет вводить цену за минуту разговора, причем разрешается вводить как
целые, так и десятичные дробные значения.
Форму для выбора типа абонента - представляет
собой переключатель между двумя типами абонентов (простой и льготный). Отличие
льготного абонента от обычного в том, что первые 100 минут разговора - ему
предоставляются бесплатно.
Все формы обязательны для заполнения.
При нажатии кнопки “Расчет” - происходит расчет
итоговой суммы разговора, с последующим выводом информации на экран.
Кнопка “Выход” - завершает работу программы
Рисунок 4 - Окно программы “Расчет оплаты за
связь”
Приложение
А
.cs
using
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Text;System.Windows.Forms;
uslugi_svyzi
{partial class
Form1 : Form
{rez,
rez_lg;name;Form1()
{();
}
void
button2_Click(object sender, EventArgs e)
{.Close();
}
void
button1_Click(object sender, EventArgs e)
{=
textBox3.Text;(comboBox1.Text == "Простой абонент")
{=
Convert.ToDouble(textBox1.Text) * .ToDouble(textBox2.Text);.Show("Абонент:
" + name + "\nТип абонента - Простой
абонент\nCтоимость
разговора составляет " + Convert.ToString(rez) + "
рублей.");
}(comboBox1.Text ==
"Льготный абонент")
{=(Convert.ToDouble(textBox1.Text)
* .ToDouble(textBox2.Text));_lg =((Convert.ToDouble(textBox1.Text) - 100) *
.ToDouble(textBox2.Text));(rez_lg < 0)_lg = 0;.Show("Абонент: " +
name + "\nТип абонента - Льготный
абонент\nCтоимость
разговора составляет " + Convert.ToString(rez) + "
рублей.\nСтоимость
с учетом льгот = " + rez_lg + " рублей.");
}
}
}