Автор работы: Пользователь скрыл имя, 02 Июня 2013 в 11:29, курсовая работа
Існує деяка фірма, що займається доопрацюванням автомобілів (далі – СТО). Фірма пропонує своїм клієнтам послуги з встановлення або заміни запчастин, виконання робіт, пов‘язаних з ремонтом або налаштуванням авто, тощо. Крім того, кожен автомобіль має вичерпну інформацію про характеристики. Фірма має своїх клієнтів, інформацію про яких зберігає протягом певного часу.
1 Завдання 3
2 Вступ 4
3 Керівництво користувачеві 6
3.1 Встановлення програми 6
3.2 Інтерфейс користувача 7
4 Керівництво розробнику 16
4.1 Опис бази даних 16
4.2 Опис програми 19
5 Заключення 22
6 Додаток 23
6.1 Додаток 1 23
6.2 Додаток 2 23
6.3 Додаток 3 26
7 Література 29
Також в базі даних містяться представлення:
Для формування вибірок даних і для зміни даних були створені процедури (stored procedures):
В базі даних також було створено тригери для коректного видалення та редагування даних.
В додатку 1 подано діаграму даних і зв‘язків в базі.
Як вже зазначалося, програма написана за архітектурою «клієнт-сервер». Для роботи з базою даних були написані наступні класи:
Всі вищенаведені класи забезпечують зв‘язок з базою даних, інформація з бази зберігається у відповідних об‘єктах.
Для зв‘язку з базою даних використовуються два підходи: із використанням класів SqlConnection, SqlCommand і SqlDataReader; та із використанням технології ADO.NET. Приклади коду програми із використанням обох підходів наведено в додатку 2.
Для реалізації інтерфейсу користувача було створено наступні візуальні класи:
Програма «Garage Inc.», написана в ході курсової роботи, є досить зручним і, водночас, простим засобом ведення обліку замовлень та клієнтів СТО.
Дана програма може слугувати, також, і в якості навчальної програми для вивчення засобів і прийомів програмування на платформі Micrisoft .NET 2003®, використання технології ADO.NET, робот из сервером баз даних MS SQL Server 2000®.
Програма може бути розширена і доповнена, тобто може бути використана як база для написання проектів, що покривають більш широке коло: ведення бухгалтерського обліку на підприємстві; база даних автосалону, з можливістю врахування вартості поставок автомобілів від різних постачальників; база даних дизайнерського ательє з реставрації автомобілів; електронний склад запчастин, тощо.
Рис. 6.1 Діаграма зв‘язків між таблицями в базі даних
Приклад використання в програмі класів SqlConnection, SqlCommand і SqlDataReader для роботи з базою даних. Метод LoadCars в класі Customer.
public void LoadCars() { /// ініціалізація об‘єктів /// рядок з‘єднання зчитується з конфігураційного файлу this.ConnectionString = ConfigurationSettings. this._cars = new ArrayList(); this._addresses = new ArrayList();
/// створення об‘єктів з‘єднання, SQL-команди і /// потоку зчитування даних SqlConnection
connection = new SqlConnection(this. SqlCommand command = new SqlCommand(); SqlDataReader dataReader = null;
try { /// відкриття з‘єднання, виклик процедури spGetCustomerCars connection.Open(); command.Connection = connection; command.CommandText = "spGetCustomerCars"; command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@id", this.Id); dataReader = command.ExecuteReader();
if (dataReader != null) { /// зчитування даних в об‘єкт car this._cars = new ArrayList(); while (dataReader.Read()) { /// заповнюєм об‘ект car Car car = new Car(); car.BodyTypeId = Convert.ToInt32(dataReader[" car.CarMarkId = Convert.ToInt32(dataReader[" car.CategoryId = Convert.ToInt32(dataReader[" car.CountryId = Convert.ToInt32(dataReader[" car.CustomerId = Convert.ToInt32(dataReader[" car.DriveTypeId = Convert.ToInt32(dataReader[" car.EnginePlaceId = Convert.ToInt32(dataReader[" car.EngineTypeId = Convert.ToInt32(dataReader[" car.Id = Convert.ToInt32(dataReader[" car.ModelId = Convert.ToInt32(dataReader[" car.Velium = dataReader["Velium"].ToString(
/// додаємо car до масиву _cars this._cars.Add(car); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { connection.Close(); } } |
Приклад використання в програмі технології ADO.NET.
public void SaveOrAddCustomer(int action) { SqlConnection connection = new SqlConnection(this. SqlCommand command = new SqlCommand(); SqlDataAdapter DA = new SqlDataAdapter(); DataSet DS = new DataSet("customer");
/// тут використовується DataSet, що заповнюється /// даними про клієнта. Це необхідно, щоб створилися об‘єкти /// Table, Row і Column в об‘єкті DataSet connection.Open(); command.Connection = connection; command.CommandText = "spGetCustomerById"; command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@id", this.Id);
DA.SelectCommand = command; SqlCommandBuilder CB = new SqlCommandBuilder(DA);
try { DA.Fill(DS);
if (DS.Tables[0] != null) { /// в залежності від параметра action /// виконуємо або заповнення DataSet даними, /// або додаємо новий рядок Row, який заповнюємо даними switch (action) { case 1: DS.Tables[0].Rows[0][DS. DS.Tables[0].Rows[0][DS. DS.Tables[0].Rows[0][DS. DS.Tables[0].Rows[0][DS. DS.Tables[0].Rows[0][DS. break; case 2: DataRow row = DS.Tables[0].NewRow(); row["name"] = this.Name; row["patronymic"] = this.Patronymic; row["surname"] = this.Surname; row["phone"] = this.Phone; row["paymentTypeId"] = this.PaymentTypeId; DS.Tables[0].Rows.Add(row); break; } /// оновлюємо DataSet /// технологія ADO.NET дозволяє оновити набір даних /// на основі запиту типу SELECT. При цьому клас DataSet /// автоматично генерує /// або INSERT. DA.Update(DS);
if (action == 2) { this.GetCustomerById(this.Id); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { connection.Close(); } } |
Приклад методу FindCustomer классу BulkSearch, що виконує пошук клієнта.
public void FindCustomer(string _name, string _address, string _car, string logic) { string name = _name; string address = _address; string car = _car; string query = ""; /// масив символів, що ігноруються при вводі і розділяють рядок на /// окремі терми char [] separators = {',', ' ', '.', ';', ';', ',', '.'}; bool first = true; bool added = false;
/// масив для пошуку по П.І.Б. клієнта string[] nameArr = name.Split(separators);
/// початок формування запиту для пошуку в таблиці клієнтів if (_name.Trim().Length > 0) query = "SELECT c.[id], c.[name], c.[patronymic], c.[surname] FROM tblCustomer c WHERE "; foreach (string item in nameArr) { /// конкатенація запиту, використовується /// оператор LIKE для часткового співпадання слів if (item.Trim().Length > 0) { if (first != true) { query += " " + logic + " "; } else first = false; query += " (c.[name] LIKE'%" + item.Trim() + "%' " + logic + " c.[patronymic] LIKE'%" + item.Trim() + "%' " + logic + " c.[surname] LIKE'%" + item.Trim() + "%') "; added = true; } }
/// формування другого запиту – для пошуку в таблиці адрес if (_address.Trim().Length > 0) { if (added == true) { /// об‘єднання запитів в один query += " UNION ALL "; } added = false; query += "SELECT DISTINCT c.[id], c.[name], c.[patronymic], c.[surname] FROM tblCustomer c INNER JOIN tblAddress a ON a.customerId = c.[id] WHERE "; string[] addrArr = _address.Split(separators); first = true; foreach (string item in addrArr) { if (item.Trim().Length > 0) { if (first != true) { query += " " + logic + " "; } else first = false; query += " (a.[address] LIKE'%" + item.Trim() + "%') "; added = true; } } }
/// формування третього запиту
– для пошуку в таблиці автомоб if (_car.Trim().Length > 0) { if (added == true) { /// об‘єднання запитів query += " UNION ALL "; } query += "SELECT DISTINCT c.[id], c.[name], c.[patronymic], c.[surname] FROM tblCustomer c INNER JOIN tblCar a ON a.customerId = c.[id] WHERE "; string[] carArr = _car.Split(separators); first = true; foreach (string item in carArr) { if (item.Trim().Length > 0) { if (first != true) { query += " " + logic + " "; } else first = false; query += " (a.carMarkId IN (SELECT [id] FROM tblCarMark WHERE [name] LIKE'%" + item.Trim() + "%') " + logic + " a.modelId IN (SELECT [id] FROM tblModel WHERE [name] LIKE'%" + item.Trim() + "%')) "; added = true; } } }
if (query.Trim().Length > 0) { /// додаємо умову сортування query += " ORDER BY c.[surname], c.[name], c.[patronymic];";
/// виконуємо запит SqlConnection connection = new SqlConnection(this. SqlCommand command = new SqlCommand(); SqlDataReader dataReader = null;
try { connection.Open(); command.Connection = connection; command.CommandText = query; command.CommandType = CommandType.Text;
dataReader = command.ExecuteReader();
/// зчитуємо результат запиту if (dataReader != null) { this._customerList = new ArrayList(); while (dataReader.Read()) { Customer cust = new Customer(); cust.Id = Convert.ToInt32(dataReader[" cust.Name = dataReader["name"].ToString(); cust.Patronymic = dataReader["patronymic"]. cust.Surname = dataReader["surname"]. this._customerList.Add(cust). } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { connection.Close(); } } } |
Информация о работе База даних станції технічного обслуговування автомобілів «Garage Inc.»