Автоматизированная информационная система "Производственно-коммерческое предприятие"

Тип работы:
Контрольная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Введение

В век развития информационных технологий, потоки информации, циркулирующие в мире, который нас окружает, огромны. Во времени они имеют тенденцию к увеличению. Поэтому в любой организации, как большой, так и маленькой, возникает проблема такой организации управления данными, которая обеспечила бы наиболее эффективную работу. Некоторые организации используют для этого шкафы с папками, но большинство предпочитают компьютеризированные способы — базы данных, позволяющие эффективно хранить, структурировать и систематизировать большие объемы данных. И уже сегодня без баз данных невозможно представить работу большинства финансовых, промышленных, торговых и прочих организаций. Не будь баз данных, они бы просто захлебнулись бы в информационной лавине.

Существует много веских причин перевода существующей информации на компьютерную основу. Сейчас стоимость хранения информации в файлах ЭВМ дешевле, чем на бумаге. Базы данных позволяют хранить, структурировать информацию и извлекать оптимальным для пользователя образом и позволяют сберечь значительные средства, а главное и время для получения необходимой информации, а также упрощают доступ и ведение, поскольку они основываются на комплексной обработке данных и централизации их хранения. Кроме того ЭВМ позволяет хранить любые форматы данных, текст, чертежи, данные в рукописной форме, фотографии, записи голоса и т. д.

Для использования столь огромных объемов хранимой информации, помимо развития системных устройств, средств передачи данных, памяти, необходимы средства обеспечения диалога человек — ЭВМ, которые позволяют пользователю вводить запросы, читать файлы, модифицировать хранимые данные, добавлять новые данные или принимать решения на основании хранимых данных. Для обеспечения этих функций созданы специализированные средства — системы управления базами данных (СУБД). Современные СУБД — многопользовательские системы управления базой данных, которые специализируется на управлении массивом информации одним или множеством одновременно работающих пользователей.

Современные СУБД обеспечивают:

набор средств для поддержки таблиц и отношений между связанными таблицами;

развитый пользовательский интерфейс, который позволяет вводить и модифицировать информацию и представлять информацию в графическом или текстовом режиме;

средства программирования высокого уровня, с помощью которых можно создавать собственные приложения.

1. Описание постановки задачи

1. Отсутствие встроенных компонентов обработки баз данных (только решения с использованием стандартных или создаваемых пользователем функций самого языка С#).

2. Наличие не менее 3-х таблиц.

3. В каждой таблице — не менее 5 полей.

4. Объем базы данных — не менее 5 записей.

5. Данные должны сохраняться на жестком диске в виде текстового файла, читаемого стандартными редакторами.

6. Промежуточное сохранение данных предусмотреть в виде создаваемых пользователями структур или классов.

7. Обязательные функции СУБД: чтение данных из файла, добавление, удаление, редактирование записей с промежуточным сохранением, сохранение окончательной редакции измененных данных в файле.

8. Удобный пользовательский интерфейс (оконные формы, вызываемые одна из другой).

2. Объектная модель программной системы согласно методологии ОМТ (в виде IDEF-диаграмм)

2.1 Анализ требований

программа алгоритм листинг

Разработка АИС «Производственно-коммерческое предприятие» осуществлялась с опорой на платформу NET, в среде Microsoft Visual Studio, на языке программирования C#. Реализована на основе ООП. Все это позволяет наилучшим образом оптимизировать программу и ее работу в операционной системе Windows.

АИС «Производственно-комерческое предприятие» предназначена предоставлять оперативную информацию для руководства фирмы, подготавливать информацию для дальнейшего анализа и др.

Данная АИС должна работать с оперативными данными, накопление этих данных позволит проводить анализ деятельности предприятия за любой период времени. Это является одной из задач внедрения системы, и для успешного достижения её, базы данных в системе сохраняются в виде типизированного файла.

Типизированный файл — это файл, имеющий жесткую структуру. Количество записей при создании файла жестко не фиксируется. Записи могут добавляться или удаляться.

При таком подходе, время, затрачиваемое на получение данных системы, заметно сокращается.

Согласно поставленной задаче данный программный продукт должен обладать рядом свойств и функций таких как: данные должны храниться в текстовом файле; промежуточное хранение данных реализовать в виде структур или классов; чтение данных из файла; удаление и редактирование записей; сохранение данных в файл; удобный оконный пользовательский интерфейс. Исходя из всего вышеизложенного, была спроектирована и реализована данная программная система.

2.2 Предварительное проектирование системы

Для начала необходимо определить таблицы для хранения данных. Определим три таблицы:

«Продукция»

Вид продукции 1;

Вид продукции 2;

Вид продукции 3;

Вид продукции 4;

Вид продукции 5;

Вид продукции 6;

«Персонал» и «Новинки» в каждой из них находится по пять полей. Структуры таблиц можно рассмотреть на рисунках 1,2 и 3 соответственно.

/

/

Рисунок 1 — Таблица «Продукция»

автоматизированная информационная система алгоритм

/

/

Рисунок 2 — Таблица «Персонал»

Рисунок 3 — Таблица «Новинки»

Из полей представленных таблиц будет организована структура данных таблиц.

Для таблиц в проекте будет использовано ООП, которое реализуется через классы (Рисунок 4).

Рисунок 4 — Диаграмма классов

На рисунке 4 представлены классы:

· class BazaInOzy — статический класс. предназначен для хранения загруженной БД в ОЗУ;

· class NatBaza — нужен для создания объекта (переменной) типа NatBaza;

· class NatTable — предназначен для хранения таблиц в памяти, и привязки их к визуальным объектам (DataGridView).

Именно такая диаграмма является оптимальным решением для реализации упорядоченного хранения структур данных.

Следующий шаг проектирования — это проектирование пользовательского интерфейса.

Интерфейс будет состоять из одной формы и пяти панелей, сориентированных на вкладки:

· Главная;

· Продукция;

· Персонал;

· Новинки;

· Наши контакты.

На «Главной» вкладке будет располагаться основная картинка проекта, иллюстрирующая внешний вид приложения.

На вкладках: «Продукция», «Персонал», «Новинки» — будут реализованы соответствующие таблицы для просмотра, редактирования и сохранения текущей информации в типизированный файл. И вкладка «Наши контакты» будет содержать информацию об адресе нашего предприятия.

Всё это схематично представлено на Рисунке 5.

Рисунок 5 — Интерфейс приложения

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 («Адрес: БеловоrnГ. <. rn — ул, Советская 26rn — ВИДЕТЬ ВАС!!!», «Наши контакты», 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_Click2 (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];

}

}

}

Заключение

В данной работе была создана Автоматизированная Информационная Система (АИС) «Производственно-комерческое предприятие», которая смогла бы автоматизировать деятельность, связанную с деятельностью продажи товара. В АИС «ПКП» предусмотрен сбор и внесение всех необходимых данных, которые в дальнейшем будут необходимы для всей работы системы.

Автоматизированная Информационная Система должна выполнять сбор данных, заполнять все необходимые справочники, документы, отчеты и отбор в базе данных, а так же следить за тем, чтобы введенные данные были точны и правильно оформлены.

Когда поступает новая информация, программист заносит все данные в базу данных «ПКП». Разработанная система должна автоматизировать работу супермаркета. Система должна позволять программисту осуществлять проверку необходимых данных, а так же возможность внесения корректировок, просмотр всех данных в базе.

В начале работы была разработана база данных «ПКП», которая, впоследствии, стала приложением, реализованным на C#.

В приложение входят:

справочники, позволяющие редактировать, удалять и сохранять информацию.

ПоказатьСвернуть
Заполнить форму текущей работой