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

Контроль работы ИТ-компании (C#, ASP.NET Core MVC, SQL Server)

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

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

Задание

С помощью среды Visual Studio Community 2022 и платформы ASP.NET Core разработать приложение для контроля работы IT компании, удовлетворяющее следующимтребованиям: 1. Программа содержит страницы с информацией о программистах, менеджерах,бухгалтерах и комнатах, в которых работают сотрудники. 2. Начальное количество мест в каждой комнате равняется 10.3. Для программистов, менеджеров и бухгалтеров должны быть предусмотреныоперации добавления (приема на работу), редактирования (изменения данных осотрудниках) и удаления (увольнения). 4. Программисты, менеджеры, бухгалтеры размещаются в конкретных комнатах. 5. После добавления сотрудника количество мест в комнате, в которой размещаетсясотрудник, уменьшается количество мест.

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

  • добавление, редактирование, удаление сотрудников в соответствующие комнаты
  • добавление, удаление и редактирование комнат
  • поиск сотрудника по имени или фамилии 
  • уменьшение количества свободных мест в комнате при каждом новом добавлении сотрудника в соответствующую комнату.  

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

using ITСompany.BusinessLayer.Models.Entities.Rooms;
using System.ComponentModel.DataAnnotations;

namespace ITСompany.BusinessLayer.Models.Entities.Accountants
{
    public class Accountant
    {
        public int Id { get; set; } // Идентификационный номер
        [MaxLength(100)]
        public string Name { get; set; } // Имя бухгалтера
        [MaxLength(100)]
        public string LastName { get; set; } // Фамилия бухгалтера
        [MaxLength(100)]
        public string SurName { get; set; } // Отчество бухгалтера
        public int Age { get; set; } //Возраст
        public int Experience { get; set; } // Опыт
        public Room Room { get; set; } // Внешний ключ к таблице Room
        public int RoomId { get; set; } // Id комнаты
    }
}

Фрагмент программного кода репозитория для модели Accountant

using ITСompany.BusinessLayer.Context;
using ITСompany.BusinessLayer.Models.Entities.Accountants;
using Microsoft.EntityFrameworkCore;

namespace ITСompany.BusinessLayer.Repositories
{
    public class AccountantRepository : IRepository<Accountant>
    {
        private readonly ApplicationDbContext _context;

        public AccountantRepository(ApplicationDbContext context)
        {
            _context = context;
        }       

        public IEnumerable<Accountant> GetAll()
        {
            return _context.Accountants.Include(a => a.Room).ToList();
        }

        public Accountant GetById(int id)
        {
            return _context.Accountants.FirstOrDefault(a => a.Id == id);
        }

        public void Add(Accountant entity)
        {
            _context.Accountants.Add(entity);
            _context.SaveChanges();
        }

        public void Update(Accountant entity)
        {
            _context.Entry(entity).State = EntityState.Modified;
            _context.SaveChanges();
        }

        public void Remove(Accountant entity)
        {
            _context.Accountants.Remove(entity);
            _context.SaveChanges();
        }        
    }
}

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

using ITСompany.BusinessLayer.Context;
using ITСompany.BusinessLayer.Models.Entities.Accountants;
using ITСompany.BusinessLayer.Services;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;

namespace ITСompany.WebApp.Controllers
{
    public class AccountantsController : Controller
    {
        private readonly ApplicationDbContext _context;
        private readonly IRoomService _roomService;

        public AccountantsController(ApplicationDbContext context, IRoomService roomService)
        {
            _context = context;
            _roomService = roomService;
        }

        public IActionResult Index()
        {
            var accountants = _context.Accountants.Include(a => a.Room).ToList();
            return View(accountants);
        }

        [HttpGet]
        public IActionResult Index(string searchQuery)
        {
            var accountants = _context.Accountants.Include(a => a.Room).AsQueryable();

            if (!string.IsNullOrWhiteSpace(searchQuery))
            {
                accountants = accountants.Where(a => a.LastName.Contains(searchQuery) || a.Name.Contains(searchQuery));
            }

            return View(accountants.ToList());
        }

        public IActionResult Details(int? id)
        {
            if (id == null || _context.Accountants == null)
            {
                return NotFound();
            }

            var accountant = _context.Accountants
                .FirstOrDefault(m => m.Id == id);
            if (accountant == null)
            {
                return NotFound();
            }

            ViewBag.Rooms = _context.Rooms.ToList(); // Передаем список комнат снова
            return View(accountant);
        }

        public IActionResult Create()
        {
            ViewBag.Rooms = _context.Rooms.ToList(); // Передаем список комнат снова
            return View();
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult Create(Accountant accountant)
        {
            if (accountant == null)
            {
                return RedirectToAction(nameof(Index));
            }

            if (ModelState.IsValid)
            {
                ViewBag.Rooms = _context.Rooms.ToList(); // Передаем список комнат снова
                return View(accountant);
            }

            // Найти комнату по идентификатору
            var room = _context.Rooms.Find(accountant.RoomId);
            if (room == null)
            {
                ModelState.AddModelError("", "Указанной комнаты не существует.");
                ViewBag.Rooms = _context.Rooms.ToList(); // Передаем список комнат снова                
            }
            // Проверить наличие свободных мест
            if (room?.AvailablePlaces > 0)
            {
                // Добавить бухгалтера
                accountant.RoomId = room.Id; // Убедитесь, что RoomId установлен
                _context.Accountants.Add(accountant);
                _context.SaveChanges(); // Сохраняем бухгалтера

                // Уменьшить количество свободных мест
                room.AvailablePlaces--;
                _context.Update(room);
                _context.SaveChanges(); // Сохраняем изменения в комнате

                return RedirectToAction(nameof(Index));
            }
            else
            {
                ModelState.AddModelError("", "В комнате нет свободных мест.");
                ViewBag.Rooms = _context.Rooms.ToList(); // Передаем список комнат снова
                return View(accountant);
            }
        }

        public IActionResult Edit(int? id)
        {
            var accountant = _context.Accountants.Include(a => a.Room).FirstOrDefault(a => a.Id == id);
            if (accountant == null)
            {
                return RedirectToAction(nameof(Index));
            }           

            ViewData["AccountantId"] = accountant.Id;
            ViewBag.Rooms = _context.Rooms.ToList(); // Передаем список комнат
            return View(accountant); // <-- Здесь исправлено
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult Edit(Accountant accountant)
        {
            if (!ModelState.IsValid)
            {
                _context.Update(accountant);
                _context.SaveChanges();
                return RedirectToAction(nameof(Index));
            }
            ViewData["AccountantId"] = accountant.Id; // Обновляем ID для передачи
            ViewBag.Rooms = _context.Rooms.ToList(); // Передаем список комнат 
            return View(accountant);
        }

        public async Task<IActionResult> Delete(int id)
        {
            var accountant = await _context.Accountants.FindAsync(id);

            if (accountant == null)
            {
                return RedirectToAction(nameof(Index));
            }            
            _context.Remove(accountant);

            await _context.SaveChangesAsync();

            return RedirectToAction(nameof(Index));
        }
    }
}

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

в архиве с данных проектом приложена инструкция в формате Word. Внимательно читаем и в точности выполняем все действия. Инструкция несет своей целью помочь вам разобраться с запуском и рабой с приложением. 

Приложения 

В качестве приложений представлены: 1. схема БД и 2. Диаграмма классов 

Купить 2000,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)
Контроль работы ИТ-компании (C#, ASP.NET Core MVC, SQL Server)

/ /

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

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

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

2000,00 

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

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

IT-компания.rar
32190010
Оцени работу

рейтинг

Контроль работы ИТ-компании (C#, ASP.NET Core MVC, SQL Server)
В последнее время IT-компании приобретают все большую популярность в качестве места для трудоустройства. Для более качественного учета сотрудников в компании можно разработать систему (приложения), которая позволяет осуществить данное действие.
Категория: Образование
Стоимость: 2000,00