Manipulate[

d=b^2-4a c;
Pane[
Column[{
If[
a==0,
If[
b==0,
If[
c==0,
Plot[0,{x,-5,5},PlotRange->5,ImageSize->{200,200},PlotStyle->{Thick,Green},AxesLabel->{x,y}],
Plot[c,{x,-5,5},ImageSize->{200,200},PlotRange->5,AxesLabel->{x,y}]
],

Plot[b x+c,{x,-5,5},PlotRange->5,ImageSize->{200,200},AxesLabel->{x,y},Epilog->{PointSize[.02],Green,Point[{{-c/b,0}}]}
]
],
(* else a≠ 0 *)
Show[{
Plot[a x^2+b x +c,{x,-5,5}, (*quadratic*)
PlotRange->5,AxesLabel->{x,y},PlotLabel->TraditionalForm[f[x]==a x^2+b x +c],ImageSize->{200,200},Epilog->{PointSize[.02],Green,
If[
d≥0,
{
Point[{{(-b+Sqrt[d])/(2a),0},{(-b-Sqrt[d])/(2a),0}}]

},
{}
],Red,Point[{-b/(2a),-b^2/(4a)+c}]}],
Plot[If[test==="YES",b x +c,Null],{x,-1,1}] (*Int slope line*)
}]
],

Text@Style[Grid[{{

If[
a==0,
TraditionalForm@Column[
{
Row[{"a"," = ",0,", so the function is not quadratic and there is no square to complete."}]
},Alignment->{Left,Top},ItemSize->{{18},Automatic}
],
(* else a ≠ 0 *)
If[
b==0,
TraditionalForm@Column[
{
Row[{"b"," = ",0,", so the square is already complete."}]
},Alignment->{Left,Top},ItemSize->{{18},Automatic}
],
(* else b ≠ 0 *)
row1=Row[{TraditionalForm[f[x]]," = ",a (x^2)+Style[b,Red] x,If[c>0," + "," "],If[c!=0,c," "]}];
row2=Row[{"        = ",a( (x^2)+b/a x)," + ( ",Style[TraditionalForm[(b/(2a))^2],Red]," - ",Style[TraditionalForm[(b/(2a))^2],Red]," ) ",If[c>0," + "," "],If[c!=0,c," "]}];
row3=Row[{"        = ",a( (x^2)+b/a x)," + ",TraditionalForm[(b/(2a))^2],"  - ",Style[TraditionalForm[(b/(2a))^2],Blue],If[c>0," + "," "],If[c!=0,Style[c,Blue]," "]}];
row4=Row[{"        = ",a Style[( (x^2)+2b/(2a) x+(b/(2a))^2),Purple],If[c-b^2/(4a)>0," + "," "],If[c-b^2/(4a)!=0,Style[c-b^2/(4a),Blue]]}];
row5=Row[{"        = ",a Style[(x+b/(2a))^2,Purple],If[c-b^2/(4a)>0," + "," "],If[c-b^2/(4a)!=0,c-b^2/(4a)]}];
Text@TraditionalForm@Column[First/@Split[{row1,row2,row3,row4,row5}],Alignment->{Left,Top},ItemSize->{{18},{3,3,3,3,3}}]
]
],

If[
a==0,
Column[{""},ItemSize->{{18},Automatic}],
(* else a≠0 *)
TraditionalForm@Column[{
Text@TraditionalForm@Row[{"The vertex is at ",RawBoxes["("],-b/(2a),,", ",-b^2/(4a)+c,RawBoxes[")"]}],
Text@TraditionalForm@
Row[{"The ",If[d≥0,"real","complex"]" roots are \n",x," = ",
If[
d≥0&&IntegerQ[Sqrt[d]/(2a)],
Row[{-b/(2a)+Sqrt[d]/(2a)," and ",-b/2a-Sqrt[d]/(2a)}],
Row[{-b/(2a),If[Abs[Sqrt[d]/(2.a)]>0," ± "," ∓ "],Abs[Sqrt[d]/(2a)]}]
] ,
If[d≥0,"",Row[{" ",I}]],"\n   ≈ ",
If[d≥0,
Row[{
NumberForm[(-b+Sqrt[d])/(2.a),{5,3}],
" and ",
NumberForm[(-b-Sqrt[d])/(2.a),{5,3}]
}],
(* else d<0 *)
Row[{
NumberForm[-b/(2.a),{5,3}],
If[
Abs[Sqrt[d]/(2.a)]==0,
"",
Row[{
If[Abs[Sqrt[d]/(2.a)]>0," ± "," ∓ "], NumberForm[Abs[Sqrt[d]/(2.a)],{5,3}]," ",I
}]
 ]
}]
],
"."}]
},Alignment->{Left,Top},ItemSize->{{18},{3,6,7}}]
]
}},Alignment->{Left,Top}],16]
},Center]
,ImageSize->{575,450}],

(*Manipulate Controllers*)
Style["Graphs of Quadratic Functions",Bold,12],(*Title*)
{{a,1},-3,3,1/10,Appearance->"Labeled"},
{{b,2},-3,3,1/10,Appearance->"Labeled"},
{{c,-1},-3,3,1/10,Appearance->"Labeled"},
{{test,"NO","Tangent at y-intercept"},{"YES","NO"}},
TrackedSymbols->Manipulate,ControlPlacement->Left
]

Manipulate[

d=b^2-4a c;
Pane[
Column[{
If[
a==0,
If[
b==0,
If[
c==0,
Plot[0,{x,-5,5},PlotRange->5,ImageSize->{200,200},PlotStyle->{Thick,Green},AxesLabel->{x,y}],
Plot[c,{x,-5,5},ImageSize->{200,200},PlotRange->5,AxesLabel->{x,y}]
],

Plot[b x+c,{x,-5,5},PlotRange->5,ImageSize->{200,200},AxesLabel->{x,y},Epilog->{PointSize[.02],Green,Point[{{-c/b,0}}]}
]
],
(* else a≠ 0 *)
Show[{
Plot[a x^2+b x +c,{x,-5,5}, (*quadratic*)
PlotRange->5,AxesLabel->{x,y},PlotLabel->TraditionalForm[f[x]==a x^2+b x +c],ImageSize->{200,200},Epilog->{PointSize[.02],Green,
If[
d≥0,
{
Point[{{(-b+Sqrt[d])/(2a),0},{(-b-Sqrt[d])/(2a),0}}]

},
{}
],Red,Point[{-b/(2a),-b^2/(4a)+c}]}],
Plot[If[test==="YES",b x +c,Null],{x,-1,1}] (*Int slope line*)
}]
]}]],





(*Manipulate Controllers*)
Style["Graphs of Quadratic Functions",Bold,12],(*Title*)
{{a,1},-3,3,1/10,Appearance->{"Labeled",Large}},
{{b,2},-3,3,1/10,Appearance->"Labeled"},
{{c,-1},-3,3,1/10,Appearance->"Labeled"},
{{test,"NO","Tangent at y-intercept"},{"YES","NO"}},
TrackedSymbols->Manipulate,ControlPlacement->Left
]