Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Краткие теоретические сведения




ADO.NET - это новая технология доступа к базам данных, специально оптимизированная для нужд построения рассоединенных (disconnected) систем на платформе.NET. ориентирована на архитектуру многоуровневых приложений.

Подробно смотрите в приведенной ниже литературе.

Порядок выполнения работы

Задание 1.

Для формы FormEmployee создать требуемые элементы управления. Для разработки проекта приложения форма FormEmployee должна содержать элементы управления, в соответствии с видом, приведенном на рис. 11.1.

Рис. 11.1. Вид экранной формы FormEmployee

В этом задании сформируйте на данной форме элементы управления приведенные в табл.11.5.

Таблица 11.5

Элементы управления формы FormEmployee

Элемент контроля Имя Свойство Text/Items Назначение
SplitContainer splitContainerEmployee   Две панели с разделителем
Label labelListEmployee Список сотрудников Надпись
listBox listBoxEmployee   Список сотрудников
Label labelSurname Фамилия Надпись
Label labelName Имя Надпись
Label labelPatronymic Отчество Надпись
Label labelJobRole Должность Надпись
Label labelStatus Статус Надпись
Label labelAccess Уровень доступа Надпись
label labelNetName Сетевое имя Надпись
textBox textBoxNetName   Сетевое имя
textBox textBoxSurname   Фамилия
textBox textBoxName   Имя
textBox textBoxPatronymic   Отчество
comboBox comboBoxJobRole   Должность
comboBox comboBoxStatus Активен, выходной, в отпуске, болеет, не работает, помечен как удаленный Статус
comboBox comboBoxAccess Оператор, старший оператор, начальник смены, администратор, аналитик Уровень доступа
menuItem menuItemAction Действие Пункт меню "Редактировать"
menuItem menuItemUndo Отменить Подпункт меню "Отменить"
menuItem menuItemNew Создать Подпункт меню "Новый"
menuItem menuItemEdit Изменить Подпункт меню "Изменить"
menuItem menuItemSave Сохранить Подпункт меню "Сохранить"
menuItem menuItem Удалить Подпункт меню "Удалить"
menuItem menuItemReport Отчет Пункт меню "Отчет"
menuItem menuItemReport1 По сотруднику Подпункт меню "Отчет по сотруднику"
menuItem menuItemReport2 По всем сотрудникам Подпункт меню "Отчет по всем сотрудникам"

1. Создайте на форме элемент SplitContainer рис. 11.2. На панели 1 создайте элементы управления labelListEmployee и listBoxEmployee рис.11.3, а остальные элементы управления, приведенные в табл. 11.5, - на панели 2 рис. 11.1.После создания на форме FormEmployee элементов управления в соответствии табл. 11.1 необходимо настроить порядок перехода между ними при нажатии клавиши Tab.

Рис. 11.2. Создание панелей на форме FormEmployee

Задайте последовательные номера свойству TabIndex элементов управления (в разрабатываемой форме это необходимо сделать для элементов управления TextBox и ComboBox) из окна Properties (рис.11.4)

Рис. 11.4. Задание свойства TabIndex для элемента контроля

Так же для задания последовательных номеров свойству TabIndex элементов управления вызвать мастер Tab Order Wizard из меню View/Tab Order рис.11.5. Задание последовательности значений свойству TabIndex производится щелчком мыши на элементах управления в заданной последовательности.

Рис. 11.5.Настройка перехода по элементам управления

Результат настройки порядка перехода между элементами управления при нажатии клавиши Tab приведен на рис. 11.6.

2. Разработать методы для задания режимов "Просмотр", "Редактирование" для элементов контроля.

Создайте методы для работы с формой создайте методы, которые разрешают только просматривать форму (режим просмотра) и редактировать форму (режим редактирования).

Рис. 11.6. Результат работы мастера Tab Order Wizard

3. Разработать методы для задания режимов "Просмотр", "Редактирование" для управления активностью пунктов главного меню формы, контекстного меню и кнопок панели инструментов.

Создадать метод для задания режима просмотра формы DisplayReadOnly. Метод DisplayReadOnly должен быть общедоступным, ничего не должен возвращать и не иметь параметров. Для задания режима просмотра (только для чтения) объекту класса TextBox свойству ReadOnly присвойте значение true, а для объекта класса comboBox - свойству Enabled значение false. Код метода DisplayReadOnly представлен далее:

public void DisplayReadOnly(){this.textBoxSurname.ReadOnly = true;this.textBoxName.ReadOnly = true;this.textBoxPatronymic.ReadOnly = true;this.textBoxNetName.ReadOnly = true;this.comboBoxJobRole.Enabled = false;this.comboBoxStatus.Enabled = false;this.comboBoxAccess.Enabled = false;}

4. Сформируйте метод DisplayEdit аналогичным образом, который задает режим редактирования формы:

/// Задание режима редактированияpublic void DisplayEdit(){this.textBoxSurname.ReadOnly = false;this.textBoxName.ReadOnly = false;this.textBoxPatronymic.ReadOnly = false;this.textBoxNetName.ReadOnly = false;this.comboBoxJobRole.Enabled = true;this.comboBoxStatus.Enabled = true;this.comboBoxAccess.Enabled = true;}

5. Сформировать обработчик события Load.

Для управления режимом доступности (только для чтения/редактирование) формы FormEmployee необходимо метод DisplayReadOnly вызывать при первоначальной загрузке формы (событие Load), при создании новых данных по сотруднику и при редактировании данных по сотруднику, а метод DisplayEdit - при сохранении данных по сотруднику и при отмене режима редактирования данных.

6. Проверьте правильность режима управления доступностью элементов управления формы FormEmployee.

Анализ кодов методов DisplayReadOnly() и DisplayEdit() показывает, что они могут быть объединены в один метод с параметром.

7. Необходимо самостоятельно написать объединенный метод, получив в результате метод DisplayReadOnly(bool readOnly), в котором параматр readOnly определяет режим редактирования: если readOnly равен true, то режим только для просмотра, если равен false, то - редактирование.

В процессе работы приложения необходимо управлять доступом к пунктам меню формы FormEmployee.

При выборе в главном меню приложения пункта "Сотрудник" Windows-форма FormEmployee должна перейти в режим "Просмотр", что определяет доступ к пунктам меню "Создать", "Редактировать", "Удалить" и запрет доступа к подпунктам меню "Отменить", "Сохранить".

Если в режиме просмотр выбирается подпункт меню "Удалить", то в результате выполнения данной функции режим Windows-формы FormEmployee не должен измениться, т.е. форма должна остаться в режиме "Просмотр".

Если в режиме просмотр выбирается подпункт меню "Изменить", то Windows-формы FormEmployee должна перейти в режим "Редактирование". Данный режим предполагает, что разрешается доступ к подпунктам меню "Отменить", "Сохранить" и запрещается доступа к подпунктам меню "Создать", "Редактировать", "Удалить".

Аналогичным образом интерпретируются переходы формы FormEmployee из одного режима в другой. Такие же режимы необходимо соблюдать для контекстного меню и кнопок панели инструментов.

Для управления доступом к пунктам главного меню создайте методы MenuItemEnabled(bool itemEnabled), для контекстного меню – MenuItemContextEnabled (bool itemEnabled) и для кнопок панели управления – StripButtonEnabled(bool itemEnabled).

Управление доступностью пунктов главного и контекстного меню осуществляется через свойство Enabled класса ToolStripMenuItem, а кнопок панели управления - через свойство Enabled класса ToolStripButton.

Проверьте правильность режима управления пунктов главного и контекстного меню, а также кнопок панели управления формы FormEmployee.

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

private void DisplayForm(bool mode){DisplayReadOnly(mode);MenuItemEnabled(mode);MenuItemContextEnabled(mode);StripButtonEnabled(mode); }

Первоначальная установка режима "Просмотр" должна проводиться при первоначальной загрузке формы FormEmployee.

Содержание отчета

1. Создание требуемых элементов контроля для формы FormEmployee

2. Разработка методов для задания режимов "Просмотр", "Редактирование" для элементов контроля.

3. Разработка методов для задания режимов "Просмотр", "Редактирование" для управления активностью пунктов главного меню формы, контекстного меню и кнопок панели инструментов.

4. Формирование обработчиков события Load.

5. Тестирование программы.

Контрольные вопросы

1. Что представляет собой элемент управления TextBox?

2. Для чего предназначен метод ButtonBase?

3. Элемент управления CheckedListBox предназначен для?

4. Какой объект позволяет пользователю производить выбор заранее определенных элементов?

5. С помощью, каких объектов устанавливается дата?

Литература 3-4, 11-12].

Лабораторная работа №12

Работа с базой данных ИС средствами технологии 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 Ite m рис 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. Библиотечная система

Тема: Проектирование ИС. Система автоматизации для библиотеки

Система поддержки управления библиотекой должна обеспечивать операции над данными о читателях (добавление, удаление и изменение). В регистрационном списке читателей хранятся следующие сведения: фамилия, имя и отчество читателя; номер его читательского билета и дата выдачи билета, дата последней перерегистрации.

Наряду с регистрационным списком системой должен поддерживаться каталог библиотеки, где хранится информация о книгах (наименованиях): название, список авторов, библиотечный шифр, год и место издания, название издательства, общее количество экземпляров книги в библиотеке и количество экземпляров, доступных в текущий момент. Система обеспечивает добавление, удаление и изменение данных каталога, а также поиск книг в каталоге на основании введенного шифра или названия книги или фамилии автора. Читатели имеют доступ только к каталогу книг (они могут осуществлять в нем только поиск и просмотр).

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

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

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

Система должна выдавать библиотекарям следующую справочную информацию:

· какие книги были выданы за данный промежуток времени;

· какие книги были возвращены за данный промежуток времени;

· какие книги находятся у данного читателя;

· имеется ли в наличии некоторая книга.

Вариант задания предусматривает разработку схемы базы данных, хранящей данные о читателях, каталоге книг, реестре экземпляров.

 

 

Вариант 10. Web-форум

Тема: Проектирование ИС. Программное обеспечение Web-форума

Web-форум состоит из нескольких разделов. В каждом разделе содержатся темы, обсуждаемые его пользователями. Темы в разделе упорядочены по убыванию даты последнего ответа в тему. Каждая тема открывается заглавным сообщением и представляет собой древовидную структуру сообщений. Верхний уровень иерархии составляют сообщения, открывающие новые темы, а подуровни составляют сообщения, полученные в ответ на них и т. д.

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

Начальной страницей конференции является список разделов, на которой находятся ссылки на первые страницы разделов. Количество тем в разделе может быть большим, поэтому на первой странице раздела отображается список из первых 20 сообщений темы, на второй – следующие 20 и т. д. В списке отображаются только заголовки тем, их авторы и даты последних ответов. Просматривая список, пользователь может перейти на страницу заглавного сообщения темы. Помимо текста заглавного сообщения темы на этой странице отображается список (иерархический) сообщений являющихся ответами на заглавное, ответами на ответы и т. д. С этой страницы пользователь может перейти на страницу сообщения-ответа, на которой также отображается текст сообщения и дерево ответов. На всех страницах сообщений содержатся ссылки на заглавную страницу форума, на страницу текущего форума и на страницу заглавного сообщения темы.

Просматривать страницы форума могут любые пользователи Web. Зарегистрированные пользователи, осуществляют вход в форум, указывая имя и пароль. После входа пользователь может добавить ответ, заполнив форму на странице сообщения, также он может редактировать свои сообщения (в течение двух недель с момента их создания). Еще он имеет возможность начать новую тему, заполнив форму на странице раздела.

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

Администратор управляет правами пользователей, он может назначить кого-либо из них модератором (ведущим) какого-либо раздела. У одного раздела может быть несколько ведущих. Модератор имеет право удалять любые сообщения из раздела, редактировать их, переносить темы в другие разделы. Он также может наказывать пользователей, нарушающих правила поведения в форуме, лишая на некоторое время возможности добавлять и редактировать сообщения.

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

 

Вариант 11. Система должна описывать порядок подготовки к экзамену, предполагающий получение отличной оценки.

Вариант 12 Система должна описывать порядок выполнения практической работы по дисциплине «Проектирование ИС».

Вариант 13 Система должна описывать порядок получения водительских прав.

Вариант 14 Система должна описывать порядок организации городского спортивного соревнования.

Вариант 15 Система должна описывать порядок организации общеинститутского студенческого мероприятия.

Вариант 16 Система составления учебного графика дисциплин, изучаемых на факультете

Вариант 17 Система должна описывать порядок поставок товара в систему розничных киосков.

Вариант 18 Система должна описывать порядок обработки заказов в службе быта.

Вариант 19 Система должна описывать работу одного из участков автосалона.

Вариант 20 Система должна описывать работу приемного покоя в больнице.

Вариант 21 Система должна описывать порядок приема заявки на поставку продукции на хлебокомбинате.

Вариант 22 Система должна описывать процесс поставки сезонных товаров в оптовой фирме.

Вариант 23 Система должна описывать процесс работы торгового отдела.

Вариант 24 Система учета в видеопрокате.

Вариант 25 Система учета проката на лыжной баз


 

Приложение 2

Форма журнала отчетов по лабораторным работам

 

 

Федеральное агентство по образованию





Поделиться с друзьями:


Дата добавления: 2018-11-11; Мы поможем в написании ваших работ!; просмотров: 918 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Стремитесь не к успеху, а к ценностям, которые он дает © Альберт Эйнштейн
==> читать все изречения...

2153 - | 2108 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.