Календарный график работы над проектом на весь период проектирования
УТВЕРЖДАЮ
Зав. кафедрой
_______________ Курмашёв В.И.
“___”_______2012 года
ЗАДАНИЕ
На курсовое проектирование
Студенту Гриманову Дмитрию Владимировичу гр. 91201с
1. Тема проекта______ «Железнодорожная касса»_______________________
2. Срок сдачи студентом оконченного проекта______07.05.2012_________
Исходные данные к проекту
Общие требования.Приложение должно быть выполнено в архитектуре клиент-сервер на объектно-ориентированном языке. В рамках работы должны быть использованы следующие техники: разработка и использование собственной иерархии классов, расширение базовых классов предоставляемых SDK, реализовать заданный паттерн проектирования, использовать сокрытие данных (инкапсуляция), перегрузка методов, переопределение методов, параметризированные классы(шаблоны), сериализация, абстрактные типы данных(интерфейсы, абстрактные классы), передача параметров по ссылке и по значению, статические методы, обработка исключительных ситуаций.
Бизнес-логика. Бизнес-логика системы должна быть реализована только на серверной части приложения. На сервере должна быть предусмотрена возможность параллельной обработки запросов. Доступ к данным в СУБД должен осуществляться через драйвер, предоставляемый производителем СУБД. База данных должна быть приведена к 3-ей нормальной форме. Функционал серверной части должен составлять не менее 10 Use Case’ов.
Транспортный уровень.Взаимодействие между серверной и клиентскими частями должно осуществляется по выбору либо с использованием сокетов и протокола TCP/IP (причём по сети необходимо пересылать объекты (пользовательские), а не строки).
Требования к поставке.
Разработанная система должна обладать следующей инфраструктурой:
- СУБД (на выбор) – Sybase SQL 9.0, MS SQL 2005, MySql 5.1;
- Операционная система Windows XP SP3;
Интерфейс программы и данные должны быть только на русском (белорусском) языке.
Перечень используемых стандартов:
IDEF0, IDEF1.X, UML 2.0 и выше, ГОСТЫ 19001–19701 (оформление блок-схем, требования к руководству пользователя).
Перечень рекомендуемой литературы:
1. UML. Классика CS. 2-у изд./Пер. с англ.; Под общей редакцией проф. С.Орлова - СПб.: Питер, 2006. - 736 с.: ил.
2. Фаулер М. Архитектура корпоративных программных приложений.: Пер. с англ. - М.: Издательский дом "Вильямс", 2006. - 544с.: ил. - Парал. тит. англ.
3. Басс Л., Клементс П., Кацман Р. Архитектура программного обеспечения на практике. 2-е издание. - СПб.: Питер, 2006. - 575 с.: ил.
Содержание расчетно-пояснительной записки (перечисление вопросов, которые подлежат рассмотрению)
Введение (с указанием цели и основных задач для её достижения). 1. Описание предметной области (включая IDEF0, декомпозицию необходимо выполнять до выделения элементарных функций. Функциональная модель должна быть связана с информационной.) и определение требований к системе с точки зрения предметной области. 2. Постановка задачи и обзор методов её решения. 3. Модели представления системы и их описание. 4. Информационная модель системы и её описание (с доказательством приведения ее к 3-ей нормальной форме). 5. Обоснование оригинальных решений по использованию технических и программных средств, не включенных в требования (не обязательный раздел). 6. Описание алгоритмов реализующих бизнес-логику серверной части проектируемой системы. 7. Руководство пользователя. 8.Результаты тестирования разработанной системы и оценка выполнения задач. Выводы и заключения. Литература. Приложения.
5. Перечисление графического материала (с подробным описанием обязательных чертежей и графиков)
Функциональная модель процессов предметной области (IDEF0). Диаграмма Вариантов использования (Use Case). Диаграммы состояний (Statechart). Диаграмма последовательностей (Sequence diagram). Диаграммы классов. Диаграммы компонентов (component diagram). Диаграмма развертывания (deployment diagram). Информационная модель. Блок-схемы алгоритмов, реализующих бизнес-логику. Листинг алгоритмов реализующих бизнес-логику. Листинг основных элементов программы. Листинг скрипта генерации базы данных.
6. Дата выдачи заданния________________25.02.2012___________________
РЕФЕРАТ
курсового проекта Гриманова Д.В.
«Железнодорожная касса»
Объём работы 35 с., в том числе 12 рис., 3 наим. лит., 2 приложения.
Ключевые слова: тип данных, оператор, метод класса, база данных, символьная строка, Windows Form, MS Visual С#, запрос MS SQL.
В курсовом проекте разрабатывается программное приложение для железнодорожного вокзала, которое включает в себя следующие этапы: постановка задачи и обзор методов её решения; разработка модели представления системы; разработка информационной модели системы; построение и описание алгоритмов реализующих бизнес-логику программы; составление руководства пользователю; тестирование программы.
Кроме того, реализованы аспекты проектирования пользовательского интерфейса с использованием Windows Forms:
1) Визуальное проектирование диалогового окна с использованием кнопок, текстовых полей, меток, списка;
2) Назначение обработчиков событий элементам интерфейса – кнопкам и списку, а также самому диалоговому окну (инициализация диалога);
ОГЛАВЛЕНИЕ
Введение.............................................................................................................................. 7
1 Описание предметной области и определение требований к системе с точки зрения предметной области..................... 9
2 ПОСТАНОВКА ЗАДАЧИ И ОБЗОР МЕТОДОВ ЕЁ РЕШЕНИЯ........ 14
3 МОДЕЛИ ПРЕДСТАВЛЕНИЯ СИСТЕМЫ И ИХ ОПИСАНИЕ........ 15
ВВЕДЕНИЕ
Современный период развития цивилизованного общества характеризует процесс информатизации. Информатизация общества — это глобальный социальный процесс, особенность которого состоит в том, что доминирующим видом деятельности в сфере общественного производства является сбор, накопление, продуцирование, обработка, хранение, передача и использование информации, осуществляемые на основе современных средств микропроцессорной и вычислительной техники, а также на базе разнообразных средств информационного обмена и программирования.
Цель курсового проекта: разработать программное обеспечение для пользователя, позволяющее автоматизировать ввод и обработку данных, облегчить контроль и учет заказов «Железнодорожной кассы».
Для достижения цели курсового проекта необходимо решить следующие задачи:
· спроектировать и реализовать структуру базы данных;
· спроектировать и реализовать функциональную модель системы;
· разработать алгоритм работы приложения в соответствии с требованиями и функциональной моделью системы;
· разработать и реализовать удобный пользовательский графический интерфейс, а также его компоненты;
· реализовать метод представления (отображения) данных, поиск данных, их фильтрацию, ввод, редактирование и удаление;
· спроектировать и реализовать формы для ввода и редактирования данных, проверку корректности вводимых данных;
· реализовать разграничение прав пользователей, путем назначения им уровней доступа и используя их при проектировании пользовательского графического интерфейса.
ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ И ОПРЕДЕЛЕНИЕ ТРЕБОВАНИЙ К СИСТЕМЕ С ТОЧКИ ЗРЕНИЯ ПРЕДМЕТНОЙ ОБЛАСТИ
Предметная область - множество всех предметов, свойства которых и отношения между которыми рассматриваются в научной теории. Например, предметная область в зоологии служит множество животных, в теории чисел - натуральный ряд чисел, в логике - предполагаемая область возможных значений предметных переменных логического языка. Предметная область, соединяющая в единство разнотипные объекты, изучаемые в какой теории, являет собой логическую абстракцию.
Следует заметить, что в настоящее время отсутствует общепризнанное формальное определение понятия предметной области. К сожалению, отсутствует и ее содержательное определение. Принято считать, что понятие предметной области не может быть формализовано как первичное понятие. Отсутствие конструктивного определения понятия предметной области существенно сдерживает развитие математической теории информационных систем и информационных технологий.
Рассмотрим аналоговое программное приложение: программный продукт «АСУ Экспресс-3» (рисунок 1.1).
Рисунок 1.1 – Программный продукт «АСУ Экспресс-3»
АСУ «Экспресс» — автоматизированная система управления резервированием мест и билетно-кассовыми операциями, предназначенная для бронирования мест в поездах дальнего следования. «Экспресс-3» — с 2005 г. по настоящее время. Платформа: AlphaServer 1200. Вычислительная сеть по обслуживанию пассажиров для автоматизации продажи билетов и резервирования мест в поездах и оперативного управления пассажирскими перевозками со сроком резервирования от 45 дней до отправления поезда. Система действует на территории РФ, СНГ, Латвии, Литвы и Эстонии.
К сожалению, в открытом доступе данную программу найти не удалось, поэтому на рисунке представлен веб-интерфейс приложения в тестовом режиме. Тестовым режимом может воспользоваться любой пользователь, достаточно лишь зайти на главный сайт министерства транспорта, оказывающего транспортные услуги в вашем регионе.
Достоинства и недостатки программы:
Плюсы:
- простой интерфейс и управление программой;
- неограниченное количество записей в базах данных;
- довольно широкое распространение программы;
- возможность резервирования билетов.
Минусы:
- нет встроенного графического просмотра свободных мест.
Разрабатываемое приложение должно обладать достаточной простотой изучения и работы. Тогда пользователю будет несложно найти ту или иную информацию о пассажире, данные о билетах или времени отправления, пункте отправления и т.п. Само приложение должно работать в системе Windows, что обусловлено практически повсеместным распространением этой системы.
Функциональное моделирование нашего программного продукта представлено на рисунках 1.2 и 1.3.
Рисунок 1.2 – Функциональное моделирование программного приложения
Рисунок 1.3 – Функциональное моделирование программного приложения
Алгоритм взаимодействия пользователя с программой описан в Приложении 1.
Рисунок 3.1 – Шаблон проектирования Model-view-controller
Основная цель применения этой концепции состоит в разделении бизнес-логики (модели) от её визуализации (представления, вида). За счет такого разделения повышается возможность повторного использования. Наиболее полезно применение данной концепции в тех случаях, когда пользователь должен видеть те же самые данные одновременно в различных контекстах и/или с различных точек зрения. В частности, выполняются следующие задачи:
К одной модели можно присоединить несколько видов, при этом не затрагивая реализацию модели. Например, некоторые данные могут быть одновременно представлены в виде электронной таблицы, гистограммы и круговой диаграммы.
Не затрагивая реализацию видов, можно изменить реакции на действия пользователя (нажатие мышью на кнопке, ввод данных), для этого достаточно использовать другой контроллер.
Ряд разработчиков специализируются только в одной из областей: или разрабатывают графический интерфейс или разрабатывают бизнес-логику. Поэтому возможно добиться, что программисты, занимающиеся разработкой бизнес-логики (модели), вообще не будут осведомлены о том, какое представление будет использоваться.
Рисунок 4.1 - Структура базы данных
Переменная отношения находится в 3NF тогда и только тогда, когда она находится во второй нормальной форме и отсутствуют транзитивные зависимости неключевых атрибутов от ключевых.
Условие зависимости от «полного ключа» неключевых атрибутов обеспечивает то, что таблица находится во второй нормальной форме; а условие зависимости их от «ничего, кроме ключа» — то, что они находятся в третьей нормальной форме.
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
Назначение программы
Программа предназначена для автоматизации доступа, обработки, вывода информации реализованных билетах железнодорожной кассы. Программа имеет приятный для пользователя интерфейс (Рисунок 6.1.1).
Рисунок 6.1.1 – Интерфейс программы
Выполнение программы
Для открытия приложения необходимо запустить файл «ЖД Касса.exe». После открытия программы, пользователь может сразу приступить к работе с данными.
Для добавления достаточно нажать кнопку «Добавление», после чего откроется диалоговое окно с полями для ввода информации, после ввода информации необходимо нажать кнопку «Добавить заказ».
Для изменения достаточно нажать кнопку «Редактирование», после чего откроется диалоговое окно с полями для изменения информации, после изменения информации необходимо нажать кнопку «Редактировать заказ».
Для удаления достаточно нажать кнопку «Удаление», после чего откроется диалоговое окно, где можно выбрать «КодЗаказа» и увидеть данные об этом заказе, а при необходимости удаления нужно нажать на кнопку «Удалить».
Для поиска достаточно ввести ключевое слово или ключевой символ в текстовое поле, после чего таблица с записями покажет результат поиска, а при необходимости поиска по определённому полю, нужно нажать на чекбокс и выбрать по какому полю хотите поиск и после этого вводить ключевое слово или символ в текстовую строку, после чего таблица с записями покажет результат поиска.
Сообщения оператору
При возникновении исключительной ситуации оператору будет сообщено об ошибке. Примеры ошибок:
1) «Введите необходимые данные». Возникает, если пользователь оставил какое-либо поле пустым.
2) «Выделите поле для изменений». Возникает, если пользователь пытается воспользоваться функцией изменения или удаления, но при этом не выбрал запись, которую он хочет изменить или удалить.
3) «Вводить можно только цифры». Возникает, если пользователь пытается ввести не корректную информацию.
4) «Не удалось подключиться». Возникает, если происходит некорректное подключение к БД.
Рисунок 7.1 – Аварийное изменение конфигураций сервера
В случаи разрыва соединения с сервером, будет выдана соответствующая ошибка, а возможность работы с информацией будет остановлена. Будет открыто окно с настройками подключения к серверу для решения проблемы.
В ходе тестирования на стрессоустойчивость программа хорошо справляется с критическими ситуациями и возвращается к нормальному состоянию после прекращения воздействия стресса.
Задачей тестирования стабильности (надежности) является проверка работоспособности приложения при длительном (многочасовом) тестировании со средним уровнем нагрузки. Времена выполнения операций могут играть в данном виде тестирования второстепенную роль. При этом на первое место выходит отсутствие утечек памяти, перезапусков серверов под нагрузкой и другие аспекты, влияющие именно на стабильность работы.
Проведённое тестирование на стабильность и надёжность, показало, что в приложении отсутствует утечка информации, и вся информация корректно обрабатывается не зависимо от длительности тестирования.
Так же было проведено тестирование на не корректные действия пользователя. Пользователь не сможет вызвать ошибок в программе и нарушить её работоспособность: при попытке ввести символы в поле, предназначенное для чисел, будет выдана ошибка «Вводить можно только цифры» (Рисунок 7.2).
Рисунок 7.2 – Проверка на корректность вводимых данных
Аналогичная проверка включена во все поля, где возможен не корректный ввод данных.
Программа прошла тестирование и полностью работоспособна.
ЗАКЛЮЧЕНИЕ
При выполнении курсового проекта были пройдены все этапы разработки специализированного прикладного программного обеспечения:
- формализация задачи;
- сбор необходимых исходных данных;
- разработка и отладка программного продукта.
Разработана программа «Железнодорожная касса», которая позволяет автоматизировать работу пользователя, в ней был спроектирован пользовательский интерфейс, который обеспечивает удобную работу пользователя с приложением. Интерфейс реализован в виде диалогового окна, в котором реализованы кнопки, поля ввода-вывода данных и другие элементы. Приложение обеспечивает лёгкую и быструю работу с базой данных. Программное обеспечение позволяет не только оперативно найти необходимую информацию, характерную для железнодорожной кассы, но и получить ее в электронном виде.
При разработке программного приложения «Железнодорожная касса» мною был глубже изучен язык С#, методы взаимодействия с MS SQL, вопросы разработки пользовательского интерфейса.
ПРИЛОЖЕНИЕ 1
ПРИЛОЖЕНИЕ 2
Листинг программНОГО КОДА
Форма 1
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.Data.SqlClient;
namespace KursovoyGrimanov
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
public int id;
public void Loads()
{
cbMeg.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM SELLERS");
cbMeg.DisplayMember = "name";
cbMeg.ValueMember = "id";
cbTo.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM STATION");
cbTo.DisplayMember = "namestation";
cbTo.ValueMember = "id";
cbFrom.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM STATION");
cbFrom.DisplayMember = "namestation";
cbFrom.ValueMember = "id";
cbType.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM TypeTicket");
cbType.DisplayMember = "type";
cbType.ValueMember = "id";
comboBox2.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM SELLERS");
comboBox2.DisplayMember = "name";
comboBox2.ValueMember = "id";
comboBox4.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM STATION");
comboBox4.DisplayMember = "namestation";
comboBox4.ValueMember = "id";
comboBox3.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM STATION");
comboBox3.DisplayMember = "namestation";
comboBox3.ValueMember = "id";
comboBox1.DataSource = SqlHelper.ExecuteDataTable("SELECT * FROM TypeTicket");
comboBox1.DisplayMember = "type";
comboBox1.ValueMember = "id";
SqlDataReader myReader = SqlHelper.ExecuteReader("Select id,(select namestation from station where station.id = t.idfrom) as fromstation,(select namestation from station where station.id = t.idto) as tostation, price, date, (select name from sellers where sellers.id = t.idseller) as nameseller,(select type from typeticket where typeticket.id = t.idtype) as typeticket from invoice t");
string st;
int itemIndex = 0;
lw1.Items.Clear();
while (myReader.Read())
{
for (int i = 0; i < myReader.FieldCount; i++)
{
st = myReader.GetValue(i).ToString();
switch (i)
{
case 0:
lw1.Items.Add(st);
break;
case 1:
lw1.Items[itemIndex].SubItems.Add(st);
break;
case 2:
lw1.Items[itemIndex].SubItems.Add(st);
break;
case 3:
lw1.Items[itemIndex].SubItems.Add(st);
break;
case 4:
lw1.Items[itemIndex].SubItems.Add(st);
break;
case 5:
lw1.Items[itemIndex].SubItems.Add(st);
break;
case 6:
lw1.Items[itemIndex].SubItems.Add(st);
break;
}
}
itemIndex++;
}
}
private void btnAddStation_Click(object sender, EventArgs e)
{
if (txtStation.Text != string.Empty)
{
SqlHelper.ExecuteNonQuery(String.Format("Insert into station (namestation) values ('{0}')", txtStation.Text));
MessageBox.Show(String.Format("Добавлена новая станция : {0}",txtStation.Text));
txtStation.Clear();
}
Loads();
}
private void btnAddType_Click(object sender, EventArgs e)
{
if (txtType.Text != string.Empty)
{
SqlHelper.ExecuteNonQuery(String.Format("Insert into typeticket (type) values ('{0}')", txtType.Text));
MessageBox.Show(String.Format("Добавлен новый тип билета : {0}", txtType.Text));
txtType.Clear();
}
Loads();
}
private void btnAddSeller_Click(object sender, EventArgs e)
{
if (txtSeller.Text != string.Empty)
{
SqlHelper.ExecuteNonQuery(String.Format("Insert into sellers (name) values ('{0}')", txtSeller.Text));
MessageBox.Show(String.Format("Добавлен новый кассир : {0}", txtSeller.Text));
txtSeller.Clear();
}
Loads();
}
private void btnRefresh_Click(object sender, EventArgs e)
{
Loads();
}
private void btnSell_Click(object sender, EventArgs e)
{
if (Convert.ToInt32(cbMeg.SelectedValue) > 0 && Convert.ToInt32(cbFrom.SelectedValue) > 0 &&
Convert.ToInt32(cbTo.SelectedValue) > 0 && Convert.ToInt32(cbType.SelectedValue) > 0 &&
txtPrice.Text != string.Empty)
{
SqlHelper.ExecuteNonQuery(String.Format("insert into invoice (idfrom,idto,price,date,idseller,idtype) values ({0},{1},'{2}',GETDATE(),{3},{4})", cbFrom.SelectedValue, cbTo.SelectedValue, txtPrice.Text, cbMeg.SelectedValue,cbType.SelectedValue));
MessageBox.Show(String.Format("Добавлена новая запись : {0}", DateTime.Now.ToShortTimeString()));
txtPrice.Clear();
}
Loads();
}
private void MainForm_Shown(object sender, EventArgs e)
{
Loads();
}
private bool nonNumberEntered = false;
private void textBox_KeyDown(object sender, KeyEventArgs e)
{
nonNumberEntered = false;
if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
{
if (e.KeyCode != Keys.Back)
{
nonNumberEntered = true;
MessageBox.Show("Вводить можно только цифры!");
}
}
}
if (Control.ModifierKeys == Keys.Shift)
{
nonNumberEntered = true;
MessageBox.Show("Вводить можно только цифры!");
}
}
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (nonNumberEntered == true)
{
e.Handled = true;
}
}
private void lw1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if (e.IsSelected)
{
id = Convert.ToInt32(lw1.Items[e.ItemIndex].Text);
for (int i = 1; i < lw1.Items[e.ItemIndex].SubItems.Count; i++)
{
switch (i)
{
case 1:
comboBox4.Text = lw1.Items[e.ItemIndex].SubItems[i].Text;
break;
case 2:
comboBox3.Text = lw1.Items[e.ItemIndex].SubItems[i].Text;
break;
case 3:
textBox1.Text = lw1.Items[e.ItemIndex].SubItems[i].Text;
break;
case 4:
break;
case 5:
comboBox2.Text = lw1.Items[e.ItemIndex].SubItems[i].Text;
break;
case 6:
comboBox1.Text = lw1.Items[e.ItemIndex].SubItems[i].Text;
break;
}
}
groupBox1.Visible = true;
}
else groupBox1.Visible = false;
}
private void button1_Click(object sender, EventArgs e)
{
txtPrice.Clear();
cbMeg.SelectedIndex = 0;
cbTo.SelectedIndex = 0;
cbFrom.SelectedIndex = 0;
cbType.SelectedIndex = 0;
}
private void button3_Click(object sender, EventArgs e)
{
if (id > 0)
{
SqlHelper.ExecuteNonQuery("Delete from invoice where id = {0}", id);
groupBox1.Visible = false;
Loads();
}
}
private void button4_Click(object sender, EventArgs e)
{
if (id > 0 && textBox1.Text != string.Empty)
{
SqlHelper.ExecuteNonQuery(String.Format("update invoice set idfrom={0},idto={1},price='{2}',date=GETDATE(),idseller={3},idtype={4} where id = {5}", comboBox4.SelectedValue, comboBox3.SelectedValue, textBox1.Text, comboBox2.SelectedValue, comboBox1.SelectedValue, id));
Loads();
}
}
}
}
Класс SqlHelper
using System;
using System.Data;
using System.Data.SqlClient;
namespace KursovoyGrimanov
{
public static class SqlHelper
{
static string connection = "server=localhost; Trusted_Connection=yes; database=DK; Connection timeout=10";
#region получение таблицы данных
public static DataTable ExecuteDataTable(string query)
{
DataSet dataSet = null;
SqlConnection connect = new SqlConnection(connection);
connect.Open();
SqlCommand command = new SqlCommand(query);
command.CommandType = CommandType.Text;
command.Connection = connect;
SqlDataAdapter dataAdapter = new SqlDataAdapter(command);
try
{
dataSet = new DataSet();
dataAdapter.Fill(dataSet);
}
catch
{ }
connect.Close();
if (dataSet != null)
return dataSet.Tables[0];
else return new DataTable();
}
public static DataTable ExecuteDataTable(string query, params object[] parameters)
{
return ExecuteDataTable(String.Format(query, parameters));
}
#endregion
#region выполнение запроса без возвращаемых значений
public static void ExecuteNonQuery(string query, params object[] parameters)
{
ExecuteNonQuery(string.Format(query, parameters));
}
public static void ExecuteNonQuery(string query)
{
SqlConnection connect = new SqlConnection(connection);
connect.Open();
SqlCommand command = new SqlCommand(query);
command.CommandType = CommandType.Text;
command.Connection = connect;
command.ExecuteNonQuery();
connect.Close();
}
public static SqlDataReader ExecuteReader(string query)
{
SqlConnection connect = new SqlConnection(connection);
connect.Open();
SqlDataReader myReader = null;
SqlCommand command = new SqlCommand(query);
command.CommandType = CommandType.Text;
command.Connection = connect;
return myReader = command.ExecuteReader();
}
#endregion
}
}
УТВЕРЖДАЮ
Зав. кафедрой
_______________ Курмашёв В.И.
“___”_______2012 года
ЗАДАНИЕ
На курсовое проектирование
Студенту Гриманову Дмитрию Владимировичу гр. 91201с
1. Тема проекта______ «Железнодорожная касса»_______________________
2. Срок сдачи студентом оконченного проекта______07.05.2012_________
Исходные данные к проекту
Общие требования.Приложение должно быть выполнено в архитектуре клиент-сервер на объектно-ориентированном языке. В рамках работы должны быть использованы следующие техники: разработка и использование собственной иерархии классов, расширение базовых классов предоставляемых SDK, реализовать заданный паттерн проектирования, использовать сокрытие данных (инкапсуляция), перегрузка методов, переопределение методов, параметризированные классы(шаблоны), сериализация, абстрактные типы данных(интерфейсы, абстрактные классы), передача параметров по ссылке и по значению, статические методы, обработка исключительных ситуаций.
Бизнес-логика. Бизнес-логика системы должна быть реализована только на серверной части приложения. На сервере должна быть предусмотрена возможность параллельной обработки запросов. Доступ к данным в СУБД должен осуществляться через драйвер, предоставляемый производителем СУБД. База данных должна быть приведена к 3-ей нормальной форме. Функционал серверной части должен составлять не менее 10 Use Case’ов.
Транспортный уровень.Взаимодействие между серверной и клиентскими частями должно осуществляется по выбору либо с использованием сокетов и протокола TCP/IP (причём по сети необходимо пересылать объекты (пользовательские), а не строки).
Требования к поставке.
Разработанная система должна обладать следующей инфраструктурой:
- СУБД (на выбор) – Sybase SQL 9.0, MS SQL 2005, MySql 5.1;
- Операционная система Windows XP SP3;
Интерфейс программы и данные должны быть только на русском (белорусском) языке.
Перечень используемых стандартов:
IDEF0, IDEF1.X, UML 2.0 и выше, ГОСТЫ 19001–19701 (оформление блок-схем, требования к руководству пользователя).
Перечень рекомендуемой литературы:
1. UML. Классика CS. 2-у изд./Пер. с англ.; Под общей редакцией проф. С.Орлова - СПб.: Питер, 2006. - 736 с.: ил.
2. Фаулер М. Архитектура корпоративных программных приложений.: Пер. с англ. - М.: Издательский дом "Вильямс", 2006. - 544с.: ил. - Парал. тит. англ.
3. Басс Л., Клементс П., Кацман Р. Архитектура программного обеспечения на практике. 2-е издание. - СПб.: Питер, 2006. - 575 с.: ил.
Содержание расчетно-пояснительной записки (перечисление вопросов, которые подлежат рассмотрению)
Введение (с указанием цели и основных задач для её достижения). 1. Описание предметной области (включая IDEF0, декомпозицию необходимо выполнять до выделения элементарных функций. Функциональная модель должна быть связана с информационной.) и определение требований к системе с точки зрения предметной области. 2. Постановка задачи и обзор методов её решения. 3. Модели представления системы и их описание. 4. Информационная модель системы и её описание (с доказательством приведения ее к 3-ей нормальной форме). 5. Обоснование оригинальных решений по использованию технических и программных средств, не включенных в требования (не обязательный раздел). 6. Описание алгоритмов реализующих бизнес-логику серверной части проектируемой системы. 7. Руководство пользователя. 8.Результаты тестирования разработанной системы и оценка выполнения задач. Выводы и заключения. Литература. Приложения.
5. Перечисление графического материала (с подробным описанием обязательных чертежей и графиков)
Функциональная модель процессов предметной области (IDEF0). Диаграмма Вариантов использования (Use Case). Диаграммы состояний (Statechart). Диаграмма последовательностей (Sequence diagram). Диаграммы классов. Диаграммы компонентов (component diagram). Диаграмма развертывания (deployment diagram). Информационная модель. Блок-схемы алгоритмов, реализующих бизнес-логику. Листинг алгоритмов реализующих бизнес-логику. Листинг основных элементов программы. Листинг скрипта генерации базы данных.
6. Дата выдачи заданния________________25.02.2012___________________
Календарный график работы над проектом на весь период проектирования
№ п/п | Наименование пунктов курсового проекта | Срок выполнения |
Функционирование контекстного уровня системы. Прототип пользовательского интерфейса. | 25.03.2012 | |
Функционирование программного обеспечения, реализующего архитектуру системы. | 15.04.2012 | |
Завершенная программная реализация системы. | 02.05.2012 | |
Функционирующая система. | 05.05.2012 |
Руководитель _______________ Н.Л. Боброва
Задание принял к исполнению ____________ 25 февраля 2012 г.
РЕФЕРАТ
курсового проекта Гриманова Д.В.
«Железнодорожная касса»
Объём работы 35 с., в том числе 12 рис., 3 наим. лит., 2 приложения.
Ключевые слова: тип данных, оператор, метод класса, база данных, символьная строка, Windows Form, MS Visual С#, запрос MS SQL.
В курсовом проекте разрабатывается программное приложение для железнодорожного вокзала, которое включает в себя следующие этапы: постановка задачи и обзор методов её решения; разработка модели представления системы; разработка информационной модели системы; построение и описание алгоритмов реализующих бизнес-логику программы; составление руководства пользователю; тестирование программы.
Кроме того, реализованы аспекты проектирования пользовательского интерфейса с использованием Windows Forms:
1) Визуальное проектирование диалогового окна с использованием кнопок, текстовых полей, меток, списка;
2) Назначение обработчиков событий элементам интерфейса – кнопкам и списку, а также самому диалоговому окну (инициализация диалога);
ОГЛАВЛЕНИЕ
Введение.............................................................................................................................. 7
1 Описание предметной области и определение требований к системе с точки зрения предметной области..................... 9
2 ПОСТАНОВКА ЗАДАЧИ И ОБЗОР МЕТОДОВ ЕЁ РЕШЕНИЯ........ 14
3 МОДЕЛИ ПРЕДСТАВЛЕНИЯ СИСТЕМЫ И ИХ ОПИСАНИЕ........ 15