Разработка информационных систем для Windows Store

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

Разбить на страницы
Показывать лекцию целиком

Варианты заданий

  • Информационно-аналитическая система магазина Предназначена для учета поступающей продукции, информации о ней (количество, название и цену), проданных товарах. Учет сотрудников работающих в магазине и так же информации о фирмах - поставщиках.
  • Информационно-аналитическая система аптеки Предназначена для организации операций с лекарствами (регистрация, несочетания, продажа и т.д.), прибыль за месяц.
  • Информационно-аналитическая система публикаций В системе хранятся публикации сотрудников кафедры, сведения о конференциях. Автоматически генерируются отчеты о деятельности кафедры со статистикой.
  • Информационно-аналитическая система спортивной секции В системе собраны сведения о спортивном коллективе (индивидуальные карточки спортсменов) и требования для выполнения ими разрядных нормативов. Система может показать кому что необходимо выполнить для получения разряда. Кроме того, при вводе данных об очередном соревновании она автоматически дополняет данные об его участниках, запрашивая подтверждения сведений.
  • Информационно-аналитическая система железнодорожного вокзала Содержит информацию о рейсах, тарифах, билетах.
  • Лабораторная работа №1

    Тема

    Интерфейс приложения WinRT

    Задание

    В соответствии с вариантом задания разработать пользовательский интерфейс.

    Исполнение

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

    Цель

    Формирование навыков разработки пользовательских интерфейсов с использованием технологии WinRT.

    Методические указания

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

    На первом макете может быть изображена плитка, которая должна содержать фирменную символику приложения (Рис. 13.1). Оцените целесообразность использования динамической или статической плитки. Выберите вид (квадратная, прямоугольная) и содержание плитки (текст и/или изображение). (рис 13.1)

    Подготовьте макет экрана заставки, который должен содержать идею приложения и состоит из изображения и цвета фона (Рис. 13.2). (рис 13.2) Пример экрана заставки

    Наибольшее внимание уделите содержимому домашней страницы приложения, которое должно ясно показывать, для чего предназначено приложение (Рис. 13.3). (рис 13.3) Пример домашней страницы

    На втором этапе реализуйте придуманные макеты средствами языка XAML. Например, для создания границ для заголовков и меню используют следующие команды:

    <Border x:Name="TopBorder" BorderBrush="#FF08519E" 
     BorderThickness="2" HorizontalAlignment="Left" Height="3" 
     Margin="0,150,0,0" VerticalAlignment="Top" Width="281"/> 

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

  • Задание к лабораторной работе;
  • Окна с разработанным пользовательским интерфейсом;
  • Таблица компонентов, используемых в приложении;
  • Вывод о проделанной работе.
  • Контрольные вопросы

  • Что такое интерфейс?
  • Какие типы пользовательских интерфейсов существуют?
  • Перечислите этапы разработки пользовательских интерфейсов?
  • К какому типу интерфейсов будет относиться интерфейс, разработанный в данной лабораторной работе?
  • Какие модели интерфейсов существуют?
  • Какая модель интерфейса будет использована в данной работе?
  • Что такое диалог?
  • Какие типы диалогов существуют?
  • Какие формы диалога Вы знаете?
  • Какой тип диалога и какая форма диалога будет использована в данной работе?
  • Лабораторная работа №2

    Тема

    Программирование элементов управления

    Задание

    В соответствии с ваpиантом pазpаботать пpогpамму, содержащую указанные элементы управления

    Исполнение

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

    Цель

    Формирование навыков использования элементов управления приложений WinRT.

    Методические указания

    В соответствии с разработанным макетом домашней страницы создайте разметку и задайте управляющие действия для кнопок средствами языка XAML.

    Существует три типа элементов управления кнопками: "Отправить", "Сбросить" и "Обычная".

  • Кнопка "Отправить"

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

  • Кнопка Сброс: сброс формы

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

  • Кнопка "Обычная": настраиваемое действие

    Для вызова действия используйте обычную кнопку.

    Внутри формы первая кнопка без атрибутов выполняет функции отправки. Если требуется обычный тип, задайте для атрибута type значение "button".

  • Следуйте следующим рекомендациям:

  • Используйте краткий, конкретный, не требующий разъяснений текст, который четко описывает действие, выполняемое кнопкой.
  • Настройте обычные кнопки и кнопки отправки с помощью текста или изображений таким образом, чтобы пользователям было понятно, что происходит после нажатия кнопки.
  • Не изменяйте текст кнопки "Сбросить", если это не требуется для локализации. По умолчанию текст кнопки "Сбросить" на английском языке - "Reset".
  • Не изменяйте стили кнопок отправки, сброса и обычных кнопок, установленные по умолчанию.
  • Не помещайте на кнопку слишком много информации. Хотя кнопка может содержать практически все другие элементы HTML, такие как таблицы и флажки, помещение слишком большого объема информации на кнопку может запутать пользователя. Поместите на кнопку краткую и легко понимаемую информацию. На кнопке не должно быть иной информации, кроме изображения и некоторого объема текста.
  • Пример создания действия кнопки:

    <Button x:Name="Kafedras" Content="Кафедры" 
    HorizontalAlignment="Left" Margin="10,70,0,0" Grid.Row="1" 
    VerticalAlignment="Top" Width="400" Height="60" FontWeight="Bold" 
    BorderBrush="#DE6C81B9" Foreground="#DE6C81B9" FontSize="22" /> 

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

  • Задание к лабораторной работе
  • Описание элементов управления.
  • Листинг пpогpаммы, содержащую указанные элементы управления.
  • Вывод о проделанной работе.
  • Контрольные вопросы

  • Что такое элементы навигации?
  • Для чего нужны промежуточные элементы пользовательского интерфейса?
  • Какие элементы управления используются для работы с изображением?
  • Какие элементы управления используются для работы с текстом?
  • Как обеспечивается непрерывность взаимодействия с устройствами?
  • Лабораторная работа №3

    Тема

    Программирование ввода/вывода приложений WinRT

    Задание

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

    Исполнение

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

    Цель

    Формирование навыков разработки системы ввода/вывода в приложениях WinRT

    Методические указания

    На основе макета приложения и добавленных элементов управления реализуйте заполнение приложения необходимой информацией.

    Пример создания текстовых полей для ввода / вывода информации:

    <TextBlock x:Name="NotificationBox" HorizontalAlignment="Left"
    Margin="350,130,0,0" TextWrapping="Wrap" Text="TextBlock" 
    VerticalAlignment="Top" Height="28" Width="600" 
    Foreground="#FF08519E" FontFamily="Assets/Play-Regular.ttf#Play"
     FontSize="16" Visibility="Collapsed"/> 

    Пример создания простейшей галереи изображений:

    <FlipView x:Name="TambovView" HorizontalAlignment="Left" 
    Margin="616,195,0,0" VerticalAlignment="Top" Width="500" 
    Height="333" Visibility="Collapsed">
        <Image Source="Assets/1.jpeg" />
        <Image Source="Assets/2.jpeg" />
        <Image Source="Assets/3.jpeg" />
        <Image Source="Assets/4.jpeg" />
        <Image Source="Assets/5.jpeg" />
    </FlipView> 

    Теперь рассмотрим непосредственно процесс хранения и загрузки заметок. В качестве базы данных будет использоваться xml файл, доступ к которому будет осуществляться с использованием библиотеки Linq. В xml файле будет один основной элемент noties - так называемый Root элемент. Внутри него будут располагаться элементы messadges с двумя основными свойствами - name (будет отображать принадлежность к конкретной странице) и value (будет содержать в себе текст заметки).

    При этом, когда пользователь нажмет на соответствующую кнопку - должна произойти загрузка содержимого заметки в текстовое поле.

    Рассмотрим функцию, которая получает и записывает в текстовое поле значение заметки.

    private void searchText(string name_of_search)
    {
        ResultBox.Text = "";
        ResultBox.SelectionStart = 0;
        string fileName = "Assets/Data.xml";
        XDocument doc = XDocument.Load(fileName);
        IEnumerable<XElement> content = doc.Root.Elements("messadge").Where(t => t.Attribute("name")
          .Value == name_of_search).ToList();
        string result = "";
        foreach (XElement values in content)
    	result += values.Attribute("value").Value.ToString();
        List<string> newList = null;
        char separator = '|';
        newList = result.Split(separator).ToList();
        for (int i = 0; i < newList.Count; i++)
    	ResultBox.Text += "     " + newList[i] + Environment.NewLine + Environment.NewLine;
    }

    Рассмотрим данную функцию подробнее:

  • name_of_search - содержит в тебе ключевое слово для заметки. Т.е. передача в качестве параметра функции значения "managment.rektor" позволит загрузить содержимое заметки о ректоре ТГТУ.
  • ResultBox.Text = ""; - обнуление текстового поля.
  • ResultBox.SelectionStart = 0; - указываем первоначальное положение курсора и полос прокрутки.
  • string fileName = "Assets/Data.xml"; - определяем имя файла, содержащего данные.
  • XDocument doc = XDocument.Load(fileName); - загрузка текущего документа.
  • IEnumerable<XElement> content = doc.Root.Elements("messadge").Where(t => t.Attribute("name").Value == name_of_search).ToList(); - основная строка в данном приложении. С ее использованием осуществляется поиск заметки, атрибут name которой совпадает со значением, переданным пользователем. Затем происходит формирования списка со всеми возможными результатами поиска.
  • foreach (XElement values in content) result += values.Attribute("value").Value.ToString(); - осуществляется проход по всем существующим (найденным) элементам, полученным в результате поиска и получение значение заметки.
  • Оставшаяся часть - производит разбиение строки в соответствии с разделителями и вывод на экран.
  • Содержание отчета

  • Задание к лабораторной работе
  • Описание системы упpавления вводом-выводом.
  • Описание стpуктуpы данных, используемые системой.
  • Листинг пpогpаммы, моделиpующей pаботу системы упpавления вводом-выводом.
  • Пример работы приложения.
  • Вывод о проделанной работе.
  • Контрольные вопросы

  • Какие элементы ввода-вывода составляют основу интерфейса приложений WinRT?
  • Как реализуется сенсорное взаимодействие?
  • Что такое плитки и уведомления?
  • Что такое контракты?
  • Как приостановить и продолжить работу приложения?
  • Как реализуется контекстное масштабирование?
  • Лабораторная работа №4

    Тема

    Работа с файлами.

    Задание

    Для указанного ваpианта pазpаботать пpогpамму, работающую с файловой системой.

    Исполнение

    Изучить систему использования информации из файлов. Отладить и оттестировать составленное приложение

    Цель

    Формирование навыков разработки приложений WinRT

    Методические указания

    Проанализируйте задание и определите необходимые файлы для своего приложения.

    Определите разметку документа, например

    <Window x:Class="WorkWithFiles.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="313" Width="345">
        <Grid>
            <TextBox Height="23" HorizontalAlignment="Left" Margin="12,12,0,0"
            Name="textBox1" VerticalAlignment="Top" Width="302" Text="D:\File.txt" />
            <Button Content="Создать файл" Height="23" HorizontalAlignment="Left" 
            Margin="12,41,0,0" Name="Create" VerticalAlignment="Top" Width="302" Click="Create_Click" />
            <Button Content="Удалить файл" Height="23" HorizontalAlignment="Left" 
            Margin="12,70,0,0" Name="Delete" VerticalAlignment="Top" Width="302" Click="Delete_Click" />
            <Button Content="Простое построчное считывание" Height="23" 
            HorizontalAlignment="Left" Margin="12,128,0,0" Name="ReadLines" 
            VerticalAlignment="Top" Width="302" Click="ReadLines_Click" />
            <Button Content="Копирование файла" Height="23" HorizontalAlignment="Left" 
            Margin="12,99,0,0" Name="CopyFile" VerticalAlignment="Top" Width="302" 
            Click="CopyFile_Click" />
            <Button Content="Получить все txt файлы в директории" Height="23" 
            HorizontalAlignment="Left" Margin="12,157,0,0" Name="GetFiles" 
            VerticalAlignment="Top" Width="302" Click="GetFiles_Click" />
            <Button Content="Запись в файл" Height="23" HorizontalAlignment="
            Left" Margin="12,186,0,0" Name="Write" VerticalAlignment="Top" 
            Width="302" Click="Write_Click" />
            <Button Content="Удалить все файлы из папки" Height="23" 
            HorizontalAlignment="Left" Margin="12,215,0,0" Name="DeleteAll" 
            VerticalAlignment="Top" Width="302" Click="DeleteAll_Click" />
            <Button Content="Получить всю информацию о файле" Height="23" 
            HorizontalAlignment="Left" Margin="9,244,0,0" Name="GetAllInformation" 
            VerticalAlignment="Top" Width="302" Click="GetAllInformation_Click" />
        </Grid>
    </Window> 

    Определите операции, необходимые для работы с файлами с файлами разрабатываемого приложения. Примеры реализации работы с файлами:

  • Создание файла
    private void Create_Click(object sender, RoutedEventArgs e)
            {
                if (!System.IO.File.Exists(this.textBox1.Text))
                    try
                    {
                        System.IO.File.Create(this.textBox1.Text);
                    }
                    catch (System.IO.IOException ex)
                    {
                        MessageBox.Show(ex.Message, "Ошибка", 
                        MessageBoxButton.OK, MessageBoxImage.Stop);
                        return;
                    }
                else
                    MessageBox.Show("Файл уже существует", "Ошибка", 
                    MessageBoxButton.OK, MessageBoxImage.Stop);
            }
  • Удаление файла
    private void Delete_Click(object sender, RoutedEventArgs e)
            {
                if (System.IO.File.Exists(this.textBox1.Text))
                    try
                    {
                        System.IO.File.Delete(this.textBox1.Text);
                    }
                    catch (System.IO.IOException ex)
                    {
                        MessageBox.Show(ex.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Stop);
                        return;
                    }
                else
                    MessageBox.Show("Файл не существует", "Ошибка", 
                    MessageBoxButton.OK, MessageBoxImage.Stop);
            }
  • Чтение содержимого файла
    private void ReadLines_Click(object sender, RoutedEventArgs e)
            {
                // Считать файл можно сразу же, как одну строку
                try
                {
                    string text = System.IO.File.ReadAllText(this.textBox1.Text);
                    MessageBox.Show(text, "Полученный текст", MessageBoxButton.OK, 
                    MessageBoxImage.Exclamation);
                }
                catch (System.IO.IOException ex)
                {
                    MessageBox.Show(ex.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Stop);
                    return;
                }

    */ - возможны и другие способы чтения содержимого файла.

  • Копирование файла
    private void CopyFile_Click(object sender, RoutedEventArgs e)
            {
                string sourcePathFile = this.textBox1.Text; // Какой файл копируем
                string targetPathFile = @"D:\1.txt";        // Куда будем копировать
                if (System.IO.File.Exists(this.textBox1.Text))
                    try
                    {
                        System.IO.File.Copy(sourcePathFile, targetPathFile, true);
                    }
                    catch (System.IO.IOException ex)
                    {
                        MessageBox.Show(ex.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Stop);
                        return;
                    }
                else
                    MessageBox.Show("Файл не существует", "Ошибка", 
                    MessageBoxButton.OK, MessageBoxImage.Stop);
            }
  • Запись в файл
    private void Write_Click(object sender, RoutedEventArgs e)
            {
                string[] lines = { "Раз", "Два", "Четыре" };
                try
                {
                    System.IO.File.WriteAllLines(this.textBox1.Text, lines);
                }
                catch (DirectoryNotFoundException dirNotFound)
                {
                    MessageBox.Show(dirNotFound.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Stop);
                }
  • Содержание отчета

  • Задание к лабораторной работе
  • Описание использования данных в приложениях WinRT
  • Листинг пpиложения.
  • Пример работы приложения.
  • Вывод о проделанной работе.
  • Контрольные вопросы

  • Что такое данные приложения?
  • Какие операции над данными используются при выполнении приложения?
  • Какие виды хранилищ данных существуют?
  • Что такое локальные хранилища данных?
  • Что такое перемещаемые хранилища данных?
  • Что такое временные хранилища данных?
  • Страницы:

    Варианты заданий

  • Информационно-аналитическая система магазина Предназначена для учета поступающей продукции, информации о ней (количество, название и цену), проданных товарах. Учет сотрудников работающих в магазине и так же информации о фирмах - поставщиках.
  • Информационно-аналитическая система аптеки Предназначена для организации операций с лекарствами (регистрация, несочетания, продажа и т.д.), прибыль за месяц.
  • Информационно-аналитическая система публикаций В системе хранятся публикации сотрудников кафедры, сведения о конференциях. Автоматически генерируются отчеты о деятельности кафедры со статистикой.
  • Информационно-аналитическая система спортивной секции В системе собраны сведения о спортивном коллективе (индивидуальные карточки спортсменов) и требования для выполнения ими разрядных нормативов. Система может показать кому что необходимо выполнить для получения разряда. Кроме того, при вводе данных об очередном соревновании она автоматически дополняет данные об его участниках, запрашивая подтверждения сведений.
  • Информационно-аналитическая система железнодорожного вокзала Содержит информацию о рейсах, тарифах, билетах.
  • Лабораторная работа №1

    Тема

    Интерфейс приложения WinRT

    Задание

    В соответствии с вариантом задания разработать пользовательский интерфейс.

    Исполнение

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

    Цель

    Формирование навыков разработки пользовательских интерфейсов с использованием технологии WinRT.

    Методические указания

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

    На первом макете может быть изображена плитка, которая должна содержать фирменную символику приложения (Рис. 13.1). Оцените целесообразность использования динамической или статической плитки. Выберите вид (квадратная, прямоугольная) и содержание плитки (текст и/или изображение). (рис 13.1)

    Подготовьте макет экрана заставки, который должен содержать идею приложения и состоит из изображения и цвета фона (Рис. 13.2). (рис 13.2) Пример экрана заставки

    Наибольшее внимание уделите содержимому домашней страницы приложения, которое должно ясно показывать, для чего предназначено приложение (Рис. 13.3). (рис 13.3) Пример домашней страницы

    На втором этапе реализуйте придуманные макеты средствами языка XAML. Например, для создания границ для заголовков и меню используют следующие команды:

    <Border x:Name="TopBorder" BorderBrush="#FF08519E" 
     BorderThickness="2" HorizontalAlignment="Left" Height="3" 
     Margin="0,150,0,0" VerticalAlignment="Top" Width="281"/> 

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

  • Задание к лабораторной работе;
  • Окна с разработанным пользовательским интерфейсом;
  • Таблица компонентов, используемых в приложении;
  • Вывод о проделанной работе.
  • Контрольные вопросы

  • Что такое интерфейс?
  • Какие типы пользовательских интерфейсов существуют?
  • Перечислите этапы разработки пользовательских интерфейсов?
  • К какому типу интерфейсов будет относиться интерфейс, разработанный в данной лабораторной работе?
  • Какие модели интерфейсов существуют?
  • Какая модель интерфейса будет использована в данной работе?
  • Что такое диалог?
  • Какие типы диалогов существуют?
  • Какие формы диалога Вы знаете?
  • Какой тип диалога и какая форма диалога будет использована в данной работе?
  • Лабораторная работа №2

    Тема

    Программирование элементов управления

    Задание

    В соответствии с ваpиантом pазpаботать пpогpамму, содержащую указанные элементы управления

    Исполнение

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

    Цель

    Формирование навыков использования элементов управления приложений WinRT.

    Методические указания

    В соответствии с разработанным макетом домашней страницы создайте разметку и задайте управляющие действия для кнопок средствами языка XAML.

    Существует три типа элементов управления кнопками: "Отправить", "Сбросить" и "Обычная".

  • Кнопка "Отправить"

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

  • Кнопка Сброс: сброс формы

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

  • Кнопка "Обычная": настраиваемое действие

    Для вызова действия используйте обычную кнопку.

    Внутри формы первая кнопка без атрибутов выполняет функции отправки. Если требуется обычный тип, задайте для атрибута type значение "button".

  • Следуйте следующим рекомендациям:

  • Используйте краткий, конкретный, не требующий разъяснений текст, который четко описывает действие, выполняемое кнопкой.
  • Настройте обычные кнопки и кнопки отправки с помощью текста или изображений таким образом, чтобы пользователям было понятно, что происходит после нажатия кнопки.
  • Не изменяйте текст кнопки "Сбросить", если это не требуется для локализации. По умолчанию текст кнопки "Сбросить" на английском языке - "Reset".
  • Не изменяйте стили кнопок отправки, сброса и обычных кнопок, установленные по умолчанию.
  • Не помещайте на кнопку слишком много информации. Хотя кнопка может содержать практически все другие элементы HTML, такие как таблицы и флажки, помещение слишком большого объема информации на кнопку может запутать пользователя. Поместите на кнопку краткую и легко понимаемую информацию. На кнопке не должно быть иной информации, кроме изображения и некоторого объема текста.
  • Пример создания действия кнопки:

    <Button x:Name="Kafedras" Content="Кафедры" 
    HorizontalAlignment="Left" Margin="10,70,0,0" Grid.Row="1" 
    VerticalAlignment="Top" Width="400" Height="60" FontWeight="Bold" 
    BorderBrush="#DE6C81B9" Foreground="#DE6C81B9" FontSize="22" /> 

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

  • Задание к лабораторной работе
  • Описание элементов управления.
  • Листинг пpогpаммы, содержащую указанные элементы управления.
  • Вывод о проделанной работе.
  • Контрольные вопросы

  • Что такое элементы навигации?
  • Для чего нужны промежуточные элементы пользовательского интерфейса?
  • Какие элементы управления используются для работы с изображением?
  • Какие элементы управления используются для работы с текстом?
  • Как обеспечивается непрерывность взаимодействия с устройствами?
  • Лабораторная работа №3

    Тема

    Программирование ввода/вывода приложений WinRT

    Задание

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

    Исполнение

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

    Цель

    Формирование навыков разработки системы ввода/вывода в приложениях WinRT

    Методические указания

    На основе макета приложения и добавленных элементов управления реализуйте заполнение приложения необходимой информацией.

    Пример создания текстовых полей для ввода / вывода информации:

    <TextBlock x:Name="NotificationBox" HorizontalAlignment="Left"
    Margin="350,130,0,0" TextWrapping="Wrap" Text="TextBlock" 
    VerticalAlignment="Top" Height="28" Width="600" 
    Foreground="#FF08519E" FontFamily="Assets/Play-Regular.ttf#Play"
     FontSize="16" Visibility="Collapsed"/> 

    Пример создания простейшей галереи изображений:

    <FlipView x:Name="TambovView" HorizontalAlignment="Left" 
    Margin="616,195,0,0" VerticalAlignment="Top" Width="500" 
    Height="333" Visibility="Collapsed">
        <Image Source="Assets/1.jpeg" />
        <Image Source="Assets/2.jpeg" />
        <Image Source="Assets/3.jpeg" />
        <Image Source="Assets/4.jpeg" />
        <Image Source="Assets/5.jpeg" />
    </FlipView> 

    Теперь рассмотрим непосредственно процесс хранения и загрузки заметок. В качестве базы данных будет использоваться xml файл, доступ к которому будет осуществляться с использованием библиотеки Linq. В xml файле будет один основной элемент noties - так называемый Root элемент. Внутри него будут располагаться элементы messadges с двумя основными свойствами - name (будет отображать принадлежность к конкретной странице) и value (будет содержать в себе текст заметки).

    При этом, когда пользователь нажмет на соответствующую кнопку - должна произойти загрузка содержимого заметки в текстовое поле.

    Рассмотрим функцию, которая получает и записывает в текстовое поле значение заметки.

    private void searchText(string name_of_search)
    {
        ResultBox.Text = "";
        ResultBox.SelectionStart = 0;
        string fileName = "Assets/Data.xml";
        XDocument doc = XDocument.Load(fileName);
        IEnumerable<XElement> content = doc.Root.Elements("messadge").Where(t => t.Attribute("name")
          .Value == name_of_search).ToList();
        string result = "";
        foreach (XElement values in content)
    	result += values.Attribute("value").Value.ToString();
        List<string> newList = null;
        char separator = '|';
        newList = result.Split(separator).ToList();
        for (int i = 0; i < newList.Count; i++)
    	ResultBox.Text += "     " + newList[i] + Environment.NewLine + Environment.NewLine;
    }

    Рассмотрим данную функцию подробнее:

  • name_of_search - содержит в тебе ключевое слово для заметки. Т.е. передача в качестве параметра функции значения "managment.rektor" позволит загрузить содержимое заметки о ректоре ТГТУ.
  • ResultBox.Text = ""; - обнуление текстового поля.
  • ResultBox.SelectionStart = 0; - указываем первоначальное положение курсора и полос прокрутки.
  • string fileName = "Assets/Data.xml"; - определяем имя файла, содержащего данные.
  • XDocument doc = XDocument.Load(fileName); - загрузка текущего документа.
  • IEnumerable<XElement> content = doc.Root.Elements("messadge").Where(t => t.Attribute("name").Value == name_of_search).ToList(); - основная строка в данном приложении. С ее использованием осуществляется поиск заметки, атрибут name которой совпадает со значением, переданным пользователем. Затем происходит формирования списка со всеми возможными результатами поиска.
  • foreach (XElement values in content) result += values.Attribute("value").Value.ToString(); - осуществляется проход по всем существующим (найденным) элементам, полученным в результате поиска и получение значение заметки.
  • Оставшаяся часть - производит разбиение строки в соответствии с разделителями и вывод на экран.
  • Содержание отчета

  • Задание к лабораторной работе
  • Описание системы упpавления вводом-выводом.
  • Описание стpуктуpы данных, используемые системой.
  • Листинг пpогpаммы, моделиpующей pаботу системы упpавления вводом-выводом.
  • Пример работы приложения.
  • Вывод о проделанной работе.
  • Контрольные вопросы

  • Какие элементы ввода-вывода составляют основу интерфейса приложений WinRT?
  • Как реализуется сенсорное взаимодействие?
  • Что такое плитки и уведомления?
  • Что такое контракты?
  • Как приостановить и продолжить работу приложения?
  • Как реализуется контекстное масштабирование?
  • Лабораторная работа №4

    Тема

    Работа с файлами.

    Задание

    Для указанного ваpианта pазpаботать пpогpамму, работающую с файловой системой.

    Исполнение

    Изучить систему использования информации из файлов. Отладить и оттестировать составленное приложение

    Цель

    Формирование навыков разработки приложений WinRT

    Методические указания

    Проанализируйте задание и определите необходимые файлы для своего приложения.

    Определите разметку документа, например

    <Window x:Class="WorkWithFiles.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="313" Width="345">
        <Grid>
            <TextBox Height="23" HorizontalAlignment="Left" Margin="12,12,0,0"
            Name="textBox1" VerticalAlignment="Top" Width="302" Text="D:\File.txt" />
            <Button Content="Создать файл" Height="23" HorizontalAlignment="Left" 
            Margin="12,41,0,0" Name="Create" VerticalAlignment="Top" Width="302" Click="Create_Click" />
            <Button Content="Удалить файл" Height="23" HorizontalAlignment="Left" 
            Margin="12,70,0,0" Name="Delete" VerticalAlignment="Top" Width="302" Click="Delete_Click" />
            <Button Content="Простое построчное считывание" Height="23" 
            HorizontalAlignment="Left" Margin="12,128,0,0" Name="ReadLines" 
            VerticalAlignment="Top" Width="302" Click="ReadLines_Click" />
            <Button Content="Копирование файла" Height="23" HorizontalAlignment="Left" 
            Margin="12,99,0,0" Name="CopyFile" VerticalAlignment="Top" Width="302" 
            Click="CopyFile_Click" />
            <Button Content="Получить все txt файлы в директории" Height="23" 
            HorizontalAlignment="Left" Margin="12,157,0,0" Name="GetFiles" 
            VerticalAlignment="Top" Width="302" Click="GetFiles_Click" />
            <Button Content="Запись в файл" Height="23" HorizontalAlignment="
            Left" Margin="12,186,0,0" Name="Write" VerticalAlignment="Top" 
            Width="302" Click="Write_Click" />
            <Button Content="Удалить все файлы из папки" Height="23" 
            HorizontalAlignment="Left" Margin="12,215,0,0" Name="DeleteAll" 
            VerticalAlignment="Top" Width="302" Click="DeleteAll_Click" />
            <Button Content="Получить всю информацию о файле" Height="23" 
            HorizontalAlignment="Left" Margin="9,244,0,0" Name="GetAllInformation" 
            VerticalAlignment="Top" Width="302" Click="GetAllInformation_Click" />
        </Grid>
    </Window> 

    Определите операции, необходимые для работы с файлами с файлами разрабатываемого приложения. Примеры реализации работы с файлами:

  • Создание файла
    private void Create_Click(object sender, RoutedEventArgs e)
            {
                if (!System.IO.File.Exists(this.textBox1.Text))
                    try
                    {
                        System.IO.File.Create(this.textBox1.Text);
                    }
                    catch (System.IO.IOException ex)
                    {
                        MessageBox.Show(ex.Message, "Ошибка", 
                        MessageBoxButton.OK, MessageBoxImage.Stop);
                        return;
                    }
                else
                    MessageBox.Show("Файл уже существует", "Ошибка", 
                    MessageBoxButton.OK, MessageBoxImage.Stop);
            }
  • Удаление файла
    private void Delete_Click(object sender, RoutedEventArgs e)
            {
                if (System.IO.File.Exists(this.textBox1.Text))
                    try
                    {
                        System.IO.File.Delete(this.textBox1.Text);
                    }
                    catch (System.IO.IOException ex)
                    {
                        MessageBox.Show(ex.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Stop);
                        return;
                    }
                else
                    MessageBox.Show("Файл не существует", "Ошибка", 
                    MessageBoxButton.OK, MessageBoxImage.Stop);
            }
  • Чтение содержимого файла
    private void ReadLines_Click(object sender, RoutedEventArgs e)
            {
                // Считать файл можно сразу же, как одну строку
                try
                {
                    string text = System.IO.File.ReadAllText(this.textBox1.Text);
                    MessageBox.Show(text, "Полученный текст", MessageBoxButton.OK, 
                    MessageBoxImage.Exclamation);
                }
                catch (System.IO.IOException ex)
                {
                    MessageBox.Show(ex.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Stop);
                    return;
                }

    */ - возможны и другие способы чтения содержимого файла.

  • Копирование файла
    private void CopyFile_Click(object sender, RoutedEventArgs e)
            {
                string sourcePathFile = this.textBox1.Text; // Какой файл копируем
                string targetPathFile = @"D:\1.txt";        // Куда будем копировать
                if (System.IO.File.Exists(this.textBox1.Text))
                    try
                    {
                        System.IO.File.Copy(sourcePathFile, targetPathFile, true);
                    }
                    catch (System.IO.IOException ex)
                    {
                        MessageBox.Show(ex.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Stop);
                        return;
                    }
                else
                    MessageBox.Show("Файл не существует", "Ошибка", 
                    MessageBoxButton.OK, MessageBoxImage.Stop);
            }
  • Запись в файл
    private void Write_Click(object sender, RoutedEventArgs e)
            {
                string[] lines = { "Раз", "Два", "Четыре" };
                try
                {
                    System.IO.File.WriteAllLines(this.textBox1.Text, lines);
                }
                catch (DirectoryNotFoundException dirNotFound)
                {
                    MessageBox.Show(dirNotFound.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Stop);
                }
  • Содержание отчета

  • Задание к лабораторной работе
  • Описание использования данных в приложениях WinRT
  • Листинг пpиложения.
  • Пример работы приложения.
  • Вывод о проделанной работе.
  • Контрольные вопросы

  • Что такое данные приложения?
  • Какие операции над данными используются при выполнении приложения?
  • Какие виды хранилищ данных существуют?
  • Что такое локальные хранилища данных?
  • Что такое перемещаемые хранилища данных?
  • Что такое временные хранилища данных?
  • Вернуться к учебному плану