1
0

Form1.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.Data.SqlClient; // для работы с базами данных
  11. namespace СУБД_Агентство
  12. {
  13. public partial class Form1 : Form
  14. {
  15. public Form1()
  16. {
  17. InitializeComponent();
  18. }
  19. // строка подключения к базе данных
  20. public static string txtcon = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DBAgentstvo.mdf;Integrated Security=True;Connect Timeout=30";
  21. /// <summary>
  22. /// Генерация капчи из 4-х символов
  23. /// </summary>
  24. /// <returns>Возвращает сгенерированную капчу</returns>
  25. string GetCapcha()
  26. {
  27. string TxtLetter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  28. string TxtDigit = "0123456789";
  29. string t1 = TxtLetter + TxtDigit;
  30. string capcha = "";
  31. bool FlagDigit = false;
  32. Random rnd = new Random();
  33. for (int i = 1; i <= 3; i++)
  34. {
  35. // взять символ из строки с символами для капчи
  36. char sim = t1[rnd.Next(t1.Length)];
  37. // если символ - цифра, запомнить это
  38. if (char.IsDigit(sim)) FlagDigit = true;
  39. capcha += sim; // добавить символ к капче
  40. }
  41. if (FlagDigit == false)
  42. capcha += TxtDigit[rnd.Next(TxtDigit.Length)];
  43. else
  44. capcha += TxtLetter[rnd.Next(TxtLetter.Length)];
  45. return capcha;
  46. }
  47. private void Form1_Load(object sender, EventArgs e)
  48. {
  49. // TODO: This line of code loads data into the 'dbAgentstvoDataSet1.Users' table. You can move, or remove it, as needed.
  50. this.usersTableAdapter.Fill(this.dbAgentstvoDataSet1.Users);
  51. // при запуске по умолчанию выбран риелтер
  52. cmbTypeUser.SelectedIndex = 0;
  53. LblCapcha.Text = GetCapcha();
  54. }
  55. private void cbxShowPass_CheckedChanged(object sender, EventArgs e)
  56. {
  57. // скрыть / показать символы пароля
  58. tbxPass.UseSystemPasswordChar = !cbxShowPass.Checked;
  59. }
  60. private void btnLogin_Click(object sender, EventArgs e)
  61. {
  62. if (TbxCapcha.Text.ToUpper() != LblCapcha.Text)
  63. {
  64. MessageBox.Show("Символы капчи введены неверно!\nПопробуйте еще раз.");
  65. LblCapcha.Text = GetCapcha();
  66. TbxCapcha.Clear();
  67. return;
  68. }
  69. // фильтр для таблицы Пользователи
  70. string txtfilter = String.Format("login = '{0}' and password = '{1}' and type = '{2}'", tbxLogin.Text, tbxPass.Text, cmbTypeUser.SelectedIndex);
  71. // включить фильтр
  72. bsUsers.Filter = txtfilter;
  73. // фильтр для передачи на рабочее место пользователя
  74. string filterworkplace = String.Format("login = '{0}'", tbxLogin.Text);
  75. // если не найден пользователь с указанным логином, паролем и типом
  76. if (bsUsers.Count == 0)
  77. {
  78. MessageBox.Show(String.Format("Нет пользователя \"{0}\" с указанным логином и паролем.", cmbTypeUser.Text));
  79. return;
  80. }
  81. tbxLogin.Clear(); tbxPass.Clear(); // очистить поля
  82. this.Visible = false; // сделать форму для авторизации невидимой
  83. if (cmbTypeUser.Text == "риелтер")
  84. {
  85. FormRielter frm = new FormRielter(); // создать форму для риелтера
  86. // передать фильтр для фильтрации авторизовавшегося пользователя
  87. frm.bsUsers.Filter = filterworkplace;
  88. frm.ShowDialog(); // открыть форму
  89. }
  90. if (cmbTypeUser.Text == "клиент")
  91. {
  92. FormKlient frm = new FormKlient(); // создать форму для клиента
  93. // передать фильтр для фильтрации авторизовавшегося пользователя
  94. frm.bsUsers.Filter = filterworkplace;
  95. frm.ShowDialog(); // открыть форму
  96. }
  97. this.Visible = true; // сделать видимой форму для авторизации
  98. tbxLogin.Focus(); // установить курсор
  99. // загрузить из базы данных обновленные записи из таблицы Users
  100. this.usersTableAdapter.Fill(this.dbAgentstvoDataSet1.Users);
  101. LblCapcha.Text = GetCapcha();
  102. }
  103. private void lblReg_Click(object sender, EventArgs e)
  104. {
  105. FormRegistration frm = new FormRegistration();
  106. frm.ShowDialog();
  107. // загрузить из базы данных обновленные записи из таблицы Users
  108. this.usersTableAdapter.Fill(this.dbAgentstvoDataSet1.Users);
  109. }
  110. private void LblCapcha_Paint(object sender, PaintEventArgs e)
  111. {
  112. // массив цветов
  113. Color[] colors = { Color.Green, Color.Black, Color.Yellow, Color.White };
  114. Random rnd = new Random();
  115. // изобразить от 5 до 10 линий
  116. for (int i = 1; i <= rnd.Next(5, 11); i++)
  117. {
  118. // координаты начала и конца отрезка
  119. int x1 = rnd.Next(LblCapcha.Width);
  120. int y1 = rnd.Next(LblCapcha.Height);
  121. int x2 = rnd.Next(LblCapcha.Width);
  122. int y2 = rnd.Next(LblCapcha.Height);
  123. // случайный цвет из массива цветов
  124. Color col = colors[rnd.Next(colors.Length)];
  125. // нарисовать линию на метке Label
  126. e.Graphics.DrawLine(new Pen(col), x1, y1, x2, y2);
  127. }
  128. }
  129. }
  130. }