commit 1fc7f8355133a2d60aca6d68ca45110c020828ef Author: elena Date: Wed Dec 18 15:35:16 2024 +0400 lab 2 done diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/libraries/Dart_SDK.xml b/.idea/libraries/Dart_SDK.xml new file mode 100644 index 0000000..9c03bb7 --- /dev/null +++ b/.idea/libraries/Dart_SDK.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..639900d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..cb28529 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Lab2_PMU.iml b/Lab2_PMU.iml new file mode 100644 index 0000000..79eeaa9 --- /dev/null +++ b/Lab2_PMU.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/main.dart b/main.dart new file mode 100644 index 0000000..4c7d003 --- /dev/null +++ b/main.dart @@ -0,0 +1,84 @@ +enum BirthdayStatus { + THISYEAR, + NEAR, + NOWADAY, + NEXTYEAR; + + String get translate { + switch (this) { + case BirthdayStatus.THISYEAR: + return 'Будет в этом году'; + case BirthdayStatus.NEAR: + return 'Скоро день рождение '; + case BirthdayStatus.NOWADAY: + return 'Сегодня день рождение!'; + case BirthdayStatus.NEXTYEAR: + return 'Будет в следующем году'; + } + } +} + +extension DateTimeX on DateTime { + String getDate() { + return '${this.day}-${this.month}-${this.year}'; + } +} + +class Birthday { + final DateTime time; + final String message; + BirthdayStatus status = BirthdayStatus.NOWADAY; + + Birthday(this.time, this.message); + + @override + String toString() { + return 'статус: ${status.translate}\t\tдата: ${time.getDate()}\t\tсообщение: $message '; + } +} + +class Scheduler { + List birthdays; + + Scheduler(this.birthdays); + + void sort() { + birthdays.sort((a, b) => (-1) * (a.time.compareTo(b.time))); + } + + void printSchedule(DateTime today) { + sort(); + print('Дедлайны:'); + Future.delayed(new Duration(milliseconds: 1), () { + print('Сегодня ${today.getDate()}'); + }); + for (Birthday deadline in birthdays) { + Duration diff = deadline.time.difference(today); + int days = diff.inDays; + if (days <= 0) { + deadline.status = BirthdayStatus.NOWADAY; + print('Сегодня день рождение \t\t$deadline'); + } else if (days <= 31) { + deadline.status = BirthdayStatus.NEAR; + print('Осталось $days суток \t\t$deadline'); + } else if (days <= 365) { + deadline.status = BirthdayStatus.THISYEAR; + print('Будет в этом году! \t\t$deadline'); + } else { + deadline.status = BirthdayStatus.NEXTYEAR; + print('До следующего года! \t\t$deadline'); + } + } + } +} + +void main() { + DateTime today = DateTime(2024, 9, 23); + var father = new Birthday(new DateTime(2025, 9, 24), "Иванов И.И."); + var brother = new Birthday(new DateTime(2024, 9, 26), "Васечкин В.В."); + var cousin = new Birthday(new DateTime(2024, 9, 23), "Тарасов Т.Т."); + var friend = new Birthday(new DateTime(2025, 10, 3), "Игнатова И.И."); + List birthdays = [father, brother, cousin, friend]; + var scheduler = new Scheduler(birthdays); + scheduler.printSchedule(today); +}