优化了代码结构，添加了makefile