University - ISolutions

Programación Orientada a Objetos (Tower defense - kingdom rush)

Moderator: julianmartinez16

User avatar
JuanZuluaga02
Posts: 22
Joined: Tue Jan 22, 2019 12:12 pm

Re: University - ISolutions

Post by JuanZuluaga02 » Wed Apr 03, 2019 5:16 pm

Sprint # 9 - Semana 11
Fecha de Inicio 28/03/2019
Fecha de Finalización 4/03/2019


Actividad #9

Realización de Navegation Drawer


Tarea Encargado Dificultad
  • 1. Realización de XML del Navegation Drawer
    2. Realización de actividad para Navegation Drawer


Seguimiento del martes:
Fecha: 2/04/2019

1. ¿ Qué se ha hecho ?

Se implementó la parte gráfica del Navegation Drawer.

Navegation Drawer

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>


Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="@dimen/nav_header_height"
    android:background="@drawable/solutions"
    android:gravity="bottom"
    android:orientation="vertical"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:theme="@style/ThemeOverlay.AppCompat.Dark">


</LinearLayout>

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".Navegation"
    tools:showIn="@layout/app_bar_main">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >

        <ImageView
            android:layout_marginTop="20dp"
            android:layout_width="300dp"
            android:layout_height="300dp"
            android:layout_marginLeft="50dp"
            android:src="@drawable/foo"

            />


        <TextView
            android:layout_marginTop="20dp"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_marginLeft="20dp"
            android:textSize="30dp"
            android:text="Aplicación desarrollada por:"
            android:textColor="@color/colorPrimaryDark"/>

        <TextView

            android:layout_width="match_parent"
            android:layout_marginLeft="20dp"
            android:layout_height="50dp"
            android:textSize="20dp"
            android:text="Juan Manuel Zuluaga"
            />
        <TextView
            android:layout_marginLeft="20dp"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:textSize="20dp"
            android:text="Estudiante de Ingeniería de Sistemas e Informática"
            />

    </LinearLayout>


</android.support

Code: Select all

?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:showIn="navigation_view">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/agenda"
            android:icon="@drawable/librito"
            android:title="Agenda" />
        <item
            android:id="@+id/asignaturas"
            android:icon="@drawable/asignaturas"
            android:title="Asignatuas" />
        <item
            android:id="@+id/profesores"
            android:icon="@drawable/agregar"
            android:title="Profesores" />
        <item
            android:id="@+id/calculadora"
            android:icon="@drawable/calculo"
            android:title="Calculadora" />
    </group>

    <item android:title="Contactanos">
        <menu>
            <item
                android:id="@+id/contactanos"
                android:icon="@drawable/ic_menu_share"
                android:title="Desarrolladores" />

        </menu>
    </item>

</menu>
Image

2. ¿ Qué se va a hacer ?

Se implementará la actividad respectiva necesaria para realización del navegation drawer.

3. ¿Qué dificultades hemos tenido?

La clase Asignaturas genera problemas a la hora de enlazar el cálculo de notas con la inserción en la base de datos.
Juan Manuel Zuluaga
POO1

User avatar
JuanZuluaga02
Posts: 22
Joined: Tue Jan 22, 2019 12:12 pm

Re: University - ISolutions

Post by JuanZuluaga02 » Thu Apr 04, 2019 11:54 pm

Seguimiento del Jueves:
Fecha: 4/04/2019

1. ¿ Qué se ha hecho ?

Se implementó la de progamación del Navegation Drawer.

Actividad Navegation Drawer

Code: Select all

package com.example.university4;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;

public class Navegation extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.navegation);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);


        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.agenda) {
            Intent intent = new Intent(Navegation.this,Agenda.class);
            startActivity(intent);

        } else if (id == R.id.asignaturas) {
            Intent intent2 = new Intent(Navegation.this,Asignaturas.class);
            startActivity(intent2);

        } else if (id == R.id.profesores) {
            Intent intent3 = new Intent(Navegation.this,Profesores.class);
            startActivity(intent3);

        } else if (id == R.id.calculadora) {
            Intent intent4 = new Intent(Navegation.this,Calculo.class);
            startActivity(intent4);

        } else if (id == R.id.contactanos) {
            Intent intent5 = new Intent(Navegation.this,Desarrolladores.class);
            startActivity(intent5);


            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }
        return true;
    }
}





2. ¿ Qué se va a hacer ?

Se mejorarán las funcionalidades ya presentes en la app, haciendo añadidos. Además de pruebas

3. ¿Qué dificultades hemos tenido?

La clase Asignaturas genera problemas a la hora de enlazar el cálculo de notas con la inserción en la base de datos.
Juan Manuel Zuluaga
POO1

User avatar
JuanZuluaga02
Posts: 22
Joined: Tue Jan 22, 2019 12:12 pm

Re: University - ISolutions

Post by JuanZuluaga02 » Wed Apr 10, 2019 9:07 pm

Sprint # 10 - Semana 12
Fecha de Inicio 4/04/2019
Fecha de Finalización 11/04/2019


Actividad #10

Corrección errores en la actividad de Asignaturas


Tarea Dificultad
  • 1. XML de la actividad 3
    2. Actividad en Java 4


Seguimiento del martes:
Fecha: 9/04/2019

1. ¿ Qué se ha hecho ?

Se implementó la parte gráfica de la clase.

XML Asignaturas

Image

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Asignaturas">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="82dp">


        <EditText
            android:id="@+id/cam1"
            android:layout_width="300dp"
            android:layout_height="50dp"
            android:layout_marginLeft="50dp"
            android:layout_marginTop="10dp"
            android:hint="Materia" />

        <EditText
            android:id="@+id/cam2"
            android:layout_width="300dp"
            android:layout_height="60dp"
            android:layout_marginLeft="50dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:hint="Nota" />


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:orientation="horizontal">

            <ImageButton
                android:id="@+id/calcula"
                android:layout_width="80dp"
                android:layout_height="50dp"
                android:layout_marginLeft="40dp"
                android:background="@drawable/add" />

            <TextView
                android:layout_width="200dp"
                android:layout_height="60dp"
                android:text="Agregar notas"
                android:textSize="20dp" />





        </LinearLayout>


        <Button
            android:id="@+id/datos"
            android:layout_width="150dp"
            android:layout_height="60dp"
            android:layout_marginLeft="130dp"
            android:layout_marginTop="-30dp"
            android:fontFamily="serif"
            android:text="AGREGAR DATOS"
           />



        <ListView
            android:id="@+id/listic"
            android:layout_width="match_parent"
            android:layout_height="match_parent"></ListView>


    </LinearLayout>




</android.support.constraint.ConstraintLayout>



Actividad de Asignaturas

Code: Select all

package com.example.university4;

import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class Asignaturas extends AppCompatActivity {

    ListView list;
    EditText edit1,edit2;
    Button botton2;
    ImageButton botton;
    List<String> item;
    String getTitle;
    String nota;
    AdaptadorA DB3;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_asignaturas);
       // Bundle bundle = this.getIntent().getExtras();




        list = (ListView)findViewById(R.id.listic);
        edit1 = (EditText)findViewById(R.id.cam1);
        edit2 = (EditText)findViewById(R.id.cam2);
        botton = (ImageButton) findViewById(R.id.calcula);
        botton2 = (Button)findViewById(R.id.datos);

        showNotes();

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                getTitle = (String) list.getItemAtPosition(position);
                verNota();

            }
        });

        botton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Asignaturas.this, AgregarNotas.class);
                startActivity(intent);
            }
        });

       botton2.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {


               addUpdateNotes();

               showNotes();
           }
       });

    }


    private void addUpdateNotes(){
        DB3 = new AdaptadorA(this);
        String materia,msj;
        materia = edit1.getText().toString();

        nota = edit2.getText().toString();

        if(materia.equals("")){
            msj = "Ingrese el nombre la materia";
            edit1.requestFocus();
            Mensaje(msj);
        }else{
            if(nota.equals("")){
                msj = "no ha ingresado la nota";
                edit2.requestFocus();
                Mensaje(msj);
            }else{
                Cursor c = DB3.getNote(materia);
                getTitle = "";
                //Se asegura de que existe al menos una condición
                if(c.moveToFirst()){
                    //Se recorre el cursor hasta que no hayan registros
                    do{
                        getTitle = c.getString(1); //Las columnas cuentan desde 0
                    }while (c.moveToNext());
                }
                if(getTitle.equals(materia)){
                    edit1.requestFocus();
                    msj = "La materia ya ha sido ingresada";
                }else{

                    DB3.addNotes(materia,nota);
                    msj = "Datos agregados";
                    Toast.makeText(this, msj , Toast.LENGTH_SHORT).show();
                    actividad(materia,nota);
                }
            }
        }

    }

    public void Mensaje(String msj){
        Toast toast = Toast.makeText(this, msj,Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.CENTER_VERTICAL,0,0);
        toast.show();
    }

    public void showNotes(){
        DB3 = new AdaptadorA(this);
        Cursor c = DB3.getNotes();
        item = new ArrayList<String>();
        String materia = "";
        //Nos aseguramos de que existe al menos un registro
        if(c.moveToFirst() == false){
            Toast.makeText(this, "No hay materias ingresadas hasta ahora",Toast.LENGTH_SHORT).show();
        }else{
            do{
                materia = c.getString(1);
                item.add(materia);

            }while(c.moveToNext());
        }

        ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,item);
        list.setAdapter(adaptador);

    }

    public String getNote(){


        DB3 = new AdaptadorA(this);
        Cursor c = DB3.getNote(getTitle);
        if(c.moveToFirst() == true){

            do{
                nota = c.getString(2);
                item.add(nota);

            }while(c.moveToNext());
        }
        return nota;
    }


    public void actividad(String materia,String nota){
        Intent intent = new Intent(Asignaturas.this, VisualizarNota.class);
        intent.putExtra("materia",materia);
        intent.putExtra("nota",nota);
        startActivity(intent);
    }


    public void verNota(){


        String materia;


        nota = getNote();

        materia = getTitle;
        //Toast.makeText(this ,content,Toast.LENGTH_LONG).show();
        actividad(materia,nota);





    }









}
2. ¿ Qué se va a hacer ?

Se realizará mejoras en la clase Profesores.

3. ¿Qué dificultades hemos tenido?

Hasta ahora no hay ningún inconveniente.
Last edited by JuanZuluaga02 on Thu Apr 11, 2019 9:13 pm, edited 2 times in total.
Juan Manuel Zuluaga
POO1

User avatar
xacarana
Site Admin
Posts: 1071
Joined: Fri Jan 15, 2016 6:13 pm

Re: University - ISolutions

Post by xacarana » Thu Apr 11, 2019 1:13 pm

Image

Necesitamos ver las imagenes del avance dle código, :!: recuerda publicar el día de la clase.
Andrés Bedoya Tobón
Profesor
"I only smile in the dark, I only smile when it's complicated" Raybiez

User avatar
JuanZuluaga02
Posts: 22
Joined: Tue Jan 22, 2019 12:12 pm

Re: University - ISolutions

Post by JuanZuluaga02 » Thu Apr 11, 2019 9:13 pm

Seguimiento del Jueves:
Fecha: 11/04/2019

1. ¿ Qué se ha hecho ?

Se implementó la parte gráfica y de programación de la Clase Profesor.

XML Asignaturas

Image

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".VerProfesores">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/nom"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:text="Profesor"
            android:textSize="30dp"
            android:layout_marginLeft="100dp"
            android:textColor="@color/colorPrimaryDark"/>

        <TextView
            android:id="@+id/mat"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:text="Materia"
            android:layout_marginLeft="20dp"
            android:textSize="30dp"
           />
        <TextView
            android:id="@+id/tel"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:text="Telefono"
            android:layout_marginLeft="20dp"
            android:textSize="30dp"
            />


    </LinearLayout>

</android.support.constraint.ConstraintLayout>



Actividad de Profesores

Code: Select all

package com.example.university4;

import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class Profesores extends AppCompatActivity {

    ListView listap;
    EditText edit1,edit2,edit3;
    String getTitle;
    List<String> item = null;
    AdaptadorP DB2;
    Button bot2;
    TextView textico;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profesores);
        listap = (ListView)findViewById(R.id.listap);
        edit1 = (EditText)findViewById(R.id.campo1);
        edit2 = (EditText)findViewById(R.id.campo2);
        edit3 = (EditText)findViewById(R.id.campo3);
        bot2 =(Button)findViewById(R.id.agregar);
        textico =(TextView)findViewById(R.id.textico);

        showNotes();


        listap.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                getTitle = (String) listap.getItemAtPosition(position);
                verNota();

            }
        });

        bot2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                addUpdateNotes();
                showNotes();
            }
        });

    }

    private void addUpdateNotes(){
        DB2 = new AdaptadorP(this);
        String nombre, telefono,materia,msj;
        nombre = edit1.getText().toString();
         materia= edit2.getText().toString();
        telefono= edit3.getText().toString();
        if(nombre.equals("")){
            msj = "Ingrese el nombre";
            edit1.requestFocus();
            Mensaje(msj);
        }else{
            if(materia.equals("")){
                msj = "Ingrese la materia";
                edit2.requestFocus();
                Mensaje(msj);

            }else{
                if(telefono.equals("")){
                    msj = "Ingrese el telefono";
                    edit2.requestFocus();
                    Mensaje(msj);

                }else{




                    Cursor c = DB2.getProfe(nombre);
                    getTitle = "";
                    //Se asegura de que existe al menos una condición
                    if(c.moveToFirst()){
                        //Se recorre el cursor hasta que no hayan registros
                        do{
                            getTitle = c.getString(1); //Las columnas cuentan desde 0
                        }while (c.moveToNext());
                    }
                    if(getTitle.equals(nombre)){
                        edit1.requestFocus();
                        msj = "El profesor ya existe";
                    }else{
                        DB2.addProfe(nombre,materia,telefono);
                        msj = "Datos agregados";
                        Toast.makeText(this, msj , Toast.LENGTH_SHORT).show();
                        //actividad(title,content);
                    }

                }

            }
        }

    }

    public void Mensaje(String msj){
        Toast toast = Toast.makeText(this, msj,Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.CENTER_VERTICAL,0,0);
        toast.show();
    }

    public void showNotes(){
        DB2 = new AdaptadorP(this);
        Cursor c = DB2.getProfes();
        item = new ArrayList<String>();
        String nombre = "";
        String tel = "";
        //Nos aseguramos de que existe al menos un registro
        if(c.moveToFirst() == false){
            textico.setText("No hay profes añadidos");
        }else{
            do{
                nombre = c.getString(1);
                item.add(nombre);


            }while(c.moveToNext());
        }

        ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,item);

        listap.setAdapter(adaptador);

    }

    public String getNote(){
        String type = "";
        String materia = "";

        DB2 = new AdaptadorP(this);
        Cursor c = DB2.getProfe(getTitle);
        if(c.moveToFirst() == true){

            do{
                materia = c.getString(2);
                item.add(materia);

            }while(c.moveToNext());
        }
        return materia;
    }


    public String getNote2(){
        String type = "";
        String telefono = "";

        DB2 = new AdaptadorP(this);
        Cursor c = DB2.getProfe(getTitle);
        if(c.moveToFirst() == true){

            do{
                telefono = c.getString(3);
                item.add(telefono);

            }while(c.moveToNext());
        }
        return telefono;
    }


    public void actividad(String nombre,String materia,String telefono){
        Intent intent = new Intent(Profesores.this, VerProfesores.class);
        intent.putExtra("nombre",nombre);
        intent.putExtra("materia",materia);
        intent.putExtra("telefono",telefono);
        startActivity(intent);
    }


    public void verNota(){

        String nombre,materia,telefono;



        materia = getNote();
        telefono = getNote2();
        nombre = getTitle;
        //Toast.makeText(this ,telefono,Toast.LENGTH_LONG).show();
        actividad(nombre,materia,telefono);





    }
}

2. ¿ Qué se va a hacer ?

Se implementará la opción para eliminar datos de la base de datos.

3. ¿Qué dificultades hemos tenido?

Hasta ahora no hay ningún inconveniente.
Juan Manuel Zuluaga
POO1

Post Reply