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

АИС Регистрация писем (C#, NET 8, ASP NET Core WEBAPI, Blazor WebAssembly, Entity Framework Core, SQL Server)

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

Задание

Разработать систему автоматизированной регистрации входящей корреспонденции (АИС), обеспечивающую:

  • Учёт сотрудников, отправителей и получателей с использованием Entity Framework Core для работы с базой данных.

  • Регистрацию новых писем с указанием типа (электронное или бумажное) и даты регистрации.

  • Возможность фильтрации писем по типу и зарплатным параметрам сотрудников.

  • Отображение статистики в виде дашборда:

    • общее количество сотрудников, отправителей, получателей и писем;

    • круговая диаграмма соотношения писем по типу;

    • гистограмма количества писем по дате регистрации;

    • таблица последних зарегистрированных писем.

Требуемый стек технологий: C#, ASP.NET Core WebAPI, Blazor WebAssembly, Entity Framework Core, SQL Server.

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

  • Учёт сотрудников — добавление, редактирование и удаление сотрудников организации.

  • Учёт отправителей и получателей — создание и ведение базы отправителей и получателей писем.

  • Регистрация писем — добавление новых писем с указанием типа (электронное или бумажное) и даты регистрации.

  • Фильтры и поиск — фильтрация писем по типу и зарплатным параметрам сотрудников.

  • Статистика и дашборд:

    • общее количество сотрудников, отправителей, получателей и писем;

    • круговая диаграмма соотношения писем по типу;

    • гистограмма количества писем по дате регистрации;

    • график зарплат сотрудников с автоматической сортировкой по возрастанию через LINQ;

    • таблица последних зарегистрированных писем.

  • Визуализация данных — графики автоматически обновляются при добавлении новых данных.

  • Гибкая настройка базы данных — поддержка LocalDB или подключение к SQL Server с указанием собственного имени сервера.

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

@code {
    private bool loading = true;
    private bool chartRendered = false;

    private int employeeCount;
    private int senderCount;
    private int recipientCount;
    private int letterCount;

    private List<Letter>? latestLetters;
    private List<Employee>? employees;

    private List<Letter> allLetters = new();

    private int digital = 0;
    private int paper = 0;

    [Inject] private SalaryFilterService? SalaryFilter { get; set; }


    // Данные для диаграммы по дате
    private List<string> datesLabels = new();
    private List<int> digitalByDate = new();
    private List<int> paperByDate = new();

    // Данные для зарплатной диаграммы
    private string[] employeeNames = Array.Empty<string>();
    private decimal[] salaries = Array.Empty<decimal>();

    protected override async Task OnInitializedAsync()
    {
        loading = true;

        employees = await Http.GetFromJsonAsync<List<Employee>>("https://localhost:7276/api/Employees");
        var senders = await Http.GetFromJsonAsync<List<Sender>>("https://localhost:7276/api/Senders");
        var recipients = await Http.GetFromJsonAsync<List<Recipient>>("https://localhost:7276/api/Recipients");
        var letters = await Http.GetFromJsonAsync<List<Letter>>("https://localhost:7276/api/Letters");

        employeeCount = employees?.Count ?? 0;
        senderCount = senders?.Count ?? 0;
        recipientCount = recipients?.Count ?? 0;
        letterCount = letters?.Count ?? 0;

        allLetters = letters ?? new List<Letter>();
        latestLetters = allLetters.OrderByDescending(x => x.RegistrationDate).ToList();

        digital = allLetters.Count(l => l.TypeLetter == TypeLetter.Electronic);
        paper = allLetters.Count(l => l.TypeLetter == TypeLetter.Paper);

        UpdateDateChart(allLetters);
        UpdateSalaryChart();

        // Подписка на изменения фильтра зарплаты
        SalaryFilter.OnChange += UpdateSalaryChart;

        loading = false;
    }

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (!loading && !chartRendered)
        {
            chartRendered = true;
            await RenderLettersCharts();
            await RenderSalaryChart();
        }
    }

    private void UpdateDateChart(List<Letter> letters)
    {
        datesLabels.Clear();
        digitalByDate.Clear();
        paperByDate.Clear();

        var grouped = letters
            .GroupBy(l => l.RegistrationDate?.ToString("yyyy-MM-dd") ?? "")
            .OrderBy(g => g.Key);

        foreach (var g in grouped)
        {
            datesLabels.Add(g.Key);
            digitalByDate.Add(g.Count(l => l.TypeLetter == TypeLetter.Electronic));
            paperByDate.Add(g.Count(l => l.TypeLetter == TypeLetter.Paper));
        }
    }

    private void UpdateSalaryChart()
    {
        if (employees == null || employees.Count == 0) return;

        var (min, max) = SalaryFilter.GetFilter();

        // Фильтруем и сразу сортируем по зарплате по возрастанию
        var filtered = employees
            .Where(e => (!min.HasValue || e.Salary >= min.Value) &&
                        (!max.HasValue || e.Salary <= max.Value))
            .OrderBy(e => e.Salary) // Сортировка LINQ
            .ToList();

        // Формируем массивы для графика
        employeeNames = filtered.Select(e => e.FullName).ToArray();
        salaries = filtered.Select(e => e.Salary).ToArray();

        // Перерисовываем только зарплатный график
        InvokeAsync(RenderSalaryChart);
    }


    private async Task RenderLettersCharts()
    {
        await JS.InvokeVoidAsync("drawPieChartWithPercent", "lettersPie", new[] { "Электронные", "Бумажные" }, new[] { digital, paper });
        await JS.InvokeVoidAsync("drawBarChartByDate", "lettersByDate", datesLabels.ToArray(), digitalByDate.ToArray(), paperByDate.ToArray());
    }

    private async Task RenderSalaryChart()
    {
        await JS.InvokeVoidAsync("drawSalaryChart", employeeNames, salaries);
    }

    public void Dispose()
    {
        SalaryFilter.OnChange -= UpdateSalaryChart;
    }
}

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

  • Установка Visual Studio 2022 Community

    • Скачайте и установите Visual Studio 2022 Community с официального сайта.

    • При установке выберите рабочие нагрузки:

      • Разработка веб-приложений

      • Разработка классических .NET приложений на C# и Visual Basic

    • В разделе Дополнительно отметьте: .NET 8 и 9, .NET Framework 4.7.2 и 4.8, ASP.NET MVC 4.

  • Установка SQL Server Management Studio (SSMS)

    • Скачайте и установите SSMS с официального сайта.

    • Настройка подключения к серверу: используйте (LocalDB)\MSSQLLocalDB или укажите своё имя сервера.

  • Запуск проекта через Visual Studio 2022 Community

    • Откройте решение проекта.

  • Проверка строки подключения

    • В файле appsettings.json проверьте строку подключения: "DefaultConnection": "Server=(LocalDB)\\MSSQLLocalDB;Database=EmailTrackingDB;Trusted_Connection=True;MultipleActiveResultSets=true"

    • Если используете своё имя сервера, замените (LocalDB)\MSSQLLocalDB на него.
  • Миграции базы данных

    • Удалите папку Migrations в проекте (для чистой базы).

    • Через Visual Studio → Package Manager Console выполните команды: Add-Migration InitialCreate  и Update-Database

    • Это создаст пустую базу данных с нужными таблицами.
  • Запуск проекта и заполнение данными

    • Запустите проект (F5 или Ctrl+F5).

    • В открывшемся браузере можно добавлять сотрудников, отправителей и получателей, регистрировать письма и просматривать статистику.

Купить 8000,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)
АИС Регистрация писем (C#, NET 8, ASP NET Core WEBAPI, Blazor WebAssembly, Entity Framework Core, SQL Server)

/ /

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

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

Только зарегистрированые пользователи имеют возможность комментировать работы
Купить

8000,00 

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

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

АИС Регистрация писем.zip
81033934
Оцени работу

рейтинг

АИС Регистрация писем (C#, NET 8, ASP NET Core WEBAPI, Blazor WebAssembly, Entity Framework Core, SQL Server)
Данный проект, представляет собой - современное веб-приложение (АИС) для учёта и управления входящими письмами.
Категория: Образование
Стоимость: 8000,00