コード例 #1
0
ファイル: Program.cs プロジェクト: Xer0-PT/17439_19334_LP2
        static void Main(string[] args)
        {
            int caseCount;
            int age = 0;
            int personId;
            int answer;

            bool loadFiles = true;
            bool saveFiles = true;
            bool aux;
            bool addCase;

            string gender;

            Region defaultRegion = new Region();
            Case   defaultCase   = new Case();
            Person defaultPerson = new Person();

            /*
             * Ler os ficheiros CSV de cada classe
             * Se houver alguma falha a variável loadFiles toma o valor falso
             */
            /*if (defaultRegion.LoadRegionsFromCSVFile() != true)     loadFiles = false;
            *  if (defaultCase.LoadCasesFromCSVFile() != true)         loadFiles = false;
            *  if (defaultPerson.LoadPersonsFromCSVFile() != true)     loadFiles = false;*/


            /*
             * Ler os ficheiros Binários de cada classe
             * Se houver alguma falha a variável loadFiles toma o valor falso
             *
             * Aqui deviamos utilizar as exceções!!!
             */
            if (defaultPerson.LoadPersonsFromBinaryFile() != true)
            {
                loadFiles = false;
            }
            if (defaultCase.LoadCasesFromBinaryFile() != true)
            {
                loadFiles = false;
            }
            if (defaultRegion.LoadRegionsFromBinaryFile() != true)
            {
                loadFiles = false;
            }


            /*
             * Se a variável loadFiles tiver como valor falso
             * Fechamos a aplicação
             */
            if (loadFiles != true)
            {
                Console.WriteLine("Programa vai encerrar. Prima qualquer tecla para continuar.");
                Console.ReadKey();
                Environment.Exit(1);
            }

            Console.WriteLine("---\t\tListagem de Regiões Existentes\t\t---");
            Console.WriteLine();
            defaultRegion.ShowRegion();
            Console.WriteLine("_______________________________________________________________\n\n");

            Console.WriteLine("---\t\tListagem de Casos Existentes\t\t---");
            Console.WriteLine();
            defaultCase.ShowAllCases();
            Console.WriteLine("_______________________________________________________________\n\n");

            Console.WriteLine("---\t\tListagem de Pessoas Existentes\t\t---");
            Console.WriteLine();
            defaultPerson.ShowPerson();
            Console.WriteLine("_______________________________________________________________\n\n");


            /*
             * Como não há a utilização de menus
             * Forçamos a inserção de um novo caso
             */
            do
            {
                Console.WriteLine();
                Console.WriteLine("---\t\tInserir Caso Suspeito\t\t---");
                try
                {
                    /*
                     * Pedimos o id da Pessoa
                     */
                    Console.Write("Qual o ID da pessoa com suspeitas de virus: ");
                    personId = Convert.ToInt32(Console.ReadLine());

                    /*
                     * Verificamos se essa pessoa existe com a função CheckIfPersonExists
                     */
                    if (defaultPerson.CheckIfPersonExists(personId) == false)
                    {
                        Console.WriteLine("ID de pessoa não existe!");
                        aux = false;
                    }

                    /*
                     * Verificamos se essa pessoa já está registada num caso
                     * Se já estiver a variável defaultCase recebe esse caso.
                     * A variável defaultPerson recebe a pessoa com o id inserido
                     * e perguntamos se quer alterar o estado de Infectado.
                     */
                    else if (defaultCase.CheckIfPersonHasCase(personId) == true)
                    {
                        defaultPerson = defaultPerson.ReturnPerson(personId);
                        defaultCase   = defaultCase.ReturnCase(personId);

                        Console.WriteLine("A pessoa {0} {1} já está registada num caso com Infectado = {2}.", defaultPerson.FirstName, defaultPerson.LastName, defaultCase.Infected);
                        do
                        {
                            try
                            {
                                Console.WriteLine("Quer alterar o estado de Infectado? [1 - Sim] ou [0 - Não]");
                                answer = Convert.ToInt32(Console.ReadLine());

                                if (answer == 1)
                                {
                                    do
                                    {
                                        try
                                        {
                                            Console.WriteLine("[1] Se infectado");
                                            Console.WriteLine("[0] Se não infectado");
                                            answer = Convert.ToInt32(Console.ReadLine());

                                            if (answer == 1)
                                            {
                                                defaultCase.UpdateCase(personId, true);
                                                aux = true;
                                            }
                                            else if (answer == 0)
                                            {
                                                defaultCase.UpdateCase(personId, false);
                                                aux = true;
                                            }
                                            else
                                            {
                                                Console.WriteLine("Opção Inválida!");
                                                aux = false;
                                            }
                                        }
                                        catch (FormatException e)
                                        {
                                            aux = false;
                                            Console.WriteLine("Erro: " + e.Message);
                                        }
                                    } while (aux != true);
                                }
                                aux = true;
                            }
                            catch (FormatException e)
                            {
                                aux = false;
                                Console.WriteLine("Erro: " + e.Message);
                            }
                        } while (aux != true);
                    }

                    /*
                     * Se a pessoa não estiver registada num caso, é porque se trata de um caso suspeito novo,
                     * então perguntamos se esta pessoa deu teste positivo ou não.
                     */
                    else
                    {
                        do
                        {
                            try
                            {
                                Console.WriteLine("O teste desta pessoa deu positivo? [1 - Sim] ou [0 - Não]");
                                answer = Convert.ToInt32(Console.ReadLine());

                                if (answer == 1)
                                {
                                    Case case1 = new Case(personId, true);

                                    addCase = defaultCase.AddCase(case1);

                                    if (addCase == false)
                                    {
                                        Console.WriteLine("Ocorreu um erro. Programa vai encerrar. Prima qualquer tecla para continuar.");
                                        Console.ReadKey();
                                        Environment.Exit(1);
                                    }

                                    aux = true;
                                }
                                else if (answer == 0)
                                {
                                    Case case1 = new Case(personId, false);

                                    addCase = defaultCase.AddCase(case1);

                                    if (addCase == false)
                                    {
                                        Console.WriteLine("Ocorreu um erro. Programa vai encerrar. Prima qualquer tecla para continuar.");
                                        Console.ReadKey();
                                        Environment.Exit(1);
                                    }

                                    aux = true;
                                }
                                else
                                {
                                    Console.WriteLine("Opção Inválida");
                                    aux = false;
                                }
                            }
                            catch (FormatException e)
                            {
                                aux = false;
                                Console.WriteLine("Erro: " + e.Message);
                            }
                        } while (aux != true);
                    }
                }
                catch (FormatException e)
                {
                    aux = false;
                    Console.WriteLine("Erro: " + e.Message);
                }
            } while (aux != true);


            //Mostrar Total de Casos
            Console.WriteLine("---\t\tTotal de casos: {0}\t\t---", defaultCase.CaseList.Count);

            //Mostrar Total de Casos
            caseCount = defaultCase.CountInfected();
            Console.WriteLine("---\t\tTotal de casos positivos: {0}\t\t---", caseCount);

            Console.WriteLine("\n\n");
            //Contar por idade inserida pelo utilizador
            do
            {
                try
                {
                    Console.Write("Insira Idade a pesquisar: ");
                    age = Convert.ToInt32(Console.ReadLine());

                    aux = true;
                }
                catch (FormatException e)
                {
                    aux = false;
                    Console.WriteLine("Erro: " + e.Message);
                }
            } while (aux != true);

            caseCount = defaultCase.CountByAge(age);

            if (caseCount > 0)
            {
                Console.WriteLine("Numero de casos com a idade inserida: {0}", caseCount);
            }
            else
            {
                Console.WriteLine("Não há casos com idade igual a {0}", age);
            }

            Console.WriteLine("\n\n");

            //Mostrar casos por género inserido pelo utilizador
            do
            {
                try
                {
                    Console.WriteLine("Insira o género a procurar. [F] ou [M]");
                    gender = Console.ReadLine();

                    if ((gender != "M") && (gender != "F"))
                    {
                        aux = false;
                        Console.WriteLine("Género Inválido!");
                    }
                    else
                    {
                        aux = true;

                        caseCount = defaultCase.CountByGender(gender);

                        Console.WriteLine("Número de casos com o género inserido: " + caseCount);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("Erro: " + e.Message);
                }
            } while (aux != true);

            Console.WriteLine("\n\n");
            Console.WriteLine("Prima qualquer tecla para continuar.");
            Console.ReadKey();
            Console.WriteLine("\n\n");
            Console.WriteLine("A inserir duas novas pessoas.");
            Console.WriteLine("A inserir dois novos casos.");
            Console.WriteLine("Prima qualquer tecla para continuar.");
            Console.ReadKey();

            Person personExtra1 = new Person("Helder", "Cunha", Person.Genders.M, 33, 7);

            defaultPerson.AddPerson(personExtra1);


            Person personExtra2 = new Person("Extra_2", "Extra_2", Person.Genders.M, 38, 4);

            defaultPerson.AddPerson(personExtra2);

            Case caseExtra1 = new Case(-1, false);
            Case caseExtra2 = new Case(-2, true);

            defaultCase.AddCase(caseExtra1);
            defaultCase.AddCase(caseExtra2);

            Console.WriteLine("---\t\tListagem de Casos Existentes\t\t---");
            Console.WriteLine();
            defaultCase.ShowAllCases();
            Console.WriteLine("_______________________________________________________________\n\n");

            Console.WriteLine("---\t\tListagem de Pessoas Existentes\t\t---");
            Console.WriteLine();
            defaultPerson.ShowPerson();
            Console.WriteLine("_______________________________________________________________\n\n");

            //Save Lists to CSV File

            /*if (defaultPerson.SavePersonsToCSVFile() != true)       saveFiles = false;
            *  if (defaultCase.SaveCasesToCSVFile() != true)           saveFiles = false;
            *  if (defaultRegion.SaveRegionsToCSVFile() != true)       saveFiles = false;*/

            //Save Lists to BINARY File
            if (defaultPerson.SavePersonsToBinaryFile() != true)
            {
                saveFiles = false;
            }
            if (defaultCase.SaveCasesToBinaryFile() != true)
            {
                saveFiles = false;
            }
            if (defaultRegion.SaveRegionsToBinaryFile() != true)
            {
                saveFiles = false;
            }

            if (saveFiles != true)
            {
                Console.WriteLine("Programa vai encerrar. Prima qualquer tecla para continuar.");
                Console.ReadKey();
                Environment.Exit(1);
            }


            Console.WriteLine("Prima qualquer tecla para sair.");
            Console.ReadKey();
        }