Advertisement
Guest User

Untitled

a guest
Dec 1st, 2015
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.41 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include <ctype.h>
  5. //No puedo validar nombre del producto porque este puede contener un numero: Whisky 15 años.
  6.  
  7. /*Funcion EsCodigo valida si el codigo del producto tiene minimo 3 caracteres, si los dos primeros son letras y que
  8. si los campos restantes son numeros */
  9. bool EsCodigo(char* valor)
  10. {
  11. int i;
  12. int cant_caracteres = strlen(valor);
  13. if(cant_caracteres<3)
  14. {
  15. return false;
  16. }
  17. for(i=0; i<2; i++)
  18. {
  19. if (!isalpha(valor[i]))
  20. return false;
  21. }
  22. for(i=2; i<cant_caracteres; i++)
  23. {
  24. if(!isdigit(valor[i]))
  25. return false;
  26. }
  27. return true;
  28. }
  29.  
  30. /* La funcion EsNumero valida si el precio del producto contiene letras */
  31. bool EsNumero(char* valor)
  32. {
  33. bool hay_letras = false;
  34.  
  35. int caracteres = strlen(valor);
  36. for(int i = 0; i < caracteres; i++)
  37. {
  38. if(!isdigit(valor[i])) hay_letras = true;
  39. }
  40.  
  41. return !hay_letras;
  42. }
  43.  
  44. /* La funcion EsFecha valida que en la fecha no se introduscan letras y que los dias, mes y año esten dentro del
  45. rango correcto */
  46. bool EsFecha(char* c_dia,char* c_mes,char* c_anio)
  47. {
  48. int dia, mes, anio;
  49. if(!EsNumero (c_dia)|| !EsNumero (c_mes)|| !EsNumero (c_anio))
  50. {
  51. return false;
  52. }
  53. /*La funcion atoi convierte caracter en entero*/
  54. dia=atoi(c_dia);
  55. mes=atoi(c_mes);
  56. anio=atoi(c_anio);
  57. if(!(dia>0&&dia<32))
  58. {
  59. return false;
  60. }
  61. if (!(mes>0&&mes<13))
  62. {
  63. return false;
  64. }
  65. if(!(anio>1900&&anio<2200))
  66. {
  67. return false;
  68. }
  69. return true;
  70. }
  71.  
  72. /*Funcion principal */
  73. int main()
  74. {
  75. /*Declaracion de estructura*/
  76. struct producto
  77. {
  78. char nom_pro[60];
  79. char cod_pro[60];
  80. int pre_pro;
  81. int fec_ela[3];
  82. int fec_ven[3];
  83. };
  84. /*Declaracion de variables*/
  85. producto listado[60]= {0};
  86. char val_opc,val_pre[6],val_fecha_dia[3],val_fecha_mes[3],val_fecha_anio[5], comp[60];
  87. int opc;
  88. int cantidad=0,j;
  89. char resp='S', resp2='S', resp3='S', resp4='S',resp5='S',resp6='S', salir='N';
  90. do
  91. {
  92. printf("*****-MENU-*****\n");
  93. printf("*1.INCLUIR *\n*2.BUSCAR *\n*3.MODIFICAR *\n*4.ELIMINAR *\n*5.SALIR *\n");
  94. printf("****************\n");
  95. printf("TIPEE EL NUMERO DE SU OPCION: \n");
  96. scanf("%s",&val_opc);
  97. /*Llamada a funcion EsNumero*/
  98. if(EsNumero(&val_opc))
  99. {
  100. opc= atoi (&val_opc);
  101. /*Valida que este dentro del rango del menu*/
  102. if((opc>0)&&(opc<6))
  103. {
  104. switch(opc)
  105. {
  106. case 1:
  107. {
  108. do
  109. {
  110. printf("****-INCLUIR-***\n");
  111. bool correcto;
  112. do
  113. {
  114. printf("TIPEE EL CODIGO DEL PRODUCTO:\n");
  115. scanf("%s",&listado[cantidad].cod_pro);
  116. /*Llamada a funcion EsCodigo para verificar el codigo del producto*/
  117. correcto= EsCodigo(listado[cantidad].cod_pro);
  118. if (!correcto)
  119. {
  120. printf("EL CODIGO DEL PRODUCTO NO ES VALIDO, INTENTE DE NUEVO\n");
  121. }
  122. }
  123. while(!correcto);
  124.  
  125. printf("TIPEE EL NOMBRE DEL PRODUCTO:\n");
  126. scanf("%s",&listado[cantidad].nom_pro);
  127. do
  128. {
  129. printf("TIPEE EL PRECIO DEL PRODUCTO:\n");
  130. scanf("%s",&val_pre);
  131. /*Llamada a funcion EsNumero para validar el precio*/
  132. correcto= (EsNumero(val_pre));
  133. if (!correcto)
  134. {
  135. printf("EL PRECIO DEL PRODUCTO NO ES VALIDO, INTENTE DE NUEVO\n");
  136. }
  137. else
  138. {
  139. listado[cantidad].pre_pro=atoi(val_pre);
  140. }
  141. }
  142. while(!correcto);
  143.  
  144. do
  145. {
  146. printf("TIPEE LA FECHA DE ELABORACION DEL PRODUCTO:(DIA MES AÑO)\n");
  147. scanf("%s %s %s",&val_fecha_dia,&val_fecha_mes,&val_fecha_anio);
  148. /*Llamada a funcion EsFecha para validar la fecha*/
  149. correcto=EsFecha(val_fecha_dia,val_fecha_mes,val_fecha_anio);
  150. if(!correcto)
  151. {
  152. printf("LA FECHA NO ES CORRECTA, INTENTA DE NUEVO\n");
  153. }/*Funcion que compara una cadena de caracteres con otra*/
  154. else
  155. {
  156. listado[cantidad].fec_ela[0]=atoi(val_fecha_dia);
  157. listado[cantidad].fec_ela[1]=atoi(val_fecha_mes);
  158. listado[cantidad].fec_ela[2]=atoi(val_fecha_anio);
  159. }
  160. }
  161. while(!correcto);
  162.  
  163.  
  164. do
  165. {
  166. printf("TIPEE LA FECHA DE VENCIMIENTO DEL PRODUCTO:(DIA MES AÑO)\n");
  167. scanf("%s %s %s",&val_fecha_dia,&val_fecha_mes,&val_fecha_anio);
  168. /*Llamada a funcion EsFecha para validar la fecha*/
  169. correcto=EsFecha(val_fecha_dia,val_fecha_mes,val_fecha_anio);
  170. if(!correcto)
  171. {
  172. printf("LA FECHA NO ES CORRECTA, INTENTA DE NUEVO\n");
  173. }/*Funcion que compara una cadena de caracteres con otra*/
  174. else
  175. {
  176. listado[cantidad].fec_ven[0]=atoi(val_fecha_dia);
  177. listado[cantidad].fec_ven[1]=atoi(val_fecha_mes);
  178. listado[cantidad].fec_ven[2]=atoi(val_fecha_anio);
  179. }
  180. }
  181. while(!correcto);
  182. cantidad++;
  183.  
  184. printf("¿DESEA INCLUIR OTRO PRODUCTO?(S/N)\n");
  185. scanf("%s",&resp);
  186. }
  187. while(resp=='S' || resp=='s');
  188. break;
  189. }
  190.  
  191. case 2:
  192. {
  193. /*Validar que por lo menos se haya incluido un producto*/
  194. if(cantidad==0)
  195. {
  196. printf("NO SE A INCLUIDO NINGUN PRODUCTO\n");
  197. }
  198. else
  199. {
  200. printf("**-BUSCAR-**\n");
  201. do
  202. {
  203. printf("INGRESE EL CODIGO DEL PRODUCTO A BUSCAR\n");
  204. scanf("%s",&comp);
  205. bool encontrado=false;
  206. for(j=0; j<cantidad; j++)
  207. {
  208. /*Funcion que compara una cadena de caracteres con otra*/
  209. if(strcmp(comp,listado[j].cod_pro)==0)
  210. {
  211. printf("EL PRODUCTO CON EL CODIGO %s SE ENCUENTRA REGISTRADO\n",listado[j].cod_pro);
  212. printf("NOMBRE DEL PRODUCTO: %s\n",listado[j].nom_pro);
  213. printf("PRECIO DEL PRODUCTO: Bs.F %d\n",listado[j].pre_pro);
  214. printf("FECHA DE ELABORACION: %d-%d-%d\n",listado[j].fec_ela[0],listado[j].fec_ela[1],listado[j].fec_ela[2]);
  215. printf("FECHA DE VENCIMIENTO: %d-%d-%d\n",listado[j].fec_ven[0],listado[j].fec_ven[1],listado[j].fec_ven[2]);
  216. encontrado=true;
  217. }
  218. }
  219. if(!encontrado)
  220. printf("EL PRODUCTO NO SE ENCUENTRA REGISTRADO\n");
  221.  
  222. printf("¿DESEA BUSCAR OTRO PRODUCTO?(S/N)\n");
  223. scanf("%s",&resp2);
  224. }
  225. while(resp2=='S' || resp2=='s');
  226. break;
  227. }
  228. break;
  229. }
  230.  
  231. case 3:
  232. {
  233. /*Validar que por lo menos se haya incluido un producto*/
  234. if(cantidad==0)
  235. {
  236. printf("NO SE A INCLUIDO NINGUN PRODUCTO\n");
  237. }
  238. else
  239. {
  240. do
  241. {
  242. printf("TIPEE EL CODIGO DE PRODUCTO A MODIFICAR:\n");
  243. scanf("%s",&comp);
  244. bool encontrado=false;
  245. for(j=0; j<cantidad; j++)
  246. {
  247. /*Funcion que compara una cadena de caracteres con otra*/
  248. if(strcmp(listado[j].cod_pro,comp)==0)
  249. {
  250. encontrado=true;
  251. bool correcto;
  252. printf("¿DESEA MODIFICAR EL PRODUCTO %s?(S/N)\n",listado[j].cod_pro);
  253. scanf("%s",&resp5);
  254. if(resp5=='S'||resp5=='s')
  255. {
  256.  
  257. do
  258. {
  259. printf("TIPEE EL NUEVO CODIGO DEL PRODUCTO:\n");
  260. scanf("%s",&listado[cantidad].cod_pro);
  261. /*Llamada a funcion EsCodigo para verificar el codigo del producto*/
  262. correcto= EsCodigo(listado[cantidad].cod_pro);
  263. if (!correcto)
  264. {
  265. printf("EL CODIGO DEL PRODUCTO NO ES VALIDO, INTENTE DE NUEVO\n");
  266. }
  267. }
  268. while(!correcto);
  269. printf("TIPEE EL NUEVO NOMBRE DEL PRODUCTO:\n");
  270. scanf("%s",&listado[cantidad].nom_pro);
  271. do
  272. {
  273. printf("TIPEE EL NUEVO PRECIO DEL PRODUCTO:\n");
  274. scanf("%s",&val_pre);
  275. /*Llamada a funcion EsNumero para validar el precio del producto*/
  276. correcto= (EsNumero(val_pre));
  277. if (!correcto)
  278. {
  279. printf("EL PRECIO DEL PRODUCTO NO ES VALIDO, INTENTE DE NUEVO\n");
  280. }
  281. else
  282. {
  283. listado[cantidad].pre_pro=atoi(val_pre);
  284. }
  285. }
  286. while(!correcto);
  287. do
  288. {
  289. printf("TIPEE LA FECHA DE ELABORACION DEL PRODUCTO:(DIA MES AÑO)\n");
  290. scanf("%s %s %s",&val_fecha_dia,&val_fecha_mes,&val_fecha_anio);
  291. /*Llamada a funcion EsFecha para validar la fecha*/
  292. correcto=EsFecha(val_fecha_dia,val_fecha_mes,val_fecha_anio);
  293. if(!correcto)
  294. {
  295. printf("LA FECHA NO ES CORRECTA, INTENTA DE NUEVO\n");
  296. }/*Funcion que compara una cadena de caracteres con otra*/
  297. else
  298. {
  299. listado[cantidad].fec_ela[0]=atoi(val_fecha_dia);
  300. listado[cantidad].fec_ela[1]=atoi(val_fecha_mes);
  301. listado[cantidad].fec_ela[2]=atoi(val_fecha_anio);
  302. }
  303. }
  304. while(!correcto);
  305.  
  306.  
  307. do
  308. {
  309. printf("TIPEE LA FECHA DE VENCIMIENTO DEL PRODUCTO:(DIA MES AÑO)\n");
  310. scanf("%s %s %s",&val_fecha_dia,&val_fecha_mes,&val_fecha_anio);
  311. /*Llamada a funcion EsFecha para validar la fecha*/
  312. correcto=EsFecha(val_fecha_dia,val_fecha_mes,val_fecha_anio);
  313. if(!correcto)
  314. {
  315. printf("LA FECHA NO ES CORRECTA, INTENTA DE NUEVO\n");
  316. }/*Funcion que compara una cadena de caracteres con otra*/
  317. else
  318. {
  319. listado[cantidad].fec_ven[0]=atoi(val_fecha_dia);
  320. listado[cantidad].fec_ven[1]=atoi(val_fecha_mes);
  321. listado[cantidad].fec_ven[2]=atoi(val_fecha_anio);
  322. }
  323. }
  324. while(!correcto);
  325. cantidad++;
  326. printf("***********************\n");
  327. printf("**-PRODUCTO MODIFICADO-**\n");
  328. printf("***********************\n");
  329. }
  330. else
  331. printf("PRODUCTO NO MODIFICADO\n");
  332. }
  333.  
  334. }
  335. if(!encontrado)
  336. printf("EL PRODUCTO NO SE ENCUENTRA REGISTRADO\n");
  337.  
  338. printf("¿DESEA MODIFICAR OTRO PRODUCTO?(S/N)\n");
  339. scanf("%s",&resp4);
  340. }
  341. while(resp4=='S' || resp4=='s');
  342. break;
  343. }
  344. break;
  345. }
  346.  
  347. case 4:
  348. {
  349. /*Validar que por lo menos se haya incluido un producto*/
  350. if(cantidad==0)
  351. {
  352. printf("NO SE A INCLUIDO NINGUN PRODUCTO\n");
  353. }
  354. else
  355. {
  356. printf("**-ELIMINAR-**\n");
  357. do
  358. {
  359. printf("TIPEE EL CODIGO DE PRODUCTO A ELIMINAR:\n");
  360. scanf("%s",&comp);
  361. bool encontrado=false;
  362. for(j=0; j<cantidad; j++)
  363. {
  364. /*Funcion que compara una cadena de caracteres con otra*/
  365. if(strcmp(listado[j].cod_pro,comp)==0)
  366. {
  367. encontrado=true;
  368. printf("¿DESEA ELIMINAR EL PRODUCTO %s?(S/N)\n",listado[j].cod_pro);
  369. scanf("%s",&resp6);
  370. if(resp6=='S'||resp6=='s')
  371. {
  372. memset(&listado[j], 0, sizeof(producto));
  373. printf("***********************\n");
  374. printf("**-PRODUCTO ELIMINADO-**\n");
  375. printf("***********************\n");
  376. }
  377. else
  378. printf("EL PRODUCTO NO SE HA ELIMINADO\n");
  379. }
  380. }
  381. if(!encontrado)
  382. printf("EL PRODUCTO NO SE ENCUENTRA REGISTRADO\n");
  383.  
  384. printf("¿DESEA ELIMINAR ALGUN PRODUCTO?(S/N)\n");
  385. scanf("%s",&resp3);
  386. }
  387. while(resp3=='S' || resp3=='s');
  388. break;
  389. }
  390. break;
  391. }
  392. case 5:
  393. {
  394. printf("¿REALMENTE DESEA SALIR?(S/N)\n");
  395. scanf("%s",&salir);
  396. break;
  397. }
  398. default:
  399. printf("ESCOGE UNA OPCION CORRECTA\n");
  400. break;
  401. }
  402. }
  403. else
  404. printf("NO ES UN NUMERO DE OPCION CORRECTA, INTENTE DE NUEVO\n");
  405. }
  406. else
  407. printf("TIPEASTE UN CARACTER EN LA OPCION, INTENTE DE NUEVO\n");
  408. }
  409. while(salir=='N' || salir=='n');
  410. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement