Bladeren bron

feet: add read and write file

klmnvan 2 maanden geleden
bovenliggende
commit
9f5a348f5a
27 gewijzigde bestanden met toevoegingen van 183 en 79 verwijderingen
  1. BIN
      .vs/AvaloniaApplication5/FileContentIndex/6964ea55-8760-406c-8235-bdd0c29faf67.vsidx
  2. BIN
      .vs/AvaloniaApplication5/FileContentIndex/8bd21518-08ed-4d2a-b624-7f85fcbf9e22.vsidx
  3. BIN
      .vs/AvaloniaApplication5/v17/.futdcache.v2
  4. BIN
      .vs/AvaloniaApplication5/v17/.suo
  5. 19 26
      .vs/AvaloniaApplication5/v17/DocumentLayout.json
  6. BIN
      .vs/ProjectEvaluation/avaloniaapplication5.metadata.v7.bin
  7. BIN
      .vs/ProjectEvaluation/avaloniaapplication5.projects.v7.bin
  8. 2 1
      AvaloniaApplication5/MainWindow.axaml
  9. 130 49
      AvaloniaApplication5/MainWindow.axaml.cs
  10. BIN
      AvaloniaApplication5/bin/Debug/net8.0/AvaloniaApplication5.dll
  11. BIN
      AvaloniaApplication5/bin/Debug/net8.0/AvaloniaApplication5.exe
  12. BIN
      AvaloniaApplication5/bin/Debug/net8.0/AvaloniaApplication5.pdb
  13. 14 0
      AvaloniaApplication5/bin/Debug/net8.0/users.csv
  14. 14 0
      AvaloniaApplication5/bin/Debug/net8.0/usersResult.csv
  15. BIN
      AvaloniaApplication5/obj/Debug/net8.0/Avalonia/AvaloniaApplication5.dll
  16. BIN
      AvaloniaApplication5/obj/Debug/net8.0/Avalonia/AvaloniaApplication5.pdb
  17. BIN
      AvaloniaApplication5/obj/Debug/net8.0/Avalonia/resources
  18. 1 1
      AvaloniaApplication5/obj/Debug/net8.0/AvaloniaApplication5.AssemblyInfo.cs
  19. 1 1
      AvaloniaApplication5/obj/Debug/net8.0/AvaloniaApplication5.AssemblyInfoInputs.cache
  20. BIN
      AvaloniaApplication5/obj/Debug/net8.0/AvaloniaApplication5.dll
  21. BIN
      AvaloniaApplication5/obj/Debug/net8.0/AvaloniaApplication5.pdb
  22. BIN
      AvaloniaApplication5/obj/Debug/net8.0/apphost.exe
  23. BIN
      AvaloniaApplication5/obj/Debug/net8.0/ref/AvaloniaApplication5.dll
  24. BIN
      AvaloniaApplication5/obj/Debug/net8.0/refint/Avalonia/AvaloniaApplication5.dll
  25. BIN
      AvaloniaApplication5/obj/Debug/net8.0/refint/AvaloniaApplication5.dll
  26. 0 1
      Задание/~$адание.docx
  27. 2 0
      Задание/Задание.docx

BIN
.vs/AvaloniaApplication5/FileContentIndex/6964ea55-8760-406c-8235-bdd0c29faf67.vsidx


BIN
.vs/AvaloniaApplication5/FileContentIndex/8bd21518-08ed-4d2a-b624-7f85fcbf9e22.vsidx


BIN
.vs/AvaloniaApplication5/v17/.futdcache.v2


BIN
.vs/AvaloniaApplication5/v17/.suo


+ 19 - 26
.vs/AvaloniaApplication5/v17/DocumentLayout.json

@@ -10,13 +10,13 @@
       "AbsoluteMoniker": "D:0:0:{1D16269F-99D8-4371-B4B4-0667D62ADC69}|AvaloniaApplication5\\AvaloniaApplication5.csproj|d:\\vs prodjects\\avalonia-practic\\avaloniaapplication5\\mainwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}",
       "RelativeMoniker": "D:0:0:{1D16269F-99D8-4371-B4B4-0667D62ADC69}|AvaloniaApplication5\\AvaloniaApplication5.csproj|solutionrelative:avaloniaapplication5\\mainwindow.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}"
     },
-    {
-      "AbsoluteMoniker": "D:0:0:{1D16269F-99D8-4371-B4B4-0667D62ADC69}|AvaloniaApplication5\\AvaloniaApplication5.csproj|d:\\vs prodjects\\avalonia-practic\\avaloniaapplication5\\app.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}",
-      "RelativeMoniker": "D:0:0:{1D16269F-99D8-4371-B4B4-0667D62ADC69}|AvaloniaApplication5\\AvaloniaApplication5.csproj|solutionrelative:avaloniaapplication5\\app.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}"
-    },
     {
       "AbsoluteMoniker": "D:0:0:{1D16269F-99D8-4371-B4B4-0667D62ADC69}|AvaloniaApplication5\\AvaloniaApplication5.csproj|d:\\vs prodjects\\avalonia-practic\\avaloniaapplication5\\styles.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}",
       "RelativeMoniker": "D:0:0:{1D16269F-99D8-4371-B4B4-0667D62ADC69}|AvaloniaApplication5\\AvaloniaApplication5.csproj|solutionrelative:avaloniaapplication5\\styles.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{1D16269F-99D8-4371-B4B4-0667D62ADC69}|AvaloniaApplication5\\AvaloniaApplication5.csproj|d:\\vs prodjects\\avalonia-practic\\avaloniaapplication5\\app.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}",
+      "RelativeMoniker": "D:0:0:{1D16269F-99D8-4371-B4B4-0667D62ADC69}|AvaloniaApplication5\\AvaloniaApplication5.csproj|solutionrelative:avaloniaapplication5\\app.axaml||{6D5344A2-2FCD-49DE-A09D-6A14FD1B1224}"
     }
   ],
   "DocumentGroupContainers": [
@@ -26,47 +26,40 @@
       "DocumentGroups": [
         {
           "DockedWidth": 200,
-          "SelectedChildIndex": 4,
+          "SelectedChildIndex": 3,
           "Children": [
             {
-              "$type": "Bookmark",
-              "Name": "ST:129:0:{1fc202d4-d401-403c-9834-5b218574bb67}"
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "MainWindow.axaml",
+              "DocumentMoniker": "D:\\VS prodjects\\avalonia-practic\\AvaloniaApplication5\\MainWindow.axaml",
+              "RelativeDocumentMoniker": "AvaloniaApplication5\\MainWindow.axaml",
+              "ToolTip": "D:\\VS prodjects\\avalonia-practic\\AvaloniaApplication5\\MainWindow.axaml",
+              "RelativeToolTip": "AvaloniaApplication5\\MainWindow.axaml",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
+              "WhenOpened": "2024-09-13T12:06:00.784Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 3,
+              "DocumentIndex": 2,
               "Title": "Styles.axaml",
               "DocumentMoniker": "D:\\VS prodjects\\avalonia-practic\\AvaloniaApplication5\\Styles.axaml",
               "RelativeDocumentMoniker": "AvaloniaApplication5\\Styles.axaml",
               "ToolTip": "D:\\VS prodjects\\avalonia-practic\\AvaloniaApplication5\\Styles.axaml",
               "RelativeToolTip": "AvaloniaApplication5\\Styles.axaml",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
-              "WhenOpened": "2024-09-11T22:46:30.97Z",
-              "EditorCaption": ""
+              "WhenOpened": "2024-09-11T22:46:30.97Z"
             },
             {
               "$type": "Document",
-              "DocumentIndex": 2,
+              "DocumentIndex": 3,
               "Title": "App.axaml",
               "DocumentMoniker": "D:\\VS prodjects\\avalonia-practic\\AvaloniaApplication5\\App.axaml",
               "RelativeDocumentMoniker": "AvaloniaApplication5\\App.axaml",
               "ToolTip": "D:\\VS prodjects\\avalonia-practic\\AvaloniaApplication5\\App.axaml",
               "RelativeToolTip": "AvaloniaApplication5\\App.axaml",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
-              "WhenOpened": "2024-09-11T22:46:28.518Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "MainWindow.axaml",
-              "DocumentMoniker": "D:\\VS prodjects\\avalonia-practic\\AvaloniaApplication5\\MainWindow.axaml",
-              "RelativeDocumentMoniker": "AvaloniaApplication5\\MainWindow.axaml",
-              "ToolTip": "D:\\VS prodjects\\avalonia-practic\\AvaloniaApplication5\\MainWindow.axaml",
-              "RelativeToolTip": "AvaloniaApplication5\\MainWindow.axaml",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
-              "WhenOpened": "2024-09-05T10:57:31.305Z",
-              "EditorCaption": ""
+              "WhenOpened": "2024-09-11T22:46:28.518Z"
             },
             {
               "$type": "Document",
@@ -76,7 +69,7 @@
               "RelativeDocumentMoniker": "AvaloniaApplication5\\MainWindow.axaml.cs",
               "ToolTip": "D:\\VS prodjects\\avalonia-practic\\AvaloniaApplication5\\MainWindow.axaml.cs",
               "RelativeToolTip": "AvaloniaApplication5\\MainWindow.axaml.cs",
-              "ViewState": "AQIAAIAAAAAAAAAAAAAuwJkAAAAJAAAA",
+              "ViewState": "AQIAAHwAAAAAAAAAAAAAwKUAAAAdAAAA",
               "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
               "WhenOpened": "2024-09-05T10:57:29.423Z",
               "EditorCaption": ""

BIN
.vs/ProjectEvaluation/avaloniaapplication5.metadata.v7.bin


BIN
.vs/ProjectEvaluation/avaloniaapplication5.projects.v7.bin


+ 2 - 1
AvaloniaApplication5/MainWindow.axaml

@@ -15,7 +15,7 @@
 			<Button Margin="20 0 0 0" Click="Button_Click" Content="Проверить дату" HorizontalAlignment="Center"></Button>
 		</StackPanel>
 		<TextBlock Name="tbMessage" IsVisible="False" Margin="0 20 0 0"></TextBlock>
-		<StackPanel Name="sbVivibleZodiack" Orientation="Vertical" IsVisible="False">
+		<StackPanel Name="sbVivibleZodiack" Orientation="Vertical" IsVisible="True">
 			<TextBlock Margin="0 20 0 0">Хотите ли вы узнать кто вы по знаку зодиака или по восточному гороскопу?</TextBlock>
 		<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0 20 0 0">
 			<ComboBox HorizontalAlignment="Stretch" Margin="5 4 0 0" Name="cbHoroscope" FontSize ="18" SelectedIndex="0">
@@ -28,6 +28,7 @@
 		</StackPanel>
 			<TextBlock Name="tbGoroscope" IsVisible="False" Margin="0 20 0 0"></TextBlock>
 			<Button Margin="0 20 0 0" Click="Read_File" Content="Считать из файла" HorizontalAlignment="Center"></Button>
+			<TextBlock Name="tbFile" IsVisible="False" Margin="0 20 0 0"></TextBlock>
 		</StackPanel>
 	</StackPanel>
 	

+ 130 - 49
AvaloniaApplication5/MainWindow.axaml.cs

@@ -6,20 +6,27 @@ using System.Globalization;
 using System.IO;
 using System.Linq;
 using System.Security.Cryptography;
+using System.Text;
+using System.Text.RegularExpressions;
 using static System.Runtime.InteropServices.JavaScript.JSType;
 
 namespace AvaloniaApplication5
 {
     public partial class MainWindow : Window
     {
-        string date = ""; 
-        DateTime currentDate = DateTime.Now;
+        string date = ""; //Строка даты, которую будет вводить пользователь
+        DateTime currentDate = DateTime.Now; //Текущая дата
 
         public MainWindow()
         {
             InitializeComponent();
         }
 
+        /// <summary>
+        /// Событие обработчик нажатия на кнопку "Проверить дату".
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
         private void Button_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
         {
             date = dp.SelectedDate.ToString();
@@ -35,11 +42,13 @@ namespace AvaloniaApplication5
                     int days = difference.Days % 365 % 30;
                     List<string> leadYears = new List<string>();
                     DayOfWeek dayOfWeek = (DayOfWeek)(dt.DayOfWeek);
+                    string dayOfWeekPreview = CultureInfo.CurrentCulture.DateTimeFormat.GetDayName(dayOfWeek);
+                    CultureInfo.CurrentCulture.DateTimeFormat.GetDayName(dayOfWeek);
                     tbMessage.Text = $"С дня рождения прошло {years} г. {months} мес. {days} дн. \n" +
-                        $"Вы родились в {dayOfWeek}\n" +
-                        $"В {dayOfWeek} вы отпраздновали день рождения {GetNumberDayAfterDate(dt, currentDate, dayOfWeek)} раз\n"
-                        + $"Високосных лет прошло: {GetCountLeapYear(dt, ref leadYears)}\n" + 
-                        $"А конкретно: { string.Join(",", leadYears)} ";
+                        $"Вы родились в {dayOfWeekPreview}\n" +
+                        $"В {dayOfWeekPreview} вы отпраздновали день рождения {GetNumberDayAfterDate(dt, currentDate, dayOfWeek)} раз\n"
+                        + $"Високосных лет прошло: {GetCountLeapYear(dt, ref leadYears)}\n" +
+                        $"А конкретно: {string.Join(",", leadYears)} ";
                     sbVivibleZodiack.IsVisible = true;
                 }
                 else tbMessage.Text = $"Вы не могли родиться позже текущей даты";
@@ -47,6 +56,13 @@ namespace AvaloniaApplication5
             else tbMessage.Text = $"Вы не выбрали дату";
         }
 
+        /// <summary>
+        /// Получение количества дней рождения, которые отпраздновал пользователь в конкретный день недели за всю свою жизнь
+        /// </summary>
+        /// <param name="dateBirth">Дата рождения</param>
+        /// <param name="now">Текущая дата</param>
+        /// <param name="dayOfWeek">День недели</param>
+        /// <returns>Количество дней рождения определенного дня недели</returns>
         int GetNumberDayAfterDate(DateTime dateBirth, DateTime now, DayOfWeek dayOfWeek)
         {
             int count = 0;
@@ -55,13 +71,19 @@ namespace AvaloniaApplication5
                 DateTime date = new DateTime(i, dateBirth.Month, dateBirth.Day);
                 if (date.DayOfWeek == dayOfWeek) count++;
             }
-            if(now.Month > dateBirth.Month && now.Day > dateBirth.Day)
+            if (now.Month > dateBirth.Month && now.Day > dateBirth.Day)
             {
                 count--;
             }
             return count;
         }
 
+        /// <summary>
+        /// Получение количества високосных лет, прошедших с конкретной даты
+        /// </summary>
+        /// <param name="dateBirth">дата</param>
+        /// <param name="leapYears">лист строк високосных лет</param>
+        /// <returns>количество високосных лет</returns>
         int GetCountLeapYear(DateTime dateBirth, ref List<string> leapYears)
         {
             int count = 0;
@@ -71,7 +93,7 @@ namespace AvaloniaApplication5
                 DateTime current = new DateTime(i, 12, 31);
                 if (current.DayOfYear == 366)
                 {
-                    count++; 
+                    count++;
                     leapYears.Add(current.Year.ToString());
                 }
             }
@@ -110,100 +132,159 @@ namespace AvaloniaApplication5
                     int razn = dt.Year - 1894;
                     tbGoroscope.Text = $"Вы родились в год животного: {ShowAnimal((razn % 12) + 1)}, цвета: {ShowColor((razn % 10) + 1)}";
                 }
-                if(selectedItemCB.Content == "Не хочу") tbGoroscope.Text = $"Не хотите? Ну и не надо";
+                if (selectedItemCB.Content == "Не хочу") tbGoroscope.Text = $"Не хотите? Ну и не надо";
             }
             else tbGoroscope.Text = $"Дата не выбрана";
         }
+
         private void Read_File(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
         {
+            tbFile.IsVisible = true;
             if (File.Exists("users.csv"))
             {
                 List<InfoForGadalka> listInfo = new List<InfoForGadalka>();
-                using (StreamReader sr = new StreamReader("users.csv"))
+
+                try
                 {
-                    try
+                    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); //Необходимо к нему обратиться, чтобы считать из кодировки 1251
+                    using (StreamReader sr = new StreamReader("users.csv", Encoding.GetEncoding(1251)))
                     {
+                        sr.ReadLine();
                         while (!sr.EndOfStream)
                         {
-                            string line = sr.ReadLine();
-                            string[] lineArray = line.Split(';');
+                            string dateString = sr.ReadLine();
+                            string[] lineArray = Regex.Split(dateString, @"[,;\t\s]{1}");
+                            lineArray[0] = GetNumberDayByName(lineArray[0]);
+                            lineArray[1] = GetNumberMonthByName(lineArray[1]);
                             string zodiac = "";
                             string horoscope = "";
-                            if (lineArray[0] != "" || lineArray[1] != "")
+                            string message = "";
+                            if (lineArray[0] == "" || lineArray[1] == "") zodiac = "Невозможно определить";
+                            if (lineArray[2] == "") horoscope = "Невозможно определить";
+                            // Пытаемся прочитать дату
+                            if (TryParseDate(string.Join(" ", lineArray), out DateTime date))
                             {
-                                zodiac = "Невозможно определить";
+                                int razn = date.Year - 1894;
+                                zodiac = GetZodiack(date);
+                                horoscope = ShowAnimal((razn % 12) + 1);
+                                message = "Успешно";
                             }
-                            if (lineArray[2] != "")
+                            else
                             {
-                                horoscope = "Невозможно определить";
+                                message = "Некорректная дата";
                             }
-                            InfoForGadalka info = new InfoForGadalka(lineArray[0], lineArray[1], lineArray[2], zodiac, horoscope);
+                            InfoForGadalka info = new InfoForGadalka(lineArray[0], lineArray[1], lineArray[2], zodiac, horoscope, message);
                             listInfo.Add(info);
                         }
-                    } 
-                    catch(Exception ex)
+                    }
+                    using (StreamWriter sw = new StreamWriter("usersResult.csv", false, Encoding.UTF8))
                     {
-
+                        sw.WriteLine("День;Месяц;Год;Знак зодиака;Восточный гороскоп;Сообщение");
+                        foreach (InfoForGadalka info in listInfo)
+                        {
+                            sw.WriteLine($"{info.Day};{info.Month};{info.Year};{info.Zodiac};{info.Horoscope};{info.Message}");
+                        }
                     }
-                };
+                    tbFile.Text = "Результат сохранен в файле usersResult.csv";
+                }
+                catch (Exception ex)
+                {
+                    tbFile.Text = $"Ошибка при работе с файлом: {ex.Message}";
+                }
             }
             else
             {
-                //ShowMessage.Text = "Файл users.csv не найден";
+                tbFile.Text = "Файл users.csv не найден";
+            }
+        }
+
+        public static bool TryParseDate(string dateString, out DateTime date)
+        {
+            date = DateTime.MinValue;
+            string[] formats = {
+                "dd.MM.yyyy", // 15.02.1949
+                "d.MM.yyyy", // 4.09.1999
+                "dd.M.yyyy", // 15.2.1949
+                "d.M.yyyy", // 4.9.1999
+                "d MMMM yyyy", // 2 октябрь 2005
+                "D MMMM yyyy",
+                "dd MMMM yyyy",
+                "ddd MMMM yyyy",
+                "dddd MMMM yyyy",
+                "d MMMM yyyy", // 2 октября 2005 (с учетом возможного окончания месяца)
+                "MMMM d yyyy", // Октябрь 2 2005
+                "MMMM d yyyy", // Октября 2 2005 (с учетом возможного окончания месяца)
+                "dd MM yyyy", // 11 11 2005
+                "d MM yyyy", // 11 11 2005
+                "d M yyyy", // 11 11 2005
+                "MM yyyy", // 4 1689
+                "yyyy", // 1999
+            };
+            foreach (string format in formats)
+            {
+                if (DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
+                {
+                    return true;
+                }
             }
+            return false;
+        }
+
+        static string GetNumberDayByName(string day)
+        {
+            string[] days = { "первое", "второе", "третье", "четвертое", "пятое", "шестое", "седьмое", "восьмое", "девятое", "десятое",
+                "одиннадцатое", "двенадцатое", "тринадцатое", "четырнадцатое", "пятнадцатое", "шестнадцатое", "семнадцатое", "восемнадцатое", "девятнадцатое", "двадцатое",
+                "двадцать первое", "двадцать второе", "двадцать третье", "двадцать четвертое", "двадцать пятое", "двадцать шестое", "двадцать седьмое", "двадцать восьмое", "двадцать девятое", "тридцатое",
+                "тридцать первое"
+            };
+            int index = Array.IndexOf(days, day);
+            if (index != -1) return index.ToString();
+            return day;
+        }
+
+        static string GetNumberMonthByName(string number)
+        {
+            string[] month = { "январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь" };
+            int index = Array.IndexOf(month, number);
+            if (index != -1) return index.ToString();
+            return number;
         }
 
         static string ShowColor(int n)
         {
-            switch (n)
+            string[] colors = { "Зеленый", "Зеленый", "Красный", "Красный", "Желтый", "Желтый", "Белый", "Белый", "Черный", "Черный" };
+            if (n > 0 && n < colors.Length)
             {
-                case 1: return "Зеленый";
-                case 2: return ("Зеленый");
-                case 3: return ("Красный");
-                case 4: return ("Красный");
-                case 5: return ("Желтый");
-                case 6: return ("Желтый");
-                case 7: return ("Белый");
-                case 8: return ("Белый");
-                case 9: return ("Черный");
-                case 10: return ("Черный");
+                return colors[n - 1];
             }
             return "Такого нет";
         }
+
         static string ShowAnimal(int n)
         {
-            switch (n)
+            string[] animals = { "Лошадь", "Овца", "Обезьяна", "Петух", "Собака", "Свинья", "Крыса", "Бык", "Тигр", "Кролик", "Дракон", "Змея" };
+            if (n > 0 && n < animals.Length)
             {
-                case 1: return ("Лошадь");
-                case 2: return ("Овца");
-                case 3: return ("Обезьяна");
-                case 4: return ("Петух");
-                case 5: return ("Собака");
-                case 6: return ("Свинья");
-                case 7: return ("Крыса");
-                case 8: return ("Бык");
-                case 9: return ("Тигр");
-                case 10: return ("Кролик");
-                case 11: return ("Дракон");
-                case 12: return ("Змея");
+                return animals[n - 1];
             }
             return "Такого нет";
         }
     }
 
-    class InfoForGadalka(string day, string month, string year, string zodiac, string horoscope)
+    class InfoForGadalka(string day, string month, string year, string zodiac, string horoscope, string message)
     {
         string day = day;
         string month = month;
         string year = year;
         string zodiac = zodiac;
         string horoscope = horoscope;
+        string message = message;
 
         public string Day { get => day; set => day = value; }
         public string Month { get => month; set => month = value; }
         public string Year { get => year; set => year = value; }
         public string Zodiac { get => zodiac; set => zodiac = value; }
         public string Horoscope { get => horoscope; set => horoscope = value; }
-
+        public string Message { get => message; set => message = value; }
     }
 }

BIN
AvaloniaApplication5/bin/Debug/net8.0/AvaloniaApplication5.dll


BIN
AvaloniaApplication5/bin/Debug/net8.0/AvaloniaApplication5.exe


BIN
AvaloniaApplication5/bin/Debug/net8.0/AvaloniaApplication5.pdb


+ 14 - 0
AvaloniaApplication5/bin/Debug/net8.0/users.csv

@@ -0,0 +1,14 @@
+Δενό;Μερ�φ;Γξδ
+ο�ςξε;;1563
+;4;1689
+4;9;1999
+15.02.1949;;
+42;11;
+8;-3;
+7;;1906
+;;5b7
+2;7,3;
+11;11;2005
+2;ξκς�από;-1054
+βςξπξε;4;1007
+-5;-12;2012

+ 14 - 0
AvaloniaApplication5/bin/Debug/net8.0/usersResult.csv

@@ -0,0 +1,14 @@
+День;Месяц;Год;Знак зодиака;Восточный гороскоп;Сообщение
+4;;1563;Невозможно определить;;Некорректная дата
+;4;1689;Невозможно определить;;Некорректная дата
+4;9;1999;Дева;Кролик;Успешно
+15.02.1949;;;Невозможно определить;Невозможно определить;Некорректная дата
+42;11;;;Невозможно определить;Некорректная дата
+8;-3;;;Невозможно определить;Некорректная дата
+7;;1906;Невозможно определить;;Некорректная дата
+;;5b7;Невозможно определить;;Некорректная дата
+2;7;3;;;Некорректная дата
+11;11;2005;Скорпион;Петух;Успешно
+2;9;-1054;;;Некорректная дата
+1;4;1007;Овен;Такого нет;Успешно
+-5;-12;2012;;;Некорректная дата

BIN
AvaloniaApplication5/obj/Debug/net8.0/Avalonia/AvaloniaApplication5.dll


BIN
AvaloniaApplication5/obj/Debug/net8.0/Avalonia/AvaloniaApplication5.pdb


BIN
AvaloniaApplication5/obj/Debug/net8.0/Avalonia/resources


+ 1 - 1
AvaloniaApplication5/obj/Debug/net8.0/AvaloniaApplication5.AssemblyInfo.cs

@@ -14,7 +14,7 @@ using System.Reflection;
 [assembly: System.Reflection.AssemblyCompanyAttribute("AvaloniaApplication5")]
 [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
 [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+56c5c1955c2067b46f53b268423243fc84960cfc")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+443b144d87337f5d0243cbd529ac7b849d23851c")]
 [assembly: System.Reflection.AssemblyProductAttribute("AvaloniaApplication5")]
 [assembly: System.Reflection.AssemblyTitleAttribute("AvaloniaApplication5")]
 [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

+ 1 - 1
AvaloniaApplication5/obj/Debug/net8.0/AvaloniaApplication5.AssemblyInfoInputs.cache

@@ -1 +1 @@
-5d7879b7111e399fd04ccbf2ffbe3577aca90b1c87f38dc466ccf74ed5e2b03c
+0d13cd1795d6d092e5dc4c5e2c8ea91386ee5f880cab7c6c85ef75f528870cff

BIN
AvaloniaApplication5/obj/Debug/net8.0/AvaloniaApplication5.dll


BIN
AvaloniaApplication5/obj/Debug/net8.0/AvaloniaApplication5.pdb


BIN
AvaloniaApplication5/obj/Debug/net8.0/apphost.exe


BIN
AvaloniaApplication5/obj/Debug/net8.0/ref/AvaloniaApplication5.dll


BIN
AvaloniaApplication5/obj/Debug/net8.0/refint/Avalonia/AvaloniaApplication5.dll


BIN
AvaloniaApplication5/obj/Debug/net8.0/refint/AvaloniaApplication5.dll


+ 0 - 1
Задание/~$адание.docx

@@ -1 +0,0 @@
-mcsyanmcsyanf<2;ú`M´c2`M´c2`M´c24:4:<*[Ûû(!oSzµký

+ 2 - 0
Задание/Задание.docx

@@ -6,5 +6,7 @@
  Определить количество високосных лет, прошедших со дня рождения и до сегодняшнего дня; вывести все номера найденных високосных годов.
    Часть 2.
    Далее пользователю нужно предоставить выбор из двух позиций, хочет ли он узнать, кто он по знаку зодиака или по восточному гороскопу. При выборе одного из этих вариантов на экране появляется поле с ответом. При выборе другого варианта поле с предыдущим ответом должно быть скрыто.
+   Часть 3.
+   Необходимо создать еще одну кнопку, при нажатии на которую формируется файл, где у пользователя будет указан знак зодиака и животное по восточному гороскопу. Данные пользователей также находятся в файле (он прикреплен к заданию). Обращаю внимание, что не все данные корректны, их нужно будет обработать и написать, почему тот или иной гороскоп нельзя определить.