Código fuente de la función Puttext
/* * *La consulta difusa puede tener problemas al crear una lista vinculada y puede haber algunos problemas al completarla en la tabla de salarios * */
# include ltdos.h gt
# include ltbios.h gt
# include ltconio.h gt
# incluir ltstdio.h gt
# incluir ltstdlib.h gt
# incluir ltmath.h gt
#Definición R 8
# Hay un problema con define T 60 /****addlist* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.
#define izquierda 0x4b00 /*izquierda*/
# define derecha 0x4d 00/* derecha */
#define 0x5000 / debajo */ * p>
#Definir 0x4800 en */ /*
#Definir espacio 0x3920 /* espacio */
#Definir ESC 0x011b/* Tecla ESC*/
#define ENTER 0x 1c0d/* ENTER */
#Definir retroceso 0xe08 /*Tecla de borrado*/
#Definir ALT_B 12288 /*Tecla de combinación ALT_B */ p>
#Definir ALT_M 12800/*Clave combinada ALT_M */
#Definir ALT_H 8960/*Clave combinada ALT_H */
#Definición número 10
#Definición M 20
int clst, tvst/*tarifa de limpieza; amp tarifa de CCTV*/
int o = 1;/*-1 modificado, 1 sin cambios*/
char zhws[N][M], zhchs[N][M], salida[N][M] /* Trabajo de almacenamiento amp amp título técnico amp amp Nombre del departamento*/
char meses[][5]={"0","enero","febrero","marzo","abril","mayo"," junio", "julio", "Arg", "septiembre" , "Octubre", "Noviembre", "Diciembre" };/*Nombre del mes, 65438 Octubre corresponde a 1 */
char sexs[][7]={ "male", "female" } ;
int zhwsp[N], zh HSP[N]; /*Posición salario; amp título profesional (básico) Salario*/
ARCHIVO * fp
typedef struct _paylist
{
int cardnum/*número de tarjeta de salario*/
Nombre del personaje [M];
int mes ;/*mes, select*/
int jbsalario/*salario básico*/
int zhwsalario/*puesto salario*/
int adición /* subsidio*/
int ysalary/*salary payable*/
int like;/* Premio Especial*/
int impuesto/*impuesto*/
int agua; /*tarifa agua*/
int elec/*tarifa electricidad*/
int limpio/*tarifa limpieza*/
int tv/*tarifa de televisión*/
salario int /*salario real*/
struct _paylist *izquierda, *derecha
}nómina;
estructura typedef _worker thread
{
Nombre del personaje[ M];
int género /*0 masculino 1 femenino*/
char id num[M] /*número de tarjeta de identificación*/
int cardnum/*número de tarjeta de salario*/
int edad
int salario/*años de servicio*/
int departamento; /*seleccionar, departamento*/
int zhw/*Seleccionar, trabajo*/
int zhch/* Seleccionar, título */
龙zhchnum/*Título
No.*/
龙homeph/*Teléfono residencial*/
char mobile[M] /*Teléfono móvil*/
int paymons/*Recorded n Salario mensual total*/
struct _worker *front, * down
Nómina *right;
}worker;
typedef struct _ departamento
{
int nombre /*Seleccionar, nombre del departamento*/
Ruta del carácter [M] /*Nombre de la ruta de almacenamiento*/
p>
int wknum/*número de empleados en este departamento*/
estructura _ departamento * izquierda, * derecha
Trabajadores * bajan;
}Inicio;
typedef struct _tjw
{
trabajador * wp
struct _ tjw * siguiente
} TJW;
DEPART * headd, * dep
Trabajador *zhp, * wwp/* actúa como guía, no lo cambies casualmente * * *; * * * */
TJW * head 1; /* *Puntero de cabeza* */
Carga no válida (void); /*Importar información de departamento, empleado y salario del archivo */
void start (no válido); /*Leer datos básicos*/
void read dep(departamento * * PP, ARCHIVO * FP); file*/
void write dep(departamento * p, ARCHIVO * FP /*Escribe la información del departamento en los archivos uno por uno*/
void shchx(WORKER * WP); /*Salida detallada */
void readw(WORKER **wp, FILE * FP); /*Leer información del empleado del archivo*/
PAYLIST * whtailp(WORKER * WP); );/ *Encontrar el empleado - el final de la cadena, devolver el final de la cadena*/
void xianshw(void); /* * * * * * * * * * Mostrar la información del empleado del enésimo departamento* * * * * * * *
PAYLIST * insertp(WORKER *wp,PAYLIST *p,PAYLIST *tail);/*Insertar nuevo empleado y regresar al final de la cadena* /
void add new(department * dep);/*Agregar nuevo empleado*/
PAYLIST * whtailp(WORKER * WP);/*Buscar empleado - el final de la cadena , devuelve el final de la cadena*/
void changeshuju(invalid);/*Cambiar información fija como el salario básico*/
Nómina* rulup(worker*WP);/ *Ingrese información salarial*/
void addlist(WORKER * zhp);/*Agregar nuevo empleado*/
void Dzhg(void);/* * * *Determinar el empleado específico * * */
void xiansh 2 (departamento * dep);
void insert dep(void);/* * * *Agregar nuevo departamento* * *
void agregar zh(
void); /* * *Agregar trabajos y puestos* */
void save dep(void); *Guardar información del departamento*/
void savew(void); Guardar información del empleado e información salarial* * */
void day 1 (void);* * *Imprimir información del empleado directamente* */
void day2 (void); * * *Imprimir los resultados estadísticos* */
void dell(departamento * dep); /* *Eliminar todo el departamento* */
void delone(departamento * dep, WORKER * p);/*Eliminar empleados y su información salarial*/
void changew(WORKER * p);/*Modificar información básica de los empleados*/
WORKER * search 1( ; /*Buscar por número de ID*/
void search 3(void); /*Por nombre*/
void mhsearch(); p >
TRABAJADOR * buscar 0();/*Buscar por número de puesto de trabajo*/
void jq search(void);/*Consulta exacta*/
void A Shuijin (); /*Pago total de impuestos y diez estadísticas principales* */
void changep(WORKER * p);/*Modificar información salarial*/
WORKER * search 2( ) ;/*Buscar por número de tarjeta de salario*/
int key; /*Variable clave*/
int textx, texty/*Coordenadas del cursor, fila X, columna Y*/
Estructura del menú/*Estructura del menú*/
{
Nombre del personaje [10] /*Nombre del menú principal*/
char str[10][20];/*Opciones*/
int n;/*Número de opciones*/
} ml[R];/* r archivo, yes Agregar o eliminar según sea necesario*/
char save[4096], savee[4096] /*Guardar espacio en el área de texto*/
/* char sav 1[4096]; * /
char c[4096] /*Espacio especial para limpieza de pantalla*/
int i, j /*Variables públicas*/
void Menu (); /*Interfaz de inicialización*/
void Selectitem() /*Definir menú*/
void DrawSelectitem() /*Mostrar menú principal*/ p>
void BlackText(int x, int y, char * z); /*Seleccionar menú*/
void RedText(int x, int y, char * z); */
Ejecución en seco(); /*Proceso de operación detallado*/
void DrawMl(int n); >void MoveMl( int n, int x); /*Control de opciones del menú*/
void Enter(int m, int n /*Funciones específicas de las opciones del menú*/
<); p>void clr SCR();/*Función de limpieza de pantalla personalizada*/Void Ding Wei(void);
void DrawFrame(int left, int up, i
nt right, int down, int textcolor, int background color); /*Dibujar borde*/
/* * *Funciones principales* * */
menú de carga nulo (void)
{
menu(); /*Interfaz de inicialización*/
ejecutar() /*Proceso de operación específico*/
}
/*Inicializar interfaz*/
Menú no válido()
{ int a;
System("cls"); /*Llamar al comando de pantalla clara del sistema*/
textbackground (verde); /*Establecer el fondo en azul*/
Ventana (1, 1, 25, 80); /p>
clr SCR();
textx = 3; /*posición de inicialización del cursor*/
texty = 2;
gotoxy( 1 , 2);
printf("c ", 218);/*Dibuja la esquina superior izquierda*/
for(I = 0;ilt78;i)
printf("c ",196);/*Dibuja una línea recta horizontal*/
printf("c",191);/*Dibuja la esquina superior derecha*/
for(I = 3; i lt=23; i)
{
gotoxy(1, I);
printf("c " , 179) ;/*Dibuja una línea vertical*/
gotoxy(80, I);
printf("c ", 179);
}
printf("c ",192);/*Dibuja la esquina inferior izquierda*/
for(I = 0;ilt78;i)
printf ("c ", 196);
printf("c ", 217 /*Dibujar la esquina inferior derecha*/
gotoxy(1, 1); >
color del texto (7);/*Establecer gris*/
for(I = 0;ilt80;i)
cprintf("c", 219);/ *Usa símbolos para dibujar el área principal de fondo gris del menú*/
for(a = 3; a lt=23; a )
{gotoxy(T, a); cprintf("c ", 179);} /************************************ *********** **********************/
Ding Wei();
selectitem();/*Opción de compra Función */
DrawSelectitem(); /*Opciones de dibujo*/
gettext(2, 3, 78, 23, c); /*Guardar el área de texto actual*/ p>
}
/*Menú de definición*/
void Selectitem()
{
strcpy(ml[0 ]). Nombre, "Archivo"); /*Las siguientes opciones específicas llenan los espacios en blanco con el mismo fondo negro para cada menú*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.
strcpy(ml[0]). str[0], " Load "); /*Importar información de empleados de un determinado departamento*/
strcpy(ml[0]). str[1], "Shemi"); /*Establecer contraseña*/
strcpy(ml[0]). str[2], "Gaimi"); /*Cambiar contraseña*/
strcpy(ml[0]). str[3], "Imprimir"); /*Imprimir*/
strcpy(ml[0]). str[4], "guardar"); /*guardar*/
strcpy(ml[0]). str[5], "Salir"); /*Salir del sistema*/
ml[0]. n = 6; /*El número de elementos en el menú guardado*/
strcpy(ml[1]. name, "insert");
strcpy(ml[1] . str[0], "Newers"); /*Insertar nuevos empleados*/
strcpy(ml[1]. str[1], "Paylist"); / p>
strcpy(ml[1]. str[2], "inicio"); /*Nuevo departamento*/
strcpy(ml[1]. str[3], "Zhchs" ); /*Nuevo título*/
strcpy(ml[1]. str[4], "Zhws"); 1]. n = 5;
strcpy(ml[2]). nombre, "editar"); /*Editar y modificar*/
strcpy(ml[2]). str[0], "Imfor"); /*Información del empleado*/
strcpy(ml[2]). str[1], "Lista de pago"); /*nómina*/
strcpy(ml[2]). str[2], "Shu Tong"); /*Modificar datos fijos como el salario básico*/
ml[2]. n = 3;
strcpy(ml[3]). nombre, "buscar"); /*consulta*/
strcpy(ml[3]). str[0],"京鸟");/*Consulta exacta*/
strcpy(ml[3]). str[1], "Mohu"); /*consulta difusa*/
ml[3]. n = 2;
strcpy(ml[4].nombre, "Tongji"); /*estadísticas*/
strcpy(ml[4].str[0]," pai Xu ");/*Sort*/
strcpy(ml[4].str[1], "Abuelo"); /*Salarios totales de varios tipos*/
strcpy(ml[4].str[2], "Ashuijin"); /*Monto total del impuesto (mes/año)*/
strcpy(ml[4].str[3]," Gzhjigz ");/*Número total de puestos de trabajo y salario medio*/
ml[4]. n = 4;
strcpy(ml[5]). nombre, "DEL");
strcpy(ml[5]). str[0], "一");
strcpy(ml[5]). str[1], " Todos ");
ml[5]. n = 2;
strcpy(ml[6].name, "Ayuda");
strcpy(ml[6].str[0], "Acerca de");
ml[6].
n = 1;
}
/*Mostrar nombre único principal*/
void DrawSelectitem()
{
for(I = 0; iltr; i)
RedText(i, 1, ml[i].name); /*Muestra el nombre del menú principal, la primera letra es roja* /
}
/*Mostrar menú normalmente*/
void RedText(int x, int y, char *z)
{
text background(7);/*Establece el color de fondo en gris claro*/
gotoxy(3 x*10, y);
para ( j = 0; z[j]; j )
{
Si (j==0)
textcolor(rojo);/*primero El las letras son rojas*/
Otras
textcolor (negro /*Establecer en negro*/
cprintf("c ", z[j]) ;/*Nombre del menú de salida*/
}
}
/*Mostrar menú seleccionado*/
void BlackText( int x , int y, char *z)
{
fondo del texto(0 /*Establece el color de fondo en negro*/
color del texto (15); ); /*Establece el color del texto en blanco*/
gotoxy(3 10*x, y /*Coordenadas de posicionamiento*/
cputs(z);/ *Salida); cadena de nombre de menú*/
}
/*Proceso de operación clave*/
Ejecución no válida()
{ gettext (1, 1, 80, 25, savee);
mientras(1)
{
gotoxy(texty, textx);
clave = Tecla BIOS(0); /*Botón Recibir*/
Interruptor (tecla)
{
Caso ALT_B:
caso ESC: DrawMl(0); break; /*mostrar menú desplegable 1*/
case ALT _ M: DrawMl(1); p >
case ALT _ H: DrawMl(2); /*Mostrar menú desplegable 3*/
Control de operación de las teclas de cursor en el chasis: /* *
{ p>
if(textx==3)
textx = 23
textx-;
gotoxy(texty, textx);
}Roto;
Control de operación de las teclas de cursor debajo del chasis: /* *
{
if(textx== 23)
textx = 3;
textx;
gotoxy(texty, textx);
}Roto;
Caso IZQUIERDA: /*Control de operación de la tecla del cursor izquierdo*/
{
if(texty==2)
texty = T-1 ;
texty-;
gotoxy(texty, textx);
}Roto;
Retroceso de mayúsculas y minúsculas: /*Borrar configuración de clave */
{
if(texto =
= 2 amp; amptextx==3)
Continuar;
Otro
{
if (texty!=2) p> p>
texty-; /* Borrar detalles clave.
Primero elimine el contenido, luego mueva el cursor hacia atrás un espacio*/
Otros
if(texty==2)
{
texty = 78
textx-;
}
gotoxy(texty, textx);
printf(" ");
gotoxy(texty, textx);
}
}Roto; /*Fin de caso 0xe08*/
Caso DERECHO: /* Control de operación de la tecla del cursor derecho*/
{
if(texty==T-1)
texty = 2;
texty ;
gotoxy(texty, textx);
} roto
Espacio entre mayúsculas y minúsculas: /*operación de barra espaciadora*/
{
if(texty==79)
Continuar;
Otros
{
gotoxy(texty , textx ); /*Operación detallada de espacios*/
printf(" ");
texty;
gotoxy(texty, textx);
printf(" ");
texty;
gotoxy(texty, textx);
p>}
} Roto;
Entrada de caso: /*Ingrese la operación de control*/
{
if (textx==23)
Continuar;
textx;
texty = 2;
gotoxy(texty, textx);
}Roto;
Valor predeterminado: /*Resultado de clave sin control*/
{
if(texty = = 79 amp ; ampTextx==23)/*Sin salida al final* /
Continuar;
Otros
if(texty == 79 amp; amptextx!=23) /*Hasta el final de la línea*/ p>
{
textx;
texty = 2;
}
gotoxy(texty, textx); resultado de salida*/
printf("c ", key);
If(texty==79) /*if texty==79, no se ejecutará*/
Continuar;
Else /*Si la línea no está al final, la ejecución continuará y el cursor avanzará una posición*/
texty ;
}
}
}/*Tirantes para bucles grandes*/
}
/* Función de dibujo de borde*/
void DrawFrame(int l, int u, int r, int d, int tcolor, int bcolor)
{
fondo del texto (bcolor);/*color de fondo*/
color de texto(bcolor);/*color de texto*/
for(I = l;i lt= r ; I ) / *Área de fondo de salida*/
{
for(j = u; j lt= d; j )
{
gotoxy (i, j);
printf("c ", 219 /*Salida de caracteres de fondo*/
}
}
color del texto(tco
lor);/*Color del borde*/
for(I = u 1;I ltd;I) /*Línea de borde de salida en el área de fondo*/
{
gotoxy(l,I);
cprintf("c",179);/*línea vertical*/
gotoxy(r,I);
cprintf("c ", 179);
}
for(I = l 1; i ltr; i )
{ p >
gotoxy(i,u);
cprintf("c",196);/*línea horizontal*/
gotoxy(i,d); p>
cprintf("c ", 196);
}
gotoxy(l, u);
cprintf("c ", 218); ); /*Esquina superior izquierda*/
gotoxy(r, u);
cprintf("c", 191); /*Esquina superior derecha*/
gotoxy (l, d);
cprintf("c ", 192); /*esquina inferior izquierda*/
gotoxy(r, d);
cprintf ("c ", 217); /*Esquina inferior derecha*/
/* gettext(l 1, u 1, r-1, d-1, save 1); //*Guardar en el área del borde*/
}
/*Mostrar opciones desplegables específicas*/
void DrawMl(integer)
{ p>
gettext(1, 1, 80, 25, guardar); /*Guardar posición oculta*/
BlackText(n, 1, ml[n]. Nombre); /*Cancelar selección Menú principal*/
Marco (3 10*n-1, 2, 3 10*n 9, 3 ml[n]. n, 0, 7); El borde del menú desplegable*/
for(I = 3;ilt3ml[n].n;I)/*Imprimir la opción de menú seleccionada*/
{
Si (i==3)
TextoNegro(n, I, ml[n]). str[I-3]);/*El primer elemento está seleccionado de forma predeterminada*/
Otro
RedText(n, I, ml[n].
str[I-3]);/*El primer carácter de otros elementos se muestra en rojo*/
}
gotoxy(791);
MoveMl (n, 3); /*Control de opciones del menú*/
}
/*Control de opciones del menú, donde n determina los elementos horizontales y x determina las opciones desplegables* /
void MoveMl(int n, int x)
{
int bandera = 1;
mientras(bandera) p>
{
gotoxy(791);
tecla = tecla BIOS(0); /*botón de recepción*/
gotoxy(791) ;
Interruptor (tecla)
{
Caso ESC: /*Salir del bucle*/
puttext(1, 1, 80, 25, guardar); /*Restaurar la apariencia antes de abrir el menú*/
flag = 0;
Break;
Caso IZQUIERDO: /* Opción para moverse hacia la izquierda* /
puttext(1, 1, 80, 25, save /*Restaurar la apariencia antes de abrir el menú*/
If(n==0); )/*Si queda Mover y cruzar el borde, luego pasar a la última opción */* II * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.
DrawMl(6);
Otros
DrawMl(n-1);
bandera = 0; p>Romper;
Caso DERECHA: /*Mover opción a la derecha*/
puttext(1, 1, 80, 25, guardar /*Restaurar la apariencia antes de abrir); el menú */
If(n==6)/*Si te mueves hacia la derecha y más allá del borde, muévete a la primera opción*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
DrawMl(0);
Otro
DrawMl(n 1);
flag = 0;
Romper;
Subir caso: /*Mover opciones específicas hacia arriba*/
RedText(n, x , ml[n ]). str[x-3]);/*Fuente de salida roja*/
Si(x==3)/*Mover hacia arriba, mover la tecla hacia abajo*/
x= 3ml[n]. n-1;
Otro
x-;/*Mover al nuevo contenido que se mostrará*/
BlackText(n, x, ml[n] ). str[x-3]);/*Fuente de salida negra*/
flag = 1;
Break;
Músculo de mayúsculas y minúsculas hacia abajo: /*Opciones específicas Mover hacia abajo*/
RedText(n, x, ml[n]). str[x-3]);
If(x==(3 ml[n]).n-1))/*Mover hacia abajo, presione la tecla para ir hacia arriba*/
x = 3;
Otro
x; /*Mover al nuevo contenido para mostrar*/
BlackText(n, x, ml[n ]).
str[x-3]);
flag = 1;
Romper;
Entrada de caso:
puttext(1, 1). , 80, 25, guardar); /*Restaurar la apariencia antes de abrir el menú*/
Introducir (n, x-3) /*Funciones específicas de las opciones del menú*/
bandera = 0;
Romper;
}
gotoxy(791);
}
}
/*Funciones específicas de las opciones del menú*/
Void Enter(int m, int n) /*m menú principal n submenu*/
{
Interruptor (m)
{
Caso 0: Interruptor (n)
{
Caso 0 : xianshw(); roto;
Caso 1: roto;
Caso 2: roto;
Caso 3: día 1(); p>
Caso 4: guardar dep(); savew(); printf("¡Guardar correctamente!");
puttext(1, 1, 80, 25, guardado); /p>
Caso 5: Salir (0); Break;
}Break; /*Salir del sistema*/
Caso 1: Cambiar (n)
{
Caso 0: agregar nuevo(dep); puttext(1, 1, 80, 25, guardar); * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Descanso;
Caso 1: agregar lista(zph); puttext(1, 1, 80, 25, save); /*completar tabla de salarios*/
Caso 2: insertar dep(); / * * * *Agregar nuevo departamento* */
Caso 3:
Caso 4: addzh(); puttext(1, 1, 80, 25, save /*); Agregar nuevas posiciones y títulos * * *
}Roto;
Caso 2: switch(n)
{
Caso 0: changew (zhp);
Caso 1: changep(zhp); puttext(1, 1, 80, 25, save);
Caso 2: clr SCR( ) ; cambioshuju(); puttext(1, 1, 80, 25, guardar roto); p >{
Caso 0: jq search();
Caso 1: mhsearch();
} roto;
Caso 4: Switch (n)
{
Caso 0:
Caso 1:
Caso 2: p >
Caso tres: ashuijin(); puttext(1, 1, 80, 25, guardar roto);
} roto; )
{
Caso 0: delone(dep, zhp);
Caso 1: delall(dep); p>}Roto;
Caso 6: Interruptor (n)
{
Caso 0: Roto;
}Roto; /p>
}/*Finalizar cambio externo*/
}
Ding Wei no válido (no válido)
p>
{ int a = 3;
gotoxy(T 1, a); cprintf(" nombre: "); cprintf("sexo:");
gotoxy(T 1, a 2); cprintf(" id: ");
gotoxy(T 1, a 3); " CD: ");
gotoxy(T 1, a 4); cprintf(" ag: ");
gotoxy(T 1, a 5); :");
gotoxy(T 1, a 6); cprintf(" DP: ");
gotoxy(T 1, a 7); cprintf(" zw:"
gotoxi(T 1, a 8); cprintf (" ZC: ");
gotoxi(T 1, a 9);
gotoxy(T 1,a 10);cprintf("HP:");
gotoxy(T 1,a 11);cprintf("MB:"); p>
gotoxy(T 1,a 11);cprintf("MB:");
p>
gotoxy(T 1, a 13); cprintf(" lista de pago de: "
gotoxi(T 1, a 14); cprintf(" JB: "); gotoxi(T 10, a 14); cprintf (" pr: "); gotoxy (T 1, a 15); cprintf (" WP: "); gotoxy (T 10, a 15); cprintf(" anuncio: "); gotoxy(T 10, a 16); cprintf(" peso: ");
gotoxy(T 1,a 17);cprintf("ys:");gotoxy (T 10,a 17);cprintf("El:");
gotoxy(T 1,a 18);cprintf("cn:");gotoxy(T 10,a 18);cprintf ("TV:");
gotoxy(T 1,a 19);cprintf("sy:" );
}
Inicio vacío(void ) /*Leer datos básicos*/
{
ARCHIVO * fpint i, j;
Inicio *p, *tail;
if((FP = fopen(" d:\\sal\\zong. dat "," r ")== NULL )
{
printf("No se puede abrir el archivo d:\\sal\\zong.dat");
Salir (-1);
p>}
fscanf(fp, "dd" , ampclst amp;tvst);
fscanf(fp, "d", ampj);
for(I = 0; iltN amp iltj;i)
fscanf(fp, "s", departamento[I]);
if (iltn) for(I = j;iltn;i) dejar[I][0]= '\0';
fsca
nf(fp, "d", ampj);
for(I = 0;iltN ampampiltj;i)
fscanf(fp, "s",zhchs[ I]);
if (iltn)for(I = j;iltn;i)zhchs[I][0]= ' \ 0 ';
fscanf(fp , " d ", ampj
for (I = 0; i ltN amp amp i ltj; i )
fscanf (fp, " s ", zhws[I]);
if (i ltn) para (I = j; i ltn; i )zhws[I][0]= ' \ 0 '
para (I = 0; iltn;i) p>
fscanf(fp, "d", ampzh HSP[I]);
for(I = 0;iltn;i)
fscanf(fp, " d ", ampzhwsp[I]);
if((p = malloc(sizeof(departy)))= = NULL)
{ p>
printf(" ¡El pueblo interior no está alquilado!"); exit (-1);
}
read dep(amp; p, FP); /* from file Leer información del departamento*/
headd = p;
headd- gt; izquierda = NULL
headd- gt; derecha = vacío;
headd- gt ; down = NULL
if((p = malloc(sizeof(departy)))= = NULL)
{
printf("El pueblo interior es ¡no alquilado!"); salida (-1);
}
leer dep(amp; p, FP);
tail= p; p>
cola - gt; derecha = nulo
cola - gt; izquierda = cabeza
cola - gt = NULL
cabeza gt; derecha = cola;
Y (!feof(fp))
{
if((p = malloc(sizeof(departy )))= = NULL)
{
printf("¡No hay alquiler en el interior del pueblo!" salida (-1); p>read dep( amp; p, FP);
cola - gt; derecha = p
p->; izquierda = cola
= p;
cola - gt; derecha = nulo
cola - gt; abajo = NULL
}
fclose( FP );
Regresar;
}
Void saveep(void) /*Guardar información del departamento*/
{
ARCHIVO *fpint I;
Inicio *p;
if((FP = fopen("d:\\sal\\zong.dat","w" ) = = NULL)
{
printf("No se puede abrir el archivo d:\\sal\\zong.dat");
Salir (-1) ;
}
>
fprintf(fp, " 10d10d ", clst, tvst);
for(I = 0; iltN amp start[i][0]!= NULLi
fprintf(fp, "d",I);
for(I = 0;iltn;i)
fprintf(fp, "s", departamento[I ]); putchar(' \ n ');
for(I = 0; i ltN amp ampzhchs[i][0]!= NULLi
fprintf(fp, " d "); , I);
for(I = 0; iltn; i )
fprintf(fp, " s ", zhchs[I]);
for(I = 0; i ltN amp ampzhws[i][0]!= NULLi
fprintf(fp, " d ", I
);for(I = 0; iltn;i)
fprintf(fp, "s", zhws[I]); putchar('\n');
for (I = 0;iltn;i)
fprintf(fp, "d",zh HSP[I]); putchar('\n');
for(I = 0; iltn; i)
fprintf(fp, "d", zhwsp[I]); putchar('\n');
for (p = headd; p- >derecha! = NULL p = p- gt; derecha)
{writedep(p, FP);}
fclose(FP);
Regresar;
}
Cambios nulosshuju(void) /*Cambiar información fija como el salario básico*/
{
int I;
char ch
textbackground(verde); color de texto(15); clr SCR();
printf("\ nclean cost: 7d", clst);
printf("\ntv cost: 7d", tvst);
printf("\nhas ¿Qué es necesario cambiar? (s/n):);
scanf("1s ", ampch);
if(ch=='y'||ch=='Y ') p>
p>
{
printf(" \nCosto neto: ");
scanf("d ", ampclst); >printf(" \nCoste de TV: ");
scanf("d", amptvst);
}
Prioridad (abreviatura de prioridad) p>