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

Учёт посещений и пропусков занятий (C#, ASP.NET Core MVC NET 7.0, EF Core, SQL Server)

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

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

Задание

Разработайте на языке C# и ASP.NET Core MVC NET 7.0 простое веб-приложение для для учета посещений и пропусков занятий, приложение должно носить название - Учёт посещений и пропусков занятий. Для работы с базой данных рекомендуется использовать EF Core и SQL Server Management Studio 20.

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

  • добавление студентов
  • редактирование студентов
  • удаление студентов
  • поиск по студенту
  • поиск по группе
  • поиск по преподавателю

Фрагмент программного кода (класс - Student)

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace AttendanceTrackingMVC.Models
{
    [Table("Students")]
    public class Student
    {
        /// <summary>
        /// id студента
        /// </summary>
        public int Id { get; set; }
        /// <summary>
        /// Студент
        /// </summary>
        [MaxLength(100)]
        public string StudentName { get; set; } = string.Empty;
        /// <summary>
        /// Фото студента
        /// </summary>
        [MaxLength(100)]
        public string ImageFileName { get; set; } = string.Empty;
        /// <summary>
        /// Количество прогулов и пропусков по уважительным и неуважительным  причинам
        /// </summary>
        [MaxLength(50)]
        public string NumberPasses { get; set; } = string.Empty;
        /// <summary>
        /// Количество посещенных занятий
        /// </summary>
        [MaxLength(50)]
        public string NumberVisits { get; set; } = string.Empty;
        /// <summary>
        /// Причина пропуска занятий
        /// </summary>
        [MaxLength(255)]
        public string Reason { get; set; } = string.Empty;
        /// <summary>
        /// Статус причины
        /// </summary>
        [MaxLength(255)]
        public string StatusReason { get; set; } = string.Empty; 
        /// <summary>
        /// Группа
        /// </summary>
        [MaxLength(100)] 
        public string Group { get; set; } = string.Empty; 
        /// <summary>
        /// Преподаватель
        /// </summary>
        [MaxLength(100)] 
        public string Teacher { get; set; } = string.Empty;
        /// <summary>
        /// Дата внесения сведений
        /// </summary>
        public DateTime CreatedAt { get; set; }
    }
}

Фрагмент программного кода (контроллер - StudentsController)

using AttendanceTrackingMVC.Models;
using Microsoft.AspNetCore.Mvc;

namespace AttendanceTrackingMVC.Controllers
{
    public class StudentsController : Controller
    {
        private readonly AppDbContext context;
        private readonly IWebHostEnvironment environment;

        public StudentsController(AppDbContext context, IWebHostEnvironment environment)
        {
            this.context = context;
            this.environment = environment;
        }

        public IActionResult Index()
        {
            var students = context.Students.OrderByDescending(b => b.Id).ToList();
            return View(students);
        }

        [HttpGet]
        public IActionResult Index(string studentName, string group, string teacher)
        {
            var students = context.Students.AsQueryable();

            if (!string.IsNullOrEmpty(studentName))
            {
                students = students.Where(c => c.StudentName.Contains(studentName));
            }

            if (!string.IsNullOrEmpty(group))
            {
                students = students.Where(c => c.Group.Contains(group));
            }

            if (!string.IsNullOrEmpty(teacher))
            {
                students = students.Where(c => c.Teacher.Contains(teacher));
            }

            var result = students.OrderByDescending(c => c.Id).ToList(); // Получаем список студентов

            return View(result); // Возвращаем представление с результатами
        }

        public IActionResult Create()
        {
            return View();
        }

        [HttpPost]
        public IActionResult Create(StudentDto studentDto)
        {
            if (studentDto.ImageFile == null)
            {
                ModelState.AddModelError("ImageFile", "The image file is required");
            }

            if (!ModelState.IsValid)
            {
                return View(studentDto);
            }

            // save the image file
            string newFileName = DateTime.Now.ToString("yyyyMMddHHmmssfff");
            newFileName += Path.GetExtension(studentDto.ImageFile!.FileName);

            string imageFullPath = environment.WebRootPath + "/images/" + newFileName;
            using (var stream = System.IO.File.Create(imageFullPath))
            {
                studentDto.ImageFile.CopyTo(stream);
            }

            // save the new student in the database
            Student student = new Student()
            {
                StudentName = studentDto.StudentName,
                ImageFileName = newFileName,
                NumberPasses = studentDto.NumberPasses,
                NumberVisits = studentDto.NumberVisits,
                Reason = studentDto.Reason,
                StatusReason = studentDto.StatusReason,
                Group = studentDto.Group,    
                Teacher = studentDto.Teacher,
                CreatedAt = studentDto.CreatedAt
            };

            context.Students.Add(student);
            context.SaveChanges();

            return RedirectToAction("Index", "Students");
        }

        public IActionResult Edit(int id)
        {
            var student = context.Students.Find(id);
            if (student == null)
            {
                return RedirectToAction(nameof(Index));
            }

            // create studentDto from student
            var studentDto = new StudentDto()
            {
                StudentName = student.StudentName,
                NumberPasses = student.NumberPasses,
                NumberVisits = student.NumberVisits,
                Reason= student.Reason,
                StatusReason = student.StatusReason,  
                Group = student.Group,
                Teacher = student.Teacher,
                CreatedAt = student.CreatedAt              
            };

            ViewData["StudentId"] = student.Id;
            ViewData["ImageFileName"] = student.ImageFileName;           

            return View(studentDto);
        }

        [HttpPost]
        public IActionResult Edit(int id, StudentDto studentDto)
        {
            var student = context.Students.Find(id);
            if (student == null)
            {
                return RedirectToAction(nameof(Index));
            }

            if (!ModelState.IsValid)
            {
                ViewData["StudentId"] = student.Id;
                ViewData["ImageFileName"] = student.ImageFileName;
                
                return View(studentDto);
            }

            // update the image file if we have a new image file
            string newFileName = student.ImageFileName;
            if (studentDto.ImageFile != null)
            {
                newFileName = DateTime.Now.ToString("yyyyMMddHHmmssfff");
                newFileName += Path.GetExtension(studentDto.ImageFile!.FileName);

                string imageFullPath = environment.WebRootPath + "/images/" + newFileName;
                using (var stream = System.IO.File.Create(imageFullPath))
                {
                    studentDto.ImageFile.CopyTo(stream);
                }

                // delete the old image
                string oldImageFullPath = environment.WebRootPath + "/images/" + student.ImageFileName;
                System.IO.File.Delete(oldImageFullPath);
            }

            // update the student in the database
            student.StudentName = studentDto.StudentName;
            student.ImageFileName = newFileName;
            student.NumberPasses = studentDto.NumberPasses;
            student.NumberVisits = studentDto.NumberVisits;
            student.Reason = studentDto.Reason;
            student.StatusReason = studentDto.StatusReason;
            student.Group = studentDto.Group;
            student.Teacher = studentDto.Teacher;
            student.CreatedAt = studentDto.CreatedAt;

            context.Students.Update(student); // обновляем студента в контексте
            context.SaveChanges();
            return RedirectToAction(nameof(Index));
        }

        public async Task<IActionResult> Delete(int id)
        {
            var student = await context.Students.FindAsync(id);

            if (student == null)
            {

                return RedirectToAction("Index", "Students");
            }

            string imageFullPath = environment.WebRootPath + "/images/" + student.ImageFileName;
            System.IO.File.Create(imageFullPath);
            context.Remove(student);

            await context.SaveChangesAsync();

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

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

  • Скачиваем и устанавливаем Visual Studio 2022 Community -  https://visualstudio.microsoft.com/ru/vs/community/
  • Выбираем все необходимые рабочие нагрузки - это разработка веб и классических приложений на C# в дополнительных параметрах проверяем что все компоненты выбраны, при необходимости доватьте то что считаете нужным.
  • Скачиваем и устанавливаем Microsoft SQL Server Management Studio 20 - https://learn.microsoft.com/ru-ru/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16
  • Имя сервера должно быть таким - (LocalDB)\MSSQLLocalDB
  • Запускаем проект через Visual Studio 2022/ Удаляем папку миграций - Migrations. Переходим в Вид - Другие окна - Консоль диспетчера пакетов и пишем команды: Add-Migration Initial и Update-Database. 
  • На верхней панели увидие зеленую стрелку, жмете на нее и запускаете ваш проект. Добавляете автомобили которые вам нужны.  
Купить 2000,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)

/ /

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

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

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

2000,00 

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

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

Учёт посещений и пропусков занятий.rar
26243924
Оцени работу

рейтинг

Учёт посещений и пропусков занятий (C#, ASP.NET Core MVC NET 7.0, EF Core, SQL Server)
Данное приложение позволяет вести учет посещений и пропусков занятий студентами. Это своего рода ведомость - журнал посещаемости. Приложение обладает стандартным функционалом.
Категория: Образование
Стоимость: 2000,00