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

Выдача новогодних подарков детям (C#, NET Framework 4.8, Entity Framework 6, SQL Server, Windows Forms)

Задание

Разработать приложение которое позволило бы вести учет выданных детских подарков. Для реализации проекта рекомендуется использовать высокоуровневый язык C# технологию создания оконных приложений - Windows Forms и базу данных SQL Server.  Использовать ADO.NET - ЗАПРЕЩЕНО! РЕКОМЕНДУЕТСЯ - ENTITY FRAMEWORK!

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

  • Учет родителей и детей
  • Учёт подарков и их выдачи
  • Экспорт данных по выдаче в Excel

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

using Giving_Out_GiftsApp.Data;
using Giving_Out_GiftsApp.Models;
using ClosedXML.Excel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Windows.Forms;

namespace Giving_Out_GiftsApp.Windows
{
    public partial class ExtraditionForm : Form
    {
        private AppDbContext context;
        private List<Extradition> extraditions = new List<Extradition>();   
        private BindingSource extraditionsBindingSource = new BindingSource();
        private BindingSource displayBindingSource = new BindingSource();
        public ExtraditionForm()
        {
            InitializeComponent();
            context = new AppDbContext();
        }

        private void Populate()
        {
            extraditions = context.Extraditions
                .Include("Parent")
                .Include("Kid")
                .Include("GivingGifts.Gift")
                .ToList();

            extraditionsBindingSource.DataSource = new BindingList<Extradition>(extraditions);

            var displayData = extraditions.Select(e => new
            {
                e.ExtraditionId,
                ParentName = $"{e.Parent.FullName}",
                KidName = $"{e.Kid.FullName}",
                Gifts = string.Join(", ", e.GivingGifts.Select(ec => ec.Gift.Name)),
                ExtraditionDate = e.ExtraditionDate.ToString("dd.MM.yyyy"),
                
            }).ToList();

            displayBindingSource.DataSource = displayData;

            ExtraditionsDGV.DataSource = null;
            ExtraditionsDGV.Columns.Clear();
            ExtraditionsDGV.DataSource = displayBindingSource;

            bindingNavigator1.BindingSource = displayBindingSource;
        }

        private void ExtraditionForm_Load(object sender, EventArgs e)
        {
            Populate();
            extraditionsBindingSource.CurrentChanged += ExtraditionsBindingSource_CurrentChanged;
            ParentCb.SelectedIndexChanged += ParentCb_SelectedIndexChanged;

            // Загрузка родителей-сотрудников
            var parents = context.Parents.ToList();
            ParentCb.DataSource = parents;
            ParentCb.DisplayMember = "FullName";
            ParentCb.ValueMember = "ParentId";

            // Загрузка детей
            //var kids = context.Kids.ToList();
            //KidCb.DataSource = kids;
            //KidCb.DisplayMember = "FullName";
            //KidCb.ValueMember = "KidId";

            // Загрузка подарков
            var gifts = context.Gifts.ToList();
            GiftsLb.DataSource = gifts;
            GiftsLb.DisplayMember = "Name";
            GiftsLb.ValueMember = "GiftId";
        }

        private void ParentCb_SelectedIndexChanged(object sender, EventArgs e)
        {
            var parent = ParentCb.SelectedItem as Parent;
            if (parent == null)
                return;

            int parentId = parent.ParentId;

            var kids = context.ParentKids
                .Where(pk => pk.ParentId == parentId)
                .Select(pk => pk.Kid)
                .Distinct()
                .ToList();

            KidCb.DataSource = kids;
            KidCb.DisplayMember = "FullName";
            KidCb.ValueMember = "KidId";
        }

        private void ExtraditionsBindingSource_CurrentChanged(object sender, EventArgs e)
        {
            if (extraditionsBindingSource.Current is Extradition selectedGiving)
            {
                // Устанавливаем родителя и ребенка
                ParentCb.SelectedValue = selectedGiving.ParentId;
                KidCb.SelectedValue = selectedGiving.KidId;
                

                // Снимаем все выделения сначала
                for (int i = 0; i < GiftsLb.Items.Count; i++)
                    GiftsLb.SetSelected(i, false);

                // Устанавливаем выделения курсов
                var selectedGiftIds = selectedGiving.GivingGifts.Select(ec => ec.GiftId).ToHashSet();
                for (int i = 0; i < GiftsLb.Items.Count; i++)
                {
                    if (GiftsLb.Items[i] is Gift gift && selectedGiftIds.Contains(gift.GiftId))
                        GiftsLb.SetSelected(i, true);
                }
            }
        }

        private void AddBtn_Click(object sender, EventArgs e)
        {
            if (ParentCb.SelectedValue == null ||KidCb.SelectedValue == null)
            {
                MessageBox.Show("Пожалуйста, выберите сотрудника и ребенка.");
                return;
            }

            int parentId = (int)ParentCb.SelectedValue;
            int kidId = (int)KidCb.SelectedValue;

            if (GiftsLb.SelectedItems.Count == 0)
            {
                MessageBox.Show("Выберите хотя бы один подарок.");
                return;
            }

            var extradition = new Extradition
            {
                ParentId = parentId,
                KidId = kidId,
                ExtraditionDate = DateTime.UtcNow,  
                GivingGifts = new List<GivingGift>()
            };

            foreach (Gift selectedGift in GiftsLb.SelectedItems)
            {
                extradition.GivingGifts.Add(new GivingGift
                {
                    GiftId = selectedGift.GiftId
                });
            }

            context.Extraditions.Add(extradition);
            context.SaveChanges();

            MessageBox.Show("Запись успешно добавлена.");
            Populate();
        }

        private void EditBtn_Click(object sender, EventArgs e)
        {
            var current = extraditionsBindingSource.Current as Extradition;
            if (current == null)
            {
                MessageBox.Show("Выберите запись для редактирования.");
                return;
            }

            var extradition = context.Extraditions
                .FirstOrDefault(en => en.ExtraditionId == current.ExtraditionId);

            if (extradition == null)
            {
                MessageBox.Show("Запись не найдена.");
                return;
            }

            extradition.ParentId = (int)ParentCb.SelectedValue;
            extradition.KidId = (int)KidCb.SelectedValue;
            extradition.ExtraditionDate = ExtraditionDateDtp.Value;


            // Удаление старых связей
            var existingGifts = context.GivingGifts
                .Where(ec => ec.ExtraditionId == extradition.ExtraditionId);
            context.GivingGifts.RemoveRange(existingGifts);

            // Добавление новых
            foreach (Gift selectedGigt in GiftsLb.SelectedItems)
            {
                context.GivingGifts.Add(new GivingGift
                {
                    ExtraditionId = extradition.ExtraditionId,
                    GiftId = selectedGigt.GiftId
                });
            }

            context.SaveChanges();
            MessageBox.Show("Запись обновлена.");
            Populate();
        }

        private void DeleteBtn_Click(object sender, EventArgs e)
        {
            var current = extraditionsBindingSource.Current as Extradition;
            if (current == null)
            {
                MessageBox.Show("Выберите запись для удаления.");
                return;
            }

            var confirm = MessageBox.Show("Удалить запись?", "Подтверждение", MessageBoxButtons.YesNo);
            if (confirm != DialogResult.Yes)
                return;

            var extradition = context.Extraditions
                .FirstOrDefault(en => en.ExtraditionId == current.ExtraditionId);

            if (extradition != null)
            {
                var relatedGifts = context.GivingGifts
                    .Where(ec => ec.ExtraditionId == extradition.ExtraditionId);
                context.GivingGifts.RemoveRange(relatedGifts);

                context.Extraditions.Remove(extradition);
                context.SaveChanges();
                MessageBox.Show("Запись удалена.");
                Populate();
            }
        }

        private void ClosedBtn_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void ExtraditionsDGV_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0 && e.RowIndex < extraditions.Count)
            {
                extraditionsBindingSource.Position = e.RowIndex;
                ExtraditionsBindingSource_CurrentChanged(null, null);
            }
        }

        private void ExportBtn_Click(object sender, EventArgs e)
        {
            using (SaveFileDialog sfd = new SaveFileDialog()
            {
                Filter = "Excel Workbook|*.xlsx",
                Title = "Сохранить как Excel файл"
            })
            {
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    using (var workbook = new XLWorkbook())
                    {
                        var worksheet = workbook.Worksheets.Add("Курсы");

                        // Заголовки
                        for (int i = 0; i < ExtraditionsDGV.Columns.Count; i++)
                        {
                            worksheet.Cell(1, i + 1).Value = ExtraditionsDGV.Columns[i].HeaderText;
                        }

                        // Данные
                        for (int i = 0; i < ExtraditionsDGV.Rows.Count; i++)
                        {
                            for (int j = 0; j < ExtraditionsDGV.Columns.Count; j++)
                            {
                                worksheet.Cell(i + 2, j + 1).Value = ExtraditionsDGV.Rows[i].Cells[j].Value?.ToString();
                            }
                        }

                        workbook.SaveAs(sfd.FileName);
                        MessageBox.Show("Экспорт завершён!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }
    }
}

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

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

1. Устанавливаем Visual Studio 2026 Community 2. SSMS также устанавливаем. 3. Запускаем проект - удаляем папку миграций - создаем их заново командами в консоли диспетчера пакетов - Enable Migrations - Add-Migration InitialCreate - Update Database. 4. хмакаем зеленую кнопку вверху на панели - наслаждаемся использованием. 

Купить 2000,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)
Выдача новогодних подарков детям (C#, NET Framework 4.8, Entity Framework 6, SQL Server, Windows Forms)

/ /

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

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

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

2000,00 

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

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

Выдача подарков.zip
71778648
Оцени работу

рейтинг

Выдача новогодних подарков детям (C#, NET Framework 4.8, Entity Framework 6, SQL Server, Windows Forms)
Приложение для учета выданных подарков. Приложение обладает понятным функционалом и приятным интерфейсом - позволяет вести учет родителей, детей, подарков и их выдачу.
Категория: Образование
Стоимость: 2000,00