На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Система технической поддержки C#, WPF, SQL Server

Задание

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

    Программа должна включать в себя возможность авторизации пользователя с последующей работой с заявками системы.

Технологии: C#, WPF (.NET 6) + MVVM, SQL Server 2019.

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

Функционал программы

Для решения задачи были реализованы следующие функциональные возможности:

  • Авторизации пользователя;
  • Управление пользователями;
  • Управления категориями заявок;
  • Управление отделами технической поддержки;
  • Создание заявок технической поддержки;
  • Управление заявками;

Каждая функциональная возможность также требует наличия окна редактирования сущности.

Управление системой разделено на Администратора и Специалиста технической поддержки.

Фрагмент программного кода

/// <summary>
/// Класс авторизации пользователя в системе с UI
/// </summary>
public sealed class AuthViewModel : BaseViewModel
{
    private readonly IAuthorizationService _authService;
    private readonly IServiceProvider _serviceProvider;

    public override string Title => "Авторизация";

    // Логин пользователя
    public string Login
    {
        get => GetValue<string>(nameof(Login));
        set => SetValue(value, nameof(Login));
    }

    public ICommand LoginCommand { get; }

    public AuthViewModel(IAuthorizationService authSerivce, IServiceProvider serviceProvider)
    {
        _authService = authSerivce;
        _serviceProvider = serviceProvider;
        LoginCommand = new AsyncCommand<object>(TryLogin, x => !string.IsNullOrWhiteSpace(Login));
    }

    // Метод авторизации пользователя
    public async Task TryLogin(object passwordControl)
    {
        await Execute(async () =>
        {
            var pswrdBox = (PasswordBox)passwordControl;

            // Проверка полей
            if (string.IsNullOrWhiteSpace(Login) || string.IsNullOrWhiteSpace(pswrdBox.Password))
            {
                MessageBox.Error("Заполните все поля.", "Ошибка авторизации");
                return;
            }

            try
            {
                // Попытка авторизовать пользователя
                var user = await _authService.Authorize(Login, pswrdBox.Password);
                // Установка текущего пользователя
                App.CurrentUser = user;
                // Отображение окна с меню
                _serviceProvider.GetRequiredService<MainView>().Show();
                // Закрыть окно авторизации
                App.Current.Windows[0].Close();
            }
            catch (AuthorizeException)
            {
                MessageBox.Error("Неверный логин или пароль.", "Ошибка авторизации");
            }
            catch (UserNotFoundAuthorizeException)
            {
                MessageBox.Error("Пользователь с таким логином и паролем не существует.", "Ошибка авторизации");
            }
            catch (Exception e)
            {
                MessageBox.Error(e.Message, "Внутренняя ошибка");
            }
        });
    }
}
/// <summary>
/// Сервис для авторизации пользователей в системе
/// </summary>
internal class AuthorizationService : IAuthorizationService
{
    private readonly TechSupportContext _context;

    public AuthorizationService(TechSupportContext context)
    {
        _context = context;
    }

    /// <summary>
    /// Метод авторизации пользователя
    /// </summary>
    /// <param name="nickname">Логин</param>
    /// <param name="password">Пароль</param>
    public async Task<CurrentUser> Authorize(string nickname, string password)
    {
        // Преобразование пароля в хэш
        var passwordHash = PasswordGenerator.Generate(password);

        // Поиск пользователя в базе
        var user = await _context.Users.FirstOrDefaultAsync(x => x.Login == nickname);

        if (user is null)
        {
            // Выбросить исключение, если пользователь не найден
            throw new UserNotFoundAuthorizeException();
        }

        if (user.PasswordHash != passwordHash)
        {
            // Выбросить исключение, если пароль не совпадает
            throw new AuthorizeException();
        }

        // Преобразование модели
        return user.ToCurrentUser();
    }
}

Скриншот архива с проектом

Пояснения по запуску программы

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

  • Visual Studio 2019;
  • .NET 6;
  • SQL Server (Local Db).

Всё это можно установить в установщике Visual Studio Installer при установке Visual Studio 2019.

После просто открыть проект и запустить программу. База автоматически создастся с пользователем admin для входа в программу.

Структура проекта

Структура таблиц в базе данных

Купить 4000,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)

kostyaLem

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Похожие работы
Тип Название Рейтинг Категория Стоимость
Курсовые работы АИС Учёта заказов станции технического обслуживания (C#,WinForms,SQL Server) 0 .NET (C#) 3 000,00
Курсовые работы Учёт регламентных работ (C#, WPF, SQL Server) 1 .NET (C#) 3 000,00
Исходники Спортивный магазин C# (WPF, SQL Server, SQLite) 1 .NET (C#) 5 000,00
Исходники Автомагазин (C#, WPF, SQL Server, SQLite) 0 .NET (C#) 3 000,00
Исходники Автошкола (C#, WPF, SQL Server, SQLite) 0 .NET (C#) 3 000,00
Купить

4000,00 

Покупается впервые!
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.

Заказать через

TechSupport.rar
434565
Оцени работу

рейтинг

Система технической поддержки C#, WPF, SQL Server
Автоматизация приема и анализа заявок технической поддержки пользователей. АСУ ТП
Категория: Образование
Стоимость: 4000,00