Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 13.11.2013
Сообщений: 43

Как сделать ежемесячный сброс и изменения некоторых данных

02.11.2014, 00:44. Показов 673. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем:
1) При самом первом запуске приложения:
C#
1
2
3
4
5
DateTime date = DateTime.Now;
int a = 100;//какая-то переменная, которую мы сохраняем в Properties.Settings.Default.
int b = 0;//еще одна переменная
int firstDay = date.Day;// первый день запуска, который сохраняется однократно и больше не изменяется
dayLeft = //считаем относительно firstDay и количества дней в данном месяце
2) Далее, в течение месяца пользователь меняет a и b, dayLeft изменяется самостоятельно и показывает сколько дней осталось до конца
3) В конце месяца(не календарного, а временнОго), например, а = 10; b = 20; dayLeft = 1;
4) Далее, в день другого месяца, равный firstDay, или день первого запуска приложения в другом месяце, больший, чем firstDay:
C#
1
2
3
4
a = 120;//сохраняем
 b = 0;//сохраняем
// также их можно изменять//
dayLeft=//так же показываем сколько дней осталось
5) Возвращаемся в пункт 2.
Запуски приложения могут быть не каждый день.
В течение любого дня возможны многократные запуски.

У меня возникли сложности с тем, что в день сброса (день другого месяца, равный firstDay, или день первого запуска приложения в другом месяце, больший, чем firstDay), когда я запускаю приложение во второй раз все снова сбрасывается.

Возможно ли как-то сделать все проще и понятней, есть ли какие-нибудь стандартные средства для решения, чтобы все работало нормально?

Вот мой кривоватый код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
private void Form1_Load(object sender, EventArgs e)
        {                 
            DateTime date = DateTime.Now;
 
            _firstDay = Properties.Settings.Default.firstStartDay;
            _firstMonth = Properties.Settings.Default.firstStartMonth;
           
            _flag = Properties.Settings.Default.flag;// флаг true для первого запуска, далее он будет false 
 
            if(_flag)
            {                          
                _flag = false;
                _firstDay = date.Day;
                _firstMonth = date.Month;
                
                Properties.Settings.Default.firstStartDay = _firstDay;               
                Properties.Settings.Default.firstStartMonth = _firstMonth;
                Properties.Settings.Default.flag = _flag;
                Properties.Settings.Default.Save();                
            }
 
            if (date.Month != _firstMonth && date.Day < _firstStartDay)
            {
                _dayLeft = _firstDay - date.Day;
            }
 
            else
            {
                _dayLeft = DateTime.DaysInMonth(date.Year,date.Month) - (date.Day - _firstDay);
            }
 
            if (_dayLeft == DateTime.DaysInMonth(date.Year, date.Month) && date.Month != _firstMonth)
            {
                 _score = _bonusScore + 100;
                 _bonusScore = 0;
 
                 Properties.Settings.Default.bonusScore = _bonusScore;
                 Properties.Settings.Default.score = _score;
                 Properties.Settings.Default.Save();
            }
               
            Properties.Settings.Default.dayLeft = _dayLeft;
            Properties.Settings.Default.Save();
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.11.2014, 00:44
Ответы с готовыми решениями:

Как сделать чтобы изменения внесённые в запрос сохранились в базе данных?
Используется: - EntityFramework - 6.2.0; - MS Sql Server 2012; Таблицы: - tbl_979F301_Groups; - tbl_979F302_Students; ...

Сброс абсорбера (памперса) на некоторых моделей Epson
Приветствую Вас, уважаемые коллеги и участники форума. В данной теме опубликована информация и инструментарий, предназначенных для...

Как сделать сброс?
Здравствуйте, подскажите пожалуйста!!!У меня есть программка на С# по расчету параметров...есть несколько форм...на первой форме кнопка...

1
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
02.11.2014, 10:05
Ты хочешь реализовать проверку, что прошло больше месяца с даты первого запуска? Тебе нужно всего два свойства заиметь: дату первого запуска, от которой отсчитывать месяц, и флаг первого запуска. При первом запуске ты ставишь флаг false и записываешь дату. При последующих запусках проверяешь сколько дней осталось:
C#
1
2
3
4
5
6
7
8
int CheckDaysLeft() {
    // Считаем, сколько дней осталось
    int daysLeft = (int)Math.Ceiling((Properties.Settings.Default.FirstRun.AddMonths(1) - DateTime.Now).TotalDays);
    // Прошло больше месяца, то переносим дату запуска (или сбрасываем нужные настройки)
    if (daysLeft <= 0) Properties.Settings.Default.FirstRun = DateTime.Now;
    // Возвращаем количество оставшихся дней
    return (int)Math.Ceiling((Properties.Settings.Default.FirstRun.AddMonths(1) - DateTime.Now).TotalDays);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.11.2014, 10:05
Помогаю со студенческими работами здесь

Как работать по формуле с массивом данных, при отсутствии данных в некоторых ячейках
Здравствуйте. Нужно найти из двух чисел самое большое и затем умножить его на 0,35. Формулу я написал, но бывают ситуации, когда в одной...

Как сделать сброс фильтра с помощью кнопки на JavaScript?
Всем привет! Есть форма: &lt;div class=&quot;vacancy_form&quot;&gt; &lt;form name=&quot;vacancy&quot; method=&quot;post&quot;...

Как сделать недоступность некоторых элементов DataGrid?
Подскажите пожалуста как сделать некоторые веши: 1. Недоступность всей табоицы при выводе на экран (Невозможность редактирования) 2....

Как сделать обход вывода некоторых элементов в цикле
Здравствуйте. Например, у нас есть таймер, label, переменная i и массив из 10 чисел. И вот таймер каждый раз(через интрвал времени)...

Как сделать, чтобы шаблонная функция не использовалась для некоторых типов?
Как сделать, чтобы для определённого типа аргумента использовалась обычная функция вместо шаблонной? Покажу на примере. Создаём...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru