diff --git a/src/main/java/com/pt/controller/ResourceController.java b/src/main/java/com/pt/controller/ResourceController.java
index c663963..77033be 100644
--- a/src/main/java/com/pt/controller/ResourceController.java
+++ b/src/main/java/com/pt/controller/ResourceController.java
@@ -84,6 +84,7 @@
     public ResponseEntity<?> publishResource(
             @RequestHeader("token") String token,
             @RequestParam("username") String username,
+            @RequestParam("title") String title,
             @RequestParam("description") String description,
             @RequestParam("torrent") MultipartFile torrentFile
             )
@@ -104,7 +105,7 @@
 
         try {
             // 传入种子文件字节，同时传入资源其他信息
-            resourceService.publishResource(torrentFile.getOriginalFilename(), description, username, torrentFile.getBytes(), username);
+            resourceService.publishResource(torrentFile.getOriginalFilename(), title, description, username, torrentFile.getBytes(), username);
         } catch (Exception e) {
             ans.put("message", "Failed to publish resource: " + e.getMessage());
             return ResponseEntity.status(500).body(ans);
@@ -137,7 +138,8 @@
                 "name", resource.getName(),
                 "description", resource.getDescription(),
                 "author", resource.getAuthor(),
-                "publishTime", resource.getPublishTime()
+                "publishTime", resource.getPublishTime(),
+                "title", resource.getTitle()
         ));
 
         return ResponseEntity.ok().body(ans);
diff --git a/src/main/java/com/pt/controller/UserController.java b/src/main/java/com/pt/controller/UserController.java
index d9f53ab..4cadd75 100644
--- a/src/main/java/com/pt/controller/UserController.java
+++ b/src/main/java/com/pt/controller/UserController.java
@@ -83,7 +83,10 @@
                     "username", user.getUsername(),
                     "email", user.getEmail(),
                     "level", user.getLevel(),
-                    "points", user.getPoints()
+                    "points", user.getPoints(),
+                    "uploaded", user.getUploaded(),
+                    "downloaded", user.getDownloaded(),
+                    "shareRatio", user.getShareRatio()
             ));
             return ResponseEntity.ok().body(ans);
         } else {
diff --git a/src/main/java/com/pt/entity/Resource.java b/src/main/java/com/pt/entity/Resource.java
index 073dbbb..175d96f 100644
--- a/src/main/java/com/pt/entity/Resource.java
+++ b/src/main/java/com/pt/entity/Resource.java
@@ -22,6 +22,8 @@
     private String description;
     private byte[] torrentData;
 
+    private String title;
+
     public Resource() {
     }
 
@@ -69,6 +71,12 @@
     public void setTorrentData(byte[] torrentData) {
         this.torrentData = torrentData;
     }
+    public String getTitle() {
+        return title;
+    }
+    public void setTitle(String title) {
+        this.title = title;
+    }
 
     /*
         * 重写toString方法，将资源信息以JSON字符串形式返回
@@ -81,6 +89,7 @@
                 ", \"publishTime\":\"" + publishTime + "\"" +
                 ", \"author\":\"" + author + "\"" +
                 ", \"description\":\"" + description + "\"" +
+                ", \"title\":\"" + title + "\"" +
                 '}';
     }
 }
diff --git a/src/main/java/com/pt/entity/User.java b/src/main/java/com/pt/entity/User.java
index bc3a488..029595d 100644
--- a/src/main/java/com/pt/entity/User.java
+++ b/src/main/java/com/pt/entity/User.java
@@ -81,10 +81,7 @@
     }
 
     public double getShareRatio() {
-        if (downloaded == 0) {
-            return 0;
-        }
-        return (double) uploaded / downloaded;
+        return shareRatio;
     }
 
     public void setShareRatio(double shareRatio) {
@@ -102,6 +99,7 @@
                 ",\npoints:" + points +
                 ",\nuploaded:" + uploaded +
                 ",\ndownloaded:" + downloaded +
+                ",\nshareRatio:" + shareRatio +
                 '}';
     }
 }
diff --git a/src/main/java/com/pt/service/ResourceService.java b/src/main/java/com/pt/service/ResourceService.java
index 4eb7823..3d06d85 100644
--- a/src/main/java/com/pt/service/ResourceService.java
+++ b/src/main/java/com/pt/service/ResourceService.java
@@ -41,7 +41,7 @@
         return resourceRepository.findByAuthor(username);
     }
 
-    public void publishResource(String name, String description, String author, byte[] torrentBytes, String username) throws Exception {
+    public void publishResource(String name, String title, String description, String author, byte[] torrentBytes, String username) throws Exception {
         // 解析并保存torrent元信息
         TorrentMeta meta = torrentService.parseAndSaveTorrent(torrentBytes);
 
@@ -51,6 +51,7 @@
         resource.setDescription(description);
         resource.setAuthor(author);
         resource.setPublishTime(LocalDateTime.now());
+        resource.setTitle(title);
 
         resource.setTorrentData(torrentBytes);
         // 这里可以保存torrent文件路径，或直接存数据库，依据你的设计
