Курсовая. Пояснительная записка. Курсовая работа Расчетнопояснительная записка Дисциплина Программирование и основы алгоритмизации Студент Буков А. А
Скачать 0.76 Mb.
|
ПРИЛОЖЕНИЕ АПрограммный код приложения. Файл Car.cs using System.Drawing; namespace CarsShowroom { public class Car { private int id; // Уникальный номер авто private string make; // Марка авто private string model; // Модель авто private Bitmap photo; // Фото авто private string country; // Страна-производитель авто private int year; // Год выпуска авто private int power; // Мощность двигателя private double price; // Цена авто private string link; // Ссылка на фото public Car() { } // id public int Id { get { return id; } set { id = value; } } // make public string Make { get { return make; } set { make = value; } } // model public string Model { get { return model; } set { model = value; } } // country public string Country { get { return country; } set { country = value; } } // power public int Power { get { return power; } set { power = value; } } // year public int Year { get { return year; } set { year = value; } } // price public double Price { get { return price; } set { price = value; } } // photo public Bitmap Photo { get { return photo; } set { photo = value; } } // link public string Link { get { return link; } set { link = value; } } } } Программный код приложения. Файл Form1.cs using System; using System.Windows.Forms; namespace CarsShowroom { public partial class Form1 : Form { private Form form2 = new Form2(); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { form2.Owner = this; form2.ShowDialog(); Close(); } private void button2_Click(object sender, EventArgs e) { Application.Exit(); } } } Программный код приложения. Файл Form2.cs using Microsoft.VisualBasic; using System; using System.Collections.Generic; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Xml.Serialization; namespace CarsShowroom { public partial class Form2 : Form { private XmlSerializer xmls = new XmlSerializer(typeof(List private string makeToFind = ""; public Form2() { InitializeComponent(); carBindingSource.DataSource = new List id2.Tag = 0; year2.Tag = 1; price2.Tag = 2; } private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { if (dataGridView1.Rows[e.RowIndex].IsNewRow) return; string err = "", s = e.FormattedValue.ToString(); int i; double d; switch (e.ColumnIndex) { // id case 0: // make case 1: if (s == "") err = "Поле \"Марка\" не должно быть пустым"; break; // model case 2: if (s == "") err = "Поле \"Модель\" не должно быть пустым"; break; // country case 3: if (s == "") err = "Поле \"Производитель\" не должно быть пустым"; break; // power case 4: if (!int.TryParse(s, out i)) err = "Строку нельзя преобразовать в число"; else if (i < 0) err = "Отрицательные числа не допускаются"; break; // year case 5: if (!int.TryParse(s, out i)) err = "Строку нельзя преобразовать в число"; else if (i < 0) err = "Отрицательные числа не допускаются"; break; // price case 6: if (!double.TryParse(s, out d)) err = "Строку нельзя преобразовать в число"; else if (d < 0) err = "Отрицательные числа не допускаются"; break; } e.Cancel = err != ""; dataGridView1.Rows[e.RowIndex].ErrorText = err; } private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e) { if (dataGridView1.Rows[e.RowIndex].IsNewRow) return; string err = ""; if (dataGridView1[1, e.RowIndex].Value == null) err = "Поле \"Марка\" должно быть непустым"; e.Cancel = err != ""; dataGridView1.Rows[e.RowIndex].ErrorText = err; } private void SaveData(string name) { int n = dataGridView1.RowCount; for (int i = 0; i < n - 1; i++) { dataGridView1.Rows[i].Cells[7].Value = null; } if (name == "" || dataGridView1.RowCount == 1) return; if (dataGridView1.CurrentRow.IsNewRow) dataGridView1.CurrentCell = dataGridView1[0, dataGridView1.RowCount - 2]; StreamWriter sw = new StreamWriter(name, false, Encoding.Default); xmls.Serialize(sw, carBindingSource.DataSource); sw.Close(); for (int i = 0; i < n - 1; i++) { if (dataGridView1.Rows[i].Cells[8].Value != null) dataGridView1.Rows[i].Cells[7].Value = new Bitmap(dataGridView1.Rows[i].Cells[8].Value + ""); } } private void new1_Click(object sender, EventArgs e) { carBindingSource.DataSource = new List SaveData(saveFileDialog1.FileName); saveFileDialog1.FileName = ""; Text = "CarShop"; dataGridView1.CurrentCell = null; } private void open1_Click(object sender, EventArgs e) { openFileDialog1.FileName = ""; if (openFileDialog1.ShowDialog() == DialogResult.OK) { SaveData(saveFileDialog1.FileName); string s = openFileDialog1.FileName; StreamReader sr = new StreamReader(s, Encoding.Default); carBindingSource.SuspendBinding(); carBindingSource.DataSource = xmls.Deserialize(sr); carBindingSource.ResumeBinding(); sr.Close(); saveFileDialog1.FileName = s; Text = "CarShop - " + Path.GetFileNameWithoutExtension(s); int n = dataGridView1.RowCount; for (int i = 0; i < n - 1; i++) { if (dataGridView1.Rows[i].Cells[8].Value != null) { dataGridView1.Rows[i].Cells[7].Value = new Bitmap(dataGridView1.Rows[i].Cells[8].Value + ""); dataGridView1.Rows[i].Height = new Bitmap(dataGridView1.Rows[i].Cells[8].Value + "").Height; } } } } private void save1_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { string h = saveFileDialog1.FileName; SaveData(h); Text = "Car - " + Path.GetFileNameWithoutExtension(h); } } private void Form2_FormClosing(object sender, FormClosingEventArgs e) { SaveData(saveFileDialog1.FileName); } private void file1_DropDownOpening(object sender, EventArgs e) { save1.Enabled = dataGridView1.RowCount > 1; } public void updateId() { menuStrip1.Enabled = !dataGridView1.IsCurrentCellDirty; int row = dataGridView1.CurrentRow.Index; if (!dataGridView1.IsCurrentCellDirty && (int)dataGridView1["Id1", row].Value == 0) { int maxId = 0; for (int i = 0; i < row; i++) { int v = (int)dataGridView1["Id1", i].Value; if (maxId < v) maxId = v; } dataGridView1["Id1", row].Value = maxId + 1; } } private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e) { updateId(); } private int CompareById(Car a, Car b) { return a.Id - b.Id; } private int CompareByYear(Car a, Car b) { return a.Year.CompareTo(b.Year); } private int CompareByPrice(Car a, Car b) { return a.Price.CompareTo(b.Price); } private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e) { find1.Enabled = bindingNavigatorDeleteItem.Enabled = !dataGridView1.Rows[e.RowIndex].IsNewRow; } private void year2_Click(object sender, EventArgs e) { if (dataGridView1.RowCount == 1) return; dataGridView1.CurrentCell = dataGridView1[0, 0]; Comparison switch ((int)(sender as ToolStripMenuItem).Tag) { case 0: comp = CompareById; break; case 1: comp = CompareByYear; break; case 2: comp = CompareByPrice; break; } (carBindingSource.DataSource as List carBindingSource.ResetBindings(false); } private void find1_Click(object sender, EventArgs e) { makeToFind = Interaction.InputBox("Введите начальную часть производителя авто для поиска:", "Поиск по производителю авто", makeToFind, -1, -1).Trim(); if (makeToFind == "") return; int ind = (carBindingSource.DataSource as List { return a.Country.StartsWith(makeToFind, StringComparison.OrdinalIgnoreCase); }); if (ind != -1) dataGridView1.CurrentCell = dataGridView1[3, ind]; else MessageBox.Show("Производитель авто не найден", "Поиск по производителю авто"); } private void button1_Click_1(object sender, EventArgs e) { OpenFileDialog d = new OpenFileDialog(); if (d.ShowDialog() == System.Windows.Forms.DialogResult.Cancel) return; Image img = Image.FromFile(d.FileName); dataGridView1.CurrentCell.Value = img; dataGridView1.CurrentRow.Cells[8].Value = d.FileName; } private void exit1_Click(object sender, EventArgs e) { Close(); } private void edit1_Click(object sender, EventArgs e) { int position = dataGridView1.CurrentRow.Index; string make = dataGridView1.Rows[position].Cells[1].Value.ToString(); string model = dataGridView1.Rows[position].Cells[2].Value.ToString(); string country = dataGridView1.Rows[position].Cells[3].Value.ToString(); int power = Convert.ToInt16(dataGridView1.Rows[position].Cells[4].Value); int year = Convert.ToInt16(dataGridView1.Rows[position].Cells[5].Value); double price = Convert.ToDouble(dataGridView1.Rows[position].Cells[6].Value); string link = ""; if (dataGridView1.Rows[position].Cells[8].Value != null) link = dataGridView1.Rows[position].Cells[8].Value.ToString(); Form3 form3 = new Form3(this, position, make, model, country, year, power, price, link); form3.Owner = this; form3.ShowDialog(); } } } Программный код приложения. Файл Form3.cs using System; using System.Drawing; using System.Windows.Forms; namespace CarsShowroom { public partial class Form3 : Form { private Form2 form2; private int position; // Позиция в таблице public Form3(Form2 form2, int position) // конструктор для создания записи { InitializeComponent(); Button_Block(); this.form2 = form2; this.position = position; } public Form3 (Form2 form2, int position, string make, string model, string country, int year, int power, double price, string link) // конструктор для редактирования записи { InitializeComponent(); Button_Block(); this.form2 = form2; this.position = position; comboBox1.Text = make; textBox1.Text = model; if (link != "") { pictureBox1.Image = new Bitmap(link); } textBox2.Text = country; textBox3.Text = power.ToString(); numericUpDown1.Value = year; textBox5.Text = price.ToString(); } private void Button_Block() // блокировка кнопки "ОК" { if (!textBox1.Text.Equals("") && !textBox2.Text.Equals("") && !textBox3.Text.Equals("") && !textBox5.Text.Equals("") && !comboBox1.Text.Equals("")) { button2.Enabled = true; } else { button2.Enabled = false; } } private void textBox3_KeyPress(object sender, KeyPressEventArgs e) { if (!Char.IsDigit(e.KeyChar) && e.KeyChar != Convert.ToChar(8)) { e.Handled = true; } } private void button2_Click(object sender, EventArgs e) { this.Hide(); form2.dataGridView1.Rows[position].Cells[1].Value = comboBox1.Text; form2.dataGridView1.Rows[position].Cells[2].Value = textBox1.Text; form2.dataGridView1.Rows[position].Cells[3].Value = textBox2.Text; form2.dataGridView1.Rows[position].Cells[4].Value = textBox3.Text; form2.dataGridView1.Rows[position].Cells[5].Value = numericUpDown1.Value; form2.dataGridView1.Rows[position].Cells[6].Value = textBox5.Text; } private void button1_Click(object sender, EventArgs e) { string path; Bitmap image; //Bitmap для открываемого изображения OpenFileDialog open_dialog = new OpenFileDialog(); //создание диалогового окна для выбора файла open_dialog.Filter = "Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All files (*.*)|*.*"; //формат загружаемого файла if (open_dialog.ShowDialog() == DialogResult.OK) //если в окне была нажата кнопка "ОК" { try { image = new Bitmap(open_dialog.FileName); path = open_dialog.FileName; pictureBox1.Size = image.Size; pictureBox1.Image = image; form2.dataGridView1.Rows[position].Cells[8].Value = path; // ссылка form2.dataGridView1.Rows[position].Cells[7].Value = image; // фото form2.dataGridView1.Rows[position].Height = image.Height; // высота строки } catch { DialogResult rezult = MessageBox.Show("Невозможно открыть выбранный файл", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void comboBox1_TextUpdate(object sender, EventArgs e) { Button_Block(); } private void textBox5_KeyPress(object sender, KeyPressEventArgs e) { if (!Char.IsDigit(e.KeyChar) && e.KeyChar != Convert.ToChar(8) && e.KeyChar != ',') { e.Handled = true; } } private void Form3_FormClosing(object sender, FormClosingEventArgs e) { if (e.CloseReason == CloseReason.UserClosing) { e.Cancel = true; Hide(); } } } } |