Boletim Escolar Com Manipulação de Arquivo
Publicado por José Mario Silva Rosa Filho 20/11/2008
[ Hits: 16.133 ]
Esse programa tem algumas funções, e com comandos simples para gravação em arquivos!
É um pequeno projeto de quando começei a programar em C, com algumas melhorias!
Obs: deixei como fiz!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 20 // Essa variável faz o controle do máximo de matérias que vc teve;
#define NOTAS 4 // Essa variável registra quantas notas vc teve no ano, por exemplo a cada bimestre teve 1 entao no ano seriam 4 bimestres, 4x1=4
#define TAM 100
FILE *doc;
int idade,ano,count,i,x/*Varáveis globais para usufruto de toda e qualquer condição*/;
char materias [MAX][TAM];
char col[TAM];
char nome[TAM];
char turma[TAM];
char string[NOTAS][TAM];
float notas[TAM];
void menu(void);
void creditos(void){
system("cls");
printf("+------------------------------------------------------------------------------+");
printf("| Este Boletim foi feito por: |");
printf("| Jose Mario Silva Rosa Filho |");
printf("| |");
printf("| ZeMariosrf@hotmail.com |");
printf("| |");
printf("+------------------------------------------------------------------------------+");
doc = fopen ("Creditos.txt","w+");
fprintf(doc,"+------------------------------------------------------------------------------+\n");
fprintf(doc,"| Este Boletim foi feito por: |\n");
fprintf(doc,"| Jose Mario Silva Rosa Filho |\n");
fprintf(doc,"| |\n");
fprintf(doc,"| ZeMariosrf@hotmail.com |\n");
fprintf(doc,"| |\n");
fprintf(doc,"+------------------------------------------------------------------------------+\n");
fclose(doc);
}
void mats(void){ //ONDE AS MATERIAS SERAO DISPOSTAS E ARMAZENADAS
system("cls");
int y=1,i = 0,a = NOTAS;//onde o numero de materias sera armazenado e comparado no "for" e y ira mostrar os numeros
printf("Informe o numero de materias: ");
scanf("%d",&x);
if(x>MAX){
printf("Erro, so e possivel ter no maximo %d materias!",MAX);
mats();
}
for(count=0;count<x;count++){
fflush(stdin);
printf("Coloque a %d materia: ",count+1);
gets(materias[count]);
while(i<x*NOTAS){ //<<<<<<<<<<fazer a parte de como pegar notas e dai fecho o programa UHUUHUHUHHUHUHUH
fflush(stdin);
printf("Coloque a %d nota: ",y++);
scanf("%f",¬as[i]);
i++;
if(i == a){
a = a + NOTAS; // ESSA Parte é importante no codigo se caso mudar a opçao NOTAS ela gerencia quantas a mais irao entrar;
y = 1;
break;
}
}
}
}
void mostra(void){
printf("\n\n\n\n\n");
printf("As Materias Cadastradas Sao:\n");
for(count=0;count<MAX;count++){
printf("%d=%s\n",count+1,materias[count]);
if(strcmp(materias[count],"") == 0)
break;
}
system("pause");
}
void gera(void){
int a = 0;
if(x<=0){
printf("Erro!!\n");
printf("Voce nao cadastrou materias!\n");
system("pause");
menu();
}
printf("+------------------------------------------------------------------------------+");
printf("|Nome:%73s|",nome);
printf("|Idade:%72d|",idade);
printf("|Colegio:%70s|",col);
printf("|Ano Letivo:%67d|",ano);
printf("|Turma:%72s|",turma);
printf("|------------------------------------------------------------------------------|");
printf("|MATERIA | 1 NOTA | 2 NOTA | 3 NOTA | 4 NOTA | MEDIA |");
printf("|------------------------------------------------------------------------------|");
for(i=0;i<x;i++){
fflush(stdin);
printf("|%-33s",materias[i]);
while(a < NOTAS*x){
printf("| %-2.1f | %-2.1f | %-2.1f | %-2.1f | %-2.1f |",notas[a],notas[a+1],notas[a+2],notas[a+3],(notas[a] + notas[a+1] + notas[a+2] + notas[a+3] )/4);//cada linha dessa deve ter 102 espaços pra ficar igual a linha acima
sprintf(string[i]," | %-2.1f | %-2.1f | %-2.1f | %-2.1f | %-2.1f |",notas[a],notas[a+1],notas[a+2],notas[a+3],(notas[a] + notas[a+1] + notas[a+2] + notas[a+3] )/4);
a+= 4;
break;
}
}
printf("+------------------------------------------------------------------------------+");
doc = fopen ("Boletim.txt","w+");
fprintf(doc,"+--------------------------------------------------------------------------------------------------------------+\n");
fprintf(doc,"|Nome:%73s|\n",nome);
fprintf(doc,"|Idade:%72d|\n",idade);
fprintf(doc,"|Colegio:%70s|\n",col);
fprintf(doc,"|Ano Letivo:%67d|\n",ano);
fprintf(doc,"|Turma:%72s|\n",turma);
fprintf(doc,"|--------------------------------------------------------------------------------------------------------------|\n");
fprintf(doc,"|MATERIA | 1 NOTA | 2 NOTA | 3 NOTA | 4 NOTA | MEDIA |\n");
fprintf(doc,"|--------------------------------------------------------------------------------------------------------------|\n");
for(i=0;i<x;i++){
fflush(stdin);
fprintf(doc,"|%-33s",materias[i]);
fprintf(doc,"%s\n",string[i]);
}
fprintf(doc,"+-------------------------------------------------------------------------------------------------------------+");
fclose(doc);
system("pause");
}
void dados(void){
fflush(stdin);
printf("Coloque seu nome: ");
gets(nome);
printf("Coloque sua idade: ");
scanf("%d",&idade);
printf("Coloque seu ano letivo: ");
scanf("%d",&ano);
fflush(stdin);
printf("Coloque seu colegio: ");
gets(col);
printf("Coloque sua turma: ");
gets(turma);
fflush(stdin);
}
void menu(void){
inicio:
int op;
system("cls");
printf("+---------------------------------------------------------------+\n");
printf("| |\n");
printf("| Menu De Opcoes |\n");
printf("| 1)Cadastrar Materias & Notas |\n");
printf("| 2)Mostra Materias |\n");
printf("| 3)Inserir Seus Dados |\n");
printf("| 4)Gerar Boletim |\n");
printf("| 5)Ver Creditos |\n");
printf("| |\n");
printf("| |\n");
printf("| |\n");
printf("| Escrito Por Jose Mario Silva Rosa Filho. |\n");
printf("| |\n");
printf("| |\n");
printf("+---------------------------------------------------------------+\n");
do{
printf("\n\nEscolha uma das 4 opcoes: ");
scanf("%d",&op);
}
while(op<=0 || op>=6); //fica executando DO se o numero digitado for diferente dos que eu pedi no menu
switch(op){
case 1:
{
mats();
goto inicio;
}
case 2:
{
mostra();
goto inicio;
}
case 3:
{
dados();
goto inicio;
}
case 4:
{
gera();
goto inicio;
}
case 5:
{
creditos();
system ("pause");
break;
}
}
}
int main(){
menu();
return(0);
}
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)
Instalação não está resolvendo as dependencias (2)
Captação de áudio no zorin linux começa a diminuir com o tempo (5)
Alternativas ao Multilogin para gerenciamento de múltiplas contas/prof... (0)









