Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовик а.rtf
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.84 Mб
Скачать

3. Описание алгоритмов обработки данных (блок-схема алгоритма)

Основные алгоритмы обработки данных, требующие внимания, в этом программном продукте реализованы двумя функциями:

  • сохранение базы в файл;

  • загрузка базы из файла.

Словесное описание алгоритма сохранения базы в файл:

  1. Выбираем соответствующую вкладку.

  2. Редактируем таблицу;

  3. Сохраняем данные в файл, путем нажатия на кнопку "Сохранить изменения".

Словесное описание алгоритма загрузки базы из файла:

  1. Загрузка файла осуществляется автоматически при выборе соответствующей таблицы.

  2. Редактируем таблицу.

  3. Закрываем файл.

Непосредственно с реализацией алгоритмов можно ознакомиться в представленном полном листинге программы (Раздел 4).

  • Основная форма: файл "Form1. cs”, "Form1. Designer. cs”;

  • Реализация классов: файл "Classes. cs”;

  • Типизированный файл: "Base”

4. Реализация системы на языке с# (листинг программы с комментариями)

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;

namespace PKP

{

public partial class PKP_Form: Form

{

Public PKP_Form ()

{

InitializeComponent ();

}

private void главнаяToolStripMenuItem_Click (object sender, EventArgs e)

{

panel1. Visible = true;

panel2. Visible = false;

panel3. Visible = false;

panel4. Visible = false;

panel5. Visible = false;

}

private void продукцияToolStripMenuItem_Click (object sender, EventArgs e)

{

panel1. Visible = false;

panel2. Visible = true;

panel3. Visible = false;

panel4. Visible = false;

panel5. Visible = false;

}

private void персоналToolStripMenuItem_Click (object sender, EventArgs e)

{

panel1. Visible = false;

panel2. Visible = false;

panel3. Visible = true;

panel4. Visible = false;

panel5. Visible = false;

BazaInOzy. my_db. tables [6]. LoadTableFromOzy (dataGridView2);

}

private void нашиКонтактыToolStripMenuItem_Click (object sender, EventArgs e)

{

panel1. Visible = false;

panel2. Visible = false;

panel3. Visible = false;

panel4. Visible = true;

panel5. Visible = false;

MessageBox. Show (" Адрес: Белово\r\nГ.<. \r\n - ул,Советская 26\r\n - ВИДЕТЬ ВАС!!!", "Наши контакты", MessageBoxButtons. OK, MessageBoxIcon. Information);

}

private void Form1_Load (object sender, EventArgs e)

{

// BazaInOzy. my_db. create_shema ();

BazaInOzy. my_db. LoadBaseFromInputFile ();

this. dataGridView1. RowCount = 5;

this. dataGridView1. ColumnCount = 5;

this.comboBox1. Items. Clear ();

foreach (NatTable d in BazaInOzy. my_db. tables)

{

if ( (d. table_name! ="Персонал") && (d. table_name! ="Новинки"))

{this.comboBox1. Items. Add (d. table_name); }

}

this. dataGridView1. Columns [1]. HeaderCell. Value = "Модель";

this. dataGridView1. Columns [2]. HeaderCell. Value = "Характеристики";

this. dataGridView1. Columns [3]. HeaderCell. Value = "Цена";

this. dataGridView1. Columns [4]. HeaderCell. Value = "Наличие";

panel1. Visible = true; // Реализация видимости панелей

panel2. Visible = false;

panel3. Visible = false;

panel4. Visible = false;

panel5. Visible = false;

comboBox1. SelectedIndex = 0;

BazaInOzy. my_db. tables [0]. LoadTableFromOzy (dataGridView1);

panel1. Size = this. Size;

panel1. Left = 0;

panel1. Top = menuStrip1. Height;

pictureBox1. Parent = panel1;

pictureBox1. Size = this. Size;

panel2. Size = this. Size;

panel2. Left = 0;

panel2. Top = menuStrip1. Height;

panel3. Size = this. Size;

panel3. Left = 0;

panel3. Top = menuStrip1. Height;

panel4. Size = this. Size;

panel4. Left = 0;

panel4. Top = menuStrip1. Height;

panel5. Left = 0;

panel5. Top = menuStrip1. Height;

panel5. Size = this. Size;

dataGridView1. AdvancedRowHeadersBorderStyle. Bottom = DataGridViewAdvancedCellBorderStyle. Single;

}

private void comboBox1_SelectedIndexChanged (object sender, EventArgs e)

{

BazaInOzy. source_table = comboBox1. SelectedText;

BazaInOzy. TableNumber = comboBox1. SelectedIndex;

foreach (NatTable d in BazaInOzy. my_db. tables) { if (d. table_name == BazaInOzy. source_table) { BazaInOzy. TableNumber = d. table_number - 1; } }

BazaInOzy. my_db. tables [BazaInOzy. TableNumber]. LoadTableFromOzy (this. dataGridView1);

}

private void button1_Click (object sender, EventArgs e)

{ BazaInOzy. my_db. tables [BazaInOzy. TableNumber]. SaveTableInOzy (this. dataGridView1);

BazaInOzy. my_db. SaveBaseInOutputFile ();

}

private void button3_Click_2 (object sender, EventArgs e)

{

BazaInOzy. my_db. tables [7]. SaveTableInOzy (dataGridView3);

BazaInOzy. my_db. SaveBaseInOutputFile ();

}

private void новинкиToolStripMenuItem_Click (object sender, EventArgs e)

{

panel1. Visible = false;

panel2. Visible = false;

panel3. Visible = false;

panel4. Visible = false;

panel5. Visible = true;

BazaInOzy. my_db. tables [7]. LoadTableFromOzy (dataGridView3);

}

private void button4_Click (object sender, EventArgs e)

{

BazaInOzy. my_db. tables [6]. SaveTableInOzy (this. dataGridView2);

BazaInOzy. my_db. SaveBaseInOutputFile ();

}

private void panel3_Paint (object sender, PaintEventArgs e)

{

}

private void pictureBox1_Click (object sender, EventArgs e)

{

}

}

}

// Классы

using System;

using System. Collections. Generic;

using System. Linq;

using System. Text;

using System. Data;

using System. IO;

using System.runtime. Serialization. Formatters. Binary;

using System. Windows. Forms;

namespace PKP

{

public static class BazaInOzy

{

public static int TableNumber = 0; // номер текущей выбранной таблицы

public static string source_table = ""; // имя выбранной таблицы

public static NatBaza my_db = new NatBaza (5); // свойство, непосредственно // переменная для хранения базы данных в ОЗУ, инициализирована конструктором с // аргументом 5 (создается сразу пять таблиц)

} // статический класс. предназначен для хранения загруженной БД в ОЗУ.

[Serializable] // атрибут Serializable означает, что объект нижеописанного типа можно

// будет разбить на поток байтов и запихать в типизированный файл.

public class NatBaza // класс для хранения БД в памяти. Содержит методы (функции) для сохранения и загрузки БД на жёсткий диск

{

public NatTable [] tables; // свойство, массив таблиц NatTable в памяти

public NatBaza (int j) // конструктор класса, нужен для создания объекта (переменной) типа NatBaza

{

tables = new NatTable [8];

for (int i = 0; i < j; i++) { tables [i] = new NatTable ("", 5, i,

5); }

}

public void SaveBaseInOutputFile ()

{

FileStream f = new FileStream (@"Base. Nat", FileMode. Open, FileAccess. ReadWrite);

BinaryFormatter b = new BinaryFormatter ();

b. Serialize (f, this);

f. Close ();

} // метод сохраняет БД из памяти на жесткий диск

public void LoadBaseFromInputFile ()

{

FileStream f = new FileStream (@"Base. Nat", FileMode. Open, FileAccess. ReadWrite);

BinaryFormatter b = new BinaryFormatter ();

BazaInOzy. my_db = (NatBaza) b. Deserialize (f);

f. Close ();

} // метод загружает БД из файла в ОЗУ

public void create_shema ()

{

BazaInOzy. my_db = new NatBaza (8);

for (int i = 0; i < 8; i++)

{ BazaInOzy. my_db. tables [i] = new NatTable ("", 5, 0,10); }

for (int i = 0; i < 8; i++)

{

}

BazaInOzy. my_db. tables [0]. table_name = "Вид продукции 1 ";

BazaInOzy. my_db. tables [1]. table_name = " Вид продукции 2 ";

BazaInOzy. my_db. tables [2]. table_name = " Вид продукции 3";

BazaInOzy. my_db. tables [3]. table_name = " Вид продукции 4";

BazaInOzy. my_db. tables [4]. table_name = " Вид продукции 5";

BazaInOzy. my_db. tables [5]. table_name = " Вид продукции 6";

BazaInOzy. my_db. tables [6]. table_name = "Персонал";

BazaInOzy. my_db. tables [7]. table_name = "Новинки";

BazaInOzy. my_db. SaveBaseInOutputFile ();

} // Дополнительный метод создаёт схему БД

}

[Serializable]

public class NatTable // класс, аналог DataTable, предназначен для хранения таблиц в памяти, и привязки их к визуальным объектам (DataGridView)

{

public string table_name; // имя выбранной таблицы

public int table_number; // её номер

public string [] FieldName; // массив. содержит заголовки столбцов

public int rows_count; // количество строк

public int columns_count; // количество столбцов

public object [,] table; // массив обжектов (собственно таблица)

public NatTable (string table_name, int fields_count, int table_number, int row_count)

// конструктор создаёт объект NatTable

{

this. table_number = table_number;

this. table_name = table_name;

FieldName = new string [fields_count];

rows_count = row_count;

columns_count = fields_count;

this. table = new object [rows_count, columns_count];

}

public void SaveTableInOzy (DataGridView d)

{

table = new object [d. Rows. Count,d. Columns. Count];

FieldName = new string [d. Columns. Count];

this. rows_count = d. RowCount;

this. columns_count = d. ColumnCount;

for (int i = 0; i < d. Rows. Count; i++)

{

for (int j = 0; j < d. Columns. Count; j++)

{

this. table [i, j] = d. Rows [i]. Cells [j]. Value;

}

}

} // метод сохраняет результаты промежуточного изменения таблицы в ОЗУ

public void LoadTableFromOzy (DataGridView d) // метод. загружает таблицу в DataGridView

{

d. RowCount = BazaInOzy. my_db. tables [BazaInOzy. TableNumber]. rows_count;

d. ColumnCount = BazaInOzy. my_db. tables [BazaInOzy. TableNumber]. columns_count;

for (int i = 0; i < d. Rows. Count; i++)

{

for (int j = 0; j < d. Columns. Count; j++)

{

d. Rows [i]. Cells [j]. Value=this. table [i, j];

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]