Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- typedef struct dados{
- int num;
- char local[30];
- char maquina[30];
- int ano;
- char tipo[30];
- }exemplo;
- FILE *fx;
- FILE *fn;
- exemplo fotos;
- int verifica(int numero){
- fx = fopen("fotos.dat","r");
- fread(&fotos,sizeof(fotos),1,fx);
- while (!feof(fx) && fotos.num!=numero){
- fread(&fotos,sizeof(fotos),1,fx);
- }
- fclose(fx);
- if (fotos.num==numero){
- return 0;
- }
- else{
- return 1;
- }
- }
- void inserir(){
- int c=1, n;
- while (c==1){
- printf("---------- Inserir dados ----------\n");
- printf("Numero da foto: ");
- scanf("%d",&n);
- if (verifica(n)==1){
- fotos.num = n;
- printf("Local da foto: ");
- scanf("%s",fotos.local);
- printf("Maquina: ");
- scanf("%s",fotos.maquina);
- printf("Ano da foto: ");
- scanf("%d",&fotos.ano);
- printf("Tipo: ");
- scanf("%s",fotos.tipo);
- fx = fopen("fotos.dat","a+");
- fwrite(&fotos,sizeof(fotos),1,fx);
- printf("Pretende continuar? (S-1/N-0)\nResposta do utilizador:");
- scanf("%d",&c);
- fclose(fx);
- }
- else {
- printf("---------- Ja existe ----------\n");
- printf("Pretende continuar? (S-1/N-0)\nResposta do utilizador:");
- scanf("%d",&c);
- }
- }
- }
- void listaranos(){
- int ano1, ano2, p=0, c=0, j=0;
- printf("Ano 1: ");
- scanf("%d",&ano1);
- printf("Ano 2: ");
- scanf("%d",&ano2);
- printf("----------\n");
- fx = fopen("fotos.dat","r");
- fread(&fotos,sizeof(fotos),1,fx);
- while (!feof(fx)){
- if (fotos.ano >= ano1 && fotos.ano <= ano2){
- printf("Numero: %d\nLocal: %s\nMaquina: %s\nAno: %d\nTipo: %s\n",fotos.num,fotos.local,fotos.maquina,fotos.ano,fotos.tipo);
- printf("----------\n");
- p++;
- }
- fread(&fotos,sizeof(fotos),1,fx);
- }
- printf("---------- Numero de fotos por ano ----------\n");
- if (p>0){
- fseek(fx,0,0);
- fread(&fotos,sizeof(fotos),1,fx);
- for (int i=ano1;i<=ano2;i++){
- j++;
- fseek(fx,0,0);
- fread(&fotos,sizeof(fotos),1,fx);
- while (!feof(fx)){
- if (fotos.ano==i){
- c++;
- }
- fread(&fotos,sizeof(fotos),1,fx);
- }
- printf("Ano %d - %d fotos\n",i,c);
- fseek(fx,j*sizeof(fotos),1);
- fread(&fotos,sizeof(fotos),1,fx);
- c=0;
- }
- }
- else{
- printf("---------- Nao existe fotos entre estes dois anos ----------\n");
- }
- fclose(fx);
- }
- void remover(){
- printf("---------- Funcao indisponivel ----------\n");
- }
- void alterarlo(){
- char local[30], novo[30];
- int c=0;
- printf("Local 1: ");
- scanf("%s",local);
- printf("Local 2: ");
- scanf("%s",novo);
- fx = fopen("fotos.dat","r+");
- fread(&fotos,sizeof(fotos),1,fx);
- while (!feof(fx)){
- if (strcmp(fotos.local,local)==0){
- strcpy(fotos.local,novo);
- fseek(fx,-sizeof(fotos),1);
- fwrite(&fotos,sizeof(fotos),1,fx);
- fseek(fx,sizeof(fotos),1);
- c++;
- }
- fread(&fotos,sizeof(fotos),1,fx);
- }
- if (c==0){
- printf("---------- Local nao encontrado ---------\n");
- }
- fclose(fx);
- }
- void consulta(){
- fx = fopen("fotos.dat","r");
- fread(&fotos,sizeof(fotos),1,fx);
- printf("----------\n");
- while (!feof(fx)){
- printf("Numero: %d\nLocal: %s\nMaquina: %s\nAno: %d\nTipo: %s\n",fotos.num,fotos.local,fotos.maquina,fotos.ano,fotos.tipo);
- fread(&fotos,sizeof(fotos),1,fx);
- printf("----------\n");
- }
- fclose(fx);
- }
- void limpar(){
- fx=fopen("fotos.dat","w");
- printf("---------- Ficheiro limpo ----------\n");
- fclose(fx);
- }
- void importar(){
- char velho[30];
- printf("Nome do ficheiro velho: ");
- scanf("%s",velho);
- while (fopen(velho,"r")==NULL){
- printf("---------- Ficheiro nao encontrado ----------\n");
- printf("Nome do ficheiro velho: ");
- scanf("%s",velho);
- }
- fn = fopen(velho,"r");
- fx = fopen("fotos.dat","a+");
- fread(&fotos,sizeof(fotos),1,fn);
- while (!feof(fn)){
- fwrite(&fotos,sizeof(fotos),1,fx);
- fread(&fotos,sizeof(fotos),1,fn);
- }
- fclose(fn);
- fclose(fx);
- }
- void exportar(){
- char novo[30];
- printf("Nome do novo ficheiro: ");
- scanf("%s",novo);
- while (fopen(novo,"r")!=NULL){
- printf("---------- Ficheiro ja existente ----------\n");
- printf("Nome do novo ficheiro: ");
- scanf("%s",novo);
- }
- fx = fopen("fotos.dat","r");
- fn = fopen(novo,"a+");
- fread(&fotos,sizeof(fotos),1,fx);
- while (!feof(fx)){
- fwrite(&fotos,sizeof(fotos),1,fn);
- fread(&fotos,sizeof(fotos),1,fx);
- }
- fclose(fx);
- fclose(fn);
- }
- void alteracao(){
- int numero, c=0;
- printf("Numero a pesquisar: ");
- scanf("%d",&numero);
- fx = fopen("fotos.dat","r+");
- fread(&fotos,sizeof(fotos),1,fx);
- while (!feof(fx)){
- if (fotos.num==numero){
- printf("---------- Numero encontrado ----------\n");
- printf("Local da foto: ");
- scanf("%s",fotos.local);
- printf("Maquina: ");
- scanf("%s",fotos.maquina);
- printf("Ano da foto: ");
- scanf("%d",&fotos.ano);
- printf("Tipo da foto: ");
- scanf("%s",fotos.tipo);
- fseek(fx,-sizeof(fotos),1);
- fwrite(&fotos,sizeof(fotos),1,fx);
- fseek(fx,sizeof(fotos),1);
- c++;
- }
- fread(&fotos,sizeof(fotos),1,fx);
- }
- if (c==0){
- printf("---------- Numero nao encontrado ----------\n");
- }
- fclose(fx);
- }
- int main(){
- int op;
- if (fopen("fotos.dat","r")==NULL){
- fx = fopen("fotos.dat","w");
- fclose(fx);
- printf("---------- Ficheiro criado ----------\n");
- }
- else{
- printf("---------- Ficheiro ja existente ----------\n");
- }
- do{
- printf("1 - Inserir dados no ficheiro c/ AUTOINCREMENT\n");
- printf("2 - Listar fotos entre dois anos\n");
- printf("3 - Remover dados de uma foto dado o seu numero\n");
- printf("4 - Alterar as fotos de um dado local\n");
- printf("5 - Consulta global\n");
- printf("6 - Limpar ficheiro\n");
- printf("7 - Importar ficheiro\n");
- printf("8 - Exportar ficheiro\n");
- printf("9 - Alterar registo dado um numero\n");
- printf("10 - Sair\n");
- printf("Escolha do utilizador: ");
- scanf("%d",&op);
- switch(op){
- case 1: inserir();
- break;
- case 2: listaranos();
- break;
- case 3: remover();
- break;
- case 4: alterarlo();
- break;
- case 5: consulta();
- break;
- case 6: limpar();
- break;
- case 7: importar();
- break;
- case 8: exportar();
- break;
- case 9: alteracao();
- break;
- }
- }while (op!=10);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement