Разработка бинарного файлового формата "студент вуза" и приложения для управления им на языке программирования С#
Разработка приложения со стандартным графическим интерфейсом пользователя в среде программирования Microsoft Visual Studio на языке программирования С# с использованием библиотеки классов NET. Описание программного обеспечение и руководство пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 14.11.2017 |
Размер файла | 1,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Автономная некоммерческая образовательная
организация высшего образования
«Сахалинский гуманитарно-технологический институт»
ФАКУЛЬТЕТ ЭКОНОМИКИ И ИНФОРМАТИКИ
Кафедра компьютерные технологии и системы
КУРСОВАЯ РАБОТА
по дисциплине «Современные программные средства»
РАЗРАБОТКА БИНАРНОГО ФАЙЛОВОГО ФОРМАТА «СТУДЕНТ ВУЗА» И ПРИЛОЖЕНИЯ ДЛЯ УПРАВЛЕНИЯ ИМ НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ С#
г. Южно-Сахалинск 2017 г.
Оглавление
интерфейс приложение программирование графический
1. Постановка задачи
2. Описание формата хранения данных
2.1 Описание моделируемого понятия
2.2 Описание бинарного файлового формата «student»
2.3 Описание XML-формата «student»
2.4 Описание HTML-шаблона для формата «student»
3. Описание программного обеспечения
3.1 Общие сведения о программе, вызов и загрузка
3.2 Описание логической структуры проекта программы
3.3 Описание класса «student»
3.4 Описание классов оконного интерфейса
4. Руководство пользователя
4.1 Аппаратные требования
4.2 Программные требования
4.3 Указания по установке и запуску программы
4.4 Указания по использованию программы
Заключение
Список использованных источников
Приложение
1. Постановка задачи
Цель курсовой работы - разработать приложение со стандартным графическим интерфейсом пользователя в среде программирования «Microsoft Visual Studio» на языке программирования С# с использованием библиотеки классов.NET. Программа предназначена для обработки сведений о понятии «студент высшего учебного заведения» и должна удовлетворять требованиям, описанным далее.
В рамках выполнения курсовой работы требуется разработать типы данных (класс) и спецификацию хранения данных о понятии «студент высшего учебного заведения». На основании созданной спецификации разработать программное обеспечение, которое может быть использовано для работы с файлами данного формата. Данные должны быть представлены в следующих формах: бинарной, структурированной текстовой форме (XML), текстовой (TXT) и гипертекстовой (HTML).
Требования к типам данных (классам):
1. В программе должен быть создан отдельный файл (далее - модуль), предназначенный для хранения информации о предложенном понятии во время работы программы.
2. Модуль должен содержать определения классов на языке программирования C# для описания моделируемого понятия.
3. Спецификации классов должны в достаточно полной мере описывать моделируемое понятие.
4. Спецификация класса должна предусматривать хранение не менее чем шести полей разного типа (среди типов полей должны быть представлены (хотя бы один раз) все стандартные типы данных языка С#: целые числа, вещественные числа, логические значения, строки, графическое изображение, коллекцию (массив, список, словарь и так далее)). Максимальное количество полей не ограничивается.
5. Для обеспечения корректной работы в составе классов должны быть определены:
a. Закрытые члены (поля, методы),
b. Открытые члены (свойства, индексаторы, методы, перегруженные операции),
c. Свойства классов должны определять аксессоры чтения (get) и записи (set) для корректного получения значений полей и корректного присваивания значений полям класса,
d. В составе модуля рекомендуется использовать перечисления в том случае, если то или поле класса принимает значения из перечислимого конечного множества (к таким полям, например, можно отнести «пол человека» или «улицы города»).
Требования к спецификации бинарного файлового формата:
1. Спецификация должна в достаточно полной мере описывать моделируемое понятие.
2. В файле должен быть задан уникальный целочисленный распознавательный знак длиной в 32 бита.
3. Спецификация должна предусматривать хранение всех полей, предусмотренных в спецификации класса (см. пункт 4 выше).
Требования к спецификации текстового файлового формата XML:
1. Спецификация должна в достаточно полной мере описывать моделируемое понятие и повторять структуру бинарного файла в форме тегового представления языка XML.
2. В каждом из тегов, представляющих ту или характеристику моделируемого понятия должно быть представлено соответствующее значение.
3. В одном XML-файле должны быть представлены все поля, предусмотренные спецификацией соответствующего бинарного файла (за исключением полей графических изображений).
Требования к программному обеспечению:
1. Программа должна иметь стандартный графический интерфейс пользователя на русском языке.
2. Для ввода и вывода данных программа должна использовать визуальные классы соответствующего типа.
3. Программа должна иметь многооконный интерфейс и использовать вспомогательные окна для ввода и вывода информации по смыслу задачи.
4. Для выдачи команд в окне программы должны быть представлены главное меню и панель инструментов. Размещение командных кнопок в рабочей области окна программы запрещено.
5. Программа должна давать возможность полного вывода сведений о множестве объектов, хранимых в файле, в главное окно программы.
6. Программа должна предоставить возможность создать файл разработанного формата и записать в него данные, которые ввёл пользователь.
7. Программа должна иметь возможность открыть любой файл созданного разработанного вами формата, прочитать из него данные и вывести в интерфейсе программы для просмотра и редактирования.
8. Программа должна предоставить возможность экспорта сведений из файла созданного бинарного формата в XML-файл, TXT-файл и HTML-файл.
9. Программа должна реализовать копирование данных во время работы программы в системный буфер обмена.
10. Операции выбора имени файла для сохранения или открытия должны выполняться через соответственные диалоговые окна.
11. Программа должна проверять возможные ошибки файловых потоков при выполнении операций с файлами и сообщать об ошибках.
12. При выполнении операции сохранения программа должна проверять корректность данных, заносимых в файл пользователем. В случае ошибок (например, при вводе пустого имени или отрицательного значения возраста) нужно сообщать об ошибке и прерывать операцию сохранения (или же программа не должна давать возможности ввода неправильных данных).
13. Ошибки времени исполнения, приводящие к краху программы во время её работы не допускаются.
2. Описание формата хранения данных
2.1 Описание моделируемого понятия
Понятие, подлежащее моделированию - «студент ВУЗа». Данное понятие описывает множество людей, обучающихся в высших учебных заведениях. В соответствии с постановкой задачи в данном понятии требуется выявить не менее шесть характеристик и представить их в дальнейшем в форме класса на языке программирования C#, бинарного файла, файла в формате XML, файле гипертекстовой разметки HTML, файле простого текстового формата TXT. Рассмотрим основные базовые характеристики понятия «студент», которые будут далее представлены в указанных файлах.
Таблица 1
Описание характеристик понятия «студент»
№ |
Названиехарактеристики |
Смысл |
Тип данных |
|
1 |
Имя студента |
Описывает имя студента в соответствии с паспортными данными (обязательная характеристика) |
Текстовая строка |
|
2 |
Отчество студента |
Описывает отчество студента в соответствии с паспортными данными (не обязательная характеристика) |
Текстовая строка |
|
3 |
Фамилия студента |
Описывает фамилию студента в соответствии с паспортными данными (обязательная характеристика) |
Текстовая строка |
|
4 |
Пол студента |
Описывает пол студента в соответствии с паспортными данными (обязательная характеристика) |
Текстовая строка |
|
5 |
Дата рождения студента |
Описывает дату рождения студента в соответствии с паспортными данными (обязательная характеристика) |
Дата |
|
6 |
Год поступления в ВУЗ |
Описывает год поступления студента в соответствии распорядительными документами учебного заведения |
Целое число |
|
7 |
Текущий номер курса обучения |
Описывает номер текущего года обучения студента в соответствии распорядительными документами учебного заведения |
Целое число |
|
8 |
Факультет |
Название факультета, на котором обучается данный студент (в соответствии распорядительными документами учебного заведения) |
Строка |
|
9 |
Группа |
Название учебной группы, в которой обучается данный студент (в соответствии распорядительными документами учебного заведения) |
Текстовая строка |
|
10 |
Номер зачётной книжки |
Идентифицирующий признак, задающий номер документа студента в ВУЗе (в соответствии распорядительными документами учебного заведения) |
Текстовая строка |
|
11 |
Фотография |
Цифровая копия фотографического изображения лица студента. |
Изображение |
2.2 Описание бинарного файлового формата «student»
В соответствии с таблицей 1 была составлена спецификация бинарного файлового формата, предназначенного для хранения информации о студенте ВУЗа на дисковом накопителе ЭВМ. В бинарном файле должны быть представлены все поля, выявленные для данного понятия. При описании типов данных полей используются типы данных языка программирования Visual C# (см. таблицу 2).
Название файлового формата: «student».
Расширение имени файла данного формата: «student».
Распознавательная идентификационная запись: 1234512345.
Таблица 2
Описание бинарного файлового формата «student»
№ |
Смысл поля |
Тип данных |
Размер поля |
Ограничениена значение |
|
1 |
Распознавательный знак |
int |
4 байта |
допускается только 1234512345 |
|
2 |
Имя студента |
string |
100 байт |
до 50 символов |
|
3 |
Отчество студента |
string |
100 байт |
до 50 символов |
|
4 |
Фамилия студента |
string |
100 байт |
до 50 символов |
|
5 |
Пол студента |
string |
14 байт |
до 7 символов (принимается только два значения: «мужской», «женский»). |
|
6 |
Дата рождения студента |
long |
8 байт |
задаётся внутренним способом правления типа данных DateTiemе (дата рождения ограничивается предельным возрастом студента - от 17 до 60 лет) |
|
7 |
Год поступления в ВУЗ |
int |
4 байта |
год поступления не может быть позднее текущего года (на момент запуска программы), год поступления не раньше года даты рождения студента |
|
8 |
Текущий номер курса обучения |
int |
4 байта |
значение от 1 до 5 |
|
9 |
Факультет |
string |
50 байт (до 25 символов) |
значение из множества:"Экономики и информатики", "Инженерный", "Иностранных языков", "Юридический" |
|
10 |
Группа |
string |
14 байт (до 7 символов) |
значение из множества: "ПИ-11", "ПИ-21", "ПИ-31", "ИВТ-11", "ИВТ-21", "ИВТ-31", "ЭС-11", "ЭС-21", "ЭС-31", "АЯ-11", "АЯ-21", "Ю-11", "Ю-21", "Ю-31" |
|
11 |
Номер зачётной книжки |
string |
24 байтов (до 12 символов) |
строится по шаблону«000-LLL-0-00», где 0 - любая цифра, L - любая буква |
|
12 |
Длина фотографии в байтах |
int |
4 байта |
положительное число |
|
13 |
Фотография |
byte[] |
300 Кбайт (в среднем) |
байтовый массив во внутреннем представлении типа данных Image |
Средний размер создаваемого файла составляет около 300 Кбайт (в зависимости от длин текстовых значений и размера фотографии может уменьшаться или увеличиваться). Для обеспечения быстродействия накладываются ограничения на размер принимаемой фотографии: линейные размеры изображения не должны превышать 300 пикселов как по вертикали, так и по горизонтали.
Распознавательный знак - это уникальное сочетание символов, которое позволяет программам, работающим с этим форматом файлов, отличать данный формат от других. При открытии программа может сначала прочитать этот знак и проанализировать его значение - если оно совпадает с ожидаемым, то значит, файл имеет известную структуру и его можно обрабатывать, если же не совпадает - то, скорее всего, файл имеет другую структуру или повреждён. Для представленного формата данных распознавательный знак должен быть равен целому числу (длиной в 4 байта) «1234512345».
2.3 Описание XML-формата «student»
Для построения XML документа следует определить, какие тэги будут использованы для моделирования данных изучаемого понятия. Все данные XML-документа обычно помещается в тэг верхнего уровня - он называется корневым элементом и представляет весь документ целиком. Все остальные данные помещаются во вложенные теги. Структура XML-файла представлена в таблице №3, пример файла данных в формате XML представлен в листинге №1.
Таблица 3
Описание структуры файла XML
№ |
Название тега |
Смысл |
Подчинённость |
|
1 |
<student> |
описывает понятие в файле формата xml |
корневой тег |
|
2 |
<firstname> |
Имя студента |
<student> |
|
3 |
<midlename> |
Отчество студента |
<student> |
|
4 |
<lastname> |
Фамилия студента |
<student> |
|
5 |
<sex> |
Пол студента |
<student> |
|
6 |
<borndate> |
Дата рождения студента |
<student> |
|
7 |
<enteryear> |
Год поступления в ВУЗ |
<student> |
|
8 |
<currentyear> |
Текущий номер курса обучения |
<student> |
|
9 |
<facultet> |
Факультет |
<student> |
|
10 |
<groupname> |
Группа |
<student> |
|
11 |
<idnumber> |
Номер зачётной книжки |
<student> |
Так как формат XML является текстовым, то из описанного формата была исключена информации об изображении.
Листинг 1 - Пример файла данных XML
2.4 Описание HTML-шаблона для формата «student»
В соответствии с заданием необходимо разработать HTML-шаблон для экспорта данных из бинарного представления в наглядное и понятное представление в переносимом файловом формате HTML, из которого информация может быть отправлена в другие программы. Шаблон документа строится по правилам разметки гипертекста и отображает сведения о студенте в виде, показанном на рисунке 1.
Рисунок 1 внешний вид HTML-шаблона
Во внутреннем представлении шаблон представляет из себя стандартный файл HTML, имеющий следующую структуру (листинг 2). В данном шаблоне место подстановки фактических значений обозначено знаком «*».
Листинг 2 - структура HTML-шаблона
<html>
<head>
<meta charset='utf-8' />
<title>****</title>
</head>
<body style='font-family:tahoma; font-size:16px;'>
<h3 style='color:red;'>Анкета студент(а/ки)</h3>
<hr />
<table cellspacing='10'>
<tr style='vertical-align:top;'>
<td>
<img src='***' />
</td>
<td>
<b>Имя студент(а/ки)</b>: ***<br />
<b>Отчество студент(а/ки)</b>: ***<br />
<b>Фамилия студент(а/ки)</b>: ***<br />
<b>Пол студент(а/ки)</b>: ***<br />
<b>Дата рождения студент(а/ки)</b>: ***<br />
<b>Год поступления</b>: ***<br />
<b>Номер курса</b>: **<br />
<b>Факультет</b>: ***<br />
<b>Группа</b>: ***<br />
<b>Номер зачётной книжки</b>: ***-***-*-**<br />
</td>
</tr>
</table>
</body>
</html>
Документ представленного формата строится программно при выполнении команды экспорта из бинарного представления в формат HTML.
3. Описание программного обеспечения
3.1 Общие сведения о программе, вызов и загрузка
Программное обеспечение «Анкета студента» создано с использованием объектно-ориентированной технологии и библиотеки классов «Microsoft.NET Framework» на языке программирования «Visual С#» в среде разработки программного обеспечения «Microsoft Visual Studio 2012».
Главный исполняемый двоичный файл называется «Курсовая работа.exe». Для исполнения программы на компьютере пользователя необходимо наличие установленной системы времени исполнения Microsoft.NET Framework версии не ниже 4.5.
Программа не требует инсталляции. Вызов и загрузка программного обеспечения осуществляются запуском исполняемого файла «Курсовая работа.exe». Исполняемый файл может находиться в любом каталоге компьютера и не требует наличия других файлов (при условии наличия на целевом компьютере системы Microsoft.NET Framework версии не ниже 4.5).
3.2 Описание логической структуры проекта программы
Проект программы включает в себя:
1) 3 файла исходного кода на языке программирования C#,
2) 1 форму главного окна программы,
3) 1 файл проекта,
4) 9 файлов ресурсов проекта в текстовом виде (справочники имён, фамилий и отчеств для вывода всплывающих подсказок в полях текстового ввода),
5) 13 файлов значков графического формата (PNG и ICO) для оформления элементов графического интерфейса (все файлы значков взяты с сайта «https://www.iconfinder.com»).
Таблица 4
Перечень модулей проекта
№ |
Название модуля |
Назначение модуля |
|
1 |
Program.cs |
Входная точка программного приложения, содержит метод Main программы и запускает её главный исполняемый поток. |
|
2 |
Form1.cs |
Объявление и реализация пользовательского классов для описания в программе понятия «студент» и решения основных задач программы. |
|
3 |
Form1.designer.cs |
Объявление класса главного окна приложения (в части используемых объектов графического интерфейса). |
В составе программы реализованы классы для решения задач курсового проектирования. Созданные классы описаны в таблице 5.
Таблица 5
Основные типы данных (классы), созданные в программе
№ |
Название модуля |
Назначение модуля |
|
1 |
Form1 |
Класс класса главного окна приложения. |
|
2 |
MetaData |
Вспомогательный статический класс для хранения неизменяемых значений, используемых программой (магический знак файла, список факультетов, список учебных групп, название пола студента). |
|
3 |
Student |
Описания в программе понятия «студент» и решения основных задач программы. |
Описания данных классов показаны данные в пунктах 3.3 - 3.4.
3.3 Описание класса «student»
Класс «student» создан в программе как средство моделирования соответствующего понятия. В составе класса, в соответствии с заданием, определены закрытые поля (для защищённого хранения сведений о студенте в соответствии со спецификацией, данной в таблице 1), открытие свойства (для безопасного и адекватного по смыслу обращения в защищённым полям класса), методы для управления свойствами и решения основных задач программы.
Поля класса служат для хранения информации о моделируемом понятии. В соответствии с принципом инкапсуляции поля класса обычно объявляются как закрытые и недоступные для прямого использования в модулях, использующих класс, их содержащий. Это делается для того, чтобы использующие программы не могли повредить данные класса некорректными действиями. Логика работа с полями реализуется в классе с помощью методов и свойств, которые являются открытыми. Перечень закрытых полей показан в таблице 6.
Таблица 6
Закрытые поля класса «student»
№ |
Тип поля |
Название поля |
Назначение поля |
|
1 |
string |
firstName |
Хранит имя студента |
|
2 |
string |
midleName |
Хранит отчество студента |
|
3 |
string |
lastName |
Хранит фамилия студента |
|
4 |
string |
sex |
Хранит пол студента |
|
5 |
DateTime |
dateBorn |
Хранит дату рождения студента |
|
6 |
int |
enterYear |
Хранит год поступления в ВУЗ |
|
7 |
int |
currentYear |
Хранит текущий номер курса обучения |
|
8 |
string |
faculName |
Хранит название факультет |
|
9 |
string |
groupName |
Хранит название группы |
|
10 |
string |
idNumber |
Хранит номер зачётной книжки |
|
11 |
Image |
photoFace |
Хранит фотография студента |
Свойства служат для обеспечения целостности данных, хранящихся в закрытых полях класса. Каждое свойство служит для работы с тем или иным конкретным полем и содержит аксессоры set (для изменения значения данного иного поля) и get (для получения значения поля в вызывающей программе). Таким образом, свойства - это программируемый на стороне класса способ доступа к полям. Перечень свойств дан в таблице 7.
Таблица 7
Открытые свойства класса «student»
№ |
Тип свойства |
Название свойства |
Назначение свойства |
|
1 |
string |
FirstName |
Доступ к полю firstName |
|
2 |
string |
MiddleName |
Доступ к полю midleName |
|
3 |
string |
LastName |
Доступ к полю lastName |
|
4 |
string |
Sex |
Доступ к полю sex |
|
5 |
DateTime |
BornDate |
Доступ к полю dateBorn |
|
6 |
int |
EnterYear |
Доступ к полю enterYear |
|
7 |
int |
CurrentYear |
Доступ к полю currentYear |
|
8 |
string |
FakultName |
Доступ к полю faculName |
|
9 |
string |
GroupName |
Доступ к полю groupName |
|
10 |
string |
IdNumber |
Доступ к полю idNumber |
|
11 |
Image |
PhotoFace |
Доступ к полю photoFace |
|
12 |
string |
FIO |
Формирует строку, состоящую составленную из имени, отчества и фамилии студента. |
Рассмотрим в качестве примера способ реализации доступа к полю «dateBorn», реализованный в свойстве «BornDate» (листинг 3). В этом свойстве при выполнении присваивания значения полю «dateBorn» выполняются проверки, обеспечивающие корректность присваиваемого значения.
Листинг 3 - код свойства «BornDate»
/// <summary>
/// дата рождения студента
/// </summary>
public DateTime BornDate
{
set
{
// студент не моложе 17 лет и не старше 60 лет
if (value <= DateTime.Now.Date.AddYears(-17) &&
value >= DateTime.Now.Date.AddYears(-60))
{
// если да, то присвоить значение
dateBorn = value;
}
else
{
// иначе присвоить значение по умолчанию
// (текущая дата минус 17 лет)
dateBorn = DateTime.Now.Date.AddYears(-17);
}
}
get // получить нужное значение
{
return dateBorn;
}
}
Остальные свойства класса «student» реализованы аналогично.
Для реализации задач создаваемой программы в состав класса «student» включены методы. Методы - это функции, реализованные в теле класса, имеющие полный доступ к полям и свойствам, предназначенные для решения задач, стоящих перед создаваемым классом. В данной курсовой работе основные задачи - это сохранение данных в файлы различных форматов, чтение данных из бинарного файла и ряд других сопутствующих задач. Перечень методов описан в таблице 8.
Таблица 8
Методы класса «student»
№ |
Прототип метода |
Назначение метода |
|
1 |
public student() |
Метод-конструктор позволяет задать значения по умолчанию для всех полей класса при создании его объекта в взывающей программе. |
|
2 |
public override string ToString() |
Метод позволяет собрать все сведения о студенте в одну общую строку string. |
|
3 |
public bool ReadFromFile(string FileName) |
Метод позволяет прочитать данные студента из бинарного файла с указанным именем (файл должен соответствовать спецификации в таблице 2). |
|
4 |
public bool SaveToFile(string FileName) |
Метод позволяет сохранить данные студента в бинарный файл с указанным именем (файл должен соответствовать спецификации в таблице 2). |
|
5 |
public string ToHTML(string PictFile) |
Получить строку с представлением данных в форме HTML (строка должна соответствовать шаблону (см. листинг 2)). |
Рассмотрим код метода для сохранения данных студента в бинарный файл (листинг 4). При записи данных в файл копируются значения всех полей класса. При этом соблюдается порядок следования и типы данных полей, указанные в таблице 2, описывающей формат бинарного файла «student». Имя файла для сохранения поступает в метод из вызывающей программы.
Листинг 4 - код метода «SaveToFile»
/// <summary>
/// сохранить данные студента в файл
/// </summary>
/// <param name="FileName">имя файла для сохранения</param>
/// <returns></returns>
public bool SaveToFile(string FileName)
{
try
{
// файловый поток для создания файла
FileStream SFile = new FileStream(FileName, FileMode.Create);
// объект записи в поток
BinaryWriter Bw = new BinaryWriter(SFile);
// последовательная запись полей в файл
Bw.Write(MetaData.magicSign);
Bw.Write(FirstName);
Bw.Write(MiddleName);
Bw.Write(LastName);
Bw.Write(BornDate.ToBinary());
Bw.Write(Sex);
Bw.Write(EnterYear);
Bw.Write(CurrentYear);
Bw.Write(GroupName);
Bw.Write(FakultName);
Bw.Write(IdNumber);
// поток для получения изображения в оперативную память
MemoryStream Mem = new MemoryStream();
// загружаем фото в память
// первый аргумент метода - приёмник данных,
// а второй - формат сохранения - bmp для устранения потерь
// данных при сохранении
PhotoFace.Save(Mem, ImageFormat.Bmp);
// получаем байты фотографии в байтовый массив методом ToArray()
byte[] ImageBytes = Mem.ToArray();
// записываем в файловый поток длину байтового массива
// (размер изображения)
Bw.Write(ImageBytes.Length);
// записываем в файловый поток байтовый массив изображения (поле №5)
// указываем что пишем байты начиная с самого первого (имеет номер 0)
// и указываем количество записываемых байтов
Bw.Write(ImageBytes, 0, ImageBytes.Length);
Mem.Close(); // закрыть объекты после завершения
Bw.Close();
SFile.Close();
}
catch(Exception ex)
{
// при возникновении ошибки запись не выполняется
// возвращаем в программу сообщение ошибки
FileError = MetaData.Errors[2];
return false;
}
return true;
}
Кроме класса «student» в программе создан статический класс «MetaData» (метаданные), который хранить неизменяемые данные, используемые классом «student». Такие данные нужны для обеспечения неизменности значений, передаваемых в файл и из файла, показе в интерфейсе программы в списках выбора. Это позволит избежать ошибок при программировании сохранения и чтения данных. К неизменяемым данным класса «student» относятся: название пола, перечень факультетов ВУЗа, названия групп (таблица 9).
Таблица 9
Неизменяемые значения в классе MetaData
№ |
Объявление поля илисвойства |
Набор значений |
|
1 |
public static List<string> Facultets |
"Экономики и информатики", "Инженерный", "Иностранных языков", "Юридический" |
|
2 |
public static List<string> Groups |
"ПИ-11", "ПИ-21", "ПИ-31", "ИВТ-11", "ИВТ-21", "ИВТ-31", "ЭС-11", "ЭС-21", "ЭС-31", "АЯ-11", "АЯ-21", "Ю-11", "Ю-21", "Ю-31" |
|
3 |
public static string[] Sex |
"мужской", "женский" |
|
4 |
public static string[] Errors |
" файл имеет неправильный формат.", " файл повреждён или недоступен.", " невозможно создать и записать файл." |
|
5 |
public static int magicSign |
1234512345 |
3.4 Описание классов оконного интерфейса
Графический интерфейс программы и её полезные действия реализованы в классе окна программы Form1. Данный класс содержит определение собственно графического интерфейса и методов-событий, возникающих при выполнении пользователем действий над элементами графического интерфейса (ввод данных, выбор значений списков, нажатия на командные кнопки меню и панели инструментов). Внешний вид формы в программе Visual Studio показан на рисунке 2.
Рисунок 2 проект окна программы в окне конструктора форм приложения Visual Studio
В окне программы использованы элементы управления графического интерфейса, описанные в таблице 10.
Таблица 10
Элементы управления в окне программы (поля класса Form1)
№ |
Тип данных |
Названиеполя в теле класса |
Назначение |
|
1 |
MenuStrip |
menuStrip1 |
Главное меню программы. |
|
2 |
ToolStrip |
toolStrip1 |
Панель инструментов программы. |
|
3 |
StatusStrip |
statusStrip1 |
Панель статуса в нижней части окна программы (используется для вывода последней выполненной операции). |
|
4 |
ToolStripStatusLabel |
toolStripStatusLabel1 |
Метка вывода о последней операции. |
|
5 |
ToolStripMenuItem |
файлToolStripMenuItem |
Раздел главного меню «Файл» |
|
6 |
ToolStripMenuItem |
сохранитьToolStripMenuItem |
Команда меню «Сохранить как …» |
|
7 |
ToolStripMenuItem |
открытьToolStripMenuItem |
Команда меню «Открыть …» |
|
8 |
ToolStripMenuItem |
выйтиToolStripMenuItem |
Команда меню «Выйти» |
|
9 |
ToolStripMenuItem |
экспортToolStripMenuItem |
Раздел главного меню «Экспорт» |
|
10 |
ToolStripMenuItem |
экспортироватьВXMLToolStripMenuItem |
Команда меню«Экспортировать в XML...» |
|
11 |
ToolStripMenuItem |
экспортироватьВHTMLToolStripMenuItem |
Команда меню«Экспортировать в HTML...» |
|
12 |
ToolStripMenuItem ToolStripMenuItem |
экспортироватьВТекстовыйФайлToolStripMenuItem |
Команда меню «Экспортировать в текстовый файл...» |
|
13 |
TextBox |
textBoxFirstName |
Поле ввода/вывода имени. |
|
14 |
TextBox |
textBoxMidleName; |
Поле ввода/вывода отчества. |
|
15 |
TextBox |
textBoxLastName |
Поле ввода/вывода фамилии. |
|
16 |
ComboBox |
comboBoxSex |
Список выбора названий пола. |
|
17 |
DateTimePicker |
dateTimePickerBorn |
Поле ввода/вывода даты рождения. |
|
18 |
NumericUpDown |
numericEnterYear |
Числовое поле ввода/вывода года поступления. |
|
19 |
NumericUpDown |
numericCurrentYear |
Числовое поле ввода/вывода номер кусра. |
|
20 |
ComboBox |
comboBoxFacultet |
Список выбора названия факультета. |
|
21 |
ComboBox |
comboBoxGroup |
Список выбора названия группы. |
|
22 |
PictureBox |
pictureBoxPhotoFace |
Графическое поле для отображения выбранной фотографии студента. |
|
23 |
MaskedTextBox |
maskedTextBoxIdNumber |
Поле ввода/вывода имени |
|
24 |
OpenFileDialog |
openFileDialogStudent |
Диалоговое окно выбора файла для открытия. |
|
25 |
SaveFileDialog |
saveFileDialogStudent |
Диалоговое окно выбора файла для сохранения. |
|
26 |
OpenFileDialog |
openFilePhotoFace |
Диалоговое окно выбора файла для выбора графического файла. |
|
27 |
FolderBrowserDialog |
folderBrowserExport |
Диалоговое окно выбора каталога для экспорта данных в HTML. |
|
28 |
SaveFileDialog |
saveFileDialogExport |
Диалоговое окно выбора файла для выполнения экспорта в XML или TXT. |
Информация о студенте в основной части программы хранится в поле, объявленном в классе Form1. Это поле имеет тип данных student, и является объектом данного класса. Кроме того, в классе Form1 используется поле для хранения информации о том файле, в котором находится информация о студенте, отображаемом в окне программы в данный момент времени. Объявления указанных полей показаны на листинге 5.
Листинг 5 - Код объявления полей
// информация о студенте
public student CurrentStudent = null;
public string CurrentFile = string.Empty;
Для реализации основной функциональности программы в классе её окна определены методы событий, возникающих при выполнении действий пользователя. Данные действия имеют смысл, привязанный к тому или иному элементу управления и вызывают на исполнение методы, которые решают целесообразную задачу. Список методов и решаемых ими задач показан в таблице 12.
Таблица 12
Методы класса «Form1»
№ |
Прототип метода |
Назначение метода |
|
1 |
public Form1() |
Конструктор класса (выполняет действия при запуске программы перед отображением главного окна программы). |
|
2 |
public void loadMuz() |
Метод загружает из ресурсных файлов подсказки в поля ввода (мужские имена, отчества и фамилии). |
|
3 |
public void loadZen() |
Метод загружает из ресурсных файлов подсказки в поля ввода (женские имена, отчества и фамилии). |
|
4 |
private voidвыйтиToolStripMenuItem_Click(object sender, EventArgs e) |
Метод выполняет команду «Выйти из программы» |
|
5 |
private voidpictureBoxPhotoFace_DoubleClick(object sender, EventArgs e) |
Метод выполняет команду «загрузить фотографию». |
|
6 |
private void toolStripButton1_Click(object sender, EventArgs e) |
Метод позволяет получить данные о студенте из файла и вывести в окно программы. |
|
7 |
private void toolStripButton3_Click(object sender, EventArgs e) |
Метод выполняет очистку всех полей ввода/вывода в окне. |
|
8 |
private voidtextBoxLastName_TextChanged(object sender, EventArgs e) |
Метод выполняет действия при редактировании полей текста. |
|
9 |
private void toolStripButton2_Click(object sender, EventArgs e) |
Метод позволяет сохранить данные студента в бинарный файл. |
|
10 |
private voidочиститьToolStripMenuItem_Click(object sender, EventArgs e) |
Метод выполняет сброс фотографии студента. |
|
11 |
private voidэкспортироватьВXMLToolStripMenuItem_Click(object sender, EventArgs e) |
Метод выполняет экспорт из бинарного файла в файл формата XML. |
|
12 |
private void toolStripButton2_Click_1(object sender, EventArgs e) |
Метод выполняет сохранение файла под текущим именем в бинарном формате. |
|
13 |
private voidcomboBoxSex_SelectedIndexChanged(object sender, EventArgs e) |
Если в списке выбора пола поменялось значение, то метод выполняет подгрузку в текстовые поля имена, отчества, фамилии, соответствующие выбранному полу. |
|
14 |
private voidэкспортироватьВТекстовыйФайлToolStripMenuItem_Click(object sender, EventArgs e) |
Метод выполняет экспорт данных из бинарного файла в текстовый файл. |
|
15 |
private voidэкспортироватьВHTMLToolStripMenuItem_Click(object sender, EventArgs e) |
Метод выполняет экспорт бинарного файла в формат HTML. |
|
16 |
private voiddateTimePickerBorn_ValueChanged(object sender, EventArgs e) |
Метод гарантирует, что год поступления в поле ввода года будет больше года даты рождения на 17 лет. |
|
17 |
private void toolStripButton4_Click(object sender, EventArgs e) |
Метод копирует данные из загруженного бинарного файла в системный буфер обмена. |
В качестве примера рассмотрим реализацию команды экспорта данных из загруженного в программу бинарного файла в формат XML (листинг 6).
Листинг 6 - Код команды экспорта данных в формат XML
private void экспортироватьВXMLToolStripMenuItem_Click(object sender,
EventArgs e)
{
// если нет данных студента, то прекратить работу метода
if (CurrentStudent==null)
{
MessageBox.Show("Перед экспортом загрузите в окно программы данные "
"из файла или сохраните текущие введённые в окне данные в файл.",
"Отказ операции", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
// выбрать файл для экспорта
saveFileDialogExport.DefaultExt = "xml";
saveFileDialogExport.Filter = "Файлы в формате xml|*.xml";
saveFileDialogExport.FileName = CurrentStudent.FIO;
saveFileDialogExport.Title = "Задайте имя файла для экспорта в XML";
// запросить путь к файлу
DialogResult Dres = saveFileDialogExport.ShowDialog();
if (Dres == DialogResult.Cancel) return;
// сохранить данные в файл XML
XmlDocument doc = new XmlDocument();
// создать тег объявления
XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8",
null);
XmlElement root = doc.DocumentElement; // добавить тег в документ
doc.InsertBefore(xmlDeclaration, root);
// узел <student>
XmlElement mainelement = doc.CreateElement(string.Empty,"student",
string.Empty);
doc.AppendChild(mainelement);
// вложенные узлы тега <student>
XmlElement element;
// текст в узле element
XmlText text;
// создать новый узел
element = doc.CreateElement(string.Empty, "firstname", string.Empty);
// создать текст узла
text = doc.CreateTextNode(CurrentStudent.FirstName);
// добавить текст в узел
element.AppendChild(text);
// добавить узел element в главный узел mainelement
mainelement.AppendChild(element);
element = doc.CreateElement(string.Empty, "midlename", string.Empty);
text = doc.CreateTextNode(CurrentStudent.MiddleName);
element.AppendChild(text);
mainelement.AppendChild(element);
element = doc.CreateElement(string.Empty, "lastname", string.Empty);
text = doc.CreateTextNode(CurrentStudent.LastName);
element.AppendChild(text);
mainelement.AppendChild(element);
element = doc.CreateElement(string.Empty, "sex", string.Empty);
text = doc.CreateTextNode(CurrentStudent.Sex);
element.AppendChild(text);
mainelement.AppendChild(element);
element = doc.CreateElement(string.Empty, "borndate", string.Empty);
text = doc.CreateTextNode(CurrentStudent.BornDate.ToLongDateString());
element.AppendChild(text);
mainelement.AppendChild(element);
element = doc.CreateElement(string.Empty, "enteryear", string.Empty);
text = doc.CreateTextNode(CurrentStudent.EnterYear.ToString());
element.AppendChild(text);
mainelement.AppendChild(element);
element = doc.CreateElement(string.Empty, "currentyear", string.Empty);
text = doc.CreateTextNode(CurrentStudent.CurrentYear.ToString());
element.AppendChild(text);
mainelement.AppendChild(element);
element = doc.CreateElement(string.Empty, "facultet", string.Empty);
text = doc.CreateTextNode(CurrentStudent.FakultName);
element.AppendChild(text);
mainelement.AppendChild(element);
element = doc.CreateElement(string.Empty, "groupname", string.Empty);
text = doc.CreateTextNode(CurrentStudent.GroupName);
element.AppendChild(text);
mainelement.AppendChild(element);
element = doc.CreateElement(string.Empty, "idnumber", string.Empty);
text = doc.CreateTextNode(CurrentStudent.IdNumber);
element.AppendChild(text);
mainelement.AppendChild(element);
// сохранить данные в файл XML
doc.Save(saveFileDialogExport.FileName);
// открыть созданный файл в приложении, предназначенном для просмотра XML
Process.Start(saveFileDialogExport.FileName);
toolStripStatusLabel1.Text = "Последняя операция: экспорт в XML " +
"(" + DateTime.Now.ToLongTimeString() + ")";
}
4. Руководство пользователя
4.1 Аппаратные требования
Программное обеспечение «Анкета студента» предназначено для работы на персональных компьютерах совместимых с архитектурой IBM PC. Требования к аппаратной части вытекают из требований, предъявляемых системой времени исполнения «Microsoft.NET Framework». Для работы программы необходим процессор с тактовой частотой не ниже 1 ГГц и оперативной памятью объёмом не менее 512 Мб. Для размещения файлов программы требуется накопитель данных (съёмный или несъёмный) со свободным объёмом не менее 1 Мб. Также необходим стандартный видеоадаптер, совместимый с требованиями операционной системы Windows и монитор, поддерживающие разрешение 1280 на 1024 точек и выше, с частотой обновления не менее 100 Гц. Для управления работой программы необходимо наличие клавиатуры и манипулятора «мышь».
4.2 Программные требования
Программное обеспечение «Анкета студента» поставляется в виде готового для исполнения файла «Курсовая работа.exe». Программа может функционировать под управлением операционных систем семейства Windows версии не ниже 7. Для работы программы на целевом компьютере должна быть установлена исполняющая система «Microsoft.NET Framework 4.5» или более поздней версии (для установки на диске требуется не менее 4,5 ГБ свободного пространства). Установка выполняется из онлайн-установщика с сайта фирмы Microsoft (https://www.microsoft.com/ru-ru/download/details.aspx?id=30653; для установки платформы.NET Framework требуются права администратора).
4.3 Указания по установке и запуску программы
Программное обеспечение не требует установки. Для начала использования программы необходимо открыть папку программы «Анкета студента» (место размещения папки не играет роли), после чего запустить на исполнение файл «Курсовая работа.exe» из данной папки.
4.4 Указания по использованию программы
Рисунок 3 Внешний вид окна работающей программы
Программа «Анкета студента» предназначена для ввода и сохранения информации о студенте высшего учебного заведения в файл бинарного формата и выполнения с ним некоторых дополнительных действий. Окно работающей программы показано на рисунке 3. Для выполнения рабочих операций в окне программы следует придерживаться порядка действий, описанного в таблице 13.
Таблица 13
порядок действий пользователя в окне программы
№ |
Рабочая операция |
Порядок действий |
|
1 |
Редактировать данные |
Внести новую информацию или отредактировать имеющуюся информацию в полях ввода/вывода и списках.При вводе имени, отчества, фамилии иметь в виду, что их длина ограничена 50 символами.При выборе даты рождения - дата рождения не может быть позднее текущей.При вводе года поступления - год поступления не может отстоять от года рождения менее, чем на 17 лет.Номер курса - принимает только значения из диапазона от 1 до 5.Номер зачетной книжки - вводится по шаблону «номер в списке-факультет-номер курса приёма-номер года приёма». Номер задается только цифрами. |
|
2 |
Сохранить данные |
Данные сохраняются во внутренний бинарный формат программы. Перед сохранением следует ввести обязательные данные (имя, фамилию, номер зачётной книжки). В случае отсутствия этих данных программа сообщает об ошибке (рис. 4).Для выполнения сохранения дайте команду «Файл-Сохранить …» (или клавиша CTRL+S) (для сохранения ранее открытого файла при его изменении) или «Файл-Сохранить как …» (или клавиша F4) для сохранения файла под новым именем или первого сохранения. Для выполнения операций также можно использовать кнопки на панели инструментов. |
|
3 |
Открыть ранее созданный файл |
Команда «Файл-Открыть» (или клавиша F2) или кнопка на панели инструментов. При открытии файла проверяется его формат. Программа может открыть только корректные файлы в формате «student». При возникновении ошибки отображается окно с сообщением (рис. 5, 6). |
|
4 |
Экспорт из бинарного файла в XML |
Открыть бинарный файл или сохранить текущие данные в окне программы в файл, после чего дать команду «Экспорт-Экспортировать в XML» (сочетание клавиш CTRL+X). В случае, если данные не загружены или не сохранены, выводится сообщение об ошибке (рис. 7). Если экспорт удался, то созданный файл открывается в окне ассоциированной программы (рис. 8). |
|
5 |
Экспорт из бинарного файла в TXT |
Открыть бинарный файл или сохранить текущие данные в окне программы в файл, после чего дать команду «Экспорт-Экспортировать в текстовый файл» (сочетание клавиш CTRL+Т). В случае, если данные не загружены или не сохранены, выводится сообщение об ошибке (рис. 8). Если экспорт удался, то созданный файл открывается в окне ассоциированной программы рис. 9). |
|
6 |
Экспорт из бинарного файла в HTML |
Открыть бинарный файл или сохранить текущие данные в окне программы в файл, после чего дать команду «Экспорт-Экспортировать в HTML» (сочетание клавиш CTRL+H). В случае, если данные не загружены или не сохранены, выводится сообщение об ошибке (рис. 7). Если экспорт удался, то созданный файл открывается в окне ассоциированной программы рис. 10). |
Рисунок 4 окно сообщения при неполных введённых данных
Рисунок 5 окно сообщения при невозможности получения данных из файла
Рисунок 6 окно сообщения при невозможности получения данных из файла
Рисунок 7 окно сообщения при невозможности выполнения экспорта
Рисунок 8 результат экспорта в XML
Рисунок 9 результат экспорта в TXT
Рисунок 10 результат экспорта в HTML
Заключение
В результате выполнения курсовой работы изучено предложенное в теме понятие «студент» и выявлены его характеристики (п. 2.1), созданы форматы хранения информации: бинарный (п. 2.2), текстовый XML (п. 2.3), текстовый HTML (п. 2.4). Создано программное обеспечение (п. 3), решающее все основные задачи, сформулированные в задании (п. 1). Также разработано руководство пользователя (п.4).
В соответствии с заданием (п.1) для создания данного проекта была использована среда разработки Microsoft Visual Studio, язык программирования Visual С# и библиотека классов.NET Framework.
Таким образом, можно утверждать, что все задачи курсовой работы полностью решены.
Список использованных источников
1. Гуннерсон, Э. Введение в C#. Библиотека программиста. / Э. Гуннерсон -СПб.: Питер, 2015. 304 с.
2. Троэлсен, Эндрю: Язык программирования С#5.0 и платформа.NET 4.5 / Эндрю Троэлсен. М.: Издательский дом Вильямс, 2013.1312 с.: ил.
3. Рихтер, Д. CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C# / Д. Рихтер. СПб: Питер, 2015. 896 с.
4. Хейлсберг, А. Язык программирования C#. Классика Computers Science. / А. Хейлсберг, М. Торгерсен, С. Вилтамут. СПб.: Питер, 2011. 784 с.
5. Шилдт, Г. C#: учебный курс. / Г. Шилдт. СПб.: Питер, 2002. 512 с.
Приложение
К работе прилагается диск DVD, содержащий следующие результаты курсового проектирования.
Пояснительная записка курсовой работы |
Файл «Пояснительная записка курсовой работы.docx» |
|
Проект в формате Visual Studio 2012 |
Папка «Проект программы» |
|
Презентация защиты |
Файл «Защита.pptx» |
|
Программа |
Файл «Курсовая работа.exe» |
Размещено на Allbest.ru
Подобные документы
Общие сведения о работе программы в среде программирования Microsoft Visual Studio 2008, на языке программирования C++. Ее функциональное назначение. Инсталляция и выполнение программы. Разработанные меню и интерфейсы. Алгоритм программного обеспечения.
курсовая работа [585,5 K], добавлен 24.03.2009Характеристика основных разделов программирования, изучаемых в курсе программирования на языке С++. Описание внутренних переменных, входных и выходных данных. Особенности использования компилятора Microsoft Visual Studio 2008. Руководство пользователя.
курсовая работа [18,8 K], добавлен 14.12.2010Техника создания графики при помощи API функций, экспортируемых библиотекой GDI32.DLL. Разработка на языке программирования С++ в среде программирования Microsoft Visual C++ программы для отображения часов реального времени в цифровом и аналоговом виде.
курсовая работа [2,8 M], добавлен 27.01.2010Разработка программы FileInfo, выдающей полную информацию о заданном файле с применением языка программирования С++, используя API функции Win 32. Использование пространств имён .NetFramework. Руководство пользователя и системные требования программы.
курсовая работа [1,2 M], добавлен 25.04.2012Изучение объектно-ориентированного языка программирования Java, его функциональные возможности. Создание программного кода. Описание классов и методов, использованных в программе. Руководство пользователя, запуск сервера и клиентского приложения.
курсовая работа [1,8 M], добавлен 16.09.2015Разработка Windows-приложений с использованием библиотеки MFC. Базовый набор классов, написанных на языке С++ и предназначенных для упрощения процесса программирования под Windows. Фундаментальные идеи объектно-ориентированного программирования.
курсовая работа [348,1 K], добавлен 02.07.2011Разработка на языке программирования C# в среде Microsoft Visual Studio 2010 на базе Microsoft NET Framework 4 (4.5) программного средства, реализующего компилятор модельного языка программирования. Лексический, синтаксический и семантический анализатор.
курсовая работа [1,3 M], добавлен 24.06.2013Разработка приложения Windows "Учет заказов и продаж". Структура базы данных, информационное и программное обеспечение. Описание программы на языке Visual C+ с использованием технологии Microsoft.net, элементы управления и руководство пользователя.
курсовая работа [4,8 M], добавлен 25.06.2011Описание истории развития информационных технологий. Исследование предпочтений по использованию программного обеспечения пользователя персонального компьютера начального уровня и разработка интерфейсного приложения в среде программирования Delphi.
дипломная работа [2,0 M], добавлен 14.01.2012Описание структуры бинарного дерева поиска на языке C# среды Visual Studio. Требования к интерфейсу пользователя, структуре данных и программным средствам. Компоненты программных средств, результаты тестирования, диаграммы вариантов использования классов.
курсовая работа [968,2 K], добавлен 26.01.2013