курсач. Бд проката автомобилей
![]()
|
6.2 Текст программы на С:Основной файл #include #include #include #include "menu.h" #include "types.h" #include "rd.h" #include "viv.h" #include "wr.h" #include "add.h" #include "del.h" #include "fil1.h" #include "fil2.h" #include "fil3.h" #include "fil4.h" #include "fil5.h" void main(void) { SetConsoleCP(1251); SetConsoleOutputCP(1251); system("color F0"); char c; int p = 0; int sp = 0; read_tables(); main_menu(p); do { do { c = getch(); } while ((c != 13)&(c != 72)&(c != 80)&(c != 27)); switch (c) { case 72: //стрелка вверх { if (p == 0) break; p--; main_menu(p); break; } case 80: //стрелка вниз { if (p == 11) break; p++; main_menu(p); break; } case 13: //enter { if (p < 7) { sub_menu(sp); do { do { c = getch(); } while ((c != 13)&(c != 72)&(c != 80)&(c != 27)&(c != 8)); switch (c) { case 72: //стрелка вверх { if (sp == 0) break; sp--; sub_menu(sp); break; } case 80: //стрелка вниз { if (sp == 3) break; sp++; sub_menu(sp); break; } case 13: //enter { switch (sp) { case 0: {print_table(p); break; } case 1: {add_record(p); break; } case 2: {delete_record(p); break; } case 3: {write_table(p); break; } } sub_menu(sp); break; } case 27: return ; //esc (выход из программы) } } while (c != 8); //backspace break; } else { switch (p) { case 7: {filter1(); break; } case 8: {filter2(); break; } case 9: {filter3(); break; } case 10: {filter4(); break; } case 11: {filter5(); break; } } } } } main_menu(p); } while ((c != 27)); //esc (выход из программы) } Заголовок меню HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); void main_menu(int pm) { char items[12][30]; strcpy(items[0], "Сотрудники"); strcpy(items[1], "Должности"); strcpy(items[2], "Марки автомобилей"); strcpy(items[3], "Дополнительные услуги"); strcpy(items[4], "Автомобили"); strcpy(items[5], "Клиенты"); strcpy(items[6], "Прокат"); strcpy(items[7], "Фильтр 1"); strcpy(items[8], "Фильтр 2"); strcpy(items[9], "Фильтр 3"); strcpy(items[10], "Фильтр 4"); strcpy(items[11], "Фильтр 5"); system("cls"); for (int i = 0; i < 12; i++) { if (i == pm) SetConsoleTextAttribute(hConsole, (WORD)((15 << 4) | 4)); printf("%s\n", items[i]); if (i == pm) SetConsoleTextAttribute(hConsole, (WORD)((15 << 4) | 0)); } } void sub_menu(int sm) { char sub_items[4][30]; strcpy(sub_items[0], "Вывод на экран"); strcpy(sub_items[1], "Добавление записи"); strcpy(sub_items[2], "Удаление записи"); strcpy(sub_items[3], "Запись в файл"); system("cls"); for (int i = 0; i < 4; i++) { if (i == sm) SetConsoleTextAttribute(hConsole, (WORD)((15 << 4) | 4)); printf("%s\n", sub_items[i]); if (i == sm) SetConsoleTextAttribute(hConsole, (WORD)((15 << 4) | 0)); } } Заголовок чтения файлов void read_tables(void) //считывание таблиц { FILE *file; sot = 0; dol = 0; mark = 0; usl = 0; avto = 0; cli = 0; prok = 0; file = fopen("Сотрудники.txt", "r"); //Открытие/создание файла if (file != NULL) { while (!feof(file)) { //Пока не конец файла fread(&sotmas[sot], sizeof(sotrudniki), 1, file); sot++;//Чтение из файла таблицы } sot--; fclose(file); } file = fopen("Должности.txt", "r"); //Открытие/создание файла if (file != NULL) { while (!feof(file)) { //Пока не конец файла fread(&dolmas[dol], sizeof(doljnosti), 1, file); dol++;//Чтение из файла таблицы } dol--; fclose(file); } file = fopen("Марки автомобилей.txt", "r"); //Открытие/создание файла if (file != NULL) { while (!feof(file)) { //Пока не конец файла fread(&markmas[mark], sizeof(markiavto), 1, file); mark++;//Чтение из файла таблицы } mark--; fclose(file); } file = fopen("Дополнительные услуги.txt", "r"); //Открытие/создание файла if (file != NULL) { while (!feof(file)) { //Пока не конец файла fread(&uslmas[usl], sizeof(dopuslugi), 1, file); usl++;//Чтение из файла таблицы } usl--; fclose(file); } file = fopen("Автомобили.txt", "r"); //Открытие/создание файла if (file != NULL) { while (!feof(file)) { //Пока не конец файла fread(&avtomas[avto], sizeof(avtomobili), 1, file); avto++;//Чтение из файла таблицы } avto--; fclose(file); } file = fopen("Клиенты.txt", "r"); //Открытие/создание файла if (file != NULL) { while (!feof(file)) { //Пока не конец файла fread(&climas[cli], sizeof(clients), 1, file); cli++;//Чтение из файла таблицы } cli--; fclose(file); } file = fopen("Прокат.txt", "r"); //Открытие/создание файла if (file != NULL) { while (!feof(file)) { //Пока не конец файла fread(&prokmas[prok], sizeof(prokat), 1, file); prok++;//Чтение из файла таблицы } fclose(file); prok--; } } Заголовок сохранения таблиц void write_table(int n) //запись таблицы в файл { FILE *file; system("cls"); switch (n) { case 0: { file = fopen("Сотрудники.txt", "w"); //Открытие файла for (int i = 0; i < sot; i++) fwrite(&sotmas[i], sizeof(sotrudniki), 1, file); //Запись таблицы в файл fclose(file); break; } case 1: { file = fopen("Должности.txt", "w"); //Открытие файла for (int i = 0; i < sot; i++) fwrite(&dolmas[i], sizeof(doljnosti), 1, file); //Запись таблицы в файл fclose(file); break; } case 2: { file = fopen("Марки автомобилей.txt", "w"); //Открытие файла for (int i = 0; i < sot; i++) fwrite(&markmas[i], sizeof(markiavto), 1, file); //Запись таблицы в файл fclose(file); break; } case 3: { file = fopen("Дополнительные услуги.txt", "w"); //Открытие файла for (int i = 0; i < sot; i++) fwrite(&uslmas[i], sizeof(dopuslugi), 1, file); //Запись таблицы в файл fclose(file); break; } case 4: { file = fopen("Автомобили.txt", "w"); //Открытие файла for (int i = 0; i < sot; i++) fwrite(&avtomas[i], sizeof(avto), 1, file); //Запись таблицы в файл fclose(file); break; } case 5: { file = fopen("Клиенты.txt", "w"); //Открытие файла for (int i = 0; i < sot; i++) fwrite(&climas[i], sizeof(clients), 1, file); //Запись таблицы в файл fclose(file); break; } case 6: { file = fopen("Прокат.txt", "w"); //Открытие файла for (int i = 0; i < sot; i++) fwrite(&prokmas[i], sizeof(prokat), 1, file); //Запись таблицы в файл fclose(file); break; } } system("cls"); printf("Данные записаны, нажмите любую клавишу для продолжения"); getch(); } Заголовок вывода таблицы на экран void print_table(int n) //вывод таблицы на экран { system("cls"); switch (n) { case 0: { if (sot == 0) {printf("Таблица не содержит данных\n"); getch(); return; } printf("__________"); for (int i = 0; i < sot; i++) printf("_________________________________________"); printf("\n"); printf("| Код с.|"); for (int i = 0; i < sot; i++) printf("%40d|", sotmas[i].nosot); printf("\n"); printf("| ФИО|"); for (int i = 0; i < sot; i++) printf("%40s|", sotmas[i].fio); printf("\n"); printf("| Возраст|"); for (int i = 0; i < sot; i++) printf("%40d|", sotmas[i].age); printf("\n"); printf("| Пол|"); for (int i = 0; i < sot; i++) printf("%40c|", sotmas[i].pol); printf("\n"); printf("| Адрес|"); for (int i = 0; i < sot; i++) printf("%40s|", sotmas[i].adres); printf("\n"); printf("| Телефон|"); for (int i = 0; i < sot; i++) printf("%40s|", sotmas[i].phone); printf("\n"); printf("| Паспорт|"); for (int i = 0; i < sot; i++) printf("%40s|", sotmas[i].pasport); printf("\n"); printf("| Код д.|"); for (int i = 0; i < sot; i++) printf("%40d|", sotmas[i].nodol); printf("\n"); printf("|________|"); for (int i = 0; i < sot; i++) printf("________________________________________|"); printf("\n"); break; } case 1: { if (dol == 0) { printf("Таблица не содержит данных\n"); getch(); return; } printf("_______________"); for (int i = 0; i < dol; i++) printf("_______________________________"); printf("\n"); printf("| Код д.|"); for (int i = 0; i < dol; i++) printf("%30d|", dolmas[i].nodol); printf("\n"); printf("| Наименование|"); for (int i = 0; i < dol; i++) printf("%30s|", dolmas[i].dolname); printf("\n"); printf("| Оклад|"); for (int i = 0; i < dol; i++) printf("%30d|", dolmas[i].oklad); printf("\n"); printf("| Обязанности|"); for (int i = 0; i < dol; i++) printf("%30s|", dolmas[i].obyazanosti); printf("\n"); printf("| Требования|"); for (int i = 0; i < dol; i++) printf("%30s|", dolmas[i].trebovaniya); printf("\n"); printf("|_____________|"); for (int i = 0; i < dol; i++) printf("______________________________|"); printf("\n"); break; } case 2: { if (mark == 0) { printf("Таблица не содержит данных\n"); getch(); return; } printf("_________________"); for (int i = 0; i < mark; i++) printf("_______________________________"); printf("\n"); printf("| Код м.|"); for (int i = 0; i < mark; i++) printf("%30d|", markmas[i].nomark); printf("\n"); printf("| Наименование|"); for (int i = 0; i < mark; i++) printf("%30s|", markmas[i].markname); printf("\n"); printf("| Технич. хар-ки|"); for (int i = 0; i < mark; i++) printf("%30s|", markmas[i].techchar); printf("\n"); printf("| Описание|"); for (int i = 0; i < mark; i++) printf("%30s|", markmas[i].opisanie); printf("\n"); printf("|_______________|"); for (int i = 0; i < mark; i++) printf("______________________________|"); printf("\n"); break; } case 3: { if (usl == 0) { printf("Таблица не содержит данных\n"); getch(); return; } printf("_______________"); for (int i = 0; i < usl; i++) printf("_______________________________"); printf("\n"); printf("| Код усл.|"); for (int i = 0; i < usl; i++) printf("%30d|", uslmas[i].nousl); printf("\n"); printf("| Наименование|"); for (int i = 0; i < usl; i++) printf("%30s|", uslmas[i].uslname); printf("\n"); printf("| Описание|"); for (int i = 0; i < usl; i++) printf("%30s|", uslmas[i].opisanie); printf("\n"); printf("| Цена|"); for (int i = 0; i < usl; i++) printf("%30s|", uslmas[i].uslcena); printf("\n"); printf("|_____________|"); for (int i = 0; i < usl; i++) printf("______________________________|"); printf("\n"); break; } case 4: { if (avto == 0) { printf("Таблица не содержит данных\n"); getch(); return; } printf("________________"); for (int i = 0; i < avto; i++) printf("_______________________________"); printf("\n"); printf("| Код авто|"); for (int i = 0; i < avto; i++) printf("%30d|", avtomas[i].noavto); printf("\n"); printf("| Код марки|"); for (int i = 0; i < avto; i++) printf("%30d|", avtomas[i].nomark); printf("\n"); printf("| Рег. номер|"); for (int i = 0; i < avto; i++) printf("%30s|", avtomas[i].regnum); printf("\n"); printf("| Номер кузова|"); for (int i = 0; i < avto; i++) printf("%30s|", avtomas[i].cuznum); printf("\n"); printf("| Номер двиг.|"); for (int i = 0; i < avto; i++) printf("%30s|", avtomas[i].dvignum); printf("\n"); printf("| Год вып.|"); for (int i = 0; i < avto; i++) printf("%30s|", avtomas[i].godvip); printf("\n"); printf("| Пробег|"); for (int i = 0; i < avto; i++) printf("%30s|", avtomas[i].probeg); printf("\n"); printf("| Цена авто|"); for (int i = 0; i < avto; i++) printf("%30s|", avtomas[i].avtcena); printf("\n"); printf("| Цена дня|"); for (int i = 0; i < avto; i++) printf("%30s|", avtomas[i].daycena); printf("\n"); printf("| Цена дня|"); for (int i = 0; i < avto; i++) printf("%30s|", avtomas[i].dto); printf("\n"); printf("| Код мех.|"); for (int i = 0; i < avto; i++) printf("%30d|", avtomas[i].nosot); printf("\n"); printf("| Спец. отметки|"); for (int i = 0; i < avto; i++) printf("%30s|", avtomas[i].specmark); printf("\n"); printf("| Отм. о возвр.|"); for (int i = 0; i < avto; i++) printf("%30s|", avtomas[i].vozv); printf("\n"); printf("|______________|"); for (int i = 0; i < avto; i++) printf("______________________________|"); printf("\n"); break; } case 5: { if (cli == 0) { printf("Таблица не содержит данных\n"); getch(); return; } printf("____________"); for (int i = 0; i < cli; i++) printf("_________________________________________"); printf("\n"); printf("| Код к.|"); for (int i = 0; i < cli; i++) printf("%40d|", climas[i].nocli); printf("\n"); printf("| ФИО|"); for (int i = 0; i < cli; i++) printf("%40s|", climas[i].fio); printf("\n"); printf("| Пол|"); for (int i = 0; i < cli; i++) printf("%40c|", climas[i].pol); printf("\n"); printf("| Дата рож.|"); for (int i = 0; i < cli; i++) printf("%40s|", climas[i].dr); printf("\n"); printf("| Адрес|"); for (int i = 0; i < cli; i++) printf("%40s|", climas[i].adres); printf("\n"); printf("| Телефон|"); for (int i = 0; i < cli; i++) printf("%40s|", climas[i].phone); printf("\n"); printf("| Паспорт|"); for (int i = 0; i < cli; i++) printf("%40s|", climas[i].pasport); printf("\n"); printf("|__________|"); for (int i = 0; i < cli; i++) printf("________________________________________|"); printf("\n"); break; } case 6: { if (prok == 0) { printf("Таблица не содержит данных\n"); getch(); return; } printf("______________"); for (int i = 0; i < prok; i++) printf("__________"); printf("\n"); printf("| Дата выдачи|"); for (int i = 0; i < prok; i++) printf("%10s|", prokmas[i].datavid); printf("\n"); printf("| Срок|"); for (int i = 0; i < prok; i++) printf("%10s|", prokmas[i].srok); printf("\n"); printf("| Дата возвр.|"); for (int i = 0; i < prok; i++) printf("%10s|", prokmas[i].datavoz); printf("\n"); printf("| Код ав.|"); for (int i = 0; i < prok; i++) printf("%10d|", prokmas[i].noavto); printf("\n"); printf("| Код кл.|"); for (int i = 0; i < prok; i++) printf("%10d|", prokmas[i].nocli); printf("\n"); printf("| Код ус.1|"); for (int i = 0; i < prok; i++) printf("%10d|", prokmas[i].nousl1); printf("\n"); printf("| Код ус.2|"); for (int i = 0; i < prok; i++) printf("%10d|", prokmas[i].nousl2); printf("\n"); printf("| Код ус.3|"); for (int i = 0; i < prok; i++) printf("%10d|", prokmas[i].nousl3); printf("\n"); printf("| Цена прок.|"); for (int i = 0; i < prok; i++) printf("%10s|", prokmas[i].price); printf("\n"); printf("| Оплата|"); for (int i = 0; i < prok; i++) printf("%10s|", prokmas[i].oplata); printf("\n"); printf("| Код сот.|"); for (int i = 0; i < prok; i++) printf("%10d|", prokmas[i].nosot); printf("\n"); printf("|____________|"); for (int i = 0; i < dol; i++) printf("__________|"); printf("\n"); break; } } getch(); } Заголовок добавления записи void add_record(int n) //добавление записи { system("cls"); switch (n) { char str[50]; //буфер case 0: { if (sot == 10) { printf("%s", "Таблица переполнена. Внести запись невозможно."); getch(); return; } printf("%s", "Введите код сотрудника: "); gets_s(str, 50); sotmas[sot].nosot = atoi(str); printf("%s", "Введите ФИО: "); gets_s(sotmas[sot].fio, 50); printf("%s", "Введите возраст: "); gets_s(str, 50); sotmas[sot].age = atoi(str); printf("%s", "Введите пол: "); gets_s(str, 50); sotmas[sot].pol = str[0]; printf("%s", "Введите адрес: "); gets_s(sotmas[sot].adres, 50); printf("%s", "Введите номер телефона: "); gets_s(sotmas[sot].phone, 50); printf("%s", "Введите номер паспорта: "); gets_s(sotmas[sot].pasport, 50); printf("%s", "Введите код должности: "); gets_s(str, 50); sotmas[sot].nodol = atoi(str); sot++; break; } case 1: { if (dol == 5) { printf("%s", "Таблица переполнена. Внести запись невозможно."); getch(); return; }; printf("%s", "Введите код должности: "); gets_s(str, 50); dolmas[dol].nodol = atoi(str); printf("%s", "Введите наименование должности: "); gets_s(dolmas[dol].dolname, 50); printf("%s", "Введите оклад: "); gets_s(str, 50); dolmas[dol].oklad = atoi(str); printf("%s", "Введите обязаности: "); gets_s(dolmas[dol].obyazanosti, 50); printf("%s", "Введите требования: "); gets_s(dolmas[dol].trebovaniya, 50); dol++; break; } case 2: { if (mark == 5) { printf("%s", "Таблица переполнена. Внести запись невозможно."); getch(); return; }; printf("%s", "Введите код марки автомобиля: "); gets_s(str, 50); markmas[mark].nomark = atoi(str); printf("%s", "Введите наименование: "); gets_s(markmas[mark].markname, 50); printf("%s", "Введите технические характеристики: "); gets_s(markmas[mark].techchar, 50); printf("%s", "Введите описание: "); gets_s(markmas[mark].opisanie, 50); mark++; break; } case 3: { if (usl == 5) { printf("%s", "Таблица переполнена. Внести запись невозможно."); getch(); return; }; printf("%s", "Введите код доп. услуги: "); gets_s(str, 50); uslmas[usl].nousl = atoi(str); printf("%s", "Введите наименование: "); gets_s(uslmas[usl].uslname, 50); printf("%s", "Введите описание: "); gets_s(uslmas[usl].opisanie, 50); printf("%s", "Введите цену: "); gets_s(uslmas[usl].uslcena, 50); usl++; break; } case 4: { if (avto == 10) { printf("%s", "Таблица переполнена. Внести запись невозможно."); getch(); return; }; printf("%s", "Введите код автомобиля: "); gets_s(str, 50); avtomas[avto].noavto = atoi(str); printf("%s", "Введите код марки: "); gets_s(str, 50); avtomas[avto].nomark = atoi(str); printf("%s", "Введите номер кузова: "); gets_s(avtomas[avto].cuznum, 50); printf("%s", "Введите номер двигателя: "); gets_s(avtomas[avto].dvignum, 50); printf("%s", "Введите год выпуска: "); gets_s(avtomas[avto].godvip, 50); printf("%s", "Введите пробег: "); gets_s(avtomas[avto].probeg, 50); printf("%s", "Введите цену автомобиля: "); gets_s(avtomas[avto].avtcena, 50); printf("%s", "Введите цену дня пробега: "); gets_s(avtomas[avto].daycena, 50); printf("%s", "Введите дату последнего ТО: "); gets_s(avtomas[avto].dto, 50); printf("%s", "Введите код сотрудника-механика: "); gets_s(str, 50); avtomas[avto].nosot = atoi(str); printf("%s", "Введите специальные отметки: "); gets_s(avtomas[avto].specmark, 50); printf("%s", "Введите отметку о возврате (\" + \" или \" - \"): "); gets_s(avtomas[avto].vozv, 50); avto++; break; } case 5: { if (cli == 5) { printf("%s", "Таблица переполнена. Внести запись невозможно."); getch(); return; }; printf("%s", "Введите код клиента: "); gets_s(str, 50); climas[cli].nocli = atoi(str); printf("%s", "Введите ФИО: "); gets_s(climas[cli].fio, 50); printf("%s", "Введите пол: "); gets_s(str, 50); climas[cli].pol = str[0]; printf("%s", "Введите дату рождения: "); gets_s(climas[cli].dr, 50); printf("%s", "Введите адрес: "); gets_s(climas[cli].adres, 50); printf("%s", "Введите телефон: "); gets_s(climas[cli].phone, 50); printf("%s", "Введите паспортные данные: "); gets_s(climas[cli].pasport, 50); cli++; break; } case 6: { if (prok == 10) { printf("%s", "Таблица переполнена. Внести запись невозможно."); getch(); return; }; printf("%s", "Введите дату выдачи: "); gets_s(prokmas[prok].datavid, 50); printf("%s", "Введите срок: "); gets_s(prokmas[prok].srok, 50); printf("%s", "Введите дату возврата: "); gets_s(prokmas[prok].datavoz, 50); printf("%s", "Введите код автомобиля: "); gets_s(str, 50); prokmas[prok].noavto = atoi(str); printf("%s", "Введите код клиента: "); gets_s(str, 50); prokmas[prok].nocli = atoi(str); printf("%s", "Введите код услуги 1: "); gets_s(str, 50); prokmas[prok].nousl1 = atoi(str); printf("%s", "Введите код услуги 2: "); gets_s(str, 50); prokmas[prok].nousl2 = atoi(str); printf("%s", "Введите код услуги 3: "); gets_s(str, 50); prokmas[prok].nousl3 = atoi(str); printf("%s", "ВВведите цену проката: "); gets_s(prokmas[prok].price, 50); printf("%s", "Введите отметку об оплате (\" + \" или\" - \"): "); gets_s(prokmas[prok].oplata, 50); printf("%s", "Введите код сотрудника: "); gets_s(str, 50); prokmas[prok].nosot = atoi(str); prok++; break; } } system("cls"); printf("%s\n", "Запись добавлена, нажмите любую клавишу для продолжения"); getch(); } Заголовок удаления записи void delete_record(int n) //удаление записи { int x = 0; //номер записи подлежащей удалению system("cls"); char str[10] = ""; //буфер printf("Введите номер записи, которую желаете удалить: "); gets_s(str, 10); x = atoi(str); switch (n) { case 0: { if ((x > sot) || (x < 1)) { printf("Записи с таким номером не существует"); getch(); return; } if (x == sot) {sot--; return; } for (int i = x; i <= sot; i++) sotmas[i - 1] = sotmas[i]; sot--; break; } case 1: { if ((x > dol) || (x < 1)) { printf("Записи с таким номером не существует"); getch(); return; } if (x == dol) { dol--; return; } for (int i = x; i <= dol; i++) dolmas[i - 1] = dolmas[i]; dol--; break; } case 2: { if ((x > mark) || (x < 1)) { printf("Записи с таким номером не существует"); getch(); return; } if (x == mark) { mark--; return; } for (int i = x; i <= mark; i++) markmas[i - 1] = markmas[i]; mark--; break; } case 3: { if ((x > usl) || (x < 1)) { printf("Записи с таким номером не существует"); getch(); return; } if (x == usl) { usl--; return; } for (int i = x; i <= usl; i++) uslmas[i - 1] = uslmas[i]; usl--; break; } case 4: { if ((x > avto) || (x < 1)) { printf("Записи с таким номером не существует"); getch(); return; } if (x == avto) { avto--; return; } for (int i = x; i <= avto; i++) avtomas[i - 1] = avtomas[i]; avto--; break; } case 5: { if ((x > cli) || (x < 1)) { printf("Записи с таким номером не существует"); getch(); return; } if (x == cli) { cli--; return; } for (int i = x; i <= cli; i++) climas[i - 1] = climas[i]; cli--; break; } case 6: { if ((x > prok) || (x < 1)) { printf("Записи с таким номером не существует"); getch(); return; } if (x == prok) { prok--; return; } for (int i = x; i <= prok; i++) prokmas[i - 1] = prokmas[i]; prok--; break; } } printf("Запись удалена, нажмите любую клавишу для продолжения"); getch(); } Заголовок фильтра 1 void filter1(void) //отображение сотрудников отдельных должностей { char str[20]; //хранит запрошенную должность int x; //хранит код должности system("cls"); if (dol == 0) { printf("Ошибка: таблица \"Должности\" не содержит данных"); getch(); return; } if (sot == 0) { printf("Ошибка: таблица \"Сотрудники\" не содержит данных"); getch(); return; } printf("Введите наименование должности: "); gets_s(str, 20); bool ots = false; //флаг присутствия должности //нахождение кода требуемой должности for (int i = 0; i < dol; i++) if (!strcmp(dolmas[i].dolname, str)) { x = dolmas[i].nodol; ots = true; break; } if (!ots) { printf("Должность не найдена\n"); getch(); return; } //если должность не была найдена //нахождение соответствий кода должности в таблице сотрудников и вывод на экран printf("__________"); for (int i = 0; i < sot; i++) if (x == sotmas[i].nodol) printf("_________________________________________"); printf("\n"); printf("| Код с.|"); for (int i = 0; i < sot; i++) if (x == sotmas[i].nodol) printf("%40d|", sotmas[i].nosot); printf("\n"); printf("| ФИО|"); for (int i = 0; i < sot; i++) if (x == sotmas[i].nodol) printf("%40s|", sotmas[i].fio); printf("\n"); printf("| Возраст|"); for (int i = 0; i < sot; i++) if (x == sotmas[i].nodol) printf("%40d|", sotmas[i].age); printf("\n"); printf("| Пол|"); for (int i = 0; i < sot; i++) if (x == sotmas[i].nodol) printf("%40c|", sotmas[i].pol); printf("\n"); printf("| Адрес|"); for (int i = 0; i < sot; i++) if (x == sotmas[i].nodol) printf("%40s|", sotmas[i].adres); printf("\n"); printf("| Телефон|"); for (int i = 0; i < sot; i++) if (x == sotmas[i].nodol) printf("%40s|", sotmas[i].phone); printf("\n"); printf("| Паспорт|"); for (int i = 0; i < sot; i++) if (x == sotmas[i].nodol) printf("%40s|", sotmas[i].pasport); printf("\n"); printf("| Код д.|"); for (int i = 0; i < sot; i++) if (x == sotmas[i].nodol) printf("%40d|", sotmas[i].nodol); printf("\n"); printf("|________|"); for (int i = 0; i < sot; i++) if (x == sotmas[i].nodol) printf("________________________________________|"); printf("\n"); getch(); } Заголовок фильтра 2 void filter2(void) //отображение автомобилей отдельных марок { char str[50]; //хранит запрошенную марку автомобиля int x; //хранит код марки system("cls"); if (mark == 0) { printf("Ошибка: таблица \"Марки автомобилей\" не содержит данных"); getch(); return; } if (avto == 0) { printf("Ошибка: таблица \"Автомобили\" не содержит данных"); getch(); return; } printf("Введите марку автомобиля: "); gets_s(str, 50); bool ots = false; //флаг присутствия марки автомобиля //нахождение кода марки автомобиля for (int i = 0; i< mark; i++) if (!strcmp(markmas[i].markname, str)) { x = markmas[i].nomark; ots = true; break; } if (!ots) { printf("Марка автомобиля не найдена\n"); getch(); return; } //если марка автомобиля не была найдена //нахождение соответствий марки автомобиля в таблице автомобилей и вывод на экран printf("________________"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("______________________________"); printf("\n"); printf("| Код авто|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("%30d|", avtomas[i].noavto); printf("\n"); printf("| Код марки|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("%30d|", avtomas[i].nomark); printf("\n"); printf("| Рег. номер|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("%30s|", avtomas[i].regnum); printf("\n"); printf("| Номер кузова|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("%30s|", avtomas[i].cuznum); printf("\n"); printf("| Номер двиг.|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("%30s|", avtomas[i].dvignum); printf("\n"); printf("| Год вып.|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("%30s|", avtomas[i].godvip); printf("\n"); printf("| Пробег|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("%30s|", avtomas[i].probeg); printf("\n"); printf("| Цена авто|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("%30s|", avtomas[i].avtcena); printf("\n"); printf("| Цена дня|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("%30s|", avtomas[i].daycena); printf("\n"); printf("| Цена дня|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("%30s|", avtomas[i].dto); printf("\n"); printf("| Код мех.|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("%30d|", avtomas[i].nosot); printf("\n"); printf("| Спец. отметки|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("%30s|", avtomas[i].specmark); printf("\n"); printf("| Отм. о возвр.|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("%30s|", avtomas[i].vozv); printf("\n"); printf("|______________|"); for (int i = 0; i < avto; i++) if (x == avtomas[i].nomark) printf("_____________________________|"); printf("\n"); getch(); } Заголовок фильтра 3 void filter3(void) //отображения автомобилей, находящихся и не находящихся в прокате { char str[50]; //хранит выбор по запросу bool p,t; //признаки bool arr[10]; system("cls"); if (avto == 0) { printf("Ошибка: таблица \"Автомобили\" не содержит данных"); getch(); return; } if (prok == 0) { printf("Ни один автомобиль не находится в прокате"); getch(); exit;} printf("Введите \"в прокате\", если хотите получить авто, находящиеся в прокате и \"не в прокате\" в противном случае: "); gets_s(str,50); if (strcmp("в прокате", str)) t = true; else if (strcmp("не в прокате", str)) t = false; else { printf("Некорректный ввод"); getch(); exit; } for (int i = 0; i < avto; i++) { p = false; for (int j = 0; j < prok; j++) if (prokmas[j].noavto = avtomas[i].noavto) { p = true; break; } if (p = t) arr[i] = true; } printf("________________"); for (int i = 0; i < avto; i++) if (arr[i]) printf("_______________________________"); printf("\n"); printf("| Код авто|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30d|", avtomas[i].noavto); printf("\n"); printf("| Код марки|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30d|", avtomas[i].nomark); printf("\n"); printf("| Рег. номер|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].regnum); printf("\n"); printf("| Номер кузова|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].cuznum); printf("\n"); printf("| Номер двиг.|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].dvignum); printf("\n"); printf("| Год вып.|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].godvip); printf("\n"); printf("| Пробег|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].probeg); printf("\n"); printf("| Цена авто|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].avtcena); printf("\n"); printf("| Цена дня|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].daycena); printf("\n"); printf("| Цена дня|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].dto); printf("\n"); printf("| Код мех.|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30d|", avtomas[i].nosot); printf("\n"); printf("| Спец. отметки|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].specmark); printf("\n"); printf("| Отм. о возвр.|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].vozv); printf("\n"); printf("|______________|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("______________________________|"); printf("\n"); getch(); } Заголовок фильтра 4 void filter4(void) //отображение автомобилей, выданных и возвращённых в определённую дату { char str[50]; // хранит критерий фильтра char crit[50]; // хранит запрошенную дату int x[10]; //хранит коды автомобилей int q;//счётчик найдённых авто system("cls"); if (prok == 0) { printf("Ошибка: таблица \"Прокат\" не содержит данных"); getch(); return; } if (avto == 0) { printf("Ошибка: таблица \"Автомобили\" не содержит данных"); getch(); return; } printf("Укажите,критерий поиска авто - \"выдача\" или \"возврат\": "); gets_s(crit, 50); if (strcmp("выдача", crit)) { printf("Введите дату выдачи: "); gets_s(str, 50); q = -1; //нахождение кодов авто с указанной датой выдачи for (int i = 0; i < prok; i++) if (strcmp(prokmas[i].datavid, str)) { q++; x[q] = prokmas[i].noavto; } if (q == -1) { printf("Автомобили,выданные в указанную дату не найдены"); getch(); return; } } else if (strcmp("возврат", crit)) { printf("Введите дату возврата: "); gets_s(str, 50); q = -1; //нахождение кода авто с указанной датой возврата for (int i = 0; i < prok; i++) if (strcmp(prokmas[i].datavoz, str)) { q++; x[q] = prokmas[i].noavto; } if (q == -1) { printf("Автомобили,возвращённые в указанную дату не найдены"); getch(); return; } } else { printf("Некорректный ввод"); getch(); exit; } for (int j = 0; j < q; j++) { printf("________________"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("_______________________________"); printf("\n"); printf("| Код авто|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("%30d|", avtomas[i].noavto); printf("\n"); printf("| Код марки|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("%30d|", avtomas[i].nomark); printf("\n"); printf("| Рег. номер|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("%30s|", avtomas[i].regnum); printf("\n"); printf("| Номер кузова|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("%30s|", avtomas[i].cuznum); printf("\n"); printf("| Номер двиг.|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("%30s|", avtomas[i].dvignum); printf("\n"); printf("| Год вып.|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("%30s|", avtomas[i].godvip); printf("\n"); printf("| Пробег|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("%30s|", avtomas[i].probeg); printf("\n"); printf("| Цена авто|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("%30s|", avtomas[i].avtcena); printf("\n"); printf("| Цена дня|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("%30s|", avtomas[i].daycena); printf("\n"); printf("| Цена дня|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("%30s|", avtomas[i].dto); printf("\n"); printf("| Код мех.|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("%30d|", avtomas[i].nosot); printf("\n"); printf("| Спец. отметки|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("%30s|", avtomas[i].specmark); printf("\n"); printf("| Отм. о возвр.|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("%30s|", avtomas[i].vozv); printf("\n"); printf("|______________|"); for (int i = 0; i < avto; i++) if (x[j] = avtomas[i].noavto) printf("______________________________|"); printf("\n"); } getch(); } Заголовок фильтра 5 void filter5(void) //отображение оплаченных и не оплаченных автомобилей в прокате { char str[50]; //хранит выбор по запросу bool p, t; //признаки bool arr[10]; system("cls"); if (prok == 0) { printf("Ошибка: таблица \"Прокат\" не содержит данных"); getch(); return; } if (avto == 0) { printf("Ошибка: таблица \"Автомобили\" не содержит данных"); getch(); return; } printf("Введите \"опл\",если хотите посмотреть оплаченные авто в прокате и \"неопл\" в противоположном случае: "); gets_s(str, 50); if (strcmp("опл", str)) t = true; else if (strcmp("неопл", str)) t = false; else { printf("Некорректный ввод"); getch(); exit; } for (int i = 0; i < prok; i++) { if (strcmp(prokmas[i].oplata, "+")) p = true; else p = false; if (p != t) continue; for (int j = 0; j < prok; j++) if (prokmas[j].noavto = avtomas[i].noavto) arr[i] = true; } printf("________________"); for (int i = 0; i < avto; i++) if (arr[i]) printf("_______________________________"); printf("\n"); printf("| Код авто|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30d|", avtomas[i].noavto); printf("\n"); printf("| Код марки|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30d|", avtomas[i].nomark); printf("\n"); printf("| Рег. номер|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].regnum); printf("\n"); printf("| Номер кузова|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].cuznum); printf("\n"); printf("| Номер двиг.|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].dvignum); printf("\n"); printf("| Год вып.|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].godvip); printf("\n"); printf("| Пробег|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].probeg); printf("\n"); printf("| Цена авто|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].avtcena); printf("\n"); printf("| Цена дня|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].daycena); printf("\n"); printf("| Цена дня|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].dto); printf("\n"); printf("| Код мех.|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30d|", avtomas[i].nosot); printf("\n"); printf("| Спец. отметки|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].specmark); printf("\n"); printf("| Отм. о возвр.|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("%30s|", avtomas[i].vozv); printf("\n"); printf("|______________|"); for (int i = 0; i < avto; i++) if (arr[i]) printf("______________________________|"); printf("\n"); getch(); } 7. Тестирование программ7.1 Тестирование программы на языке PascalОшибки по данным :
Ошибка связанные с файлом:
Фильтр 1. Исходные данные таблиц «Сотрудники» и «Должности» (Рис. 7.8) Рис. 7. Результаты работы Фильтра 1 при вводе различных данных: |