WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 |   ...   | 2 | 3 || 5 |

} tx.Commit();

NHibernateHelper.CloseSession();

} } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer.

// InitializeComponent();

base.OnInit(e);

} ///

/// Required method for Designer support - do not modify /// the contents of this method with the code editor.

///

private void InitializeComponent() { this.authorList.SelectedIndexChanged += new System.EventHandler(this.authorList_SelectedIndexChanged);

this.yearListBox.SelectedIndexChanged += new System.EventHandler(this.yearListBox_SelectedIndexChanged);

this.ISBNListBox.SelectedIndexChanged += new System.EventHandler(this.ISBNListBox_SelectedIndexChanged);

this.publisherListBox.SelectedIndexChanged += new System.EventHandler(this.publisherListBox_SelectedIndexChanged);

this.titleList.SelectedIndexChanged += new System.EventHandler(this.titleList_SelectedIndexChanged);

this.authorListBox.SelectedIndexChanged += new System.EventHandler(this.authorListBox_SelectedIndexChanged);

this.titleListBox.SelectedIndexChanged += new System.EventHandler(this.titleListBox_SelectedIndexChanged);

this.Load += new System.EventHandler(this.Page_Load);

} #endregion private void authorList_SelectedIndexChanged (object sender, System.EventArgs e) { if((sender as DropDownList).SelectedIndex == 0) { authorListBox.Items.Clear();

titleListBox.Items.Clear();

publisherListBox.Items.Clear();

ISBNListBox.Items.Clear();

yearListBox.Items.Clear();

getLink.Enabled = false;

return;

} int selID = Int32.Parse((sender as DropDownList).SelectedItem.Value);

string selAuth = (sender as DropDownList).SelectedItem.Text;

ISession session = NHibernateHelper.GetCurrentSession();

ITransaction tx = session.BeginTransaction();

IQuery query = session.CreateQuery ("select a, b from Author a, Book b where a.ID = :ID " + "and b in elements(a.Books)");

query.SetString("ID", selID.ToString());

ListItem item;

Book b;

authorListBox.Items.Clear();

titleListBox.Items.Clear();

publisherListBox.Items.Clear();

ISBNListBox.Items.Clear();

yearListBox.Items.Clear();

getLink.Enabled = false;

titleList.SelectedIndex = 0;

foreach(object[] arr in query.Enumerable()) { b = arr[1] as Book;

item = new ListItem(selAuth, b.ID.ToString());

authorListBox.Items.Add(item);

item = new ListItem(b.Title, b.ID.ToString());

titleListBox.Items.Add(item);

item = new ListItem(b.Publisher.Title, b.ID.ToString());

publisherListBox.Items.Add(item);

item = new ListItem(b.ISBN, b.ID.ToString());

ISBNListBox.Items.Add(item);

item = new ListItem(b.Year.ToString(), b.ID.ToString());

yearListBox.Items.Add(item);

} tx.Commit();

NHibernateHelper.CloseSession();

} private void titleList_SelectedIndexChanged (object sender, System.EventArgs e) { if((sender as DropDownList).SelectedIndex == 0) { authorListBox.Items.Clear();

titleListBox.Items.Clear();

publisherListBox.Items.Clear();

ISBNListBox.Items.Clear();

yearListBox.Items.Clear();

getLink.Enabled = false;

return;

} int selID = Int32.Parse((sender as DropDownList).SelectedItem.Value);

string selTitle = (sender as DropDownList).SelectedItem.Text;

ISession session = NHibernateHelper.GetCurrentSession();

ITransaction tx = session.BeginTransaction();

IQuery query = session.CreateQuery ("select a, b from Author a, Book b where b.ID = :ID " + "and a in elements(b.Authors)");

query.SetString("ID", selID.ToString());

ListItem item;

Author a;

Book b;

authorListBox.Items.Clear();

titleListBox.Items.Clear();

publisherListBox.Items.Clear();

ISBNListBox.Items.Clear();

yearListBox.Items.Clear();

getLink.Enabled = false;

authorList.SelectedIndex = 0;

foreach(object[] arr in query.Enumerable()) { a = arr[0] as Author;

b = arr[1] as Book;

item = new ListItem(a.Surname + ", " + a.FirstName, b.ID.ToString());

authorListBox.Items.Add(item);

item = new ListItem(selTitle, b.ID.ToString());

titleListBox.Items.Add(item);

item = new ListItem(b.Publisher.Title, b.ID.ToString());

publisherListBox.Items.Add(item);

item = new ListItem(b.ISBN, b.ID.ToString());

ISBNListBox.Items.Add(item);

item = new ListItem(b.Year.ToString(), b.ID.ToString());

yearListBox.Items.Add(item);

} tx.Commit();

NHibernateHelper.CloseSession();

} private void authorListBox_SelectedIndexChanged (object sender, System.EventArgs e) { int selInd = (sender as ListBox).SelectedIndex;

authorListBox.SelectedIndex = selInd;

titleListBox.SelectedIndex = selInd;

publisherListBox.SelectedIndex = selInd;

ISBNListBox.SelectedIndex = selInd;

yearListBox.SelectedIndex = selInd;

ISession session = NHibernateHelper.GetCurrentSession();

ITransaction tx = session.BeginTransaction();

IQuery query = session.CreateQuery ("select b from Book b where b.ID = :ID");

query.SetString("ID", (titleListBox as ListBox).SelectedValue);

foreach(Book b in query.Enumerable()) { getLink.NavigateUrl = b.Link;

break;

} getLink.Enabled = true;

tx.Commit();

NHibernateHelper.CloseSession();

} private void titleListBox_SelectedIndexChanged (object sender, System.EventArgs e) { int selInd = (sender as ListBox).SelectedIndex;

authorListBox.SelectedIndex = selInd;

titleListBox.SelectedIndex = selInd;

publisherListBox.SelectedIndex = selInd;

ISBNListBox.SelectedIndex = selInd;

yearListBox.SelectedIndex = selInd;

ISession session = NHibernateHelper.GetCurrentSession();

ITransaction tx = session.BeginTransaction();

IQuery query = session.CreateQuery ("select b from Book b where b.ID = :ID");

query.SetString("ID", (titleListBox as ListBox).SelectedValue);

foreach(Book b in query.Enumerable()) { getLink.NavigateUrl = b.Link;

break;

} getLink.Enabled = true;

tx.Commit();

NHibernateHelper.CloseSession();

} private void publisherListBox_SelectedIndexChanged (object sender, System.EventArgs e) { int selInd = (sender as ListBox).SelectedIndex;

authorListBox.SelectedIndex = selInd;

titleListBox.SelectedIndex = selInd;

publisherListBox.SelectedIndex = selInd;

ISBNListBox.SelectedIndex = selInd;

yearListBox.SelectedIndex = selInd;

getLink.Enabled = true;

} private void ISBNListBox_SelectedIndexChanged (object sender, System.EventArgs e) { int selInd = (sender as ListBox).SelectedIndex;

authorListBox.SelectedIndex = selInd;

titleListBox.SelectedIndex = selInd;

publisherListBox.SelectedIndex = selInd;

ISBNListBox.SelectedIndex = selInd;

yearListBox.SelectedIndex = selInd;

ISession session = NHibernateHelper.GetCurrentSession();

ITransaction tx = session.BeginTransaction();

IQuery query = session.CreateQuery ("select b from Book b where b.ID = :ID");

query.SetString("ID", (titleListBox as ListBox).SelectedValue);

foreach(Book b in query.Enumerable()) { getLink.NavigateUrl = b.Link;

break;

} getLink.Enabled = true;

tx.Commit();

NHibernateHelper.CloseSession();

} private void yearListBox_SelectedIndexChanged (object sender, System.EventArgs e) { int selInd = (sender as ListBox).SelectedIndex;

authorListBox.SelectedIndex = selInd;

titleListBox.SelectedIndex = selInd;

publisherListBox.SelectedIndex = selInd;

ISBNListBox.SelectedIndex = selInd;

yearListBox.SelectedIndex = selInd;

ISession session = NHibernateHelper.GetCurrentSession();

ITransaction tx = session.BeginTransaction();

IQuery query = session.CreateQuery ("select b from Book b where b.ID = :ID");

query.SetString("ID", (titleListBox as ListBox).SelectedValue);

foreach(Book b in query.Enumerable()) { getLink.NavigateUrl = b.Link;

break;

} getLink.Enabled = true;

tx.Commit();

NHibernateHelper.CloseSession();

} } } Форма аутентификации Вид форма аутентификации в графическом редакторе форм Microsoft Visual Studio представлен на Рис. 11.

Рисунок 11. Форма аутентификации в редакторе форм.

Далее приведен HTML-код формы аутентификации.

<%@ Page language="c#" Codebehind="Login.aspx.cs" AutoEventWireup="false" Inherits="CMC.SDT.Library.Login" %> 4 Лабораторная работа 1 Данный документ является описанием лабораторной работы 1 к курсу «Технологии программирования. Компонентный подход». Задача этой лабораторной работы —

Login

absolute; TOP: 72px" runat="server" Width="48px" Height="32px">User

POSITION: absolute; TOP: 72px" runat="server" Width="192px">

POSITION: absolute; TOP: 104px" runat="server" Width="72px" Height="32px" >Password

POSITION: absolute; TOP: 104px" runat="server" Width="192px" TextMode="Password">

POSITION: absolute; TOP: 136px" runat="server" Width="96px" Height="32px" Text="Login">

absolute; TOP: 104px" runat="server" Height="24px" Width="56px" Visible="False">

absolute; TOP: 80px" runat="server" Height="24px" Width="56px" Visible="False">EditForm.aspx

absolute; TOP: 184px" runat="server" Height="48px" Width="416px" Visible="False" Font-Bold="True" ForeColor="Red">Label

На этой форме размещены три вспомогательных элемента-метки (Label), которые не видны при первой загрузке формы.

Метка message используется для показа пользователю сообщения о неверно введенном имени или пароле. Она становится видна, только когда вводится неверное имя пользователя или неверный пароль.

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

Метка returnURL используется для хранения ссылки, по которой нужно перейти в случае успешной аутентификации. Эта метка тоже чисто вспомогательная, никогда не видна.

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

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Web.Security;

using NHibernate;

namespace CMC.SDT.Library { ///

/// Summary description for Login.

///

public class Login : System.Web.UI.Page { protected System.Web.UI.WebControls.Label userLabel;

protected System.Web.UI.WebControls.Label passwordLabel;

protected System.Web.UI.WebControls.TextBox userTextBox;

protected System.Web.UI.WebControls.TextBox passwordTextBox;

protected System.Web.UI.WebControls.Label returnURL;

protected System.Web.UI.WebControls.Label message;

protected System.Web.UI.WebControls.Button loginButton;

protected System.Web.UI.WebControls.Label notLabel;

protected const int maxNumberOfTrials = 5;

protected int numberOfTrials = 0;

private void Page_Load(object sender, System.EventArgs e) { // Put user code to initialize the page here if(notLabel.Text == null || notLabel.Text.Equals("")) { notLabel.Text = "0";

if(Request.QueryString["ReturnUrl"] != null) returnURL.Text = Request.QueryString["ReturnUrl"];

} else { numberOfTrials = Int32.Parse(notLabel.Text)+1;

notLabel.Text = numberOfTrials.ToString();

message.Visible = true;

message.Text = "Unknown login or incorrect password, please, try again";

if(numberOfTrials >= maxNumberOfTrials) { Server.Transfer("../MainForm.aspx");

} } } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer.

// InitializeComponent();

base.OnInit(e);

} ///

/// Required method for Designer support - do not modify /// the contents of this method with the code editor.

///

private void InitializeComponent() { this.loginButton.Click += new System.EventHandler (this.loginButton_Click);

this.Load += new System.EventHandler(this.Page_Load);

} #endregion private void loginButton_Click(object sender, System.EventArgs e) { ISession session = NHibernateHelper.GetCurrentSession();

ITransaction tx = session.BeginTransaction();

//int nt = Int32.Parse(numberOfTrials.Text);

IQuery query = session.CreateQuery ("select u from PrivilegedUser u where u.Login = :Login");

query.SetString("Login", userTextBox.Text);

foreach(PrivilegedUser u in query.Enumerable()) { if( (u.Password == null && passwordTextBox.Text.Equals("")) || u.Password.Equals(passwordTextBox.Text)) FormsAuthentication.RedirectFromLoginPage(userTextBox.Text, true);

break;

} tx.Commit();

NHibernateHelper.CloseSession();

} } } Приложение 8.

Примеры модульных и системных тестов для приложения.

В этом приложении представлены варианты модульных тестов и системных тестов для описанных в Приложениях 5 и 6 архитектуры пользовательского интерфейса и проекта форм приложения.

Модульные тесты. Основная форма приложения и навигация с нее 1. Проверить, что в начальном состоянии видимые элементы управления формы не содержат никаких данных, ссылка для добавления новой книги активна, ссылка для редактирования книги неактивна, ссылка на страницу книги на одном из Интернетмагазинов неактивна.

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

3. Выполнить 2 для разных авторов последовательно. Проверить, что все работает так же (книги первого автора пропадают, книги второго появляются).

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

5. Выбрать название одной из книг в БД. Проверить, что форма заполняется информацией об этой книге.

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

Проверить, что подсвечиваются все соответствующие элементы всех (невыпадающих) списков. Проверить, что становятся активными ссылка для редактирования книги и ссылка на страницу книги в одном из Интернет-магазинов.

7. Выделить одну из нескольких книг, информация о которых представлена на форме и которые имеют ссылку на страницу в одном из Интернет-магазинов.

Попробовать перейти на эту страницу. Проверить, что страница открывается.

8. Попробовать перейти по ссылке добавления новой книги, ни разу до этого не проводя аутентификации (или выполнив удаление файлов cookie в настройках браузера). Проверить, что открывается форма аутентификации.

Pages:     | 1 |   ...   | 2 | 3 || 5 |






















© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.