using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace ayudasolocodigo2
{
class Program
{
static bool salir = false;
static string opcion = null;
static void Main(string[] args)
{
Cargar();
while (!salir)
{
Console.WriteLine(">>>>>>>>>>>>>>>>>>>> MENU PRINCIPAL <<<<<<<<<<<<<<<<<<<<");
Console.WriteLine("nElija opción:n");
Console.WriteLine("[ 1 ] Ingresar alumnos.");
Console.WriteLine("[ 2 ] Buscar alumnos.");
Console.WriteLine("[ 3 ] Ver listado.");
Console.WriteLine("[ 4 ] Borrar alumnos.");
Console.WriteLine("[ 5 ] Guardar.");
Console.WriteLine("[ 6 ] Salir.");
Console.WriteLine();
Console.Write("Opción : [ ]");
Console.CursorLeft = 11;
opcion = Console.ReadLine();
if (opcion == "1")
{
Console.Clear();
Insertar(true);
}
else if (opcion == "2")
{
Console.Clear();
Console.WriteLine(">>>>>>>>>>>>>>>>>>>> MENU DE BUSQUEDA <<<<<<<<<<<<<<<<<<<<");
Console.WriteLine();
Console.Write("Nombre: ");
string nombre = Console.ReadLine();
Buscar(nombre,false);
Console.WriteLine("nPulse Enter para volver al menú...");
Console.ReadLine();
Console.Clear();
}
else if (opcion == "3")
{
Console.Clear();
Console.WriteLine(">>>>>>>>>>>>>>>>>>>> LISTADO DE ALUMNOS <<<<<<<<<<<<<<<<<<<<");
Console.WriteLine();
if (ORDENADOS == null || ORDENADOS.Length==0)
Console.WriteLine("Listado vacio");
else
{
for (int i = 0; i < (ORDENADOS.Length / 3); i++)
{
Console.WriteLine((i + 1) + ". " + ORDENADOS[i, 0] + " .... " + ORDENADOS[i, 1] + " " + ORDENADOS[i, 2]);
}
}
Console.WriteLine();
Console.WriteLine("Pulse Enter para volver al menú...");
Console.ReadLine();
Console.Clear();
}
else if (opcion == "4")
{
Console.Clear();
Console.WriteLine(">>>>>>>>>>>>>>>>>>>> MENU DE BORRADO <<<<<<<<<<<<<<<<<<<<");
Console.WriteLine();
Console.Write("Nombre: ");
string nombre = Console.ReadLine();
Buscar(nombre, true);
Console.WriteLine("nPulse Enter para volver al menú...");
Console.ReadLine();
Console.Clear();
}
else if (opcion == "5")
{
Console.Clear();
Guardarlo();
Console.CursorTop = 14;
Console.WriteLine("Datos guardados");
Console.CursorTop = 0;
}
else if (opcion == "6")
{
Guardarlo();
salir = true;
}
else
{
Console.Clear();
Console.CursorTop = 14;
Console.WriteLine("Tecla no valida...");
Console.CursorTop = 0;
}
}
}
static List
<string> alumnos
= new List
<string>(); static List
<string> carrera
= new List
<string>();
static void Insertar(bool nuevo)
{
if (nuevo)
{
Console.WriteLine(">>>>>>>>>>>>>>>>>>>> MENU INGRESO ALUMNOS <<<<<<<<<<<<<<<<<<<<");
try { Console.WriteLine("nAlumnos en lista: {0}", alumnos.Count); }
catch { Console.WriteLine("nAlumnos en lista: 0"); }
string nombre = "";
string Ncarrera = "";
Console.Write("nInserte alumno: ");
nombre = Console.ReadLine();
if (nombre != "")
{
Console.Write("Inserte carrera: ");
Ncarrera = Console.ReadLine();
}
Console.Clear();
Console.WriteLine(">>>>>>>>>>>>>>>>>>>> MENU INGRESO ALUMNOS <<<<<<<<<<<<<<<<<<<<");
Console.WriteLine("nAlumnos en lista: {0}", alumnos.Count+1);
while (nombre != "")
{
alumnos.Add(nombre);
carrera.Add(Ncarrera);
Console.Write("nInserte alumno: ");
nombre = Console.ReadLine();
if (nombre != "")
{
Console.Write("Inserte carrera: ");
Ncarrera = Console.ReadLine();
}
Console.Clear();
Console.WriteLine(">>>>>>>>>>>>>>>>>>>> MENU INGRESO ALUMNOS <<<<<<<<<<<<<<<<<<<<");
Console.WriteLine("nAlumnos en lista: {0}", alumnos.Count+1);
}
Console.Clear();
}
string[] Ordenados
= new string[alumnos
.Count]; string[] Carrera
= new string[alumnos
.Count];
for (int a = 0; a < alumnos.Count; a++)
{
string temp = alumnos[a];
char[] seps = { ' ' };
string[] cad = temp.Split(seps);
if (cad.Length == 1)
Ordenados[a] = cad[0];
else if (cad.Length == 2)
Ordenados[a] = cad[1] + " " + cad[0];
else if (cad.Length == 3)
Ordenados[a] = cad[1] + " " + cad[2] + " " + cad[0];
else
{
for (int i = 2; i < cad.Length; i++)
Ordenados[a] += cad[i] + " ";
Ordenados[a] += cad[0] + " " + cad[1];
}
}
for (int a = 0; a < alumnos.Count; a++)
Carrera[a] = carrera[a];
Ordenar(Ordenados, Carrera);
}
static string[,] ORDENADOS;
//ordenaremos por el metodo de la burbuja
static void Ordenar(string[] alumn, string[] carr)
{
ORDENADOS
= new string[alumn
.Length,
3];
string[] pos = generadorPos(alumn.Length);
string auxiliar;
string auxiliar2;
string auxiliar3;
int i, numelem = alumn.Length;
bool s = true;
while (s && (--numelem > 0))
{
s = false;
for (i = 1; i <= numelem; i++)
{
if (alumn[i - 1].CompareTo(alumn[i]) > 0)
{
auxiliar = alumn[i - 1];
alumn[i - 1] = alumn[i];
alumn[i] = auxiliar;
auxiliar2 = carr[i - 1];
carr[i - 1] = carr[i];
carr[i] = auxiliar2;
auxiliar3 = pos[i - 1];
pos[i - 1] = pos[i];
pos[i] = auxiliar3;
s = true;
}
}
}
for (int a = 0; a < alumn.Length; a++)
{
ORDENADOS[a, 0] = alumn[a];
ORDENADOS[a, 1] = carr[a];
ORDENADOS[a, 2] = pos[a];
}
}
static string[] generadorPos(int a)
{
string[] pos
= new string[a
];
for (int i = 0; i < a; i++)
{
pos[i] = "[Fue el " + (i+1) + "º en ser ingresado]";
}
return pos;
}
static void Buscar(string nom, bool borrar)
{
List
<string> resultado
= new List
<string>();
if (ORDENADOS == null)
{
Console.WriteLine("Nombre no encontrado");
return;
}
for (int i = 0; i < (ORDENADOS.Length/3); i++)
{
if (nom == ORDENADOS[i, 0])
resultado.Add(ORDENADOS[i, 0] + " .... " + ORDENADOS[i, 1] + " " + ORDENADOS[i, 2]);
else
{
string str1 = ORDENADOS[i, 0];
char[] seps = { ' ' };
string[] cad = str1.Split(seps);
for (int e = 0; e < cad.Length; e++)
{
if (nom == cad[e])
{
resultado.Add(ORDENADOS[i, 0] + " .... " + ORDENADOS[i, 1] + " " + ORDENADOS[i, 2]);
break;
}
}
}
}
if (resultado.Count == 0)
{
Console.WriteLine("Nombre no encontrado");
return;
}
else
{
Console.WriteLine();
int M = 1;
foreach (string n in resultado)
{
Console.WriteLine(M+". "+n);
M++;
}
}
if (borrar)
{
if (resultado.Count == 1)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("n¿Seguro que quiere borrar?: ");
Console.ForegroundColor = ConsoleColor.Gray;
string C = Console.ReadLine();
if (C == "SI" || C == "si" || C == "s" || C == "S" || C == "Si")
{
BORRAR(resultado[0]);
Console.WriteLine("Borrado...");
}
else Console.WriteLine("NO borrado...");
}
else
{
Console.Write("nElija el número del nombre a eliminar : ");
int H = Int32.Parse(Console.ReadLine());
Console.ForegroundColor = ConsoleColor.Red;
Console.Write("n¿Seguro que quiere borrar?: ");
Console.ForegroundColor = ConsoleColor.Gray;
string C = Console.ReadLine();
if (C == "SI" || C == "si" || C == "s" || C == "S" || C == "Si")
{
try
{
BORRAR(resultado[H-1]);
Console.WriteLine("Borrado...");
}
catch
{
Console.WriteLine("NO borrado...");
}
}
else Console.WriteLine("NO borrado...");
}
}
}
static void BORRAR(string nom)
{
char[] seps ={ ' ' };
string[] cad = nom.Split(seps);
string temp = cad[cad.Length - 4];
temp = temp.Replace("º", "");
int num = Int32.Parse(temp);
alumnos.RemoveAt(num -1);
carrera.RemoveAt(num-1);
Insertar(false);
}
static void Guardarlo()
{
Guardar objeto
= new Guardar
(); objeto.guardar(alumnos, carrera);
Stream fs = File.Create("agenda.bin");
BinaryFormatter seriador
= new BinaryFormatter
(); seriador.Serialize(fs, objeto);
fs.Close();
}
static void Cargar()
{
if (File.Exists("agenda.bin"))
{
Stream fs = File.OpenRead("agenda.bin");
BinaryFormatter deseriador
= new BinaryFormatter
(); Guardar nuevoobj;
nuevoobj = (Guardar)deseriador.Deserialize(fs);
fs.Close();
alumnos = nuevoobj.Cargar1();
carrera = nuevoobj.Cargar2();
Insertar(false);
}
}
}
[Serializable]
class Guardar
{
private List<string> alumnos;
private List<string> carrera;
public void guardar(List<string> al, List<string> carr)
{
alumnos = al;
carrera = carr;
}
public List<string> Cargar1()
{
return alumnos;
}
public List<string> Cargar2()
{
return carrera;
}
}
}