slarny4/Demo1/Program.cs
Class_Student aa3336ca1b init
2024-10-23 12:52:43 +03:00

372 lines
16 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Demo.Data.LocalData;
using Demo.Data.LocalData.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
bool exit = false;
while (!exit)
{
Console.Clear();
Console.WriteLine("1. Показать всех пользователей");
Console.WriteLine("2. Удалить пользователя по GUID");
Console.WriteLine("3. Обновить пользователя");
Console.WriteLine("4. Найти пользователя по GUID");
Console.WriteLine("5. Показать все группы");
Console.WriteLine("6. Добавить группу");
Console.WriteLine("7. Обновить группу");
Console.WriteLine("8. Удалить группу по ID");
Console.WriteLine("9. Найти группу по ID");
Console.WriteLine("10. Генерация посещаемости на текущий день");
Console.WriteLine("11. Генерация посещаемости на неделю");
Console.WriteLine("12. Показать посещаемость по группе и дате");
Console.WriteLine("13. Отметить пользователя как отсутствующего");
Console.WriteLine("0. Выход");
Console.Write("Выберите опцию: ");
var choice = Console.ReadLine();
switch (choice)
{
case "1": ShowUsers(); break;
case "2": DeleteUserByGuid(); break;
case "3": UpdateUser(); break;
case "4": FindUserByGuid(); break;
case "5": ShowGroups(); break;
case "6": AddGroup(); break;
case "7": UpdateGroup(); break;
case "8": DeleteGroupById(); break;
case "9": FindGroupById(); break;
case "10": GeneratePresenceForToday(); break;
case "11": GeneratePresenceForWeek(); break;
case "12": ShowPresenceByGroupAndDate(); break;
case "13": MarkUserAsAbsent(); break;
case "0": exit = true; break;
default:
Console.WriteLine("Неверный выбор. Нажмите любую клавишу для продолжения.");
Console.ReadKey();
break;
}
}
}
static void ShowUsers()
{
Console.Clear();
foreach (var user in LocalStaticData.Users)
{
Console.WriteLine($"ID: {user.Id}, ФИО: {user.FIO}, GroupID: {user.GroupID}");
}
Console.WriteLine("Нажмите любую клавишу для продолжения.");
Console.ReadKey();
}
static void DeleteUserByGuid()
{
Console.Clear();
Console.Write("Введите GUID пользователя для удаления: ");
if (Guid.TryParse(Console.ReadLine(), out Guid userId))
{
var user = LocalStaticData.Users.FirstOrDefault(u => u.Id == userId);
if (user != null)
{
LocalStaticData.Users.Remove(user);
Console.WriteLine("Пользователь удалён.");
}
else
{
Console.WriteLine("Пользователь не найден.");
}
}
else
{
Console.WriteLine("Неверный формат GUID.");
}
Console.WriteLine("Нажмите любую клавишу для продолжения.");
Console.ReadKey();
}
static void UpdateUser()
{
Console.Clear();
Console.Write("Введите GUID пользователя для обновления: ");
if (Guid.TryParse(Console.ReadLine(), out Guid userId))
{
var user = LocalStaticData.Users.FirstOrDefault(u => u.Id == userId);
if (user != null)
{
Console.Write("Введите новое ФИО: ");
user.FIO = Console.ReadLine();
Console.Write("Введите новый GroupID: ");
if (int.TryParse(Console.ReadLine(), out int groupId))
{
user.GroupID = groupId;
Console.WriteLine("Пользователь обновлён.");
}
else
{
Console.WriteLine("Неверный формат GroupID.");
}
}
else
{
Console.WriteLine("Пользователь не найден.");
}
}
else
{
Console.WriteLine("Неверный формат GUID.");
}
Console.WriteLine("Нажмите любую клавишу для продолжения.");
Console.ReadKey();
}
static void FindUserByGuid()
{
Console.Clear();
Console.Write("Введите GUID пользователя для поиска: ");
if (Guid.TryParse(Console.ReadLine(), out Guid userId))
{
var user = LocalStaticData.Users.FirstOrDefault(u => u.Id == userId);
if (user != null)
{
Console.WriteLine($"ID: {user.Id}, ФИО: {user.FIO}, GroupID: {user.GroupID}");
}
else
{
Console.WriteLine("Пользователь не найден.");
}
}
else
{
Console.WriteLine("Неверный формат GUID.");
}
Console.WriteLine("Нажмите любую клавишу для продолжения.");
Console.ReadKey();
}
static void ShowGroups()
{
Console.Clear();
Console.WriteLine("Список групп:");
foreach (var group in LocalStaticData.Groups)
{
Console.WriteLine(group);
}
Console.WriteLine("Нажмите любую клавишу для продолжения.");
Console.ReadKey();
}
static void AddGroup()
{
Console.Clear();
Console.Write("Введите название группы для добавления: ");
var groupName = Console.ReadLine();
LocalStaticData.Groups.Add(groupName);
Console.WriteLine("Группа добавлена.");
Console.WriteLine("Нажмите любую клавишу для продолжения.");
Console.ReadKey();
}
static void UpdateGroup()
{
Console.Clear();
Console.Write("Введите индекс группы для обновления (начиная с 0): ");
if (int.TryParse(Console.ReadLine(), out int index) && index >= 0 && index < LocalStaticData.Groups.Count)
{
Console.Write("Введите новое название группы: ");
LocalStaticData.Groups[index] = Console.ReadLine();
Console.WriteLine("Группа обновлена.");
}
else
{
Console.WriteLine("Неверный индекс группы.");
}
Console.WriteLine("Нажмите любую клавишу для продолжения.");
Console.ReadKey();
}
static void DeleteGroupById()
{
Console.Clear();
Console.Write("Введите индекс группы для удаления (начиная с 0): ");
if (int.TryParse(Console.ReadLine(), out int index) && index >= 0 && index < LocalStaticData.Groups.Count)
{
LocalStaticData.Groups.RemoveAt(index);
Console.WriteLine("Группа удалена.");
}
else
{
Console.WriteLine("Неверный индекс группы.");
}
Console.WriteLine("Нажмите любую клавишу для продолжения.");
Console.ReadKey();
}
static void FindGroupById()
{
Console.Clear();
Console.Write("Введите индекс группы для поиска (начиная с 0): ");
if (int.TryParse(Console.ReadLine(), out int index) && index >= 0 && index < LocalStaticData.Groups.Count)
{
Console.WriteLine($"Группа: {LocalStaticData.Groups[index]}");
}
else
{
Console.WriteLine("Группа не найдена.");
}
Console.WriteLine("Нажмите любую клавишу для продолжения.");
Console.ReadKey();
}
static void GeneratePresenceForToday()
{
Console.Clear();
Console.Write("Введите номер группы: ");
var groupIdInput = Console.ReadLine();
Console.Write("Введите номер первого занятия: ");
var firstLesson = int.Parse(Console.ReadLine());
Console.Write("Введите номер последнего занятия: ");
var lastLesson = int.Parse(Console.ReadLine());
var currentDate = DateTime.Now.Date;
// Преобразуйте groupIdInput в int для сравнения
if (int.TryParse(groupIdInput, out int groupId))
{
// Получите идентификатор пользователя
var user = LocalStaticData.Users.FirstOrDefault(u => u.GroupID == groupId);
var userId = user != null ? user.Id : Guid.NewGuid(); // Если пользователь не найден, создайте новый идентификатор
// Создание посещаемости с параметрами
var presence = new Presence(userId, currentDate, groupId, Enumerable.Range(firstLesson, lastLesson - firstLesson + 1).Select(lesson => true).ToList());
LocalStaticData.Presences.Add(presence);
Console.WriteLine("Посещаемость сгенерирована для сегодняшнего дня.");
}
else
{
Console.WriteLine("Некорректный ввод номера группы.");
}
Console.ReadKey();
}
static void GeneratePresenceForWeek()
{
Console.Clear();
Console.Write("Введите номер группы: ");
var groupIdInput = Console.ReadLine();
Console.Write("Введите номер первого занятия: ");
var firstLesson = int.Parse(Console.ReadLine());
Console.Write("Введите номер последнего занятия: ");
var lastLesson = int.Parse(Console.ReadLine());
var startDate = DateTime.Now.Date;
// Преобразуйте groupIdInput в int для сравнения
if (int.TryParse(groupIdInput, out int groupId))
{
// Получите идентификатор пользователя
var user = LocalStaticData.Users.FirstOrDefault(u => u.GroupID == groupId);
var userId = user != null ? user.Id : Guid.NewGuid(); // Если пользователь не найден, создайте новый идентификатор
for (int i = 0; i < 7; i++)
{
var currentDate = startDate.AddDays(i);
// Создание посещаемости с параметрами
var presence = new Presence(userId, currentDate, groupId, Enumerable.Range(firstLesson, lastLesson - firstLesson + 1).Select(lesson => true).ToList());
LocalStaticData.Presences.Add(presence);
}
Console.WriteLine("Посещаемость сгенерирована на текущую неделю.");
}
else
{
Console.WriteLine("Некорректный ввод номера группы.");
}
Console.ReadKey();
}
static void ShowPresenceByGroupAndDate()
{
Console.Clear();
Console.Write("Введите номер группы: ");
var groupId = Console.ReadLine();
Console.Write("Введите дату (yyyy-MM-dd): ");
if (DateTime.TryParse(Console.ReadLine(), out DateTime date))
{
var presence = LocalStaticData.Presences.FirstOrDefault(p => p.GroupID == int.Parse(groupId) && p.Date.Date == date);
if (presence != null)
{
Console.WriteLine($"Посещаемость для группы {groupId} на {date.ToShortDateString()}:");
for (int i = 0; i < presence.Lessons.Count; i++)
{
Console.WriteLine($"Занятие {i + 1}: {(presence.Lessons[i] ? "Присутствует" : "Отсутствует")}");
}
}
else
{
Console.WriteLine("Посещаемость не найдена.");
}
}
else
{
Console.WriteLine("Неверный формат даты.");
}
Console.WriteLine("Нажмите любую клавишу для продолжения.");
Console.ReadKey();
}
static void MarkUserAsAbsent()
{
Console.Clear();
Console.Write("Введите номер группы: ");
var groupId = Console.ReadLine();
Console.Write("Введите дату (yyyy-MM-dd): ");
if (DateTime.TryParse(Console.ReadLine(), out DateTime date))
{
Console.Write("Введите GUID пользователя для отметки отсутствия: ");
if (Guid.TryParse(Console.ReadLine(), out Guid userId))
{
var presence = LocalStaticData.Presences.FirstOrDefault(p => p.GroupID == int.Parse(groupId) && p.Date.Date == date);
if (presence != null)
{
// Поиск занятия пользователя
var userIndex = LocalStaticData.Users.FindIndex(u => u.Id == userId && u.GroupID.ToString() == groupId);
if (userIndex >= 0)
{
presence.Lessons[userIndex] = false;
Console.WriteLine("Пользователь отмечен как отсутствующий.");
}
else
{
Console.WriteLine("Пользователь не найден в этой группе.");
}
}
else
{
Console.WriteLine("Посещаемость не найдена.");
}
}
else
{
Console.WriteLine("Неверный формат GUID.");
}
}
else
{
Console.WriteLine("Неверный формат даты.");
}
Console.WriteLine("Нажмите любую клавишу для продолжения.");
Console.ReadKey();
}
}
}