nsutextbook (1037554), страница 24

Файл №1037554 nsutextbook (Методические указания по выполнению лабораторной работы №1) 24 страницаnsutextbook (1037554) страница 242017-12-25СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 24)

Определение класса:Class User.Category Extends %Persistent [ ClassType = persistent, ProcedureBlock ]112{Property CategoryName As %String;Index InxCat On CategoryName As Exact [ Data = CategoryName ];Method AltCateg(categoryname As %String) As %Status{ // метод экземпляра: изменить название категорииSet ..CategoryName=categorynameQuit ..%Save()}}Решение:Создадим три csp-страницы:1. BookBrowse.csp – для просмотра всех объектов.2.

AddBooks1.csp – для добавления нового объекта3. AlterDel1.csp – для изменения и удаления существующего объектаСо страницы BookBrowse.csp по гиперссылке «Добавить книгу» вызывается страница AddBooks1.csp, которая является формой ввода новых объектов для класса «Книги».

Вполе ID страницы BookBrowse.csp по гиперссылке вызывается страница AlterDel1.csp, которая обеспечивает изменение удаление выбранного объекта.На страницах AddBooks1.csp и AlterDel1.csp находятся кнопки типа submit, по которым страница закрывается, и значения полей редактирования передаются форме BookBrowse.csp, определенной в параметре Action оператора Form. Страница BookBrowse.cspкаждый раз обновляется.

В начале страницы BookBrowse.csp располагается программныйкод Cache, который выполняет добавление, изменение или удаление объекта.BookBrowse.csp – форма просмотра.Внешний вид формы приведен на рис. 15.113Рисунок 15. BookBrowse.cspПрограммный код страницы BookBrowse.csp:<HTML><HEAD><TITLE>Пример разработки формы просмотра </TITLE></HEAD><BODY><script language="Cache" runat="server">if %request.Get("add")'=""{ // добавить объектdo ##class(Books).AddBook(%request.Get("title"),%request.Get("author"),%request.Get("count"),"",%request.Get("categ"),%request.Get("cena"))}if %request.Get("alter")'=""{ // изменить объектset book=##class(Books).%OpenId(%request.Get("id"))dobook.AlterBook(%request.Get("title"),%request.Get("author"),%request.Get("count"),"",%request.Get("categ"),%request.Get("cena"))}if %request.Get("del")'=""{ // удалить объектSet sc=##class(Books).%DeleteId(%request.Get("id"))}</script><script language=SQL name="query">SELECT ID,Category->CategoryName,CountPage,Decsription,Title,Authors114FROM Books ORDER BY Category->CategoryName</script><a href="AddBooks1.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></tr><tr><csp:while condition=query.Next()><td><a href=AlterDel1.csp?ID=#(query.Get("ID"))#>#(query.Get("ID"))# </a></td><td>#(query.Get("Title"))#</td><td>#(query.Get("Authors"))#</td><td>#(query.Get("CategoryName"))#</td><td>#(query.Get("CountPage"))#</td></tr></csp:while></table></BODY></HTML>AddBooks1.csp – добавление нового объектаВнешний вид страницы AddBooks1.csp приведен на рис.

16.115Рисунок 16. Страница AddBooks1.cspПрограммный код страницы AddBooks1.csp:<HTML><HEAD><TITLE>Добавить книгу </TITLE></HEAD><BODY><script language=SQL name="Cat">Select * from Category</script>Добавить книгу<form name="add" action="BookBrowse.csp">Название: <input type="text" name="title" value=""> <br>Автор: <input type="text" name="author" value=""><br>Категория:<select name="categ" size="1"><csp:while condition=Cat.Next()><option value='#(Cat.Get("ID"))#'>#(Cat.Get("CategoryName"))#</csp:while></select><br>Кол-во страниц: <input type="text" name="count" value=""><br><input type="submit" name="add" value="Сохранить"> <br></form></BODY></HTML>AlterDel1.csp – форма изменения и удаления существующего объектаВнешний вид страницы AlterDel1.csp приведен на рис. 17.Рисунок 17.

Страница AlterDel1.csp116Программный код страницы AlterDel1.csp:<HTML><HEAD><!-- Изменение и удаление книги --><TITLE>Изменение и удаление книги </TITLE></HEAD><BODY><script language=SQL name="Cat">Select * from Category</script><csp:object classname="Books" name="book"objid=#(%request.Get("ID"))#><form name="add" Action="BookBrowse.csp">Изменение и удаление книги #(%request.Get("ID"))# <br>ID:<input type="text" name="id" value="#(%request.Get("ID"))#"> <br>Название: <input type="text" name="title" value="#(book.Title)#"> <br>Автор:<input type="text" name="author" value="#(book.Authors.GetAt(1))#"><br>Категория:<select name="categ" size="1"><csp:while condition=Cat.Next()><option value='#(Cat.Get("ID"))#'><csp:if condition='book.CategoryGetObjectId()=Cat.Get("ID")'><option selected></csp:if>#(Cat.Get("CategoryName"))#</csp:while></select><br>Кол-во страниц: <input type="text" name="count" value="#(book.CountPage)#"><br><input type="submit" name="alter" value="Изменить"><input type="submit" name="del" value="Удалить"></form></BODY></HTML>Решение с использованием серверного метода на событие OnClick:onclick = "#server (..Method(…)предлагается выполнить самостоятельно.8.8.

Пример организации поиска экземпляра класса с использованием индексного глобалаПусть имеем класс Abonent со свойствами Fio – фамилия абонента, Login – его логическое имя, Password – пароль. Требуется создать интерфейс для поиска нужного экземпляра класса Abonent по значениям его свойств Login и Password.Такую задачу можно решить с использованием параметрического Select-запроса языка SQL, что и предлагается читателю сделать самостоятельно в качестве полезного упражнения.117Мы же будем использовать для организации поиска индексный глобаль.

Для этогосоздадим в классе Abonent индекс для свойства Login:Index LoginIndex On Login As Exact;Для непосредственного поиска требуется создать метод класса Abonent, назовем его,скажем, CheckPassw, который по заданным значениям Login и Password осуществляет поиск экземпляра в классе. В случае удачного поиска метод возвращает id найденного экземпляра, и 0(ноль) в случае, если экземпляр не найден. Для поиска по индексу используется функция $Order (см. главу 7, п.7.6.3). Структура хранения стандартных индексов ввиде глобалей приведена в п.7.7.4 главы 7. Код метода приведен ниже:ClassMethod CheckPassw(log As %String, passw As %String) As %Status{ set id=$Order(^User.AbonentI("LoginIndex",log,-1))if id="" quit 0Set obj=##class(User.Abonent).%OpenId(id)if obj.Password=passw quit idquit 0}Создадим также две csp-страницы.

Первая – это форма ввода значений Login и Password. Назовем ее VvodParol.csp. Внешний вид формы VvodParol.csp приведен на рис.18.Рисунок 18По кнопке «Ввод», которая является кнопкой типа submit, вызывается вторая страница, с именем CheckParol.csp, которая используется для обработки того, что введено в форму VvodParol.csp. Внешний вид страницы CheckParol.csp приведен на рис. 19.118Рисунок 19Каждый раз при загрузке страницы CheckParol.csp работает Cache-код, который выполняет поиск нужного экземпляра и информирует пользователя о результатах поиска.Код страницы VvodParol.csp приведен ниже:<HTML><HEAD><TITLE>Cache Server Page </TITLE></HEAD><BODY><form name="parol" action="CheckParol.csp">Введите <br>Логин:<INPUT TYPE="text" NAME="login" SIZE="10"><br>Пароль:<INPUT TYPE="password" NAME="passw" SIZE="10"><br><INPUT TYPE="submit" NAME="vvodpar" VALUE="Ввод"></form></BODY></HTML>Код страницы CheckParol.csp имеет вид:<TITLE> Cache Server Page </TITLE></HEAD><BODY>Проверка пароля <br><script language=Cache runat=server>set obj=##class(User.Abonent).CheckPassw(%request.Get("login"),%request.Get("passw"))</script><csp:if condition="obj'=0">пароль верен<csp:else>пароль не верен</csp:if></BODY></HTML>119Список литературы1.

Документация по СУБД Caché 5.0.2. СУБД Caché, объектно-ориентированная разработка приложений, Кирстен В.,Ирингер М., Рёриг В., Шульте П., С-Пб, 20013. Технологический справочник по СУБД Caché 5.0.4. Постреляционная технология Caché для реализации объектных приложений, Кречетов Н.Е., Петухов Е.А., Скворцов В.И., Умников А.В., Щукин Б.А., МИФИ, 20015. «Внутренний мир объектно-ориентированных СУБД», А. Андреев, Д. Березкин, Р.Самарев, Открытые системы, 20016.

«Постреляционная СУБД Caché», Сиротюк О. В.120.

Характеристики

Тип файла
PDF-файл
Размер
2,42 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6375
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее