Advertisement
Guest User

codigo añadir clientes

a guest
Mar 18th, 2018
445
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.03 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <wchar.h>
  4. #include <locale.h> //librerias necesarias para imprimir caracteres especiales
  5. #define max_clientes 20
  6. #define max_viajes 50
  7.  
  8. int n,i;
  9. char nom_archivo[15];
  10. FILE *archivo;
  11. /************************************** STRUCTS **********************************************/
  12. struct cliente{
  13. char dni[9]; //Habrá un if para comprobar que el DNI introducido es único
  14. char nombre[20];
  15. char apellidos[80];
  16. char direccion[150];
  17. }clientes[max_clientes]; //Asumimos que habra un maximo de 10 clientes
  18.  
  19.  
  20. struct viaje{
  21.  
  22. char identifiicador[20]; //identificador recoge el DNI, una id, diaf
  23. char ciudad[20];
  24. char hotel[15];
  25. char transporte[6];
  26. int numeroNoches[4];
  27. int precioAlojamiento[6];
  28. int precioDesplazamiento[6];
  29. }viajes[50]; //Asumimos que habra un maximo de 50 viajes disponibles
  30.  
  31. /************************************** FUNCIONES VARIAS **********************************************/
  32.  
  33. void ftiempo(){
  34. time_t tiempo = time(0);
  35. struct tm *tlocal = localtime(&tiempo);
  36. char output[128];
  37. strftime(output,128,"%d/%m/%y %H:%M:%S",tlocal);
  38. printf("\t\t\t\t\t\t\t\t\t\t\tHora actual: %s\n",output);
  39. }
  40.  
  41.  
  42. void cliente_n(int n)
  43. {
  44. clientes[n].dni[0]='\0';
  45. clientes[n].nombre[0]='\0';
  46. clientes[n].apellidos[0]='\0';
  47. clientes[n].direccion[0]='\0';
  48. return;
  49. }
  50. void viaje_m(int m)
  51. {
  52. viajes[m].identifiicador[0]='\0';
  53. viajes[m].ciudad[0]='\0';
  54. viajes[m].hotel[0]='\0';
  55. viajes[m].transporte[0]='\0';
  56. viajes[m].numeroNoches[0]='\0';
  57. viajes[m].precioAlojamiento[0]='\0';
  58. viajes[m].precioDesplazamiento[0]='\0';
  59. return;
  60.  
  61. }
  62. /************************************** FUNCION PARA AÑADIR CLIENTES **********************************************/
  63. void aniadirCliente()
  64. {
  65.  
  66. if(clientes[n].dni[0]=='\0'){
  67. printf("\nIntroduce el nombre del archivo: \nNombre por defecto: clientes.txt\n\n");
  68. gets(nom_archivo);
  69. fflush(stdin);
  70. //Cuando abrimos el fichero le tenemos que poner rw para que podamos escribir y leer.
  71. archivo=fopen(nom_archivo,"rw");
  72. if ((archivo = fopen(nom_archivo, "rw")) == NULL) {
  73. fprintf(stderr, "\n\nEl archivo no existe.");
  74. system("cls"); //En windows limpia pantalla
  75. }else
  76. {
  77. int i;
  78. printf("\n\nArchivo cargado correctamente.|\n");
  79. for(i=0; i<max_clientes;i++){
  80. fscanf(archivo,"\n %s %s %s %s",clientes[i].dni,clientes[i].nombre,clientes[i].apellidos,clientes[i].direccion);
  81. }
  82. for(i=0;i<max_clientes;i++)
  83. {
  84. if(clientes[i].dni[0]=='\0')
  85. {
  86. //Crear un nuevo cliente, lo mismo que antes los espacios con _
  87. puts("DNI:");
  88. scanf("%s", &clientes[i].dni);
  89. fprintf(archivo, "%s", clientes[i].dni);
  90.  
  91. puts("Nombre:");
  92. scanf("%s", &clientes[i].nombre);
  93. fprintf(archivo, "%s", &clientes[i].nombre);
  94.  
  95. puts("Apellidos:");
  96. scanf("%s", &clientes[i].apellidos);
  97. fprintf(archivo, "%s", &clientes[i].apellidos);
  98.  
  99. puts("Direccion:");
  100. scanf("%s", &clientes[i].direccion);
  101. fprintf(archivo, "%s", &clientes[i].direccion);
  102. break;
  103. }
  104. }
  105. }
  106.  
  107. }
  108. fclose(archivo);
  109. system("cls");
  110.  
  111. }
  112.  
  113.  
  114. /************************************** FUNCION PARA AÑADIR VIAJES **********************************************/
  115.  
  116. void nuevoViaje(){
  117.  
  118. if(viajes[n].identifiicador[0]=='\0'){
  119. printf("\nIntroduce el nombre del archivo: \nNombre por defecto: clientes.txt\n\n");
  120. gets(nom_archivo);
  121. fflush(stdin);
  122. //Cuando abrimos el fichero le tenemos que poner rw para que podamos escribir y leer.
  123. archivo=fopen(nom_archivo,"rw");
  124. if ((archivo = fopen(nom_archivo, "rw")) == NULL) {
  125. fprintf(stderr, "\n\nEl archivo no existe.");
  126. system("cls"); //En windows limpia pantalla
  127. }else{
  128. int y;
  129. printf("\n\nArchivo cargado correctamente.\n");
  130. for(y=0; y<max_viajes;y++){
  131. fscanf(archivo,"\n %s %s %s %s %s %s %s",viajes[y].identifiicador,viajes[y].ciudad,viajes[y].hotel,viajes[y].transporte,viajes[y].numeroNoches,viajes[y].precioAlojamiento,viajes[y].precioDesplazamiento);
  132. }
  133. for(y=0;y<max_viajes;y++){
  134. if(viajes[y].identifiicador[0]=='\0'){
  135. //Crear un nuevo cliente, lo mismo que antes los espacios con _
  136. puts("Identificador:");
  137. scanf("%s", &viajes[y].identifiicador);
  138. fprintf(archivo, "%s \n", viajes[y].identifiicador);
  139.  
  140. puts("Ciudad:");
  141. scanf("%s", &viajes[y].ciudad);
  142. fprintf(archivo, "%s \n", &viajes[y].ciudad);
  143.  
  144. puts("Hotel:");
  145. scanf("%s", &viajes[y].hotel);
  146. fprintf(archivo, "%s \n", &viajes[y].hotel);
  147.  
  148. puts("Transporte:");
  149. scanf("%s", &viajes[y].transporte);
  150. fprintf(archivo, "%s \n", &viajes[y].transporte);
  151.  
  152. puts("Numero de noches:");
  153. scanf("%s", &viajes[y].numeroNoches);
  154. fprintf(archivo, "%s \n", &viajes[y].numeroNoches);
  155.  
  156. puts("Precio alojamiento:");
  157. scanf("%s", &viajes[y].precioAlojamiento);
  158. fprintf(archivo, "%s \n", &viajes[y].precioAlojamiento);
  159.  
  160. puts("Precio desplazamiento:");
  161. scanf("%s", &viajes[y].precioDesplazamiento);
  162. fprintf(archivo, "%s", &viajes[y].precioDesplazamiento);
  163. system("cls");
  164. break;
  165. }
  166. }
  167. }
  168.  
  169. }
  170. fclose(archivo);
  171.  
  172.  
  173. }
  174. /************************************** FUNCION PARA LISTAR DATOS AGENCIA **********************************************/
  175.  
  176. void listar_datos_agencia(){
  177.  
  178. int i;
  179. printf("\nIntroduce el nombre del archivo: \nNombre por defecto: clientes.txt\n\n");
  180. fflush(stdin);
  181. gets(nom_archivo);
  182. //Cuando abrimos el fichero le tenemos que poner rw para que podamos escribir y leer.
  183. archivo=fopen(nom_archivo,"rw");
  184. if ((archivo = fopen(nom_archivo, "rw")) == NULL) {
  185. fprintf(stderr, "\n\nEl archivo no existe.");
  186. }else{
  187.  
  188. printf("\n\nArchivo cargado correctamente.");
  189. printf("\n/******* AGENCIA DE VIAJES *******/\n");
  190. for(i=0;i<=max_clientes;i++){
  191. if(clientes[i].dni[0]!='\0'){
  192. printf("----------------------------------------------\n");
  193. printf("Cliente %s\n",clientes[i].dni);
  194. printf("----------------------------------------------\n");
  195. printf("Nombre: %s %s\n", clientes[i].nombre, clientes[i].apellidos);
  196. printf("Direccion: %s\n", clientes[i].direccion);
  197. printf("\n");
  198. printf("Viaje: %s\n", viajes[i].identifiicador);
  199. printf("Lugar: %s\n", viajes[i].ciudad);
  200. printf("Hotel: %s\n", viajes[i].hotel);
  201. printf("Nº noches: %s\n", viajes[i].numeroNoches);
  202. printf("Precio alojamiento: %s\n", viajes[i].precioAlojamiento);
  203. printf("Medio transporte: %s\n", viajes[i].transporte);
  204. printf("Precio transporte: %s\n", viajes[i].precioDesplazamiento);
  205. }
  206. }
  207. }
  208. }
  209. /************************************** FUNCION PARA CARGAR ARCHIVO **********************************************/
  210. void cargarArchivo(){
  211.  
  212. if(clientes[n].dni[0]=='\0')
  213. {
  214. printf("\nIntroduce el nombre del archivo: \nNombre por defecto: clientes.txt\n\n");
  215. fflush(stdin);
  216. gets(nom_archivo);
  217. //Cuando abrimos el fichero le tenemos que poner rw para que podamos escribir y leer.
  218. archivo=fopen(nom_archivo,"rw");
  219. if ((archivo = fopen(nom_archivo, "rw")) == NULL) {
  220. fprintf(stderr, "\n\nEl archivo no existe.");
  221. }else{
  222. int i;
  223. printf("\n\nArchivo cargado correctamente.");
  224. for(i=0; i<max_clientes;i++){
  225. //Los datos teneis que ponerlos con _ porque no coge los espacios. Ej: Pelegrin_Castillo
  226. fscanf(archivo,"\n %s %s %s %s",clientes[i].dni,clientes[i].nombre,clientes[i].apellidos,clientes[i].direccion);
  227. }
  228. }
  229. }
  230.  
  231.  
  232. fclose(archivo);
  233. }
  234. /************************************** FUNCION PARA GUARDAR ARCHIVO **********************************************/
  235.  
  236. void guardarArchivo(){
  237. printf("\nIntroduzca el nombre del fichero.\n\t");
  238. fflush(stdin);
  239. gets(nom_archivo);
  240. archivo=fopen(nom_archivo,"wb");
  241. fwrite(clientes,sizeof(clientes),1,archivo);
  242. //fwrite(viajes,sizeof(viajes),1,archivo);
  243. fclose(archivo);
  244. system("cls");
  245.  
  246.  
  247. }
  248.  
  249. void listardatos(){
  250. int i;
  251. int i_max=20;
  252. printf("\nIntroduce el nombre del archivo: \nNombre por defecto: clientes.txt\n\n");
  253. gets(nom_archivo);
  254. fflush(stdin);
  255. system("cls");
  256. printf("\nLISTADO DE DATOS DE LA AGENCIA\n\t");
  257. gets(nom_archivo);
  258. for(i=0; i++; i=i_max){
  259.  
  260. archivo=fopen(nom_archivo,"r");
  261. fread(clientes[i].dni, strlen(i)+1, 1, archivo);
  262. printf("%s\n", clientes[i].dni);
  263. }
  264. fclose(archivo);
  265.  
  266.  
  267. }
  268.  
  269. void eliminarCliente(){
  270.  
  271. if(clientes[n].dni[0]=='\0')
  272. {
  273. printf("\nIntroduce el nombre del archivo: \nNombre por defecto: clientes.txt\n\n");
  274. fflush(stdin);
  275. gets(nom_archivo);
  276. //Cuando abrimos el fichero le tenemos que poner rw para que podamos escribir y leer.
  277. archivo=fopen(nom_archivo,"rw");
  278. if ((archivo = fopen(nom_archivo, "rw")) == NULL) {
  279. fprintf(stderr, "\n\nEl archivo no existe.");
  280. }else{
  281. int i, y;
  282. char delcliente;
  283. for(i=0; i<max_clientes;i++){
  284. fscanf(archivo,"\n %s %s %s %s",clientes[i].dni,clientes[i].nombre,clientes[i].apellidos,clientes[i].direccion);
  285. }
  286. printf("Introduce el dni del cliente que deseas eliminar");
  287. scanf("%s", &delcliente);
  288. if(delcliente==clientes[i].dni){
  289.  
  290. printf("Cliente Eliminado");
  291. //How to delete all of the client
  292. }
  293. else{
  294. printf("El dni introducido no coincide");
  295. }
  296.  
  297.  
  298.  
  299.  
  300. }
  301. }
  302.  
  303.  
  304. }
  305.  
  306. int main()
  307. {
  308. setlocale(LC_ALL, ""); //De esta manera podremos mostrar por consola caracteres especiales
  309.  
  310. for(n=0;n<max_clientes;n++){
  311. cliente_n(n);
  312. }
  313. char select;
  314.  
  315.  
  316. do{
  317. ftiempo();
  318. printf("\n\t*************************************************\n\t*\t\t MENU\t\t\t*\n\t*************************************************\n");
  319. printf("\t* a.-Nuevo cliente\t\t\t\t*\n");
  320. printf("\t* b.-Guardar fichero\t\t\t\t*\n");
  321. printf("\t* c.-Nuevo viaje\t\t\t\t*\n");
  322. printf("\t* d.-Eliminar viaje\t\t\t\t*\n");
  323. printf("\t* e.-Eliminar cliente\t\t\t\t*\n");
  324. printf("\t* f.-Cargar fichero\t\t\t\t*\n");
  325. printf("\t* g.-Listar datos\t\t\t\t*\n");
  326. printf("\t* h.-Cerrar programa\t\t\t\t*\n");
  327.  
  328.  
  329. printf("\t*************************************************");
  330. printf("\n\tIntroduce la opción que desea ejecutar: ");
  331. scanf("%c", &select);
  332. fflush(stdin);
  333. system("cls");
  334.  
  335. switch (select)
  336. {
  337. case 'a':
  338. aniadirCliente();
  339. break;
  340. case 'b':
  341. guardarArchivo();
  342. break;
  343. case 'c':
  344. nuevoViaje();
  345. break;
  346. case 'd':
  347. eliminarCliente();
  348. break;
  349. case 'e':
  350. printf("\nELIMINAR VIAJE ");
  351. break;
  352. case 'f':
  353. cargarArchivo();
  354. break;
  355. case 'g':
  356. listar_datos_agencia();
  357. break;
  358. case 'h':
  359. break;
  360. /*default:
  361. printf("Caracter introducido invalido, introduce uno de estos caracteres entre la a y la h.\n\n");
  362. break;*/
  363. }
  364.  
  365. }
  366. while (select != 'h');
  367. printf("\n\nHas cerrado el programa correctamente\n\n");
  368.  
  369. fflush(stdin);
  370. return 0;
  371. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement