public Planning_Record_Screen(int id)
        {
            InitializeComponent();
            index = id;
            string[] file = File.ReadAllLines(@"CurrentStateList.txt");
            Account.Text = file[0] + " руб.";
            Today.Text   = DateTime.Today.ToShortDateString();

            file = File.ReadAllLines(@"PlanningList.txt");
            if (index != -1)
            {
                file = file[index + 1].Split(';');
                if (bool.Parse(file[1]))
                {
                    string[] categories = { "Стипендия", "Пенсия", "Долг", "Подарок", "Компенсация", "Подработка", "яя" };
                    Array.Sort(categories);
                    categories[categories.Length - 1] = "Другое";
                    Category.Items.AddRange(categories);
                }
                else
                {
                    string[] categories = { "Питание",    "Одежда", "Долг",          "Транспорт", "Интернет", "Телефон", "ЖКУ", "Подарки", "Техника",
                                            "Канцелярия", "Книги",  "Бытовая химия", "Ремонт",    "Лечение",  "яя" };
                    Array.Sort(categories);
                    categories[categories.Length - 1] = "Другое";
                    Category.Items.AddRange(categories);
                }

                EditRecord = new Planning_Record(int.Parse(file[0]), file[2], float.Parse(file[5]), file[6],
                                                 new Frequency(int.Parse(file[3]), int.Parse(file[4])), bool.Parse(file[1]));
                Category.Text   = EditRecord.GetCategory;
                Amount.Text     = EditRecord.GetAmount.ToString();
                Commentary.Text = EditRecord.GetComment;
                Times.Text      = EditRecord.GetTimes.ToString();
                Days.Text       = EditRecord.GetDays.ToString();

                if (Commentary.Text == "0")
                {
                    Commentary.Text = "";
                }
            }
            else
            {
                string[] f = file[file.Length - 1].Split(';');
                if (bool.Parse(f[1]))
                {
                    string[] categories = { "Стипендия", "Пенсия", "Долг", "Подарок", "Компенсация", "Подработка", "яя" };
                    Array.Sort(categories);
                    categories[categories.Length - 1] = "Другое";
                    Category.Items.AddRange(categories);
                }
                else
                {
                    string[] categories = { "Питание",    "Одежда", "Долг",          "Транспорт", "Интернет", "Телефон", "ЖКУ", "Подарки", "Техника",
                                            "Канцелярия", "Книги",  "Бытовая химия", "Ремонт",    "Лечение",  "яя" };
                    Array.Sort(categories);
                    categories[categories.Length - 1] = "Другое";
                    Category.Items.AddRange(categories);
                }
            }
            category   = Category.Text;
            times      = Times.Text;
            days       = Days.Text;
            amount     = Amount.Text;
            commentary = Commentary.Text;
        }
示例#2
0
        public Planning_Screen()
        {
            InitializeComponent();
            StreamReader sr = null;

            try
            {
                sr      = new StreamReader(@"CurrentStateList.txt");
                account = float.Parse(sr.ReadLine());
                sr.Close();
            }
            catch
            {
                MessageBox.Show("Произошла ошибка при загрузке данных. Текущее состояние счёта будет очищено, приложение перезагружено.",
                                "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Stop);

                StreamWriter sw = new StreamWriter(@"CurrentStateList.txt", false);
                sw.Write("");
                sw.Close();
                Application.Restart();
            }

            Today.Text   = DateTime.Today.ToShortDateString();
            Account.Text = Math.Round(account, 2).ToString() + " руб.";
            Date.MinDate = DateTime.Today;


            try
            {
                sr = new StreamReader(@"PlanningList.txt");
            }
            catch
            {
                FileStream   fs = File.Create(@"PlanningList.txt");
                StreamWriter sw = new StreamWriter(fs);
                sw.WriteLine("0");
                sw.Close();
                fs.Close();

                sr = new StreamReader(@"PlanningList.txt");
            }

            if (!int.TryParse(sr.ReadLine(), out n))
            {
                return;
            }
            PlanningRecord = new Planning_Record[n];
            for (int i = 0; i < n; i++)
            {
                PlanningRecord[i] = new Planning_Record();
                if (!PlanningRecord[i].Read(sr))
                {
                    MessageBox.Show("Произошла ошибка при загрузке данных. " +
                                    "Планирование счёта будет очищено.", "Ошибка",
                                    MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    sr.Close();

                    StreamWriter sw = new StreamWriter(@"PlanningList.txt", false);
                    sw.WriteLine("0");
                    sw.Close();

                    //for (int j = PlanningList.Items.Count - 1; i > 0; i--)
                    //   PlanningList.Items[i].Remove();
                    PlanningList.Clear();
                    n = 0;
                    return;
                }

                PlanningList.Items.Add(PlanningRecord[i].GetCategory);
                PlanningList.Items[PlanningList.Items.Count - 1].Font = new Font("Century Gothic", 10, FontStyle.Bold);

                string amount = PlanningRecord[i].GetIncrease ? "+" : "-";
                amount += PlanningRecord[i].GetAmount + " руб.";
                PlanningList.Items.Add(amount);
                PlanningList.Items[PlanningList.Items.Count - 1].Font      = new Font("Century Gothic", 15, FontStyle.Bold);
                PlanningList.Items[PlanningList.Items.Count - 1].ForeColor = PlanningRecord[i].GetIncrease ?
                                                                             Color.FromArgb(0, 142, 63) : Color.FromArgb(144, 12, 10); //зеленый : красный
                PlanningList.Items[PlanningList.Items.Count - 1].UseItemStyleForSubItems = false;


                //для правильного окончания слов "раз" и "день"
                string result = "";
                string temp   = PlanningRecord[i].GetTimes.ToString();
                if (temp == "11" || temp == "12" || temp == "13" || temp == "14")
                {
                    result = temp + " раз в ";
                }
                else if (temp[temp.Length - 1] == '2' || temp[temp.Length - 1] == '3' || temp[temp.Length - 1] == '4')
                {
                    result = temp + " раза в ";
                }
                else
                {
                    result = temp + " раз в ";
                }
                temp = PlanningRecord[i].GetDays.ToString();
                if (temp == "1")
                {
                    result += "день";
                }
                else if (temp == "11" || temp == "12" || temp == "13" || temp == "14")
                {
                    result += temp + " дней";
                }
                else
                {
                    switch (temp[temp.Length - 1])
                    {
                    case '1':
                        result += temp + " день";
                        break;

                    case '2':
                        result += temp + " дня";
                        break;

                    case '3':
                        result += temp + " дня";
                        break;

                    case '4':
                        result += temp + " дня";
                        break;

                    default:
                        result += temp + " дней";
                        break;
                    }
                }
                PlanningList.Items[PlanningList.Items.Count - 1].SubItems.Add(result);

                PlanningList.Items.Add(PlanningRecord[i].GetComment);
                PlanningList.Items[PlanningList.Items.Count - 1].Font = new Font("Century Gothic", 10);
            }
            sr.Close();
        }
        private void Save_Click(object sender, EventArgs e)
        {
            if (Category.Text == "")
            {
                MessageBox.Show("Укажите категорию", "Не заполнены обязательные поля", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Category.DroppedDown = true;
                return;
            }
            if (Times.Text == "")
            {
                MessageBox.Show("Укажите количество раз", "Не заполнены обязательные поля", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Times.Focus();
                return;
            }
            if (!int.TryParse(Times.Text, out int times) || times <= 0)
            {
                MessageBox.Show("Количество раз введено неверно", "Не заполнены обязательные поля", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Times.Focus();
                Times.Text = "";
                //Times.SelectionStart = 0;
                return;
            }
            if (Days.Text == "")
            {
                MessageBox.Show("Укажите количество дней", "Не заполнены обязательные поля", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                //Days.SelectionStart = Days.Text.Length;
                Days.Focus();
                return;
            }
            if (!int.TryParse(Days.Text, out int days) || days <= 0)
            {
                MessageBox.Show("Количество дней введено неверно", "Не заполнены обязательные поля", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Days.Focus();
                Days.Text = "";
                //Days.SelectionStart = 0;
                return;
            }
            if (Amount.Text == "")
            {
                MessageBox.Show("Укажите сумму", "Не заполнены обязательные поля", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                //Amount.SelectionStart = Amount.Text.Length;
                Amount.Focus();
                return;
            }
            if (!float.TryParse(Amount.Text, out float amount) || amount <= 0)
            {
                MessageBox.Show("Данные в поле \"Сумма\" введены неверно", "Не заполнены обязательные поля", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Amount.Focus();
                Amount.Text = "";
                //Amount.SelectionStart = 0;
                return;
            }

            if (amount > 1000000)
            {
                MessageBox.Show("Введено слишком большое значение!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                Amount.Focus();
                Amount.Text = "";
                //Amount.SelectionStart = 0;
                return;
            }

            if (days >= 1000000)
            {
                MessageBox.Show("Введено слишком большое значение!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                Days.Focus();
                Days.Text = "";
                //Days.SelectionStart = 0;
                return;
            }

            if (times >= 1000000)
            {
                MessageBox.Show("Введено слишком большое значение!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                Times.Focus();
                Times.Text = "";
                //Times.SelectionStart = 0;
                return;
            }

            string category, commentary;

            category = Category.Text;
            if (Commentary.Text == "")
            {
                commentary = "0";
            }
            else
            {
                commentary = Commentary.Text;
            }
            if (index < 0)
            {
                Planning_Record NewRecord = new Planning_Record();
                NewRecord.Write(category, (float)Math.Round(amount, 2), commentary, times, days);
            }
            else
            {
                EditRecord.Edit(category, (float)Math.Round(amount, 2), commentary, times, days);
            }
            this.Close();
        }