Why does and electron have negative charge and proton have positive while neutron neutral?
It's really a matter of naming.
When electricity was first discovered, they named the current going from the positive pole (e.g. of a battery) to the negative pole, without understanding what current really was.
Later, when the electron was identified, and people realised, that current was really a stream of electrons going the other way, they had to name the electron negative.
Still later, when the Bohr atom model was embraced, the nucleus of the atom would have to be positive, to even out the charge of the electrons (that were allready defined to be negative). So there had to be protons in an equal amount to the electrons. And these would have the same, but opposite charge.
Finally, when atomic masses were found to be not the same as the atomic numbers, and they even found isotopes, the neutron was used as a particle with (about) the same mass as the proton, but having no charge.