Загрузил Артур Джан

Лаб. раб 1 Интех

реклама
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное образовательное учреждение
высшего образования
«Уфимский государственный нефтяной технический университет»
Институт нефтепереработки и нефтехимии ФГБОУ ВО УГНТУ в г. Салавате
Кафедра «Информационных технологий»
“Создание приложения на WPF”
Отчёт по лабораторной работе № 1
Ин.Тех-21.05.06-02.01.12 ЛР
Исполнитель:
студент гр. СГГз-23-21
А.З. Хайдаров
Руководитель:
Ассистент
Э.И. Ахметшина
Салават
2024
Цель работы: закрепить навыки работы с контейнерами и обработчиками
событий.
Задача 1
Написать приложение на WPF, выполняющее следующие действия:
1) Найти сумму n элементов следующего ряда чисел: 1 -0.5 0.25 -0.125 ...
Количество элементов (n) вводится с клавиатуры.
2) Вывести на экран столько элементов ряда Фибоначчи, сколько указал
пользователь. Например, если на ввод поступило число 6, то вывод должен содержать
шесть первых чисел ряда Фибоначчи: 1 2 3 5 8 13.
3) Посчитать четные и нечетные цифры введенного натурального числа.
Например, если введено число 34560, то у него 3 четные цифры (4, 6 и 0) и 2 нечетные
(3 и 5).
4) Найти сумму и произведение цифр, введенного натурального числа. Например,
если введено число 325, то сумма его цифр равна 10 (3+2+5), а произведение 30 (3*2*5).
Решение:
1)
Создаем WPF-приложение, которое будет выполнять первое задание —
находить сумму n элементов ряда чисел: 1, -0.5, 0.25, -0.125 и так далее.
Шаг 1: Создание WPF-приложения
1. Нужно открыть программуVisual Studio.
2. Далее создаем новый проект WPF App (.NET).
3. В проекте будет файл MainWindow.xaml, который будет использоваться для
создания интерфейса.
Шаг 2: Добавление элементов управления в XAML
Изменяем содержимое MainWindow.xaml, чтобы добавить элементы для ввода
значения n, кнопку для выполнения расчета и текстовое поле для вывода результата:
<Window x:Class="Task1_1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Главная" Height="600" Width="800"
WindowStartupLocation="CenterScreen" ResizeMode="NoResize">
<Grid>
<!-- Подзадача 1.1: Сумма элементов ряда чисел -->
<GroupBox Header="Подзадача 1.1: Сумма ряда чисел" HorizontalAlignment="Left"
VerticalAlignment="Top" Margin="10,10,0,0" Width="360">
<StackPanel>
<TextBlock Text="Введите количество элементов (n):" Margin="10"/>
<TextBox x:Name="InputNSeries" Width="100" Margin="10"/>
<Button Content="Рассчитать сумму" Width="150" Margin="10" Click="CalculateSeriesSum_Click"/>
<TextBlock x:Name="SeriesSumResult" Margin="10" FontWeight="Bold"/>
</StackPanel>
</GroupBox>
Шаг 3: Реализация логики в C#
Теперь нужно открыть файл MainWindow.xaml.cs и добавьте обработчик события
нажатия на кнопку. Этот код будет вычислять сумму n элементов ряда и выводить
результат:
using System;
using System.Windows;
namespace Task1_1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
// Подзадача 1.1: Сумма элементов ряда чисел
private void CalculateSeriesSum_Click(object sender, RoutedEventArgs e)
{
if (int.TryParse(InputNSeries.Text, out int n) && n > 0)
{
double sum = 0;
double term = 1;
for (int i = 0; i < n; i++)
{
sum += term;
term *= -0.5; // Следующий элемент
}
SeriesSumResult.Text = $"Сумма первых {n} элементов: {sum:F4}"; // Изменено на F4
}
else
{
SeriesSumResult.Text = "Введите корректное положительное число.";
}
}
Шаг 4: Запуск приложения
Теперь запускаем приложение (нажмите F5 или выберите "Start" в Visual Studio).
Введите количество элементов, для которых хотите вычислить сумму, и нажимаем
кнопку "Рассчитать сумму". Результат будет отображаться на экране.
Задача 2
Создадим WPF-приложение, которое будет выполнять вторую задачу:
выводить на экран столько элементов ряда Фибоначчи, сколько указал
пользователь.
<GroupBox Header="Подзадача 1.2: Ряд Фибоначчи" HorizontalAlignment="Right" VerticalAlignment="Top"
Margin="0,10,10,0" Width="360">
<StackPanel>
<TextBlock Text="Введите количество элементов:" Margin="10"/>
<TextBox x:Name="InputNFibonacci" Width="100" Margin="10"/>
<Button Content="Показать ряд" Width="150" Margin="10" Click="GenerateFibonacci_Click"/>
<TextBlock x:Name="FibonacciResult" Margin="10" TextWrapping="Wrap" FontWeight="Bold"/>
</StackPanel>
</GroupBox>
Реализация логики в C#
Теперь нужно открыть файл MainWindow.xaml.cs и добавьте обработчик события
нажатия на кнопку. Этот код будет вычислять сумму n элементов ряда и выводить
результат:
private void GenerateFibonacci_Click(object sender, RoutedEventArgs e)
{
if (int.TryParse(InputNFibonacci.Text, out int n) && n > 0)
{
int a = 1, b = 2;
string result = $"{a} {b}";
for (int i = 2; i < n; i++)
{
int temp = a + b;
result += $" {temp}";
a = b;
b = temp;
}
FibonacciResult.Text = $"Первые {n} чисел: {result}";
}
else
{
FibonacciResult.Text = "Введите корректное положительное число.";
}
}
Запуск приложения
Теперь запускаем приложение (нажмите F5 или выберите "Start" в Visual Studio).
Введите количество элементов Фибоначчи, которые хотите вывести, и нажмите кнопку
"Показать Фибоначчи". Результат будет отображаться на экране.
Задача 3
Создаем WPF-приложение, которое будет выполнять третью задачу: подсчет
четных и нечетных цифр введенного натурального числа.
<GroupBox Header="Подзадача 1.3: Четные и нечетные цифры" HorizontalAlignment="Left"
VerticalAlignment="Bottom" Margin="10,0,0,10" Width="360">
<StackPanel>
<TextBlock Text="Введите число:" Margin="10"/>
<TextBox x:Name="InputNumberEvenOdd" Width="100" Margin="10"/>
<Button Content="Показать результат" Width="150" Margin="10" Click="CountEvenOddDigits_Click"/>
<TextBlock x:Name="EvenOddResult" Margin="10" FontWeight="Bold"/>
</StackPanel>
</GroupBox>
Реализация логики в C#
Теперь откроем файл MainWindow.xaml.cs и добавляем обработчик события
нажатия на кнопку. Этот код будет подсчитывать четные и нечетные цифры и выводить
результат:
private void CountEvenOddDigits_Click(object sender, RoutedEventArgs e)
{
if (long.TryParse(InputNumberEvenOdd.Text, out long number) && number >= 0)
{
int evenCount = 0, oddCount = 0;
foreach (char c in number.ToString())
{
int digit = c - '0';
if (digit % 2 == 0)
evenCount++;
else
oddCount++;
}
EvenOddResult.Text = $"Четные: {evenCount}, Нечетные: {oddCount}";
}
else
{
EvenOddResult.Text = "Введите корректное положительное число.";
}
}
Запуск приложения
Запускаем приложение (нажмите F5 или выберите "Start" в Visual Studio). Вводим
натуральное число, и нажмите кнопку "Подсчитать". Результат, показывающий
количество четных и нечетных цифр, будет отображен на экране.
Задача 4
Создаем WPF-приложение, которое будет находить сумму и произведение
цифр введенного натурального числа. Мы создадим простой интерфейс, который
позволит пользователю ввести число и получить результаты по нажатию кнопки.
<GroupBox Header="Подзадача 1.4: Сумма и произведение цифр" HorizontalAlignment="Right"
VerticalAlignment="Bottom" Margin="0,0,10,10" Width="360">
<StackPanel>
<TextBlock Text="Введите число:" Margin="10"/>
<TextBox x:Name="InputNumberSumProd" Width="100" Margin="10"/>
<Button Content="Показать результат" Width="150" Margin="10"
Click="CalculateSumAndProduct_Click"/>
<TextBlock x:Name="SumProdResult" Margin="10" FontWeight="Bold"/>
</StackPanel>
</GroupBox>
</Grid>
</Window>
Реализация логики в C#
Теперь откройте файл MainWindow.xaml.cs и добавьте обработчик события
нажатия на кнопку. Этот код будет вычислять сумму и произведение цифр введенного
числа и выводить результат:
private void CalculateSumAndProduct_Click(object sender, RoutedEventArgs e)
{
if (long.TryParse(InputNumberSumProd.Text, out long number) && number >= 0)
{
int sum = 0;
long product = 1;
foreach (char c in number.ToString())
{
int digit = c - '0';
sum += digit;
product *= digit;
}
SumProdResult.Text = $"Сумма: {sum}, Произведение: {product}";
}
else
{
SumProdResult.Text = "Введите корректное положительное число.";
}
}
}
}
Запуск приложения
Запускаем приложение (нажмите F5 или выберите "Start" в Visual Studio). Вводим
натуральное число, нажимаем кнопку "Рассчитать", и видим сумму и произведение его
цифр на экране.
Задание 2 Написать программу, используя WPF, предоставляющую следующие
возможности: в программе генерируется случайное целое число от 0 до 100.
Пользователь должен его отгадать не более чем за 10 попыток. После каждой неудачной
попытки должно выводиться сообщение о том, больше или меньше введенное
пользователем число, чем то, что загадано. Если за 10 попыток число не отгадано, то
вывести загаданное число.
Решение:
Создаем WPF-приложение, которое позволит угадать случайное число от 0 до 100
за 10 попыток. Программа будет сообщать, больше или меньше введенное число по
сравнению с загаданным, и предоставить сообщение, если число не угадано за 10
попыток.
Шаг 1: Создание WPF-приложения
1. Откроем Visual Studio.
2. Создадим новый проект WPF App (.NET).
3. В проекте будет файл MainWindow.xaml, который можно использовать для
создания интерфейса.
Шаг 2: Добавление элементов управления в XAML
Изменим файл MainWindow.xaml, чтобы добавить элементы для ввода числа,
кнопку для проверки попытки и текстовое поле для вывода результата:
<Window x:Class="Task1_2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Угадай число" Height="300" Width="400"
WindowStartupLocation="CenterScreen"
ResizeMode="NoResize">
<Grid>
<!-- Текст для подсказки -->
<TextBlock Text="Угадайте число от 0 до 100"
HorizontalAlignment="Center"
VerticalAlignment="Top"
Margin="0,20,0,0"
FontSize="16" />
<!-- Поле ввода для числа -->
<TextBox x:Name="InputTextBox"
Width="100"
HorizontalAlignment="Center"
VerticalAlignment="Top"
Margin="0,60,0,0"
FontSize="16"
TextAlignment="Center" Text="2" />
<!-- Кнопка для проверки числа -->
<Button Content="Проверить"
HorizontalAlignment="Center"
VerticalAlignment="Top"
Width="100"
Margin="0,110,0,0"
FontSize="14"
Click="CheckNumber_Click" />
<!-- Поле для отображения сообщений -->
<TextBlock x:Name="MessageTextBlock"
HorizontalAlignment="Center"
VerticalAlignment="Top"
Margin="0,160,0,0"
FontSize="14"
TextAlignment="Center"
TextWrapping="Wrap" />
<!-- Поле для отображения оставшихся попыток -->
<TextBlock x:Name="AttemptsTextBlock"
HorizontalAlignment="Center"
VerticalAlignment="Top"
Margin="0,200,0,0"
FontSize="14"
TextAlignment="Center"
TextWrapping="Wrap" />
</Grid>
</Window>
Шаг 3: Реализация логики в C#
Теперь откроем файл MainWindow.xaml.cs и добавим логику для игры в
угадывание:
using System;
using System.Windows;
namespace Task1_2
{
public partial class MainWindow : Window
{
private int targetNumber; // Загаданное число
private int attempts; // Количество попыток
public MainWindow()
{
InitializeComponent();
StartNewGame(); // Начало игры при запуске программы
}
// Метод для инициализации новой игры
private void StartNewGame()
{
Random random = new Random();
targetNumber = random.Next(0, 101); // Случайное число от 0 до 100
attempts = 0;
MessageTextBlock.Text = "Угадайте число от 0 до 100.";
UpdateAttemptsText(); // Обновляем отображение оставшихся попыток
}
// Метод для обновления текста с количеством оставшихся попыток
private void UpdateAttemptsText()
{
AttemptsTextBlock.Text = $"Оставшиеся попытки: {10 - attempts}";
}
// Обработчик события нажатия кнопки "Проверить"
private void CheckNumber_Click(object sender, RoutedEventArgs e)
{
if (int.TryParse(InputTextBox.Text, out int userGuess))
{
attempts++; // Увеличение счетчика попыток
UpdateAttemptsText(); // Обновляем отображение оставшихся попыток
// Проверка введенного числа с загаданным
if (userGuess == targetNumber)
{
MessageTextBlock.Text = $"Поздравляем! Вы угадали число {targetNumber} за {attempts}
попыток!";
StartNewGame(); // Начало новой игры после отгадывания
}
else if (attempts >= 10)
{
MessageTextBlock.Text = $"Вы проиграли! Загаданное число было: {targetNumber}. Начинаем
новую игру...";
StartNewGame(); // Начало новой игры после истечения попыток
}
else if (userGuess < targetNumber)
{
MessageTextBlock.Text = "Ваше число меньше загаданного. Попробуйте еще раз.";
}
else
{
MessageTextBlock.Text = "Ваше число больше загаданного. Попробуйте еще раз.";
}
}
else
{
MessageTextBlock.Text = "Введите допустимое целое число.";
}
InputTextBox.Clear(); // Очистка поля ввода
InputTextBox.Focus(); // Фокус на поле ввода
}
}
}
Пояснение кода
1.
Инициализация: В
методе StartNewGame() происходит
генерация
случайного числа от 0 до 100 и инициализация количества попыток.
2.
Обработка ввода: В обработчике CheckNumber_Click проверяется, ввел ли
пользователь корректное число. Если ввел:

Увеличивается счетчик попыток.

Проверяется, меньше ли загаданное число, больше или равно.

Если число угадано, пользователь получает сообщение об успехе и игра
начинается заново.

Если попыток больше 10, программа сообщает пользователю загаданное
число и также начинает новую игру.
3.
Сообщения: Каждое сообщение о результате отображается в TextBlock.
Шаг 4: Запуск приложения
Запускаем приложение (нажмите F5 или выберите "Start" в Visual Studio). Введем
число от 0 до 100 и нажмите "Угадать". Получим общение о том, больше или меньше
загаданное число, пока не угадаете его или не исчерпаете попытки.
Скачать