Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Документ Microsoft Office Word.docx
Скачиваний:
9
Добавлен:
13.04.2015
Размер:
302.9 Кб
Скачать

3 Разработка програмного обеспечения

3.1 Выбор средства автоматизации разработки ПО

3.1.1 MonoDevelop среда программирования

MonoDevelop IDE – свободная мультиплатформенная среда разработки, предназначенная для создания приложений на языках C#, C, C++, Java, Visual Basic.NET, CIL, Nemerle, Boo. На данный момент среда является частью проекта Mono и является одной из самых лучших IDE для разработки проектов на базе Mono.

MonoDevelop обладает всеми основными возможностями, необходимыми для современной интегрированной среды разработки:

1)настраиваемая подсветка синтаксиса;

2)автоматическое дополнение кода;

3)выделение блоков кода с возможностью их сворачивания/разворачивания;

4)интеллектуальная работа с отступами в коде;

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

6)удобная навигация по коду (навигация по классам, методам, свойствам);

7)визуальный редактор форм для проектов на Gtk#;

8)создание нескольких раскладок интерфейса и переключение между ними;

9)множество стандартных шаблонов проектов;

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

11)работа с базами данных;

12)создание приложений с GUI, поддерживающим несколько языков;

13)интеграция с Subversion для управления исходным кодом;

14)поддержка NUnit для создания Unit-тестов;

15)автоматическое создание документации;

16)расширение возможностей за счет дополнений и внешних инструментов;

17)возможность интеграции с Microsoft Visual Studio и .NET Framework (в среде Microsoft Windows).

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

С учетом того, что принципы .NET так радикально отличаются от предшествующих технологий, Microsoft разработала новый язык программирования, C# (произносится "си-диез"), специально для использования с этой новой платформой. Язык C# является языком программирования, по синтаксису очень похожим на Java (но не идентичным ему). Однако называть C# "переработанным" вариантом Java будет неверно. C#, как и Java, основан на синтаксических конструкциях C++. Так же, как и Java, C# можно называть "рафинированной" версией C++ – в конце концов, это языки одного семейства.

Многие синтаксические конструкции C# построены с учетом решений, принятых в Visual Basic 6.0 и C++. Например, как и в VB6, в C# поддерживаются формальные свойства типов (в противоположность традиционным методам get и set) и возможность объявления методов с переменным числом аргументов (через массивы параметров). Подобно C++, в C# позволяется перегрузка операций, а также создание структур, перечней и функций обратного вызова (посредством делегатов).

Благодаря тому, что C# является гибридом множества языков, он является продуктом, который синтаксически так же "чист", как Java (если не "чище"), почти так же прост, как VB6, и обладает почти такой же мощью и гибкостью, как C++ (без соответствующих "ужасных" конструкций). По сути, язык C# предлагает следующие возможности (многие из которых присущи и всем другим языкам программирования, обеспечивающим поддержку .NET).

Особенности языка С#:

1)Не требуется никаких указателей! Программы на C# обычно не требуют прямого обращения к указателям (хотя имеется возможность получить к ним доступ на более низком уровне, если вы сочтете это абсолютно необходимым).

2)Автоматическое управление памятью через сборку мусора. По этой причине в C# не поддерживается ключевое слово delete.

3)Формальные синтаксические конструкции для перечней, структур и свойств классов.

4)Аналогичная C++ перегрузка операций для пользовательских типов, но без лишних сложностей (например, вам не требуется контролировать "возвращение *this для связывания").

5)В C# 2005 имеется возможность строить общие типы и общие члены с использованием синтаксиса, очень похожего на шаблоны C++.

6)Полная поддержка техники программирования, основанной на использовании интерфейсов.

7)Полная поддержка технологии аспектно-ориентированного программирования (АОП) через атрибуты. Эта ветвь разработки позволяет назначать характеристики типам и их членам, чтобы уточнять их поведение.

Возможно, самым важным для правильного понимания языка C#, поставляемого Microsoft в связке с платформой .NET, является то, что получаемый с помощью C# программный код может выполняться только в среде выполнения .NET (вы не сможете использовать C# для построения "классического" COM-сервера или автономного приложения Win32 API). Официальный термин, который используется для описания программного кода, предназначенного для среды выполнения .NET, – управляемый программный код (managed code). Бинарный объект, содержащий такой управляемый программный код, называется компоновочным блоком (подробнее о компоновочных блоках мы поговорим немного позже). С другой стороны, программный код, который не может непосредственно управляться средой выполнения .NET, называется неуправляемым программным кодом (unmanaged code).

3.2 Реализация программного продукта

3.2.1 Создание окна для перехода в другие меню

Алгоритм действий для работы программы:

1) с помощью средств Gtk# создать внешний вид окна (рис3.1);

Рисунок - 3.1 Внешний вид окна

2)Задать в настройках кнопкам сигналы ;

3) Создать новые окна в среде;

4) Сделать привязку новых окон к кнопкам.

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

public partial class MainWindow: Gtk.Window

{

public MainWindow (): base (Gtk.WindowType.Toplevel)

{Build ();}

protected void OnDeleteEvent (object sender, DeleteEventArgs a)

{

Application.Quit ();

a.RetVal = true;

}// Кнопка «меню сотрудника»

protected void OnButton1Clicked (object sender, EventArgs e)

{

Empl empl=new Empl();

empl.Show ();

} // Кнопка «меню журнал»

protected void OnButton2Clicked (object sender, EventArgs e)

{

Jrn jrn=new Jrn();

jrn.Show ();

}

Листинг 3.1 - Создание окна и привязка к кнопкам окон

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

3.2.2 Подключение базы данных в С#

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

Код программы приведен ниже:

NpgsqlConnection con = new NpgsqlConnection ("Server = localhost; Database = mydb; USER ID = postgres; password = postgres");

NpgsqlCommand com = con.CreateCommand ();

Листинг программы - 3.2 Подключение к базе данных

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

Далее в переменную con записывается запрос на подключение к базе данных. Путь на подключение к БД указывается системными командами:

1)Server="здесь как правило пишется адрес сервера" в данном случае это "localhost или 127.0.0.1";

2)Database="выбирается база данных к которой хотим подключиться" в данном случае это "mydb";

3)USER ID="имя пользователя" в данном случае заходим под пользователем "postgres" ;

4)password="в водим пароль пользователя" в данном случае это "postgres";

3.2.3 Функция для просмотра полного содержания журнала

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

1)Из окна выбора функций выбираем нужную нам функцию в данном случае "Полный список сотрудников" (рис.3.2)

Рисунок -3.2 Меню сотрудников

2) Дале происходит подключение к БД ;

3) Берутся данные из БД и выводиться на отдельный экран (рис3.3)

Рисунок - 3.3 Вывод полного списка сотрудников

Код программы приведен ниже

public partial class EmplList : Gtk.Window

{ NpgsqlConnection con;

NpgsqlCommand com;

public EmplList () :

base(Gtk.WindowType.Toplevel)

{ this.Build ();

con = new NpgsqlConnection ("Server = localhost; Database = mydb; USER ID = postgres; password = postgres");

com = con.CreateCommand ();

NpgsqlDataReader reader;

string sql = "SELECT * FROM empl;";

TreeStore ts = new TreeStore (typeof(string), typeof(string), typeof(string), typeof(string), typeof(string));

TreeIter iter;

con.Open ();

com.CommandText = sql;

reader = com.ExecuteReader ();

while (reader.Read ()) {

string id = reader.GetInt32 (reader.GetOrdinal ("id")).ToString ();

string name = reader.GetString (reader.GetOrdinal ("name"));

string o_name = reader.GetString (reader.GetOrdinal ("o_name"));

string s_name = reader.GetString (reader.GetOrdinal ("s_name"));

string notice = reader.GetString (reader.GetOrdinal ("notice"));

iter = ts.AppendValues (id, name, o_name, s_name, notice);}

treeview1.Model=ts;

CellRenderer cr;

TreeViewColumn tc;

tc=new TreeViewColumn();

cr=new CellRendererText();

tc.Title="ID";

tc.PackStart(cr,true);

tc.AddAttribute(cr,"text",0);

treeview1.AppendColumn(tc);

tc=new TreeViewColumn();

cr=new CellRendererText();

tc.Title="Имя";

tc.PackStart(cr,true);

tc.AddAttribute(cr,"text",1);

treeview1.AppendColumn(tc);

tc=new TreeViewColumn();

cr=new CellRendererText();

tc.Title="Отчество";

tc.PackStart(cr,true);

tc.AddAttribute(cr,"text",2);

treeview1.AppendColumn(tc);

tc=new TreeViewColumn();

cr=new CellRendererText();

tc.Title="Фамилия";

tc.PackStart(cr,true);

tc.AddAttribute(cr,"text",3);

treeview1.AppendColumn(tc);

tc=new TreeViewColumn();

cr=new CellRendererText();

tc.Title="Справка";

tc.PackStart(cr,true);

tc.AddAttribute(cr,"text",4);

treeview1.AppendColumn(tc);

con.Close();

reader.Close();

com.Dispose();}}

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

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

3.2.4 Функция добавления нового сотрудника

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

1) Из окна выбора функций выбираем нужную нам функцию в данном случае "Добавить нового сотрудника" (рис 3.2)

2) Появляется окно с полями ввода информации (рис 3.4)

Рисунок - 3.4 Окно добавления сотрудника в журнал

3)По нажатию кнопки ОК данные из полей которые в коде будут иметь названия "Entry" запишутся в переменные а те в свою очередь передаться через запрос в БД.

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

protected void OnButton1Clicked (object sender, EventArgs e)

{con = new NpgsqlConnection("Server = localhost; Database = mydb; USER ID = postgres; password = postgres");

com = con.CreateCommand();

string a = entry2.Text;

string name = entry3.Text;

string ot_name = entry4.Text;

string s_name = entry5.Text;

string notis = entry6.Text;

string sql = string.Format("INSERT INTO empl(id, name, o_name, s_name, notice)VALUES ('{0}', '{1}', '{2}', '{3}', '{4}');",a, name, ot_name, s_name, notis);

con.Open();

com.CommandText=sql;

com.ExecuteNonQuery();

con.Close();

this.Hide(); }}

Листинг программы -3.4 Добавление новой записи в БД.

Программа добавления пользователе и удаления пользователя фактически идентичны за исключением формируемого запроса в PostgreSQL и количество переменных (т.к. удалить строку можно по 1 параметру из строки)

3.3 PostgreSQL

Объектно – реляционная система управления базами данных(ОРСУБД), разработка которой ведется с 1977г.Она считается самой совершенной СУБД, распространяемой на условиях открытых исходных текстов. В PostgreSQL реализованы многие возможности традиционно встречавшиеся только в масштабных коммерческих продуктах.

3.3.1 Создание и удаление базы данных

В PostgreSQL существует два способа создания новых баз данных: команда SQLCREATEDATABASE и программа createdb, а отличия между ними заключается в том, что работает в режиме командной строки, и позволяет включить комментарии в базу данных одновременно с её созданием. Для создания БД нужно быть суперпользователем PostgreSQL. По аналогии с созданием базы данных в PostgreSQL предусмотрено два способа удаления БД из системы: команда DROPDATABASE и программа dropdb. Так же при удалении БД уничтожаются все таблицы, данные и объекты, хранящиеся в этой базе.

3.3.2 Создание и удаление таблицы

В языке SQL таблицы создаются командой CREATETABLE. Минимальный набор параметров включает имя таблицы и описания полей , состоящие из имени поля и типа данных. А удаляются таблица командой DROPTABLE. Команда имеет следующий синтаксис (таблица – имя удаляемой таблицы);

CREATE TABLE empl (ID serial, s_name varchar(16), o_name varchar(16), s_name varchar(30) , notice text);

Листинг - 3.5 создания таблицы в PostgreSQL

В данном листинге создается таблица "empl", которая показан на (рис. 3.5)в неё вводятся столбцы "ID" с типом serial, который означает, что первый столбец автоинкрементом нумеруется. s_name с типом varchar(16), означает. Что строка вмещает в себя длину в 16 символа включая пробелы. Так же в таблице используется тип text, который означает, что строка с текстом безразмерна и сама растягивается, но с этим типом нужно быть осторожно т.к. можно получить перегрузку строки. Созданная таблица представлена на (рис 3.5)

Рисунок 3.5 – Таблица empl в PostgreSQL

3.3.3 SQL запросы

В данной программе применяются 3 типа запросов, явлющиеся операторами манипуляции данными (DML):

SELECT - считывает (вытаскивает) данные, удовлетворяющие заданным условиям;

INSERT - добавляет новые данные ;

DELETE - удаляет данные;

Общий вид запроса SELECT:

1. SELECT * FROM empl;

Данный запрос показывает все содержимое таблицы empl.

2. SELECT * FROM empl WHERE id= 1;

Данный запрос покажет все строки в таблице empl где все id будут равны 1. Реализация данного запроса показана на (рис 3.6)

Рисунок - 3.6 Реализация запроса SELECT

Общий вид запроса INSERT:

1. INSERT INTO empl * VALUES (" значения через запятую") ;

Данный вопрос компакте но есть высокая вероятность допустить ошибку поэтому принято использовать более обширный вариант.

2. ("INSERT INTO empl (id, name, o_name, s_name, notice) VALUES ('1', 'Сергей', 'Сергеевич', 'Брагин', 'Выпускник ХНУРЭ');

Данный запрос более корректен чем предыдущий его вариант , и после выполнения данного запроса в БД будет добавлено (1|Сергей Сергеевич |Брагин | Выпускник ХНУРЭ ).

Общий вид запроса DELETE:

DELETE FROM empl WHERE ID='1';

Данный запрос удалит в таблице empl строку где id =1 .