Работа с базой данных ИС средствами технологии ADO.NET
Цель работы:Изучить назначение и основные способы создания объектов ADO.NET при помощи Visual Studio IDE. Изучить основные приемы и способы отображения и связывания, данных объекта DataSet и элементов управления Windows - формы.
План проведения занятия
1. Изучить теоретический материал.
2. Создать класс DataSetEmployee и объекты dsEmployee, daJobTitle и daEmployee.
3. Разработать метод Fill для заполнения таблиц DataSet.
4. Осуществить привязку источника данных к элементам управления экранной формы.
5. Разработать необходимые методы для вывода информации из базы данных на экранную форму.
6. Протестировать программу.
Порядок выполнения работы
Задание 1.
Информация о базе данных
Разрабатываемое приложение предназначено для работы с базой данных сотрудников компании. На рис. 12.1 представлена структура базы данных.
Рис. 12.1. Структура базы данных по сотрудникам компании
1. Создайте базу данных, включающую две таблицы:
· сведения о сотрудниках - Employee;
· справочник должностей - JobTitle.
2. Задайте значение атрибутам таблицы Employee приведенным в табл. 12.2
Таблица 12.2
Атрибуты таблицы Employee
Имя атрибута | Назначение | Тип |
EmployeeID | Суррогатный ключ | smallint |
JobRoleID | Внешний ключ | smallint |
EmployeeSurname | Фамилия | varchar(50) |
EmployeeName | Имя | varchar(20) |
EmployeePatronymic | Отчество | varchar(20) |
EmployeeStatus | Статус | int |
Access | Уровень доступа | varchar(20) |
NetName | Сетевое имя | varchar(20) |
Birthday | Дата рождения | Smalldatetime |
FirstDate | Дата приема на работу | smalldatetime |
Суррогатный ключ EmployeeID, как и все остальные суррогатные ключи базы данных, генерируется сервером базы данных автоматически, т.е. для него задано свойство IDENTITY для СУБД MS SQL Server или AutoNumber для MS Access. Атрибут JobRoleID является внешним ключом, с помощью которого осуществляется связь с табл. й JobTitle.
Назначение атрибутов таблицы JobTitle приведено в табл. 12.3.
Таблица 12.3
Атрибуты таблицы JobTitle
Имя атрибута | Назначение | Тип |
JobRoleID | Суррогатный ключ | smallint |
JobRoleName | Наименование должности | varchar(50) |
В рассматриваемом приложении в качестве СУБД используется MS SQL Server 2005.
3. Создайте соединение проекта с базой данных. Для этого выберите пункт меню Tools/Connect to Database. Появляется окно AddConnection рис.12.2.
Рис. 12.2. Окно AddConnection
4. В пункте "Server name" задайте имя сервера, которое необходимо узнать у преподавателя (на рисунок 12.2MYHOME-8834E210\DOLJENKO). В пункте Select or enter database name - имя базы данных, которое определит преподаватель рис. 2.2.
5. Для проверки правильности подключения к базе данных нажимаем клавишу "Test Connection". При правильном подключении появляется следующее сообщение рис.12.3.
Рис. 12.3. Окно Microsoft Data Link
При нормальном соединении с базой данных можно открыть навигатор Server Explorer из меню View/ Server Explorer или сочетанием клавиш ALT+CTRL+S (рисунок 12.4.).
Рис. 12.4. Окно навигатора Server Explorer
6. Добавьте в проект объект класса DataSet. Для этого выберем пункт меню Project/Add New Item . . . (рис. 12.5).
Рис. 12.5. Добавление в проект нового компонента
7. Выберете шаблон DataSet в окне Add New Item рис 12.6 и присвойте ему имя DataSetEmployee.
Рис. 12.6. Выбор нового компонента – DataSet
После нажатия кнопки Add система генерирует класс DataSetEmployee, который добавляется в решение проекта рис.12.7.
Рис. 12.7. Окно решения проекта с новым компонентом DataSet
8. Для добавления таблиц Employee и JobTitle к DataSet необходимо перетащить их из окна Server Explorer на поле графического дизайнера рис.12.8.
Рис. 12.8. Добавление таблиц к DataSet
В результате будут созданы классы таблиц, адаптеры и методы Fill и GetData.
При формировании класса DataSetEmployee необходимо учесть то, что первичные ключи таблиц Employee и JobTitle являются суррогатными и автоматически формируются (ключ со свойством автоинкремент) источником данных (например, MS SQL Server).
9. При формировании новых записей в приложении необходимо обеспечить уникальность первичных ключей для таблиц объекта DataSetEmployee. Это можно обеспечить, задав для ключевых колонок таблиц Employee и JobTitle следующие свойства:
AutoIncrement = true;AutoIncrementSeed = -1;AutoIncrementStep = -1;Столбец со свойством AutoIncrement равным true генерирует последовательность значений, начинающуюся со значения AutoIncrementSeed и имеющую шаг AutoIncrementStep. Это позволяет генерировать уникальные значения целочисленного столбца первичного ключа. В этом случае при добавлении новой записи в таблицу будет генерироваться новое значение первичного ключа, начиная с -1, -2, -3 и т.д., которое никогда не совпадет с первичным ключом источника данных, т.к. в базе данных генерируются положительные первичные ключи. Свойства AutoIncrementSeed и AutoIncrementStep устанавливаются равными -1, чтобы гарантировать, что когда набор данных будет синхронизироваться с источником данных, эти значения не будут конфликтовать со значениями первичного ключа в источнике данных. При синхронизации DataSet с источником данных, когда добавляют новую строку в таблицу MS SQL Server 2005 с первичным автоинкрементным ключом, значение, которое этот ключ имел в таблице DataSet, заменяется значением, сгенерированным СУБД.
10. Установите свойства AutoIncrement, AutoIncrementSeed и AutoIncrementStep для колонки первичного ключа EmployeeID таблицы Employee рис. 12.9.
Рис. 12.9. Установка свойств для колонки EmployeeID
11. Сделайте для колонки JobTitleID таблицы JobTitle. установки свойств аналогичные AutoIncrement, AutoIncrementSeed и AutoIncrementStep
12. После создания класса DataSetEmployee и адаптера необходимо создать объекты этих классов, добавив следующий код к файлу FormEmployee.cs.
DataSetEmployee dsEmployee = new DataSetEmployee();DataSetEmployeeTableAdapters.EmployeeTableAdapter daEmployee = new Project_К4И_01.DataSetEmployeeTableAdapters.EmployeeTableAdapter();DataSetEmployeeTableAdapters.JobTitleTableAdapter daJobTitle = new Project_К4И_01.DataSetEmployeeTableAdapters.JobTitleTableAdapter();13. Создайте метод для заполнения объекта dsEmployee из базы данных , после того, как созданы объекты адаптеров данных daEmployee и daJobTitle, а также объект класса DataSetEmployee - dsEmployee(в рассматриваемом примере база данных Employee, созданная в СУБД MS SQL Server 2005). Для заполнения данными dsEmployee из базы данных Employee создадим метод EmployeeFill():
public void EmployeeFill(){ daJobTitle.Fill(dsEmployee.JobTitle); daEmployee.Fill(dsEmployee.Employee); MessageBox.Show("Метод Fill отработал");}В методе EmployeeFill( ) для объектов класса DataAdapter применяется метод Fill, который производит заполнение таблиц (JobTitle и Employee) объекта dsEmployee данными из базы данных. Метод Fill адаптера данных DataAdapter требует указания в качестве параметров задания соответствующей таблицы DataSet , то есть dsEmployee.JobTitle и dsEmployee.Employee.
Метод MessageBox.Show введен в метод EmployeeFill для первоначального тестирования, после которого его нужно убрать.
Вызов метода EmployeeFill необходимо добавить в обработчик события Load для формы FormEmployee, возникающего при нажатии на пункт меню "Сотрудник".
Задание 2.
1. Свяжите элемент контроля listBoxEmployee, в котором должен отображаться список фамилий сотрудников, со столбцом EmployeeSurname таблицы Employee. Это можно сделать, добавив следующие строки кода в метод загрузки формы FormEmployee_Load.
this.listBoxEmployee.DataSource = this.dsEmployee1;this.listBoxEmployee.DisplayMember ="Employee.EmployeeSurname";В разрабатываемом приложении на Windows-форме FormEmployee имеются четыре текстовых поля: textBoxSurname, textBoxName, textBoxPatronymic и textBoxNetName. Эти текстовые поля предназначены для отображения информации из одной записи таблицы Employee набора данных dsEmployee. Для того чтобы содержимое текстовых полей автоматически обновлялось при смене записи, их необходимо связать с соответствующими колонками набора данных dsEmployee. Связывание можно осуществить, используя свойство DataBindings элемента управления TextBox.
2. Создайте связь для элемента управления textBoxSurname с источником данных, добавив следующую строку кода в метод загрузки формы FormEmployee_Load.
textBoxSurname.DataBindings.Add("Text", dsEmployee, "Employee.EmployeeSurname");3. Протестируйте добавленный в программу код.
4. Аналогично свяжите текстовые поля textBoxName, textBoxPatronymic и textBoxNetName с источником данных.
В таблице Employee значения для атрибута Access (доступ) задается в виде символьной строки, значение которой выбирается из списка элемента управления comboBoxAccess.
5. Задайте коллекцию выпадающего списка элемента управления comboBoxAccess можно задать следующей строкой кода:
this.comboBoxAccess.Items.AddRange(new object[] {"не задан", "администратор","начальник смены", "старший оператор", "оператор", "аналитик"});6. Для заданной записи источника данных (таблица Employee) значение столбца Access отобразите в элементе контроля comboBoxAccess. Сделайте это аналогично тому, как это делалось для элементов управления TextBox, задавая свойство DataBindings
7. Сформируйте коллекцию выпадающего списка: не задан, активен, выходной, в отпуске, болеет, не работает, помечен как удаленный. Для элемента управления comboBoxStatus
В таблице Employee значения для атрибута EmployeeStatus (статус) задается в виде целого числа (0, 1, 2, 3, 4, 6), однако статус сотрудника должен отображаться в элементе управления comboBoxStatus в виде строковых значений в соответствии со значениями его коллекции. В программе необходимо реализовать отображение целочисленных данных из DataSet в текстовые значения в элементе контроля comboBoxStatus. Для этого необходимо отслеживать изменение позиции в табл. источника данных dsEmployee и в соответствии со значением столбца EmployeeStatus активизировать требуемый элемент (Item) списка comboBoxStatus.
8. Объявите объект bmEmployee класса BindingManagerBase в форме ormEmployee:
BindingManagerBase bmEmployee;9. Создайте объект bmEmployee в конструкторе класса FormEmployee, применяя индексатор контента BindingContext включив в него связывание с таблицей Employee, и добавьте делегат для события, которое формируется при изменении позиции в данной таблице:
public FormEmployee( ){InitializeComponent(); bmEmployee = this.BindingContext[dsEmployee1, "Employee"];// Добавляем делегата PositionChanged для события - изменение //позиции в табл. Employee DataSet dsEmployee bmEmployee.PositionChanged = new EventHandler(BindingManagerBase_PositionChanged);}10. Создайте обработчик для сформированного события, который на основе выбранной строки (pos) таблицы Employee будет задавать свойству Text списка comboBoxStatus значение из коллекции Items по индексу (sel), полученному из столбца EmployeeStatus Employee.
private void BindingManagerBase_PositionChanged(object sender, EventArgs e){ int pos = ((BindingManagerBase)sender).Position; int sel = (int)dsEmployee.Employee[pos].EmployeeStatus; this.comboBoxStatus.Text = this.comboBoxStatus.Items[sel].ToString();}11. Протестируйте добавленный в программу код.
12. Для задания в элементе контроля comboBoxJobRole должности сотрудника необходимо получить данные из родительской таблицы JobTitle, с которой таблица Employee связана внешним ключом JobRoleID. Фактически необходимо осуществить вывод данных из справочника (таблица JobTitle) по данным в основной табл. Employee.
Свойство DataBindings объекта ComboBox предоставляет доступ к коллекции ControlBindingsCollection. Метод Add этой коллекции добавляет в неё привязку.
Перегруженный вариант метода Add принимает три аргумента:
PropertyName - имя свойства элемента управления, к которому осуществляется привязка;
DataSource - имя привязываемого источника данных;
DataMember - имя свойства привязываемого источника данных.
13. Свяжите элемент контроля comboBoxJobRole с набором данных JobTitle (родительская таблица - справочник), в соответствии с кодом, приведенным ниже.
comboBoxJobRole.DataSource = this.dsEmployee.JobTitle;comboBoxJobRole.DisplayMember = "JobRoleName";comboBoxJobRole.ValueMember = "JobRoleID";14. Свяжите comboBoxJobRole с полем JobRoleID основной таблицы Employee (дочерняя таблица), в соответствии со следующим кодом
comboBoxJobRole.DataBindings.Add("SelectedValue", dsEmployee,"Employee.JobRoleID");После компиляции и запуска приложения экранная форма будет иметь вид, приведенный на рис. 12.10..
Рис. 12.10. Экранная форма в режиме просмотра (только для чтения)
Содержание отчета
1. Описание процесса создание класса DataSetEmployee , объектов dsEmployee, daJobTitle и daEmployee, метода Fill.
2. Описание создания базы данных, включающей две таблицы и соединение проекта с базой данных, формирование новых записей в приложении.
3. Создание метода для заполнения объекта dsEmployee из базы данных.
4. Описание процесса связывания элемента контроля listBoxEmployee, в котором должен отображаться список фамилий сотрудников, со столбцом EmployeeSurname таблицы Employee.
5. Выводы по проделанной работе
Контрольные вопросы
1. Что представляет собой ADO.NET?
2. Для чего используется класс BindingContext?
3. Для выполнения, каких задач предназначены все типы ADO.NET?
4. Что представляет собой функция Data.Set?
5. Какие уровни объектной модели ADO.NET можно выделить?
Литература[3-4, 11-12].
Приложение
Примерные темы лабораторных работ
Вариант 1. Видеопрокат
Тема: Проектирование ИС. Программное обеспечение видеопроката
Пункт проката видео нуждается в компьютерной системе. Его ассортимент составляет около тысячи видеокассет и пятьсот видеодисков. В прокате имеются видеодиски разных форматов: DVD, MPEG4, Blu-Ray, HD-DVD. Фильмы закупаются у разных поставщиков. Обычно один заказ поставщику делается на несколько фильмов. База данных хранит обычную информацию о поставщиках: их адреса, телефонные номера и т. д. В каждом заказе поставщику указывается: перечень фильмов; их количество, форматы кассет/дисков; отпускная цена.
Каждый видеоноситель при поступлении от поставщика снабжается штрих-кодом (содержащим уникальный идентификационный номер) для того, чтобы сканер, интегрированный в систему, мог поддерживать операции выдачи и возврата видеофильмов.
Каждому клиенту при первом обращении в видеопрокат выдается клиентская карточка со штрих-кодом для автоматизации обработки его запросов. Данные о клиенте (ф. и. о., телефон, адрес) заносятся в базу данных.
При выдаче фильма в прокат устанавливается конкретный период проката (исчисляемый в днях). Плата за прокат вычисляется как произведение количества дней на цену одного дня проката. Цена зависит от видеоносителя: кассета или диск; формата диска. Плата за прокат взимается в момент выдачи. За кассеты и диски, возвращенные позже срока, взимается дополнительная плата за период, превышающий срок проката. Если кассета/диск задержаны более чем на два дня, клиента ежедневно уведомляют о задержке. После двух уведомлений о задержке одной и той же кассеты/диска, клиент заносится в список нарушителей. При следующем его обращении в видеопрокат работник проката решает: оставить клиента в списке нарушителей и отказать в обслуживании или удалить из списка нарушителей и обслужить. При порче видеоносителя клиентом с него взимается штраф.
Система должна обладать поисковым механизмом по базе видео. Работники проката должны иметь возможность быстро получить ответ, имеется ли фильм в наличии, в каком количестве и на каких носителях. Если все носители фильма выданы в прокат, то система должна сообщить ближайшую дату возврата.
Постоянные клиенты (к ним относятся те, кто более десяти раз в течении 12 месяцев воспользовался услугами проката) могут оставлять заявки на фильмы, которых нет в прокате и которые не заказаны у поставщика. Фильмы из таких заявок включаются в следующий заказ поставщику, и в момент поступления фильмов от поставщика клиенты уведомляются о выполнении их заявок. Данные о выполненных заявках хранятся в течение 12 месяцев, после чего удаляются.
Клиенту одновременно могут быть выданы несколько кассет или дисков, однако каждому взятому видеоносителю ставится в соответствие отдельная запись. Для каждого выдаваемого напрокат фильма фиксируются дата и время выдачи, стоимость проката, установленный и фактический срок возврата. При возврате запись о покате обновляется, чтобы отразить этот факт. Кроме того, запись хранит информацию о работнике, оформившем прокат. Записи хранятся в течение 12 месяцев, после чего удаляются.
Вариант 2. Торговый автомат
Тема: Проектирование ИС. Программное обеспечение торгового автомата
В автомате имеется пять лотков для хранения и выдачи товаров.
Внешний вид автомата изображен на рисунке.
Загрузка товаров на лотки осуществляется обслуживающим персоналом. Автомат следит за наличием товара. Если какой-либо товар распродан, автомат отправляет сообщение об этом на станцию обслуживания по линии связи и информирует покупателей (зажигается красная лампочка рядом с лотком данного товара).
Автомат принимает к оплате бумажные купюры и монеты. После ввода денег клиент выбирает товар нажатием на кнопку нужного лотка и нажимает на кнопку выдачи товара. Выдача товара производится только в том случае, если товар имеется в наличии и если введенная сумма денег не меньше цены товара. Если сумма превышает цену, клиенту выдается сдача. Товар выдается поштучно.
При нажатии на кнопку "Возврат" клиенту возвращаются все принятые от него к оплате деньги. Возврат денег не производился после выдачи товара. Автомат должен корректно работать при одновременном нажатии на кнопки выдачи товара и возврата денег.
На автомате имеется информационное табло, на котором высвечивается текущая сумма денег, принятых автоматом к оплате, и сообщения для клиентов, такие как: "введите деньги", "выберите товар", "нажмите кнопку выдачи", "введенной суммы недостаточно", "товара нет в наличии", "заберите покупку", "заберите сдачу", "заберите деньги".
В специальном отделении автомата, закрываемом замком, есть сервисная консоль, которая используется обслуживающим персоналом. С консоли производится управление доступом к ящику с деньгами для изъятия выручки, управление доступом к товарным лоткам для загрузки или замены товара, а также ввод данных о товарах на лотках в память автомата. Данные включают в себя цену, наименование товара, номер лотка, на котором находится товар и количество товара на лотке. Вариант задания включает в себя разработку схемы базы данных о товарах.
Вариант 3. Табло на станции метро
Тема: Проектирование ИС. Программное обеспечение табло на станции метро
Табло расположены на каждой станции метро. Они работают под управлением единого пункта управления (ПУ) информационной службы метро. Табло отображает текущее время (часы, минуты, секунды) и время, прошедшее с момента отправления последнего поезда (минуты, секунды). Момент прибытия и отправления поезда определяется при помощи датчиков, устанавливаемых на путях. Все табло метро синхронизованы, текущее время отсчитывается и устанавливается из центральной службы времени, находящейся на ПУ.
На табло высвечивается конечная станция назначения прибывающего поезда. Эти данные содержатся в расписании движения поездов, которое хранится в памяти табло и периодически обновляется с ПУ.
В "бегущей строке" табло отображается рекламная информация. Память табло хранит до 10 рекламных сообщений. Сообщения отображаются друг за другом с небольшими паузами, циклически. Содержание рекламных сообщений поступает с ПУ.
Дополнительная функция табло – по запросу с ПУ оно пересылает данные о нарушениях расписания (преждевременных отправлениях поездов или опозданиях).
В ходе выполнения задания должна быть создана схема базы данных для хранения рекламных сообщений, расписания и сведений о нарушении расписаний.
Пояснение: в задании требуется разработать модель ПО только для табло, но не для пункта управления информационной службы.
Вариант 4. Онлайновая театральная касса
Тема: Проектирование ИС. Программное обеспечение онлайновой театральной кассы
Онлайновая театральная касса "Билетов.Нет" представляет собой web-сайт службы бронирования и доставки билетов на спектакли и концерты.
Перед тем как впервые воспользоваться услугами кассы клиент должен зарегистрироваться. В ходе регистрации он указывает данные о себе (ф. и. о., телефон, адрес электронной почты) и получает логин и пароль (логины и пароли разных клиентов не должны совпадать).
Войдя в систему, клиент может ознакомиться с афишей, выбрать интересующее его мероприятие, указав название, дату и место проведения. Получив от системы сведения о билетах имеющихся в наличии, пользователь может забронировать нужное ему количество билетов. Билеты бывают разных типов: партер, балкон, ложа, бельэтаж, 1-2-3 ярус, vip-места и т. п. Цена билета зависит от его типа и расположения зрительского места. Билеты могут быть выкуплены в течение трех суток с момента бронирования, но не позднее пяти суток до начала спектакля. Клиент может самостоятельно выкупить забронированные билеты, приехав в офис, или заказать доставку билетов курьером, сделав пометку в заявке и указав адрес доставки. Стоимость доставки зависит от дальности: центр / спальный район / дальний пригород. Клиент может получить информацию обо всех своих заявках с web-страницы онлайновой кассы.
Заявки клиентов хранятся в системе. В каждой указаны: сведения о клиенте, название спектакля, место и время проведения, количество и тип забронированных билетов, стоимость билетов, время создания заявки, время оплаты, вид доставки (самовывоз / курьер), адрес доставки, стоимость доставки, статус заявки (новая / рабочая / оплаченная / аннулированная). По истечении 12 месяцев с момента создания заявки данные автоматически удаляются из системы.
В обязанности работников онлайновой кассы входит внесение в систему сведений о мероприятиях и об имеющихся в продаже билетах. Данные о мероприятии – вид: концерт / шоу / спектакль; название; описание; место проведения; дата; – хранятся в системе. Один и тот же спектакль может идти в разные дни и в разных местах, но разные спектакли не могут пересекаться по времени и месту проведения. Запись о билете содержит название спектакля, дата, время, место проведения, тип билета, зрительский ряд, зрительское место, цену билета, статус билета (есть в наличии / забронирован / продан / передан для реализации). По истечении 12 месяцев с даты, указанной в билете, данные автоматически удаляются из системы.
Работник кассы, получив новую заявку клиента, связывается с ним для подтверждения и уточнения мест. Согласовав с клиентом зрительские места, работник делает пометку о бронировании билетов в системе (тем самым уменьшается количество билетов, имеющихся в наличии) и меняет статус заявки на "рабочая". После оплаты и/или доставки "рабочей" заявки билеты из заявки помечаются как проданные, а заявка – как оплаченная. За 5 суток до начала спектакля все не проданные билеты передаются для реализации в обычные кассы, в системе они автоматически помечаются как "передан для реализации", заявки на них аннулируются, клиенты, не успевшие оплатить заказанные билеты, информируются о снятии брони. Через 4 суток после создания "рабочие" заявки автоматически аннулируются, бронирование с билетов снимается, клиентам посылается соответствующее сообщение. Также должна быть возможность аннулирования заявок вручную работниками онлайновой кассы. При аннулировании заявки вручную работник должен уведомить клиента, изменить статус заявки, снять бронирование билетов (количество билетов в наличии возрастает).
Вариант 5. Мини-АТС
Тема: Проектирование ИС. Программное обеспечение мини-АТС
Мини-АТС осуществляет связь между служащими учреждения. Каждый абонент подключен к ней линией связи. Мини-АТС соединяет линии абонентов (осуществляет коммутацию линий). Абоненты имеют номера, состоящие из трех цифр. Специальный номер "9" зарезервирован для внешней связи.
Телефонное соединение абонентов производится следующим образом. Абонент поднимает трубку телефона, и мини-АТС получает сигнал "Трубка". В ответ мини-АТС посылает сигнал "Тон". Приняв этот сигнал, абонент набирает телефонный номер (посылает три сигнала "Цифра"). Мини-АТС проверяет готовность вызываемого абонента. Если абонент не готов (его линия занята), мини-АТС посылает вызывающему абоненту сигнал "Занято". Если абонент готов, мини-АТС посылает обоим абонентам сигнал "Вызов". При этом телефон вызываемого абонента начинает звонить, а вызывающий абонент слышит в трубке длинные гудки. Вызываемый абонент снимает трубку, и мини-АТС получает от него сигнал "Трубка", после чего осуществляет коммутацию линии. Абоненты обмениваются сигналами "Данные", которые мини-АТС должна передавать от одного абонента к другому. Когда один из абонентов опускает трубку, мини-АТС получает сигнал "Конец" и посылает другому абоненту сигнал"Занято". В любой момент разговора абонент может положить трубку, при этом мини-АТС получает сигнал "Конец". После получения этого сигнала сеанс обслуживания абонента завершается.
Если вызываемый абонент не подходит к телефону, то вызывающий абонент может, не дождавшись, повесить трубку. В этом случае мини-АТС получает сигнал "Конец" и завершает сеанс. Вызываемому абоненту посылается сигнал "Сброс" для отмены вызова.
Если абонент желает соединиться с абонентом за пределами учреждения, то он набирает номер "9". Мини-АТС посылает по линии, соединяющей с внешней (городской) АТС, сигнал "Трубка" и в дальнейшем служит посредником между телефоном абонента и внешней АТС. Она принимает и передает сигналы и данные между ними, не внося никаких изменений. При завершении сеанса, получив от внешней АТС сигнал "Занято" (в случае если вызываемый абонент первым повесил трубку), мини-АТС посылает абоненту сигнал "Занято", ждет сигнала "Конец" для завершения обслуживания абонента и передает его внешней АТС. Если вызывавший абонент первым вешает трубку, то мини-АТС получает сигнал "Конец" и передает его городской АТС и завершает сеанс. Мини-АТС может получить сигнал "Вызов" от городской АТС. Это происходит, когда нет соединений с внешними абонентами. Сигнал "Вызов" от городской АТС передается абоненту с кодом "000". Только этот абонент может отвечать на внешние звонки. Если абонент "000" долго не отвечает на внешний вызов, от городской АТС может придти сигнал "Сброс". Он передается абоненту "000", и сеанс завершается.
Вариант 6. Управление контактами с клиентами
Тема: Проектирование ИС. Программное обеспечение для управления контактами с клиентами
Компания, поставляющая оборудование, в рамках обеспечения своей коммерческой деятельности нуждается в системе управления контактами со своей клиентурой. Клиенты делятся на два вида: текущие – те, с которыми у компании заключены договора в текущий момент или ранее, и потенциальные.
Система управления контактами находится в распоряжении всех работников компании. Система поддерживает функции "постоянного контакта" с наличной и потенциальной клиентской базой, так, чтобы откликаться на ее нужды, получать новые контракты, обеспечивать выполнение старых. Система позволяет сотрудникам планировать задания, которые необходимо провести в отношении контактных лиц. Некоторые сотрудники должны иметь доступ к планированию заданий только для себя, другие – и для других сотрудников, и для себя.
Система хранит имена, номера телефонов и факсов, почтовые и электронные адреса и т. д. организаций и контактных лиц в этих организациях.
Каждое задание связано с каким-либо контактным лицом. Примерами заданий являются телефонный звонок, визит, отправка факса, отправка электронного сообщения, проведение презентации и т. д. Некоторые задания связаны с выполнением контракта, например, отправка оборудования, поставка, установка, гарантийный и послегарантийный ремонт. В таких заданиях указывается необходимая информация: номер контракта, серийный номер ремонтируемого оборудования. Каждое задание имеет дату создания – время внесения ее в систему. Некоторые задания имеют срок исполнения – период времени от начальной даты до финальной, другие являются бессрочными. Дата создания задания не может изменяться, а срок исполнения – может. По исполнении задания дата и время его завершения фиксируются.
Каждое задание имеет автора – сотрудника, который его создал. Исполнителем задания может быть сотрудник, не являющийся автором. Рядовые сотрудники не могут назначать задания кому-либо кроме себя. Менеджеры назначают задания себе или кому-либо из рядовых сотрудников. Менеджер в ходе выполнения созданного им задания может поменять исполнителя.
Просматривать задание, автором которого является менеджер, может либо автор, либо исполнитель задания. Просматривать задание, автором которого является рядовой сотрудник, может автор и любой менеджер. Задания сотрудника отображаются на экране его компьютера в виде страницы календаря (один день на страницу). Приоритет каждого задания (низкий, средний, высокий) визуально выделяется на экране. Каждый менеджер может помимо своего календаря просматривать календари рядовых сотрудников. Помечать задание как выполненное и указывать дату завершения может либо автор, либо исполнитель задания. Вносить какие-либо другие изменения в задание может только автор. После завершения задания внесение в него изменений не допускается. По прошествии 12 месяцев после даты завершения задания сведения о нем удаляются из системы.
Администратор системы управляет доступом сотрудников: выдает логины и пароли пользователям, формирует две группы пользователей: менеджеров и рядовых сотрудников. Он также имеет доступ к специальным функциям, например, может изменить автора задания или внести изменения в завершенное задание.
Система имеет возможности для поиска в базе клиентов и контактных лиц по их атрибутам (названию, городу, имени контактного лица). Система генерирует отчет по исполнению заданий каким-либо сотрудником в течение периода времени, указываемого в параметре отчета. В отчете указывается: общее количество заданий для данного сотрудника в указанный период, сколько заданий завершено вовремя, сколько заданий завершено с нарушением срока исполнения, сколько заданий с истекшим сроком исполнения не завершено, и сколько не завершенных заданий, срок исполнения которых не истек.
Вариант 7. Банкомат
Тема: Проектирование ИС. Программное обеспечение банкомата
Банкомат – это автомат для выдачи наличных денег по кредитным пластиковым карточкам. В его состав входят следующие устройства: дисплей, панель управления с кнопками, приемник кредитных карт, хранилище денег и лоток для их выдачи, хранилище конфискованных кредитных карт, принтер для печати справок, сервисная консоль. Банкомат подключен к линии связи для обмена данных с банковским компьютером, хранящим сведения о счетах клиентов.
Обслуживание клиента начинается с момента помещения пластиковой карточки в банкомат. После распознавания типа пластиковой карточки, банкомат выдает на дисплей приглашение ввести персональный код. Персональный код представляет собой четырехзначное число. Затем банкомат проверяет правильность введенного кода, сверяя с кодом, хранящимся на карте. Если код указан неверно, пользователю предоставляются еще две попытки для ввода правильного кода. В случае повторных неудач карта перемещается в хранилище карт, и сеанс обслуживания заканчивается. После ввода правильного кода банкомат предлагает пользователю выбрать операцию. Клиент может либо снять наличные со счета, либо узнать остаток на его счету.
При снятии наличных со счета банкомат предлагает указать сумму (100, 200, 500, 1000, 5000, 10000 рублей). После выбора клиентом суммы банкомат запрашивает, нужно ли печатать справку по операции. Затем банкомат посылает запрос на снятие выбранной суммы центральному компьютеру банка. В случае получения разрешения на операцию, банкомат проверяет, имеется ли требуемая сумма в его хранилище денег. Если он может выдать деньги, то на дисплей выводится сообщение "Выньте карту". После удаления карточки из приемника, банкомат выдает указанную сумму в лоток выдачи. Банкомат печатает справку по произведенной операции, если она была затребована клиентом.
Если клиент хочет узнать остаток на счету, то банкомат посылает запрос центральному компьютеру банка и выводит сумму на дисплей. По требованию клиента печатается и выдается соответствующая справка.
Сервисная консоль, которая используется обслуживающим персоналом, находится в специальном отделении банкомата, закрываемом на замок. С консоли производится управление доступом к хранилищу денег для загрузки банкнот, управление доступом к хранилищу конфискованных карт, запуск самодиагностики банкомата, конфигурация сетевого соединения с банковским компьютером.
Вариант 8. Интернет-магазин
Тема: Проектирование ИС. Программное обеспечение Интернет-магазина
Магазин компьютеров предлагает возможность приобретения своих товаров через Интернет. Клиент может выбрать компьютер на web-странице магазина. Компьютеры подразделяются на серверы, настольные и портативные. Заказчик может выбрать стандартную конфигурацию из списка и детально ознакомиться с ней на отдельной web-странице. Если стандартная конфигурация ему не подходит, он может построить требуемую ему конфигурацию в диалоговом режиме. Компоненты конфигурации (такие, как оперативная память, процессор, жесткий диск и т. п.) представляются как список для выбора из доступных альтернатив. Для каждой новой конфигурации система может подсчитать цену.
Чтобы оформить заказ, клиент должен заполнить электронную форму с адресами для доставки товара и отправки счета-фактуры, а также деталями, касающимися оплаты. Оплата компьютеров осуществляется наличными курьеру, осуществляющему доставку, или банковским переводом на счет Интернет-магазина. После ввода заказа система отправляет клиенту по электронной почте сообщение с подтверждением получения заказа вместе с относящимися к нему деталями (стоимость, номер счета, банковские реквизиты для безналичной оплаты и т. п.). Пока клиент ожидает прибытия компьютера, он может проверить состояние заказа (поставлен в очередь / собран / отправлен). Работник магазина проверяет, поступила ли оплата (в случае безналичного расчета) и делает соответствующую пометку при поступлении денег. Если деньги не поступают в течение 5 банковских дней, заказ аннулируется. После оплаты или в случае оплаты наличными работник печатает счет-фактуру и отправляет ее на склад вместе с требованием заказанной конфигурации. Заказ помечается как поставленный в очередь. Собранный компьютер вместе со счетом-фактурой и накладной передается со склада в отдел доставки, при этом заказ помечается как собранный. Компьютер поставляется клиенту (статус заказа – отправлен). Если заказ оплачивается наличными, курьер по возращении передает деньги в кассу, заказ помечается как оплаченный.
По окончании работы с заказом, он помечается в системе как выполненный. Заказы хранятся в системе в течение 15 месяцев с момента создания для составления годовых и квартальных отчетов, после чего автоматически удаляются.
Вариант 9. Библиотечная система
Тема: Проектирование ИС. Система автоматизации для библиотеки
Система поддержки управления библиотекой должна обеспечивать операции над данными о читателях (добавление, удаление и изменение). В регистрационном списке чита<