1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Сортировка По Алфавиту

Тема в разделе "Вопросы новичков и не только", создана пользователем kingl, 18 дек 2013.

  1. kingl

    kingl New Member

    Репутация:
    0
    Регистрация:
    30 окт 2013
    Сообщения:
    2
    Симпатии:
    0
    В радиоателье хранятся квитанции о сданной в ремонт радиоаппаратуре. Квитанция содержит наименование (телевизор и т. п.), марку изделия, дату приемки, фамилию мастера, состояние (выполнен или нет). ВЫВЕСТИ ИНФОРМАЦИЮ О СОСТОЯНИИ ЗАКАЗОВ НА УКАЗАННУЮ С КЛАВИАТУРЫ ДАТУ, ОТСОРТИРОВАННУЮ ПО ФАМИЛИИ ВЫПОЛНЯЮЩЕГО ЗАКАЗ МАСТЕРА.
    Остался последний пункт сделать под номером 4. Подскажите, пожалуйста, как сделать сортировку по фамилии.
    Код:
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <windows.h>
    #include <locale.h> 
    
    FILE *fl;
    
    struct worker // Шаблон структуры
    {
    char surname[40], name[40], brand[40], status[4];
    int den, mesyc, god;
    };
    
    worker work[1000]; // Массив структур
    int nw, den, mesyc, god; // Количество рабочих
    
    int Menu(); // Меню
    void AddNewData(); // Доблавение новых данных
    void ViewFile(); // Просмотр содержимого файла
    void Edit(); // Редактирование данных
    void FileToStructEdit(); // Запись файла в структуру
    //void ViewResult(); // Вывод результата
    void Exit(); // Выход из программы 
    
    void Enter(int); // Ввод фамилии с проверкой правильности ввода
    //void EnterDetailsAmount(int); // Ввод количества деталей с проверкой правильности ввода
    //void EnterTeamNumber(int); // Ввод номера бригады с проверкой правильности ввода
    
    void main()
    
    {
    setlocale(LC_CTYPE, "Russian");
    
    
    do
    {
    system("cls"); 
    
    switch (Menu())
    {
    case 1: AddNewData(); break;
    case 2: ViewFile(); break;
    case 3: Edit(); break;
    /*case 4: ViewResult(); break;*/
    case 5: Exit(); break;
    }
    _getch();
    }
    while(true);
    }
    
    int Menu()
    {
    int n;
    
    do
    {
    printf("Enter desired action number");
    printf("\n1 - Создание файла");
    printf("\n2 - view the file");
    printf("\n3 - edit records");
    printf("\n4 - view result");
    printf("\n5 - exit");
    
    printf("\n\nEnter an action number: ");
    scanf("%d", &n);
    fflush(stdin);
    
    system("cls");
    }
    while(n < 1 || n > 5);
    
    return n;
    }
    
    void AddNewData()
    {
    int i, den, mesyc, god;
    char continueAdd;
    char Surnme[40], name[40], brand[40], status[4];
    
    
    // Создание нового файла/стирание старого
    if (!(fl = fopen("list.txt", "wb")))
    {
    printf("\n\nCreating file error\n");
    return;
    
    
    
    }
    fclose(fl);
    
    // Открытие файла для записи
    if (!(fl = fopen("list.txt", "rb++")))
    {
    printf("\n\nOpening file error\n");
    return;
    }
    for (i = 0; i < 999; i++)
    {
    Enter(i);
    nw = i + 1;
    
    fwrite(&work[i], sizeof(worker), 1, fl);
    do
    {
    printf("\nContinue add records(y/n): ");
    scanf("%c", &continueAdd);
    fflush(stdin);
    }
    while(continueAdd != 'y' && continueAdd != 'Y' && continueAdd != 'n' && continueAdd != 'N');
    
    if (continueAdd == 'n' || continueAdd == 'N')
    {
    break;
    }
    
    }
    fclose(fl);
    
    printf("\nЗапись сохранена. Нажмите любую клавишу...");
    }
    
    void ViewFile()
    {
    if (!(fl = fopen("list.txt", "rb")))
    {
    printf("\n\nOpening file error\n");
    return;
    }
    
    printf ("Формат записи");
    printf("\n № Фамилия, Наименование, Марка изделия, Дата, Состояние готовности");
    printf("\n");
    
    int i = 0;
    worker workRead;
    
    while (fread(&workRead, sizeof(worker), 1, fl))
    {
    if (feof(fl))
    {
    break;
    }
    
    work[i] = workRead;
    
    printf("\n%d %s, %s, %s, %d.%d.%d, %s",
    i + 1,
    work[i].surname,
    work[i].name,
    work[i].brand,
    work[i].den,
    work[i].mesyc,
    work[i].god,
    work[i].status);
    
    
    i++;
    }
    
    fclose(fl);
    
    printf("\n\nPress any key");
    }
    void FileToStructEdit()
    {
    worker workEdit;
    int i = 0;
    
    if(!(fl=fopen("list.txt", "rb")))
    {
    printf("\n\nFile opening error\n");
    return;
    }
    
    nw = 0;
    
    while(fread(&workEdit, sizeof(worker), 1, fl))
    {
    if (feof(fl))
    {
    break;
    }
    
    work[i] = workEdit;
    
    i++;
    nw++;
    }
    }
    void Edit()
    {
    int actionNumber, i, recordNumber;
    
    do
    {
    printf("1 - удалить запись");
    printf("\n2 - редактировать запись");
    printf("\n3 - добавить новую запись");
    printf("\n4 - отмена");
    
    printf("\n\nВведите номер действия: ");
    scanf("%d", &actionNumber);
    fflush(stdin);
    
    if (actionNumber < 1 || actionNumber > 4)
    {
    printf("Пожалуйста, введите число от 1 до 4\n\n");
    }
    }
    while(actionNumber < 1 || actionNumber > 4);
    
    switch (actionNumber)
    {
    case 1:
    FileToStructEdit();
    
    system("cls");
    printf("Удаление записи");
    printf ("Формат записи");
    printf("\n № Фамилия, Наименование, Марка изделия, Дата, Состояние готовности");
    printf("\n");
    
    for (i = 0; i < nw; i++)
    {
    printf("\n%d %s, %s, %s, %d.%d.%d, %s",
    i + 1,
    work[i].surname,
    work[i].name,
    work[i].brand,
    work[i].den,
    work[i].mesyc,
    work[i].god,
    work[i].status);
    }
    
    printf("\n\n");
    
    do
    {
    printf("Введите номер удаляемой строки: ");
    scanf("%d", &recordNumber);
    fflush(stdin);
    }
    while(recordNumber < 1 || recordNumber > nw);
    
    if(!(fl=fopen("list.txt", "wb")))
    {
    printf("\n\nFile opening error\n");
    return;
    }
    
    for (i = 0; i < nw - 1; i++)
    {
    if (i > recordNumber - 2)
    {
    work[i] = work[i + 1];
    }
    
    fwrite(&work[i], sizeof(worker), 1, fl);
    }
    
    fclose(fl);
    printf("Удаление прошло успешно");
    
    break;
    
    case 2:
    FileToStructEdit();
    
    system("cls");
    printf("Редактирование записи");
    printf ("Формат записи");
    printf("\n № Фамилия, Наименование, Марка изделия, Дата, Состояние готовности");
    printf("\n");
    
    for (i = 0; i < nw; i++)
    {
    printf("\n%d %s, %s, %s, %d.%d.%d, %s",
    i + 1,
    work[i].surname,
    work[i].name,
    work[i].brand,
    work[i].den,
    work[i].mesyc,
    work[i].god,
    work[i].status);
    }
    
    printf("\n\n");
    
    do
    {
    printf("Введите номер записи для редактирования: ");
    scanf("%d", &recordNumber);
    fflush(stdin);
    }
    while(recordNumber < 1 || recordNumber > nw);
    
    if(!(fl=fopen("list.txt", "wb")))
    {
    printf("\n\nFile opening error\n");
    return;
    }
    
    for (i = 0; i < nw; i++)
    {
    if (i == recordNumber - 1)
    {
    Enter(i);
    }
    
    fwrite(&work[i], sizeof(worker), 1, fl);
    }
    
    fclose(fl);
    printf("Editing was successful");
    
    break;
    
    case 3: 
    FileToStructEdit();
    
    system("cls");
    printf("Adding new record\n");
    
    if(!(fl=fopen("list.txt", "wb")))
    {
    printf("\n\nFile opening error\n");
    return;
    }
    
    for (int i = 0; i < nw + 1; i++)
    {
    if (i == nw)
    {
    Enter(i);
    }
    
    fwrite(&work[i], sizeof(worker), 1, fl);
    }
    
    nw++;
    fclose(fl);
    printf("Adding new record was successful");
    
    break;
    
    // Выход в главное меню
    case 4: 
    return;
    
    break;
    }
    
    printf("\n\nPress any key");
    }
    
    void Enter(int i)
    {
    int den, mesyc, god;
    char continueAdd;
    char Surnme[40], name[40], brand[40], status[4];
    
    
    printf("\nВведите фамилию: ");
    scanf("%s", &Surnme);
    fflush(stdin);
    strcpy(work[i].surname, Surnme);
    
    printf("\nВведите наименование: ");
    scanf("%s", &name);
    fflush(stdin);
    strcpy(work[i].name, name);
    
    printf("\nВведите марку изделия: ");
    scanf("%s", &brand);
    fflush(stdin);
    strcpy(work[i].brand, brand);
    
    printf("\nВведите состояние готовности: ");
    scanf("%s", &status);
    strcpy(work[i].status, status);
    
    printf("\nВведите день, месяц, год: ");
    scanf("%d %d %d", &den, &mesyc, &god);
    work[i].den = den;
    work[i].mesyc = mesyc;
    work[i].god = god;
    
    
    }
    void Exit()
    {
    exit(0);
    }
     
Загрузка...

Поделиться этой страницей