【案例分享】JavaFX实现简单学生成绩管理系统

  • Post author:
  • Post category:java




【案例分享】JavaFX实现简单学生成绩管理系统



一、实现功能

使用JAVA实现一个班级学生成绩的管理功能:包括学生成绩的添加,学生成绩的删除,成绩的修改,学生成绩的查找(根据学号查找),以及按照学生平均成绩进行排名并显示。



二、实现效果



(1)开始进入界面

在这里插入图片描述



(2)注册界面

在这里插入图片描述

在这里插入图片描述



(3)登录界面

在这里插入图片描述



(4)登录成功后的界面

在这里插入图片描述



(5)点击添加学生成绩后的界面

在这里插入图片描述

在这里插入图片描述



(6)点击删除学生成绩

在这里插入图片描述

在这里插入图片描述

点击删除单科成绩时

在这里插入图片描述

在这里插入图片描述



(7)点击修改学生成绩后的界面

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

修改成绩能实现即时更新~



(8)通过学号查找学生成绩

在这里插入图片描述

在这里插入图片描述



(9)点击平均分排序后的界面

在这里插入图片描述



三、实现代码

由于当时学习的时候还不太会处理class和全局变量之类的,所以代码全挤在一个java文件里面了,所以足足有一千多行.……(接受批评但是不接受辱骂私密马赛

完整代码在本文最下面^^

在这里插入图片描述



这里挑部分进行代码展示~



1. 添加学生成绩

public class Score_add {// 添加学生成绩窗口
        Stage stage = new Stage();

        public Score_add() {
            //布局
            BorderPane pane1 = new BorderPane();//总窗口
            GridPane pane = new GridPane();//label和text field布局
            HBox bt = new HBox(25);//放置按钮
            HBox textBox = new HBox(25);//放置标题

            //按钮
            bt.setAlignment(Pos.CENTER);
            bt.setPadding(new Insets(11.5, 12.5, 13.5, 14.5));
            Button quedin = new Button("确定");
            quedin.setStyle("-fx-base:lightblue");
            quedin.setPrefSize(70, 50);
            quedin.setFont(Font.font(20));
            Button quxiao = new Button("取消");
            quxiao.setStyle("-fx-base:lightblue");
            quxiao.setPrefSize(70, 50);
            quxiao.setFont(Font.font(20));
            bt.getChildren().add(quedin);
            bt.getChildren().add(quxiao);

            //label和text field
            //输入框
            TextField name = new TextField();
            TextField Sno = new TextField();
            TextField math = new TextField();
            TextField english = new TextField();
            TextField java = new TextField();
            TextField OS = new TextField();
            TextField PE = new TextField();

            //添加到面板中
            pane.add(new Label("姓名:"), 0, 1);
            pane.add(name, 1, 1);
            pane.add(new Label("学号:"), 0, 2);
            pane.add(Sno, 1, 2);
            pane.add(new Label("高等数学成绩:"), 0, 3);
            pane.add(math, 1, 3);
            pane.add(new Label("大学英语成绩:"), 0, 4);
            pane.add(english, 1, 4);
            pane.add(new Label("java程序设计成绩:"), 0, 5);
            pane.add(java, 1, 5);
            pane.add(new Label("操作系统成绩:"), 0, 6);
            pane.add(OS, 1, 6);
            pane.add(new Label("体育成绩:"), 0, 7);
            pane.add(PE, 1, 7);

            pane.setAlignment(Pos.CENTER);
            pane.setPadding(new Insets(11.5, 12.5, 13.5, 14.5));
            pane.setHgap(5.5);
            pane.setVgap(5.5);
            pane.setStyle("-fx-font-size:20px");

            //标题
            Text add = new Text("添加学生成绩");
            add.setStyle("-fx-font-size:30px");
            textBox.setAlignment(Pos.CENTER);
            textBox.setPadding(new Insets(11.5, 12.5, 13.5, 14.5));
            textBox.getChildren().add(add);

            //排列
            pane1.setTop(textBox);
            pane1.setCenter(pane);
            pane1.setBottom(bt);

            //创建一个新的学生类
            student[peo] = new Student();

            quedin.setOnAction(e -> {//点击确定
                //将输入的内容复制到student[peo]信息中
                student[peo].name=name.getText();
                student[peo].Sno=Sno.getText();
                student[peo].math=Double.valueOf(math.getText());
                student[peo].english=Double.valueOf(english.getText());
                student[peo].java=Double.valueOf(java.getText());
                student[peo].OS=Double.valueOf(OS.getText());
                student[peo].PE=Double.valueOf(PE.getText());

                //计算平均分
                sum =0.0;
                if(student[peo].math>=0)
                    sum+=student[peo].math;
                if(student[peo].english>=0)
                    sum+=student[peo].english;
                if(student[peo].java>=0)
                    sum+=student[peo].java;
                if(student[peo].OS>=0)
                    sum+=student[peo].OS;
                if(student[peo].PE>=0)
                    sum+=student[peo].PE;
                student[peo].GPA = sum/5;

                flag1=0;flag2=0;//flag1=1表示学号重复,flag2=1表示输入的成绩有误
                //学号查重
                for (d = 0; d <peo; d++) {
                    if (student[d].name.equals(name.getText())) {
                        TipsWin tip = new TipsWin("该学号已存在!");
                        flag1=1;
                        break;
                    }
                }
                if (flag1==0) {
                    //判断输入的成绩是否有误
                    if (student[peo].math<0.0||student[peo].math>100.00||student[peo].english<0.0||student[peo].english>100.00||
                            student[peo].java<0.0||student[peo].java>100.00||student[peo].OS<0.0||student[peo].OS>100.00||
                            student[peo].PE<0.0||student[peo].PE>100.00) {
                        TipsWin tipsWin = new TipsWin("输入有误\n 请重新输入!");
                        flag2=1;//表示有误
                    }
                    if (flag2==0) {
                        if(student[peo].name.length()==4) {
                            text.appendText(padLeft(student[peo].name,14,' '));
                        }
                        if(student[peo].name.length()==3) {
                            text.appendText(padLeft(student[peo].name,16,' '));
                        }
                        if(student[peo].name.length()==2) {
                            text.appendText(padLeft(student[peo].name,18,' '));
                        }
                        text.appendText(padLeft(student[peo].Sno,15,' '));
                        text.appendText(padLeft(String.valueOf(student[peo].math),15,' '));
                        text.appendText(padLeft(String.valueOf(student[peo].english),15,' '));
                        text.appendText(padLeft(String.valueOf(student[peo].java),15,' '));
                        text.appendText(padLeft(String.valueOf(student[peo].OS),15,' '));
                        text.appendText(padLeft(String.valueOf(student[peo].PE),15,' '));
                        text.appendText(padLeft(String.valueOf(student[peo].GPA),15,' ')+"\n");

                        peo++;//学生数+1
                        //输入完成后写入文件保存
                        write();
                        stage.close();
                        TipsWin tipsWin = new TipsWin("添加成功!");
                    }
                }
            });
            quxiao.setOnAction(e -> {
                stage.close();
            });

            Scene scene = new Scene(pane1, 600, 550);
            stage.setTitle("添加学生成绩"); // Set the stage title
            stage.setScene(scene); // Place the scene in the stage
            stage.show(); // Display the stage
        }
    }



2. 查找学生成绩

    public class findFormation {// 查找学生成绩总窗口
        Stage stage = new Stage();
        int index=-1;
        public findFormation() {
            //布局
            BorderPane pane1 = new BorderPane();//总窗口
            GridPane pane = new GridPane();//label和text field布局
            HBox bt = new HBox(25);//放置按钮
            HBox textBox = new HBox(25);//放置标题

            //按钮
            bt.setAlignment(Pos.CENTER);
            bt.setPadding(new Insets(11.5, 12.5, 13.5, 14.5));
            Button quedin = new Button("确定");
            quedin.setStyle("-fx-base:lightblue");
            quedin.setPrefSize(70, 50);
            quedin.setFont(Font.font(20));
            Button quxiao = new Button("取消");
            quxiao.setStyle("-fx-base:lightblue");
            quxiao.setPrefSize(70, 50);
            quxiao.setFont(Font.font(20));
            bt.getChildren().add(quedin);
            bt.getChildren().add(quxiao);

            //label和text field
            //输入框
            TextField Sno = new TextField();

            //添加到面板中
            pane.add(new Label("学号:"), 0, 1);
            pane.add(Sno, 1, 1);

            pane.setAlignment(Pos.CENTER);
            pane.setPadding(new Insets(11.5, 12.5, 13.5, 14.5));
            pane.setHgap(5.5);
            pane.setVgap(5.5);
            pane.setStyle("-fx-font-size:20px");

            //标题
            Text del = new Text("查找学生成绩");
            del.setStyle("-fx-font-size:30px");
            textBox.setAlignment(Pos.CENTER);
            textBox.setPadding(new Insets(11.5, 12.5, 13.5, 14.5));
            textBox.getChildren().add(del);

            //排列
            pane1.setTop(textBox);
            pane1.setCenter(pane);
            pane1.setBottom(bt);

            quedin.setOnAction(e -> {//点击确定
                for(int i=0; i<peo; i++) {
                    if(student[i].Sno.equals(Sno.getText())) {
                        index=i;
                        Show show = new Show(index);
                        stage.close();
                    }
                }
                if(index == -1) {
                    TipsWin tipsWin = new TipsWin("查无此学生信息!\n  请重新输入");
                }
            });
            quxiao.setOnAction(e -> {
                stage.close();
            });

            Scene scene = new Scene(pane1, 500, 300);
            stage.setTitle("查找学生成绩"); // Set the stage title
            stage.setScene(scene); // Place the scene in the stage
            stage.show(); // Display the stage
        }
    }

    public class Show{//查找后显示操作窗口
        Stage stage=new Stage();

        public Show(int index) {
            BorderPane pane = new BorderPane();//总窗口
            VBox bt = new VBox(25);//放置文本
            bt.setAlignment(Pos.CENTER);
            bt.setPadding(new Insets(11.5, 12.5, 13.5, 14.5));
            pane.setStyle("-fx-font-size:20px");

            //标题
            Text cho = new Text("学生成绩");
            cho.setStyle("-fx-font-size:30px");
            bt.getChildren().add(cho);

            //文本
            Text nameText = new Text("姓名:"+student[index].name);
            Text snoText = new Text("学号:"+student[index].Sno);
            Text mathText = new Text("高等数学:"+String.valueOf(student[index].math));
            Text englishText = new Text("大学英语:"+String.valueOf(student[index].english));
            Text JavaText = new Text("java程序设计:"+String.valueOf(student[index].java));
            Text OSText = new Text("操作系统:"+String.valueOf(student[index].OS));
            Text PEText = new Text("体育:"+String.valueOf(student[index].PE));
            Text GPAText = new Text("平均分:"+String.valueOf(student[index].GPA));

            bt.getChildren().addAll(nameText,snoText,mathText,englishText,JavaText,OSText,PEText,GPAText);

            //按钮
            Button quxiao = new Button("关闭");
            quxiao.setPrefSize(100, 40);
            quxiao.setFont(Font.font(20));
            bt.getChildren().add(quxiao);

            //排列
            pane.setCenter(bt);

            //按钮触发事件
            quxiao.setOnAction(e->{
                stage.close();
            });

            Scene scene = new Scene(pane, 500, 600);
            stage.setTitle("查找学生成绩"); // Set the stage title
            stage.setScene(scene); // Place the scene in the stage
            stage.show(); // Display the stage
        }
    }

其他的就不展示啦~实在是太多了,是本人大二时与两个组员一起完成的作业,总之有很多不足的地方,欢迎大家一起交流讨论鸭。

这是完整代码链接↓(不收钱哒!大家如果下载的话点个赞就好啦谢谢大噶~

https://download.csdn.net/download/nabobess/70249599



版权声明:本文为nabobess原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。