完成功能代码，需测试