| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | 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";        /// <summary>        /// Генерация капчи из 4-х символов        /// </summary>        /// <returns>Возвращает сгенерированную капчу</returns>        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);            }        }    }}
 |