Добавлен: 06.04.2023
Просмотров: 215
Скачиваний: 2
СОДЕРЖАНИЕ
ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ СРЕДСТВ РАЗРАБОТКИ КЛИЕНТСКИХ ПРОГРАММ
1.1 Раскрытие ключевых понятий
1.2 Элементы бизнес-процессов энергетического менеджмента
1.3 Описание существующих информационных систем
ГЛАВА 2. ПРОЕКТИРОВАНИЕ АРХИТЕКТУРЫ ИНФОРМАЦИОННОЙ СИСТЕМЫ
2.2 Построение диаграммы прецедентов
2.3 Проектирование схемы взаимодействия
Глава 3. Разработка прототипа информационной системы
3.1 Описание бизнес-процессов информационной системы
Форма регистрации предназначена для получения информации о компании. Пользователь на форме вводит название компании, логин и пароль. В будущих версиях системы будет добавлены остальные поля для получения данных о компании по мере необходимости. Логин, введенный при регистрации, проверяется на уникальность в базе данных. Форма регистрации представлена на рисунке 3.5.
Рисунок 3.5. Форма регистрации.
- Форма отображения данных.
На данной форме пользователь может получить информацию в виде таблиц и графиков о введенных им значениях. Значения сортируется по имеющимся данным о потребляемых ресурсах и добавленных счетчиках. Форма отображения данных представлена на рисунке 3.6.
Рисунок 3.6. Форма отображения данных.
- Форма редактирования данных.
В форме редактирования данных пользователь может добавить, изменить или удалить значения, хранящиеся в базе данных. Окна для ввода данных будут доступны в зависимости от запроса пользователя на действие. Для начала необходимо выбрать тип вводимых данных – данные, ресурсы, счетчики, продукция, тарифы. Затем нажать клавишу действия и непосредственно выполнить запрошенное действие. Форма редактирования представлена на рисунке 3.7.
Рисунок 3.7. Форма редактирования данных.
- Форма экспорта данных.
В зависимости от требований предприятий, данные могут быть выгружены как в различные программы Microsoft, так и в определенные шаблоны. Форма экспорта данных представлена на рисунке 3.8.
Рисунок 3.8. Форма экспорта данных.
- Форма отображения потребления данных.
Установив тарифы за потребление определенных видов ресурсов, пользователь сможет отслеживать затраченные ресурсы по дням и получать их суммарную стоимость. Форма отображения потребления данных представлена на рисунке 3.9.
Рисунок 3.9. Форма отображения потребления данных.
3.3 Взаимодействие с базой данных
Помимо того, что разрабатываемый прототип информационной системы включает в себя удобный пользовательский интерфейс, он так же имеет непосредственное взаимодействие с базой данных. Схема базы данных была представлена на рисунке 2.14.
Таким образом, при аутентификации пользователя и получении сведений об авторизовавшейся компании, открывается доступ ко всем данным. Рассмотрим некоторые из запросов на получение информации из базы данных.
-
-
- Получение данных о потребляемом ресурсе (см. рисунок 3.10).
-
Рисунок 3.10. Получение данных о потребляемом ресурсе.
-
-
- Добавление счетчика (см. рисунок 3.11).
-
Рисунок 3.11. Добавление счетчика.
-
-
- Изменение данных (см. рисунок 3.12).
-
Рисунок 3.12. Изменение данных.
-
-
- Удаление тарифа (см. рисунок 3.13).
-
Рисунок 3.13. Удаление тарифа.
-
-
- Добавление продукции (см. рисунок 3.14).
-
Рисунок 3.14. Добавление продукции.
Исходя из выявленных компонентов и требований к информационной системе, существуют различные способы реализации прототипа. Самым удобным способом создания системы являются веб-формы ASP.net в сочетании с языком программирования C# и базой данной MS SQL. Данная технология имеет определенные преимущества по сравнению, с созданием данного продукта на языке веб-программирования PHP и базой данных MySQL. Важным преимуществом программирования на веб-формах ASP.net является среда разработки MS Visual Studio, которая объединяет в себе все необходимые функции для удобного написания кода.
Программная реализация прототипа
В данном пункте опишем некоторые из методов, которые были написаны при реализации прототипа информационной системы. Остальной код реализации прототипа представлен в приложении А.
-
-
-
- Аутентификация пользователя.
-
-
В данном методе осуществляется проверка введенного логина и пароля на существование информации в базе данных. Если данные существует, то пользователь направляется в личный кабинет, если нет, то высвечивается сообщение об ошибке, с просьбой проверить корректность введенных данных. Существует возможность регистрации пользователя, где необходимо ввести данные о компании, логин и пароль. Логин проходит проверку на уникальность в БД, и если введенный логин уже существует, то выводится соответствующее сообщение и пользователю необходимо повторить ввод. При успешной регистрации, пользователь будет направлен на форму аутентификации пользователя.
private bool checkLogIn(string login, string password)
{
var answer = false;
SqlConnection sc = new SqlConnection("Data Source=928D\\SQLEXPRESS;Initial Catalog=EMIS;Integrated Security=true");
SqlDataAdapter adap = new SqlDataAdapter(@"select id, name from Company where login LIKE '" + login + "' and pass LIKE '" + password + "'", sc);
DataTable dt = new DataTable();
try
{
sc.Open();
adap.Fill(dt);
if (dt.Rows.Count >= 1)
{
answer = true;
var id = dt.Rows[0].ItemArray[0] + " " + dt.Rows[0].ItemArray[1];
Session["company_id"] = id;
}
}
finally
{
sc.Close();
}
return answer;
}
- Отображение данных.
В соответствии с примененными фильтрами, пользователю может быть отображена информация о потребляемых ресурсах в виде графика или таблицы. На рисунке представлен код отображения данных в виде графика. На графике, по оси X отображается дата добавленных ресурсов, по оси Y значение.
private void showDataChart(string counterId)
{
SqlConnection sc = new SqlConnection("Data Source=928D\\SQLEXPRESS;Initial Catalog=EMIS;Integrated Security=true");
SqlDataAdapter adap = new SqlDataAdapter(@"select Data.date, Counter.place, resourceName, Resource.measure, Counter.normal, Data.value
from Resource, Data, Counter where Data.counter = Counter.id and Counter.resource = Resource.id
and Counter.id = '" + counterId + "' and company LIKE '" +
Convert.ToInt32(Session["company_id"].ToString().Split(' ').ToArray()[0]) + "' order by date", sc);
DataTable dt = new DataTable();
try
{
sc.Open();
adap.Fill(dt);
for (int i = 0; i < dt.Rows.Count; i++)
{
var series = new Series();
series.Points.AddXY(Convert.ToDateTime(dt.Rows[i][0].ToString()).Day, Convert.ToInt32(dt.Rows[i][5].ToString()));
series.Color = System.Drawing.Color.Black;
Chart1.Series.Add(series);
}
}
finally
{
sc.Close();
}
Chart1.Visible = true;
}
- Подсчет стоимости затраченных ресурсов.
Данный метод позволяет объединить в таблице все данные по потребляемому ресурсу за определенный день и отобразить их стоимость в соответствии с существующими тарифами.
private void checkDay()
{
List<TableRow> rows = new List<TableRow>();
List<TableCell> cells = new List<TableCell>();
cells.Add(new TableCell{ Text = "Дата" });
cells.Add(new TableCell { Text = "Ресурс" });
cells.Add(new TableCell { Text = "Затрачено" });
cells.Add(new TableCell { Text = "Стоимоcть, руб" });
TableRow row = new TableRow();
foreach (var item in cells)
{
row.Cells.Add(item);
}
rows.Add(row);
SqlConnection sc = new SqlConnection("Data Source=928D\\SQLEXPRESS;Initial Catalog=EMIS;Integrated Security=true");
SqlDataAdapter adap = new SqlDataAdapter(@"select Resource.id, resourceName, Resource.measure, Data.value, Data.date, Rates.price
from Resource, Data, Counter, Rates where Data.counter = Counter.id and Counter.resource = Resource.id and Rates.resource = Resource.id
and company LIKE '" + Convert.ToInt32(Session["company_id"].ToString().Split(' ').ToArray()[0]) + "' order by date", sc);
DataTable dt = new DataTable();
try
{
bool temp = false;
sc.Open();
adap.Fill(dt);
for (int i = 0; i < dt.Rows.Count; i++)
{
temp = false;
cells = new List<TableCell>();
foreach (var r in rows)
//если даты и ресурс совпадают
if (r.Cells[0].Text.Equals(Convert.ToDateTime(dt.Rows[i][4]).ToShortDateString()) &&
r.Cells[1].Text.Equals(dt.Rows[i][1].ToString() + " " + dt.Rows[i][2].ToString()))
{
r.Cells[2].Text = (Convert.ToInt32(r.Cells[2].Text) + Convert.ToInt32(dt.Rows[i][3].ToString())).ToString();
r.Cells[3].Text = (Convert.ToInt32(r.Cells[2].Text) * Convert.ToInt32(dt.Rows[i][5].ToString())).ToString();
temp = true;
}
if (!temp)
{
cells.Add(new TableCell { Text = Convert.ToDateTime(dt.Rows[i][4]).ToShortDateString() });
cells.Add(new TableCell { Text = dt.Rows[i][1].ToString() + " " + dt.Rows[i][2].ToString() });
cells.Add(new TableCell { Text = dt.Rows[i][3].ToString() });
cells.Add(new TableCell { Text = (Convert.ToInt32(dt.Rows[i][3].ToString()) * Convert.ToInt32(dt.Rows[i][5].ToString())).ToString() });
row = new TableRow();
foreach (var item in cells)
row.Cells.Add(item);
rows.Add(row);
}
}
foreach (var r in rows)
Table1.Rows.Add(r);
Table1.Visible = true;
}
finally
{
sc.Close();
}
Table1.Visible = true;
}
- Добавление ресурса.
При выборе пользователем вкладки «Редактирование данных», на форме отображается возможность добавления, удаления и редактирования информации в базе данных. Метод добавления данных о потребляемом ресурсе представлен ниже.
private void addResource(string resourceName, string measure)
{
SqlConnection con = new SqlConnection("Data Source=928D\\SQLEXPRESS;Initial Catalog=EMIS;Integrated Security=true");
SqlDataAdapter str = new SqlDataAdapter(@"insert into Resource (resourceName, measure, company)
values ('" + resourceName + "', '" + measure + "', '" + Convert.ToInt32(Session["company_id"].ToString().Split(' ').ToArray()[0]) + "')", con);
DataTable dt = new DataTable();
try
{
con.Open();
str.Fill(dt);
}
finally
{
con.Close();
}
}
Проверка системы с использованием реальных данных
В данном пункте главы проведем испытание работы разработанного прототипа с использованием данных, полученных с одного из предприятий. Предприятием были предоставлены следующие данные по потреблению электроэнергии за январь:
Таблица 3.1. Суммарные значения потребления электроэнергии предприятием за месяца.
День |
Январь, кВт/ч |
Февраль, кВт/ч |
Март, кВт/ч |
Апрель, кВт/ч |
Май, кВт/ч |
---|---|---|---|---|---|
1 |
4 081 532 |
3 748 087 |
3 861 191 |
3 884 216 |
3 484 140 |
2 |
4 069 196 |
3 985 098 |
3 766 836 |
3 865 856 |
3 478 833 |
3 |
3 894 525 |
3 882 980 |
3 631 545 |
3 699 463 |
3 451 397 |
4 |
3 892 824 |
3 412 298 |
3 656 407 |
3 430 151 |
3 391 219 |
5 |
4 104 281 |
3 902 816 |
3 818 998 |
3 805 674 |
3 233 002 |
6 |
4 110 131 |
3 948 294 |
3 817 888 |
3 776 490 |
3 483 359 |
7 |
3 927 547 |
3 949 169 |
3 827 016 |
3 568 947 |
3 482 345 |
8 |
3 655 286 |
3 753 465 |
3 801 681 |
3 850 976 |
3 476 797 |
9 |
4 079 398 |
3 744 583 |
3 821 988 |
3 834 959 |
3 471 206 |
10 |
3 914 738 |
3 854 846 |
3 509 367 |
3 836 774 |
3 521 360 |
11 |
3 782 549 |
3 814 195 |
3 799 612 |
3 882 290 |
3 505 828 |
12 |
3 955 660 |
3 675 078 |
3 779 212 |
3 751 211 |
3 362 937 |
13 |
3 892 821 |
3 898 507 |
3 663 010 |
3 672 299 |
3 433 239 |
14 |
3 625 174 |
3 794 790 |
3 561 778 |
3 443 825 |
3 473 502 |
15 |
4 020 494 |
3 653 991 |
3 765 183 |
3 810 105 |
3 372 532 |
16 |
3 994 700 |
3 692 745 |
3 652 302 |
3 842 013 |
3 262 035 |
17 |
3 985 392 |
3 859 846 |
3 758 598 |
3 632 754 |
3 427 256 |
18 |
3 860 166 |
3 632 001 |
3 821 306 |
3 327 349 |
3 487 170 |
19 |
3 932 884 |
3 873 494 |
3 838 104 |
3 503 175 |
3 457 434 |
20 |
3 980 559 |
3 951 213 |
3 670 514 |
3 627 143 |
3 462 189 |
21 |
3 811 605 |
3 842 679 |
3 329 116 |
3 481 625 |
3 482 194 |
22 |
4 092 156 |
3 710 366 |
3 490 516 |
3 782 807 |
3 426 948 |
23 |
4 074 012 |
3 898 642 |
3 522 730 |
3 782 834 |
3 447 211 |
24 |
3 923 985 |
3 733 750 |
3 542 404 |
3 729 373 |
3 452 389 |
25 |
3 605 759 |
3 391 749 |
3 607 880 |
3 303 592 |
3 332 268 |
26 |
3 875 871 |
3 872 210 |
3 705 093 |
3 446 420 |
3 087 854 |
27 |
3 933 553 |
3 859 636 |
3 718 008 |
3 598 016 |
3 421 294 |
28 |
3 815 847 |
3 835 057 |
3 664 341 |
3 381 973 |
3 465 945 |
29 |
3 958 550 |
3 870 157 |
3 558 261 |
3 468 399 |
|
30 |
4 034 206 |
3 903 702 |
3 509 306 |
3 514 842 |
|
31 |
3 982 423 |
3 601 202 |
3 452 124 |