Работа на Демо экзамене Начало работы: ознакомьтесь с содержанием задания. Просмотрите все вложенные файлы и папки. 1) mssql_script_trade – в данном файле хранится скрип БД. Этот файл нужно развернуть в MS SQL Server Удалить команду create database [Trade] Go Изменить имя БД в команде use [Trade] На название БД доступной вам, например, use [bd01] После нажмите на кнопку Выполни ть (или F5) скрипт создаст, в выбранной БД, таблицы, приписанные в нем. Далее обновите список баз в Обозревателе объектов и создайте Диаграмму БД и посмотрите какие таблицы созданы, измените созданные таблицы и добавьте недостающие (предварительно просмотрев файлы с данными для загрузки) 1 2 3 Для создания таблиц можно воспользоваться контекстным меню «Создать таблицу» в окне «Диаграммы БД» 1 2 Заполнить имена столбцов и выбрать подходящие типы данных 3 Задать первичный ключевого поля с контекстного меню ключ для помощью 4 Создать недостающие связи между таблицами. Для этого необходимо «перетянуть» мышью поле с первичным ключом в главной таблице на поле с внешним ключом в подчиненной таблице. После закрытия диаграммы БД система предложит сохранить изменения в БД – согласиться. Добавленные таблицы, поле обновления Обозревателя решений, появятся в перечне таблиц БД. 1 2 Если при попытке сохранить изменения в БД через Диаграмму БД – система выдаст ошибку «Невозможно сохранить изменения», то необходимо в меню Сервис\Параметры\Конструкторы\Конструкторы таблиц и баз данных – убрать флажок напротив команды «Запретить сохранение изменений, требующих повторного создания таблицы» Данные в таблицах начинаем создавать с тех таблиц, куда не приходит внешний ключ, т.е. с главных. 2. Заполняется второй, ТОЛЬКО ПОСЛЕ заполнения главной таблицы Заполнение таблиц данными - Открываем таблицу, которую необходимо заполнить – Контекстное меню\ Изменить первые 200 строк - Открываем файл с подготовленными данными для загрузки, например, в Excel. - Выделяем нужные ячейки вместе с пустым первым столбцом (для формирования в БД «айдишников») - Копируем выделенное - Вставляем в БД, выделив первую строку таблицы - Вставляем скопированные данные 1. Заполняется первой, т.к. в нее не входят внешние связи ВНИМАНИЕ! Для корректной загрузки данных в SQL необходимо, чтобы порядок следования полей в таблице БД и Excel совпадали Скопированные данные НЕ загрузятся, если Скопированные данные загрузятся, если Создание приложения Дайте имя проекту соответствующее названию задания, например, Tovary Настройте подключение к Gogs На главной странице Gogs выберите из предложенных аккаунтов ваш (личные ФИО студента) откройте его. В открывшемся окне создайте новый репозиторий как показано на рисунке. В открывшемся окне задайте имя репозитория, например, examen_1 1 2 После ввода имени репозитория - нажать кнопку «Создать репозиторий», система создаст репозиторий с заданным именем и откроет следующее окно: В окне приложения Vidual Studio в меню Git\Создать репозиторий Git… Далее в открывшемся окне настройки Другое\Существующий удаленный объект подключения выбрать Скопировать адрес строки подключения и вставить в окно «Удаленный URL-адрес» После нажать отправить» кнопку «Создать и Далее операционная система может выдать окно Безопасности Windows, в котором необходимо ввести логин и пароль, которые вы вводили при входе в Gogs Чтобы увидеть изменения в Git (Gogs), необходимо в Обозревателе решений открыть вкладку «Изменения в Git» (внизу окна) После в указанной папке система создаст папку с проектом, в которой и будут хранится все изменения в проекте и отображаться в системе Gogs После внесения изменений в проект, данные в Gogs необходимо обновить. Это нужно сделать из Visual Studio, в Обозревателе объектов во вкладке Изменения в Git, как показано на рисунке При обновлении Git необходимо Сохранить изменения (1) В репозитории отобразиться Ваш проект (2) 1 2 Чтобы добавить в Gogs текстовый или табличный документ, можно просто воспользоваться кнопкой «Новый файл Загрузить файл» и «перетащить» файл в окно – нажать кнопку «Сохранить изменения» и файл будет добавлен в репозиторий. Добавление возможных изменений в проект может иметь вид представленный на рисунке. Для добавления изменений в Gogs необходимо нажать + Начало разработки Добавим иконку для приложения: - Проект\Свойства\Приложение - Ресурсы - Значок и манифест - Обзор - Выбрать файл с расширение .ico После этой стройки на каждом окне приложения будет отображаться выбранная иконка Подключение БД к проекту Так как сервер БД удаленный (находится на сервере колледжа), то необходимо настроить удаленное подключение Ввести имя сервера - сообщит организатор экзамена Выбрать проверку подлинности SQL Server Ввести ваш логин и пароль, которые сообщит организатор экзамена В приложении VS выбрать Проект \ Добавить новый элемент \ Данные \ Модель ADO.NET EDM В мастере моделей настроить подключение Ввести ваш логин и пароль, которые сообщит организатор экзамена Выбрать вашу БД из списка Имя БД для подключения в приложение После нажатия на кнопку «Готово» в Мастере моделей, БД будет привязана к проекту VS и отобразиться в окне Обозреватель решений Данную модель необходимо прописать в коде приложения Разработка окна «Авторизация» Разметка: Title="Авторизация" Width="300" Height="300" MinHeight="300" MinWidth="300"> <Grid> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock FontSize="16">Логин</TextBlock> <TextBox x:Name="TbLogin" FontSize="16" Width="200" Height="30" Margin="5"></TextBox> <TextBlock FontSize="16">Пароль</TextBlock> <PasswordBox x:Name="PsBox" FontSize="16" Width="200" Height="30" Margin="5"></PasswordBox> <Button x:Name="BtnEnter" FontSize="16" Width="150" Height="30" Margin="5" Content="Вход" Click="BtnEnter_Click"></Button> </StackPanel> </Grid> Подключение к окну авторизации БД public partial class MainWindow : Window { bd01Entities bd01; public MainWindow() { bd01 = new bd01Entities(); InitializeComponent(); } //Подключение БД к окну Авторизация public DataTable Select(string selectSQL) { DataTable dataTable = new DataTable("dataBase"); //Прописываем строку подключения SqlConnection sqlConnection = new SqlConnection(@"data source=DESKTOP-FVIDII9\SQLEXPRESS;initial catalog=bd01;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework;"); sqlConnection.Open(); SqlCommand sqlCommand = sqlConnection.CreateCommand(); sqlCommand.CommandText = selectSQL; SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand); sqlDataAdapter.Fill(dataTable); return dataTable; } //Обработчик на кнопку вход, Сверка введенных, с данными из БД private void BtnEnter_Click(object sender, RoutedEventArgs e) { if (TbLogin.Text.Length > 0) // проверяем введён ли логин { if (PsBox.Password.Length > 0) // проверяем введён ли пароль { // ищем в базе данных пользователя с такими данными DataTable dt_user = Select("SELECT * FROM [dbo].[User] WHERE [UserLogin] = '" + TbLogin.Text + "' AND [UserPassword] = '" + PsBox.Password + "'"); if (dt_user.Rows.Count > 0) // если такая запись существует { var w1 = new Window1(); //при успешной авторизации w1.ShowDialog(); //откроется окно } else MessageBox.Show("Пользователя не найден"); // выводим ошибку } else MessageBox.Show("Введите пароль"); // выводим ошибку } else MessageBox.Show("Введите логин"); // выводим ошибку } Окно «Товары» - вход под администратором (пример) Разметка окна «Товары» Title="Товары" Height="450" Width="900"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="0.3*"></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition Height="0.3*"></RowDefinition> </Grid.RowDefinitions> <DataGrid x:Name="DtgTovar" Grid.Row="1" AutoGenerateColumns="False" ColumnWidth="*" IsReadOnly="False" SelectionMode="Single" FontSize="15"> <DataGrid.Columns> <DataGridTextColumn Header="Артикул" Binding="{Binding ProductArticleNumber}"></DataGridTextColumn> <DataGridTextColumn Header="Наименование" Binding="{Binding ProductName}"></DataGridTextColumn> <DataGridTextColumn Header="Категория" Binding="{Binding ProductDescription}"></DataGridTextColumn> <DataGridTextColumn Header="Описание" Binding="{Binding ProductCategory}"></DataGridTextColumn> <DataGridTextColumn Header="Фото" Binding="{Binding ProductPhoto}"></DataGridTextColumn> <DataGridTextColumn Header="Производитель" Binding="{Binding ProductManufacturer}"></DataGridTextColumn> <DataGridTextColumn Header="Цена" Binding="{Binding ProductCost}"></DataGridTextColumn> <StackPanel Orientation="Horizontal" VerticalAlignment="Center"> <DataGridTextColumn Header="Скидка" Binding="{Binding ProductDiscountAmount}"></DataGridTextColumn> <TextBlock FontSize="16" Margin="5">Поиск</TextBlock> <DataGridTextColumn Header="количество на складе" Binding="{Binding ProductQuantityInStock}"></DataGridTextColumn> <TextBox x:Name="TbPoisc" FontSize="16" Width="200" Height="30" Margin="5" TextChanged="TbPoisc_TextChanged"></TextBox> <ComboBox x:Name="CmbKat" FontSize="16" Width="200" Height="30" Margin="5" SelectionChanged="CmbKat_SelectionChanged"></ComboB ox> <Button x:Name="BtnPoisc" FontSize="16" Width="200" Height="30" Margin="5" Click="BtnPoisc_Click">Поиск</Button> </StackPanel> <DataGridTextColumn Header="Статус" Binding="{Binding ProductStatus}"></DataGridTextColumn> </DataGrid.Columns> </DataGrid> <StackPanel Grid.Row="2" Orientation="Horizontal" VerticalAlignment="Center"> <Button x:Name="BtnAdd" FontSize="16" Width="200" Height="30" Margin="5" Click="BtnAdd_Click">Добавить</Button> <Button x:Name="BtnDel" FontSize="16" Width="200" Height="30" Margin="5" Click="BtnDel_Click">Удалить</Button> <Button x:Name="BtnUpd" FontSize="16" Width="200" Height="30" Margin="5" Click="BtnUpd_Click">Изменить</Button> </StackPanel> </Grid> Привязка DataGrid к БД public partial class Window1 : Window { bd01Entities bd01; public Window1() { bd01 = new bd01Entities(); InitializeComponent(); DtgTovar.ItemsSource = bd01.Product.ToList(); } Обработчик на кнопку «Удалить» private void BtnDel_Click(object sender, RoutedEventArgs e) { var stroka = DtgTovar.SelectedItem as Product; if (stroka == null) { MessageBox.Show("Чтобы удалить - выберите строку!"); return; } //окно с сообщением об удалении строки и кнопками Да/Нет/Отмена MessageBoxResult result = MessageBox.Show("Вы уверены, что хотите удалить сторку?", "Удалить вопрос", MessageBoxButton.YesNoCancel , MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { bd01.Product.Remove(stroka); bd01.SaveChanges(); DtgTovar.ItemsSource = bd01.Product.ToList(); // показывает записанную строку } } Обработчик на кнопку добавить запись Кнопка «Добавить» с главного окна на добавление нового товара Обработчик: private void BtnAdd_Click(object sender, RoutedEventArgs e) Окно «Добавление товара» public partial class AddTovar1 : Window { bd01Entities bd01; { var addTovar = new Product(); //объект класса создание public AddTovar1(bd01Entities bd01, Product product) bd01.Product.Add(addTovar); //Add - это метод добавления addTovar); InitializeComponent(); var win = new AddTovar1(bd01, } win.ShowDialog(); DtgTovar.ItemsSource = bd01.Product.ToList(); // показывает записанную строку } { }