Задание на курсовую работу
Задачей курсового проекта является разработка информационной системы для заданной предметной области с использованием заданных структур данных и алгоритмов.
Предметная область - Обслуживание клиентов в бюро проката автомобилей
Метод хеширования - Закрытое хеширование с квадратичным опробованием
Метод сортировки - Пузырьковый
Вид списка- Циклический однонаправленный
Метод обхода дерева - Обратный
Алгоритм поиска слова в тексте - Боуера и Мура (БМ)
Обслуживание клиентов в бюро проката автомобилей
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
- Требования к работе
Телеграм
-