Всем доброго времени суток) Создаю программу для записей семейного бюджета на с# с помощью Windows Forms, нужна помощь... В код необходимо добавить следующее:
- возможность выбора файла при загрузке и сохранении, а на форму кнопку, которая будет обнулять данные;
- добавить в класс метод поиска наибольшего значения и его вывода, а на форму - кнопку для вызова этого метода;
- ещё один объект класса Fields, который будет отвечать за ведение сбережений,а на форму -элементы для вывода полей в текстовое окно и в файл.
Очень нужна помощь... Заранее спасибо)
C# Code:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.IO;
  10. using System.Threading.Tasks;
  11.  
  12. namespace WindowsFormsApplication2
  13. {
  14.     public partial class frmFinance : Form
  15.     {
  16.         public frmFinance()
  17.         {
  18.             InitializeComponent();
  19.         }
  20.         static string[] sIncomeArticles = [Ссылки могут видеть только зарегистрированные пользователи. ] string[] { "Осн.доход.мужа\t", "Осн.доход.жены\t", "Доп.доход.мужа\t", "Доп.доход.жены\t",
  21.             "Подарки\t\t", "Соц.выплаты\t" };
  22.         static string[] sExpenseArticles = [Ссылки могут видеть только зарегистрированные пользователи. ] string[] { "Еда\t\t", "Жильё\t\t", "Одежда\t\t", "Транспорт\t", "Связь\t\t", "Обучение\t",
  23.             "Развлечения\t", "Путешествия\t", "Благотворительность\t", "Прочее\t\t" };
  24.         public class Fields
  25.         {
  26.             public int Rows, Columns = 32;
  27.             public string[,] Articles = [Ссылки могут видеть только зарегистрированные пользователи. ] string[50, 32];
  28.             public Fields(int rows)
  29.             {
  30.                 Rows = rows;
  31.             }
  32.             public void SetFirstColumn(string[] mas)
  33.             {
  34.                 Articles[0, 0] = "Статья/День\t";
  35.                 for (int i = 1; i < Rows; i++)
  36.                     Articles[i, 0] = mas[i - 1];
  37.             }
  38.             public void SetDayNumbers()
  39.             {
  40.                 for (int i = 1; i <= Columns - 1; i++)
  41.                     Articles[0, i] = Convert.ToString(i);
  42.             }
  43.             public string Output()
  44.             {
  45.                 string str = "";
  46.                 for (int i = 0; i < Rows; i++)
  47.                 {
  48.                     for (int j = 0; j < Columns; j++)
  49.                     {
  50.                         if (Articles[i, j] != null)
  51.                             str = str + Articles[i, j] + " \t";
  52.                         else
  53.                             str = str + "- \t";
  54.                     }
  55.                     str = str + "\r\n";
  56.                 }
  57.                 return str;
  58.             }
  59.             public int SumOfElements()
  60.             {
  61.                 int iSum = 0;
  62.                 for (int i = 1; i < Rows; i++)
  63.                     for (int j = 1; j < Columns; j++)
  64.                         if (Articles[i, j] != "" && Articles[i, j] != "-")
  65.                             iSum = iSum + Convert.ToInt32(Articles[i, j]);
  66.                 return iSum;
  67.             }
  68.         }
  69.         string TextBoxLine(string sIncome, string sAllIncome, string sExpense, string sAllExpense, string sDifference)
  70.         {
  71.             string str = "";
  72.             str = "Доходы:\r\n" + sIncome;
  73.             str = str + "Общий доход: " + sAllIncome + "\r\n\r\n";
  74.             str = str + "Расходы:\r\n" + sExpense;
  75.             str = str + "Общий расход: " + sAllExpense + "\r\n\r\n";
  76.             str = str + "В наличии: " + sDifference;
  77.             return str;
  78.         }
  79.         Fields Income = [Ссылки могут видеть только зарегистрированные пользователи. ] Fields(sIncomeArticles.Length + 1);
  80.         Fields Expense = [Ссылки могут видеть только зарегистрированные пользователи. ] Fields(sExpenseArticles.Length + 1);
  81.         private void frmFinance_Load(object sender, EventArgs e)
  82.         {
  83.             Income.SetFirstColumn(sIncomeArticles);
  84.             Expense.SetFirstColumn(sExpenseArticles);
  85.             Income.SetDayNumbers();
  86.             Expense.SetDayNumbers();
  87.             for (int i = 0; i < Income.Rows - 1; i++)
  88.                 cmbIncomeArticles.Items.Add(Income.Articles[i + 1, 0]);
  89.             for (int i = 0; i < Expense.Rows - 1; i++)
  90.                 cmbExpenseArticles.Items.Add(Expense.Articles[i + 1, 0]);
  91.             rtbOutput.Text = TextBoxLine(Income.Output(), Convert.ToString(Income.SumOfElements()),
  92.                 Expense.Output(), Convert.ToString(Expense.SumOfElements()),
  93.                 Convert.ToString(Income.SumOfElements() - Expense.SumOfElements()));
  94.         }
  95.  
  96.         private void btnIncomeAdd_Click(object sender, EventArgs e)
  97.         {
  98.             if (cmbExpenseArticles.SelectedIndex != -1)
  99.             {
  100.                 if (txtExpenseAdd.Text != "")
  101.                 {
  102.                     if (Expense.Articles[(cmbExpenseArticles.SelectedIndex + 1), Convert.ToInt32(numExpenseDay.Value)] != "-")
  103.                         Expense.Articles[(cmbExpenseArticles.SelectedIndex + 1), Convert.ToInt32(numExpenseDay.Value)] =
  104.                         Convert.ToString(Convert.ToInt32(Expense.Articles[(cmbExpenseArticles.SelectedIndex + 1),
  105.                         Convert.ToInt32(numExpenseDay.Value)]) + Convert.ToInt32(txtExpenseAdd.Text));
  106.                     else
  107.                         Expense.Articles[(cmbExpenseArticles.SelectedIndex + 1), Convert.ToInt32(numExpenseDay.Value)] = txtExpenseAdd.Text;
  108.                     rtbOutput.Text = TextBoxLine(Income.Output(), Convert.ToString(Expense.SumOfElements()),
  109.                         Expense.Output(), Convert.ToString(Expense.SumOfElements()), Convert.ToString(Income.SumOfElements() - Expense.SumOfElements()));
  110.                 }
  111.                 else
  112.                     MessageBox.Show("Введите значение расхода");
  113.             }
  114.             else
  115.                 MessageBox.Show("Выберите статью расхода");
  116.         }
  117.  
  118.         private void btnExpenseAdd_Click_1(object sender, EventArgs e)
  119.         {
  120.             if (cmbExpenseArticles.SelectedIndex != -1)
  121.             {
  122.                 if (txtExpenseAdd.Text != "")
  123.                 {
  124.                     if (Expense.Articles[(cmbExpenseArticles.SelectedIndex + 1), Convert.ToInt32(numExpenseDay.Value)] != "-")
  125.                         Expense.Articles[(cmbExpenseArticles.SelectedIndex + 1), Convert.ToInt32(numExpenseDay.Value)] =
  126.                         Convert.ToString(Convert.ToInt32(Expense.Articles[(cmbExpenseArticles.SelectedIndex + 1),
  127.                         Convert.ToInt32(numExpenseDay.Value)]) + Convert.ToInt32(txtExpenseAdd.Text));
  128.                     else
  129.                         Expense.Articles[(cmbExpenseArticles.SelectedIndex + 1), Convert.ToInt32(numExpenseDay.Value)] = txtExpenseAdd.Text;
  130.                     rtbOutput.Text = TextBoxLine(Income.Output(), Convert.ToString(Expense.SumOfElements()),
  131.                         Expense.Output(), Convert.ToString(Expense.SumOfElements()), Convert.ToString(Income.SumOfElements() - Expense.SumOfElements()));
  132.                 }
  133.                 else
  134.                     MessageBox.Show("Введите значение расхода");
  135.             }
  136.             else
  137.                 MessageBox.Show("Выберите статью расхода");
  138.         }
  139.  
  140.         private void btnSave_Click(object sender, EventArgs e)
  141.         {
  142.             FileStream fsFile = [Ссылки могут видеть только зарегистрированные пользователи. ] FileStream("Семейные финансы.txt", FileMode.Create);
  143.             StreamWriter fileWrite = [Ссылки могут видеть только зарегистрированные пользователи. ] StreamWriter(fsFile);
  144.             fileWrite.Write(TextBoxLine(Income.Output(), Convert.ToString(Income.SumOfElements()),
  145.                 Expense.Output(), Convert.ToString(Expense.SumOfElements()), Convert.ToString(Income.SumOfElements() - Expense.SumOfElements())));
  146.             fileWrite.Close();
  147.             MessageBox.Show("Данные сохранены в файл");
  148.         }
  149.  
  150.         private void btnLoad_Click(object sender, EventArgs e)
  151.         {
  152.  
  153.             FileStream fsFile = [Ссылки могут видеть только зарегистрированные пользователи. ] FileStream("Семейные финансы.txt", FileMode.Open);
  154.             try
  155.             {
  156.                 using (StreamReader fileRead = [Ссылки могут видеть только зарегистрированные пользователи. ] StreamReader(fsFile))
  157.                 {
  158.                     string temp;
  159.                     temp = fileRead.ReadLine();
  160.                     for (int i = 0; i < Income.Rows; i++)
  161.                     {
  162.                         string[] separator = [Ссылки могут видеть только зарегистрированные пользователи. ] string[] { " " };
  163.                         string[] mas = [Ссылки могут видеть только зарегистрированные пользователи. ] string[Income.Columns];
  164.                         mas = fileRead.ReadLine().Split(separator, StringSplitOptions.None);
  165.                         for (int j = 0; j < Income.Columns; i++)
  166.                             Income.Articles[i, j] = mas[j].Trim([Ссылки могут видеть только зарегистрированные пользователи. ] char[] { '\t' });
  167.                     }
  168.                     temp = fileRead.ReadLine();
  169.                     temp = fileRead.ReadLine();
  170.                     temp = fileRead.ReadLine();
  171.                     for (int i = 0; i < Expense.Rows; i++)
  172.                     {
  173.                         string[] separator = [Ссылки могут видеть только зарегистрированные пользователи. ] string[] { " " };
  174.                         string[] mas = [Ссылки могут видеть только зарегистрированные пользователи. ] string[Expense.Columns];
  175.                         mas = fileRead.ReadLine().Split(separator, StringSplitOptions.None);
  176.                         for (int j = 0; j < Expense.Columns; j++)
  177.                             Expense.Articles[i, j] = mas[j].Trim([Ссылки могут видеть только зарегистрированные пользователи. ] char[] { '\t' });
  178.                     }
  179.                     fileRead.Close();
  180.                 }
  181.             }
  182.             catch (Exception)
  183.             {
  184.                 MessageBox.Show("Файл не может быть прочитан");
  185.             }
  186.             Income.SetFirstColumn(sIncomeArticles);
  187.             Expense.SetFirstColumn(sExpenseArticles);
  188.             rtbOutput.Text = TextBoxLine(Income.Output(), Convert.ToString(Income.SumOfElements()),
  189.                 Expense.Output(), Convert.ToString(Expense.SumOfElements()), Convert.ToString(Income.SumOfElements() -
  190.                 Expense.SumOfElements()));
  191.             MessageBox.Show("Данные загружены из файла");
  192.         }
  193.     }
  194. }