База даних станції технічного обслуговування автомобілів "Garage Inc."

Облік замовлень на станціях технічного обслуговування автомобілів за допомогою програми "Garage Inc." Введення, відображення інформації в зручному для користувача вигляді. Встановлювання вартості замовлення автоматично, в залежності від вартості послуг.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык украинский
Дата добавления 10.11.2011
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Системи керування базами даних

Курсова робота на тему:

БАЗА ДАНИХ СТАНЦІЇ ТЕХНІЧНОГО ОБСЛУГОВУВАННЯ АВТОМОБІЛІВ «GARAGE INC.»

Зміст

1. Завдання

2. Вступ

3. Керівництво користувачеві

3.1 Встановлення програми

3.2 Інтерфейс користувача

4. Керівництво розробнику

4.1 Опис бази даних

4.2 Опис програми

5. Заключення

6. Додаток

6.1 Додаток 1

6.2 Додаток 2

6.3 Додаток 3

7. Література

1. Завдання

Існує деяка фірма, що займається доопрацюванням автомобілів (далі - СТО). Фірма пропонує своїм клієнтам послуги з встановлення або заміни запчастин, виконання робіт, пов`язаних з ремонтом або налаштуванням авто, тощо. Крім того, кожен автомобіль має вичерпну інформацію про характеристики. Фірма має своїх клієнтів, інформацію про яких зберігає протягом певного часу.

Необхідно забезпечити введення, редагування та відображення інформації в зручному для користувача вигляді.

Також передбачається можливість:

1. Додавати/редагувати замовлення;

2. Додавати/редагувати клієнтів;

3. Додавати/редагувати автомобілі і інформацію, пов`язану з ними (марки, моделі, країни-виробники і т.п.);

4. Додавати/редагувати відомості про запчастини і послуги;

5. Встановлювати вартість замовлення автоматично, в залежності від вартості послуг, що надаються, вартості запчастин та від категорії автомобіля;

2. Вступ

Програма «Garage Inc.» призначена для використання на станціях технічного обслуговування автомобілів (СТО). Програма надає можливість вести облік замовлень в зручній формі. Також передбачено можливість ведення бази даних клієнтів фірми та їх автомобілів, які обслуговуються під час виконання цих замовлень. Замовлення фіксуються разом з набором послуг, що були надані, і за обсягом запчастин, які було (буде) використано протягом виконання замовлення. Вартість замовлення вираховується автоматично, в залежності від сумарної вартості надання послуг і вартості запчастин, а також із врахуванням цінової категорії автомобіля.

При написанні програми враховувалось, що СТО пропонує деякий набір послуг, в які включено список запчастин. Тобто при виконанні однієї послуги використовується деяка кількість запчастин. Кожна запчастина має вартість, так само і послуга також має вартість. При складанні замовлення вибираються декілька послуг, таким чином, вартість всього замовлення являє собою суму вартості послуг і запчастин, що прив`язані до цих послуг, помножена на коефіцієнт, що залежить від цінової категорії автомобіля. Наприклад, якщо автомобіль знаходиться в ціновій категорії 10000 грн. - 50000 грн., то вартість замовлення має бути нижчою, ніж коли автомобіль знаходиться в ціновій категорії 50000 грн. - 150000 грн.

База даних клієнтів дозволяє зберігати інформацію про клієнтів, які користувалися послугами СТО. Необхідно зберігати персональну інформацію про клієнта, таку як П.І.Б, контактний телефон, спосіб оплати (готівкою, в кредит, безготівковий розрахунок тощо), список адрес (адрес у одного клієнта може бути декілька).

Також для кожного клієнта необхідно зберігати список автомобілів, які обслуговувалися в СТО. Для кожного автомобіля потрібно мати вичерпну інформацію про технічні характеристики, такі як марка і модель авто, країна-виробник, тип приводу, тип кузову, об`єм, розміщення і тип двигуна, цінова категорія авто.

Для зручності контролю замовлень, потрібно мати можливість передивитись список останніх замовлень, редагувати поточні замовлення, отримувати звіти по замовленням.

В даній роботі представлена програма, що реалізує всі вказані можливості і може бути використана як помічник при веденні обліку замовлень і клієнтів на СТО.

3. Керівництво користувачеві

Програма «Garage Inc.» є досить простою у користуванні завдяки своєму інтуїтивно зрозумілому інтерфейсу. Програма не потребує навичок роботи з системами керування базами даних, не потребує налаштування. Сервер баз даних може бути встановлений як на локальному комп`ютері, так і на віддаленій робочій станції в мережі. Встановлення бази даних і конфігурування доступу до неї вимагає знань адміністрування баз даних в MS SQL Server 2000, тому може проводитись адміністратором серверу баз даних або за підтримки розробників програми.

3.1 Встановлення програми

Програма вимагає, щоб на комп`ютері було встановлено MS .NET Framework v1.1. Інакше, программа просто не зможе запуститись.

Для початку необхідно встановити базу даних на сервері MS SQL 2000. після чого скопіювати папку з програмою «Garage Inc.» в будь-який каталог на комп`ютері користувача. В робочій директорії програми потрібно відкрити файл «Garage Inc.exe.config» і внести (змінити) до нього рядок з`єднання з сервером. Для цього в файлі потрібно змінити наступні рядки:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<appSettings>

<add key="sqlconnectionstring" value="workstation id=localhost;integrated security=SSPI;user id=dev;data source=localhost;persist security info=False;initial catalog=garage_inc_dev" />

</appSettings>

</configuration>

Тут рядок:

workstation id=localhost;integrated security=SSPI;user id=dev;data source=localhost;persist security info=False;initial catalog=garage_inc_dev

змінюється таким чином:

1. user id=ім`я_користувача

2. data source=ім`я_сервера

3. initial catalog=назва_бази_даних

де ім`я_користувача - ім`я користувача бази даних, що має права власника даної бази, ім`я_сервера - ім`я сервера баз даних в мережі, назва_бази_даних - назва бази даних (робочого каталогу).

Після описаних дій можна запускати програму. При виникненні помилок, програма видасть повідомлення.

3.2 Інтерфейс користувача

Після запуску програми відображається стартова форма. На ній виводиться список останніх 10 замовлень (рис. 3.1).

Рис. 3.1 Початковий вигляд програми «Garage Inc.»

На стартовій формі розміщені панель навігації, що зліва, і панель з даними, що розташована справа. На панелі навігації є дві кнопки, що дозволяють перейти на форми редагування клієнтів і замовлень. На панелі справа відображається поточна дата і список останніх десяти замовлень. Кожне замовлення відображається як посилання, натиснувши на яке, користувач може перейти на форму редагування відповідного замовлення.

При натисканні на кнопку Клієнти, користувач відкриває форму редагування клієнтів (рис. 3.2).

Рис. 3.2 Вигляд форми редагування записів про клієнтів

На цій формі на панелі зліва є кнопки для додавання нового запису про клієнта, видалення існуючого запису і переходу назад до початкової форми.

На панелі справа відображається інформація про поточного клієнта. Знизу є кнопки переходу по записах з клієнтами. За один раз на формі присутня інформація про одного клієнта, при натисненні на одну з кнопок внизу форми відбувається перехід на наступний (попередній/перший/останній) запис.

У верхній частині форми відображається П.І.Б. клієнта, його контактний телефон, тип оплати і адреси. Для редагування цих даних необхідно натиснути кнопку «Редагувати», після чого можна змінювати дані. При цьому кнопка «Редагувати» зміниться на кнопку «Зберегти», при натисканні на яку відбудеться збереження введених даних до бази (рис. 3.3).

Рис. 3.3 Редагування персональних даних клієнта

У випадаючому списку «Тип оплати», як видно з рис. 3.3, в кінці є рядок «Додати новий…». Якщо клікнути на цьому рядку, то відкриється форма для редагування типів оплати. Взагалі, в програмі майже всі випадаючі списки надають можливість редагування своїх записів подібним чином. Так само можна додати адресу користувача, якщо у випадаючому списку «Адреса» натичнути останній рядок «Додати нову…».

Форми, що викликаються для редагування випадаючих списків, мають дуже схожий вигляд. На рис. 3.4. показано одну з таких форм - редагування типів оплати. На таких формах дані представляються у вигляді таблиці. Для того, щоб змінити існуючий запис, потрібно вибрати його. Цей запис з`явиться в полях зверху. Після чого можна редагувати ці поля і натискати кнопку «Зберегти». Якщо ввести дані в поля зверху і натиснути кнопку «Додати», то ці дані додадуться до бази, як новий запис. Це можна побачити в таблиці в центрі форми. Для видалення запису достатньо його вибрати в таблиці і натиснути кнопку «Видалити».

Рис. 3.4 Вигляд форми для редагування типів оплати

В центральній частині форми редагування інформації про клієнта міститься список його автомобілів (рис. 3.5).

Рис. 3.5 Автомобілі клієнта

Тут запис про автомобіль являє собою набір випадаючих списків, в яких відображається наступна інформація: марка і модель авто, країна-виробник (або експортер), тип приводу на колеса, тип кузову, об`єм двигуна, тип двигуна, розміщення двигуна і цінова категорія. Для того, щоб змінити запис про автомобіль, потрібно натиснути кнопку «Редагувати» справа від запису. Кнопка «Видалити» видаляє вибраний запис про автомобіль. Щоб додати автомобіль до клієнта, потрібно натиснути кнопку «Додати». В такому випадку з`явиться ще один рядок з автомобілем, в якому необхідно буде ввести потрібні дані і натиснути кнопку «Зберегти» (рис. 3.6). Кнопка «Видалити всі» видаляє всі автомобілі з клієнта.

Рис. 3.6 Додавання нового автомобіля до клієнта

В нижній частині форми клієнта міститься інформація про замовлення клієнта (рис. 3.7).

Рис. 3.7 Замовлення клієнта на формі редагування клієнта

Кожне замовлення виводиться як посилання, натиснувши на яке, користувач потрапляє на форму редагування замовлень, яку описано нижче. Тут кнопка «Додати» також відкриває форму замовлень для створення нового замовлення для обраного клієнта.

У верхній частині форми про клієнта є кнопка «Пошук» (рис. 3.2). Ця кнопка дозволяє перейти на форму пошуку клієнта (рис.3.8). На цій формі в поля «Шукати в П.І.Б.», «Шукати в адресі» і «Шукати серед автомобілів» користувач може ввести ключові слова пошуку. Пошук здійснюється по частинному співпаданню хоча б одного слова в базі даних. Нижче на формі виводиться список знайдених клієнтів. На кожен запис клієнта можна натиснути і перейти, таким чином, на форму редагування вказаного клієнта.

Рис. 3.8 Форма пошуку клієнта

На стартовій формі програми на панелі навігації зліва міститься кнопка «Замовлення» (рис. 3.1). При натисканні на цю кнопку, користувач відкриває форму редагування замовлень (рис. 3.9). Як видно з рисунка, вигляд цієї форми подібний до вигляду форми редагування інформації про клієнтів. Зліва містяться кнопки додавання нового замовлення, видалення вибраного замовлення і кнопка переходу назад, до стартової форми.

Рис. 3.9 Форма редагування замовлень

У верхній частині форми замовлень виводиться інформація про номер замовлення (умовний код замовлення), дата замовлення, П.І.Б. клієнта, який здійснив це замовлення і автомобіль, який є об`єктом виконання робіт. Кнопка «Редагувати», що у верхній частині форми, дозволяє активувати поля для редагування. Після чого введені дані можна зберегти, натиснувши кнопку зберегти. Дата замовлення може бути змінена натисканням на надпис «Дата», що зверху (рис. 3.10). При цьому з`явиться календар, на якому можна вибрати дату і натиснути кнопку «ОК».

Рис. 3.10 Редагування замовлення, редагування дати замовлення за допомоги випадаючого календаря

В центральній частині форми замовлення міститься інформація про послуги, що надаються в даному замовленні (рис. 3.11).

технічний обслуговування автомобіль програма

Рис. 3.11 Редагування послуг, що входять в замовлення

Кожна послуга виводиться рядком, що складається з випадаючого списку «Назва послуги» і списку з деталями, що використовуються при наданні вказаної послуги. Також виводиться вартість послуги справа, біля кнопок редагування та видалення. При натисненні на кнопку «Редагувати», активізуються поля вводу, і можна редагувати дані. Для їх збереження натискається кнопка «Зберегти».

Кнопкою «Додати», що містить внизу форми, можна додати чергову послугу до замовлення. Кнопка «Видалити всі», відповідно, видаляє всі послуги з даного замовлення. Біля цих двох кнопок, але справа, міститься запис, який виводить сумарну вартість замовлення, яка включає в себе вартість всіх послуг і запчастин, помножену на коефіцієнт, що відповідає ціновій категорії вибраного авто.

Внизу форми замовлення є кнопки переходу по записах із замовленнями. Натиснувши на відповідну кнопку, можна перейти на наступне (попереднє/перше/останнє) замовлення.

4. Керівництво розробнику

Програма «Garage Inc.» написана мовою С# з використанням об`єктно-орієнтованого підходу і скомпільована в Microsoft® Visual Studio .NET 2003®. Являє собою програму з архітектурою «Клієнт-Сервер» для роботи з базою даних. База даних розміщена на сервері Microsoft® SQL Server 2000®. Доступ до бази даних виконується програмно за допомоги технології ADO.NET.

В програмі реалізований підхід, при якому для роботи з базою даних і для виведення даних на інтерфейс користувача використовуються окремі прошарки програми. Прошарок представлення (Presentation Layer) являє собою набір візуальних класів, які виводять інформацію на інтерфейс користувача, що організовано за допомоги візуальних форм. Прошарок бізнес-логіки (Business Layer) програми являє собою набір невізуальних класів, що виконують вибірки з бази даних та формують об`єкти з такою ж структурою даних, як і в базі.

4.1 Опис бази даних

База даних програми «Garage Inc.» встановлюється на сервері баз даних Microsoft® SQL Server 2000®. База даних складається з наступних таблиць:

1. tblAddress - містить адреси клієнтів;

2. tblBodyType - містить типи кузовів авто;

3. tblCar - містить інформацію про автомобіль клієнта;

4. tblCarMark - містить марки автомобілів;

5. tblCategory - містить цінові категорії автомобілів;

6. tblCountry - містить назви країн;

7. tblCustomer - містить інформацію про клієнтів;

8. tblDetail - містить інформацію про запчастини;

9. tblDriveType - містить типи приводу на колеса;

10. tblEnginePlace - містить типи розміщення двигуна;

11. tblEngineType - містить типи двигунів;

12. tblModel - містить моделі авто;

13. tblOrder - містить замовлення клієнтів на обслуговування авто;

14. tblOrder_Service - містить зв`язок замовлень з послугами;

15. tblPaymentType - містить типи розрахунку за послуги;

16. tblService - містить інформацію про послуги, що надаються компанією;

17. tblService_Detail - містить зв`язок послуг із запчастинами;

Також в базі даних містяться представлення:

1. ShortOrderInfo - представляє скорочену інформацію про замовлення.

2. FullOrderInfo - представляє повну інформацію про замовлення.

Для формування вибірок даних і для зміни даних були створені процедури (stored procedures):

1. spAddDataForCategory - додає нову цінову категорію;

2. spAddDataForCountry - додає нову країну;

3. spAddDataForSimpleForm - додає запис для марки авто, моделі, типу привода, типу кузова, типу двигуна або розміщення двигуна;

4. spDeleteAddress - видаляє адреси для вказаного клієнта;

5. spDeleteCar - видаляє автомобіль для вказаного клієнта;

6. spDeleteCustomer - видаляє вказаного клієнта;

7. spDeleteCustomerOrders - видаляє замовлення для вказаного клієнта;

8. spDeleteDataForCategory - видаляє цінову категорію;

9. spDeleteDataForCountry - видаляє країну;

10. spDeleteDataForSimpleForm - видаляє запис для марки авто, моделі, типу привода, типу кузова, типу двигуна або розміщення двигуна;

11. spGetAddressById - вибирає адреси клієнта по вказаному ідентифікатору;

12. spGetAddressesForCustomer - вибирає адреси для вказаного клієнта;

13. spGetAllServicesAndDetails - вибирає всі послуги і прив`язані до них деталі;

14. spGetBodyTypeList - вибирає типи кузова автомобілів;

15. spGetCarById - вибирає автомобіль за вказаним ідентифікатором;

16. spGetCarList - вибирає список автомобілів;

17. spGetCarMarkList, spGetCarMarks - вибирає список марок авто;

18. spGetCategoryList - вибирає список цінових категорій авто;

19. spGetCountryList - вибирає список країн;

20. spGetCustomerAddresses - вибирає адреси для вказаного клієнта;

21. spGetCustomerById - вибирає клієнта за вказаним ідентифікатором;

22. spGetCustomerCars - вибирає автомобілі для вказаного клієнта;

23. spGetCustomerList - вибирає список клієнтів;

24. spGetCustomerOrders - вибирає замовлення для вказаного клієнта;

25. spGetDataForCategories - вибирає цінові категорії;

26. spGetDataForSimpleForm - вибирає дані для марки авто, моделі, типу привода, типу кузова, типу двигуна або розміщення двигуна;

27. spGetDriveTypeList - вибирає список типів приводу автомобілів;

28. spGetEnginePlaceList - вибирає список розміщень двигуна;

29. spGetEngineTypeList - вибирає список типів двигунів;

30. spGetFullOrderInfo - вибирає детальну інформацію про замовлення;

31. spGetModelList, spGetCarModels - вибирає список моделей авто;

32. spGetPaymentTypeList - вибирає список оплати;

33. spGetShortOrderInfo - вибирає коротку інформацію про замовлення.

34. spGetPaymentTypeList - вибирає список способів оплати;

35. spSaveOrder - зберігає інформацію про замовлення;

36. spUpdateDataForCategory - оновлює вказану цінову категорію;

37. spUpdateDataForCountry - оновлює вказану країну;

38. spUpdateDataForSimpleForm - оновлює вказаний запис для марки авто, моделі, типу привода, типу кузова, типу двигуна або розміщення двигуна.

В базі даних також було створено тригери для коректного видалення та редагування даних.

В додатку 1 подано діаграму даних і зв`язків в базі.

4.2 Опис програми

Як вже зазначалося, програма написана за архітектурою «клієнт-сервер». Для роботи з базою даних були написані наступні класи:

1. Address -адреса клієнта;

2. BodyType - тип кузова авто;

3. BulkSearch - клас, що має методи для створення списків клієнтів та їх автомобілів, марок, моделей авто, країн, типів приводу, типів кузову, типів двигунів, положень двигунів, цінових категорій, способів оплати та список адрес клієнтів. Також має метод для здійснення пошуку клієнта.

4. Car - автомобіль клієнта, містить інформацію про марку, модель авто, країну-виробник, тип приводу, тип кузову, тип двигуна, положення і об`єм, двигуна, цінову категорію.

5. CarMark - марка автомобіля;

6. Category - цінова категорія авто.

7. Country - країна, яка використовується як країна-виробник авто і країна в адресі клієнта;

8. Customer - клієнт (замовник), містить П.І.Б клієнта, його контактний телефон і спосіб оплати;

9. Detail - запчастина;

10. DriveType - тип приводу;

11. EnginePlace - розміщення двигуна;

12. EngineType - тип двигуна;

13. Model - модель авто;

14. Order - замовлення;

15. OrdersLoader

16. Payment - спосіб оплати;

17. Service - послуга.

Всі вищенаведені класи забезпечують зв`язок з базою даних, інформація з бази зберігається у відповідних об`єктах.

Для зв`язку з базою даних використовуються два підходи: із використанням класів SqlConnection, SqlCommand і SqlDataReader; та із використанням технології ADO.NET. Приклади коду програми із використанням обох підходів наведено в додатку 2.

Для реалізації інтерфейсу користувача було створено наступні візуальні класи:

1. Form1.cs - клас головної форми. В ньому використані:

1.1. Об`екти класу Panel - для створення окремих «форм» для редагування клієнтів, замовлень та для стартової форми.

1.2. Об`єкти gridControlLinks - для створення контейнерів з декількома панелями всередині (напр., рис. 3.7).

1.3. Стандартні класи для створення кнопок, випадаючих та стаціонарних списків, написів та написів-посилань, малюнків на кнопках та ін.

2. FormCalendar.cs - клас для випадаючого календаря. Для створення календаря було використано стандартний компонент MonthCalendar.

3. gridControl.cs - клас-контейнер, в який можна програмним чином додавати дочірні елементи управління.

4. serviceControl.cs - елемент управління, який відображає одну послугу в контейнері gridControl на формі редагування замовлень.

5. CarControl.cs - елемент управління, який відображає одну машину в контейнері gridControl на формі редагування клієнта.

6. SimpleForm.cs - універсальна форма, яка використовується для редагування інформації про марки авто, моделі, тип привода, тип кузова, тип двигуна або розміщення двигуна. В ній використовується стандартний клас ListView для відображення даних у вигляді таблиці.

7. CountryForm.cs, AddressForm.cs, CategoryForm.cs та AddDetailToService.cs - класи, подібні до SimpleForm, але мають можливість редагування додаткових даних, таких як список країн в AddressForm, ціновий коефіцієнт в CategoryForm тощо.

5. Заключення

Програма «Garage Inc.», написана в ході курсової роботи, є досить зручним і, водночас, простим засобом ведення обліку замовлень та клієнтів СТО.

Дана програма може слугувати, також, і в якості навчальної програми для вивчення засобів і прийомів програмування на платформі Micrisoft .NET 2003®, використання технології ADO.NET, робот из сервером баз даних MS SQL Server 2000®.

Програма може бути розширена і доповнена, тобто може бути використана як база для написання проектів, що покривають більш широке коло: ведення бухгалтерського обліку на підприємстві; база даних автосалону, з можливістю врахування вартості поставок автомобілів від різних постачальників; база даних дизайнерського ательє з реставрації автомобілів; електронний склад запчастин, тощо.

6. Додаток

6.1 Додаток 1

Рис. 6.1 Діаграма зв`язків між таблицями в базі даних

6.2 Додаток 2

Приклад використання в програмі класів SqlConnection, SqlCommand і SqlDataReader для роботи з базою даних. Метод LoadCars в класі Customer.

public void LoadCars()

{

/// ініціалізація об`єктів

/// рядок з`єднання зчитується з конфігураційного файлу

this.ConnectionString = ConfigurationSettings.AppSettings["sqlconnectionstring"];

this._cars = new ArrayList();

this._addresses = new ArrayList();

/// створення об`єктів з`єднання, SQL-команди і

/// потоку зчитування даних

SqlConnection connection = new SqlConnection(this.ConnectionString);

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["bodyTypeId"]);

car.CarMarkId = Convert.ToInt32(dataReader["CarMarkId"]);

car.CategoryId = Convert.ToInt32(dataReader["CategoryId"]);

car.CountryId = Convert.ToInt32(dataReader["CountryId"]);

car.CustomerId = Convert.ToInt32(dataReader["CustomerId"]);

car.DriveTypeId = Convert.ToInt32(dataReader["DriveTypeId"]);

car.EnginePlaceId = Convert.ToInt32(dataReader["EnginePlaceId"]);

car.EngineTypeId = Convert.ToInt32(dataReader["EngineTypeId"]);

car.Id = Convert.ToInt32(dataReader["Id"]);

car.ModelId = Convert.ToInt32(dataReader["ModelId"]);

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.ConnectionString);

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.Tables[0].Columns["name"]] = this.Name;

DS.Tables[0].Rows[0][DS.Tables[0].Columns["patronymic"]] = this.Patronymic;

DS.Tables[0].Rows[0][DS.Tables[0].Columns["surname"]] = this.Surname;

DS.Tables[0].Rows[0][DS.Tables[0].Columns["phone"]] = this.Phone;

DS.Tables[0].Rows[0][DS.Tables[0].Columns["paymentTypeId"]] = this.PaymentTypeId;

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

/// автоматично генерує відповідний запит типу UPDATE

/// або INSERT.

DA.Update(DS);

if (action == 2)

{

this.GetCustomerById(this.Id);

}

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

connection.Close();

}

}

6.3 Додаток 3

Приклад методу 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.ConnectionString);

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["id"]);

cust.Name = dataReader["name"].ToString();

cust.Patronymic = dataReader["patronymic"].ToString();

cust.Surname = dataReader["surname"].ToString();

this._customerList.Add(cust).ToString();

}

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

connection.Close();

}

}

}

7. Література

1. Полный справочник по С#, Шилдг Г., 462 стр.; 2004 г.;

2. С# и платформа .NET, Ендрю Троелсен, 328 стр.; 2003 г.;

3. «Основы ADO.NET.», Боб Бошемин, 448 стр.; 2003 г.;

4. «Практическое использование ADO.NET. Доступ к данным в Internet», Шон Вилдермьюс, 288 стр.; 2003 г.;

5. «Разработка баз данных Microsoft SQL Server 2000 на примерах.», Роб Хоторн, 464 стр.; 2001 г.;

Размещено на Allbest.ru


Подобные документы

  • Стан та різновиди засобів інформаційних технологій та програмного забезпечення, застосовуваних на станціях технічного обслуговування автомобілів. Розробка програми з формування товарного чеку - документу, за допомогою якого оформляється купівля-продаж.

    отчет по практике [870,2 K], добавлен 09.06.2019

  • Персональна СУБД Microsoft Access як засіб управління базами даних. Ознайомлення із її основними функціями – зберіганням і видобуванням даних, представленням інформації в зручному для користувача вигляді. Принципи розробки та роботи з даною програмою.

    контрольная работа [295,3 K], добавлен 14.05.2011

  • Створення додатку, що дозволяє істотно спростити введення обліку зареєстрованих автомобілів в ДАІ. Розроблена програма зберігає дані у файл. Крім цього, у програмі організований пошук. Середовище розробки C++ Builder (історія створення). Лістинг програми.

    курсовая работа [758,3 K], добавлен 07.12.2010

  • Вибір моделі задачі інформаційної підтримки сучасних автопаркінгів. Постановка задачі та вибір структур даних. Здійснення замовлень в системі. Перевірка замовлених місць на парковці. Специфікація системи інформаційного обслуговування автопаркінгу.

    дипломная работа [2,5 M], добавлен 13.07.2014

  • Розробка веб-сайту "Електронний довідник запчастин автомобілів". Структура веб-сайту, бази даних. Модулі для читання інформації та коректного її відображення на сторінках порталу. Клієнтська частина сайту, реєстрація користувачів, система адміністрування.

    дипломная работа [2,3 M], добавлен 19.08.2012

  • Робота користувача з базою даних, перегляд, редагування інформації в базі даних та здійснення пошуку у зручній формі. Інтерфейс системи сільській бібліотеці для обслуговування читачів і фіксування даних книжкового фонду. Структура реляційної бази.

    контрольная работа [182,3 K], добавлен 08.03.2015

  • Опрацювання та класифікації електронної інформації по магазину товарів для садівництва. Предметна область інтелектуальної системи проходження замовлень сільсько-господарських культу. Створення таблиць і звітів, що складають основу проектованої бази даних.

    отчет по практике [2,2 M], добавлен 24.02.2015

  • Розробка програми "Авто" для введення та збереження інформації про власників та їхні автомобілі. Побудова математичної моделі. Критерії вибору та пошуку даних. Структура введених та збережених у файлах програми даних. Алгоритм основної програми та її код.

    курсовая работа [20,3 K], добавлен 07.10.2010

  • Розpобка автоматизованої cиcтеми для обcлуговування та pемонту автомобiлiв. Вибіp cтpуктуpи оpганiзацiї вхiдних і вихiдних даних. Опиc пpогpами pеалiзацiї алгоpитмiв pозв’язання задачі. Cхема пpоцеcу введення, pедагування, пеpегляду та видачi pезультатiв.

    курсовая работа [109,9 K], добавлен 23.09.2010

  • Розробка програми реєстрації і автоматизованого створення звіту на рік по викраденим машинам. Математична модель задачі, структура зберігаючих даних. Створення алгоритмів основної програми на мові Turbo Pascal і процедур Vvod і Red. Вихідний код програми.

    курсовая работа [25,4 K], добавлен 07.10.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.