part6完成，测试通过，待优化

part5基础上修改