ayuda en trabajos de clase

Iniciado por ivan rios, 20 Noviembre 2017, 05:05 AM

0 Miembros y 1 Visitante están viendo este tema.

ivan rios

Buen dia, soy estudianrt de ing primer semestre y el docente para trabajo final nos pide hacer lo que esta a continuacion, no necesito que me lo hagan, solo quisiera que me guiaran como ir desarrollando este proyecto, ya que se me dificultad el manejo de archivos, ya que este tema el no lo enseño.
pdt: muchas gracias


Se pide hacer un aplicativo en lenguaje C, tal que administre un programa que permita primero acceso con un modulo de usuarios con
"username" y "password" para cada usuario, registrando el "log" de acceso a todos los usuarios y luego permita manejar un modulo que
permita graficar una función polinómica del tipo f(x).
Requerimientos para todo el aplicativo:
- La función main(), no puede tener mas de quince(15) líneas.
- Se deben utilizar funciones
- No se pueden definir variables globales
MODULO USUARIOS
Al ejecutar la aplicación, deberá aparecer la siguiente pantalla:
Aplicativo   – Graficador   - UTP
Username:   

La primera vez que se ejecute el programa, si el usuario es root debe pedir que registre un "password" y salir del aplicativo
Aplicativo   – Graficador   - UTP
Username:   root
Password:   ********

El password es de un mínimo de cuatro (4) caracteres alfanúmericos. Debe enmascararse con asteriscos "****", debe encriptarse por
desplazamiento y palabra clave., ambos definidos por el programador y previamente guardados en el archivo "seguridad.gra". Este
archivo tiene un registro de dos(2) campos. 1)Valor de desplazamiento. 2) Palabra Clave.
Si al validar el password, este es incorrecto, debe volver a pedir el "username". A la tercera oportunidad de password incorrecto, debe
terminar el aplicativo.
SI el password es correcto, debe presentar el siguiente menú para usuario root
Aplicativo – Graficador – UTP
Menú principal para usuario: root
0. Salir del aplicativo
1. Crear nuevo usuario
2. Borrar usuario
3. Listar accesos por usuario
4. Listar accesos todos los usuarios
5. Imprimir gráfico por referencia
6. Cambiar password del usuario root
7. Cambiar password de un usuario
Para la opción seis(6). "Cambiar password del usuario root", debe pedir el
password anterior y validar si es el correcto.
Si el password es incorrecto, debe informarlo y regresar al menú principal para
usuario: root.
Si el password es el correcto, debe pedir dos veces el nuevo password y validar si
las dos veces entro el mismo. Se debe enmacarar con asteriscos(*) los password, si
no coinciden debe informarlo y regresar al menú principal para usuario: root.
Para la opción siete(7) Cambiar password de un usuario, debe preguntar el
"Username" del usuario al que le desea cambiar el password.
Debe validar que este. Si no esta debe informarlo y regresar al menú principal para usuario: root.
Si existe, debe pedir dos veces el nuevo password y validar si las dos veces entro el mismo. Se debe enmacarar con asteriscos(*) los
password, si no coinciden debe informarlo y regresar al menú principal para usuario: root


Ahora, si al entrar al aplicativo el usuario no es "root", debe validar que el usuario exista.
Si no esta este usuario, debe informarlo y volver a pedir un nuevo "username". A la tercera oportunidad de "username" inexistente,
debe terminar el aplicativo.
Luego debe pedir el "password". Si al validar el password, este es incorrecto, debe volver a pedir el "password". A la tercera
oportunidad de password incorrecto, debe terminar el aplicativo.
Si el usuario existe y el password es correcto, debe presentar el siguiente menú:
Aplicativo – Graficador – UTP
Menú principal para usuario: XXXXXX
0. Salir del aplicativo
1. Crear un nuevo gráfico
2. Borrar un gráfico existente
3. Listar accesos
4. Imprimir gráfico por referencia(si es suyo)
6. Cambiar password del usuario XXXXX
Para la opción seis(6). "Cambiar password del usuario XXX", debe pedir el
password anterior y validar si es el correcto.
Si el password es incorrecto, debe informarlo y regresar al menú principal para
usuario: XXXXX
Si el password es el correcto, debe pedir dos veces el nuevo password y validar
si las dos veces entro el mismo. Se debe enmacarar con asteriscos(*) los
password, si no coinciden debe informarlo y regresar al menú principal para
usuario: XXXXX.
Para la opción 3(Listar accesos) debe ordenarlo por fecha


MODULO DEL GRÁFICADOR
A este modulo del aplicativo no se puede ingresar, si hubo problemas en el modulo de usuarios.
Se pide opere en modo gráfico, con funciones. Tal que lea una función polinómica del tipo f(x).
f(x)= A1Xn+ A2Xn-1+ ...AnX1+ b
Donde: A1, A2...An son los coeficientes y b el termino independiente. Ejemplo: f(x) = 348 X5 – 784 X2 + 6.
Consideraciones:
- En cualquier caso la ecuación, debe leerse como una cadena
de caracteres (Vgr: char *u).
- El usuario entra el rango (dominio) de datos a gráficar y el
incremento(para los puntos).
- Los puntos en la pantalla se mostrarán con una "x" y se unirán
con líneas en modo gráfico.
- Se debe escalar en el eje X y el eje Y
- Los ejes de las coordenadas deben ajustarse solo a los cuadrantes
que se van a utilizar.
- Los coeficientes son enteros.

engel lex

realmente nunca aclaraste tu problema realmente, por favor, explica detalladamente tus dudas, muestra los errores que te dan tus codigos... con eso podemos ayudarte

el otro tema fue borrado está prohibido hacer doble post
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ivan rios

a gracias, la verdad tengo muchas dificultades, pero mi promblema esta al abrir un archivo ya que lo ejecuto la primera vez y guardo la contraseña, pero luego como podria saber que el usuario ya esta registrado y comparar si su clave es la correcta?
no escribo el codigo ya que es demasiado largo con mas 300 -400 lineaas.

calantra

Cita de: ivan rios en 20 Noviembre 2017, 19:50 PM
a gracias, la verdad tengo muchas dificultades, pero mi promblema esta al abrir un archivo ya que lo ejecuto la primera vez y guardo la contraseña, pero luego como podria saber que el usuario ya esta registrado y comparar si su clave es la correcta?
no escribo el codigo ya que es demasiado largo con mas 300 -400 lineaas.

Usa struct para los datos Usario y password. Crea el fichero "seguridad.gra" conteniendo esos datos, lo cascas en binario tal cual. Luego lo cargas haciendo lo opuesto a lo anterior. Para comprobar nombres, recorre la matriz de tipo struct y vas comparando nombre de usuario para identificar si es nuevo y luego password para ver si es correcto.

Un saludo.


ivan rios

hola buen dia, llevo esta parte; me podrias guiar con lo otro, ya lee el usuario root y guarda su contraseña pero no se como compararla la segunda vez. (soy un poco nuevo en programacion)

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <iostream>
#include <string.h>
#include <conio.h>

void menuppal();
int recibeusuario();
int usuarioroot();
int otrousuario();
int funcionroot();
int compruebausuario();
int funcionclave();
int segundavezroot();
///////////////////DEFINICIONES DE VARIABLES A UTILIZAR/////
char usuario[32];
char root[]="root";
int i;
FILE   *archivo;
char clave[8];
/////////////////////FUNCION MAIN//////////////////////////////////////////////////////////
int main()
{menuppal();
return 0;}




void  menuppal(){
   printf ("\t\tAPLICATIVO-GRAFICADOR-UTP\n");
printf("USERNAME:");
recibeusuario();
getch;

}





int recibeusuario(){

   archivo=fopen ("seguridad.gra", "r");
   
   if(archivo) ///////COMPRUEBA SI CONTIENE ALGO EL ARCHIVO
   {
   compruebausuario();
   }
   else
    {funcionroot();}   //////llama a la funcionroot
   
   fclose(archivo);
   }
   
   
   
   int funcionroot(){   ///////SI ES LA PRIMERA VEZ SE EJECUTA ESTA FUNCION///////////
   
   archivo=fopen("seguridad.gra", "w");  /////CREAMOS ARCHIVO Y GUARDAREMOS NOMBRE Y CONTRASEÑA//////
      printf("root");
      fwrite(root,sizeof(char),sizeof(root),archivo);
      fclose(archivo);
      funcionclave();   /////LLAMADO A LA FUNCION CLAVE PARA ENCRITAR//////
      
   }
   
   
   
   compruebausuario(){segundavezroot();
   }
   
   ///////////////////////////////////////////////////////////////////////////////////////
   ////////////////////////////////////////INICIO DE LA FUNCION CLAVE/////////////////
   
   int funcionclave()
   
{

   char clave[8];


    printf("\nPOR FAVOR INGRESE LA CLAVE: ");
    int conta=0;
    int i=0;
    int intent=3;
   
   
   
   
     //Se piden caracteres hasta que se introduca enter
    while(clave!=13)
    {

         //Capturamos carácter
        clave=getch();////cifrado por desplazamiento
       
        //Si es un carácter válido y no se ha sobrepasado el límite de 20 caracteres se imprime un asterisco
        if(clave>32 && i<24)
                {
                  printf("*");
                  i++;
                }
        //Si se pulsa la tecla RETROCESO, se retrocede un carácter, se imprime un espacio para eliminar el asterisco y se vuelve a retroceder para que el siguiente asterisco se coloque a continuación del anterior.
        else if(clave==8 && i>0)
                {
                  printf("%c",8);
                  printf(" ");
                  printf("%c",8);
                  i--; 
                }
                   
    }
   
    clave='\0';
   
   archivo = fopen("seguridad.gra", "a");////abre el archivo en modo de agregar escritura//////
       
   
   
for(i=0;i<24;i++);     /////funcion que escribe la clave en el archivo//////////
{fwrite(clave,sizeof(char),sizeof(clave),archivo);}
fclose(archivo);

system("cls");
menuppal();
}
   



/////////////////FUNCION SEGUNDA VEZ ROOT/////////////////
/////////////////////////////////////////////////////
int segundavezroot(){
char *compruebaroot;
gets(compruebaroot);
printf("%s",compruebaroot);


   
   
   
}


muchas gracias.