修正了程序，添加了许多注释