private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //verifica que los campos obligatorios no estén vacíos
                if (textBox1.Text != "" && textBox2.Text != "" && textBox7.Text != "" && textBox8.Text != "" &&
                    textBox4.Text != "")
                {
                    // crea un objeto usuario usando el constructor
                    usuario_gral nuevo = new usuario_gral(textBox1.Text, textBox3.Text, int.Parse(textBox2.Text),
                                                          Convert.ToInt64(textBox4.Text), textBox6.Text, textBox5.Text, textBox7.Text, textBox8.Text);

                    //abre la base de datos
                    Basededatos bd = Archivo.Open();

                    //esta variable es para controlar que no exista el usuario
                    bool disponible = true;

                    //se busca coincidencias de usuarios en la lista de usuarios guardada
                    foreach (var item in bd.usuarios)
                    {
                        if (item.usuario == textBox7.Text)
                        {
                            disponible = false;
                        }
                    }

                    //si no existe el usuario, se añade a la base de datos
                    if (disponible == true)
                    {
                        bd.usuarios.Add(nuevo);
                        bd.Save();
                        this.Close();
                    }
                    //si ya existe el usuario, se solicita cambiar el mismo
                    else
                    {
                        MessageBox.Show("Nombre de Usuario no disponible. Seleccione otro.", "¡Advertencia!", MessageBoxButtons.OK,
                                        MessageBoxIcon.Exclamation);
                    }
                }
                //si falta rellenar campos obligatorios, se muestra mensaje de error
                else
                {
                    MessageBox.Show("Los campos marcados con * son obligatorios.", "¡Error!",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch
            //si se ingresó un telefono o dni de formato incorrecto, se muestra mensaje de error
            {
                MessageBox.Show("Ha ingresado un DNI y/o Teléfono incorrectos", "¡Error!",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //elimina el usuario seleccionado
            usuario_gral nuevo = comboBox1.SelectedItem as usuario_gral;

            bd.usuarios.Remove(nuevo);

            //actualiza los items del combobox
            comboBox1.Items.Clear();
            foreach (var item in bd.usuarios)
            {
                comboBox1.Items.Add(item);
            }
            comboBox1.Text = "";

            //guarda el archivo
            bd.Save();
        }
        public Modif_datos_pers()
        {
            InitializeComponent();

            //abre la base de datos y carga el usuario activo
            Basededatos  bd = Archivo.Open();
            usuario_gral us = bd.usuario_activo;

            //muestra en pantalla los datos del usuario activo
            textBox1.Text = us.nombre;
            textBox5.Text = us.nacimiento;
            textBox8.Text = us.email;
            textBox6.Text = us.usuario;
            textBox2.Text = (us.dni).ToString();
            textBox3.Text = us.domicilio;
            textBox4.Text = (us.telefono).ToString();
            textBox7.Text = us.contraseña;

            //cierra la base de datos
            bd.Save();
        }
        //muestro usuario y contraseña del usuario seleccionado
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            usuario_gral nuevo = comboBox1.SelectedItem as usuario_gral;

            textBox1.Text = "Usuario: " + nuevo.usuario + "\r\nContraseña: " + nuevo.contraseña;
        }
        //crea el viaje y lo guarda en la lista de viajes comprados
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                //variable que indica el tipo de pasaje seleccionado
                string tipo;

                //variable que indica que se ingresaron todos los campos requeridos
                bool correcto = false;

                //controla que se hayan completado los campos correspondientes de acuerdo al tipo de pasaje
                if (comboBox2.Text != "" && comboBox3.Text != "" && comboBox1.Text != "" && comboBox5.Text != "")
                {
                    if (comboBox5.Text == "General")
                    {
                        correcto = true;
                    }
                    else
                    {
                        if (comboBox5.Text == "Estudiante")
                        {
                            if (textBox4.Text != "" && textBox5.Text != "" && textBox6.Text != "")
                            {
                                correcto = true;
                            }
                        }
                        else
                        {
                            if (textBox3.Text != "")
                            {
                                correcto = true;
                            }
                        }
                    }

                    //si los campos están completos, crea el viaje para el usuario
                    if (correcto == true)
                    {
                        ciudad o       = comboBox2.SelectedItem as ciudad;
                        ciudad d       = comboBox3.SelectedItem as ciudad;
                        viaje  elegido = comboBox1.SelectedItem as viaje;
                        tipo = comboBox5.Text;

                        //crea objeto viaje recogiendo datos del viaje elegido
                        viaje nuevo = new viaje(o, d, elegido.dev_fecha(), elegido.dev_hora(), elegido.recibir_empresa(),
                                                elegido.recibir_colectivo(), elegido.dev_categoria());

                        //guarda categoria del viaje comprado
                        nuevo.establecer_categoria(CATEGORIAtextBox2.Text);

                        //guarda precio del viaje comprado
                        nuevo.asignar_precio(elegido.devolver_precio());

                        //guarda el tipo de pasaje elegido
                        if (comboBox5.Text == "Estudiante")
                        {
                            nuevo.asignar_tipo(estudiante.devolver_datos());
                        }
                        else
                        {
                            if (comboBox5.Text == "Jubilado")
                            {
                                nuevo.asignar_tipo(jubilado.devolver_datos());
                            }
                            else
                            {
                                nuevo.asignar_tipo(general.devolver_datos());
                            }
                        }

                        string tipo_pasaje = comboBox5.Text;

                        double precio_descontado;

                        //recibe el precio del viaje
                        double precio_viaje = nuevo.devolver_precio();

                        //realiza el descuento correspondiente dependiendo del tipo de pasaje
                        if (tipo_pasaje == "General")
                        {
                            precio_descontado = general.aplicar_descuento(precio_viaje);
                        }
                        else
                        {
                            if (tipo_pasaje == "Estudiante")
                            {
                                precio_descontado = estudiante.aplicar_descuento(precio_viaje);
                            }
                            else
                            {
                                precio_descontado = jubilado.aplicar_descuento(precio_viaje);
                            }
                        }
                        nuevo.modificar_precio(precio_descontado);


                        //guarda el asiento elegido en el viaje del usuario, y lo quita de la lista de disponibles
                        int asiento_elegido = int.Parse(comboBox4.Text);
                        elegido.selec_asiento(asiento_elegido);
                        nuevo.cargar_asiento(asiento_elegido);

                        //agrega el viaje a la lista de viajes del usuario activo
                        usuario_gral usuario_activo = bd.usuario_activo;
                        bd.usuario_activo.viajes.Add(nuevo);

                        //guarda y cierra
                        bd.Save();
                        this.Close();
                    }
                    //si se ingresaron datos incorrectos, muestra mensaje de error
                    else
                    {
                        MessageBox.Show("Datos incorrectos", "¡Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            //si se ingresaron datos incorrectos, muestra mensaje de error
            catch
            {
                MessageBox.Show("Datos incorrectos", "¡Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                Basededatos bd;

                //verifica que los campos obligatorios no estén vacíos
                if (textBox1.Text != "" && textBox2.Text != "" && textBox4.Text != "" && textBox6.Text != "" && textBox7.Text != "")
                {
                    //abre el archivo
                    bd = Archivo.Open();

                    //carga usuario activo
                    usuario_gral us = bd.usuario_activo;

                    bool disponible = true;

                    foreach (var item in bd.usuarios)
                    {
                        if (item.usuario == textBox6.Text)
                        {
                            disponible = false;
                        }
                    }

                    if (disponible == true)
                    {
                        //guarda los cambios en los datos del usuario activo
                        us.nombre     = textBox1.Text;
                        us.nacimiento = textBox5.Text;
                        us.email      = textBox8.Text;
                        us.usuario    = textBox6.Text;
                        us.dni        = int.Parse(textBox2.Text);
                        us.domicilio  = textBox3.Text;
                        us.telefono   = Convert.ToInt64(textBox4.Text);
                        us.contraseña = textBox7.Text;

                        //guarda la base de datos y cierra la ventana
                        bd.Save();
                        this.Close();
                    }
                    else
                    {
                        MessageBox.Show("Ya existe el usuario ingresado.", "¡Error!",
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                        textBox6.Text = us.usuario;
                    }
                }

                //si falta completar campos obligatorios, muestra mensaje de error
                else
                {
                    MessageBox.Show("Los campados marcados con * son obligatorios.", "¡Error!",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            //si ingresa un DNI o teléfono de formato incorrecto, muestra un mensaje de error
            catch
            {
                MessageBox.Show("Ha ingresado un DNI y/o Teléfono incorrectos", "¡Error!",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }