Разработка программного обеспечения для обслуживания автосалона

 

Содержание


Введение

1. Анализ исходных данных

1.1 Характеристика требований на разработку

1.2 Анализ предметной области

1.3 Специальное и общесистемное программное обеспечение

2. Программное проектирование

2.1 Разработка диаграммы прецедентов

2.2 Разработка диаграммы классов

2.3 Разработка диаграммы деятельности

2.4 Разработка диаграммы состояний

3. Программная реализация

3.1 Детальная реализация функциональных частей программного обеспечения

3.1.1 Реализация программного обеспечения

3.1.2 Разработкапользовательскогоинтерфейса

3.2 Документирование программного обеспечения

3.2.1 Разработка описания программы

3.2.2 Разработка руководства пользователя

3.2.3 Программа и методика испытаний

3.4 Тестирование программного обеспечения

Заключение

Литература

Приложения

Введение


В данном курсовом проекте предполагается реализовать ПО для обслуживания автосалона с графическим интерфейсом, возможностью хранения файлов на диске и поиском.

Актуальность задачи заключается в том, что язык, выбранный для написания данного программного обеспечения - C# - является одним из самых молодых языков программирования. Вместе с тем, он открывает большие возможности для программиста.

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

1. Анализ исходных данных


.1 Характеристика требований на разработку


Необходимо разработать программное обеспечение для обслуживания автосалона со следующими требованиями:

Графический интерфейс основной программы. Предполагается использовать стандартные оконные формы, такие как Button, TextBox, DataGridViewи т.д. для реализации данного требования;

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

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

Поиск по различным признакам. Одним из элементов окна базы является DataGridView, поиск по которому не представляет труда. Так в поле поиска необходимо ввести ключ поиска, и если хотя бы одно совпадение найдено (вне зависимости от поля) строка DataGridViewбудет выделена.

Разработать и использовать не менее восьми сущностей. Предполагается работа со следующими сущностями:

oАбстрактный класс Product;

oAuto;

oDisk;

oBus;

oMoto;

oKlient;

oSaller;

oPassword;

oИнтерфейс Serialization_Deserialization.

Обязательно использование наследования и полиморфизма.

Язык программирования и среда разработки - C/C++, C#, MS VisualStudio 2005/2010. Платформа реализации - ОС Windows XP/Vista/7/2003/2008.


.2 Анализ предметной области


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

Предполагается работа пользователя со следующими сущностями:

Автомобиль;

Диск;

Шина;

Мототехника;

Клиент;

Продавец.

В задание предполагается создание базы данных для обслуживания автосалона со след функционалом:

Добавление данных:

oдобавление автомобиля:

·для продажи;

·для проката;

oдобавление клиента;

oдобавление мототехники;

oдобавление дисков;

oдобавление шин;

oдобавление продавца (если пользователь вошел под учетной записью Администратора);

Поиск по любым совпадениям ключа;

Сортировка по всем полям и направлениям (по возрастанию, по убыванию) в DataGridView, в зависимости от выбора пользователя

Редактирование данных:

oредактирование информации о диске;

oредактирование информации об автомобиле;

oредактирование информации о шины;

oредактирование информации о мототехнике;

oредактирование информации о продавце;

Просмотр информации:

oпросмотр информации о мототехнике;

oпросмотр информации о шинах;

oпросмотр информации о клиентах;

oпросмотр информации об автомобилях;

oпросмотр информации о дисках;

oпросмотр информации о продавцах (если пользователь вошел под учетной записью Администратора);

Работа с файлами:

oзагрузка базы из файла (происходит автоматически);

oсохранение базы в файл (происходит автоматически);

Изменение пароля (если пользователь вошел под учетной записью Администратора):

oизменение пароля учетной записи Администратора;

oизменение пароля учетной записи Продавца.


.3 Специальное и общесистемное программное обеспечение


При написании данного курсового проекта использовалось следующее стороннее программное обеспечение и инструментарий:

Microsoft Visual Studio 2010 - написание программы;

Microsoft Office Word 2013 - написание пояснительной записки, описания программы, руководства пользователя;

Enterprise Architect 7.5 - проектирование и подготовка диаграмм.

программное обеспечение руководство пользователь

2. Программное проектирование


2.1 Разработка диаграммы прецедентов


На данной диаграмме представляются актеры, прецеденты и отношения между ними. Отношения выражаются взаимодействием актеров с системой при помощи прецедентов (вариантов использования). Актером является любая сущность, взаимодействующая с программой извне. В качестве вариантов использования или прецедентов выступают сервисы и функционал, который система предоставляет актерам.

В данной курсовой работе в качестве актеров выступают Администратор и Продавец. К прецедентам Продавца относятся:

Добавление данных:

oДобавление автомобиля;

oДобавление мотоцикла;

oДобавление шин;

oДобавление дисков;

oДобавление клиента;

Поиск по любым совпадениям активной таблицы базы;

Сортировка по любым полям в прямом и обратном порядке;

Редактирование ранее введенных данных, кроме данных о клиентах;

Просмотр информации в виде таблицы:

oПросмотр информации об автомобилях;

oПросмотр информации о клиентах;

oПросмотр информации о шинах;

oПросмотр информации о дисках;

oПросмотр информации о мотоциклах;

Работа с файлами:

oЗагрузка данных из файлов баз и сохранение данных в файлы происходит автоматически при открытии таблицы базы и добавлении/редактировании информации соответственно;

К прецедентам Администратора относятся все прецеденты Продавца, а также:

Добавление продавца;

Редактирование данных о продавце;

Просмотр информации о продавцах;

Изменение пароля учетной записи Продавца;

Изменение пароля учетной записи Администратора.

На основании вышесказанного была построена диаграмма прецедентов, представленная в приложении А.


.2 Разработка диаграммы классов


На диаграмме классов отображаются все классы, участвующие в работе программы, а также все свойства и методы классов и отношения между ними.

Краткая характеристика классов, используемых в данной курсовой работе, представлена в таблице 2.2.1.


Таблица 2.2.1 - Классы их методы и свойства

Класс (интерфейс) Краткая характеристикаметодов<<interface>> Serialization_DeserializationПредоставляет классам, зависящим от данного возможность реализации методов сериализации и десериализацииProductАбстрактный класс с основными свойствами и методами, необходимыми для работы с товаромPersonАбстрактный класс, являющийся базовым для классов Sallerи Klient. AutoКласс автомобиль, содержащий свойства автомобиля, а так же реализующий интерфейс Serialization_DeserializationMotoКласс мототехника, содержащий свойства мототехники, а так же реализующий интерфейс Serialization_DeserializationBusКласс шина, содержащий свойства шин, а так же реализующий интерфейс Serialization_DeserializationDiskКласс диск, содержащий свойства дисков, а так же реализующий интерфейс Serialization_DeserializationKlientКласс клиент, содержащий информацию оклиенте, а так же реализующий интерфейс Serialization_DeserializationSallerКласс продавец, содержащий информацию о продавце, а так же реализующий интерфейс Serialization_DeserializationPasswordКласс пароль, содержащий свойство хеш значение пароля (администратора или продавца), а также методы для работы с паролем

.3 Разработка диаграммы деятельности


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

Таким образом, диаграммы деятельности можно считать частным случаем диаграмм состояний. Они позволяют реализовать в языке UML особенности процедурного и синхронного управления, обусловленного завершением внутренних деятельностей и действий. Основным направлением использования диаграмм деятельности является визуализация особенностей реализации операций классов, когда необходимо представить алгоритмы их выполнения.

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

Диаграмма деятельности для данного курсового проекта представлена в приложении Д.


.4 Разработка диаграммы состояний


Диаграмма состояний представляет собой граф работы цифрового автомата. На ней изображаются переходы между различными состояниями программы.

В языке UML под состоянием понимается абстрактный метакласс, используемый для моделирования отдельной ситуации, в течение которой выполняются некоторые условия. Состояние может быть задано в виде набора конкретных значений атрибутов класса или объекта. Изменение отдельных значений атрибутов будет отражать изменение состояния моделируемого класса или объекта.

Под действием в языке UML понимают некоторую атомарную операцию, выполнение которой приводит к изменению состояния или возврату некоторого значения.

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

3. Программная реализация


3.1 Детальная реализация функциональных частей программного обеспечения


3.1.1 Реализация программного обеспечения


Описание методов классов

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

Корректность ввода пароля проверяется по хеш-значению текущего пароля и введенного пароля пользователем методом PasswordIsValid (stringhash1, stringhash2) класса Password, в качестве параметров в который передаются два хеш-значения. Первое - истинное хеш-значение пароля, хранящееся в файле на диске в папке вместе с программой, второе - полученное из введенного пользователем пароля. Если хеш-значения совпадают, функция возвращает True.

Хеш-значения паролей (Администратора и Продавца) хранятся в файле на диске (HashAdmin. dat - для Администратора, HashSaler. dat - для Продавца), и получаются методомgetHashSalerPassword (), для пароля Продавца и методомgetHashAdminPassword () того же класса Password, для пароля Администратора.

В классе Passwordтак же содержится метод NewPassword (stringnewpassword, intfl), который изменяет пароли Продавца или Администратора. В качестве параметров ему передается новое значение пароля и флаг изменения. Если флаг равен 0, то необходимо изменить пароль Администратора, если 1 - пароль Продавца. Пароль меняется простой перезаписью файла, содержащего хеш-значение текущего пароля, на хеш-значение нового пароля.

В каждом классе сущностей описаны методы для осуществления доступа к свойствам класса (так называемые геттеры), конструктор данного класса и метод для сериализации и десериализации при записи и чтении базы из файла. При сериализации данные переводятся в бинарный вид, при десериализации - в вид, пригодный для чтения теми или иными методами. Для использования возможности сериализации и десериализации необходимо указать следующие директивы:

usingSystem.runtime. Serialization. Formatters. Binary;.runtime. Serialization;System. IO;

Методы сериализации и десериализации для каждого класса реализуют интерфейс Serealization_Deserialization.

Разберем вышенаписанное на примере классаAuto (см. листинг 3.1.1.1).


Листинг 3.1.1.1 - Методы доступа к свойствам класса

// методыдоступаксвойствамкласса

publicstringgetEngineType () {returnEngineType; }

publicfloatgetEngineVolume () {returnEngineVolume; }

publicintgetGuaranteeTime () {returnGuaranteeTime; }

publicstringgetHireCost () {returnHireCost; }

publicstringgetIsHire () {returnIsHire; }

publicstringgetModel () {return Model; }() {return Transmission; }() { return Year; }() { return Owner; }() { returnSaleData; }() { returnColour; }() { return Drive; }

// перегруженные методы доступа из абстрактного класса Product

public override string getComeData () { return ComeData; }override string getCost () { return Cost; }override string getIsIt () { return IsIt; }override string getName () { return Name; }

// конструктор класса AutoВ кечестве базового принят абстрактный класс Product

public Auto (string _comedata, string _cost, string _isit, string _name, string _enginetype, float _enginevolume, int _guaranteeperiod,_colour, string _hirecost, string _ishire, string _model, string _transmission, int _year, string _owner, string _saledata, string _drive): base (_comedata, _cost, _isit, _name)

{= _enginetype;= _enginevolume;= _guaranteeperiod;= _hirecost;= _ishire;= _model;= _transmission;= _year;= _owner;= _saledata;= _colour;= _drive;

}

/*метод десериализации данных при чтении из файла. Прочитанные данные из файла записываются в структуру типа List<Auto>. В случае не удачи чтения выводится соответствующее сообщение*/

publicvoidDeserialization (string file)

{= newFileStream (file, FileMode. OpenOrCreate);formatter = newBinaryFormatter ();

{= (List<Auto>) formatter. Deserialize (autobasa);

}(SerializationException)

{. Windows. Forms. MessageBox. Show ("Неудалосьпрочитатьфайл. ");

}. Close ();

}

// методсериализации данных при записи на диск()

{= newFileStream (file, FileMode. Create);formatter = newBinaryFormatter ();. Serialize (autobasa, Auto. ListAuto);. Close ();

}


Таким образом описываются классы: Saller, Moto, Klient, Disk, BusиAuto.

Описание функционала окна смены паролей

После удачного входа в систему под учетной записью Администратора пользователю будет предложено выбрать одно из действий:

Изменить пароль Администратора;

Изменить пароль Продавца;

Перейти к просмотру (редактированию) базы.

При переходе к изменению паролей (Администратора или Продавца) пользователь получает возможность изменить пароль. Изменение пароля происходит по средствам вызова метода изменения пароля из класса Passwordсоответствующей учетной записи. При изменении пароля осуществляется контроль правильности ввода текущего пароля (методом PasswordIsValid) и совпадения проверки ввода нового пароля. Изменение пароля представлено в листинге 3.1.1.2.


Листинг 3.1.1.2 - Изменение пароля

if (Password. PasswordIsValid ( ( (NewAdminPasswordOld. Text). GetHashCode ()). ToString (), Password. getHashAdminPassword ()))

{(NewAdminPasswordNew1. Text == NewAdminPasswordNew2. Text)

{. NewPassword (NewAdminPasswordNew1. Text, 0);. Windows. Forms. MessageBox. Show ("Парольуспешноизменен");. Close ();

}

{. Windows. Forms. MessageBox. Show ("Паролинесовпадают");

}

}

{. Windows. Forms. MessageBox. Show ("Неверновведенпароль");

}


Описание функционала главного окна базы и окон, вызывающихся с главного окна

При открытии главного окна базы происходит его инициализация, разграничение прав доступа к вкладкам (Продавец не имеет права просматривать базу продавцов). Вывод списка автомобилей в таблицу и десериализация базы клиентов (см. листинг 3.1.3.3).


Листинг 3.1.3.3 - Начальные действия главного окна базы

/*если HelloWindow. flagutorization = 0, то это означает, что был произведен вход под учетной записью продавца, следовательно необходимо скрыть базу продавцов, вызывая методAutosalonSaller. Dispose () */()

{();(HelloWindow. flagutorization == 0)

{. Dispose ();

}(HelloWindow. flagutorization == 1)

{. flagutorization = 0;

}();. KlientDesirialization ();

}


В классе главного окна базы описаны следующие методы для вывода данных из List<Type>в таблицу базы, для выбора просмотра нужной вкладки базы, методы действий при нажатии на ту или иную кнопку в главном окне.

Разберем методы вывода данных из List<Type>в таблицу базы на примере метода ListAutoPrint () - метод вывода автомобилей.

Для начала необходимо десериализовать данные из файла базы автомобилей (BasaAuto. dat). Далее в цикле, по очереди (от 0-го до последнего) осуществляется вывод данных в таблицу базы (DataGridView) с помощью метода AutosalonAutoTable. Rows. Add (…), который в качестве параметров принимает значения переменных, которые необходимо вывести в соответствующих столбцах таблицы (по очереди слева на право). Вышеописанное представлено в листинге 3.1.3.4.


Листинг 3.1.3.4 - Вывод данных об автомобилях из файла базы в таблицу

publicvoidListAutoPrint ()

{a = new Auto ();. Deserialization ("BasaAuto. dat");= Auto. ListAuto. Count;(inti = 0; i<tmp; ++i)

{. Rows. Add (Auto. ListAuto [i]. getName (), Auto. ListAuto [i]. getModel (),. ListAuto [i]. getYear (), Auto. ListAuto [i]. getEngineType (),Auto. ListAuto [i]. getEngineVolume (), Auto. ListAuto [i]. getDrive (), Auto. ListAuto [i]. getTransmission (),. ListAuto [i]. getColour (), Auto. ListAuto [i]. getGuaranteeTime (),. ListAuto [i]. getComeData (), Auto. ListAuto [i]. getSaleData (),. ListAuto [i]. getIsHire (),. ListAuto [i]. getIsIt (),. ListAuto [i]. getHireCost (),. ListAuto [i]. getCost (),. ListAuto [i]. getOwner ());

}

}


Таким же образом происходит вывод в таблицу данных о клиентах, мотоциклах, шинах, дисках и продавцах.

МетоддоступаквкладкамбазыAutosalonBase_Selecting (objectsender, TabControlCancelEventArgse) принимает в качестве параметров объект, порождающий событие и событие изменения текущей вкладки таблицы.

С помощью конструкции switch … caseи массива флагов int [] flag = {0,0,0,0,0}изначально инициализированного нулями, нужного для того, чтобы не переписывать таблицу несколько раз, осуществляется выбор нужнойвкладки. Свойство AutosalonBase. SelectedIndexхранит номера вкладок, начиная с нуля. Так, если выбирается вкладка, определяется ее индекс и происходит переход к нужной метке case. Отсчет ведется с единицы, так как вкладка 0 (база автомобилей) автоматически отображается при открытии окна базы. В нужной метке caseвызвается нужный метод вывода в таблицу:

ListMotoPrint () - для мотоциклов;

ListBusPrint () - для шин;

ListDiskPrint () - для дисков;

ListKlientPrint () - для клиентов;

ListSallerPrint () - для продавцов.

Вышеописанный метод представлен в листинге 3.1.3.5.


Листинг 3.1.3.5 - Метод вывода данных в таблицы базы

AutosalonBase_Selecting (object sender, TabControlCancelEventArgs e)

{ switch (AutosalonBase. SelectedIndex) {1:

{(flag [AutosalonBase. SelectedIndex - 1] == 0)

{();[AutosalonBase. SelectedIndex - 1] = 1;

};

}2:

{(flag [AutosalonBase. SelectedIndex - 1] == 0)

{();[AutosalonBase. SelectedIndex - 1] = 1;

};

}3:

{(flag [AutosalonBase. SelectedIndex - 1] == 0)

{();[AutosalonBase. SelectedIndex - 1] = 1;

};

}4:

{(flag [AutosalonBase. SelectedIndex - 1] == 0)

{();[AutosalonBase. SelectedIndex - 1] = 1;

};

}5:

{(flag [AutosalonBase. SelectedIndex - 1] == 0)

{();[AutosalonBase. SelectedIndex - 1] = 1;

}; } }}


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

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

AutosalonButtonAddAuto_Click (objectsender, EventArgse) - метод для описания реакции программы на нажатие кнопки добавления автомобиля. Логика работы метода следующая (код представлен на листинге 3.1.3.6):

Сначала вызывается окно добавления автомобиля. В классе окна добавления автомобиля описан метод, который реагирует на нажатие кнопок этого окна (Добавить, Сохранить, Прикрепить покупателя/временного владельца). Если в окне добавления автомобиля была нажата кнопка "Добавить", будет заполнена временная переменная, в которой будет хранится введенная информация (см. листинг 3.1.3.7). Эта переменная видна в классе основного окна базы и ее значение переносится в таблицу данных об автомобилях. Далее осуществляется добавление автомобиля в структуру ListAuto (типа List<Auto>) и сериализация данной структуры. В случае нажатия кнопки "Прикрепить покупателя/временного владельца" вызовется окно добавление клиента. Информация о котором так же будет записана по нажатии кнопки "Добавить" во временную переменную, видимую в классе главного окна и выведена в соответствующую таблицу (таблицу клиентов), а так же сериализована. Если же данные от таком клиенте уже присутствуют, то в таблицу клиентов они еще раз не попадут, но будет заполнено соответствующее поле базы автомобилей (владелец).


Листинг 3.1.3.6 - Метод добавления автомобиля в таблицу

publicvoidAutosalonButtonAddAuto_Click (object sender, EventArgs e)

{

AutoWindowAddautowindowadd = newAutoWindowAdd ();

autowindowadd. ShowDialog ();(AutoWindowAdd. tmpauto! = null)

{. ListAuto. Add (AutoWindowAdd. tmpauto);. Rows. Add (AutoWindowAdd. tmpauto. getName (),. tmpauto. getModel (),. tmpauto. getYear (),. tmpauto. getEngineType (),. tmpauto. getEngineVolume (),. tmpauto. getDrive (),. tmpauto. getTransmission (),. tmpauto. getColour (),. tmpauto. getGuaranteeTime (),. tmpauto. getComeData (),. tmpauto. getSaleData (),. tmpauto. getIsHire (),. tmpauto. getIsIt (),. tmpauto. getHireCost (),. tmpauto. getCost (),. owner);( (AutoWindowAdd. flagaddklient == 1) && (KlientWindowAdd. tmpklient! = null))

{. flagaddklient = 0;. Rows. Add (KlientWindowAdd. tmpklient. getLastName (), KlientWindowAdd. tmpklient. getFirstName (),. tmpklient. getPatronymic (), KlientWindowAdd. tmpklient. getSex (),. tmpklient. getPaspotrNum (), KlientWindowAdd. tmpklient. getPasportGive (),. tmpklient. getPasportDate (), KlientWindowAdd. tmpklient. getPasportID (),. tmpklient. getAdress ());. tmpklient = null;

}. tmpauto. Serialization ("BasaAuto. dat");

AutoWindowAdd. tmpauto = null;

}

}


Листинг 3.1.3.7 - Метод реакции программы на нажатие кнопки "Добавить" в окне добавление автомобиля

privatevoidAutoButtonAdd_Click (object sender, EventArgs e)

{;(AutoMarkaAlter. Text! = "")

{= AutoMarkaAlter. Text;

}

{= AutoMarka. Text;

};(AutoProkat. Checked)

{= "Да";

}

{= "Нет";

};(AutoSale. Checked)

{= "Да";

}

{= "Нет";

}= newAuto (AutoComeData. Text, AutoPriceSale. Text,, tmpMarka, AutoEngineType. Text,

(float) AutoVolumeEngeen. Value,

(int) AutoGaranteePeriod. Value,. Text, AutoPriceProkat. Text,,. Text,AutoTransmission. Text,

(int) AutoYear. Value, owner,. Text, AutoDrive. Text);. Close ();

}


Здесь значение переменной owner - владелец определяется, если было вызвано окно добавления клиента методом AutoKlientButtonAdd_Click (objectsender, EventArgse), который описывает реакцию программы на нажатие кнопки добавления клиента. В переменную ownerзапишутся имя, фамилия и отчество владельца (временного владельца) автомобиля.

Добавление диска имеет более простую структуру. При нажатии кнопки добавления диска появляется соответствующее окно. По нажатии кнопки "Добавить" в окне добавления диска происходит заполнение временной переменной введенными значениями. Эта временная переменная видна в классе основного окна базы и если она была инициализирована (заполнена значениями), то происходит добавление в структуру ListDiskтипа List<Disk> и в главном окне базы в таблицу добавляется соответствующая строка с только что введенными данными о диске. После чего происходит серилизация структуры ListDisk. Вышеописанное демонстрируют листинги 3.1.3.8 и 3.1.3.9.


Листинг 3.1.3.8 - Метод реакции программы на нажатие кнопки добавления диска

privatevoidAutosalonWindowDiskButtonAdd_Click (object sender, EventArgs e)

{= newDiskWindowAdd ();. ShowDialog ();(DiskWindowAdd. tmpdisk! = null)

{. ListDisk. Add (DiskWindowAdd. tmpdisk);. Rows. Add (DiskWindowAdd. tmpdisk. getName (),. tmpdisk. getET (),. tmpdisk. getPSD (),. tmpdisk. getSum (),. tmpdisk. getRimWidth (),. tmpdisk. getDiameterCentreOpening (),. tmpdisk. getDiam (),. tmpdisk. getType (),. tmpdisk. getComeData (),. tmpdisk. getCount (),. tmpdisk. getCost ());. tmpdisk. Serialization ("BasaDisk. dat");. tmpdisk = null;

}

}


Листинг 3.1.3.9 - Метод класса окна добавления диска, реагирующий на нажатие кнопки "Добавить"

publicvoidDiskButtonAdd_Click (object sender, EventArgs e)

{ stringtmpMarka;(DiskProducerAlter. Text! = "")

{tmpMarka = DiskProducerAlter. Text; }

{= DiskProducerEnter. Text;

};(DiskSale. Checked)

{= "Да";

}

{= "Нет";

}= newDisk (DiskComeData. Text, DiskPriceSale. Text,, tmpMarka, (int) DiskDiam. Value,. Text, (float) DiskRimWidth. Value,

(int) DiskSum. Value, (int) DiskPSD. Value,

(float) DiskDiameterCentreOpening. Value,

(float) DiskET. Value, (int) DiskCount. Value);. Close ();

}


AutosalonWindowButtonSearch_Click (object sender, EventArgs e) - данный метод описывает действия при нажатии кнопки поиска по базе. Попросту - осуществляет поиск по любым совпадениям открытой вкладки базы. Если совпадение найдено, выделяется строчка, с найденным совпадением. Данное представлено в листинге 3.1.3.10 на примере поиске в базе автомобилей. Поиск в других таблицах базы аналогичен.


Листинг 3.1.3.10 - Поиск по базе

if (search! = "")

{(inti = 0; i<AutosalonAutoTable. Rows. Count; i++)

{(int j = 0; j <AutosalonAutoTable. Columns. Count; j++)

{(AutosalonAutoTable. Rows [i]. Cells [j]. Value! = null)

{(AutosalonAutoTable. Rows [i]. Cells [j]. Value. ToString () == search)

{. Rows [i]. Selected = true; = 1;

}

}

}

}

}


По окончание поиска, если совпадение было найдено флагу isfind приравнивается 1 и в конце поиска будет выведено сообщение об окончание поиска. Если совпадений не найдено - isfind равняется 0 и выводится сообщение о том, что совпадений не было найдено.

AutosalonWindowButtonRefresh_Click (objectsender, EventArgse) - метод, отвечающий за реакцию программы на нажатие кнопки обновления таблицы (отмена выделения всех строк). Данный метод представлен в листинге 3.1.3.10 на примере базы автомобилей. Происходит построчный перебор таблицы, если найдена выделенная строка - выделение снимается.


Листинг 3.1.3.10 - Обновление таблицы (на примере таблицы автомобилей)

for (inti = 0; i<AutosalonAutoTable. Rows. Count; i++)

{(AutosalonAutoTable. Rows [i]. Selected)

{. Rows [i]. Selected = false;

}

}


AutosalonWindowButtonChange_Click (object sender, EventArgs e) - метод обработки события нажатия на кнопку изменения элемента. Работает для всех таблиц одинаково (кроме таблицы клиентов, т.к. ее редактирование запрещено).

Логика работы заключается в следующем: после нажатия кнопки изменения происходит проход по всей таблице в поиске выделенной строки. Если выделенная строка не была найдена, ничего не произойдет. Если же была найдена выделенная строка, то вызовется окно редактирования (которое совпадает с окном добавления) того или иного элемента. Также произойдет запоминание в переменных той информации, которая соответствует данной строке. Окно редактирования вызовется с заполненными полями (заполнены они будут той информацией, которая хранится в данной строке). После нажатия кнопки "Сохранить" в окне редактирования, (если данные были изменены) произойдет изменение соответствующей записи в структуре ListObject (Object-объект, изменение которого разрешено) сериализация ListObject и обновление записи в таблице. Может быть изменена любая информация, связанная с объектом.


.1.2 Разработкапользовательскогоинтерфейса

Пользовательский интерфейс данной программы был разработан с использованием стандартных форм, предоставляемых средой разработки MicrosoftVisualStudio 2010.

Были задействованы такие элементы как:

ComboBox - для предоставления пользователю выбора возмодных значений данных;

Label - для текстовой отметки того или иного места, поля и т.д.;

MascedTextBox - для маскировки вводимого пароля;

TextBox - для ввода произвольного текста;

Button - кнопка;

PictureBox - для вывода картинки;

DataGridView - для вывода самой базы данных;

TabControl - для вкладки с таблицами базы;

DateTimePacker - ввод даты;

CheckBox - выбор, в виде "галочки";

NumericUpDown - ввод числовых данных.

После запуска программы открывается окно "AUTOSALON - HelloWindow" (см. рис.3.2.1) в котором предлагается выбрать имя пользователя (Администратор или Продавец) и ввести пароль. Выбор учетной записи осуществляется с помощью элемента ConboBox. Ввод пароля необходимо осуществить в соответствующее поле - MascedTextBox. Для попытки входа в систему необходимо нажать кнопку "Вход" (элемент Button). Если пароль введен не корректно, то ничего не произойдет. У пользователя имеется неограниченное количество попыток ввести верный пароль и войти в систему.


Рис.3.1.1 - Окно "AUTOSALON - Hello Window"


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

Все текстовые матки полей отображаются с помощью Label.

Если была выбрана учетная запись Администратора и пароль принят, будет выведено окно выбора действий для администратора, которое изображено на рисунке 3.1.2 В данном окне пользователю будет предложено выбрать действие с помощью ComboBox:

Изменение пароля учетной записи Администратора;

Изменение пароля учетной записи Продавца;

Просмотр (редактирование) базы.


Рис.3.1.2 - Окно выбора действий Администратора


Для перехода на нужное действие необходимо нажать на кнопку "Перейти" (элемент Button).

Если пользователь выбирает "Изменение пароля учетной записи Администратора" или "Изменение пароля учетной записи Продавца", то откроется окно изменения пароля, которое представлено на рисунке 3.1.3.


Рис.3.1.3 - Окно изменения пароля


В окне изменения пароля задействованы такие элементы как TextEdit и Button.

Если пользователь выберет "Просмотр (редактирование) базы", то появится основное окно базы данных (см. рис.3.1.4).


Рис.3.1.4 - Главное окно базы


Таблицы базы размещены на вкладках TabControl. Сама таблица отображается с помощью DataGridView. В главном окне базы так же присутствуют элементы Buttonдля добавления, редактирования и поиска данных.

При нажатии кнопки добавления, (см. рис.3.1.5-3.1.10) на экране появится окно для добавления элемента, в котором присутствуют TextBox, Button, ComboBox, DateTimePacker, CheckBox, NumericUpDown.


Рис.3.1.5 - Окно добавления автомобиля


Рис.3.1.6 - Окно добавления мотоцикла


Рис.3.1.7 - Окно добавления шин


Рис.3.1.8 - Окно добавления дисков


Рис.3.1.9 - Окно добавления клиента


Рис.3.1.10 - Окно добавления продавца


3.2 Документирование программного обеспечения


3.2.1 Разработка описания программы

Согласно ГОСТ 19.402 в описание программы должна быть включена информация об обозначении и наименовании программы, о программном обеспечении, необходимом для функционирования программы. Должны быть указаны классы решаемых задач и/или назначение программы и сведения о функциональных ограничениях на применение. Должно присутствовать описание логической структуры программы.

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

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

Описание программы представлено в приложении.


3.2.2 Разработка руководства пользователя

Согласно ГОСТ 19.505 руководство пользователя должно включать сведения о назначении программы и информацию, достаточную для понимания функций программы и ее эксплуатации. Должны быть указаны условия, необходимые для выполнения программы (минимальный и/или максимальный состав аппаратных и программных средств и т.п.).

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

Руководство пользователя представлено в приложении.


3.2.3 Программа и методика испытаний

Одним из тестов данного программного обеспечения была замена стандартного файла базы на файл другого содержания (размером 690мб и размером 2 кб), но с расширением, с которым работает данная программа. При попытке загрузить такой файл сбоя не произошло, а было выведено сообщение о том, что не удалось прочитать файл базы.

При попытке удаления файла базы во время работы файла был удален, однако работа приложения не нарушилась и данные не потерялись из-за использования структуры List.

При размерности базы свыше 10000 элементов в каждом файле (что соответствует примерно 51 кб) возможно замедление загрузки таблицы при запуске программы. Графики быстродействия, загрузки ЦП и хронологии использования физической памяти при загрузки размерности фалов базы в 10000 элементов представлен на рисунке 3.1.11.


Рис.3.1.11 - Графики быстродействия, загрузки ЦП и хронологии использования физической памяти


.4 Тестирование программного обеспечения


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

Данные о последних обнаруженных ошибках и их исправлении представлены в таблице 3.4.1.


Таблица 3.4.1 - Ошибки и отметки об их исправлении.

ОшибкаДатаОтметка об исправленииОшибка при попытке открытия отсутствующего файла с хеш-значением пароля. 30.11.2012 г. Ошибка исправлена. Ошибка при добавлении фото продавца. Если фото не указано, осуществляется заполнение данного поля фото последнего добавленного продавца. 30.11.2012 г. Ошибка исправлена. Ошибка при попытке добавления в качестве фото продавца вместо файла изображения любого другого файла 7.12.2012 г. Ошибка исправлена.

Заключение


В процессе работы над данным курсовым проектом была создана программа, которая позволяет обслуживать автосалоны. Данная программа работает под управлением операционной системы Windows XP/Vista/7/2003/2008.

Были закреплены практические навыки работы с объектно-ориентированным подходом в программировании.

Были изучены основные возможности языка объектно-ориентированного программирования C#, в частности работа с окнами и использование стандартных шаблонов оконного интерфейса.

Литература


1.Форум программистов и сисадминов CyberForum.ru // Электронный ресурс: URL: <#"center">Приложение А


Описание программы

ОБЩИЕ СВЕДЕНИЯ

Обозначение и наименование программного продукта: приложение, позволяющее вести учет автомобилей, дисков, шин, мототехники, продавцов и клиентов автосалона.

Наименование: "Autosalon".

Стороннее программное обеспечение, необходимое для функционирования программы:

Операционная система Windows XP/Vista/7/2003/2008;

Framework.net 4.

Язык программирования

Для разработки данного приложения использовался язык программирования C#.

Д.1ФУНКЦИОНАЛЬНОЕ НАЗНАЧЕНИЕ

Программа Autosalon предназначение для ведения учетности товаров автосалона (автомобилей, мототехники, шин, дисков), а также клиентов и продавцов.

Ее возможности включают в себя добавление данных:

Добавление автомобиля;

Добавление дисков;

Добавление шин;

Добавление мототехники;

Добавление клиента;

Добавление продавца.

Просмотр информации в виде таблицы:

Просмотр информации об автомобилях;

Просмотр информации о клиентах;

Просмотр информации о шинах;

Просмотр информации о дисках;

Просмотр информации о мототехнике;

Просмотр информации о продавцах.

Поиск данных по любым совпадениям базы. Сортировка по любому столбцу таблицы базы в прямом и обратном порядке. Редактирование элементов базы (кроме редактирования клиентов):

Редактирование данных о шинах;

Редактирование данных об автомобиле;

Редактирование данных о дисках;

Редактирование данных о мототехнике;

Редактирование данных о продавцах.

Автоматическое сохранение в файл и загрузка базы из файла

Д.2ОПИСАНИЕ ЛОГИЧЕСКОЙ СТРУКТУРЫ

Алгоритм программы

1.При запуске программы открывается окно, в котором необходимо выбрать учетную запись (Администратор или Продавец) и ввести пароль. Проверка на корректность пароля проверяется по хеш-значению:

)Проверяется хеш-значение введенного пароля и текущего (истинного) пароля;

2)Если хеш-значения совпадают, переход к шагу 2.

)Если хеш-значения не совпадают, ожидание ввода корректного пароля.

2.Если была выбрана учетная запись Администратора и пароль введен правильно, то на экране появляется окно, в котором необходимо выбрать действие, доступное Администратору:

Изменение пароля учетной записи Администратора;

Изменение пароля учетной записи Продавца;

Просмотр (редактирование) базы.

3.Если выбрано действие смены пароля, то на появляется окно смены пароля:

)Ввод текущего пароля;

2)Ввод нового пароля;

)Повторение нового пароля;

)Если введенный пароль совпадает с текущим, переход к 4); если нет - вывод соответствующего сообщения и ожидание ввода корректного пароля;

)Проверка на совпадение полей ввода нового пароля;

)Если пароли совпадают, смена пароля; если нет - вывод соответствующего сообщения и ожидание ввода совпадающих паролей.

4.Если выбрано действие просмотра (редактирования) базы появляется главное окно базы.

)При выборе одной из вкладок базы осуществляется десериализация соответствующего файла базы:

2)Если десериализация прошла успешно (файл существует) - запись десериализованных данных в струкутуру типа List<Type> и переход к 3); если нет - вывод соответствующего сообщения о невозможности прочитать файл и создание нового файла базы;

)Вывод данных в таблицу.

5.При выборе действия добавления элемента в главном окне базы или дочернем окне появляется окно для добавления соответствующего элемента (автомобиля, мотоцикла, шин, дисков, продавца):

)Считывание данных из соответствующих полей;

2)Создание экземпляра переменной соответствующего типа;

)Заполнение значениями при помощи конструктора класса;

)Добавление в структуру типа List<Type>;

)Вывод (изменение, если выбрано действие изменения - см. описание ниже) только что введенных данных в таблицу базы.

6.При выборе действия изменения данных открывается окно изменения данных и выполняются шаги действия 5.

7.При выборе действия поиска (если ключ поиска введен) происходит поиск по всем совпадениям активной в данный момент таблицы:

1)Проход по ячейкам активной таблицы; если таблица закончилась - вывод сообщения о результатах поиска;

2)Если ключ совпадает со значением текущий ячейки выделить строчку; если нет переход к 1)

8.Если выбрано действие обновления активной в данный момент таблицы базы происходит проход по всей базе и снятие выделения с выделенных строк:

)Проход по строкам; если таблица закончилась выход из цикла прохода по строкам;

2)Если текущая строка выделена - снять выделение; переход к 1).

9.Если была выбрана учетная запись Продавца и пароль введен корректно, то на экране появляется главное окно базы, для которого характерны действия 4 - 8.

Используемые методы

При написании программы использовались методы обработки информации, реализованные в системных библиотеках. Для создания пользовательского интерфейса были использованы стандартные возможности среды MicrosoftVisualStudio 2010 создания окон приложения с использованием форм.

Структура программы

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

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

При просмотре базы пользователь может отсортировать данные по любому из столбцов по возрастанию или убыванию.

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

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

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

При выборе функции поиска, необходимо ввести ключ поиска и нажать кнопку "Поиск".

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

Д.3ИСПОЛЬЗУЕМЫЕ ТЕХНИЧЕСКИЕ СРЕДСТВА

Для работы данного приложения необходим персональный компьютер (стационарный или ноутбук) со следующими минимальными системными требованиями:

ОС Windows XP;

256 мб ОЗУ;

15 мб свободного места на жестком диске для установки приложения;

Клавиатура;

Мышь;

Монитор.

Д.4ВЫЗОВ И ЗАГРУЗКА

Программу можно запустить двойным кликом левой клавиши мыши по исполняемому файлу "Autosalon. exe". Если создан ярлык существует возможность запуска через двойной клик левой клавишей мыши по ярлыку.

Д.5ВХОДНЫЕ ДАННЫЕ

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

Входные данные (файла базы с расширением *. dat) должны находиться в папке с исполняемым файлов приложения.

Д.6ВЫХОДНЫЕ ДАННЫЕ

Выходными данными работы программы являются таблицы базы, а так же файла, с сохраненными данными.


Приложение Б


Руководство пользователя

Е.1НАЗНАЧЕНИЕ ПРОГРАММЫ

Данная программа предназначена для обслуживания автосалона - ведения учета поступления и продажи:

¾Автомобилей;

¾Мотоциклов;

¾Шин;

¾Дисков.

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

Е.2УСЛОВИЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ

Данная программа должна успешно функционировать на компьютерах со следующей минимальной конфигурацией:

ОС Windows XP;

256 мб ОЗУ;

15 мб свободного места на жестком диске для установки приложения;

Клавиатура;

Мышь;

Монитор.

Е.3ВЫПОЛНЕНИЕ ПРОГРАММЫ

Запуск программы

Запуск программы осуществляется при помощи исполняемого файла "Autosalon. exe".

После запуска программы пользователю будет предложено выбрать учетную запись и ввести пароль.

Вход под учетной записью Администратора

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

¾Изменение пароля учетной записи Администратора;

¾Изменение пароля учетной записи Продавца;

¾Просмотр (редактирование) базы.

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

При выборе действия просмотра (редактирования) базы на экране появится основное окно программы - вкладки с таблицами базы.

Для добавления элемента в активную таблицу необходимо нажать кнопку добавления. Далее необходимо ввести нужные значения в соответствующие поля и нажать кнопку "Добавить".

Для изменения элемента активной базы необходимо выделить изменяемую строку и нажать кнопку "Изменить". Далее поменять значения в нужных полях и нажать кнопку "Сохранить". Для добавления покупателя к автомобилю или мотоциклу, а так же временного владельца к автомобилю необходимо нажать соответствующие кнопки в окне добавления/редактирования автомобиля или мотоцикла. Для удаления временного владельца автомобиля необходимо в окне редактирования автомобиля нажать кнопку "Удалить временного владельца".

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

Для поиска элементов, удовлетворяющих некоторому ключу, необходимо в соответствующее поле - "Ключ поиска" ввести ключ и нажать кнопку "Поиск". В случае, если были найдены совпадения в текущей таблице будут выделены соответствующие строки.

Для отмены выделения строк/строки необходимо нажать на кнопку "Обновить".

Вход под учетной записью Продавца

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

Другие действия программы

Сохранение элементов в файл происходит автоматически при их добавлении или изменении.

Е.4СООБЩЕНИЯ ОПЕРАТОРУ

При работе с программой выводятся некоторые сообщения в ответ на действия оператора.

Если на диске не был найден тот или иной файл базы будет выведено сообщение о невозможности прочитать файл и создан новый пустой файл базы. В случае повреждения файла так же будет выведено сообщение о невозможности прочитать файл.

Так же осуществляется вывод сообщений об успешном или не успешном поиске.

Для учетной записи Администратора, в случае не удачной смены пароля так же будут выведены сообщения о соответствующих ошибках.


Содержание Введение 1. Анализ исходных данных 1.1 Характеристика требований на разработку 1.2 Анализ предметной области 1.3 Специальное и общ

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ