ДИПЛОМ (1206322), страница 6
Текст из файла (страница 6)
Контент данной веб-страницы состоит из двух элементов DropDownList и двух полей textbox.Рисунок 3.10 – Списание СИЗ со складаПри выборе элемента из вываливающегося списка с наименованиемСИЗ, автоматически изменяется список с датой поступления СИЗ. Код, отвечающий за выполнение этой функции, приведен в листинге 11.protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e){SqlDataAdapter dad = new SqlDataAdapter("select DateP from Склад Where ID_siz='" +DropDownList1.Text + "'", c);DataSet ds = new DataSet();dad.Fill(ds);DropDownList2.DataSource = ds;DropDownList2.DataBind;Num.Text = string.Empty;}Листинг 11 – Изменение выпадающего спискаПосле заполнения всех необходимых элементов веб-страницы, пользователь нажимает кнопку «Списать со склада и вывести акт о списании», далеепроисходит событие «Spis».
Данное событие происходит в несколько этапов:1.Стандартнаяпроверкана(листинг 12).bool flag = true;if (Num.Text == ""){38отсутствиенезаполненныхполейLabel6.ForeColor = Color.Red;flag = false;}elseLabel6.ForeColor = Color.Black;Листинг 12 – Проверка на отсутствие пустых полей2.Списание указанного СИЗ и его количества из таблиц базы данныхDBase (листинг 13).c.Open();SqlDataAdapter dad = new SqlDataAdapter("update Склад Set NumbOst=NumbOst-'" + Num.Text + "'where ID_siz='" + DropDownList1.Text + "' and DateP='" + DropDownList2.Text + "' ", c);DataSet ds = new DataSet();dad.Fill(ds);c.Close();LblDobav.Text = "Успешно обновлено";Листинг 13 – Списание из базы данных3.3.2 Выдача СИЗ работнику ЭЧ-9Веб-страница, отвечающая за исполнение функции направления работника на выдачу СИЗ, состоит из выпадающего списка (элемент DropDownList,позволяющий выбирать ФИО сотрудника дистанции), кнопки «Выбрать СИЗ»,при нажатии на которую происходит событие Vugr_Click, которое отображаеттаблицу (элемент GridView) и кнопку «Требование на выдачу СИЗ» (рисунок 3.11).Рисунок 3.11 – Выдача СИЗ работнику39При помощи цикла foreach событие кнопки «Требование на выдачуСИЗ» проверяет каждую строчку таблицы и, если пользователь выбрал даннуюстроку, тогда sql-запрос записывает необходимую информацию в таблицу «Выдано» базы данных DBase, обновляет остатки на складах соответствующих СИЗ(листинг 14).foreach (GridViewRow row in GridView1.Rows){if (((CheckBox)row.Cells[0].FindControl("CheckBox1")).Checked){int a = Convert.ToInt32(((TextBox)row.Cells[1].FindControl("TexKol")).Text);String s = row.Cells[2].Text;c.Open();SqlCommand cm = new SqlCommand(@"insert into Выдано (ID_r, ID_siz, Kolvo) Values (@ID_r, @ID_siz, @Kolvo)", c);cm.Parameters.AddWithValue("@ID_r", DropDownList1.Text);cm.Parameters.AddWithValue("@ID_siz", gr.Rows[0]["ID_siz"].ToString());cm.Parameters.AddWithValue("@Kolvo", a);cm.ExecuteNonQuery();SqlDataAdapter up = new SqlDataAdapter("update Склад Set NumbOst=NumbOst-'" + a+"' where ID_siz='" + gr.Rows[0]["ID_siz"].ToString() + "' ", c);DataSet upd = new DataSet();up.Fill(upd);c.Close(); }}Листинг 14 – Обновление остатков в базе данных3.4 Экспорт в MS Excel3.4.1 Личная карточка работника ФИУ-5Пример веб-страницы с данными о личных карточках работника, представлен на рисунке 3.12.Рисунок 3.12 – Личные карточки работников40При нажатии на кнопку button#Vugr (рисунок 3.12), происходит событиеVugr _Clic, при котором открывается программа Microsoft Office Excel, основные методы осуществления данной операции представлены в листинге 15.Excel.Application xl = new Excel.Application();xl.Visible = true;xl.UserControl = false;Excel.Workbooks workbooks = xl.Workbooks;Excel._Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);Excel.Sheets sheets = workbook.Worksheets;Excel._Worksheet worksheet = (Excel._Worksheet)sheets.get_Item(1);Листинг 15 – Открытие MS ExcelДалее происходит формирование специализированной формы № ФИУ5, утвержденной распоряжением ОАО «РЖД» от 15.12.2008 № 2688р.
Даннаяфункция реализуется методом Worksheet.get_Range, который предоставляетячейку или диапазон ячеек (листинг 16).worksheet.get_Range("B4:K4").Merge(worksheet.get_Range("B4:K4").Select());worksheet.get_Range("B4:K4").HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;worksheet.get_Range("B4:K4").VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;range1 = worksheet.get_Range("B4", Missing.Value);range1.Value2 = "Магдагачинская дистанция пути Забайкальской железной дороги";Листинг 16 – Заполнение ячеекПосле заполнения необходимых ячеек стандартными записями, начинается введение данных из базы данных DBase (листинг 17).SqlConnectionc=newSqlConnection(ConfigurationManager.ConnectionStrings["DbaseConnectionString1"].ConnectionString);SqlDataAdapter dad = new SqlDataAdapter("select * from Работники INNER JOIN Профессии onРаботники.ID_proff = Профессии.ID_proff Where FIO='" + fio.Text + "'", c);DataSet ds = new DataSet();dad.Fill(ds);int yPos = 24;// Номер строки начального вывода.var table = ds.Tables[0];for (int j = 0; j < table.Rows.Count; j++){ worksheet.get_Range("G8", Missing.Value).Value2 = table.Rows[j]["ID_r"].ToString();worksheet.get_Range("C11", Missing.Value).Value2 = table.Rows[j]["FIO"].ToString();worksheet.get_Range("C12", Missing.Value).Value2 = table.Rows[j]["NFIO"].ToString();worksheet.get_Range("C13", Missing.Value).Value2 = table.Rows[j]["Proff"].ToString();worksheet.get_Range("C14", Missing.Value).Value2 = table.Rows[j]["DateP"].ToString();worksheet.get_Range("I11", Missing.Value).Value2 = table.Rows[j]["Pol"].ToString();worksheet.get_Range("I12", Missing.Value).Value2 = table.Rows[j]["Height"].ToString();worksheet.get_Range("I13", Missing.Value).Value2 = table.Rows[j]["SClose"].ToString();worksheet.get_Range("I14", Missing.Value).Value2 = table.Rows[j]["SShoes"].ToString();worksheet.get_Range("I15", Missing.Value).Value2 = table.Rows[j]["SHead"].ToString();worksheet.get_Range("I16", Missing.Value).Value2 = table.Rows[j]["SPr"].ToString();worksheet.get_Range("I17", Missing.Value).Value2 = table.Rows[j]["SHand"].ToString();++yPos;}Листинг 17 – Обращение к базе данных41В итоге, получается файл Microsoft Office Excel, представленный на рисунке 3.13.Рисунок 3.13 – Выгрузка личной карточки работника3.4.2 Акт на списание СИЗ ФИУ-10Выведение акта о списании средств со склада ЭЧ-9 (рисунок 3.14).
Данная функция реализуется с помощью программы Microsoft Office Excel, примероткрытия и создания шаблона приведен выше. Ниже представленный код реализует функцию заполнения записями из базы данных листа MS Excel (листинг 18):SqlDataAdapter vud = new SqlDataAdapter("select * from Склад INNER JOIN СИЗ on Склад.ID_siz= СИЗ.ID_siz Where Склад.ID_siz='" + DropDownList1.Text + "'andСклад.DateP='" +DropDownList2.Text + "' ", c);DataSet vu = new DataSet();vud.Fill(vu);int yPos = 16;var table = vu.Tables[0];for (int j = 0; j < table.Rows.Count; j++){worksheet.get_Range("A16", Missing.Value).Value2 = table.Rows[j]["Siz"].ToString();worksheet.get_Range("B16", Missing.Value).Value2 = table.Rows[j]["NumbSiz"].ToString();worksheet.get_Range("C16", Missing.Value).Value2 = table.Rows[j]["EI"].ToString();worksheet.get_Range("D16", Missing.Value).Value2 = Num.Text;worksheet.get_Range("E16", Missing.Value).Value2 = table.Rows[j]["DateP"].ToString();worksheet.get_Range("F16", Missing.Value).Value2 = table.Rows[j]["Price"].ToString();worksheet.get_Range("H16", Missing.Value).Value2 = table.Rows[j]["SPI"].ToString();worksheet.get_Range("I16", Missing.Value).Value2 = Pric.Text;++yPos;}Листинг 18 – Заполнение ячеек значениями из базы данных42Рисунок 3.14 – Акт на списание СИЗ3.4.3 Требование на выдачу СИЗ ФИУ-27Пример веб-страницы с данными о выдаче СИЗ работникам, представлен на рисунке 3.12, а код выгрузки данных в MS Excel в листинге 19.Рисунок 3.15 – Выдача СИЗ43SqlDataAdapter pro = new SqlDataAdapter("select ID_proff, FIO from Работники where ID_r='" +DropDownList1.Text + "'", c);DataSet pr = new DataSet();pro.Fill(pr);Fio = pr.Tables[0].Rows[0]["FIO"].ToString();SqlDataAdapter kom = new SqlDataAdapter("select * from Работники inner join Профессии onРаботники.ID_proff=Профессии.ID_proff Where Работники.FIO='" + Fio +"'", c);DataSet km = new DataSet();kom.Fill(km);// Перебираются все категории.var komu = km.Tables[0];worksheet.get_Range("B12", Missing.Value).Value2 = komu.Rows[0]["FIO"].ToString();worksheet.get_Range("C12", Missing.Value).Value2 = komu.Rows[0]["NFIO"].ToString();worksheet.get_Range("D12", Missing.Value).Value2 = komu.Rows[0]["Proff"].ToString();int vud = 15;foreach (GridViewRow row in GridView1.Rows){if (((CheckBox)row.Cells[0].FindControl("CheckBox1")).Checked){int a = Convert.ToInt32(((TextBox)row.Cells[1].FindControl("TexKol")).Text);String s = row.Cells[2].Text;c.Open();SqlDataAdapter vuu = new SqlDataAdapter("select * from СИЗ inner join Склад onСИЗ.ID_siz=Склад.ID_siz Where СИЗ.Siz='"+ s +"'", c);DataSet vu = new DataSet();vuu.Fill(vu);var gr = vu.Tables[0];worksheet.get_Range("A"+vud,Missing.Value).Value2=gr.Rows[0]["NumbSiz"].ToString();worksheet.get_Range("B" + vud, Missing.Value).Value2 = gr.Rows[0]["Siz"].ToString();worksheet.get_Range("C" + vud, Missing.Value).Value2 = gr.Rows[0]["EI"].ToString();worksheet.get_Range("D" + vud, Missing.Value).Value2 = a.ToString();worksheet.get_Range("E"+vud,Missing.Value).Value2=gr.Rows[0]["Price"].ToString();worksheet.get_Range("G"+vud,Missing.Value).Value2=gr.Rows[0]["DateP"].ToString();worksheet.get_Range("H" + vud, Missing.Value).Value2 = gr.Rows[0]["SPI"].ToString();worksheet.get_Range("I"+vud,Missing.Value).Value2=gr.Rows[0]["DateV"].ToString();range1 = worksheet.get_Range("F" + vud, Missing.Value);range1.Value2 = "=" + gr.Rows[0]["Price"].ToString() + "*" + a.ToString();SqlCommand cm = new SqlCommand(@"insert into Выдано (ID_r, ID_siz, Kolvo) Values(@ID_r, @ID_siz, @Kolvo)", c);cm.Parameters.AddWithValue("@ID_r", DropDownList1.Text);cm.Parameters.AddWithValue("@ID_siz", gr.Rows[0]["ID_siz"].ToString());cm.Parameters.AddWithValue("@Kolvo", a);cm.ExecuteNonQuery();SqlDataAdapter up = new SqlDataAdapter("update Склад Set NumbOst=NumbOst-'" + a +"'where ID_siz='" + gr.Rows[0]["ID_siz"].ToString() + "' ", c);DataSet upd = new DataSet();up.Fill(upd);++vud;c.Close(); } }Листинг 19 – Отчёт о выдаче СИЗ работникамВ результате выполнения данного кода, открывается отчет, представленный на рисунке 3.16.44Рисунок 3.16 – Требование на выдачу СИЗ3.4.4 Заявка-спецификация на СИЗПроцесс одобрения заявок-спецификаций представлен на рисунке 3.17 ив листинге 19.Рисунок 3.17 – Заявка-сецификация на СИЗforeach (GridViewRow row in GridView1.Rows){if (((CheckBox)row.Cells[0].FindControl("CheckBox1")).Checked) {int a = Convert.ToInt32(row.Cells[2].Text);String s = row.Cells[1].Text;c.Open();SqlDataAdapter vuu = new SqlDataAdapter("select * from СИЗ inner join Склад onСИЗ.ID_siz=Склад.ID_siz Where СИЗ.Siz='" + s + "'", c);DataSet vu = new DataSet();vuu.Fill(vu);var gr = vu.Tables[0];worksheet.get_Range("A" + vud, Missing.Value).Value2 =gr.Rows[0]["NumbSiz"].ToString();worksheet.get_Range("B" + vud, Missing.Value).Value2 = gr.Rows[0]["Siz"].ToString();worksheet.get_Range("C" + vud, Missing.Value).Value2 =gr.Rows[0]["Gost"].ToString();45worksheet.get_Range("D" + vud, Missing.Value).Value2 = gr.Rows[0]["EI"].ToString();worksheet.get_Range("E" + vud, Missing.Value).Value2 = a.ToString();worksheet.get_Range("F" + vud, Missing.Value).Value2 =gr.Rows[0]["Price"].ToString();range1 = worksheet.get_Range("G" + vud, Missing.Value);range1.Value2 = "=" + gr.Rows[0]["Price"].ToString() + "*" + a.ToString();SqlDataAdapter up = new SqlDataAdapter("update Заявка Set Acc='Одобрено' whereID_siz='" + gr.Rows[0]["ID_siz"].ToString() + "' and Author='" + row.Cells[5].Text + "' andDataZ='" + Convert.ToDateTime(row.Cells[4].Text) + "' ", c);DataSet upd = new DataSet();up.Fill(upd);range1 = worksheet.get_Range("A" + vud, "G" + vud);c.Close(); } }Листинг 20 –Заполнение отчета3.5 Безопасность данных в веб-приложенииВеб-приложения являются одними из наиболее небезопасных систем насегодняшний день.
Чем больше критически важных и конфиденциальных данных хранит программное обеспечение, тем важнее правильно организовать аутентификацию и авторизацию пользователей.Аутентификация – процесс получения имени пользователя и пароля,проверка полученной информации. Если проверка прошла успешно, то пользователь относится к категории аутентифицировавшихся пользователей.Авторизация – процесс определения того, какие права предоставленыпользователю на указанный ресурс. В итоге, пользователю предоставляетсядоступ к указанному ресурсу или такой доступ запрещается.В ASP.NET поддерживается три метода аутентификации:аутентификация Windows;аутентификация средствами веб-форм;аутентификация средствами Microsoft.При использовании аутентификации Windows, при обращении пользователя к веб-странице веб-сервер запрашивает у него имя пользователя (с доменом) и парольный хэш.