Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Runtime.Serialization.Formatters.Binary;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using System.Text.RegularExpressions;
- using Microsoft.VisualBasic.Devices;
- namespace WindowsFormsApplication11
- {
- public partial class MainForm : Form
- {
- public static volatile int elements = 0;
- public static volatile int changes = 0;
- public static string[] formDelegate = new string[3];
- public string group = "";
- public static volatile bool state = false;
- public static int currentIndex = 0;
- DataGridView MainTable = new DataGridView();
- public MainForm()
- {
- InitializeComponent();
- }
- private void MainTable_CellContentClick(object sender, DataGridViewCellEventArgs e)
- {
- currentIndex = e.RowIndex;
- }
- private void MainTable_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
- {
- int size = MainTable.Rows.Count;
- for (int i = 0; i < size; i++)
- MainTable.Rows[i].HeaderCell.Value = (i + 1).ToString();
- }
- private void MainTable_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
- {
- int size = MainTable.Rows.Count;
- for (int i = 0; i < size; i++)
- MainTable.Rows[i].HeaderCell.Value = (i + 1).ToString();
- }
- private void MainWindow_FormClosing(object sender, FormClosingEventArgs e)
- {
- EndWork();
- }
- private void MainTable_Sorted(object sender, EventArgs e)
- {
- int size = MainTable.Rows.Count;
- for (int i = 0; i < size; i++)
- MainTable.Rows[i].HeaderCell.Value = (i + 1).ToString();
- changes++;
- }
- private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
- {
- OpenDB(false);
- }
- private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
- {
- SaveDB(true);
- }
- private void создатьToolStripMenuItem_Click(object sender, EventArgs e)
- {
- CreateDB();
- SaveDB(false);
- }
- #region DataBase
- private void OpenDB(bool OpenMode)
- {
- string path = Directory.GetCurrentDirectory() + "\\" + "DataBase";
- OpenFileDialog OpenFD = new OpenFileDialog()
- {
- AddExtension = true,
- DefaultExt = "db",
- Filter = "Элементы (*.db)|*.db",
- FilterIndex = 0,
- RestoreDirectory = false,
- InitialDirectory = path
- };
- if (OpenFD.ShowDialog() != DialogResult.OK)
- {
- if (!state) OpenDB(false);
- return;
- }
- string[,] dataBase = null;
- FileStream fs = new FileStream(OpenFD.FileName, FileMode.Open);
- try
- {
- BinaryFormatter bf = new BinaryFormatter();
- dataBase = (string[,])bf.Deserialize(fs);
- }
- catch (Exception)
- {
- MessageBox.Show("Выбранный файл имеет неподходящий формат");
- if (OpenMode)
- OpenDB(OpenMode);
- return;
- }
- finally
- {
- fs.Close();
- }
- elements = dataBase.GetLength(0);
- if (elements == 0)
- {
- MessageBox.Show("Вы пытаетесь открыть пустой файл");
- if (OpenMode)
- OpenDB(OpenMode);
- }
- else
- {
- MainTable.Rows.Clear();
- MainTable.Rows.Add(elements);
- for (int i = 0; i < elements; i++)
- {
- MainTable.Rows[i].Cells[0].Value = dataBase[i, 0].ToString();
- MainTable.Rows[i].Cells[1].Value = dataBase[i, 1].ToString();
- MainTable.Rows[i].Cells[2].Value = dataBase[i, 2].ToString();
- }
- group = Path.GetFileNameWithoutExtension(OpenFD.FileName).Replace("!", "");
- GroupInfoBox.Text = group;
- changes = 0;
- state = true;
- }
- }
- private void SaveDB(bool saveMode)
- {
- elements = MainTable.Rows.Count;
- if (elements == 0 && saveMode)
- MessageBox.Show("Вы пытаетесь сохранить пустой файл");
- else
- {
- string[,] dataBase = new string[elements, 3];
- for (int i = 0; i < elements; i++)
- {
- dataBase[i, 0] = MainTable.Rows[i].Cells[0].Value.ToString();
- dataBase[i, 1] = MainTable.Rows[i].Cells[1].Value.ToString();
- dataBase[i, 2] = MainTable.Rows[i].Cells[2].Value.ToString();
- }
- string path = Directory.GetCurrentDirectory() + "\\" + "DataBase" + "\\" + group + ".db";
- FileStream fs = new FileStream(path, FileMode.Create);
- BinaryFormatter bf = new BinaryFormatter();
- bf.Serialize(fs, dataBase);
- fs.Close();
- if (saveMode) MessageBox.Show("Файл сохранен");
- changes = 0;
- state = true;
- }
- }
- private void CreateDB()
- {
- FileStream fs = null;
- //FileCreateDialog f1 = new FileCreateDialog();
- SaveFileDialog f1 = new SaveFileDialog();
- DialogResult res = f1.ShowDialog();
- //f1.Close();
- if (res == DialogResult.Cancel)
- return;
- MainTable.Rows.Clear();
- group = f1.FileName.Trim().Replace("!", "");
- string path = Directory.GetCurrentDirectory() + "\\" + "DataBase" + "\\" + group + ".db";
- try
- {
- fs = new FileStream(path, FileMode.CreateNew);
- fs.Close();
- }
- catch (IOException)
- {
- SaveFileDialog f = new SaveFileDialog();
- res = f.ShowDialog();
- //f.Close();
- if (res == DialogResult.OK)
- {
- try
- {
- fs = new FileStream(path, FileMode.Create);
- fs.Close();
- }
- catch (Exception)
- {
- MessageBox.Show("Неверный формат имени файла! Попробуйте еще раз");
- CreateDB();
- }
- }
- else
- CreateDB();
- }
- catch (Exception)
- {
- MessageBox.Show("Неверный формат имени файла! Попробуйте еще раз");
- CreateDB();
- }
- GroupInfoBox.Text = group;
- }
- private void EndWork()
- {
- if (state)
- {
- string[,] dataBase = null;
- string path = Directory.GetCurrentDirectory() + "\\" + "DataBase" + "\\" + group + ".db";
- bool ok = true;
- FileStream fs = null;
- try
- {
- fs = new FileStream(path, FileMode.Open);
- }
- catch (IOException)
- {
- ok = false;
- }
- if (ok)
- {
- try
- {
- BinaryFormatter bf = new BinaryFormatter();
- dataBase = (string[,])bf.Deserialize(fs);
- ok = dataBase.GetLength(0) != 0;
- }
- catch (Exception)
- {
- ok = false;
- }
- finally
- {
- fs.Close();
- }
- if (!ok)
- File.Delete(path);
- }
- elements = MainTable.Rows.Count;
- if (elements == 0)
- return;
- else
- {
- if (changes == 0)
- {
- return;
- }
- else
- {
- //EndWork end = new EndWork();
- DialogResult res = MessageBox.Show("Save database?", "", MessageBoxButtons.YesNo);
- if (res == DialogResult.Yes)
- SaveDB(false);
- else
- return;
- }
- }
- state = true;
- }
- }
- #endregion
- #region AddElement
- private void добавитьToolStripMenuItem_Click(object sender, EventArgs e)
- {
- if (group == "")
- {
- CreateDB();
- return;
- }
- MainForm.elements = MainTable.Rows.Count;
- AddForm f = new AddForm();
- DialogResult res = f.ShowDialog();
- if (res == DialogResult.OK || res == DialogResult.Cancel)
- AddElement(f.FName, f.SName, f.TName, f.THName, f.AddMode, f.Number);
- }
- private void AddElement(string NameOne, string NumberOne, string TimeOne, string NumberLast, int AddMode, int Number)
- {
- Regex pattern1 = new Regex("");
- Regex pattern2 = new Regex("");
- if (!(pattern1.IsMatch(NameOne.Trim()) || pattern2.IsMatch(NameOne.Trim())))
- {
- MessageBox.Show("Неверный формат введенных данных!\n");
- return;
- }
- pattern1 = new Regex("");
- if (!pattern1.IsMatch(NumberOne.Trim()))
- {
- MessageBox.Show("Неверный формат введенных данных!\n");
- return;
- }
- pattern1 = new Regex("");
- pattern2 = new Regex("");
- Regex pattern3 = new Regex(@"^$");
- if (!(pattern1.IsMatch(TimeOne.Trim()) || pattern2.IsMatch(TimeOne.Trim()) || pattern3.IsMatch(TimeOne.Trim())))
- {
- MessageBox.Show("Неверный формат введенных данных!\n");
- return;
- }
- pattern1 = new Regex("");
- pattern2 = new Regex("");
- if (!(pattern1.IsMatch(NumberLast.Trim()) || pattern2.IsMatch(NumberLast.Trim()) || pattern3.IsMatch(NumberLast.Trim())))
- {
- MessageBox.Show("Неверный формат введенных данных!\n");
- return;
- }
- int index = 0;
- switch (AddMode)
- {
- case 0:
- {
- MainTable.Rows.Insert(0, 1);
- break;
- }
- case 1:
- {
- index = MainTable.Rows.Add();
- break;
- }
- case 2:
- {
- try
- {
- MainTable.Rows.Insert(Number - 1, 1);
- index = Number - 1;
- }
- catch (Exception)
- {
- MessageBox.Show("Неверный формат!\nВведите целое число больше нуля и меньше " + (elements + 2));
- }
- break;
- }
- }
- MainTable.Rows[index].SetValues(NameOne, NumberOne, TimeOne, NumberLast, group);
- MainTable.Rows[index].Selected = true;
- currentIndex = index;
- changes++;
- int size = MainTable.Rows.Count;
- if (changes > size / 2 && size != 0) SaveDB(false);
- }
- #endregion
- private void вывестиИспорченныеПродуктыToolStripMenuItem_Click(object sender, EventArgs e)
- {
- elements = MainTable.Rows.Count;
- if (elements == 0)
- MessageBox.Show("Записи отсутствуют\nСначала сформируйте базу данных");
- else
- {
- SearchForm f = new SearchForm();
- DialogResult res = f.ShowDialog();
- if (res == DialogResult.OK || res == DialogResult.Cancel)
- SearchElements(f.ToSearch, f.SearchMode);
- }
- }
- private void SearchElements(string ToSearch, int SearchMode)
- {
- if (SearchMode == 0)
- {
- try
- {
- MainTable.Rows[Convert.ToInt32(ToSearch) - 1].Selected = true;
- }
- catch (Exception)
- {
- MessageBox.Show("Неверный формат введенных данных");
- }
- }
- else
- {
- elements = MainTable.Rows.Count;
- bool found = false;
- int i = 0;
- for (; i < elements; i++)
- {
- if (MainTable.Rows[i].Cells[SearchMode - 1].Value.ToString().Contains(ToSearch))
- {
- found = true;
- break;
- }
- }
- if (!found)
- MessageBox.Show("Запись не найдена");
- else
- MainTable.Rows[i].Selected = true;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement