SlideShare a Scribd company logo
1 of 54
РАЗРАБОТКА НА
МНОГОСЛОЙНИ
ПРИЛОЖЕНИЯ
Цветелин Павлов
Презентациите от курса




http://www.slideshare.net/cpavlov
Скица на приложението
План на курса

Обща информация, определения
Сценарий за разработка
Разработка на базата данни и обектния домейн
Създаване на функционалностите за работа със
 студентски данни
  Създаване на формуляр за редакция
• Разработка на функционалностите за работа с
 оценки
Скица на приложението
METRO UI
Metro User Interface
Metro User Interface
Windows 8 User Interface
Metro User Interface
Windows 8 User Interface
      Modern UI
Windows 8 Start Menu
Zune Player
Cookbook
Windows Phone
Facebook for Windows Phone
Teleriк
DevExpress
DotNetBar
Metro UI


• Не се подчинява на концепцията „физически
  прозорец“
• „Съдържанието е господар“ / “Content before
  chrome”
• Една задача на екран
• Големи контроли, удобни и при работа с
  устройства, реагиращи на докосване
Списък студенти
Редакция на студент
Списък оценки
Редакция на оценка
УПРАЖНЕНИЕ № 3
Създаване на формуляр за редакция
Проект




http://www.uni-ruse.bg/info-sys/lab-3.zip
План на упражнението



• Създаване на формуляр за редакция на данните
  на студент
• Валидация на формуляра
• Добавяне на снимка
ФОРМУЛЯР ЗА
РЕДАКЦИЯ
Имплементиране на функционалностите за
редакция на данните на студент
VIEW
StudentEditView.xaml
Етикети

<Label Content="Факултетен номер" Margin="8"/>

<Label Content="Собствено име" Margin="8"
    Grid.Row="1"/>

<Label Content="Фамилия" Margin="8"
    Grid.Row="2"/>
Поле за факултетен номер


<TextBox
    Text="{Binding Path=StudentID,Mode=TwoWay}"
    IsEnabled="{Binding Path=IsNew}"
    Grid.Column="1"
    MinWidth="60"
    Margin="8" />
Поле за собствено име


<TextBox
    Text="{Binding Path=FirstName,Mode=TwoWay}"
    Grid.Column="1" Grid.Row="1"
    Grid.ColumnSpan="2"
    Margin="8" />
Поле за фамилия


<TextBox
    Text="{Binding Path=LastName, Mode=TwoWay}"
    Grid.Column="1" Grid.Row="2"
    Grid.ColumnSpan="2"
    Margin="8" />
Бутон за запазване

<Button
    Command="{Binding Path=SaveStudent}"
    Content="Запази"
    Grid.Column="2" Grid.Row="3" Margin="8"
    Height="24" Width="104"
    Style="{DynamicResource SquareButtonStyle}"
/>
VIEW MODEL
StudentEditViewModel.vb
Обработчик на командата


Private Sub whenSaveStudent()
    Model.SaveStudent(Student)
    theMediator.DoRefresh()
    theMediator.SetTab(0)
End Sub
ВАЛИДАЦИЯ
Гледката с формуляра
Валидацията в действие
VIEW MODEL
StudentEditViewModel.vb
Имплементиране на IDataErrorInfo

Public Class StudentEditViewModel
    Inherits ViewModelBase
    Implements IStudentEditViewModel
    Implements IInterestedInStudent
    Implements IDataErrorInfo

[…]

End Class
Свойството Error


Public ReadOnly Property [Error] As String
Implements IDataErrorInfo.Error
    Get
        Return String.Empty
    End Get
End Property
Помощната функция
Private Function TestString(
    regEx As String,
    value As String,
    message As String
) As String
    If value IsNot Nothing Then
        Dim regExp As New Regex(regEx)
        If Not regExp.IsMatch(value) Then
             Return message
        End If
    End If
    Return String.Empty
End Function
Свойството Item
Default Public ReadOnly Property
Item(columnName As String) As String Implements
IDataErrorInfo.Item
    Get
        Select Case columnName
             Case "StudentID"
             Case "FirstName"
             Case "LastName"
        End Select
        Return String.Empty
    End Get
End Property
Свойството Item

[…]
       Select Case columnName
           Case "StudentID"

Return TestString("^d{6}$", StudentID,
"Некоректно въведен факултетен номер")

[…]
Свойството Item

[…]
       Select Case columnName
           Case "FirstName"

Return TestString("^[p{IsCyrillic}]{3,50}$",
FirstName, "Некоректно въведено собствено име")

[…]
Свойството Item

[…]
       Select Case columnName
           Case "LastName"

Return TestString("^[p{IsCyrillic}]{3,100}$",
LastName, "Некоректно въведена фамилия")

[…]
2ри обработчик на командата


Private Function canSaveStudent() As Boolean
    Return IsChanged _
    AndAlso Me("StudentID") = String.Empty _
    AndAlso Me("FirstName") = String.Empty _
    AndAlso Me("LastName") = String.Empty
End Function
VIEW
StudentEditView.xaml
Поле за факултетен номер
<TextBox
    Text="{Binding Path=StudentID,
         Mode=TwoWay,
         ValidatesOnDataErrors=True,
         NotifyOnValidationError=True,
         UpdateSourceTrigger=PropertyChanged}"
    IsEnabled="{Binding Path=IsNew}"
    Grid.Column="1"
    MinWidth="60"
    Margin="8" />
Поле за собствено име

<TextBox
    Text="{Binding Path=FirstName,
         Mode=TwoWay,
         ValidatesOnDataErrors=True,
         NotifyOnValidationError=True,
         UpdateSourceTrigger=PropertyChanged}"
    Grid.Column="1" Grid.Row="1"
    Grid.ColumnSpan="2"
    Margin="8" />
Поле за фамилия

<TextBox
    Text="{Binding Path=LastName,
         Mode=TwoWay,
         ValidatesOnDataErrors=True,
         NotifyOnValidationError=True,
         UpdateSourceTrigger=PropertyChanged}"
    Grid.Column="1" Grid.Row="2"
    Grid.ColumnSpan="2"
    Margin="8" />
СНИМКА
Визуализация на снимка
VIEW
StudentEditView.xaml
Снимка
<StackPanel
    Orientation="Vertical"
    Grid.Column="3" Grid.RowSpan="5">

   <Label Content="Снимка:" />
   <Border
       BorderThickness="1" BorderBrush="Black"
       Margin="8" Padding="0">
       <Image
           Source="{Binding Path=PhotoURL}"
           Stretch="UniformToFill"
           Margin="0" />
   </Border>

</StackPanel>
КОМПИЛИРАЙТЕ
И
ТЕСТВАЙТЕ
КРАЙ НА
УПРАЖНЕНИЕ № 3
Цветелин Павлов
pavlov@ecs.uni-ruse.bg

More Related Content

Viewers also liked

Avances tecnologicos sebas y lizeth
Avances tecnologicos sebas y lizethAvances tecnologicos sebas y lizeth
Avances tecnologicos sebas y lizethAnitapinzon021
 
Locke. giza adimenari buruzko entseiua i
Locke. giza adimenari buruzko entseiua iLocke. giza adimenari buruzko entseiua i
Locke. giza adimenari buruzko entseiua ihausnartzen
 
Enojo humahuaqueño
Enojo humahuaqueñoEnojo humahuaqueño
Enojo humahuaqueñoJoh Rudich
 
Open Space Technology
Open Space TechnologyOpen Space Technology
Open Space TechnologyVisi Serrano
 
Slides conselho de classe 1º trimestre 2014
Slides conselho de classe 1º trimestre 2014Slides conselho de classe 1º trimestre 2014
Slides conselho de classe 1º trimestre 2014Polivalente Linhares
 
Under grad portfolio 2009
Under grad portfolio 2009Under grad portfolio 2009
Under grad portfolio 2009Devin Engle
 
IAula multigradual de sordos como experiencia de vida en la Escuela Normal Su...
IAula multigradual de sordos como experiencia de vida en la Escuela Normal Su...IAula multigradual de sordos como experiencia de vida en la Escuela Normal Su...
IAula multigradual de sordos como experiencia de vida en la Escuela Normal Su...Nicolas Ibargüen Arboleda
 
Keep Calm and Study On
Keep Calm and Study OnKeep Calm and Study On
Keep Calm and Study OnTadeu Marinho
 
Renovando energias, renovando ideias com gcompris
Renovando energias, renovando ideias com gcomprisRenovando energias, renovando ideias com gcompris
Renovando energias, renovando ideias com gcomprishyandra
 

Viewers also liked (19)

DiseñObasadoencompetencias
DiseñObasadoencompetenciasDiseñObasadoencompetencias
DiseñObasadoencompetencias
 
Los Tuaregs
Los TuaregsLos Tuaregs
Los Tuaregs
 
Avances tecnologicos sebas y lizeth
Avances tecnologicos sebas y lizethAvances tecnologicos sebas y lizeth
Avances tecnologicos sebas y lizeth
 
El Exito Grande
El Exito GrandeEl Exito Grande
El Exito Grande
 
Locke. giza adimenari buruzko entseiua i
Locke. giza adimenari buruzko entseiua iLocke. giza adimenari buruzko entseiua i
Locke. giza adimenari buruzko entseiua i
 
Rosario Mpc
Rosario MpcRosario Mpc
Rosario Mpc
 
A arte no cotidiano
A arte no cotidianoA arte no cotidiano
A arte no cotidiano
 
Enojo humahuaqueño
Enojo humahuaqueñoEnojo humahuaqueño
Enojo humahuaqueño
 
Open Space Technology
Open Space TechnologyOpen Space Technology
Open Space Technology
 
Encuestas
EncuestasEncuestas
Encuestas
 
Test1
Test1Test1
Test1
 
Slides conselho de classe 1º trimestre 2014
Slides conselho de classe 1º trimestre 2014Slides conselho de classe 1º trimestre 2014
Slides conselho de classe 1º trimestre 2014
 
Under grad portfolio 2009
Under grad portfolio 2009Under grad portfolio 2009
Under grad portfolio 2009
 
Componentes Cpu
Componentes CpuComponentes Cpu
Componentes Cpu
 
VRNDANCERESUME
VRNDANCERESUMEVRNDANCERESUME
VRNDANCERESUME
 
IAula multigradual de sordos como experiencia de vida en la Escuela Normal Su...
IAula multigradual de sordos como experiencia de vida en la Escuela Normal Su...IAula multigradual de sordos como experiencia de vida en la Escuela Normal Su...
IAula multigradual de sordos como experiencia de vida en la Escuela Normal Su...
 
Keep Calm and Study On
Keep Calm and Study OnKeep Calm and Study On
Keep Calm and Study On
 
Cuaderno De Gestion Media
Cuaderno De Gestion MediaCuaderno De Gestion Media
Cuaderno De Gestion Media
 
Renovando energias, renovando ideias com gcompris
Renovando energias, renovando ideias com gcomprisRenovando energias, renovando ideias com gcompris
Renovando energias, renovando ideias com gcompris
 

Similar to Информационни системи - упражнение № 3

Програмиране с Питон - Django, част 2
Програмиране с Питон - Django, част 2Програмиране с Питон - Django, част 2
Програмиране с Питон - Django, част 2Alek Andreev
 
Информационни системи - упражнение № 1
Информационни системи - упражнение № 1Информационни системи - упражнение № 1
Информационни системи - упражнение № 1Tsvetelin Pavlov
 
AJAX и създаване на богати потребителски интерфейси в браузър
AJAX и създаване на богати потребителски интерфейси в браузърAJAX и създаване на богати потребителски интерфейси в браузър
AJAX и създаване на богати потребителски интерфейси в браузърsvilen.ivanov
 
fdgdfgdfg
fdgdfgdfgfdgdfgdfg
fdgdfgdfgsotirov
 
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLКурс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLDAVID Academy
 
Eclipse Editors@TUES (Part 2)
Eclipse Editors@TUES (Part 2)Eclipse Editors@TUES (Part 2)
Eclipse Editors@TUES (Part 2)Kiril Mitov
 
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функцииКурс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функцииDAVID Academy
 

Similar to Информационни системи - упражнение № 3 (7)

Програмиране с Питон - Django, част 2
Програмиране с Питон - Django, част 2Програмиране с Питон - Django, част 2
Програмиране с Питон - Django, част 2
 
Информационни системи - упражнение № 1
Информационни системи - упражнение № 1Информационни системи - упражнение № 1
Информационни системи - упражнение № 1
 
AJAX и създаване на богати потребителски интерфейси в браузър
AJAX и създаване на богати потребителски интерфейси в браузърAJAX и създаване на богати потребителски интерфейси в браузър
AJAX и създаване на богати потребителски интерфейси в браузър
 
fdgdfgdfg
fdgdfgdfgfdgdfgdfg
fdgdfgdfg
 
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLКурс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
 
Eclipse Editors@TUES (Part 2)
Eclipse Editors@TUES (Part 2)Eclipse Editors@TUES (Part 2)
Eclipse Editors@TUES (Part 2)
 
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функцииКурс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
 

Информационни системи - упражнение № 3