argentinapb

Untitled

Jun 24th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.71 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct data{
  5. int dia;
  6. int mes;
  7. int ano;
  8. };
  9.  
  10. typedef struct data data;
  11.  
  12. struct endereco{
  13. char rua[100];
  14. char cidade[30];
  15. char estado[30];
  16. int numero;
  17. };
  18.  
  19. typedef struct endereco endereco;
  20.  
  21. struct cliente{
  22. int cpf;
  23. int telefone;
  24. char nome[100];
  25. endereco end;
  26. data d;
  27. struct cliente *ant;
  28. struct cliente *prox;
  29. };
  30.  
  31. typedef struct cliente cliente;
  32.  
  33. struct produto{
  34. int codigo;
  35. char descricao[100];
  36. int quant_est;
  37. double preco_und;
  38. struct produto *ant;
  39. struct produto *prox;
  40. };
  41.  
  42. typedef struct produto produto;
  43.  
  44. struct venda {
  45. int qtd_compra;
  46. int c;
  47. int co;
  48. struct venda *ant;
  49. struct venda *prox;
  50. };
  51.  
  52. typedef struct venda venda;
  53.  
  54. cliente *inicializar_cliente(int x){
  55. cliente *novo = (cliente *) malloc(sizeof(cliente));
  56. novo->cpf = x;
  57.  
  58. printf("digite o nome do cliente: ");
  59. fgets(novo->nome, sizeof novo->nome, stdin);
  60.  
  61. printf("digite o telefone do cliente: ");
  62. scanf("%d", &novo->telefone);
  63.  
  64. printf("digite a data de aniversario do cliente dd/mm/aaaa: ");
  65. scanf("%d/%d/%d", &novo->d.dia, &novo->d.mes, &novo->d.ano);
  66.  
  67. printf("digitar o estado do cliente: ");
  68. fgets(novo->end.estado, sizeof novo->end.estado, stdin);
  69.  
  70. printf("digitar a cidade do cliente: ");
  71. fgets(novo->end.cidade, sizeof novo->end.estado, stdin);
  72.  
  73. printf("digitar a rua do cliente: ");
  74. fgets(novo->end.rua, sizeof novo->end.estado, stdin);
  75.  
  76. printf("digitar o numero do cliente: ");
  77. scanf("%d", &novo->end.numero);
  78.  
  79. novo->prox = NULL;
  80. novo->ant = NULL;
  81. return novo;
  82. }
  83.  
  84. produto *inicializar_produto(int x){
  85. produto *novo =(produto*) malloc(sizeof(produto));
  86. novo->codigo = x;
  87.  
  88. printf("digite a descricao do produto: ");
  89. fgets(novo->descricao, sizeof novo->descricao, stdin);
  90.  
  91. printf("digite a quantidade de estoque: ");
  92. scanf("%d", &novo->quant_est);
  93.  
  94. printf("digite o preco da unidade: ");
  95. scanf("%lf", &novo->preco_und);
  96.  
  97. novo->prox = NULL;
  98. novo->ant = NULL;
  99. return novo;
  100. }
  101.  
  102. void inclusao_cliente(cliente *lista, int cpf){
  103. int z = 0;
  104. if(lista->prox == NULL){
  105. cliente *novo = inicializar_cliente(cpf);
  106. lista->prox = novo;
  107. novo->ant = lista;
  108. }
  109. else {
  110. cliente *aux = lista;
  111.  
  112. while(aux->prox != NULL){
  113. if(aux->cpf == cpf){
  114. z = 1;
  115. }
  116. aux = aux->prox;
  117.  
  118. }
  119. if(z == 0){
  120. cliente *novo = inicializar_cliente(cpf);
  121. aux->prox = novo;
  122. novo->ant = aux;
  123. }
  124. }
  125. return;
  126.  
  127. }
  128.  
  129.  
  130.  
  131. void alteracao_cliente(cliente *lista, int cpf){
  132. int z = 0;
  133. cliente *aux= lista;
  134. while(aux->prox != NULL){
  135. if(aux->cpf == cpf){
  136. inicializar_cliente(cpf);
  137. z = 1;
  138. }
  139. aux = aux->prox;
  140.  
  141. }
  142. if(z == 0)
  143. printf("cliente nao encontrado\n");
  144.  
  145. return;
  146. }
  147.  
  148. void consulta_cliente(cliente *lista, int cpf){
  149. int z = 0;
  150. cliente *aux= lista;
  151. while(aux->prox != NULL){
  152. if(aux->cpf == cpf){
  153. printf("cpf: %d\n", aux->cpf);
  154. printf("nome: %s\n", aux->nome);
  155. printf("telefone: %d\n", aux->telefone);
  156. printf("estado: %s\n", aux->end.estado);
  157. printf("cidade: %s\n", aux->end.cidade);
  158. printf("rua: %s\n", aux->end.rua);
  159. printf("numero: %d\n", aux->end.numero);
  160. z = 1;
  161. }
  162. aux = aux->prox;
  163.  
  164. }
  165. if(z == 0)
  166. printf("cliente nao encontrado\n");
  167. return;
  168. }
  169.  
  170.  
  171. void deletar_cliente(cliente *lista, venda *lista1, int cpf){
  172. int x = 0;
  173. venda *aux = lista1;
  174. while(aux->prox != NULL){
  175. if(aux->c == cpf){
  176. x = 1;
  177. }
  178. aux = aux->prox;
  179. }
  180. if(x == 0){
  181. cliente *aux1 = lista;
  182. cliente *aux2 = lista->prox;
  183. while(aux2 != NULL){
  184. if(aux2->cpf == cpf){
  185. aux2 = aux2->prox;
  186. aux1->prox = aux2;
  187. aux2->ant = aux1;
  188. }
  189. aux1 = aux1->prox;
  190. aux2 = aux2->prox;
  191. }
  192. }
  193. else{
  194. printf("cliente cadastrado em venda\n");
  195. }
  196.  
  197. return;
  198. }
  199.  
  200. void inclusao_produto(produto *lista, int codigo){
  201. int z = 0;
  202. if(lista->prox == NULL){
  203. produto *novo = inicializar_produto(codigo);
  204. lista->prox = novo;
  205. novo->ant = lista;
  206. }
  207. else {
  208. produto *aux = lista;
  209.  
  210. while(aux->prox != NULL){
  211. if(aux->codigo == codigo){
  212. z = 1;
  213. }
  214. aux = aux->prox;
  215. }
  216. if(z == 0){
  217. produto *novo = inicializar_produto(codigo);
  218. aux->prox = novo;
  219. novo->ant = aux;
  220. }
  221. }
  222. return;
  223. }
  224.  
  225. void alteracao_produto(produto *lista, int codigo){
  226. int z = 0;
  227. produto *aux= lista;
  228. while(aux->prox != NULL){
  229. if(aux->codigo == codigo){
  230. inicializar_produto(codigo);
  231. z = 1;
  232. }
  233. aux = aux->prox;
  234.  
  235. }
  236. if(z == 0)
  237. printf("cliente nao encontrado\n");
  238.  
  239. return;
  240. }
  241.  
  242. void consulta_produto(produto *lista, int codigo){
  243. int z = 0;
  244. produto *aux= lista;
  245. while(aux->prox != NULL){
  246. if(aux->codigo == codigo){
  247. printf("codigo: %d\n", aux->codigo);
  248. printf("descricao: %s\n", aux->descricao);
  249. printf("quantidade em estoque: %d\n", aux->quant_est);
  250. printf("preco unitario: %lf\n", aux->preco_und);
  251.  
  252. z = 1;
  253. }
  254. aux = aux->prox;
  255.  
  256. }
  257. if(z == 0)
  258. printf("cliente nao encontrado\n");
  259. return;
  260. }
  261.  
  262. void deletar_produto(produto *lista, int codigo){
  263. int x = 0;
  264. venda *aux = lista;
  265. while(aux->prox != NULL){
  266. if(aux->co == codigo){
  267. x = 1;
  268. }
  269. aux = aux->prox;
  270. }
  271. if(x == 0){
  272. produto *aux1 = lista;
  273. produto *aux2 = lista->prox;
  274. while(aux2 != NULL){
  275. if(aux2->codigo == codigo){
  276. aux2 = aux2->prox;
  277. aux1->prox = aux2;
  278. aux2->ant = aux1;
  279. }
  280. aux1 = aux1->prox;
  281. aux2 = aux2->prox;
  282. }
  283. }
  284. else{
  285. printf("produto cadastrado em venda\n");
  286. }
  287.  
  288. return;
  289. }
  290.  
  291. void inclusao_venda(venda *lista, cliente *lista1, produto *lista2, int codigo, int cpf, int qtd){
  292. produto *aux = lista2;
  293. cliente *aux1 = lista1;
  294. int z = 0, y = 0, x = 0;
  295.  
  296. while(aux->prox != NULL){
  297. if(aux->codigo == codigo){
  298. z = 1;
  299. if(aux->quant_est >= qtd){
  300. x = 1;
  301. }
  302. }
  303. aux = aux->prox;
  304. }
  305.  
  306. while(aux1->prox !=NULL){
  307. if(aux1->cpf == cpf){
  308. y = 1;
  309. }
  310. aux1 = aux1->prox;
  311. }
  312. if(x == 1 && y == 1 && z == 1){
  313. if(lista->prox == NULL){
  314. venda* novo = (venda*) malloc(sizeof(venda));
  315. novo->prox = NULL;
  316. novo->ant = NULL;
  317. novo->qtd_compra = qtd;
  318. novo->c = cpf;
  319. novo->co = codigo;
  320. lista->prox = novo;
  321. novo->ant = lista;
  322. }
  323. else{
  324.  
  325. venda *aux2 = lista;
  326.  
  327. while(aux2->prox != NULL){
  328. aux2 = aux2->prox;
  329. }
  330. venda *novo = (venda*) malloc(sizeof(venda));
  331. novo->prox = NULL;
  332. novo->ant = NULL;
  333. novo->qtd_compra = qtd;
  334. novo->c = cpf;
  335. novo->co = codigo;
  336. aux2->prox = novo;
  337. novo->ant = aux;
  338. }
  339. }
  340. if(x == 1 && y == 0){
  341. printf("produto nao encontrado\n");
  342. }
  343. else if (x == 1 && y == 1 && z == 0 ){
  344. printf("quantidade de estoque menor\n");
  345. }
  346. else
  347. printf("cliente nao encontrado\n");
  348. return;
  349. }
  350.  
  351. void alteracao_venda(venda *lista, int codigo, int cpf){
  352.  
  353. venda *aux = lista;
  354. while(aux->prox != NULL){
  355. if(aux->c == cpf && aux->co == codigo){
  356. printf("digite o novo cpf: ");
  357. scanf("%d", &aux->c);
  358. printf("digite o novo codigo: ");
  359. scanf("%d", &aux->co);
  360. printf("digite a nova quantidade: ");
  361. scanf("%d", &aux->qtd_compra);
  362. }
  363. aux = aux->prox;
  364. }
  365.  
  366. return;
  367. }
  368.  
  369. void consulta_venda(venda *lista, int codigo, int cpf){
  370. venda *aux = lista;
  371. while(aux->prox != NULL){
  372. if(aux->c == cpf && aux->co == codigo){
  373. printf("o cpf eh: %d\n", aux->c);
  374. printf("o codigo eh: %d\n", aux->co);
  375. printf("a quantidade eh: %d\n", aux->qtd_compra);
  376.  
  377. }
  378. aux = aux->prox;
  379. }
  380. return;
  381. }
  382.  
  383. void deletar_venda(venda *lista, int codigo, int cpf){
  384. int x = 0;
  385. venda *aux1 = lista;
  386. venda *aux2 = lista->prox;
  387. while(aux2 != NULL){
  388. if(aux2->co == codigo && aux2->c == cpf){
  389. aux2 = aux2->prox;
  390. aux1->prox = aux2;
  391. aux2->ant = aux1;
  392. x = 1;
  393. }
  394. aux1 = aux1->prox;
  395. aux2 = aux2->prox;
  396. }
  397. if(x == 0)
  398. printf("venda nao encontrada:\n");
  399. return;
  400.  
  401. }
  402.  
  403. int main (){
  404. int x, y, cp, cod, qtd;
  405. cliente lista;
  406. lista.prox = NULL;
  407. lista.ant = NULL;
  408. produto lista1;
  409. lista1.ant = NULL;
  410. lista1.prox = NULL;
  411. venda lista2;
  412. lista2.ant = NULL;
  413. lista2.prox = NULL;
  414. do{
  415. printf("1.Cliente\n2.Produto\n3.Vendas");
  416. scanf("%d",&x);
  417.  
  418. switch(x){
  419. case 1:
  420.  
  421. printf("1.Adicionar\n2.Alterar\n3.Consultar\n4.Deletar\n");
  422. scanf("%d", &y);
  423. switch(y){
  424. case 1:
  425. printf("digite o cpf do cliente: ");
  426. scanf("%d", &cp);
  427. inclusao_cliente(&lista, cp);
  428. break;
  429. case 2:
  430. printf("digite o cpf do cliente: ");
  431. scanf("%d", &cp);
  432. alteracao_cliente(&lista, cp);
  433. break;
  434. case 3:
  435. printf("digite o cpf do cliente: ");
  436. scanf("%d", &cp);
  437. consulta_cliente(&lista, cp);
  438. break;
  439. case 4:
  440. printf("digite o cpf do cliente: ");
  441. scanf("%d", &cp);
  442. deletar_cliente(&lista, &lista2, cp);
  443. break;
  444. default:
  445. printf("valor invalido, tente novamente\n");
  446.  
  447.  
  448. }
  449. case 2:
  450.  
  451. printf("1.Adicionar\n2.Alterar\n3.Consultar\n4.Deletar\n");
  452. scanf("%d", &y);
  453. switch(y){
  454. case 1:
  455. printf("digite o codigo do produto: ");
  456. scanf("%d", &cod);
  457. inclusao_cliente(&lista1, cod);
  458. break;
  459. case 2:
  460. printf("digite o codigo do produto: ");
  461. scanf("%d", &cod);
  462. alteracao_produto(&lista1, cod);
  463. break;
  464. case 3:
  465. printf("digite o codigo do produto: ");
  466. scanf("%d", &cod);
  467. consulta_produto(&lista1, cod);
  468. break;
  469. case 4:
  470. printf("digite o codigo do produto: ");
  471. scanf("%d", &cod);
  472. deletar_produto(&lista1, cod);
  473. break;
  474. default:
  475. printf("valor invalido, tente novamente\n");
  476.  
  477. case 3:
  478.  
  479. printf("1.Adicionar\n2.Alterar\n3.Consultar\n4.Deletar\n");
  480. scanf("%d", &y);
  481. switch(y){
  482. case 1:
  483. printf("digite o codigo do produto e o cpf do cliente e a quantidade a ser vendida: ");
  484. scanf("%d %d %d", &cod, &cp, &qtd);
  485. inclusao_venda(&lista2, &lista, &lista1, cod, cp, qtd);
  486. break;
  487. case 2:
  488. printf("digite o codigo do produto e o cpf do cliente: ");
  489. scanf("%d %d", &cod, &cp);
  490. alteracao_venda(&lista2, cod, cp);
  491. break;
  492. case 3:
  493. printf("digite o codigo do produto e o cpf do cliente: ");
  494. scanf("%d", &cod, &cp);
  495. consulta_venda(&lista2, cod, cp);
  496. break;
  497. case 4:
  498. printf("digite o codigo do produto e o cpf do cliente: ");
  499. scanf("%d %d", &cod, &cp);
  500. deletar_venda(&lista2, cod, cp);
  501. break;
  502. default:
  503. printf("valor invalido, tente novamente\n");
  504.  
  505. }
  506.  
  507.  
  508.  
  509.  
  510. }
  511. }
  512. }while (x!= 0);
  513. return 0;
  514. }
Advertisement
Add Comment
Please, Sign In to add comment