Введение. 4
1 Постановка задачи. 5
1.1 Описание предметной области. 5
1.2 Входные и выходные данные. 5
1.3 Требования к программе. 5
2 Проектирование задачи. 6
2.1 Выбор и обоснование средств разработки. 6
2.2 Проектирование интерфейса пользователя. 7
2.3 Алгоритм решения задачи. 13
3 Программная реализация. 15
3.1 Описание разработанных модулей. 15
3.2 Описание разработанных методов. 19
4 Описание применения программы.. 22
4.1 Требования к аппаратно-программному обеспечению.. 24
4.2 Руководство пользователя. 24
Заключение. 24
Список использованных источников. 32
Приложение А. Листинг программы 33
Вследствие огромной популярности и прогрессивности киноиндустрии возникает потребность в качественном обслуживании посетителей кинотеатров.
Целью данного курсового проекта является создание программного средства «Кинотеатр», предназначенное для использования не только оператором кинотеатра, для которого доступны функции добавления, редактирования, удаления фильмов и сеансов, но и клиентами, для которых есть возможности авторизации и покупки билетов. Для этого использовались: язык программирования «C#», среда разработки «Visual Studio 2015», фреймворк «Bunifu», а также язык структурированных запросов «Structured Query Language».
Задачи, которые нужно решить для реализации программы:
- проанализировать и исследовать предметную область «Кинотеатр»;
- создать систему регистрации и авторизации;
- разделить права администратора и клиента;
- создать реляционную базу данных и установить связи между таблицами этой базы
данных;
- создать запросы на добавление, удаление, обновление записей базы данных;
- реализовать интерфейс для выбора мест в кинозале;
- разработать интерфейс, соответствующий основным требованиям, предъявляемым к пользовательским интерфейсам.
Программное средство «Кинотеатр» состоит из следующих пунктов:
- пункт меню «Афиша», предназначенный для покупки билетов клиентами, и
- редактирования, добавления фильмов и сеансов администратором;
- пункт меню «Профиль», предназначенный для просмотра купленных билетов,
- редактирования клиентами информации о себе, а также смены пароля; пункт меню «Настройки», предназначенный для включения и отключения функций программы и смены аккаунта.
Пример кода для регистрации и авторизации:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Data.SqlClient;
using Bunifu.UI.WinForms.BunifuButton;
namespace Cinema
{
public partial class FormLogIn : Form
{
private SqlConnection con;
private string conStr = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Cinema.mdf;Integrated Security=True";
static public int idProfile = 0;
private void button_Click(object sender, EventArgs e)
{
((BunifuButton)sender).Visible = false;
transButton.ShowSync(((BunifuButton)sender));
((BunifuButton)sender).Focus();
}
private void RememberMe(bool val)
{
if (val)
{
Properties.Settings.Default.IsRemember = val;
Properties.Settings.Default.Id = idProfile;
}
Properties.Settings.Default.Save();
}
private void Auth()
{
bool success = false;
using (con = new SqlConnection(conStr))
using (SqlCommand cmdAuth = new SqlCommand("SELECT CodeClient, Login, Password FROM Profile WHERE Login = @login and Password = @password", con))
{
SqlDataReader reader = null;
cmdAuth.Parameters.AddWithValue("@login", tbLogin.Text);
cmdAuth.Parameters.AddWithValue("@password", tbPassword.Text);
try
{
con.Open();
using (reader = cmdAuth.ExecuteReader())
{
success = reader.Read();
if (success)
{
idProfile = Convert.ToInt32(reader[0].ToString());
RememberMe(cbRememberMe.Checked);
this.Hide();
FormMain fm = new FormMain();
fm.Show();
}
else
{
lblAlert.Text = "Неверный логин или пароль";
lblAlert.ForeColor = Color.FromArgb(255, 38, 38);
lblAlert.Visible = true;
}
}
}
catch (SqlException)
{
throw;
}
}
}
private void Registr()
{
bool success = false;
using (con = new SqlConnection(conStr))
{
using (SqlCommand cmdCheck = new SqlCommand("SELECT Login FROM Profile WHERE Login = @login", con))
{
try
{
con.Open();
SqlDataReader reader = null;
cmdCheck.Parameters.AddWithValue("@login", tbLoginSignUp.Text);
using (reader = cmdCheck.ExecuteReader())
{
success = reader.Read();
}
}
catch (SqlException)
{
throw;
}
}
if (!success)
{
if (tbPasswordSignUp.Text != "" && tbName.Text != "" && tbSecName.Text != ""
&& tbPasswordRepeatSignUp.Text.Equals(tbPasswordSignUp.Text) && tbPasswordSignUp.Text.Length >= 8)
{
using (SqlCommand cmdReg = new SqlCommand("INSERT into Profile(Login, Password, Name, SecName) VALUES(@login, @password, @name, @secName)", con))
{
cmdReg.Parameters.AddWithValue("@login", tbLoginSignUp.Text);
cmdReg.Parameters.AddWithValue("@password", tbPasswordSignUp.Text);
cmdReg.Parameters.AddWithValue("@name", tbName.Text);
cmdReg.Parameters.AddWithValue("@secName", tbSecName.Text);
cmdReg.ExecuteNonQuery();
}
lblAlert.Text = "Регистрация прошла успешно";
btnSignIn.Active = true;
btnSignUp.Active = false;
pageSign.SetPage("Вход");
lblAlert.ForeColor = Color.FromArgb(0, 166, 95);
lblAlert.Visible = true;
lblSignUpAlert.Visible = false;
}
else
{
if (!tbPasswordRepeatSignUp.Text.Equals(tbPasswordSignUp.Text))
{
lblSignUpAlert.Text = "Заполните все поля. Пароли не совпадают";
lblPassLen.Visible = false;
}
else
{
lblSignUpAlert.Text = "Заполните все поля";
lblPassLen.Visible = false;
}
if (tbPasswordSignUp.Text.Length < 8)
{
lblPassLen.Visible = true;
}
lblSignUpAlert.ForeColor = Color.FromArgb(255, 38, 38);
lblSignUpAlert.Visible = true;
}
}
else
{
lblSignUpAlert.Text = "Данный логин уже зарегистрирован";
lblSignUpAlert.Visible = true;
lblSignUpAlert.ForeColor = Color.FromArgb(255, 38, 38);
}
}
}
Список использованной литературы: