Разработка базы данных
Этапы создания базы данных для учета операций интернет-магазина: выделение основных сущностей (клиенты, фильмы, операции, сотрудники, филиалы магазина) и установление связей между ними, разработка интерфейса на языке С# с использованием Windows Forms.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 22.06.2011 |
Размер файла | 614,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
База данных - это свод определенной информации, разбитой по тематическим группам для удобства и экономии времени при поиске. В бизнесе это особенно актуально, ведь, как известно, время - деньги. Вести учет клиентов магазина, товаров, работников и т.д. это удобно.
Анализ предметной области
база данные учет магазин интерфейс
Теперь проанализируем предметную область. У нас есть 5 сущностей - клиенты, фильмы, операции, сотрудники и филиалы магазина. У каждой сущности есть свои свойства. Перечислим их.
Клиенты:
-ФИО
-Номер паспорта клиента
-Телефон клиента
Фильмы:
-Название фильма
-Год выпуска
-Страна, в которой фильм был снят
-Режиссер фильма
-Оценка IMDB
-Цена в магазине
Операции:
-Дата покупки
-Код купленного фильма
-Клиент, совершивший покупку
Сотрудники:
-ФИО сотрудника
-Занимаемая должность
-Год рождения сотрудника
-Стаж работы
-Зарплата
Филиалы:
-Номер филиала
-Директор филиала
-Адрес
-Телефон
Связей между сущностями будет две - свяжем сущность Операции с сущностями Фильмы и Клиенты. Связь будет типа один ко многим. Теперь составим модель в программе ERwin (файл прилагается).
Разработка базы данных
Теперь по модели, составленной в программе Erwin, сгенерируем базу данных. В каждой таблице есть ключевое поле. В таблице Клиенты это будет поле ФИО, в таблице Фильмы это поле-счетчик Код фильма, В таблице операции ключ составной - он состоит из всех полей таблицы, В таблице Сотрудники ключевое поле - ФИО сотрудника, в таблице Филиалы ключ - номер филиала. Все запросы можно будет выполнять через пользовательский интерфейс с помощью языка SQL.
Пользовательский интерфейс и тестирование
Пользовательский интерфейс реализуем на языке С#, с использованием Windows Forms. На форме будет две вкладки - для пользователя и для администратора. На вкладке администратора будет необходима авторизация для доступа к определенным функциям - добавлению клиентов, фильмов, обработке SQL запросов, просмотру различных таблиц. Пользователю будет доступна только функция покупки фильмов. Он сможет просматривать только таблицу Фильмы, выполнять предопределенный запрос на отображение фильмов с оценкой IMDB выше семи, добавлять фильмы в корзину и покупать фильмы в корзине.
Теперь заполним базу данных записями и проверим, как работают функции программы.
Заключение
Программа показала стабильную работу, она выполняет все функции, которые должна выполнять. Программа корректно отображает таблицы базы данных, выполняет запросы. Пользовательский интерфейс прост и понятен.
Я думаю, что данная программа может быть использована для реального учета операций интернет-магазина по продаже фильмов.
Приложение
Код программы пользовательского интерфейса
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace Кинопрокат
{
public partial class Form1 : Form
{
string password = "12345";
bool adminLoggedIn = false;
public Form1()
{
InitializeComponent();
dataGridView2.Columns.Add("Дата", "Дата");
dataGridView2.Columns.Add("Фильм", "Фильм");
dataGridView2.Columns.Add("Клиент", "Клиент");
}
private void Show(string ask) //метод выполняет сортировку и отображение таблиц согласно заданному SQL запросу
{
try
{
oleDbCommand1.CommandText = ask;
oleDbCommand1.Connection = oleDbConnection1;
OleDbDataReader tableData = oleDbCommand1.ExecuteReader();
bindingSource1.Clear();
dataGridView1.Columns.Clear();
bindingSource1.DataSource = tableData;
dataGridView1.DataSource = bindingSource1;
tableData.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка");
return;
}
}
private void Interchange(string ask) //метод ыполняет изменение таблицы с помощью SQL
{
try
{
oleDbCommand1.CommandText = ask;
oleDbCommand1.Connection = oleDbConnection1;
oleDbCommand1.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка1");
return;
}
Show("SELECT * FROM " + comboBox1.Text);
}
private void button1_Click(object sender, EventArgs e) //обработка открытия базы данных
{
string connection = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=";
string[] restriction = new string[4]; //массив ограничения для соединения
restriction[3] = "TABLE";
DataTable scheme; //схема данных
oleDbConnection1.Close();
try
{
openFileDialog1.FileName = "";
openFileDialog1.Filter = "*.mdb|*.mdb|Все файлы|*.*";
openFileDialog1.ShowDialog();
connection += openFileDialog1.FileName;
oleDbConnection1.ConnectionString = connection;
oleDbConnection1.Open();
scheme = oleDbConnection1.GetSchema("Tables", restriction);
comboBox1.Items.Clear();
foreach (DataRow строкаСхемы in scheme.Rows) //добавление имен таблиц в выпадающий список
{
comboBox1.Items.Add(строкаСхемы["TABLE_NAME"]);
}
if (comboBox1.Items[0].ToString() != "Клиенты" || comboBox1.Items[1].ToString() != "Операции" || comboBox1.Items[2].ToString() != "Сотрудники" || comboBox1.Items[3].ToString() != "Филиалы" || comboBox1.Items[4].ToString() != "Фильмы") //проверка базы данных на соответствие заданному формату
{
oleDbConnection1.Close();
comboBox1.Items.Clear();
comboBox1.Text = "";
MessageBox.Show("Файл неверной базы данных", "Ошибка");
dataGridView1.Columns.Clear();
dataGridView1.Rows.Clear();
groupBox1.Enabled = false;
groupBox2.Enabled = false;
groupBox3.Enabled = false;
groupBox4.Enabled = false;
groupBox5.Enabled = false;
groupBox6.Enabled = false;
groupBox7.Enabled = false;
groupBox8.Enabled = false;
return;
}
comboBox1.Text = (string)comboBox1.Items[0];
if (comboBox1.Items.Count != 0)
{
comboBox1.Text = "Фильмы";
comboBox1.Enabled = false;
}
}
catch (System.Data.OleDb.OleDbException)
{
oleDbConnection1.Close();
comboBox1.Items.Clear();
comboBox1.Text = "";
dataGridView1.Columns.Clear();
dataGridView1.Rows.Clear();
MessageBox.Show("Вы выбрали файл неверного формата или поврежденный файл", "Ошибка выбора файла");
groupBox1.Enabled = false;
groupBox2.Enabled = false;
groupBox3.Enabled = false;
groupBox4.Enabled = false;
groupBox5.Enabled = false;
groupBox6.Enabled = false;
return;
}
Show("SELECT * FROM " + comboBox1.Text); //открытие управляющих элементов при удачном подключении к базе
groupBox4.Enabled = true;
groupBox6.Enabled = true;
groupBox7.Enabled = true;
groupBox8.Enabled = true;
}
private void button3_Click(object sender, EventArgs e) //метод обрабатывает SQL запросы на выборку
{
try
{
Show(textBox1.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка");
}
}
private void button4_Click(object sender, EventArgs e) //метод обрабатывает SQL запросы на изменение
{
try
{
Interchange(textBox2.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка");
}
}
private void button6_Click(object sender, EventArgs e) //Очистка поля ввода SQL запроса на выборку
{
textBox1.Clear();
Show("SELECT * FROM " + comboBox1.Text);
}
private void Form1_TextChanged(object sender, EventArgs e)//Отображение другой таблицы, указанной в comboBox1
{
Show("SELECT * FROM " + comboBox1.Text);
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button7_Click(object sender, EventArgs e) //Добавление нового фильма в таблицу "Фильмы"
{
string ask;
ask = "Insert Into Фильмы (Код_фильма, Название, Год, Страна, Режиссер, Оценка_IMDB, Цена) Values (";
ask += textBox13.Text + ",'" + textBox7.Text + "'," + textBox8.Text + ",'" + textBox9.Text + "','" + textBox12.Text + "'," + textBox10.Text + "," + textBox11.Text + ")";
try
{
Interchange(ask);
}
catch { }
comboBox1.Text = "Фильмы";
try
{
Show("SELECT * FROM " + comboBox1.Text);
}
catch { }
}
private void button8_Click(object sender, EventArgs e)//Очищает поле ввода SQL запроса на изменение
{
textBox2.Clear();
Show("SELECT * FROM " + comboBox1.Text);
}
private void button9_Click(object sender, EventArgs e) //Добавить в корзину
{
if (textBox14.Text != "" && textBox18.Text != "")
{
dataGridView2.Rows.Add(Convert.ToString(System.DateTime.Now.Date), textBox14.Text, textBox18.Text);
}
}
private void button10_Click(object sender, EventArgs e) //Добавление новой операции к таблице "Клиенты"
{
string ask;
ask = "Insert Into Клиенты (ФИО,Номер_паспорта,Телефон) Values (";
ask += "'" + textBox24.Text + "','" + textBox17.Text + "','" + textBox23.Text + "')";
try
{
Interchange(ask);
}
catch { }
comboBox1.Text = "Клиенты";
try
{
Show("SELECT * FROM " + comboBox1.Text);
}
catch { }
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e) //Закрытие программы
{
this.Close();
}
private void button11_Click(object sender, EventArgs e)//Отображение фильмов с оценкой IMDB выше семи
{
comboBox1.Text = "Фильмы";
Show("SELECT * FROM Фильмы WHERE Оценка_IMDB > 7");
textBox19.Text = Convert.ToString(dataGridView1.RowCount);
}
private void button12_Click(object sender, EventArgs e)//Вернуться в режим отображения таблиц
{
textBox19.Text = " ";
Show("SELECT * FROM " + comboBox1.Text);
}
private void button13_Click(object sender, EventArgs e)//Очистить поля ввода запроса на добавление клиента
{
textBox24.Clear();
textBox17.Clear();
textBox23.Clear();
}
private void button2_Click(object sender, EventArgs e)//Очистить поля ввода запроса на добавление фильма
{
textBox13.Clear();
textBox7.Clear();
textBox8.Clear();
textBox9.Clear();
textBox12.Clear();
textBox10.Clear();
textBox11.Clear();
}
private void button5_Click(object sender, EventArgs e)//Очистить поля ввода запроса на добавление операции
{
textBox14.Clear();
textBox18.Clear();
}
private void button14_Click(object sender, EventArgs e)
{
if (textBox3.Text == password)
{
adminLoggedIn = true;
groupBox1.Enabled = true;
groupBox2.Enabled = true;
groupBox3.Enabled = true;
groupBox5.Enabled = true;
textBox3.Text = "";
comboBox1.Text = "Фильмы";
comboBox1.Enabled = true;
}
}
private void button15_Click(object sender, EventArgs e)
{
adminLoggedIn = false;
groupBox1.Enabled = false;
groupBox2.Enabled = false;
groupBox3.Enabled = false;
groupBox5.Enabled = false;
comboBox1.Text = "Фильмы";
comboBox1.Enabled = false;
}
private void tabPage2_Enter(object sender, EventArgs e)
{
if(comboBox1.Items.Count != 0)
{
comboBox1.Text = "Фильмы";
comboBox1.Enabled = false;
}
}
private void tabPage1_Enter(object sender, EventArgs e)
{
if (adminLoggedIn == true && comboBox1.Items.Count != 0)
{
comboBox1.Text = "Фильмы";
comboBox1.Enabled = true;
}
}
private void button17_Click(object sender, EventArgs e) // Купить все
{
if (dataGridView2.Rows.Count != 0)
{
textBox14.Text = Convert.ToString(dataGridView2.Rows.Count);
for (int i = 0; i < dataGridView2.Rows.Count-1; i++)
{
if (dataGridView2.Rows[i].Cells[1].Value != "")
{
string ask;
ask = "Insert Into Операции (Дата, Код_фильма, Клиент) Values ('";
ask += dataGridView2.Rows[i].Cells[0].Value + "'," + dataGridView2.Rows[i].Cells[1].Value + ",'" + dataGridView2.Rows[i].Cells[2].Value + "')";
Interchange(ask);
}
}
MessageBox.Show("Операции с корзиной завершены");
}
}
private void button16_Click(object sender, EventArgs e) // Удалить
{
try
{
dataGridView2.Rows.RemoveAt(dataGridView2.SelectedRows[0].Index);
}
catch { }
}
}
}
Скриншоты программы
Размещено на Allbest.ru
Подобные документы
Выделение сущностей базы данных и связей между ними. Организация ее объектов. Логическая и физическая модель БД. Определение требований к информационной системе. Проектирование транзакций и пользовательского интерфейса. Разработка отчетов и запросов.
курсовая работа [2,4 M], добавлен 17.10.2014Проектирование даталогической модели в виде логической структуры реляционной базы данных в СУБД Microsoft SQL Server на основе созданной инфологической модели базы данных интернет-магазина музыки. Выделение сущностей и связей, анализ предметной области.
курсовая работа [724,6 K], добавлен 15.06.2013Принципы построения СУБД, их достоинства. Архитектура распределенной информационной системы. Разработка интернет-магазина рынка книг: построение физической модели данных на языке SQL, проектирование схемы базы данных с использованием веб-интерфейса.
курсовая работа [2,3 M], добавлен 01.11.2011Описание состава реляционной базы данных как системы связанной информации, сохраняемой в двумерных таблицах. Основные функции CMS и изучение структуры сервера MySQL. Разработка системы выборок данных по товарам для интернет-магазина, таблицы покупателей.
курсовая работа [2,0 M], добавлен 21.04.2015Анализ предметной области - магазин "Канцелярские товары". Проектирование и реализация учебной базы данных магазина. Перечень хранимой информации: таблицы, поля, типы. Выделение сущностей, атрибутов, ключей, связей. Создание и запуск базовых запросов SQL.
курсовая работа [2,4 M], добавлен 09.08.2015Анализ предметной области и введение ограничений. Выделение базовых сущностей. Концептуальная модель данных. Построение схемы реляционной модели базы данных магазина одежды в третьей нормальной форме. Описание физической БД. Проектирование интерфейса.
курсовая работа [2,6 M], добавлен 20.11.2013Этапы проектирования базы данных, определение целей и содержание таблиц. Добавление данных и создание других объектов базы данных. Даталогическая модель: структуризация, нормализация, схемы данных. Порядок, принципы создания пользовательского интерфейса.
курсовая работа [1,3 M], добавлен 26.03.2013Выделение основных сущностей проектируемой системы, описание их взаимосвязи. Построение базы данных и приложений: разработка таблиц и связей между ними, локальных представлений данных, форм, запросов, меню. Инструкция для работы пользователя с программой.
курсовая работа [380,9 K], добавлен 06.04.2015Анализ предметной области с использованием моделей методологии ARIS и разработка ER-диаграммы. Описание входной и выходной информации для проектирования реляционной базы данных. Разработка управляющих запросов и связей между ними с помощью языка SQL.
курсовая работа [975,2 K], добавлен 30.01.2014Специфика создания базы данных "On-line магазин", содержащей информацию о работе интернет-магазина. Проектирование логического и физического уровней с использованием CASE-средства Erwin. Реализация базы данных в архитектуре "клиент-сервер" на языке Java.
курсовая работа [1,2 M], добавлен 26.06.2012