Главная страница
Навигация по странице:

  • Заголовок сохранения таблиц

  • Заголовок вывода таблицы на экран

  • Заголовок добавления записи

  • Заголовок удаления записи

  • курсач. Бд проката автомобилей


    Скачать 0.97 Mb.
    НазваниеБд проката автомобилей
    Дата27.02.2019
    Размер0.97 Mb.
    Формат файлаdocx
    Имя файлакурсач.docx
    ТипПояснительная записка
    #69005
    страница5 из 5
    1   2   3   4   5

    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.При добавлении записи в поле типа int ввели значение отличное от него

    Ввод


    В этом поле окажется 0




    2.При заполнении поля «Пол»(тип char) ввели не один символ, а несколько

    Ввод


    Будет записан только первый символ




    3.При удалении записи ввели номер записи котрой несуществует.

    Пусть имеется таблица :

    При удалении введем цифру 7

    На экране появится сообщение о том,что такой записи нет


    4 При вводе информации в фильтр, она была введена не в том регистре

    Информация в таблице

    Ввод запроса

    Программа не найдет совпадений
















    Ошибка связанные с файлом:

    Ошибка

    Исходные данные

    Ожидаемый результат

    Реальный результат

    1.Файл для записи отсутствует

    Файл для записи таблицы «Прокат» отсутствует

    Добавим запись в таблицу


    При попытке добавления новой записи в таблицу файл будет создан и готов для записи




    Фильтр 1.

    Исходные данные таблиц «Сотрудники» и «Должности» (Рис. 7.8)

    Рис. 7.

    Результаты работы Фильтра 1 при вводе различных данных:
    1   2   3   4   5


    написать администратору сайта