using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; // для работы с базами данных namespace СУБД_Агентство { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // строка подключения к базе данных public static string txtcon = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DBAgentstvo.mdf;Integrated Security=True;Connect Timeout=30"; /// /// Генерация капчи из 4-х символов /// /// Возвращает сгенерированную капчу string GetCapcha() { string TxtLetter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string TxtDigit = "0123456789"; string t1 = TxtLetter + TxtDigit; string capcha = ""; bool FlagDigit = false; Random rnd = new Random(); for (int i = 1; i <= 3; i++) { // взять символ из строки с символами для капчи char sim = t1[rnd.Next(t1.Length)]; // если символ - цифра, запомнить это if (char.IsDigit(sim)) FlagDigit = true; capcha += sim; // добавить символ к капче } if (FlagDigit == false) capcha += TxtDigit[rnd.Next(TxtDigit.Length)]; else capcha += TxtLetter[rnd.Next(TxtLetter.Length)]; return capcha; } private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'dbAgentstvoDataSet1.Users' table. You can move, or remove it, as needed. this.usersTableAdapter.Fill(this.dbAgentstvoDataSet1.Users); // при запуске по умолчанию выбран риелтер cmbTypeUser.SelectedIndex = 0; LblCapcha.Text = GetCapcha(); } private void cbxShowPass_CheckedChanged(object sender, EventArgs e) { // скрыть / показать символы пароля tbxPass.UseSystemPasswordChar = !cbxShowPass.Checked; } private void btnLogin_Click(object sender, EventArgs e) { if (TbxCapcha.Text.ToUpper() != LblCapcha.Text) { MessageBox.Show("Символы капчи введены неверно!\nПопробуйте еще раз."); LblCapcha.Text = GetCapcha(); TbxCapcha.Clear(); return; } // фильтр для таблицы Пользователи string txtfilter = String.Format("login = '{0}' and password = '{1}' and type = '{2}'", tbxLogin.Text, tbxPass.Text, cmbTypeUser.SelectedIndex); // включить фильтр bsUsers.Filter = txtfilter; // фильтр для передачи на рабочее место пользователя string filterworkplace = String.Format("login = '{0}'", tbxLogin.Text); // если не найден пользователь с указанным логином, паролем и типом if (bsUsers.Count == 0) { MessageBox.Show(String.Format("Нет пользователя \"{0}\" с указанным логином и паролем.", cmbTypeUser.Text)); return; } tbxLogin.Clear(); tbxPass.Clear(); // очистить поля this.Visible = false; // сделать форму для авторизации невидимой if (cmbTypeUser.Text == "риелтер") { FormRielter frm = new FormRielter(); // создать форму для риелтера // передать фильтр для фильтрации авторизовавшегося пользователя frm.bsUsers.Filter = filterworkplace; frm.ShowDialog(); // открыть форму } if (cmbTypeUser.Text == "клиент") { FormKlient frm = new FormKlient(); // создать форму для клиента // передать фильтр для фильтрации авторизовавшегося пользователя frm.bsUsers.Filter = filterworkplace; frm.ShowDialog(); // открыть форму } this.Visible = true; // сделать видимой форму для авторизации tbxLogin.Focus(); // установить курсор // загрузить из базы данных обновленные записи из таблицы Users this.usersTableAdapter.Fill(this.dbAgentstvoDataSet1.Users); LblCapcha.Text = GetCapcha(); } private void lblReg_Click(object sender, EventArgs e) { FormRegistration frm = new FormRegistration(); frm.ShowDialog(); // загрузить из базы данных обновленные записи из таблицы Users this.usersTableAdapter.Fill(this.dbAgentstvoDataSet1.Users); } private void LblCapcha_Paint(object sender, PaintEventArgs e) { // массив цветов Color[] colors = { Color.Green, Color.Black, Color.Yellow, Color.White }; Random rnd = new Random(); // изобразить от 5 до 10 линий for (int i = 1; i <= rnd.Next(5, 11); i++) { // координаты начала и конца отрезка int x1 = rnd.Next(LblCapcha.Width); int y1 = rnd.Next(LblCapcha.Height); int x2 = rnd.Next(LblCapcha.Width); int y2 = rnd.Next(LblCapcha.Height); // случайный цвет из массива цветов Color col = colors[rnd.Next(colors.Length)]; // нарисовать линию на метке Label e.Graphics.DrawLine(new Pen(col), x1, y1, x2, y2); } } } }