Добавлен: 05.04.2023
Просмотров: 508
Скачиваний: 1
СОДЕРЖАНИЕ
ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ СРЕДСТВ РАЗРАБОТКИ КЛИЕНТСКИХ ПРОГРАММ
1.1 Раскрытие ключевых понятий
1.2 Элементы бизнес-процессов энергетического менеджмента
1.3 Описание существующих информационных систем
ГЛАВА 2. ПРОЕКТИРОВАНИЕ АРХИТЕКТУРЫ ИНФОРМАЦИОННОЙ СИСТЕМЫ
Глава 3. Разработка прототипа информационной системы
Рисунок 3.5. Форма регистрации.
- Форма отображения данных.
На данной форме пользователь может получить информацию в виде таблиц и графиков о введенных им значениях. Значения сортируется по имеющимся данным о потребляемых ресурсах и добавленных счетчиках. Форма отображения данных представлена на рисунке 3.6.
Рисунок 3.6. Форма отображения данных.
- Форма редактирования данных.
В форме редактирования данных пользователь может добавить, изменить или удалить значения, хранящиеся в базе данных. Окна для ввода данных будут доступны в зависимости от запроса пользователя на действие. Для начала необходимо выбрать тип вводимых данных – данные, ресурсы, счетчики, продукция, тарифы. Затем нажать клавишу действия и непосредственно выполнить запрошенное действие. Форма редактирования представлена на рисунке 3.7.
Рисунок 3.7. Форма редактирования данных.
- Форма экспорта данных.
В зависимости от требований предприятий, данные могут быть выгружены как в различные программы Microsoft, так и в определенные шаблоны. Форма экспорта данных представлена на рисунке 3.8.
Рисунок 3.8. Форма экспорта данных.
- Форма отображения потребления данных.
Установив тарифы за потребление определенных видов ресурсов, пользователь сможет отслеживать затраченные ресурсы по дням и получать их суммарную стоимость. Форма отображения потребления данных представлена на рисунке 3.9.
Рисунок 3.9. Форма отображения потребления данных.
Взаимодействие с базой данных
Помимо того, что разрабатываемый прототип информационной системы включает в себя удобный пользовательский интерфейс, он так же имеет непосредственное взаимодействие с базой данных. Схема базы данных была представлена на рисунке 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 |