diff --git a/pom.xml b/pom.xml
index b97228e..5e052ae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,13 +11,36 @@
 
   <!-- 指定 Java 版本 -->
   <properties>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
+    <!-- 使用 Java 9，以支持接口中的 private 方法 -->
+    <maven.compiler.source>9</maven.compiler.source>
+    <maven.compiler.target>9</maven.compiler.target>
+    <!-- 推荐使用 release 模式，自动设置 source/target -->
+    <maven.compiler.release>9</maven.compiler.release>
   </properties>
 
-  <!-- 可选：添加执行插件，方便 mvn exec:java 直接运行 -->
+  <!-- 添加依赖 -->
+  <dependencies>
+    <!-- Apache Commons Lang3，用于 Pair 等工具类 -->
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+      <version>3.12.0</version>
+    </dependency>
+  </dependencies>
+
+  <!-- 构建配置 -->
   <build>
     <plugins>
+      <!-- 编译插件，设定 Java 9 编译 -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.8.1</version>
+        <configuration>
+          <release>9</release>
+        </configuration>
+      </plugin>
+      <!-- 执行插件，方便 mvn exec:java 直接运行 -->
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>exec-maven-plugin</artifactId>
@@ -29,4 +52,4 @@
     </plugins>
   </build>
 
-</project>
+</project>
\ No newline at end of file
diff --git a/src/main/java/api/ApiInterface.java b/src/main/java/api/ApiInterface.java
new file mode 100644
index 0000000..495226d
--- /dev/null
+++ b/src/main/java/api/ApiInterface.java
@@ -0,0 +1,5 @@
+package api;
+
+public interface ApiInterface {
+    
+}
\ No newline at end of file
diff --git a/src/main/java/api/ApiMain.java b/src/main/java/api/ApiMain.java
deleted file mode 100644
index 5bd40fd..0000000
--- a/src/main/java/api/ApiMain.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package api;
-public class ApiMain{
-    public static void main(String args[])
-    {
-        System.out.println("Hello World"); 
-        System.out.println("Hello World by Rae");
-    }
-}
\ No newline at end of file
diff --git a/src/main/java/cheat/Cheat.java b/src/main/java/cheat/Cheat.java
new file mode 100644
index 0000000..324d83d
--- /dev/null
+++ b/src/main/java/cheat/Cheat.java
@@ -0,0 +1,5 @@
+package cheat;
+
+public class Cheat {
+    
+}
diff --git a/src/main/java/cheat/CheatInterfnterface.java b/src/main/java/cheat/CheatInterfnterface.java
new file mode 100644
index 0000000..95ef6bb
--- /dev/null
+++ b/src/main/java/cheat/CheatInterfnterface.java
@@ -0,0 +1,20 @@
+package cheat;
+import org.apache.commons.lang3.tuple.Pair;
+import object.Appeal;
+public interface CheatInterfnterface{
+    public Pair<String,String>[] GetFeakSeed();//返回做假种的列表，<seedid,userid>
+    public void DetectFeakSeed();//检测所有种子是否为假种，并将检测结果写入数据表
+    public void DetectTrans();//检测所有种子是存在伪造上传量下载量
+    public boolean DetectTransSeed(String seedid);//检测单个种子是否存在伪造上传量下载量
+    public boolean DetectFeakSeed(String seedid);//检测单个用户是否存在假种
+    public void PunishUser();//扫描数据库中的可疑表，标记可疑用户
+    public boolean DetectUser(String userid);//检测单个用户是否存在可疑行为,每次登录的时候进行检查
+    public String[] GetPunishedUserList();//获取所有可疑用户的列表
+
+    public boolean AddAppeal(Appeal appeal);//数据库中写入一个申诉请求
+    public Appeal GetAppeal(String appealid);//获取某个申诉
+    public Appeal[] GetAppealList();//获取所有申诉列表
+
+    public boolean RevokePunish(String userid);//撤销某个用户的惩罚
+
+}
diff --git a/src/main/java/cheat/CheatMain.java b/src/main/java/cheat/CheatMain.java
deleted file mode 100644
index d423f65..0000000
--- a/src/main/java/cheat/CheatMain.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package cheat;
-
-public class CheatMain {
-    
-}
diff --git a/src/main/java/database/DataManagerInterface.java b/src/main/java/database/DataManagerInterface.java
new file mode 100644
index 0000000..fd3792d
--- /dev/null
+++ b/src/main/java/database/DataManagerInterface.java
@@ -0,0 +1,58 @@
+package database;
+
+import object.Seed;
+import object.User;
+import object.UserPT;
+import object.Notice;
+import object.BegInfo;
+import object.Post;
+import object.Profile;
+public interface DataManagerInterface{
+    public int RegisterUser(User userinfo);// 返回状态：0 success，1 邮箱重复，2其他原因
+    public int UpdateInformation(User userinfo);// 返回状态：0 success，1 不存在，2其他原因
+    public User GetInformation(String userid);// 返回用户的全部基本信息
+
+    public UserPT GetInformationPT(String userid);//返回用户的全部pt站信息
+    public int UpdateInformationPT(UserPT userinfo);//返回状态：0 success，1 邮箱重复，2其他原因
+    public int RegisterUserPT(UserPT userinfo);//返回状态：0 success，1 邮箱重复，2其他原因
+
+    public Seed GetSeedInformation(String seedid);//返回种子的全部信息;
+    public int RegisterSeed(Seed seedinfo);//添加一个新的种子，0成功，其他失败信息待定;
+    public int UpdateSeed(Seed seedinfo);//接收新的种子然后更新其全部属性;
+
+    public Seed[] SearchSeed(String userQ);//传入搜索的关键词或句子，返回搜索到的种子信息（按照公共字符数量排序）
+    
+    public int AddNotice(Notice notice);//返回状态：0 success，1 重复，2其他原因
+    public boolean UpdateNotice(Notice notice);//返回状态：0 success，1 重复，2其他原因
+    public boolean DeleteNotice(String noticeid);//删除公告，返回状态：0 success，1 重复，2其他原因
+
+    public int GetUserAvailableInviteTimes(String userid);//获取用户的剩余邀请次数
+    public int InviteUser(String inviterid,String inviteemail);//邀请用户，返回状态：0 success，1 重复，2其他原因
+
+    public boolean AddBegSeed(BegInfo info);//添加一个新的求种信息，返回状态：0 success，1 重复，2其他原因
+    public boolean UpdateBegSeed(BegInfo info);//更新一个求种信息，返回状态：0 success，1 重复，2其他原因
+    public boolean DeleteBegSeed(String begid);//删除一个求种信息，返回状态：0 success，1 重复，2其他原因
+    public boolean VoteSeed(String begid,String userid,boolean vote);//投票，返回状态：0 success，1 重复，2其他原因,vote=true表示赞成，vote=false表示反对
+    public int SubmitSeed(String begid,Seed seed);//提交种子，返回状态：0 success，1 重复，2其他原因
+    public void SettleBeg();//结算所有求种信息，求种信息中需要增加Beg截止日期，默认14天，期间投票>的则Beg成功，否则Beg失败，并发放对应奖励
+
+    public int AddPost(Post post);//添加一个新的帖子，返回状态：0 success，1 重复，2其他原因
+    public int UpdatePost(Post post);//更新一个帖子，返回状态：0 success，1 不存在,2其他原因
+    public int DeletePost(String postid);//删除一个帖子，返回状态：0 success，1 不存在,2其他原因
+
+    public int AddComment(String postid,String comment);//添加一个评论，返回状态：0 success，1 不存在，2其他原因
+    public int DeleteComment(String postid,String commentid);//删除一个评论，返回状态：0 success，1 不存在,2其他原因
+
+    public boolean AddCollect(String userid,String postid);//添加一个收藏，返回状态：0 success，1 不存在,2其他原因
+    public boolean DeleteCollect(String userid,String postid);//删除一个收藏，返回状态：0 success，1 不存在,2其他原因
+
+    public boolean ExchangeMagicToUpload(String userid,int magic);//将魔力值兑换为上传量，返回状态：0 success，1 不存在,2其他原因
+    public boolean ExchangeMagicToDownload(String userid,int magic);//将魔力值兑换为下载量，返回状态：0 success，1 不存在,2其他原因
+    public boolean ExchangeMagicToVip(String userid,int magic);//将魔力值兑换为VIP次数，返回状态：0 success，1 不存在,2其他原因
+
+    public boolean UploadTransmitProfile(Profile profile);
+    public Profile GetTransmitProfile(String profileid);//获取迁移信息
+    public boolean ExamTransmitProfile(String profileid,boolean result);//审核迁移信息,0成功，1失败
+    public Profile[] GetTransmitProfileList();//获取所有迁移信息
+
+}   
\ No newline at end of file
diff --git a/src/main/java/database/Database1.java b/src/main/java/database/Database1.java
new file mode 100644
index 0000000..9304fa5
--- /dev/null
+++ b/src/main/java/database/Database1.java
@@ -0,0 +1,5 @@
+package database;
+
+// public class Database1 implements DataManagerInterface {
+    
+// }
diff --git a/src/main/java/database/Database2.java b/src/main/java/database/Database2.java
new file mode 100644
index 0000000..2e37a99
--- /dev/null
+++ b/src/main/java/database/Database2.java
@@ -0,0 +1,5 @@
+package database;
+
+// public class Database2 implements DataManagerInterface {
+    
+// }
diff --git a/src/main/java/database/DatabaseMain.java b/src/main/java/database/DatabaseMain.java
deleted file mode 100644
index 78dda90..0000000
--- a/src/main/java/database/DatabaseMain.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package database;
-
-public class DatabaseMain{
-    public static void main(String args[])
-    {
-        System.out.println("Hello Database"); 
-    }
-}
\ No newline at end of file
diff --git a/src/main/java/object/Appeal.java b/src/main/java/object/Appeal.java
new file mode 100644
index 0000000..66c8822
--- /dev/null
+++ b/src/main/java/object/Appeal.java
@@ -0,0 +1,5 @@
+package object;
+
+public class Appeal {
+    
+}
diff --git a/src/main/java/object/BegInfo.java b/src/main/java/object/BegInfo.java
new file mode 100644
index 0000000..ab7c296
--- /dev/null
+++ b/src/main/java/object/BegInfo.java
@@ -0,0 +1,5 @@
+package object;
+
+public class BegInfo {
+    
+}
diff --git a/src/main/java/object/Notice.java b/src/main/java/object/Notice.java
new file mode 100644
index 0000000..8bc9feb
--- /dev/null
+++ b/src/main/java/object/Notice.java
@@ -0,0 +1,5 @@
+package object;
+
+public class Notice {
+    
+}
diff --git a/src/main/java/object/Post.java b/src/main/java/object/Post.java
new file mode 100644
index 0000000..a61bc3e
--- /dev/null
+++ b/src/main/java/object/Post.java
@@ -0,0 +1,5 @@
+package object;
+
+public class Post {
+    
+}
diff --git a/src/main/java/object/Profile.java b/src/main/java/object/Profile.java
new file mode 100644
index 0000000..7293a47
--- /dev/null
+++ b/src/main/java/object/Profile.java
@@ -0,0 +1,5 @@
+package object;
+
+public class Profile {
+    
+}
diff --git a/src/main/java/object/Seed.java b/src/main/java/object/Seed.java
new file mode 100644
index 0000000..dbee2b6
--- /dev/null
+++ b/src/main/java/object/Seed.java
@@ -0,0 +1,5 @@
+package object;
+
+public class Seed {
+    
+}
diff --git a/src/main/java/object/TTorent.java b/src/main/java/object/TTorent.java
new file mode 100644
index 0000000..be9051d
--- /dev/null
+++ b/src/main/java/object/TTorent.java
@@ -0,0 +1,5 @@
+package object;
+
+public class TTorent{
+    
+}
\ No newline at end of file
diff --git a/src/main/java/object/TransRecord.java b/src/main/java/object/TransRecord.java
new file mode 100644
index 0000000..d78572d
--- /dev/null
+++ b/src/main/java/object/TransRecord.java
@@ -0,0 +1,8 @@
+package object;
+
+public class TransRecord{
+    String day;
+    String hour;
+    String minute;
+    String second;
+}
\ No newline at end of file
diff --git a/src/main/java/object/User.java b/src/main/java/object/User.java
new file mode 100644
index 0000000..5dd9054
--- /dev/null
+++ b/src/main/java/object/User.java
@@ -0,0 +1,5 @@
+package object;
+
+public class User {
+    private String userid;
+}
diff --git a/src/main/java/object/UserPT.java b/src/main/java/object/UserPT.java
new file mode 100644
index 0000000..b69089a
--- /dev/null
+++ b/src/main/java/object/UserPT.java
@@ -0,0 +1,5 @@
+package object;
+
+public class UserPT {
+    
+}
diff --git a/src/main/java/tracker/Tracker.java b/src/main/java/tracker/Tracker.java
new file mode 100644
index 0000000..e1165b2
--- /dev/null
+++ b/src/main/java/tracker/Tracker.java
@@ -0,0 +1,5 @@
+package tracker;
+
+// public class Tracker implements TrackerInterface {
+    
+// }
diff --git a/src/main/java/tracker/TrackerInterface.java b/src/main/java/tracker/TrackerInterface.java
new file mode 100644
index 0000000..872d9ad
--- /dev/null
+++ b/src/main/java/tracker/TrackerInterface.java
@@ -0,0 +1,19 @@
+package tracker;
+import java.io.File;
+
+import object.TTorent;
+import object.TransRecord;
+public interface TrackerInterface{
+    public boolean AddUpLoad(String userid,int upload);//给用户新增上传量，返回0成功，返回1失败;
+    public boolean ReduceUpLoad(String userid,int upload);//给用户减上传量，返回0成功，返回1失败;
+    public boolean AddDownload(String userid,int download);//给用户增加下载量，返回0成功，返回1失败;
+    public boolean ReduceDownload(String userid,int download);//给用户减少下载量，返回0成功，返回1失败;
+    public boolean AddMagic(String userid,int magic);//给用户增加魔力值，返回0成功，返回1失败;
+    public boolean ReduceMagic(String userid,int magic);//给用户减少魔力值，返回0成功，返回1失败;
+
+    public TTorent ReadTorrent(File torrent);//传入torrent文件，解析后返回TTorent类
+    public int SaveTorrent(TTorent seed,String seedid);//保存seedid对应的ttorent信息
+    public File GetTTorent(String seedid,String userid);//根据种子id获得ttorent信息然后构建Ttorent文件并返回,同时记录用户的下载行为
+
+    public int AddRecord(String seedid,TransRecord rd);//新增一个seedid对应的种子的传输任务记录
+}
\ No newline at end of file
diff --git a/src/main/java/vip/Vip.java b/src/main/java/vip/Vip.java
new file mode 100644
index 0000000..c9d3dc7
--- /dev/null
+++ b/src/main/java/vip/Vip.java
@@ -0,0 +1,5 @@
+package vip;
+
+// public class Vip implements VipInterface {
+    
+// }
diff --git a/src/main/java/vip/VipInterface.java b/src/main/java/vip/VipInterface.java
new file mode 100644
index 0000000..0ad764f
--- /dev/null
+++ b/src/main/java/vip/VipInterface.java
@@ -0,0 +1,18 @@
+package vip;
+import object.TTorent;
+import object.Seed;
+import org.apache.commons.lang3.tuple.Pair;
+import java.io.File;
+public interface VipInterface{
+    
+    public Pair<File,Integer>  GetTTorent(String seedid,String userid);//获取专线下载的文件，并记录用户的下载行为
+    //如果用户权限足够，文件存在，integer为0，如果用户权限足够，文件不存在，integer为1，file为null 如果用户权限不足，file为null，integer为2；
+
+    public int AddFarmerNumber(int number,String seedid);//种子增加了新的保种人数,返回值：0，写入成功，1写入失败,其他待定
+    public int ReduceFarmerNumber(int number,String seedid);//种子降低的保种人数，返回值:0,写入成功，1:写入失败,其他待定
+    public int KeepSeed(TTorent seed,String seedid);//将种子加入保种列表
+    public int RemoveSeed(String seedid);//将种子移除保种列表
+
+    public void CheckSeed();//由外部触发，调用类内函数更新保种列表
+    public Seed[] GetSeedToPlant();//获取当前需要保种的所有种子信息
+}
\ No newline at end of file
