Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Преддипломная практика Крыжевич.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
667.52 Кб
Скачать

Приложение в

Код формы Register.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.OleDb;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.IO;

namespace WindowsFormsApplication2

{

public partial class Register : Form

{

public Register()

{

InitializeComponent();

this.ActiveControl = this.textBox1;

this.AcceptButton = this.button1;

}

private void button1_Click(object sender, EventArgs e)

{

string connectionstring = Properties.Settings.Default.conSt;

Datas dataform = new Datas();

if (connectionstring == "" || !File.Exists(Properties.Settings.Default.DbFileName))

{

dataform.chooseFile();

return;

}

string login = textBox1.Text;

string password = textBox2.Text;

OleDbConnection conn = new OleDbConnection(connectionstring);

conn.Open();

OleDbCommand comm = new OleDbCommand("SELECT COUNT(*) FROM `Users` WHERE Login = @login and Password = @password", conn);

comm.Parameters.Add("@login", OleDbType.Char).Value = login;

comm.Parameters.Add("@password", OleDbType.Char).Value = password;

if ((int)(comm.ExecuteScalar()) == 1)

{

MessageBox.Show("Пользователь существует", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

//Проверка заполненности формы регистрации

if (textBox1.Text == String.Empty)

{

MessageBox.Show("Не заполнено поле Логин", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

else if (textBox2.Text == String.Empty)

{

MessageBox.Show("Не заполнено поле Пароль", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

//Заполнение таблицы Users

comm = new OleDbCommand("INSERT INTO `users` VALUES(@1, @2, @3); ", conn);

comm.Parameters.Add("@1", OleDbType.Char).Value = login;

comm.Parameters.Add("@2", OleDbType.Char).Value = password;

comm.Parameters.Add("@3", OleDbType.Boolean).Value = "false";

comm.ExecuteNonQuery();

//Переход к окну LoginForm

this.Hide();

LoginForm loginform = new LoginForm();

loginform.Show();

}

private void Register_FormClosed(object sender, FormClosedEventArgs e)

{

Application.OpenForms[0].Show();

}

}

}

Приложение г

Код формы Datas.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.OleDb;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using Excel = Microsoft.Office.Interop.Excel;

using System.IO;

namespace WindowsFormsApplication2

{

public partial class Datas : Form

{

string zapros = null;

public Datas()

{

InitializeComponent();

}

private OleDbConnection conn;

private OleDbCommand comm;

public string connectionstring;

public void connecting()

{

connectionstring = Properties.Settings.Default.conSt;

if (connectionstring == "" || !File.Exists(Properties.Settings.Default.DbFileName))

{

chooseFile();

}

conn = new OleDbConnection(connectionstring);

comm = new OleDbCommand();

}

public void DataTable_Load(object sender, EventArgs e)

{

connecting();

// TODO: данная строка кода позволяет загрузить данные в таблицу "pOCHTADataSet.Class". При необходимости она может быть перемещена или удалена.

// this.classTableAdapter.Fill(this.pOCHTADataSet.Class);

conn.Open();

//Получение списка таблиц БД в combobox

DataTable tbls = conn.GetSchema("Tables", new string[] { null, null, null, "TABLE" });

foreach (DataRow row in tbls.Rows)

{

string TableName = row["TABLE_NAME"].ToString();

comboBox1.Items.Add(TableName);

}

conn.Close();

//Выделение строки

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Blue;

}

//ОТОБРАЖЕНИЕ ВСЕЙ ТАБЛИЦЫ

public void LoadFullTable_Click(object sender, EventArgs e)

{

ClearDGV();

connecting();

comm.Connection = conn;

conn.Open();

zapros = @"SELECT Pochtamt.[Индекс], Pochtamt.[Наименование почтамта], OPS.[Наименование ОПС], OPS.[Индекс ОПС], OPS.[ЕАС], ConnectType.[Вид соединения], TypeOPS.[Наименование типа ОПС], Class.[Класс ОПС], Address.Район, Address.[Населённый пункт], Address.Улица, Address.Дом, OPS.Телефон, InternetCanal.ТелефонИнтернет, TypeCanal.[Наименование типа канала], Speed.Скорость, Operator.[Название оператора], InternetCanal.[IP-адрес], OPS.[Количество окон] FROM ((((Operator INNER JOIN (((TypeCanal INNER JOIN InternetCanal ON TypeCanal.idTypeCanal = InternetCanal.[Тип канала]) INNER JOIN (TypeOPS INNER JOIN ((PassportOPS INNER JOIN Pochtamt ON PassportOPS.Почтамт = Pochtamt.idPochtamt) INNER JOIN OPS ON PassportOPS.ОПС = OPS.idOPS) ON TypeOPS.idTypeOPS = OPS.[Тип ОПС]) ON InternetCanal.idInternetCanal = PassportOPS.Интернет) INNER JOIN Speed ON InternetCanal.Скорость = Speed.idSpeed) ON Operator.idOperator = InternetCanal.Оператор) INNER JOIN ConnectType ON InternetCanal.[Вид соединения] = ConnectType.idConnectType) INNER JOIN Class ON OPS.Класс = Class.idClass) INNER JOIN Address ON OPS.Адрес = Address.idAddress)";

DataTable tble = getTable(zapros);

dataGridView1.DataSource = tble;

numRows();

conn.Open();

//количество строк и столбцов

dataGridView1.ReadOnly = true;

conn.Close();

}

//Нумерация строк в таблице

public void numRows()

{

for (int i = 0; i < dataGridView1.Rows.Count; i++)

{

dataGridView1.Rows[i].HeaderCell = new DataGridViewRowHeaderCell();

dataGridView1.Rows[i].HeaderCell.Value = (i + 1) + " ";

}

}

//выборка данных для колонки с выпадающим списком

public DataGridViewComboBoxColumn createCBColumn(DataTable source, string dMember, string vMember)

{

//Создание колонки

DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();

//Назначем источник данных

column.DataSource = source;

//Отображаемое значение

column.ValueMember = dMember;

//Значение

column.DisplayMember = vMember;

column.MaxDropDownItems = 100;

return column;

}

//Метод для получения таблицы

public int RowC = 0;

public int ColumnC = 0;

public DataTable getTable(string zapros)

{

connecting();

comm.Connection = conn;

comm.CommandText = zapros;

conn.Open();

//создаем таблицу

DataTable tble = new DataTable();

OleDbDataReader reader = comm.ExecuteReader();

for (int i = 0; i < reader.FieldCount; i++) //fieldcount количество столбцов

{

tble.Columns.Add(reader.GetName(i)); //getname получение имени столбца columns.add добавление столбца

}

object[] newRow; //массив для хранения строк из результата запроса

ColumnC = reader.FieldCount;

RowC = 0;

while (reader.Read())

{

RowC++;

newRow = new object[reader.FieldCount];

for (int i = 0; i < reader.FieldCount; i++)

{

newRow[i] = reader.GetValue(i);

}

tble.Rows.Add(newRow);

}

numRows();

reader.Dispose();

conn.Close();

return tble;

}

public void button3_Click(object sender, EventArgs e)

}

connecting();

conn.Open();

ClearDGV();

dataGridView1.ReadOnly = true;

zapros = @"SELECT " + comboBox1.SelectedItem + @".* FROM " + comboBox1.SelectedItem;

OleDbDataAdapter dbAdapter1 = new OleDbDataAdapter(zapros, conn);

DataTable dataTable = new DataTable();

dbAdapter1.Fill(dataTable);

dataGridView1.DataSource = dataTable;

conn.Close();

}

public void UpdateBtn_Click(object sender, EventArgs e)

{

DataSet dataSett = new DataSet();

try

{

// dataSett.AcceptChanges();

// this.table1TableAdapter.Update(this.database2DataSet1.Table1);

}

catch

{

MessageBox.Show("lololo");

}

}

//Действие при закрытии формы

private void Datas_FormClosed(object sender, FormClosedEventArgs e)

{

Form loginform = Application.OpenForms[0];

loginform.Show();

}

//МЕНЮ ToolStripMenu

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

this.Close();

Form loginform = Application.OpenForms[0];

loginform.Close();

}

private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)

{

MessageBox.Show("Разработчик: Крыжевич Павел (c) 2017", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

private void вернутьсяКАвторизацииToolStripMenuItem_Click(object sender, EventArgs e)

{

Form loginform = Application.OpenForms[0];

loginform.Show();

this.Close();

}

private void экспортТаблицыВExcelToolStripMenuItem_Click(object sender, EventArgs e)

{

saveFileDialog1.InitialDirectory = "C:\\tmp";

saveFileDialog1.Filter = "All files (*.*)|*.*|Microsoft Office Excel *.xlsx|*.xlsx";

saveFileDialog1.FilterIndex = 2;

saveFileDialog1.AddExtension = true;

saveFileDialog1.ShowDialog();

}

//Проверка возможности редактирования таблицы

private void checkBox1_CheckedChanged(object sender, EventArgs e)

{

if (checkBox1.Checked == true)

{

this.dataGridView1.ReadOnly = false;

}

else

{

this.dataGridView1.ReadOnly = true;

}

}

//СОРТИРОВКА

static bool IsNum(string s)

{

foreach (char c in s)

{

if (!Char.IsDigit(c)) return false;

}

return true;

}

public void Sort()

{

string TableColumnName = null;

string SortTextis = null;

if (IsNum(SortText.Text) == true)

{

SortTextis = SortText.Text;

}

else

{

SortTextis = "'" + SortText.Text + "'";

}

connecting();

conn.Open();

// Выбор таблицы из Combobox

int SortIndex = 1000;

SortIndex = SortBox.SelectedIndex;

switch (SortIndex)

{

case 0:

TableColumnName = @"Pochtamt.[Наименование почтамта]";

break;

case 1:

TableColumnName = @"OPS.[Наименование ОПС]";

break;

case 2:

TableColumnName = @"OPS.[Индекс ОПС]";

break;

case 3:

TableColumnName = @"OPS.ЕАС";

//Условие для ЕАС

if (EACcheck.Checked)

{

SortTextis = "-1";

}

else

{

SortTextis = "0";

}

break;

case 4:

TableColumnName = @"ConnectType.[Вид соединения]";

break;

case 5:

TableColumnName = @"TypeOPS.[Наименование типа ОПС]";

break;

case 6:

TableColumnName = @"Class.[Класс ОПС]";

break;

case 7:

TableColumnName = @"Address.[Населённый пункт]";

break;

case 8:

TableColumnName = @"TypeCanal.[Наименование типа канала]";

break;

case 9:

TableColumnName = @"Operator.[Название оператора]";

break;

}

comm.Connection = conn;

if (TableColumnName == "" || SortTextis == "")

{

TableColumnName = "";

SortTextis = "";

MessageBox.Show("Не заполнено условие поиска", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

try

{

zapros = "SELECT distinct Pochtamt.Индекс, Pochtamt.[Наименование почтамта], OPS.[Наименование ОПС], OPS.[Индекс ОПС], TypeOPS.[Наименование типа ОПС], Class.[Класс ОПС], Address.[Населённый пункт], Address.Улица, Address.Дом, OPS.Телефон, OPS.ЕАС, OPS.[Количество окон], TypeCanal.[Наименование типа канала], Operator.[Название оператора], Speed.Скорость, InternetCanal.ТелефонИнтернет, InternetCanal.[IP-адрес], ConnectType.[Вид соединения] FROM (((((((Class INNER JOIN (Address INNER JOIN OPS ON Address.idAddress = OPS.Адрес) ON Class.idClass = OPS.Класс) INNER JOIN PassportOPS ON OPS.idOPS = PassportOPS.ОПС) INNER JOIN ((InternetCanal INNER JOIN ConnectType ON InternetCanal.[Вид соединения] = ConnectType.idConnectType) INNER JOIN Operator ON InternetCanal.Оператор = Operator.idOperator) ON PassportOPS.Интернет = InternetCanal.idInternetCanal) INNER JOIN Pochtamt ON PassportOPS.Почтамт = Pochtamt.idPochtamt) INNER JOIN Speed ON InternetCanal.Скорость = Speed.idSpeed) INNER JOIN TypeCanal ON InternetCanal.[Тип канала] = TypeCanal.idTypeCanal) INNER JOIN TypeOPS ON OPS.[Тип ОПС] = TypeOPS.idTypeOPS) WHERE " + TableColumnName + " = " + SortTextis;

}

catch (OleDbException)

{

MessageBox.Show("ERROR", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

conn.Close();

//создаем таблицу

DataTable tble = getTable(zapros);

dataGridView1.DataSource = tble;

conn.Close();

}

//Кнопка сортировки, запросы на выборку

public void button2_Click(object sender, EventArgs e)

{

ClearDGV();

Sort();

dataGridView1.ReadOnly = true

numRows();

}

//Замена формы сортировки

public void SortBox_SelectedIndexChanged(object sender, EventArgs e)

{

int SelIndex = this.SortBox.SelectedIndex;

if (SelIndex == 3)

{

SortText.Visible = false;

EACcheck.Visible = true;

}

else

{

SortText.Visible = true;

EACcheck.Visible = false;

}

}

//Очистка таблицы

public void ClearDGV()

{

dataGridView1.SelectAll();

dataGridView1.ClearSelection();

dataGridView1.Columns.Clear();

dataGridView1.DataSource = null;

}

//Метод экспорта в EXCEL

public void ExportToExcel()

{

//Подключение к Excel

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();

Microsoft.Office.Interop.Excel.Workbook ObjWorkBook;

Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet;

//Создание новой книги Excel

ObjWorkBook = excelApp.Workbooks.Add(System.Reflection.Missing.Value);

//Создание новой таблицы Excel

ObjWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBook.Sheets[1];

excelApp.Workbooks.Add();

Microsoft.Office.Interop.Excel.Worksheet workSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelApp.ActiveSheet;

conn.Open();

numRows();

DataTable tble = getTable(zapros);

//Считывание таблицы

for (int i = 0; i < ColumnC; i++)

{

workSheet.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;

}

for (int i = 0; i < dataGridView1.ColumnCount; i++)

{

for (int j = 0; j < RowC; j++)

{

workSheet.Cells[j + 2, i + 1] = dataGridView1[i, j].Value.ToString();

}

}

//Сохранение книги Excel

string pathToFile;

pathToFile = saveFileDialog1.FileName;

workSheet.SaveAs(pathToFile);

excelApp.Application.Quit();

}

private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)

{

try { ExportToExcel(); }

catch { MessageBox.Show("Невозможно экспортировать данную таблицу."); return; }

}

private void openFileDialog1_FileOk(object sender, CancelEventArgs e)

{

MessageBox.Show("Файл выбран!", "Уведомление", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

//Выбор пути к файлу БД

public void chooseFile()

{

if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)

{

FileInfo fi = new FileInfo(openFileDialog1.FileName);

Properties.Settings.Default.conSt = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + openFileDialog1.FileName;

Properties.Settings.Default.DbFileName = openFileDialog1.FileName;

connectionstring = Properties.Settings.Default.conSt;

Properties.Settings.Default.Save();

}

}

public void выбратьФайлБДToolStripMenuItem_Click(object sender, EventArgs e)

{

chooseFile();

return;

}

}

}