重构数据库访问类

主要使用工厂方法和单例模式
删除无用代码，用户界面更新
数据库内容更新