Курсовая работа

По дисциплине
«Прикладное программирование»
На тему
«Программный модуль «Книжный магазин»»

ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ

Дисциплина: Прикладное программирование

Тема работы: «Программный модуль «Книжный магазин»»
Вопросы, подлежащие разработке:
1. Постановка задачи
2. Выбор системы программирования
3. Описание процесса проектирования приложения
3.1. Взаимосвязь программных модулей
3.2. Схема работы программы
3.3. Процесс создания интерфейса программы
4. Реализация программных модулей для работы с базой данных
4.1. Добавление данных в таблицу
4.2. Удаление данных из таблицы
4.3. Изменение данных в таблице
4.4. Работа с изображениями
5. Инструкция для пользователя при работе с приложением

ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ 4
ПОСТАНОВКА ЗАДАЧИ 5
ВЫБОР СИСТЕМЫ ПРОГРАММИРОВАНИЯ 6
ОПИСАНИЕ СТРУКТУРЫ ПРИЛОЖЕНИЯ 8
Взаимосвязь программных модулей 8
Схема работы программы 9
Процесс создания интерфейса программы 10
ОПИСАНИЕ ПРОЦЕССА ПРОЕКТИРОВАНИЯ 12
Добавление данных в таблицу 12
Удаление данных из таблицы 13
Изменение данных в таблице 14
Работа с изображениями 15
ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ ДЛЯ РАБОТЫ С ПРИЛОЖЕНИЕМ 17
ЗАКЛЮЧЕНИЕ 20
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 21
ПРИЛОЖЕНИЕ 22

ВВЕДЕНИЕ
Целью курсовой работы является разработка программного обеспечения «Книжный магазин». Предметной областью изучаемого объекта является умение работать с различными математическими моделями и совмещать это с технологией разработки программного обеспечения средствами визуального программирования.
Для разработки программного продукта была использована среда визуального программирования Visual Studio 2015 C#. Развитие информационных технологий позволяет создавать различные приложения с минимальным знанием того или иного языка программирования.
Актуальность программы заключается в том, что программа может быть использована любым магазином занимающимся продажей различных книг. Программа лишена громоздкости, наделена простотой и выполняет свою прямую функцию – учёт товара, а именно книг.
Программный модуль «Книжный магазин» создан посредством визуального программирования, с использованием различных классов и объектов в среде разработки.
Объект – структура данных, содержащая описание свойств внешнего объекта программирования. В данном приложении при его создании использовались различные объекты.
Класс – тип данных, определяемый программистом, объект –переменная класса. Класс – это абстрактный тип данных. С помощью класса описывается некоторая сущность (ее характеристики и возможные действия).
ПОСТАНОВКА ЗАДАЧИ
Программный модуль «Книжный магазин» должен соответствовать следующему набору функций:
• Добавление в список различных книг
• Внесение изменений в ранее сохраненные данные
• Удаление из списка ненужных данных
• Надежное хранение данных в специальном файле, а именно в базе данных типа Access

В качестве входной информации будут использованы данные, получаемые с клавиатуры – автор, название книги, тираж, год выпуска и цена. Все данные будут вводится о объект типа textBox. Также на форме присутствуют кнопки для различных манипуляций с введенными данными – сохранение данных, повторный ввод, отмена ввода и изменение ранее введенных данных.
Выходные данные выводится в таблицу типа dataGredView. Все данные рассортированы по столбцам таблицы и могут быть изменены или удалены по необходимости. Все выходные данные хранятся в отдельном файле базы данных типа Access. Без данного программного обеспечения на ПК сохранение в базу данных будет невозможно.

ВЫБОР СИСТЕМЫ ПРОГРАММИРОВАНИЯ
Для разработки программного модуля «Книжный магазин» была использована Visual Studio 2015 C#.
Программа построена при помощи визуального расположения объектов, а также задания их поведения, функций и реализации с помощью встроенных в программу «Visual Studio 2015 C#» скриптов. Скрипты создаются посредством языка программирования C#. Каждый скрипт представлен в виде отдельного модуля программы и отвечающий за определенную функцию в приложении.
Visual Studio 2015 C# — объектно-ориентированный язык программирования. Visual Studio относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.
C# предоставляет множество операторов, которые являются символами, указывающими, какие операции (математические операции, индексирование, вызов функции и т. д.) следует выполнять в выражении. Вы можете перегрузить многие операторы, чтобы изменить их значение при применении к определяемому пользователем типу.
Язык программирования C# безопасный объектно-ориентированный язык, предназначенный для разработки разнообразных безопасных и мощных приложений, выполняемых в среде .NET Framework. С помощью языка C# можно создавать обычные приложения Windows,
XML-веб-службы, распределенные компоненты, приложения «клиент-сервер», приложения баз данных. Visual C# предоставляет развитый редактор кода, конструкторы с удобным пользовательским интерфейсом, встроенный отладчик и множество других средств, упрощающих разработку приложений на базе языка C# и .NET Framework.
Приложения создаются на языке визуального программирования, и непосредственно при помощи знания синтаксиса языка Visual Studio 2015 C#.
Таким образом создание программного модуля «Книжный магазин» в данной среде визуального программирования упирается лишь в знания синтаксиса языка, который является достаточно простым, а сама система программы достаточно интеллектуальна, что позволяет создавать приложения с необходимыми разработчику параметрами, учитывая различные требования при разработке.

ОПИСАНИЕ СТРУКТУРЫ ПРИЛОЖЕНИЯ
Взаимосвязь программных модулей

Задача создания программного модуля «Книжный магазин» была реализована посредством одного основного программного модуля, в который были включены следующие задачи:
• Добавление и удаление персональных данных о книге – автор, название, год выпуска, тираж, цена
• Работа с изображениями
• Информирование о работе с базой данных
• Защита от ввода некорректных данных.
Программа состоит из одного класса, который выполняет функции:
Ввод и сохранение данных – данные вводятся с клавиатуры и сохраняются в ранее созданную базу данных Access. Хранятся данные в базе данных, а отображаются посредством созданного программного модуля. Файл приложения и базы данных должны находится в одной папке на компьютере для корректной работы приложения. Также необходимо предустановленное ПО MS Access на компьютере, на котором запускается приложение.
Работа с изображениями – изображение вводится посредством выбора его с ПК и хранится в базе данных с соответствующей ему записью. Отображение осуществляется через созданный программный модуль.
Информационные сообщения – выводятся на экран пользователя при его некорректных действиях.

Схема работы программы

Рисунок 1 — диаграмма классов приложения

Процесс создания интерфейса программы

Все компоненты и функции программы были реализованы и размещены на одной форме за ненадобностью других.
Форма содержит на себе текстовые поля для ввода данных, таблицу с данными, надписи к текстовым полям, капсулу для вывода изображения, кнопки управления – добавление записи, редактирование, сохранение и отмена. Все объекты реализованы с помощью следующих компонентов:
• компонент-таблица «DataGridView» для вывода информации в форме базы данных. Таблица содержит 6 основных столбцов: автор, название, год выпуска, тираж, цена и место для хранения изображения.
• Компонент panel содержащий в себе надписи к текстовым полям и сами поля textBox — компоненты для изменения или ввода в них новых данных, в количестве 5 штук, отвечающие за ввод автора, названия, года выпуска, тиража и цены. Также на панели находится объект вывода изображения PictureBox и кнопка для добавления этого изображения
• На форме справа от панели располагаются кнопки типа button, отвечающие за основные управляющие функции в программе. Кнопка «Добавить книгу№ – отвечает за создание новой записи. Кнопка «Сохранить запись» — отвечает за сохранение созданной записи, или записи после ее редактирования. Кнопка «Редактировать запись» — открывает ранее созданную запись и позполяет внести в нее различные изменения. Кнопка «Отмена» — нужна для отмены действия редактирования или создания новой записи.
• label — компоненты, использующиеся для обозначения различных элементов на форме, чтоб было понятно, за что отвечает тот или иной компонент, в данном случае были обозначены текстовые поля.
ОПИСАНИЕ ПРОЦЕССА ПРОЕКТИРОВАНИЯ
Добавление данных в таблицу

Добавление данных реализовано посредством обработчика события «Click» по кнопке «Добавить запись». При нажатии на данную кнопку программы будет вызвана функция panel.Enabld = true и NewRows, которая отвечает за активацию панели и создание новой строки в таблице. На панели расположились элементы для добавления записи в таблицу. Также направляется фокус на первое текстовое поле на форме – Автор(txtAvtor.focus()). После ее обработки программа делает активными компоненты для ввода данных о книге.
Если данные введены не корректно, то невозможно будет перейти на следующее поле для продолжения заполнения данных.
После того как пользователь правильно заполнит все необходимые поля, можно сохранить данные нажав на соответствующую кнопку или нажать кнопку Отмена, для того чтобы введенные данные не были занесены в таблицу.

Рисунок 2 — код функции добавления записи

Рисунок 3 – активная панель добавления записи

Рисунок 4 – отказ в переходе при некорректном вводе

Удаление данных из таблицы

Удаление персональных данных реализовано с помощью обработчика события KeyDown, это значит чтобы удалить запись в таблице(и соответственно в базе данных) можно только посредством клавиатуры. Изначально необходимо выделить запись в таблице, а после нажать клавишу Delete на клавиатуре. Появится информационное сообщение с запросом об удалении записи, в котором можно либо согласится на удаление, либо отказаться от него.

Рисунок 5 – код функции удаления

Рисунок 6 – информационный запрос об удалении

Изменение данных в таблице

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

Рисунок 7- код функции изменения данных

Рисунок 8 — редактирование записи

Если нажать кнопку отменить, то все поля снова станут неактивными и доступными только после повторной активации нужной записи и нажатия на кнопку редактирования записи.

Рисунок 9 – отмена редактирования

Работа с изображениями

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

Рисунок 10 – функция добавления изображения

Рисунок 11 – открытая файловая система пользователя

ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ ДЛЯ РАБОТЫ С ПРИЛОЖЕНИЕМ
Вся информация и записи, созданные в программном модуле, хранятся в базе данных типа Access. Поэтому для начала необходимо установить на компьютер MS Access, без чего приложение работать не будет.
Если MS Access был установлен, необходимо exe-файл программы и базы данных поместить в одну и ту же рабочую папку.

Рисунок 12 — exe-файл и база данных

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

Рисунок 13 – добавление записи

Рисунок 14 – правильно заполненные поля

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

Рисунок 15 – новая запись

У данной записи отсутствует изображение. Его можно было добавить изначально, но также его можно добавить посредством редактирования записи. Для начала необходимо выбрать нужную для редактирования запись и после этого нажать кнопку «Редактировать запись». После этого можно прикрепить изображение, и, если нужно, изменить данные текстовых полей.

Рисунок 16 – прикрепленное изображение

После нажатия кнопки «Сохранить запись» у измененной записи появится миниатюра загруженного изображения и обновятся прочие поля, если они тоже были изменены.

Рисунок 17 – обновленная запись

Если созданная запись больше не нужна, или любая другая запись потеряла свою актуальность, удалить запись можно выбелив её и нажав клавишу Delete на клавиатуре. После этого появится запрос на удаление записи.

Рисунок 18 – запрос на удаление записи
ЗАКЛЮЧЕНИЕ
В ходе выполнения курсовой работы были получены навыки работы с различными компонентами Visual Studio C# 2015, а именно: «Button» — кнопка, «DataGridView» – элемент вывода таблицы посредством базы данных, «Label» — надписи, «TextBox» – поля для ввода данных, «Panel» – структурирование объектов. Были получены навыки по связыванию программы с базой данных. Был решен основной список поставленных проблем.
Список основных решённых проблем:
• Добавления изображения в PictureBox посредством использования файловой системы компьютера, на котором запущенно приложение.
• Хранение записей в базе данных, запись конкретных данных в свои поля используя внешнюю заполненную под программу базу данных на основе MS Access.
• Удаление данных. Для удаления данных из таблицы, была прописана функция удаления любой записи выделив ее и нажав на клавишу Delete.
• Изменение данных. Для изменения данных была использована простая панель со всеми необходимыми элементами для изменения данных в таблице.
• Сохранение записи. Было реализовано сохранение записи не только в таблице приложения, но и в дополнительном файле базы данных хранящимся вместе с приложением и возможностью его изменения.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
• Подбельский В.В. Язык C#. Базовый курс. 2-е издание.
• Стиллмен Э., Грин Д. Изучаем C#. 3-е издание.
• Бобровский С.И. «Visual studio. Учебный курс». 2008г. С.736;
• Климова Л.М. «Visual studio C#. Основы программирования. Решение типовых задач». 2006г. С.480;
• Галиев Г.В. «программирование в среде Visual studio C#. Самоучитель». 2004г. С.288;
• https://social.msdn.microsoft.com/Forums/ru-RU/d18aae02-78a9-4531-b583-dcf767061e7b информация по компонентам среды разработки Visual Studio Windows Forms C#.
• https://msdn.microsoft.com/ru-ru/library/ сведения о языке Visual Studio C#.

ПРИЛОЖЕНИЕ

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BookShop
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void panel1_Paint(object sender, PaintEventArgs e)
{
panel.Enabled = true;

}

private void txtPoisk_KeyPress(object sender, KeyPressEventArgs e)
{

}

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)
{
if (MessageBox.Show(«Вы уверены, что хотите
удалить эту запись?», «», MessageBoxButtons.YesNo, MessageBoxIcon.Question)==DialogResult.Yes);
shopBindingSource.RemoveCurrent();

}
}

private void btnImaje_Click(object sender, EventArgs e)
{
try
{
using(OpenFileDialog ofd=new OpenFileDialog()

{Filter=»JPEG|*.jpg», ValidateNames=true,Multiselect=false })

{
if (ofd.ShowDialog() == DialogResult.OK)
pictureBox1.Image = Image.FromFile(ofd.FileName);

}
}

catch (Exception ex)
{
MessageBox.Show(«Ошибка!»);

}
}

private void btbNew_Click(object sender, EventArgs e)
{
try
{
panel.Enabled = true;
txtAvtor.Focus();
this.appData.Shop.AddShopRow(this.appData.Shop.NewShopRow());
shopBindingSource.MoveLast();
}
catch (Exception ex)
{
MessageBox.Show(«Ошибка!»);
shopBindingSource.ResetBindings(false);
}
}

private void btnRedak_Click(object sender, EventArgs e)
{
panel.Enabled = true;
txtAvtor.Focus();
}

private void btnOtmena_Click(object sender, EventArgs e)
{
panel.Enabled = false;
shopBindingSource.ResetBindings(false);
}

private void btnSave_Click(object sender, EventArgs e)
{
try
{
shopBindingSource.EndEdit();
shopTableAdapter.Update(this.appData.Shop);
panel.Enabled = false;
}
catch(Exception ex)
{
MessageBox.Show(«Ошибка!»);
shopBindingSource.ResetBindings(false);
}
}

private void Form1_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу «appData.Shop». При необходимости она может быть перемещена или удалена.
this.shopTableAdapter.Fill(this.appData.Shop);
shopBindingSource.DataSource = this.appData.Shop;

}
}
}
namespace BookShop
{
partial class Form1
{
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Код, автоматически созданный конструктором форм Windows

private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.panel = new System.Windows.Forms.Panel();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.shopBindingSource = new System.Windows.Forms.BindingSource(this.components);
this.appData = new BookShop.AppData();
this.txtCena = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.TxtTiraj = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.txtGod = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.txtNazv = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.txtAvtor = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.btnImaje = new System.Windows.Forms.Button();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.идентификаторDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.авторDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.названиеDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.годвыпускаDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.тиражDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ценаDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.изображениеDataGridViewImageColumn = new System.Windows.Forms.DataGridViewImageColumn();
this.btnSave = new System.Windows.Forms.Button();
this.btnOtmena = new System.Windows.Forms.Button();
this.btnRedak = new System.Windows.Forms.Button();
this.btbNew = new System.Windows.Forms.Button();
this.shopTableAdapter = new BookShop.AppDataTableAdapters.ShopTableAdapter();
this.panel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.shopBindingSource)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.appData)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.SuspendLayout();
//
// panel
//
this.panel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel.Controls.Add(this.pictureBox1);
this.panel.Controls.Add(this.txtCena);
this.panel.Controls.Add(this.label5);
this.panel.Controls.Add(this.TxtTiraj);
this.panel.Controls.Add(this.label4);
this.panel.Controls.Add(this.txtGod);
this.panel.Controls.Add(this.label3);
this.panel.Controls.Add(this.txtNazv);
this.panel.Controls.Add(this.label2);
this.panel.Controls.Add(this.txtAvtor);
this.panel.Controls.Add(this.label1);
this.panel.Controls.Add(this.btnImaje);
this.panel.Enabled = false;
this.panel.Location = new System.Drawing.Point(12, 11);
this.panel.Name = «panel»;
this.panel.Size = new System.Drawing.Size(670, 234);
this.panel.TabIndex = 0;
this.panel.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint);
//
// pictureBox1
//
this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pictureBox1.DataBindings.Add(new System.Windows.Forms.Binding(«Image», this.shopBindingSource, «Изображение», true));
this.pictureBox1.Location = new System.Drawing.Point(4, 3);
this.pictureBox1.Name = «pictureBox1»;
this.pictureBox1.Size = new System.Drawing.Size(159, 186);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 10;
this.pictureBox1.TabStop = false;
//
// shopBindingSource
//
this.shopBindingSource.DataMember = «Shop»;
this.shopBindingSource.DataSource = this.appData;
//
// appData
//
this.appData.DataSetName = «AppData»;
this.appData.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
//
// txtCena
//
this.txtCena.DataBindings.Add(new System.Windows.Forms.Binding(«Text», this.shopBindingSource, «Цена», true));
this.txtCena.Font = new System.Drawing.Font(«Times New Roman», 13.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.txtCena.Location = new System.Drawing.Point(346, 178);
this.txtCena.Name = «txtCena»;
this.txtCena.Size = new System.Drawing.Size(319, 34);
this.txtCena.TabIndex = 5;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Font = new System.Drawing.Font(«Times New Roman», 13.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.label5.Location = new System.Drawing.Point(191, 181);
this.label5.Name = «label5»;
this.label5.Size = new System.Drawing.Size(64, 27);
this.label5.TabIndex = 9;
this.label5.Text = «Цена»;
//
// TxtTiraj
//
this.TxtTiraj.DataBindings.Add(new System.Windows.Forms.Binding(«Text», this.shopBindingSource, «Тираж», true));
this.TxtTiraj.Font = new System.Drawing.Font(«Times New Roman», 13.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.TxtTiraj.Location = new System.Drawing.Point(346, 138);
this.TxtTiraj.Name = «TxtTiraj»;
this.TxtTiraj.Size = new System.Drawing.Size(319, 34);
this.TxtTiraj.TabIndex = 4;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Font = new System.Drawing.Font(«Times New Roman», 13.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.label4.Location = new System.Drawing.Point(191, 141);
this.label4.Name = «label4»;
this.label4.Size = new System.Drawing.Size(126, 27);
this.label4.TabIndex = 7;
this.label4.Text = «Тираж(шт.)»;
}
}
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *