Разработка программы Семейный бюджет
Скачать 0.56 Mb.
|
Кафедра «Компьютерные технологии и системы» Дисциплина: «Языки программирования» КУРСОВОЙ ПРОЕКТ на тему: разработка программы «Семейный бюджет» Выполнил студент гр. 12-БАС: Горелов А.А. Проверил преподаватель: Леонов Ю.А. Брянск 2013 Содержаниевведение 3 ТЕХНИЧЕСКОЕ ЗАДАНИЕ 4 1Аналитический раздел 5 1.1Обзор и анализ существующих программных решений 5 1.1.1MoneyTracker 5 1.1.2Домашняя экономика 8 1.2Определение функциональных требований к разрабатываемой программной системе 10 2конструкторский раздел 11 2.1Обоснование выбора языка и среды программирования 11 2.2Алгоритм работы программы 11 2.3Организация данных и проектирование интерфейсов обмена данными в программной системе 12 2.4Выбор графического и пользовательского интерфейса 13 3технологический раздел 15 3.1Определение структуры и состава программной системы 15 3.2Разработка алгоритмов отдельных подзадач 16 3.3Руководство пользователя 18 3.3.1Общие сведения о программе 18 3.3.2Инструкция по работе 18 4Экспериментальный раздел 20 4.1Виды контроля качества разрабатываемого ПО 20 Виды контроля качества разрабатываемого ПО 20 4.2.Методика проведения и результаты тестирования 21 4.3Методы и способы устранения ошибок 22 4.4Отладка выявленных ошибок, обнаруженных при тестировании 23 Заключение 24 Список использованных источников 25 Приложения 26 введениеИспользование новых информационных технологий в разных сферах деятельности человека привело к разработке программного обеспечения для создания графических объектов (файлов) и дальнейшей работы с ними. Такое программное обеспечение было востребовано на рынке информационных технологий, потому постоянно изменяется, включая в себя всё новые и новые возможности. Целью данной курсовой работы является изучение спектра функциональных возможностей языка программирования C# для создания программы «семейный бюджет». Задачами курсовой работы являются: проектирование и программная реализация системы; разработка программы для учета доходов и расходов семьи с помощью объектно-ориентированного языка программирования С#, с использованием его графических функций и методов. Методами решения задач курсовой работы служат: теоретический анализ научно-технической и методической литературы по языку программирования C#; применение полученных знаний на практике. В записке приведено описание программы, разработанной в соответствии с заданием курсовой работы по теме "разработка растрового графического редактора" по дисциплине "Языки программирования". Пояснительная записка имеет объём 30 листов и включает в себя следующие разделы: аналитический, конструкторский, технологический, экспериментально-исследовательский. Курсовой проект посвящён разработке законченного программного продукта, использующего алгоритмы, отработанные при выполнение лабораторных работ. Он представляет собой комплексную работу, требующую использования знаний, полученных в ходе изучения фундаментальных и общетехнических дисциплин («Информатика», «Высшая математика»). ТЕХНИЧЕСКОЕ ЗАДАНИЕна курсовой проект по дисциплине «Языки программирования» Студент Горелов А.А. Группа 12-ИБАС Тема Разработка программы «Семейный бюджет» Общая формулировка задания Необходимо разработать программу планирования и учета семейного бюджета .Требования к графическому и пользовательскому интерфейсу: интуитивно понятный графический интерфейс; в программе должны использоваться визуальные элементы управления (графическое меню, кнопки). Требования к функциональным возможностям: возможность добавлять, удалять и редактировать записи; должен быть организован удобный интерфейс для быстрого поиска необходимых записей; необходимо реализовать вывод сообщения информирующего о расходах и доходах выбранной даты. Руководитель Леонов Ю.А. Аналитический разделОбзор и анализ существующих программных решенийПрограммы для расчета бюджета различных структур используются повсеместно, в основном для контроля финансовых средств семьи и планирования покупок. На данный момент существует множество программных решений по заданной тематике. От простейших до популярных решений созданных известными компаниями. Рассмотрим некоторых представителей из каждого вида.. MoneyTrackerДанный программный продукт от компании Dominsoft – простой, удобный и лёгкий в использовании продукт, возможно контролировать расход и доход денег На Рис. 1 представлен пользовательский интерфейс, а так же функционал по добавлению данных о доходах и настройка программы. Телефонный справочник предназначен для хранения следующей информации: наименования расхода ,стоимость, дата совершения, итоги за весь текущий месяц или год, наименования доходов ,дата поступления в бюджет, сколько дней сбережено за последнее время, а так же прочей информации. Особенности программного продукта: простота и удобство использования, приятный внешний вид; высокая надёжность (более чем за семь лет распространения не было зафиксировано ни единого случая потери данных); защита Ваших данных паролем; мощная и очень удобная поисковая система (быстрый поиск по нажатию одной клавиши, расширенный поиск по любому сочетанию критериев поиска, "сквозной поиск" в каждом поле слова, фразы или номера); резервное копирование/восстановление с резервной копии (с планировщиком и напоминаем); высокая скорость работы, благодаря продуманной и простой структуре; автоматическая адаптация программы под разрешение Вашего монитора; возможно планировать бюджет на следующий месяц (наличие напоминания при отходе от плана); создание отчетов (как стандартные отчеты программы, которые можно применить к любому элементу бюджета так и специальные отчеты по бюджету, отображающие степень его выполнения.) Рис. 1. Интерфейс программы «MoneyTracker» Домашняя экономикаДомашняя экономика – это новая программа для управления личными финансами и планирования семейного бюджета. Теперь вы сможете точно знать, на что уходят ваши деньги и быстрее достигать значимых финансовых целей. Встроенный органайзер позволит планировать расходы и доходы, а система отчётов даст наглядное представление о движении денег. Особенности программного продукта: широкие возможности учёта личных и семейных финансов; удобный интерфейс и лёгкость в освоении; сберегательный и кредитный калькуляторы, включащие прогноз инфляции; подробная справочная система на русском языке; копирование найденных данных в Контакты. К недостаткам программного продукта компании Домашняя экономика можно отнести: ввод только одного товара в расходы; интерфейс слишком прост и не привлекателен; корректировка данных происходит в отдельном окне, которое закрывает обзор основной таблицы и не позволяет сопоставлять данные. В отличие от вышерассмотренного программного продукта от компании MoneyTracker, выпущенного в 2007 году, Домашняя экономика не предоставляет настолько расширенного функционала. Интерфейс программы и изменение данных представлены на Рис. 2. Рис. 2. Интерфейс программы Домашняя экономика Определение функциональных требований к разрабатываемой программной системеПроанализировав существующие программные решения, был определен перечень функциональных требований к разрабатываемой программе: программа должна содержать простой удобный для работы интерфейс (расположение кнопок для управления записями в таблице в одном месте на форме, а также удобное соотношение данных в рабочих полях с данными таблицы); занимать небольшой объем памяти и не перегружать ресурсы компьютера (необходимо провести оптимизацию программного кода); должна присутствовать возможность по желанию удалить статистику в определенный день; должна присутствовать возможность построения диаграммы учета за последнюю неделю; программа должна иметь функции учета расходов и доходов; работоспособность приложения в среде Windows; возможность очистки всех записей. конструкторский разделОбоснование выбора языка и среды программированияУчитывая особенности поставленной задачи, из множества сред программирования, таких как Visual C#, MicrosoftVisualStudio, VisualBasic, Borland Delphi 7, С++ был выбран язык C#, в которой существует использование объектов в области интерфейса, что облегчит работу программиста, то есть C# позволяет визуально создавать интерфейс программы, используя большую библиотеку стандартных классов (компонент). Основным достоинством данного языка, является то, что достаточно прост в освоение, наличие сборщика мусора, обширная кодобаза, сведение к минимуму неявных преобразований типов и перегрузок унарных операторов Разработка современных приложений все в большей степени базируется на применении программных компонентов в форме автономных и самодокументируемых функциональных модулей. Основной особенностью таких компонентов является реализация модели программирования с использованием свойств, методов, событий и атрибутов, представляющих декларативное описание компонентов, а также включение в них собственной документации. В C# представлены языковые конструкции, непосредственно поддерживающие эти понятия, что делает его близким к естественному языку для создания и применения программных компонентов. Алгоритм работы программыПри разработке программного продукта «Семейный бюджет» был создан и проанализирован алгоритм работы данной программы (Рис. 3). При работе в данной программе можно выполнить 3 действий: добавить данные, удалить, редактировать, найти или фильтровать записи. Если ни одно из этих действий выполнять не нужно, алгоритм приводит к окончанию работы приложения. Если одно из этих действий нужно выполнить – алгоритм прост и понятен. Рис. 3. Алгоритм работы программы Организация данных и проектирование интерфейсов обмена данными в программной системеКак и любая компьютерная программа, данная программа обрабатывает входные данные и выводит результат в виде выходных данных. Входные данные в данной программе задаются с помощью действий: ввод данных в рабочие поля для добавления, редактирования, и построение графика; нажатие пользователем кнопок на форме; Выходные данные в программе представлены в виде графического отображения приложения (Рис. 4). Рис. 4. Окно программы «Семейный бюджет» Графический и пользовательский интерфейс представляет собой важную часть любой программы. От его оптимизации зависит скорость и удобство работы с программой. Интерфейс должен быть не только удобным для работы, но и приятным в оформлении для взаимодействия пользователя и программной среды. Разработка пользовательского интерфейса – процесс создания графической оболочки программного продукта. В ходе разработки были рассмотрены несколько вариантов интерфейса. На Рис. 5 представлен один из вариантов графического и пользовательского интерфейса. К его достоинствам можно отнести следующее: кнопки для добавления расходов, доходов и удаления всех данных занимают мало пространства; поля не мешают обзору; кнопки находятся внизу окна программы. Минусы: некорректная надпись посередине рабочего окна; не присутствует режим построения графика; Из-за наличия большого числа минусов в данном варианте был разработан новый графический и пользовательский интерфейс (Рис. 6). Рис. 5. Вариант графического и пользовательского интерфейса Рис. 6. Выбранный графический и пользовательский интерфейс технологический разделОпределение структуры и состава программной системыВ программе использованы глобальные и локальные переменные, стандартные и пользовательские методы. Рассмотрим состав программной системы подробнее. Диаграмма классов представлена на Рис. 7. Рис. 7. Диаграмма классов Глобальные переменные: List Локальные переменные: text – принимает данные о расходах, доходах; dt – принимает данные о дате време расходов; summa –принимает данные о деньгах в расходах, доходах; flag-принимает данные о количестве записей в коллекции; summa_dohoda-принимает данные о суммарных доходах; summa_rashoda-принимает данные о суммарных расход. Пользовательские методы: public void unvizible() – метод скрывающий все кнопки; private void save_zap_Click – метод добавляющий запись в коллекцию после ввода и нажатие мыши; private void Form1_Load(object sender, EventArgs e)- метод открывающий нужное окно; private void show_zap_Click(object sender, EventArgs e)- метод показывающий все записи в выбранной коллекции; private void button3_Click(object sender, EventArgs e)- метод удающий записи. Разработка алгоритмов отдельных подзадачВ ходе разработки программного продукта был создан метод для поиска необходимой информации: private void show_zap_Click. Рассмотрим его алгоритм (Рис. 8). Рис. 8. Алгоритм метода После объявления и присвоения начальных значений необходимым переменным в работу включается цикл «for». Условия для цикла «if» задаются пользователем вручную через рабочие поля. Как только метод находит нужные данные, цикл прекращает свою работу. Если искомая информация не найдена, на экран выводится соответствующее сообщение. Руководство пользователяОбщие сведения о программеПрограмма «Cемейный бюджет» разработана так, что любой пользователь смог разобраться в работе с приложением. В данной программе можно хранить следующие данные: название покупки, стоимость, дата покупки, дату получения доходов и в каком количестве. Приложение может использоваться для контроля финансов семьи, и планирования покупок.. Инструкция по работеДанная программа не требует установки на жесткий диск компьютера. Для того чтобы ее открыть, достаточно запустить файл программы. Приложение имеет 3 рабочих окна (рис 9) Взаимодействие пользователя с программной средой осуществляется с помощью 4 кнопок для добавления доходов, расходов, построение диаграммы, очищение всех данных. Рис. 9. Поле ввода дохода Рис 10 Поле ввода расходов Рис11 Поле построения графика После нажатия клавиш при вводе данных, они запоминаются в специально отведенный файл Экспериментальный разделВиды контроля качества разрабатываемого ПОВиды контроля качества разрабатываемого ПО Тестирование программы – это этап, на котором проверяется, как ведет себя программа на как можно большем количестве входных наборов данных, в том числе и на заведомо неверных. Основные принципы организации тестирования: необходимой частью каждого теста должно являться описание ожидаемых результатов работы программы, чтобы можно было быстро выяснить наличие или отсутствие ошибки в ней; следует по возможности избегать тестирования программы ее автором, т.к. кроме уже указанной объективной сложности тестирования для программистов здесь присутствует и тот фактор, что обнаружение недостатков в своей деятельности противоречит человеческой психологии (однако отладка программы эффективнее всего выполняется именно автором программы); по тем же соображениям организация - разработчик программного обеспечения не должна “единолично ” его тестировать (должны существовать организации, специализирующиеся на тестировании программных средств); должны являться правилом доскональное изучение результатов каждого теста, чтобы не пропустить малозаметную на поверхностный взгляд ошибку в программе; необходимо тщательно подбирать тест не только для правильных (предусмотренных) входных данных, но и для неправильных (непредусмотренных); следует сохранять использованные тесты (для повышения эффективности повторного тестирования программы после ее модификации или установки у заказчика); тестирования не должно планироваться исходя из предположения, что в программе не будут обнаружены ошибки (в частности, следует выделять для тестирования достаточные временные и материальные ресурсы); следует учитывать так называемый “принцип скопления ошибок”: вероятность наличия не обнаруженных ошибок в некоторой части программы прямо пропорциональна числу ошибок, уже обнаруженных в этой части; .Методика проведения и результаты тестированияТестирование является важным этапом в разработке программы. Требовалось добиться взаимосвязи таких составляющих, как надёжность, практичность, эффективность, мобильность, функциональность. Тем не менее, при разработке программного продукта допускались различные ошибки: применение переменных без преобразований типа данных; при работе с индексами строк были допущены ошибки, которые приводили к неправильной работе программы. некорректные условия в циклах; использовались несколько циклов подряд, вместо одного, что требовало оптимизации программного кода; Для нахождения такого рода ошибок применялось модульное тестирование, особенностью которого является разбиение всего программного кода на минимально возможный для тестирования компонент, например, отдельный класс или метод. Цель модульного тестирования – изолировать отдельные части программы и показать, что по отдельности эти части работоспособны. Такое тестирование облегчает обнаружение и устранение ошибок. Методы и способы устранения ошибокОтладка программы – самый трудоемкий этап. Его цель – проверка синтаксической и логической правильности программы, а также определение того, что программа функционирует на всем диапазоне допустимых данных. В процессе отладки программы выделяются следующие этапы. Трансляция. При трансляции выполняется перевод программы, понятной человеку, на язык, понятный компьютеру. Если цель трансляции – преобразование всего исходного текста на внутренний язык компьютера (т.е. получение некоторого нового кода) и только, то такая трансляция называется также компиляцией. Исходный текст называется также исходной программой или исходным модулем, а результат компиляции – объектным кодом или объектным модулем. Если же трансляции подвергаются отдельные операторы исходных текстов и при этом полученные коды сразу выполняются, такая трансляция называется интерпретацией. Поскольку трансляция выполняется специальными программными средствами – компиляторами или интерпретаторами соответственно. Тестирование. Целью является определение работоспособности программы на всем требуемом диапазоне исходных данных. Программистом составляется представительная выборка исходной информации, которая позволит определить корректность программы при любых входных параметрах. Выполнение программы с целью нахождения логических ошибок. Осуществляется после успешной компоновки или по ходу интерпретации каждого оператора. При этом выявляются такие ошибки, как, например, деление на ноль или вычисление логарифма отрицательного числа. Здесь же проверяется корректность описания используемых переменных, а также законченность циклов. Отладка выявленных ошибок, обнаруженных при тестированииВо время выполнения отладки, были использованы следующие методы: • unit тестирование; • анализ кода без исполнения программы; • запуск программы из под отладчика. Все синтаксические ошибки были исправлены при компиляции проекта, учитывая синтаксические особенности среды программирования .NET. Отладка ряда ошибок прошла успешно, были внесены изменения в интерфейс программы, а также были предусмотрены некоторые исключительные ситуации.В результате тестирования и отладки программы были обнаружены и исправлены следующие ошибки: переменные, требующие изменения типа данных, были преобразованы; была проведена оптимизация программного кода для каждого из методов в отдельности. ЗаключениеРабота выполнена в языке С#, прочно вошедшем в мир программирования в 1998 году являющийся хорошим языком программирования, к которому обращаются как прикладные программисты, так и системные. В описании работы присутствует руководство программиста по запуску программы, а также руководство пользователя по эксплуатации программы. Выполненный в процессе выполнения курсового проекта программный продукт, был проверен на соответствие требованиям технического задания, и готов к эксплуатации. Результаты работы можно использовать в контроле бюджета семьи. При разработке курсового проекта был приобретен опыт работы с языком программирования, изучен синтаксис данного языка, основные конструкции. Список использованных источниковПавловская Т. А. C#. Программирование на языке высокого уровня. Изд.: Питер, 2009. – 432 с. Дейтел Х. C# в подлиннике. Наиболее полное руководство. – Изд.: БХВ-Петербург, 2008. – 1056 с. Троелсен Э. Язык программирования C# 2010 и платформа .NET 4. – Изд.: Вильямс, 2011. – 1392 с. Нейгел К., Ивьен Б., Глинн Д., Уотсон К., Скиннер М. C# 4.0 и платформа .NET 4 для профессионалов. – Изд.: Питер, 2011. – 1440 с. ПриложенияПриложение 1 Листинг программы using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace sasha_kursach_egednev { public partial class Form1 : Form { [SerializableAttribute] //говорим что будем серриализовать struct zapis_rashoda//стурктура отвечающая за расход { public string text;//наименовние расхода public DateTime dt;//дата время расхода public double summa;//сколько денег ушло } [SerializableAttribute] struct zapis_dohoda//доход { public double summa;//сколько денег пришло public DateTime dt;//когда } //для доходов и расходов свои коллекции List zapis_rashoda zp;//переменная для текущего расхода List zapis_dohoda zp_d;//текущий доход public void unvizible()//своя процедура крывваем все гроупбоксы { groupBox1.Visible = groupBox2.Visible = groupBox3.Visible = groupBox4.Visible = groupBox5.Visible = groupBox6.Visible = groupBox7.Visible = false; } public Form1() { InitializeComponent(); } private void save_zap_Click(object sender, EventArgs e) { //будем серриализовать BinaryFormatter bf = new BinaryFormatter(); FileStream fs = new FileStream("zapis_rashoda.zap",FileMode.OpenOrCreate, FileAccess.ReadWrite); zp.text = richTextBox1.Text;//в поле текст текущей коробки вносим значение которое ввели в текст боксе zp.dt = dateTimePicker1.Value;//считали значение даты времени zp.summa = Convert.ToDouble(richTextBox3.Text);//считываем поле сумма zapisi_rashoda.Add(zp);//добавили эту записть в колеекцию bf.Serialize(fs, zapisi_rashoda);//серриализация fs.Flush();//запись в файл fs.Close();//закрытие файла //очищаем поля ввода richTextBox1.Clear(); richTextBox3.Clear(); } private void Form1_Load(object sender, EventArgs e)//при закрузке формы { //начальная позиция всех гроуп боксов //верх groupBox1.Top = groupBox2.Top = groupBox3.Top = groupBox4.Top = groupBox5.Top = groupBox6.Top = groupBox7.Top = label3.Top + label3.Height + 10; //лево groupBox1.Left = groupBox2.Left = groupBox3.Left = groupBox4.Left = groupBox5.Left = groupBox6.Left = groupBox7.Left = 15; if (File.Exists("zapis_rashoda.zap"))//если уже существует файл с записями то считываем из него { //дессериалтзация BinaryFormatter bf = new BinaryFormatter(); FileStream fs = new FileStream("zapis_rashoda.zap", FileMode.OpenOrCreate, FileAccess.ReadWrite); // записываем преобразованные 0 и 1 в бесконечный массив zapisi_rashoda = (List fs.Close();//закрываем файл } if (File.Exists("zapis_dohoda.zap"))//если уже существует файл с записями то считываем из него { //тоже самое BinaryFormatter bf = new BinaryFormatter(); FileStream fs = new FileStream("zapis_dohoda.zap", FileMode.OpenOrCreate, FileAccess.ReadWrite); zapisi_dohoda = (List fs.Close(); } } private void show_zap_Click(object sender, EventArgs e) { //очищаем поля вывода richTextBox2.Clear(); richTextBox4.Clear(); //идём по массиву коробок(по коллекции) for (int i = 0; i < zapisi_rashoda.Count; i++) { //берём каждый элемент коллекции и проеряем совпадает ли его значение даты с текущей if (zapisi_rashoda[i].dt.Date == dateTimePicker3.Value.Date) { //добавляем в поля вывода richTextBox2.Text +=zapisi_rashoda[i].text + "\n"; richTextBox4.Text += Convert.ToString(zapisi_rashoda[i].summa) + " руб.\n"; } } } private void button3_Click(object sender, EventArgs e) { bool flag;//отвечает за наличие записей в колеекции do//удаляем пока есть что удалять { flag = true; for (int i = 0; i < zapisi_rashoda.Count; i++) { if (zapisi_rashoda[i].dt.Date == dateTimePicker2.Value.Date)//если дата совпадает с текущей { zapisi_rashoda.RemoveAt(i);//удаляем запись flag = false; } } } while (flag == false); //серриализуем и записываем в файл BinaryFormatter bf = new BinaryFormatter(); FileStream fs = new FileStream("zapis_rashoda.zap", FileMode.OpenOrCreate, FileAccess.ReadWrite); bf.Serialize(fs, zapisi_rashoda); fs.Flush(); fs.Close(); } private void создатьЗаписьToolStripMenuItem1_Click(object sender, EventArgs e) { unvizible(); label3.Left = 137; groupBox1.Visible = true; CenterToScreen(); } private void удалитьЗаписьToolStripMenuItem1_Click(object sender, EventArgs e) { unvizible(); label3.Left = 137; groupBox3.Visible = true; CenterToScreen(); } private void очиститьВсеЗаписиToolStripMenuItem_Click(object sender, EventArgs e) { richTextBox2.Clear(); richTextBox4.Clear(); richTextBox6.Clear(); zapisi_dohoda.Clear(); zapisi_rashoda.Clear(); BinaryFormatter bf = new BinaryFormatter(); FileStream fs = new FileStream("zapis_rashoda.zap", FileMode.OpenOrCreate, FileAccess.ReadWrite); bf.Serialize(fs, zapisi_rashoda); fs.Flush(); fs.Close(); BinaryFormatter bf2 = new BinaryFormatter(); FileStream fs2 = new FileStream("zapis_dohoda.zap", FileMode.OpenOrCreate, FileAccess.ReadWrite); bf2.Serialize(fs2, zapisi_dohoda); fs2.Flush(); fs2.Close(); } private void показатьЗаписьToolStripMenuItem1_Click(object sender, EventArgs e) { unvizible(); label3.Left = 137; groupBox2.Visible = true; CenterToScreen(); } private void button4_Click(object sender, EventArgs e) { //подготавливаем для серииализации BinaryFormatter bf = new BinaryFormatter(); FileStream fs = new FileStream("zapis_dohoda.zap", FileMode.OpenOrCreate, FileAccess.ReadWrite); zp_d.dt = dateTimePicker6.Value;//заполняем поле даты охода zp_d.summa = Convert.ToDouble(richTextBox7.Text);//поле количество дохода(Сколько денег_ zapisi_dohoda.Add(zp_d);//записываем в коллекцию bf.Serialize(fs, zapisi_dohoda); fs.Flush(); fs.Close(); richTextBox7.Clear(); } private void создатьЗаписьToolStripMenuItem_Click(object sender, EventArgs e) { unvizible();//скрываются все гроупбоксы groupBox6.Visible = true;//окрывается нужный label3.Left = 25;//сдвигается поле приглашения CenterToScreen();//форма помещается в центре экрана } private void показатьЗаписьToolStripMenuItem_Click(object sender, EventArgs e) { unvizible(); groupBox5.Visible = true; label3.Left = 25; CenterToScreen(); } private void удалитьЗаписьToolStripMenuItem_Click(object sender, EventArgs e) { unvizible(); groupBox4.Visible = true; label3.Left = 25; CenterToScreen(); } private void button2_Click(object sender, EventArgs e) { richTextBox6.Clear();//очищаем поле вывода //проходим по коллекции и выводим только те элементы у которых дата совпадает с нужной for (int i = 0; i < zapisi_dohoda.Count; i++) { if (zapisi_dohoda[i].dt.Date == dateTimePicker5.Value.Date) { richTextBox6.Text += Convert.ToString(zapisi_dohoda[i].summa) + " руб.\n"; } } } private void button1_Click(object sender, EventArgs e) { bool flag;//уудаление записей тоже самое do { flag = true; for (int i = 0; i < zapisi_dohoda.Count; i++) { if (zapisi_dohoda[i].dt.Date == dateTimePicker4.Value.Date) { zapisi_dohoda.RemoveAt(i); flag = false; } } } while (flag == false); //сохранение изменений в файл BinaryFormatter bf = new BinaryFormatter(); FileStream fs = new FileStream("zapis_dohoda.zap", FileMode.OpenOrCreate, FileAccess.ReadWrite); bf.Serialize(fs, zapisi_dohoda); fs.Flush(); fs.Close(); } private void графикДоходыРасходыToolStripMenuItem_Click(object sender, EventArgs e) { unvizible(); label3.Left = 25; groupBox7.Visible = true; CenterToScreen(); } private void button5_Click(object sender, EventArgs e) { double summa_dohoda=0; double summa_rashoda = 0; //считается суммарные доходы for (int i = 0; i < zapisi_dohoda.Count; i++) { if (zapisi_dohoda[i].dt.Date == dateTimePicker7.Value.Date) { summa_dohoda += zapisi_dohoda[i].summa; } } //суммарные расходы за день for (int i = 0; i < zapisi_rashoda.Count; i++) { if (zapisi_rashoda[i].dt.Date == dateTimePicker7.Value.Date) { summa_rashoda += zapisi_rashoda[i].summa; } } Form fr = new Form2();//переменная для открытия новой формы fr.Text = Convert.ToString(summa_dohoda) + " " + Convert.ToString(summa_rashoda);//в поле заголовка новой формы передаю суммарный расход и доход fr.Show();//показать новую форму } } } |