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
