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

Неправильно работает сравнение даты выдачи и срока выдачи

06.03.2016, 14:09. Показов 2278. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно создать структуру которая будет содержать код книги, номер читательского, дату выдачи, срок выдачи, дату здачи, вывести десять обьектов этой структуры в datagrid, а после очистить datagrid и вывести туда всех задолженников, тоесть добавить к дате выдачи количество дней(срок выдачи) и сровнять с сроком здачи.

Список выданных книг:
Код книги.
Номер читательского.
Дата выдачи.
Срок выдачи.
Срок здачи.
Запрос. Вывести на экран книги, которые читатели не сдали вовремя на
заданное число.


У меня неправильно сравнивает дату выдачи и срок выдачи.Помогите пожалуйста

Это моя структура
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct ListOfBook
    {
        public int BookID;
        public int NumberReader;
        public DateTime DateV;
        public int Days;
        public DateTime DateS;
 
        public ListOfBook(int id, int numberReader, DateTime dateV, int days,DateTime dates)
        {
            BookID = id;
            NumberReader = numberReader;
            DateV = dateV;
            Days = days;
            DateS = dates;
        }
    }
это мой код в форме
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
45
46
47
48
49
 public partial class Form1 : Form
    {
        ListOfBook[] book = new ListOfBook[10];
        int count = 0;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            try {
                book[count].BookID = Convert.ToInt32(textBox1.Text);
                book[count].NumberReader = Convert.ToInt32(textBox2.Text);
                book[count].DateV = Convert.ToDateTime(textBox3.Text);
                book[count].Days = Convert.ToInt32(textBox4.Text);
                book[count].DateS = Convert.ToDateTime(textBox5.Text);
 
                dataGridView1.Rows.Add(book[count].BookID.ToString(), book[count].NumberReader.ToString(),
                    book[count].DateV.ToString(), book[count].Days.ToString(), book[count].DateS);
                count++;
            }
            catch { MessageBox.Show("Error"); }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            dataGridView1.Rows.Clear();
            DateTime countV = Convert.ToDateTime(textBox3.Text);
            double days = Convert.ToDouble(textBox4.Text);
            countV.AddDays(days);
            DateTime countD = Convert.ToDateTime(textBox5.Text);
            int amount = 0;
 
            int result = countV.CompareTo(countD);
            
            foreach(ListOfBook bb in book)
            {
                if(result < 0)
                {
                    amount++;
                    dataGridView1.Rows.Add(bb.BookID.ToString(), bb.NumberReader.ToString(),
                bb.DateV.ToString(), bb.Days.ToString(), bb.DateS);
                }
            }
            textBox6.Text = amount.ToString();
            
        }
    }
вот моя форма
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.03.2016, 14:09
Ответы с готовыми решениями:

Получить ссыки на результат выдачи яндекса
Здравствуйте, не могу получить ссыки на результат выдачи яндекса. Как это можно сделать? Спасибо Добавлено через 3 часа 57 минут ...

Запрет ввода даты рождения и даты выдачи водительского удостоверения, меньше 18 лет
Доброй ночи, программисты! Помогите пожалуйста: с запретом ввода даты рождения и даты выдачи водительского удостоверения, меньше 18 лет. ...

Sql access даты выдачи паспортов с . по
В таблице выдПасп записаны факты вида: &quot;Человек с ID (43765) получил (03.01.2007) паспорт с серией (4321) и №(987654)&quot;. ...

4
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18267 / 14190 / 5368
Регистрация: 17.03.2014
Сообщений: 28,877
Записей в блоге: 1
07.03.2016, 17:26
Влад Луценко, задолженность получается, если дата выдачи меньше чем текущая дата. Следовательно поиск должников делается так:
C#
1
2
3
4
5
6
7
foreach (ListOfBook b in book)
{
    if (b.DateV.AddDays(b.Days) < DateTime.Today)
    {
        // Должник
    }
}
1
0 / 0 / 0
Регистрация: 11.12.2015
Сообщений: 13
07.03.2016, 20:45  [ТС]
ну так тоже не получаеться, в меня не выводит ни одного задолженика...
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
09.03.2016, 08:22
Лучший ответ Сообщение было отмечено Влад Луценко как решение

Решение

Цитата Сообщение от Влад Луценко Посмотреть сообщение
ну так тоже не получаеться, в меня не выводит ни одного задолженика...
Значит вы либо пишите не то, что сказал OwenGlendower, либо что-то не то заносите в Days, что из вашего кода понял он.
Скорее всего проблема где-то тут:
Срок выдачи.
Срок здачи.
Если эти поля интерпретировать именно так, как они написаны, то получается, что одно из них можно удалить, так как они дублируют информацию. Может быть, во втором поле имелось в виду дата сдачи(заноситься она должна тогда уже после того, как книги сданы). Но,судя по коду, у вас все заносится прямо сразу... При этом на форме название "дата здачи". В связи с этим есть сомнения, что Days корректно заносятся. Тут надо навести порядок.

Кроме того, у вас имена текстбоксов ни фига не информативные. Я не удивлюсь, если окажется, что у вас textBox1-это, допустим, не первый по порядку на форме, а какой-нибудь другой. Давайте тексбоксам нормальные имена, тогда всегда будет ясно, какой из них что означает. tbID, tbNumberReader и далее примерно в таком духе.

Еще одна причина может быть в неправильно стоящей в системе дате.

И вообще, для таких моментов существует отладчик. Я думаю, на него полагаться было бы логичнее и продуктивнее, чем на экстрасенсорные способности людей на форуме. Всегда можно поставить точку останова на данном цикле и посмотреть, что же чему равно и почему неправильно.

Да, и в текущем коде:
C#
1
2
3
            DateTime countV = Convert.ToDateTime(textBox3.Text);
            double days = Convert.ToDouble(textBox4.Text);
            countV.AddDays(days);
Последняя строчка не делает ничего. Этот метод возвращает измененный DateTime, но вы его никуда не записываете.

Еще:
C#
1
ListOfBook[] book = new ListOfBook[10];
C каких делов было решено, что клиентов, получивших книги будет именно 10? List используйте.

Вообще button2 у вас даже близко не делает то, что на ней написано(какая бы из них ни была button2). Она работает с какими-то текстбоксами, а должна работать со списком book.
1
0 / 0 / 0
Регистрация: 11.12.2015
Сообщений: 13
09.03.2016, 13:03  [ТС]
Да, я уже розобрался, Спасибо за замечание !!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.03.2016, 13:03
Помогаю со студенческими работами здесь

Условие на значение при вводе даты выдачи паспорта
Добрый день! Помогите с такой проблемой. На форме есть 2 поля --Дата рождения(Датарождения) --Дата выдачи паспорта(ДатаПасп). ...

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

Настройка выдачи уведомлений не работает
проблема в том , что не работает настройка выдачи таких уведомлений.... контроль учетных записей не реагирует.... то есть нажимаю на кнопку...

Выпал из выдачи
Раньше сайт был в выдаче ( в Top30), потом его на некоторое время забросили, сейчас занимаюсь им около 3 недель в выдаче, так и не появился...

Вылетел с выдачи
Всем здравствуйте! У меня тоже проблема - сайт formula-2.ru вылетел с выдачи Яндекса. В качестве оптимизатора я не в зуб ногой, совсем...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru