新版本的完整代码