Лабораторная работа № 3.




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

Проектирование объектно-ориентированной базы данных

План работы:

1. Разработка концептуальной и физической моделей предметной области.

Для решения поставленной задачи необходимо воспользоваться одной из диаграмм UML – диаграммой классов. Для этого необходимо определить основные объекты предметной области, их свойства, а также взаимоотношения между выбранными объектами.

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

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

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

1.Создание Caché проекта.

1.1.Создание необходимых классов Caché. Примеры работы с классами: создание, удаление, редактирование объектов.

1.2. Реализация требуемой функциональности с помощью методов класса Caché. Использование методов.

 

Создание Caché проекта

Создание Caché проекта предполагает:

1) создание всех необходимых классов, с использованием Class Wizard;

2) определение свойств классов, с использованием соответствующего мастера;

3) определения отношений между классами, с использованием мастера свойств;

4) определение методов классов и объектов с использование мастера методов.

Использование экземпляров класса.

Изучить основные принципы работы с объектами классов Caché с использованием утилиты Caché Terminal. Проработать следующие вопросы:

1) создание новых экземпляров класса;

2) присваивание свойствам объекта значений;

3) вывод значений свойств объекта;

4) вызов методов классов и объектов.

 

Выбор предметной области осуществляется по варианту, согласно номеру в журнале из таблицы 1.

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

Ниже приводится пример создания и работы с классами в среде Cache.

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

Разработаны три класса: Сотрудник(employee), Образование(education), Должность(post).

 

Таблица 1. Структура класса employee

Сотрудник – employee
Поле Тип данных Значение
  Name Текстовый Имя
  Surname Текстовый Фамилия
  Patronomic Текстовый Отчество
  Salary Целый Заработная плата
  Post Должность (post) Должность
  Education Коллекция (Список) – Образование (education) Список всех образований.
  Career Коллекция (Массив) – Должность (post) Карьера. Массив всех занимаемых должностей
Метод Список параметров Описание
  Report - Выводит информацию об объекте
  Fill AName, Asurname, Apatronomic, Asalary, Apost Заполняет объект полученными значениями
  NewPost Apost Изменяет текущую должность. Старая должность добавляется в массив Career. Если зарплата не попадает в диапазон новой должности, то корректируется зарплата.
  NewEducation AEducation Добавляется новое образование.

 

Таблица 2. Структура класса post

Должность – post
Поле Тип данных Значение
  Name Текстовый Наименование должности
  MinSalary Целый Минимальная возможная зарплата для должности
  MaxSalary Целый Максимальная возможная зарплата для должности
Метод Список параметров Описание
  Report - Выводит информацию об объекте

 

Таблица 3. Структура класса education

Образование – education
Поле Тип данных Значение
  Type Текстовый Тип образования (среднее, высшее и т.п.)
  Speciality Текстовый Специальность
Метод Список параметров Описание
  Report - Выводит информацию об объекте

 

Листинг 1. Код созданных классов

Class User.employee Extends %Persistent

{

 

Property Name As %String;

 

Property Surname As %String;

 

Property Patronomic As %String;

 

Property Salary As %Integer;

 

Property Post As post;

 

Property Education As list Of education;

 

Property Career As array Of post;

 

Method Report()

{

write "FIO: "_..Surname_" "_..Name_" "_..Patronomic,!,"Post: "

do..Post.Report()

write "Salary: "_..Salary,!

write "Education:",!

For i = 1:1:..Education.Count() {

write " "

do..Education.GetAt(i).Report()

}

write "Career:",!

For i = 1:1:..Career.Count() {

write " "

do..Career.GetAt(i).Report()

}

}

 

ClassMethod AddEmployee(name As %String, surname As %String, patronomic As %String, salary As %Integer, post As post) As employee

{

set emp=##class(employee).%New()

Set emp.Name = name

Set emp.Surname = surname

Set emp.Patronomic = patronomic

do emp.PostSetObjectId(post)

Set emp.Salary = salary

set sc=emp.%Save()

Quit emp

}

 

Method EditEmployee(name As %String, surname As %String, patronomic As %String, salary As %Integer, post As post)

{

Set..Name = name

Set..Surname = surname

Set..Patronomic = patronomic

do..PostSetObjectId(post)

Set..Salary = salary

set sc=##this.%Save()

}

 

Method NewPost(post As post)

{

Do..Career.SetAt(..Post,..Career.Count()+1)

Set..Post = post

if..Salary<..Post.MinSalary{

Set..Salary=..Post.MinSalary

}

if..Salary>..Post.MaxSalary{

Set..Salary=..Post.MaxSalary

}

set sc=##this.%Save()

}

 

Method NewEducation(education As education)

{

Do..Education.Insert(education)

set sc=##this.%Save()

}

 

Method DelEducation(i As %Integer)

{

Do..Education.RemoveAt(i)

set sc=##this.%Save()

}

 

}

 

Class User.education Extends %Persistent

{

 

Property Type As %String;

 

Property Speciality As %String;

 

Method Report()

{

write " "_..Type_" - "_..Speciality,!

}

 

Method EditEducation(type As %String, speciality As %String)

{

set..Type=type

set..Speciality=speciality

set sc=##this.%Save()

}

 

ClassMethod AddEducation(type As %String, speciality As %String) As education

{

set ed=##class(education).%New()

set ed.Type=type

set ed.Speciality=speciality

set sc=ed.%Save()

Quit ed

}

 

}

 

Class User.post Extends %Persistent

{

 

Property Name As %String;

 

Property MinSalary As %Integer;

 

Property MaxSalary As %Integer;

 

Method Report()

{

write..Name,!

}

 

Method EditPost(name As %String, minsalary As %Integer, maxsalary As %Integer)

{

set..Name=name

set..MinSalary=minsalary

set..MaxSalary=maxsalary

set sc=##this.%Save()

}

 

ClassMethod AddPost(name As %String, minsalary As %Integer, maxsalary As %Integer) As post

{

set post=##class(post).%New()

set post.Name=name

set post.MinSalary=minsalary

set post.MaxSalary=maxsalary

set sc=post.%Save()

Quit post

}

 

}

 

 

Ниже приведен терминальный скрипт создания объектов и заполнения их данными. Создаются три объекта класса post, 4 объекта класса education и 1 объект класса employee.

Листинг 2. Терминальный скрипт работы с объектами

Создаем объекты класса post.

set p= ##Class(User.post).%New()

set p.Name="Programmer"

set p.MinSalary=1000

set p.MaxSalary=2000

do p.%Save()

do p.%Close()

set p= ##Class(User.post).%New()

set p.Name="Head Programmer"

set p.MinSalary=2000

set p.MaxSalary=2800

do p.%Save()

do p.%Close()

set p= ##Class(User.post).%New()

set p.Name="Team Leader"

set p.MinSalary=2500

set p.MaxSalary=3500

do p.%Save()

do p.%Close()

Создаем объекты класса education.

set e=##class(User.education).%New()

set e.Type="Base"

set e.Speciality="School"

do e.%Save()

do e.%Close()

set e=##class(User.education).%New()

set e.Type="High"

set e.Speciality="ASU"

do e.%Save()

do e.%Close()

set e=##class(User.education).%New()

set e.Type="High"

set e.Speciality="KSD"

do e.%Save()

do e.%Close()

set e=##class(User.education).%New()

set e.Type="High"

set e.Speciality="PO"

do e.%Save()

do e.%Close()

Создаем объект класса employee.

set emp=##Class(User.employee).%New()

Получаем хэндл объекта класса post с номером 1.

set p=##Class(User.post).%OpenId(1)

Заполняем объект класса employee значениями.

do emp.Fill("Sergey", "Sergeev", "Sergeevitch",1250,p)

do p.%Close()

Получаем хэндл объекта класса post с номером 2.

set p=##Class(User.post).%OpenId(2)

Добавляем новую должность.

do emp.NewPost(p)

do p.%Close()

Получаем хэндл объекта класса post с номером 3.

set p=##Class(User.post).%OpenId(3)

Добавляем новую должность.

do emp.NewPost(p)

do p.%Close()

Получаем хэндл объекта класса education с номером 1.

set e=##Class(User.education).%OpenId(1)

Добавляем новое образование.

do emp.NewEducation(e)

do e.%Close()

Получаем хэндл объекта класса education с номером 2.

set e=##Class(User.education).%OpenId(2)

Добавляем новое образование.

do emp.NewEducation(e)

do e.%Close()

do emp.Report()

 

В результате выполнения последней команды в окно терминала выведется следующее:

 

FIO: Sergeev Sergey Sergeevitch

Post: Team Leader

Salary: 2500

Education:

Base – School

High – ASU

Career:

Programmer

Head Programmer

 

Идентификатор OID объектов, по умолчанию, является автоинкрементальным полем и иногда возникают трудности нахождения определенного OID объекта или создания списка OID некоторого класса, удовлетворяющих некоторым критериям. Определить значение идентификатора объекта можно используя встроенный запрос класса %Persistent – Extent.

 

set rset=## class(%ResultSet).%New(" User.education:Extent ")

do rset. Execute ()

while (rset. Next ()) {

if rset. Data ("Speciality")="ASU"{

set id=rset. Data ("ID"),!

}

}

Write id

 

Результатом выполнения запроса является коллекция объектов User.education. В общем случае при запросе Extent выполняется запрос вида SELECT %ID FROM Sample.Person. Если вы хотите получить конкретный объект, то нужно быть уверенным, что поле(или комбинация полей) используемая для отбора объектов (в данном случае это поле Speciality) является уникальным для каждого объекта. В противном случае коллекция объектов может содержать более одного объекта.

Лабораторная работа № 3.

Создание CSP-страниц

1. Для созданной в лабораторных работах №1,2 базы данных необходимо создать набор CSP-страниц отображающих данные.

2. Создать CSP-страницы позволяющие добавлять, редактировать и удалять данные.

3. На одной из CSP-страниц предусмотреть вывод решения согласно индивидуальному заданию.

Отчет должен содержать листинги и экранные формы всех созданных CSP-страниц.

Ниже приведен пример разработки CSP-страниц для базы данных, использовавшейся в качестве примера к лабораторной работе №2.

Для работы с информационной системой учета сотрудников на предприятии было разработано 11 csp страниц.

Первая страница EmployeeBrowse.csp предназначена для отображения списка сотрудников и вызова всех остальных страниц (рисунок 1).

 

Рисунок 1. Страница “Сотрудники” (EmployeeBrowse.csp)

 

Текст csp страницы “Сотрудники” приведен в листинге 3.

Листинг 3. EmployeeBrowse.csp

 

<html>

<head>

<title> Сотрудники </title>

</head>

<body>

<script language="Cache" runat="server">

if %request.Get("add")'=""

{

do ##class(employee).AddEmployee(%request.Get("name"),%request.Get("surname"),%request.Get("patronomic"),%request.Get("salary"),%request.Get("post"))

}

if %request.Get("edit")'=""

{

set emp=##class(employee).%OpenId(%request.Get("id"))

do emp.EditEmployee(%request.Get("name"),%request.Get("surname"),%request.Get("patronomic"),%request.Get("salary"),%request.Get("post"))

}

if %request.Get("del")'=""

{

set sc=##class(employee).%DeleteId(%request.Get("id"))

}

</script>

<script language=SQL name="query">

SELECT ID, Name, Surname, Patronomic, Salary, Post->Name as PostName

FROM employee ORDER BY ID

</script>

<a href="AddEmp.csp">Добавить сотрудника</a>

<table border=1 bgcolor="">

<tr>

<td><b>ID</b></td>

<td><b>Фамилия</b></td>

<td><b>Имя</b></td>

<td><b>Отчество</b></td>

<td><b>Заработная плата</b></td>

<td><b>Должность</b></td>

<td><b>Образование</b></td>

<td><b>Карьера</b></td>

</tr>

<csp:while condition=query.Next()>

<tr>

<td><a href=EditDelEmp.csp?ID=#(query.Get("ID"))#>#(query.Get("ID"))#</a></td>

<td>#(query.Get("Surname"))#</td>

<td>#(query.Get("Name"))#</td>

<td>#(query.Get("Patronomic"))#</td>

<td>#(query.Get("Salary"))#</td>

<td>#(query.Get("PostName"))#</td>

<td><a href=EdEmp.csp?ID=#(query.Get("ID"))#>образование</a></td>

<td><a href=PostEmp.csp?ID=#(query.Get("ID"))#>карьера</a></td>

</tr>

</csp:while>

</table>

<br>

<br>

<a href="EducationBrowse.csp">Справочник "Образование"</a>

<br>

<a href="PostBrowse.csp">Справочник "Должности"</a>

</body>

</html>

 

Рисунок 2. Страница “Образование” (EducationBrowse.csp)

 

Текст csp страницы “Образование” приведен в листинге 4.

Листинг 4. EducationBrowse.csp

 

<html>

<head>

<title> Образование </title>

</head>

<body>

<script language="Cache" runat="server">

if %request.Get("add")'=""

{

do ##class(education).AddEducation(%request.Get("type"),%request.Get("speciality"))

}

if %request.Get("edit")'=""

{

set ed=##class(education).%OpenId(%request.Get("id"))

do ed.EditEducation(%request.Get("type"),%request.Get("speciality"))

}

if %request.Get("del")'=""

{

set sc=##class(education).%DeleteId(%request.Get("id"))

}

</script>

<script language=SQL name="query">

SELECT ID, Type, Speciality

FROM education ORDER BY ID

</script>

<a href="AddEducation.csp">Добавить образование</a>

<table border=1 bgcolor="">

<tr>

<td><b>ID</b></td>

<td><b>Тип</b></td>

<td><b>Специальность</b></td>

</tr>

<csp:while condition=query.Next()>

<tr>

<td><a href=EditDelEd.csp?ID=#(query.Get("ID"))#>#(query.Get("ID"))#</a></td>

<td>#(query.Get("Type"))#</td>

<td>#(query.Get("Speciality"))#</td>

</tr>

</csp:while>

</table>

</body>

</html>

 

 

Рисунок 3. Страница “Добавить образование” (AddEducation.csp)

 

Текст csp страницы “Добавить образование” приведен в листинге 5.

Листинг 5. AddEducation.csp

 

<html>

<head>

<title> Добавление образования </title>

</head>

<body>

Добавление образования

<form name="add" action="EducationBrowse.csp">

Тип: <input type="text" name="type" value=""><br>

Специальность: <input type="text" name="speciality" value=""><br>

<input type="submit" name="add" value="Сохранить"><br>

</form>

</body>

</html>

 

 

Рисунок 4. Страница “Изменение и удаление образования” (EditDelEd.csp)

 

Текст csp страницы “Изменение и удаление образования” приведен в листинге 6.

Листинг 6. EditDelEd.csp

 

<html>

<head>

<title> Изменение и удаление образования </title>

</head>

<body>

<csp:object classname="education" name="ed" objid=#(%request.Get("ID"))#>

<form name="edit" Action="EducationBrowse.csp">

Изменение и удаление образования #(%request.Get("ID"))#<br>

ID: <input type="text" name="id" value="#(%request.Get("ID"))#"><br>

Тип: <input type="text" name="type" value="#(ed.Type)#"><br>

Специальность: <input type="text" name="speciality" value="#(ed.Speciality)#"><br>

<input type="submit" name="edit" value="Изменить"><br>

<input type="submit" name="del" value="Удалить"><br>

</form>

</body>

</html>

 

Рисунок 5. Страница “Должность” (PostBrowse.csp)

 

Текст csp страницы “Должность” приведен в листинге 7.

Листинг 7. PostBrowse.csp

 

<html>

<head>

<title> Должности </title>

</head>

<body>

<script language="Cache" runat="server">

if %request.Get("add")'=""

{

do ##class(post).AddPost(%request.Get("name"),%request.Get("minsalary"),%request.Get("maxsalary"))

}

if %request.Get("edit")'=""

{

set post=##class(post).%OpenId(%request.Get("id"))

do post.EditPost(%request.Get("name"),%request.Get("minsalary"),%request.Get("maxsalary"))

}

if %request.Get("del")'=""

{

set sc=##class(post).%DeleteId(%request.Get("id"))

}

</script>

<script language=SQL name="query">

SELECT ID, Name, MinSalary, MaxSalary

FROM post ORDER BY ID

</script>

<a href="AddPost.csp">Добавить должность</a>

<table border=1 bgcolor="">

<tr>

<td><b>ID</b></td>

<td><b>Наименование</b></td>

<td><b>Минимальная зарплата</b></td>

<td><b>Максимальная зарплата</b></td>

</tr>

<csp:while condition=query.Next()>

<tr>

<td><a href=EditDel.csp?ID=#(query.Get("ID"))#>#(query.Get("ID"))#</a></td>

<td>#(query.Get("Name"))#</td>

<td>#(query.Get("MinSalary"))#</td>

<td>#(query.Get("MaxSalary"))#</td>

</tr>

</csp:while>

</table>

</body>

</html>

 

 

Рисунок 6. Страница “Добавление должности” (AddPost.csp)

 

Текст csp страницы “Добавление должности” приведен в листинге 8.

Листинг 8. AddPost.csp

 

<html>

<head>

<title> Добавление должности </title>

</head>

<body>

Добавление должности

<form name="add" action="PostBrowse.csp">

Наименование: <input type="text" name="name" value=""><br>

Минимальная зарплата: <input type="text" name="minsalary" value=""><br>

Максимальная зарплата: <input type="text" name="maxsalary" value=""><br>

<input type="submit" name="add" value="Сохранить"><br>

</form>

</body>

</html>

 

 

Рисунок 7. Страница “Изменение и удаление должности” (EditDel.csp)

 

Текст csp страницы “Изменение и удаление должности” приведен в листинге 7.

Листинг 9. EditDel.csp

 

<html>

<head>

<title> Изменение и удаление должности </title>

</head>

<body>

<csp:object classname="post" name="post" objid=#(%request.Get("ID"))#>

<form name="edit" Action="PostBrowse.csp">

Изменение и удаление должности #(%request.Get("ID"))#<br>

ID: <input type="text" name="id" value="#(%request.Get("ID"))#"><br>

Наименование: <input type="text" name="name" value="#(post.Name)#"><br>

Минимальная зарплата: <input type="text" name="minsalary" value="#(post.MinSalary)#"><br>

Максимальная зарплата: <input type="text" name="maxsalary" value="#(post.MaxSalary)#"><br>

<input type="submit" name="edit" value="Изменить"><br>

<input type="submit" name="del" value="Удалить"><br>

</form>

</body>

</html>

 

 

Для добавления информации о новом сотруднике в базу данных разработана csp страница AddEmp.csp (рисунок 2). Данная csp страница вызывается по ссылке “Добавить сотрудника” на странице “Сотрудники”.

 

Рисунок 8. Страница “Добавление сотрудника” (AddEmp.csp)

 

Текст csp страницы “ Добавление сотрудника ” приведен в листинге 10.

Листинг 10. AddEmp.csp

 

<html>

<head>

<title> Добавление сотрудника </title>

</head>

<body>

<script language=SQL name="pst">

Select * from post

</script>

Добавление сотрудника

<form name="add" action="EmployeeBrowse.csp">

Фамилия: <input type="text" name="surname" value=""><br>

Имя: <input type="text" name="name" value=""><br>

Отчество: <input type="text" name="patronomic" value=""><br>

Заработная плата: <input type="text" name="salary" value=""><br>

Должность:

<select name="post" size=1>

<csp:while condition=pst.Next()>

<option value='#(pst.Get("ID"))#'>#(pst.Get("Name"))#

</csp:while>

</select><br>

<input type="submit" name="add" value="Сохранить"><br>

</form>

</body>

</html>

 

Рисунок 9. Страница “Изменение и удаление информации о сотруднике” (EditDelEmp.csp)

 

Текст csp страницы “Изменение и удаление информации о сотруднике” приведен в листинге 11.

Листинг 11. EditDelEmp.csp

 

<html>

<head>

<title> Изменение и удаление информации о сотруднике </title>

</head>

<body>

<script language=SQL name="pst">

Select * from post

</script>

<csp:object classname="employee" name="emp" objid=#(%request.Get("ID"))#>

<form name="edit" Action="EmployeeBrowse.csp">

Изменение и удаление информации о сотруднике #(%request.Get("ID"))#<br>

ID: <input type="text" name="id" value="#(%request.Get("ID"))#"><br>

Фамилия <input type="text" name="surname" value="#(emp.Surname)#"><br>

Имя: <input type="text" name="name" value="#(emp.Name)#"><br>

Отчество: <input type="text" name="patronomic" value="#(emp.Patronomic)#"><br>

Заработная плата: <input type="text" name="salary" value="#(emp.Salary)#"><br>

Должность:

<select name="post" size="1">

<csp:while condition=pst.Next()>

<option value='#(pst.Get("ID"))#'>

<csp:if condition='emp.PostGetObjectId()=pst.Get("ID")'>

<option selected>

</csp:if>

#(pst.Get("Name"))#

</csp:while>

</select><br>

<input type="submit" name="edit" value="Изменить"><br>

<input type="submit" name="del" value="Удалить"><br>

</form>

</body>

</html>

 

 

Рисунок 10. Страница “Информация об образовании сотрудника” (EdEmp.csp)

 

Текст csp страницы “Информация об образовании сотрудника” приведен в листинге 12.

Листинг 12. EdEmp.csp

 

<html>

<head>

<title> Информация об образовании сотрудника </title>

</head>

<body>

<script language=SQL name="ed">

Select * from education

</script>

<csp:object classname="employee" name="emp" objid=#(%request.Get("ID"))#>

<script language="Cache" runat="server">

if %request.Get("add")'=""

{

if emp.Education.FindObjectId(%request.Get("newed"),0)=""

{

set ed1=##class(education).%OpenId(%request.Get("newed"))

do emp.NewEducation(ed1)

}

}

if %request.Get("del")'=""

{

set i=1

While i<=emp.Education.Count()

{

if %request.Get("cb" _ emp.Education.GetAt(i).%Id())'=""

{

do emp.DelEducation(i)

}

else

{

set i=i+1

}

}

}

</script>

<form name="educ" method="POST">

Информация об образовании сотрудника #(%request.Get("ID"))#<br><br>

Фамилия: #(emp.Surname)#<br>

Имя: #(emp.Name)#<br>

Отчество: #(emp.Patronomic)#<br><br>

Образование:<br>

<script language="Cache" runat=server>

For i=1:1:emp.Education.Count()

{

write "<input type='checkbox' name='cb",emp.Education.GetAt(i).%Id(),"'>"

do emp.Education.GetAt(i).Report()

write "<br>"

}

</script><br>

<input type="submit" name="del" value="Удалить"><br><br>

<select name="newed" size="1">

<csp:while condition=ed.Next()>

<option value='#(ed.Get("ID"))#'>

#(ed.Get("Type"))# #(ed.Get("Speciality"))#

</csp:while>

</select>

<input type="submit" name="add" value="Добавить"><br>

</form>

</body>

</html>

 

Рисунок 11. Страница “Информация о карьере сотрудника” (PostEmp.csp)

 

Текст csp страницы “Информация о карьере сотрудника” приведен в листинге 13.

Листинг 13. PostEmp.csp

 

<html>

<head>

<title> Информация о карьере сотрудника </title>

</head>

<body>

<script language=SQL name="ps">

Select * from post

</script>

<csp:object classname="employee" name="emp" objid=#(%request.Get("ID"))#>

<script language="Cache" runat="server">

if %request.Get("add")'=""

{

set ps1=##class(post).%OpenId(%request.Get("newps"))

do emp.NewPost(ps1)

}

</script>

<form name="postform" method="POST">

Информация о карьере сотрудника #(%request.Get("ID"))#<br><br>

Фамилия: #(emp.Surname)#<br>

Имя: #(emp.Name)#<br>

Отчество: #(emp.Patronomic)#<br><br>

Занимаемые должности:<br>

<script language="Cache" runat=server>

For i=1:1:emp.Career.Count()

{

do emp.Career.GetAt(i).Report()

write "<br>"

}

</script><br>

<select name="newps" size="1">

<csp:while condition=ps.Next()>

<option value='#(ps.Get("ID"))#'>

#(ps.Get("Name"))#

</csp:while>

</select>

<input type="submit" name="add" value="Добавить"><br>

</form>

</body>

</html>

 

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

Задание лабораторной работы № 3 выполняется на основе лабораторных работ 1, 2, 3.

Задание:

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

2. В качестве предметной области используется предметная область из лабораторных работ №1, 2, 3.

2. Модифицировать CSP страницы, разработанные в ЛР № 3. Обеспечить их работу с распределенной версией БД.

 

В отчете предоставить:

 

1. Настройки серверов данных и сервера приложений.

2. Настройки областей (namespaces).

3. Модифицированные CSP страницы.

 

Таблица 4. Варианты индивидуальных заданий.

Задание
  В базе данных окружной избирательной комиссии хранится информация о людях, районах, избирательных участках. Необходимо вывести список всех избирателей имеющих право голоса. Необходимо вывести количество людей имеющих право голоса на введенный с клавиатуры момент времени, по каждому району и избирательному участку.
  В базе данных курсов иностранных языков хранится информация об изучаемых языках, студентах, группах, преподавателях и промежуточных экзаменах, которые студенты сдают каждый месяц для контроля успеваемости. Определить группу с наивысшей средней успеваемостью и вывести список её студентов.
  В гостиничной базе данных хранится информация о постояльцах, номерах, персонале, поселении постояльцев в номера. Необходимо вывести список всех постоянных клиентов: клиентов занимавших гостиничные номера более 3 раз.
  В базе данных библиотеки хранится информация о читателях, книгах, журналах, отделах библиотеки, истории выдачи книг (журналов). Необходимо вывести список из 5 наиболее часто выдаваемых книг(журналов) по заданному отделу.
  В базе данных ресторана хранится информация о персонале, блюдах, заказах, клиентах, столиках. Необходимо вывести информацию о 3 наиболее популярных блюдах по введенному месяцу.
  В факультетской базе данных хранится информация о студентах, преподавателях, группах, предметах и оценках. Необходимо вывести список всех студентов, имеющих средний балл ниже 4.
  В базе данных интернет-магазина хранится информация о клиентах, товарах, истории заказов каждого клиента, категориях товаров. Для выбранного клиента определить наиболее популярную категорию и вывести список из 5 товаров этой категории, которые клиент еще не заказывал.
  В базе данных почтового агентства хранится информация о жителях, районах и улицах, почтальонах, и поступающей корреспонденция. Каждый почтальон закреплен за определенным набором улиц. Необходимо для введенного почтальона определить список всей корреспонденции, которую необходимо доставить на текущий день.
  В базе данных хранится информациях о домашней коллекции книг и дисков. Помимо информации о книгах и дисках, хранится информация об истории обмена дисками и книгами с другими людьми. Необходимо вывести информацию обо всех отданных книгах и дисках находящихся сейчас на руках.
  В базе данных страхового агентства хранится информация о клиентах, видах страхования, сотрудниках и заключенных страховых договорах. Определить процент договоров, по которым производились страховые выплаты за введенный период.
  В базе данных книжного магазина хранится информация о книгах, авторах, сотрудниках магазина и продажах книг. Вывести список из 10 наименее продаваемых книг за введенный период.
  В базе данных футбольной федерации хранится информация о футбольных командах, соревнованиях, игроках и матчах. Вывести список пяти наиболее результативных (то есть забивших наибольшее количество голов) игроков заданном соревновании.
  В базе данных хранится информация о программистах, командах, тимлидерах и проектах. Необходимо вывести команду программистов, наиболее оперативно выполняющую проекты. При расчете оперативности должны учитываться сложность проекта, количество человек в команде и время выполнения.
  В базе данных кадрового агентства хранится информация о соискателях, работодателях, вакансиях, резюме. Вывести список из трех наиболее подходящих друг-друг пар вакансия/резюме.
  В базе данных шахматного клуба хранится информация о шахматистах, соревнованиях (матчи и турниры) и сыгранных партиях. Для заданного игрока вывести список из 5 наиболее успешных для него соревнований (с наибольшим процентом набранных очков).
  В базе данных супермаркета хранится информация о товарах (продовольственных и не продовольственных), торговых залах супермаркета, продажах товаров и о кассирах отпускающих товар(кассиры закреплены за торговыми залами). Необходимо определить торговый зал продавший товаров (обоих типов) на наибольшую суму за определенную дату.
  В базе данных учета семейного бюджета хранится информация о доходах/расходах, статьях расходов(постоянных и случайных) и источниках доходов (постоянных и случайных), а также о членах семьи. Определить наиболее и наименее расходную статью постоянных расходов семейного бюджета.
  В базе данных туристического агентства хранится информация о заранее определенных туристических маршрутах (заграничных, местных и смешанных), клиентах, туристических группах (состоящих из клиентов) и поездах групп. Вывести список наиболее популярных туров отдельно по каждой категории.
  В базе данных супермаркета хранится информация о товарах (продовольственных и не продовольственных), торговых залах супермаркета, продажах товаров и о кассирах отпускающих товар(кассиры закреплены за торговыми залами). Необходимо определить торговый зал продавший товаров (обоих типов) на наибольшую суму за определенную дату.
  В банковской базе данных хранится информация о клиентах (физические и юридические лица), кредитах, графике погашения кредитов и о платежах погашения кредитов. Вывести список всех клиентов имеющих задолженность по погашению кредита.
  В базе данных химической лаборатории хранится информация о запасах реактивов (простых и сложных веществах), сотрудниках лаборатории, отделах лаборатории, использовании реактивов сотрудниками. Необходимо для введенного отдела определить список из 5 наиболее часто используемых реактивов.
  В складской базе данных хранится информация о пуступлениях и отгрузках продукции, партнерах, других отделах предприятия. Необходимо вывести список всех поступлений/отгрузок продукции за определенный период.
  В базе данных предприятия хранится информация о заказчиках, поставщиках, видах продукции и поставках/отгрузках продукции. Необходимо вывести список всех поставок/отгрузок продукции за введенный период по заданному клиенту.
  В базе данных железнодорожной станции хранится информация о пунктах назначения поездов, поездах, времени прибытия и отбытия поездов (планируемом и фактическом), платформах и путях. Вывести информацию обо всех опоздавших поездах на заданное число
   

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: