Задание на курсовую работу
Задачей курсового проекта является разработка информационной системы для заданной предметной области с использованием заданных структур данных и алгоритмов.
Предметная область - Обслуживание клиентов в бюро проката автомобилей
Метод хеширования - Закрытое хеширование с квадратичным опробованием
Метод сортировки - Пузырьковый
Вид списка- Циклический однонаправленный
Метод обхода дерева - Обратный
Алгоритм поиска слова в тексте - Боуера и Мура (БМ)
Обслуживание клиентов в бюро проката автомобилей
1. Информационная система для предметной области «Обслуживание клиентов в бюро проката автомобилей» должна осуществлять ввод, хранение, обработку и вывод данных о:
- клиентах;
- автомобилях, принадлежащих бюро проката;
- выдаче на прокат и возврате автомобилей от клиентов.
2. Данные о каждом клиенте должны содержать:
- № водительского удостоверения – строка формата «RR AA NNNNNN», где RR – код региона (цифры), AA – серия (буквы из следующего множества: А, В, Е, К, М, Н, О, Р, С, Т, У, Х), NNNNNN – порядковый номер удостоверения (цифры). Код, серия и номер отделяются друг от друга пробелами;
- ФИО – строка;
- Паспортные данные – строка;
- Адрес – строка;
Примечание – длина строк (кроме № водительского удостоверения) определяется студентом самостоятельно.
3. Данные о клиентах должны быть организованны в виде АВЛ-дерева поиска, упорядоченного по «№ водительского удостоверения».
4. Данные о каждом автомобиле должны содержать:
- Государственный регистрационный номер – строка формата «ANNNAA-NN», где N –цифра, A – буква из следующего множества: А, В, Е, К, М, Н, О, Р, С, Т, У, Х;
- Марка – строка;
- Цвет – строка;
- Год выпуска – целое;
- Признак наличия – логическое;
Примечание – длина строк (кроме «Государственный регистрационный номер») определяется студентом самостоятельно.
5. Данные об автомобилях должны быть организованны в виде хеш-таблицы, первичным ключом которой является «Государственный регистрационный номер». Метод хеширования определяется вариантом задания.
операцию добавления новой пары, операцию поиска и операцию удаления пары по ключу.
6. Данные о выдаче на прокат или возврате автомобилей от клиентов должны содержать:
- – строка, формат которой соответствует аналогичной строке в данных о клиентах;
- Государственный регистрационный номер – строка, формат которой соответствует аналогичной строке в данных об автомобилях;
- Дата выдачи - строка;
- Дата возврата - строка.
Примечание – наличие в этих данных записи, содержащей в поле «№ водительского удостоверения» значение X и в поле «Государственный регистрационный номер» значение Y означает выдачу клиенту с номером водительского удостоверения X автомобиля с государственным регистрационным номером Y. Отсутствие такой записи означает, что клиенту с номером водительского удостоверения X не выдавался автомобиль с номером Y.
namespace RentAvto { class BM { private static char[] SymbolOfX; //Таблица символов искомой строки private static int[] ValueShift; //Таблица смещений для символов private static void ShiftBM(string x) //Процедура - формирование смещений { int j; //Счетчик int k = 0; //Счетчик bool fl; //Флаг SymbolOfX = new char[x.Length]; //Инициализация ValueShift = new int[x.Length]; //Инициализация //Цикл по искомой строке без последнего символа for (int i = x.Length - 2; i >= 0; i--) { fl = false; //Флаг j = 0; //Обнуление while ((j < k + 1) && (fl == false)) { if (SymbolOfX[j] == x[i]) fl = true; j++; } if (fl == false) { SymbolOfX[k] = x[i]; ValueShift[k] = x.Length - i - 1; k++; } } } //Функция поиска алгоритмом БМ public static string search(string x, string s) { bool has, have; //Флаги int l, j, i; //Счетчики ShiftBM(x); //Вызов процедуры, формирубщей таблицу смещений string nom = ""; //Строка с номерами вхождений if (x.Length > s.Length) return nom; //Основной цикл по исходной строке for (i = 0; i < s.Length - x.Length + 1; i++) { j = x.Length - 1; have = true; //Проверка с последнего символа while ((j >= 0) && (have == true)) { //Если не совпадает символ искомой и исходной if (s[i + j] != x[j]) { have = false; //Если это последний символ if (j == x.Length - 1) { l = 0; has = false; //Флаг //Поиск символа в таблице смещений while ((l < x.Length) && (has == false)) { //Если символ есть if (s[i + j] == SymbolOfX[l]) { has = true; //Изменение флага i = i + ValueShift[l] - 1; //Сдвиг на величину } l++; } //Если не найден символ в таблице смещений if (has == false) //Сдвиг на величину искомой строки i = i + x.Length - 1; } } j--; } if (have == true) nom = nom + Convert.ToString(i) + ", "; } //Если строка номеров не пустая if (nom != "") { nom = nom.Substring(0, nom.Length - 2); //Удаление последней запятой и пробела } return nom; //Возвращение результата поиска } } }
Содержание архива
- исходный код на C# для Visual Studio
- Требования к работе
klausms