Multi-peer assessment has often been used by teachers to reduce personal bias and make the assessment more reliable. This study reviews the design and development of multi-peer assessment systems that detect and solve two common issues in such systems: non-consensus among group members and personal radicalness in some assessments. A multi-peer assessment model is proposed to address these issues. The model captures roles, activities, and data structures in a typical multi-peer assessment setting that can be generalized to other scenarios. We implemented the model in a multi-peer code review system and conducted several empirical experiments in programming language classes. The studies showed that the model can significantly improve student learning outcomes than in a single-peer assessment. Also,we used statistical measures to detect non-consensus and radicalness issues that often occur in the model. The results reveal many insights and provide valuable guidance for teachers to implement a multi-peer assessment system.