使用javaFX编辑的学生管理系统

javaFX编辑的学生管理系统(初学)

自定义的学生类:

public class Student {
    private String Name;
    private String Number;
    private String Class;
    private int Score;
    
    
    public Student(){
        this("sdiuf h","6544534","ef esf",48);
    }
            
    public Student(String Name,String Number,String Class){
        this(Name,Number,Class,0);
    }
    
    public Student(String Name,String Class,String Number,int Score){
        this.Name = Name;
        this.Number = Number;
        this.Score = Score;
        this.Class = Class;
    }
    
    public void SetName(String Name){
        this.Name = Name;
    }
    
    public void SetNumber(String Number){
        this.Number = Number;
    }
    
    public void SetClass(String Class){
        this.Class = Class;
    }
    
    public void SetScore(int Score){
        this.Score = Score;
    }
    
    public String GetName(){
        return Name;
    }
    
    public String GetNumber(){
        return Number;
    }
    
    public String GetClass(){
        return Class;
    }
    
    public int GetScore(){
        return Score;
    } 
}
主程序;

import java.io.*;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Students extends Application{
    static int i = 0;
    private TextField setName = new TextField();
    private TextField setNumber = new TextField();
    private TextField setClass = new TextField();
    private TextField setGrade = new TextField();
    Stage stage = new Stage();
    
    @Override
    public void start(Stage primaryStage) throws Exception {//声明异常
        GridPane pane = new GridPane();
        
        pane.setHgap(20);
        pane.setVgap(10);
        
        Button[] bt = new Button[7];
        bt[1] = new Button("清空学生数据库");
        bt[2] = new Button("增添学生数据");
        bt[3] = new Button("删除学生数据");
        bt[4] = new Button("修改学生数据");
        bt[5] = new Button("查看学生数据");
        bt[6] = new Button("显示所有学生数据");
        bt[0] = new Button("退出应用");
        
        pane.add(new Label("\t\t"), 2, 0);
        pane.add(new Label("\t\t"), 0, 0);
        pane.add(bt[1], 1, 1);
        pane.add(bt[2], 1, 2);
        pane.add(bt[3], 1, 3);
        pane.add(bt[4], 1, 4);
        pane.add(bt[5], 1, 5);
        pane.add(bt[6], 1, 6);
        pane.add(bt[0], 1, 7);
        pane.add(new Label("\t\t"), 1, 9);
        
        Pane pane2 = new Pane();
        Rectangle rectangle;
        for(int j = 0; j < 20; j ++)
            for(int c = 0; c < 20; c ++){
                rectangle = new Rectangle(j * 20, c * 20, 20, 20);
                rectangle.setFill(Color.color(Math.random(), Math.random(), Math.random(), 0.3));
                pane2.getChildren().addAll(rectangle);
        }//作为背景存在
        pane2.getChildren().addAll(pane);//将pane面板覆盖在pane2上
        Scene scene = new Scene(pane2, 290, 350);//定义面板大小
        stage.setTitle("Students");
        stage.setScene(scene);
        stage.show();
        
        bt[0].setOnAction(e -> EXIT());
        bt[1].setOnAction(e -> closeStudents());
        bt[2].setOnAction(e -> addStudents());
        bt[3].setOnAction(e -> deleteStudents());
        bt[4].setOnAction(e -> amendStudents());
        bt[5].setOnAction(e -> checkStundets());
        bt[6].setOnAction(e -> {
            try {
                checkallStudents();
            } 
            catch (FileNotFoundException ex) {//捕获异常
                Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
            }
        });
    }
    
    public static void main(String[] args){
        Application.launch(args);
    }

    private void EXIT() {//关闭界面,结束程序
        stage.close();
    }

    private void closeStudents() {//清空数据
        
        Pane pane = new Pane();
        Text text = new Text(200, 200, "你确定要删除所有数据!");
        text.setFill(Color.RED);
        text.setFont(Font.font(20));//定义字体大小
        
        Button bt1 = new Button("Ok");
        Button bt2 = new Button("no");
        bt1.setLayoutX(200);
        bt1.setLayoutY(230);
        bt2.setLayoutX(350);
        bt2.setLayoutY(230);
        
        Image image = new Image("http://i-7.vcimg.com/trim/0c0a306c6947c8c125c52a25850a22181611368/trim.jpg");//获取图片
        ImageView imageview = new ImageView(image);
        imageview.setFitHeight(448);
        imageview.setFitWidth(600);//更改图片大小
        pane.getChildren().add(imageview);
        
        pane.getChildren().addAll(text, bt1, bt2);
        Scene scene = new Scene(pane);
        stage.setScene(scene);
        
        bt1.setOnAction(e -> {
            try {
                YES();
            } 
            catch (FileNotFoundException ex) {
                Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
            }
        });
        
        bt2.setOnAction(e -> {
            try {
                start(stage);//返回主界面
            } 
            catch (Exception ex) {
                Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
            }
        });
    }
    
    private void YES() throws FileNotFoundException{//确定清除数据
        File fl = new File("Students.txt");
        try (PrintWriter output = new PrintWriter(fl)) {
        }//向文件中写入新的学生信息
        
        File Fl = new File("Number.txt");
        try(PrintWriter output = new PrintWriter(Fl)){
            output.print(0);//定义学生数量为0
        }
        
        Text text = new Text(100, 100, "程序已将所有数据删除!\n你现在有以下两种选择:");
        Button bt1 = new Button("添加学生");
        Button bt2 = new Button("退出应用");
        bt1.setLayoutX(130);
        bt1.setLayoutY(130);
        bt2.setLayoutX(130);
        bt2.setLayoutY(180);
        
        Pane pane = new Pane();
        pane.getChildren().addAll(text, bt1, bt2);
        Scene scene = new Scene(pane,350, 300);
        
        stage.setScene(scene);
        
        bt1.setOnAction(e -> addStudents());
        bt2.setOnAction(e -> EXIT());
    }
    
    private void addStudents() {//添加学生1

        Button bt = new Button("OK");
        GridPane pane = new GridPane();
        pane.setHgap(20);
        pane.setVgap(10);
        
        pane.add(new Label("new student's name:"), 0, 1);
        pane.add(setName, 1, 1);
        pane.add(new Label("new student's class:"), 0, 2);
        pane.add(setClass, 1, 2);
        pane.add(new Label("new student's number:"), 0, 3);
        pane.add(setNumber, 1, 3);
        pane.add(new Label("new student's grade:"), 0, 4);
        pane.add(setGrade, 1, 4);
        pane.add(bt, 1, 5);
        
        Scene scene = new Scene(pane);
        stage.setTitle("new Staudents");
        stage.setScene(scene);
        
        bt.setOnAction(e -> {
            try {
                addstudents();
            } 
            catch (Exception ex) {
                Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
            }
        });
    }

    private void addstudents() throws Exception {//添加学生2
        
        Student stu = new Student(setName.getText(), setClass.getText(), 
                 setNumber.getText(), Integer.parseInt(setGrade.getText()));//使用自定义的类暂时储存数据
       
       File Fl = new File("Number.txt");
       try (Scanner input = new Scanner(Fl)) {
            i = input.nextInt();
        }
       catch(Exception e){
           i = 0;
       }
       
        try (FileWriter out = new FileWriter("Students.txt",true)) {
            out.write("\t");
            out.write(stu.GetName() + "\t");
            out.write(stu.GetClass() + "\t");
            out.write(stu.GetNumber() + "\t");
            out.write(stu.GetScore() + "\n");
        }
        
        i++;
        try(PrintWriter output = new PrintWriter(Fl)){
                output.print(i);
            }
         
        start(stage);
    }

    private void deleteStudents() {//删除学生1
        Text text = new Text(100, 100, "请输入你要操作学员的学号:");
        setNumber.setLayoutX(100);
        setNumber.setLayoutY(120);
        Button bt = new Button("ok");
        bt.setLayoutX(170);
        bt.setLayoutY(165);
        Pane pane = new Pane();
        pane.getChildren().addAll(text, setNumber, bt);
        
        Scene scene = new Scene(pane, 400, 280);
        stage.setScene(scene);
        
        bt.setOnAction(e -> {
            try {
                deletestudents();
            } 
            catch (FileNotFoundException ex) {
                Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
            }
        });
    }
    
    private void deletestudents() throws FileNotFoundException{//删除学生2
        File Fl = new File("Number.txt");
        File fl = new File("Students.txt");
        try (Scanner input = new Scanner(Fl)) {
            i = input.nextInt();
        }
        
        String Number = setNumber.getText();
        
        Student[] stu = new Student[i];
        int j;
        try(Scanner Input = new Scanner(fl)){
            for(j =0; j < i;j++){
                stu[j] = new Student(Input.next(), Input.next(), 
                        Input.next(), Input.nextInt());
                if(Number.compareTo(stu[j].GetNumber()) == 0){
                    Text text1 = new Text(100, 50, "name:\t" + stu[j].GetName());
                    Text text2 = new Text(100, 80, "class:\t" + stu[j].GetClass());
                    Text text3 = new Text(100, 120, "Number:\t" + stu[j].GetNumber());
                    Text text4 = new Text(100, 150, "grade:\t" + stu[j].GetScore());
                    
                    Button bt1 = new Button("delete");
                    Button bt2 = new Button("out");
                    bt1.setLayoutX(100);
                    bt1.setLayoutY(180);
                    bt2.setLayoutX(200);
                    bt2.setLayoutY(180);
                    Pane pane = new Pane();
                    pane.getChildren().addAll(text1, text2, text3, text4, bt1, bt2);
                    Scene scene = new Scene(pane, 350, 280);
                    stage.setScene(scene);
                    
                    bt1.setOnAction(e -> {
                        try {
                            detele();
                        } 
                        catch (FileNotFoundException ex) {
                            Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
                        }
                        catch (Exception ex) {
                            Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    });
                    bt2.setOnAction(e -> {
                        try {
                            start(stage);
                        } 
                        catch (Exception ex) {
                            Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    });
                    break;
                }
            }
            
            if(j == i ){
                Text text = new Text(100, 100, "No fond this person!");
                text.setFill(Color.RED);
                Button bt1 = new Button("again");
                Button bt2 = new Button("out");
                bt1.setLayoutX(100);
                bt1.setLayoutY(130);
                bt2.setLayoutX(200);
                bt2.setLayoutY(130);
                Pane pane = new Pane();
                pane.getChildren().addAll(text, bt1, bt2);
                
                Scene scene = new Scene(pane, 350, 250);
                stage.setScene(scene);
                
                bt1.setOnAction(e -> deleteStudents());
                bt2.setOnAction(e -> {
                    try {
                        start(stage);
                    } 
                    catch (Exception ex) {
                        Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
                    }
                });
            }
        }
    }

    private void detele() throws FileNotFoundException, Exception {//删除学生3
        File Fl = new File("Number.txt");
        File fl = new File("Students.txt");
        try (Scanner input = new Scanner(Fl)) {
            i = input.nextInt();
        }
        
        String Number = setNumber.getText();
        
        Student[] stu = new Student[i];
        try(Scanner Input = new Scanner(fl)){
            for(int j =0; j < i;j++){
                stu[j] = new Student(Input.next(), Input.next(), 
                        Input.next(), Input.nextInt());
                if(Number.compareTo(stu[j].GetNumber()) == 0){//确定删除则用下一组数据,将要删除的数据覆盖
                    i --;
                    j --;
                }
            }
        }
        
        try(PrintWriter output = new PrintWriter(Fl)){
            output.print(i);
        }
        
        if(i == 0){//如果删除后的学生数量为0,则不输入如何学生数据,使文件的内容为空
            try (PrintWriter output = new PrintWriter(fl)) {
            }
        }
        else{
            try (PrintWriter output = new PrintWriter(fl)) {
                for(int j = 0;j < i;j ++){
                    output.print(stu[j].GetName() + "\t");
                    output.print(stu[j].GetNumber() + "\t");
                    output.print(stu[j].GetClass() + "\t");
                    output.println(stu[j].GetScore());
                }
            }
        }
        start(stage);
    }

    private void amendStudents() {//修改学生1
        Pane pane = new Pane(); 
        Text text = new Text(100, 100.0, "请输入你要操作学员的学号:");
        setNumber.setLayoutX(100);
        setNumber.setLayoutY(120);
        
        
        
        Rectangle rectangle;
        for(int j = 0; j < 20; j ++)
            for(int c = 0; c < 20; c ++){
                rectangle = new Rectangle(j * 20, c * 20, 20, 20);
                rectangle.setFill(Color.color(Math.random(), Math.random(), Math.random(), 0.3));
                pane.getChildren().addAll(rectangle);
        }
        Button bt = new Button("ok");
        bt.setLayoutX(170);
        bt.setLayoutY(165);
        pane.getChildren().addAll(text, setNumber, bt);//画面重合时,添加的先后顺序决定了那个类型覆盖在另一个类型上
        
        
        
        Scene scene = new Scene(pane, 400, 280);
        stage.setScene(scene);
        
        bt.setOnAction(e -> {
            try {
                amendstudents();
            } 
            catch (FileNotFoundException ex) {
                Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
            }
        });
    }

    private void amendstudents() throws FileNotFoundException {//修改学生2
        File Fl = new File("Number.txt");
        File fl = new File("Students.txt");
        try (Scanner input = new Scanner(Fl)) {
            i = input.nextInt();
        }
        
        String Number = setNumber.getText();
        
        Student[] stu = new Student[i];
        int j;
        try(Scanner Input = new Scanner(fl)){
            for(j =0; j < i;j++){
                stu[j] = new Student(Input.next(), Input.next(), 
                        Input.next(), Input.nextInt());
                if(Number.compareTo(stu[j].GetNumber()) == 0){
                    Text text1 = new Text(100, 50, "name:\t" + stu[j].GetName());
                    Text text2 = new Text(100, 80, "class:\t" + stu[j].GetClass());
                    Text text3 = new Text(100, 120, "Number:\t" + stu[j].GetNumber());
                    Text text4 = new Text(100, 150, "grade:\t" + stu[j].GetScore());
                    
                    Button bt1 = new Button("amend");
                    Button bt2 = new Button("out");
                    bt1.setLayoutX(100);
                    bt1.setLayoutY(180);
                    bt2.setLayoutX(200);
                    bt2.setLayoutY(180);
                    Pane pane = new Pane();
                    pane.getChildren().addAll(text1, text2, text3, text4, bt1, bt2);
                    Scene scene = new Scene(pane, 350, 280);
                    stage.setScene(scene);
                    
                    bt1.setOnAction(e -> amend());
                    bt2.setOnAction(e -> {
                        try {
                            start(stage);
                        } 
                        catch (Exception ex) {
                            Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    });
                    break;
                }
            }
            
            if(j == i ){
                Text text = new Text(100, 100, "No fond this person!");
                text.setFill(Color.RED);
                Button bt1 = new Button("again");
                Button bt2 = new Button("out");
                bt1.setLayoutX(100);
                bt1.setLayoutY(130);
                bt2.setLayoutX(200);
                bt2.setLayoutY(130);
                Pane pane = new Pane();
                pane.getChildren().addAll(text, bt1, bt2);
                
                Scene scene = new Scene(pane, 350, 250);
                stage.setScene(scene);
                
                bt1.setOnAction(e -> amendStudents());
                bt2.setOnAction(e -> {
                    try {
                        start(stage);
                    } 
                    catch (Exception ex) {
                        Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
                    }
                });
            }
        }
    }

    private void amend() {//修改学生3
        TextField newName = new TextField();
        TextField newClass = new TextField();
        TextField newNumber = new TextField();
        TextField newGrade = new TextField();
        
        Button bt = new Button("OK");
        GridPane pane = new GridPane();
        pane.setHgap(20);
        pane.setVgap(10);
        
        pane.add(new Label("new name:"), 0, 1);
        pane.add(newName, 1, 1);
        pane.add(new Label("new class:"), 0, 2);
        pane.add(newClass, 1, 2);
        pane.add(new Label("new number:"), 0, 3);
        pane.add(newNumber, 1, 3);
        pane.add(new Label("new grade:"), 0, 4);
        pane.add(newGrade, 1, 4);
        pane.add(bt, 1, 5);
        
        Scene scene = new Scene(pane);
        stage.setScene(scene);

        bt.setOnAction(e -> {
            try {
                Amend(newName, newClass,
                        newNumber, newGrade);
            } 
            catch (FileNotFoundException ex) {
                Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
            } catch (Exception ex) {
                Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
            }
        });
    }

    private void Amend(TextField newName, TextField newClass, TextField newNumber,
            TextField newGrade) throws FileNotFoundException, Exception {//修改学生4
        File Fl = new File("Number.txt");
        File fl = new File("Students.txt");
        try (Scanner input = new Scanner(Fl)) {
            i = input.nextInt();
        }
        
        String Number = setNumber.getText();
        
        Student[] stu = new Student[i];
        try(Scanner Input = new Scanner(fl)){
            for(int j =0; j < i;j++){
                stu[j] = new Student(Input.next(), Input.next(), 
                        Input.next(), Input.nextInt());
                if(Number.compareTo(stu[j].GetNumber()) == 0){
                    stu[j] = new Student(newName.getText(), newClass.getText(), 
                 newNumber.getText(), Integer.parseInt(newGrade.getText()));
                }
            }
        }
        
        try(PrintWriter output = new PrintWriter(Fl)){
            output.print(i);
        }
        
        if(i == 0){
            try (PrintWriter output = new PrintWriter(fl)) {
            }
        }
        else{
            try (PrintWriter output = new PrintWriter(fl)) {
                for(int j = 0;j < i;j ++){
                    output.print(stu[j].GetName() + "\t");
                    output.print(stu[j].GetNumber() + "\t");
                    output.print(stu[j].GetClass() + "\t");
                    output.println(stu[j].GetScore());
                }
            }
        }
        start(stage);
    }

    private void checkStundets() {//查看学生1
        Text text = new Text(100, 100, "请输入你要操作学员的学号:");
        setNumber.setLayoutX(100);
        setNumber.setLayoutY(120);
        Button bt = new Button("ok");
        bt.setLayoutX(170);
        bt.setLayoutY(165);
        Pane pane = new Pane();
        pane.getChildren().addAll(text, setNumber, bt);
        
        Scene scene = new Scene(pane, 400, 280);
        stage.setScene(scene);
        
        bt.setOnAction(e -> {
            try {
                checktudents();
            } 
            catch (FileNotFoundException ex) {
                Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
            }
        });
    }

    private void checktudents() throws FileNotFoundException {//查看学生2
        File Fl = new File("Number.txt");
        File fl = new File("Students.txt");
        try (Scanner input = new Scanner(Fl)) {
            i = input.nextInt();
        }
        
        String Number = setNumber.getText();
        
        Student[] stu = new Student[i];
        int j;
        try(Scanner Input = new Scanner(fl)){
            for(j =0; j < i;j++){
                stu[j] = new Student(Input.next(), Input.next(), 
                        Input.next(), Input.nextInt());
                if(Number.compareTo(stu[j].GetNumber()) == 0){
                    Text text1 = new Text(100, 50, "name:\t" + stu[j].GetName());
                    Text text2 = new Text(100, 80, "class:\t" + stu[j].GetClass());
                    Text text3 = new Text(100, 120, "Number:\t" + stu[j].GetNumber());
                    Text text4 = new Text(100, 150, "grade:\t" + stu[j].GetScore());
                    
                    Button bt2 = new Button("out");
                    bt2.setLayoutX(100);
                    bt2.setLayoutY(180);
                    Pane pane = new Pane();
                    pane.getChildren().addAll(text1, text2, text3, text4, bt2);
                    Scene scene = new Scene(pane, 280, 250);
                    stage.setScene(scene);
                    
                    bt2.setOnAction(e -> {
                        try {
                            start(stage);
                        } 
                        catch (Exception ex) {
                            Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    });
                    break;
                }
            }
            
            if(j == i ){
                Text text = new Text(100, 100, "No fond this person!");
                text.setFill(Color.RED);
                Button bt1 = new Button("again");
                Button bt2 = new Button("out");
                bt1.setLayoutX(100);
                bt1.setLayoutY(130);
                bt2.setLayoutX(200);
                bt2.setLayoutY(130);
                Pane pane = new Pane();
                pane.getChildren().addAll(text, bt1, bt2);
                
                Scene scene = new Scene(pane, 350, 250);
                stage.setScene(scene);
                
                bt1.setOnAction(e -> amendStudents());
                bt2.setOnAction(e -> {
                    try {
                        start(stage);
                    } 
                    catch (Exception ex) {
                        Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
                    }
                });
            }
        }
    }

    private void checkallStudents() throws FileNotFoundException {//显示所有学生数据
        File Fl = new File("Number.txt");
        File fl = new File("Students.txt");
        try (Scanner input = new Scanner(Fl)) {
            i = input.nextInt();
        }
        
        GridPane pane = new GridPane();
        pane.setHgap(20);
        pane.setVgap(10);
        
        pane.add(new Label("次序") , 0, 0);
        pane.add(new Label("姓名"), 1, 0);
        pane.add(new Label("班级"), 2, 0);
        pane.add(new Label("学号"), 3, 0);
        pane.add(new Label("成绩"), 4, 0);
        Student[] stu = new Student[i];
        Text[][] text = new Text[i][4];
        int j;
        try(Scanner Input = new Scanner(fl)){
            for(j =0; j < i;j++){
                stu[j] = new Student(Input.next(), Input.next(), 
                        Input.next(), Input.nextInt());
                text[j][0] = new Text(stu[j].GetName());
                text[j][1] = new Text(stu[j].GetClass());
                text[j][2] = new Text(stu[j].GetNumber());
                text[j][3] = new Text("" + stu[j].GetScore());
                pane.add(new Label("" + j + 1), 0, j + 1);
                pane.add(text[j][0], 1, j + 1);
                pane.add(text[j][1], 2, j + 1);
                pane.add(text[j][2], 3, j + 1);
                pane.add(text[j][3], 4, j + 1);
            }
        }
        Button bt = new Button("out");
        pane.add(bt, 2, j + 1);
        
        bt.setOnAction(e -> {
            try {
                start(stage);
            } 
            catch (Exception ex) {
                Logger.getLogger(Students.class.getName()).log(Level.SEVERE, null, ex);
            }
        });
        Scene scene = new Scene(pane);
        stage.setScene(scene);
    }
}


  • 27
    点赞
  • 230
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值