Создать меню для однонаправленного линейного динамического списка - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет. Написал программу для однонаправленного линейного динамического списка. Она читает данные из файла. Но нужно сделать меню для редактирования, поиска, удаления, а также возможность чтения из файла и сохранение в файл. Помогите пожалуйста очень буду вам благодарен. Хранятся следующие данные: Номер рейса; Город прибытия; Дата ближайшего вылета; Время вылета;
// kursovai.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <malloc.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string>
 
using namespace std;
 
typedef struct date
{
    int d,m,g;
    
} DATA;
typedef struct Info
{
    char gorod[30];
    char nom[10];
    DATA dat;
    char vrem[6];
    } INFO;
int CmpDate(DATA d1,DATA d2){
    if (d1.d==d2.d&&d1.m==d2.m&&d1.g==d2.g) return 1;
    return 0;
}
INFO scan(FILE *f){
    INFO x;
    fscanf(f,"%s%s%d%d%d%s",x.nom,x.gorod,&x.dat.d,&x.dat.m,&x.dat.g,x.vrem);
    return x;
}
 
typedef struct Node 
{
    INFO value;
    struct Node*next;
} NODE,*pNODE;
 
typedef struct List
{
pNODE begin;
int len;
} LIST, *pLIST;

pLIST createLIST(void)
{
pLIST pL;
pL=(pLIST) malloc (sizeof (LIST));
pL->begin=NULL;
pL->len=0;
return pL;
}
 
int isEmpty(pLIST pL)
{
if (pL->begin) return 0;
return 1;
}
 
pNODE getPointer(pLIST pL, INFO date){ 
    pNODE p=pL->begin;
    if (isEmpty(pL)) return NULL;
    if(CmpDate(date.dat,p->value.dat)) return p;
        while (p->next&&!CmpDate(date.dat,p->next->value.dat)) 
            p=p->next;
            return p;
}
 
pNODE get(pLIST pL, INFO date){
    pNODE p=pL->begin;
    if (isEmpty(pL)) return NULL;
    if(!strcmp(date.gorod,p->value.gorod)) return p;
        while (p->next&&strcmp(date.gorod,p->value.gorod)) 
            p=p->next;
            return p;
        }
 
int add(pLIST pL,INFO date){
    pNODE q=pL->begin;
    pNODE p=(pNODE) malloc (sizeof (NODE));
    if(!p) return 0;
        p->value=date;
        p->next=pL->begin;
        pL->begin=p;
        return 1;
    }
        
int delNODE (pLIST pL, INFO date){
    pNODE pN,p=pL->begin;
    if (isEmpty (pL)){ 
        cout<<"LIST CLEAR\n"; 
        return 0;
    }
    if (!strcmp(date.nom,p->value.nom)){
        pN=pL->begin;
        pL->begin=pN->next;
        free (pN);
        return 1;
    }
    pN=get(pL, date);
    
    if (!(pN->next)||strcmp(pN->next->value.nom,date.nom)){ 
        cout<<"Node not Find\n";
        return 0;
    }
    p=pN->next;
    pN->next=p->next;
    free (p);
    return 1;
}

void print(pLIST pL)
{
pNODE p=pL->begin;
if (isEmpty(pL)) cout<<"LIST CLEAR\n";
while (p)
{
    cout<<p->value.nom<<" "<<p->value.gorod<<" "<<p->value.dat.d<<"/"<<p->value.dat.m<<"/"<<p->value.dat.g<<" "<<p->value.vrem<<"\n";
p=p->next;
}
}
 
void clearLIST(pLIST pL)
{
    while (pL->begin)
    {
        delNODE(pL,pL->begin->value);
    }
    free(pL);
}
 
int _tmain(int argc, _TCHAR* argv[])
{   pNODE pN;   
    pLIST pL=createLIST();
    int i;
    INFO x;
    FILE *f;
    if (!(f=fopen("e:\\kurs.txt","r"))) cout<<"ERROR OPEN FILE !!!!";
    for(i=0;i<5;i++){
    x=scan(f);
    add(pL,x);
    }
        
print(pL);
 
    _getch();
    clearLIST(pL);
    fclose(f);
    return 0;
}

Решение задачи: «Создать меню для однонаправленного линейного динамического списка»

textual
Листинг программы
printf("1. Первый пункт меню");
printf("2. Второй пункт меню");
...
int key = getch();
switch(key)
{
case '1':
{
} break;
case '2':
{
} break;
...
}

Объяснение кода листинга программы

  1. В начале кода выводятся пункты меню с помощью функции printf().
  2. Далее вводится переменная key с помощью функции getch(), которая будет использоваться для проверки выбора пользователя.
  3. Затем происходит проверка значения переменной key с помощью оператора switch.
  4. Для каждого пункта меню (в данном случае от 1 до N) происходит проверка, соответствует ли введенная пользователем клавиша этому пункту меню.
  5. Если пользователь ввел '1', то выполняется соответствующий блок кода (пока не указан, что делать при выборе пункта меню).
  6. Аналогично для остальных пунктов меню.
  7. Если пользователь ввел что-то другое, то программа продолжает работу (пока не указаны действия при неправильном выборе пункта меню).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы