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/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/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/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/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
