Our system works pretty well. We get two votes, one for a local candidate, one for a party. The winning candidates get in, then the rest of the seats are made up from party "list" candidates to match the proportions of the party votes. I think Germany has a more complex form where you can order the list candidates of your chosen party so they're in effect voted for.
It works well; we'd had a case before that where Labour got more than 50% of the votes, but National (our conservatives) got more seats. You're more likely to get coalition governments this way though as other parties get more seats. Still, it means that parties people like (Greens etc) get a say in government.