El desarrollo de los sistemas de alquiler de coches
El compilador es VC6.
#incluye & ltstdio.h & gt
#incluye & ltstdlib.h & gt
#incluye & ltstring.h & gt
#Definir el número máximo 20
estructura typedef A{
int number; /*número de vehículo*/
Tipo de carácter /*tipo de automóvil*; /
Pago de intereses; /*alquiler*/
int multa/*pena*/
struct a* next /*apunta al siguiente nodo* /
}Coche;
estructura typedef B{
int número; /*número de cliente*/
char Nombre[20] ;/ *Nombre del cliente*/
char License; /*Categoría de licencia*/
int carNo/*Número de vehículo de alquiler*/
int day;/ *Número de días de alquiler*/
int DelayDay/*Número de días de retraso*/
Estructura B * siguiente
}Cliente;
Estructura C{/*Esta estructura es el nodo principal de la lista vinculada de vehículos. Cada tipo A, B y C tiene un tipo de carácter */
/*Modelo de vehículo*/
int avl/*Cantidad disponible*/
Coche *head /*Apuntando al nodo del vehículo*/
} headNode[3]={{'A ', MaxNum, NULL}, { 'B ', MaxNum, NULL}, {'C ', MaxNum, NULL } }
cliente * allClien = NULL
int pay[3]= {400, 300, 200 }, multa[3]={600, 500, 400};
void init() /*Inicialización*/
int menu(); /*Interfaz de menú simple */
void search(); /*Consulta*/
void carSc() /*Consulta vehículo*/
void clientSc();/ *Consultar cliente*/
void rent(); /*Alquilar un auto*/
void return() /*Devolver el auto*/
void add CLI(client * CLI); /*Agregar cliente a la lista de clientes*/
client * del CLI(int client no);
void addCar();/*Devolver el vehículo a la lista de vehículos*/
car * delCar();/*Eliminar un automóvil de la lista de vehículos*/
void Salir (); /*Salir*/
void main()
{
init();
mientras(1)
{
Cambiar(menú())
{
Caso 1: búsqueda();
Caso 2: alquilar(); romper;
Caso 3: devolver();
Caso 4: Salir(); >
Valor predeterminado:;
}
}
}
inicialización nula()
{
int I;
car *ptr, *pa=headNode[0]. cabeza, *pb=cabezaNodo[1]. cabeza, *pc=headNode[2].
encabezado;
for(I = 1;i& lt= MaxNumi++)
{
ptr=(car*)malloc(sizeof(car)); /p>
ptr->No = 10I;
ptr->Tipo = ' A
ptr->Pago= 400;
ptr-> multa = 600;
pa = ptr
pa = ptr->siguiente;
ptr=ptr=(coche* )malloc(tamañode(coche));
ptr-& gt;no = 20I;
ptr-& gt;Tipo = ' B
ptr->pago=300;
ptr->fine=500;
pb = ptr
Pb = ptr-& gt; /p>
ptr=(car*)malloc(sizeof(car));
ptr-& gt;no = 30I;
p>
ptr->type="C";
ptr->pago=200;
ptr->fine=400;
ptr-> ;pago=200;
ptr->fine=400;
p>pc = ptr
PC = ptr-& gt; p>
}
pa = NULLpb = NULLpc = NULL
}
int menu()
{
int selección;
printf(" \ n \ n \ n Seleccionar servicio: 1. Preguntar 2. Alquilar un coche. Regresar 4. Salir\n"); >scanf("%d", & amp select);
1. & amp seleccione! ", & amp selección);
}
Selección de regresión;
} p>
Búsqueda no válida()
{
int selección;
printf("\nQuiere consultar: 1. Número de vehículo 2. Cliente 3. devolución \ n "); >scanf("%d ", & amp select);
Y (seleccionar! =1. & ¡elegir! = 2 & amp& amp¡Elige! =3)
{
printf("\nError de entrada, vuelva a ingresar:");
scanf("%d ", & select) ;
}
Interruptor (seleccionar)
{
Caso 1: carSc();
Caso dos: clientSc(); roto;
Caso tres:;
Valor predeterminado:;
}
}< / p>
void carSc()
{
printf(" \ n \ nToda la información del coche:\ n "); Quedan %d autos en la categoría NA, %d autos en la categoría NB y %d autos en la categoría NC.",
headNode[0], headNode[1]. avl , nodocabeza[2].
AVL);
}
void clientSc()
{
cliente * ptr = allClien
printf (" \ n \ nToda la información del cliente: \ n ");
while(ptr!=null)
{ printf(" \ n \ nNúmero de cliente: %d ",ptr ->No);
printf("\nNombre del cliente: %s",ptr->Nombre);
printf("\nTipo de licencia de conducir: %c ", ptr-> licencia);
printf("\nNúmero de vehículo original: %d ",ptr->carnot);
printf("\nNúmero de días de liberación:% d",ptr->día);
printf("\nNúmero de días de retraso:%d",ptr->día de retraso) ;
ptr = ptr-& gt;Siguiente;
}
}
void addCli(cliente*cli)
{
si (allClien)
allClien = cli
Otros
{
CLI-& gt; next = todos los clientes-& gt; ;
allClien = cli
}
}
cliente* delCli(int clientNo)
{
Cliente *ptr, * prePtr;
ptr = allClien
mientras(ptr ! = NULL && ampptr-& gt;No! =número de cliente) p>
{ prePtr = ptr
ptr = ptr-& gt;Siguiente;
}
if (ptr!=null)
{
if (ptr==allClien)
{
allClien = NULL
}
Otro
{
prePtr->; siguiente = ptr-& gt; siguiente ;
}
}
Devolver ptr
}
Alquiler no válido()
{
nombre de carácter[20], tipo, Sí _ No
int num, día, No;
car * carPtr
Cliente *cli
printf("\n\nIngrese la licencia escriba (A/B/C):");
scanf("%c",& amp type);
mientras (escriba! = 'A' & amp& amp escribiendo! = ' B ' & amp& amp escribiendo! ='C ')
{
Printf("Error de entrada, vuelva a ingresar:");
scanf("%c ", & tipo de amplificador ) ;
}
if(tipo=='A ')
num=headNode[0]. avl
else if(type=='B ')
num=headNode[1]. avl
Otro
num=headNode[2].
avl
printf(" \ N % Quedan %d autos en la categoría C, ¿quieres alquilarlos (Y/N): ", tipo, num
scanf("% c ", & amp yes_no);
Y (Yes_No!= ' Y ' & amp& amp yes_no! = ' N ' & amp& amp yes_no! = ' y ' & amp& amp Yes_No! ='n ')
{
Printf("Y o n:");
scanf("%c ", & amp Yes_No);
}
/*Agregar clientes*/
if(Yes_No=='Y'||Yes_No=='y ')
{
printf("\nIngrese su nombre:");
scanf("%s ", nombre);
printf("\nIngrese su días de alquiler:");
scanf("%d", & días);
}
no = rand()% 6200;
carPtr = delCar(tipo);
cli=(cliente *)malloc(tamañode(cliente));
CLI->no=no;
strcpy(CLI->nombre,nombre);
CLI->license=tipo;
p>CLI->carNo = carPtr-> ;no;
CLI->día=día;
CLI->día de retraso= 0;
CLI->siguiente = NULL p>
añadir CLI(CLI);
/*Mover el coche*/
printf("\nSu número de cliente es: %d", No); p>
printf("\nEl auto que alquiló es %c auto, el número de auto es %d", escriba, carPtr- >No);
printf("\nSu período de alquiler es %d días., días);
}
void return()
{
número int;
Pago de intereses a largo plazo;
Cliente * ptr
printf(" \ n \ nNúmero de cliente: "); ,&No);
if((ptr=delCli(No))==NULL)
printf("\n¡El cliente no existe y no se puede devolver! ");
Otro
{
Cambiar (ptr-& gt; licencia)
{
Caso 1: Pago=ptr->Día*40ptr->DelayDay*600Break;
Caso 2: Pago=ptr->Día*30ptr-> ;DelayDay*500;Break ;
Caso 3: Pago = ptr->Día*20ptr->DelayDay*400Break;
Valor predeterminado:
} p>
printf("\n\nNombre del cliente: %s",ptr->nombre);
printf("\nTipo de licencia del programa de controladores: %c ",ptr-> licencia );
printf("\nNúmero de vehículo original: %d ",ptr->cano);
printf("\nNúmero de días de liberación:%d",ptr- >día);
printf("\nNúmero de días de retraso:%d",ptr->día de retraso);
printf("\n\nCosto requerido: % ld", pago);
addCar(ptr-> licencia,ptr-> número de tarjeta);
Gratis (ptr);
}
}
void addCar(char carType, int carNo)
{
car * ptr
int index = carType-65;
ptr=headNode[índice].
Cabeza;
if(ptr==NULL)
{ptr=(car*)malloc(sizeof(car));
nodo principal[index] . head = ptr
}
Otro
{ while(ptr-& gt; siguiente)
ptr = ptr-& gt ; Siguiente;
ptr-& gt;next=(car*)malloc(sizeof(car));
ptr = ptr-& gt;next;
}
ptr-> No = Carno;
ptr->Type = carType
ptr->Pago =pay[index];
ptr->fine = multa[index];
ptr->next = NULL
}
p>coche* delCar(tipo de carácter)
{
Coche*coche de alquiler;
Cambiar (tipo)
{
Caso "A": coche de alquiler = nodo principal[0]. Cabeza;
cabezaNodo[0]. head = coche de alquiler->Siguiente;
Descanso;
Caso "B": coche de alquiler = nodo principal[1]. Cabeza;
cabezaNodo[1]. head = coche de alquiler->Siguiente;
Descanso;
Caso "C": coche de alquiler = nodo principal[2]. Cabeza;
cabezaNodo[2].
head = coche de alquiler->Siguiente;
Descanso;
Valor predeterminado:;
}
Volver al coche de alquiler;
}
void exit()
{
printf("\nBienvenido...88886666..."); p>
Salir(0);
}