Guest User

Untitled

a guest
Mar 28th, 2020
88
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <string.h>
  5. #define MAXNOME 60
  6.  
  7. //definição da estrutura aluno
  8. typedef struct aluno
  9. {
  10.  
  11. char codigo[5];
  12. char nome[MAXNOME];
  13. char cpf[11];
  14. char periodo[6];
  15.  
  16. } aluno;
  17.  
  18. //definição da estrutura disciplina
  19. typedef struct disciplina
  20. {
  21.  
  22. char codigo[4];
  23. char nome[MAXNOME];
  24. int quantiadeCreditos;
  25. char periodo[6];
  26.  
  27. } disciplina;
  28.  
  29. int verificaCPF(char *cpf)
  30. {
  31.  
  32. int j, k, t, digito1 = 0, digito2 = 0;
  33. char numIguais[11], i;
  34.  
  35. if(strlen(cpf) != 11)
  36. return 0;
  37.  
  38. //cpf com todos os digitos iguais é falso
  39. for(i = '0'; i <= '9'; ++i)
  40. {
  41.  
  42. for(j = 0; j < 11; ++j)
  43. {
  44. numIguais[j] = i;
  45. }
  46.  
  47. if(strcmp(cpf, numIguais) == 0)
  48. {
  49. return 0;
  50. }
  51.  
  52. }
  53.  
  54. for(k = 0, t = 10; k < strlen(cpf) - 2; k++, t--)
  55. {
  56. digito1 += (cpf[k] - 48) * t;
  57. }
  58.  
  59. digito1 %= 11;
  60.  
  61. if(digito1 < 2)
  62. {
  63. digito1 = 0;
  64. }
  65.  
  66. else
  67. {
  68. digito1 = 11 - digito1;
  69. }
  70.  
  71. if((cpf[9] - 48) != digito1)
  72. {
  73. return 0;
  74. }
  75.  
  76. else
  77. {
  78.  
  79. for(k = 0, t = 11; k < strlen(cpf) - 1; k++, t--)
  80. {
  81. digito2 += (cpf[k] - 48) * t;
  82. }
  83.  
  84. digito2 %= 11;
  85.  
  86. if(digito2 < 2)
  87. {
  88. digito2 = 0;
  89. }
  90.  
  91. else
  92. {
  93. digito2 = 11 - digito2;
  94. }
  95.  
  96. if((cpf[10] - 48) != digito2)
  97. {
  98. return 0;
  99. }
  100.  
  101. }
  102.  
  103. return 1;
  104. }
  105.  
  106. int isNumeric(char *c)
  107. {
  108.  
  109. for(int i = 0; i < strlen(c); i++)
  110. {
  111.  
  112. if(c[i] < '0' || c[i] > '9')
  113. {
  114. return 0;
  115. }
  116. }
  117.  
  118. return 1;
  119. }
  120.  
  121. void adicionaAluno(aluno *baseAlunos, int *numeroAlunos)
  122. {
  123.  
  124. aluno novoAluno;
  125.  
  126. printf("Digite o nome do aluno: ");
  127. scanf(" %[^\n]", novoAluno.nome);
  128.  
  129. while(1){
  130.  
  131. printf("\nDigite o código do aluno: ");
  132. scanf("%s", novoAluno.codigo);
  133. if(strlen(novoAluno.codigo) != 5)
  134. {
  135. printf("Código inválido\n");
  136. }
  137. else
  138. {
  139. break;
  140. }
  141. }
  142.  
  143. while(1){
  144.  
  145. printf("\nDigite o CPF do aluno: ");
  146. scanf("%s", novoAluno.cpf);
  147. if(verificaCPF(novoAluno.cpf) == 0)
  148. {
  149. printf("CPF inválido\n");
  150. }
  151. else
  152. {
  153. break;
  154. }
  155. }
  156.  
  157. while(1){
  158.  
  159. printf("\nDigite o período do aluno: ");
  160. scanf("%s", novoAluno.periodo);
  161. if(strlen(novoAluno.periodo) != 6)
  162. {
  163. printf("Período precisa ser da forma XXXX.Y\n");
  164. }
  165. else
  166. {
  167. break;
  168. }
  169. }
  170. *numeroAlunos += 1;
  171.  
  172. aluno *novosAlunos = (aluno *)realloc(baseAlunos, *numeroAlunos * sizeof(aluno));
  173.  
  174. if(novosAlunos != NULL)
  175. {
  176. baseAlunos = novosAlunos;
  177. baseAlunos[*numeroAlunos - 1] = novoAluno;
  178. printf("\nNovo aluno adicionado com sucesso!\n\n");
  179. }
  180.  
  181. else
  182. {
  183. printf("\nErro ao adicionar aluno na base de dados\n\n");
  184. }
  185. }
  186.  
  187. void adicionaDisciplina(disciplina *baseDisciplina, int *numeroDisciplinas)
  188. {
  189.  
  190. disciplina novaDisciplina;
  191. printf("Digite o nome da disciplina: ");
  192. scanf(" %[^\n]", novaDisciplina.nome);
  193.  
  194. while(1){
  195.  
  196. printf("\nDigite o código da disciplina: ");
  197. scanf("%s", novaDisciplina.codigo);
  198. if(strlen(novaDisciplina.codigo) != 4)
  199. {
  200. printf("Código inválido\n");
  201. }
  202. else
  203. {
  204. break;
  205. }
  206. }
  207.  
  208. printf("\nDigite a quantidade de créditos da disciplina: ");
  209. scanf("%d", &novaDisciplina.quantiadeCreditos);
  210.  
  211. while(1){
  212.  
  213. printf("\nDigite o período da disciplina: ");
  214. scanf("%s", novaDisciplina.periodo);
  215. if(strlen(novaDisciplina.periodo) != 6)
  216. {
  217. printf("Período precisa ser da forma XXXX.Y\n");
  218. }
  219. else
  220. {
  221. break;
  222. }
  223. }
  224.  
  225. *numeroDisciplinas += 1;
  226.  
  227. disciplina *novasDisciplinas = (disciplina *)realloc(baseDisciplina, *numeroDisciplinas * sizeof(disciplina));
  228.  
  229. if(novasDisciplinas != NULL)
  230. {
  231. baseDisciplina = novasDisciplinas;
  232. baseDisciplina[*numeroDisciplinas - 1] = novaDisciplina;
  233. printf("\nNova disciplina adicionada com sucesso!\n\n");
  234. }
  235.  
  236. else
  237. {
  238. printf("\nErro ao adicionar disciplina na base de dados\n\n");
  239. }
  240. }
  241.  
  242. void printAluno (aluno *a){
  243.  
  244. printf("%s\n%s\n%s\n", a->nome, a->cpf, a->codigo);
  245. }
  246.  
  247. void buscarAluno(aluno *baseAlunos, int numeroAlunos)
  248. {
  249.  
  250. aluno *p = baseAlunos;
  251. int i, opcao;
  252. char cpf[11], nome[60], codigo[5];
  253. printf ("\t\t SELECIONE COMO DESEJA FAZER A BUSCA \n");
  254. printf ("\t\t\t================================\n");
  255. printf ("\t\t\t|\t |\n");
  256. printf("\t\t\t| 1 - CPF |\n");
  257. printf("\t\t\t| 2 - Código |\n");
  258. printf("\t\t\t| 3 - Nome |\n");
  259. printf ("\t\t\t| |\n");
  260. printf ("\t\t\t================================\n");
  261. printf ("\n\n");
  262. printf("\t\t\tPor favor, selecione uma opção: ");
  263. scanf("%d", &opcao);
  264.  
  265. if(opcao == 1){
  266.  
  267. printf ("Digite o CPF do aluno: ");
  268. scanf("%s", codigo);
  269. for (i=0; i < numeroAlunos; i++)
  270. {
  271. if(strcmp(baseAlunos[i].cpf, cpf) == 0)
  272. {
  273. p = &baseAlunos[i];
  274. break;
  275. }
  276. }
  277. if(p != NULL)
  278. {
  279. printAluno(p);
  280. }
  281.  
  282. }
  283.  
  284. if(opcao == 2){
  285.  
  286. printf ("Digite o código do aluno: ");
  287. scanf("%s", codigo);
  288. for (i=0; i < numeroAlunos; i++)
  289. {
  290. if(strcmp(baseAlunos[i].codigo, codigo) == 0)
  291. {
  292. p = &baseAlunos[i];
  293. break;
  294. }
  295. }
  296. if(p != NULL)
  297. {
  298. printAluno(p);
  299. }
  300.  
  301. }
  302.  
  303. if(opcao == 3){
  304.  
  305. printf ("Digite o nome do aluno: ");
  306. scanf("%s", nome);
  307. for (i=0; i < numeroAlunos; i++)
  308. {
  309. if(strcmp(baseAlunos[i].nome, nome) == 0)
  310. {
  311. p = &baseAlunos[i];
  312. break;
  313. }
  314. }
  315. if(p != NULL)
  316. {
  317. printAluno(p);
  318. }
  319. }
  320. return;
  321. }
  322.  
  323. int main()
  324. {
  325.  
  326. setlocale(LC_ALL, "Portuguese");
  327.  
  328. int opcaoMenu = 1, opcaoObjeto = 1, numeroAlunos = 0, numeroDisciplinas = 0;
  329.  
  330. aluno *baseAlunos = NULL;
  331. disciplina *baseDisciplina = NULL;
  332.  
  333. printf("\n\n");
  334.  
  335. do
  336. {
  337. printf ("\t\t SISTEMA DE CONTROLE DE DISCIPLINAS E ALUNOS\n");
  338. printf ("\t\t\t================================\n");
  339. printf ("\t\t\t|\t |\n");
  340. printf("\t\t\t| 1 - Consultar |\n");
  341. printf("\t\t\t| 2 - Adicionar |\n");
  342. printf("\t\t\t| 3 - Remover |\n");
  343. printf("\t\t\t| 0 - Sair |\n");
  344. printf ("\t\t\t| |\n");
  345. printf ("\t\t\t================================\n");
  346. printf ("\n\n");
  347. printf("\t\t\tPor favor, selecione uma opção: ");
  348. scanf("%d", &opcaoMenu);
  349. printf ("\n\n");
  350. // se a opcao nao e invalida
  351. if ((opcaoMenu == 1) || (opcaoMenu == 2) || (opcaoMenu == 3))
  352. {
  353. printf ("\t\t SELECIONE UMA OPÇÃO PARA ADICIONAR OU VOLTAR\n");
  354. printf ("\t\t\t================================\n");
  355. printf ("\t\t\t|\t |\n");
  356. printf("\t\t\t| 1 - Aluno |\n");
  357. printf("\t\t\t| 2 - Disciplina |\n");
  358. printf("\t\t\t| 3 - Voltar |\n");
  359. printf ("\t\t\t| |\n");
  360. printf ("\t\t\t================================\n");
  361. printf ("\n\n");
  362. printf("\t\t\tPor favor, selecione uma opção: ");
  363. scanf("%d", &opcaoObjeto);
  364. printf("\n\n");
  365.  
  366. // se o objeto nao e invalido
  367. if((opcaoObjeto == 1) || (opcaoObjeto == 2))
  368. {
  369.  
  370. // consultar
  371. if(opcaoMenu == 1)
  372. {
  373. buscarAluno(baseAlunos, numeroAlunos);
  374. }
  375.  
  376. // adicionar
  377. else if(opcaoMenu == 2)
  378. {
  379. // aluno
  380. if(opcaoObjeto == 1)
  381. {
  382. adicionaAluno(baseAlunos, &numeroAlunos);
  383. }
  384.  
  385. // disciplina
  386. else
  387. {
  388. adicionaDisciplina(baseDisciplina, &numeroDisciplinas);
  389. }
  390.  
  391. }
  392.  
  393. // remover
  394. else if(opcaoMenu == 3)
  395. {
  396.  
  397. }
  398. }
  399. }
  400. }
  401. while((opcaoMenu == 1) || (opcaoMenu == 2) || (opcaoMenu == 3));
  402.  
  403. printf("Aplicação terminada\n");
  404.  
  405. return 0;
  406. }
RAW Paste Data