目录
该成绩管理系统共有增添学生数据、删除学生数据、修改学生数据、查看学生数据以及显示学生数据(按平均分排列)五个功能,该系统未使用数据库,使用了excel表格来保存数据(表格在你代码保存路径那里生成)
1.主界面
public class system extends Application{
static int index = -1;
private TextField setid = new TextField();
private TextField setname = new TextField();
private TextField setmath = new TextField();
private TextField setEnglish = new TextField();
private TextField setalgorithm = new TextField();
private TextField setoperate = new TextField();
Label addtext=new Label(" ");
Stage stage = new Stage();
private Student student;
@Override
public void start(Stage arg0) throws Exception {
Button[] bt = new Button[6];
bt[1] = new Button("增添学生数据");
bt[2] = new Button("删除学生数据");
bt[3] = new Button("修改学生数据");
bt[4] = new Button("查看学生数据");
bt[5] = new Button("显示学生数据");
bt[0] = new Button("退出应用");
Text text = new Text(50, 50, "欢迎使用");
text.setFont(Font.font("宋体", FontWeight.BOLD,
FontPosture.ITALIC, 36));
Text text1 = new Text(50, 50, "学生成绩管理系统");
text1.setFont(Font.font("宋体", FontWeight.BOLD,
FontPosture.ITALIC, 36));
Text text2 = new Text(50, 50, " ");
VBox pane=new VBox(40);
pane.setAlignment(Pos.BASELINE_CENTER);
pane.getChildren().add(text);
pane.getChildren().add(text1);
pane.getChildren().add(text2);
pane.getChildren().add(bt[1]);
pane.getChildren().add(bt[2]);
pane.getChildren().add(bt[3]);
pane.getChildren().add(bt[4]);
pane.getChildren().add(bt[5]);
pane.getChildren().add(bt[0]);
BorderPane pane0 = new BorderPane();
Rectangle rectangle;
Image image = new Image("https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fwww.keaidian.com%2Fuploads%2Fallimg%2F190504%2F04150928_28.jpg&refer=http%3A%2F%2Fwww.keaidian.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1643211381&t=5cc837837f8949cfaa9fd68721614dca");//获取图片
ImageView imageview = new ImageView(image);
imageview.setFitHeight(800);
imageview.setFitWidth(800);//更改图片大小
pane0.getChildren().add(imageview);
pane0.setCenter(pane);//将pane面板覆盖在pane2上
Scene scene = new Scene(pane0, 800, 800);//定义面板大小
stage.setTitle("广东外语外贸大学");
stage.setScene(scene);
stage.show();
bt[0].setOnAction(e -> EXIT());
bt[1].setOnAction(e -> {
try {
addStudents();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
bt[2].setOnAction(e -> deleteStudents());
bt[3].setOnAction(e -> amendStudents());
bt[4].setOnAction(e ->checkStundets());
bt[5].setOnAction(e ->{
try {
showscore();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
}
public static void main(String[] args){
String fileName = "studentscore.csv";
try{
File file = new File("studentscore.csv");
if(file.createNewFile())
System.out.println("文件创建成功!");
else
System.out.println("该文件已经存在。");
}
catch(IOException ioe) {
ioe.printStackTrace();
}
launch(args);
}
private void EXIT() {//关闭界面,结束程序
stage.close();
}
2.增添学生数据
这里要求必须输入全部数据,否则不能添加,另外当学生重复时也不能添加。
部分代码
private void addstudents() throws Exception {
ArrayList<Student> students = new ArrayList<Student>();
readFile("studentscore.csv",students);
boolean h = true;
if(setid.getText().length()<1||setname.getText().length()<1|| setmath.getText().length()<1||setEnglish.getText().length()<1||setalgorithm.getText().length()<1||setoperate.getText().length()<1) {
addtext.setText("请输入学生全部信息");
}
else {
for (Student student : students) {
if (setid.getText().equals(student.getId())) {
h = false;
VBox pane=new VBox(40);
pane.setAlignment(Pos.BASELINE_CENTER);
HBox pane1=new HBox(5);
pane1.setAlignment(Pos.BASELINE_CENTER);
Text text = new Text(100, 100, "系统已有该学生!");
text.setFont(Font.font("宋体", FontWeight.BOLD,
FontPosture.ITALIC, 36));
text.setFill(Color.RED);
Text text1 = new Text(50, 50, " ");
Text text2 = new Text(50, 50, " ");
Text text3 = new Text(50, 50, " ");
Text text4 = new Text(50, 50, " ");
Button bt1 = new Button("重试");
Button bt2 = new Button("退出");
pane.getChildren().add(text1);
pane.getChildren().add(text2);
pane.getChildren().add(text);
pane.getChildren().add(text3);
pane.getChildren().add(pane1);
pane1.getChildren().add(bt1);
pane1.getChildren().add(text4);
pane1.getChildren().add(bt2);
3.删除学生数据
这里先按照学生学号查找进行查找,再确定是否删除
private void deleteStudents() {//删除学生1
VBox pane=new VBox(20);
pane.setAlignment(Pos.BASELINE_CENTER);
HBox pane1=new HBox(20);
pane1.setAlignment(Pos.BASELINE_CENTER);
HBox pane2=new HBox(20);
pane2.setAlignment(Pos.BASELINE_CENTER);
Text text = new Text(100, 100, "请输入你要删除学员的学号:");
text.setFont(Font.font("宋体", FontWeight.BOLD,
FontPosture.ITALIC, 20));
Text text1 = new Text(100, 100, " ");
Text text2 = new Text(100, 100, " ");
Button bt1 = new Button("确认");
Button bt2 = new Button("返回");
pane.getChildren().add(text1);
pane.getChildren().add(text2);
pane.getChildren().add(text);
pane.getChildren().add(pane1);
pane1.getChildren().add(setid);
pane.getChildren().add(pane2);
pane2.getChildren().add(bt1);
pane2.getChildren().add(bt2);
Scene scene = new Scene(pane, 400, 400);
stage.setScene(scene);
bt1.setOnAction(e -> {
try {
deletestudents();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
bt2.setOnAction(e ->{
try {
start(stage);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
}
private void deletestudents() throws IOException {
ArrayList<Student> students = new ArrayList<Student>();
readFile("studentscore.csv",students);
for (int i = 0; i < students.size(); i++) {
Student student = students.get(i);
if(setid.getText().equals(student.getId())) {
index = i;
Text text1 = new Text(160, 50, "学号:\t" +student.getId());
Text text2 = new Text(160, 80, "姓名:\t" + student.getName());
Text text3 = new Text(160, 120, "高等数学:\t" + student.getMath());
Text text4 = new Text(160, 150, "大学英语:\t" + student.getEnglish());
Text text5 = new Text(160, 180, "算法分析与设计:\t" + student.getAlgorithm());
Text text6 = new Text(160, 210, "操作系统:\t" + student.getOperate());
Button bt1 = new Button("删除");
Button bt2 = new Button("返回");
bt1.setLayoutX(135);
bt1.setLayoutY(240);
bt2.setLayoutX(235);
bt2.setLayoutY(240);
Pane pane = new Pane();
pane.getChildren().addAll(text1, text2, text3, text4,text5,text6, bt1, bt2);
Scene scene = new Scene(pane, 400, 400);
stage.setScene(scene);
bt1.setOnAction(e -> {
try {
detele();
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
bt2.setOnAction(e ->{
try {
index = -1;
deleteStudents();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
break;
}
}
if(index==-1){
VBox pane=new VBox(40);
pane.setAlignment(Pos.BASELINE_CENTER);
HBox pane1=new HBox(5);
pane1.setAlignment(Pos.BASELINE_CENTER);
Text text = new Text(100, 100, "系统无该学生信息!");
text.setFont(Font.font("宋体", FontWeight.BOLD,
FontPosture.ITALIC, 36));
text.setFill(Color.RED);
Text text1 = new Text(50, 50, " ");
Text text2 = new Text(50, 50, " ");
Text text3 = new Text(50, 50, " ");
Text text4 = new Text(50, 50, " ");
Button bt1 = new Button("重试");
Button bt2 = new Button("退出");
pane.getChildren().add(text1);
pane.getChildren().add(text2);
pane.getChildren().add(text);
pane.getChildren().add(text3);
pane.getChildren().add(pane1);
pane1.getChildren().add(bt1);
pane1.getChildren().add(text4);
pane1.getChildren().add(bt2);
Scene scene = new Scene(pane, 400, 400);
stage.setScene(scene);
bt1.setOnAction(e -> deleteStudents() );
bt2.setOnAction(e ->{
try {
start(stage);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
}
}
private void detele() throws Exception {
ArrayList<Student> students = new ArrayList<Student>();
readFile("studentscore.csv",students);
students.remove(index);
writeFile("studentscore.csv",students);
VBox pane=new VBox(40);
pane.setAlignment(Pos.BASELINE_CENTER);
Text text = new Text(180, 180, "删除成功!");
text.setFont(Font.font("宋体", FontWeight.BOLD,
FontPosture.ITALIC, 36));
text.setFill(Color.RED);
Text text1 = new Text(50, 50, " ");
Text text2 = new Text(50, 50, " ");
Text text3 = new Text(50, 50, " ");
Button bt = new Button("退出");
pane.getChildren().add(text1);
pane.getChildren().add(text2);
pane.getChildren().add(text);
pane.getChildren().add(text3);
pane.getChildren().add(bt);
Scene scene = new Scene(pane, 400, 400);
stage.setScene(scene);
bt.setOnAction(e ->{
try {
start(stage);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
}
4.修改学生数据
这里也是按照学号进行查找后进入修改界面
private void amendStudents() {//修改学生1
VBox pane=new VBox(20);
pane.setAlignment(Pos.BASELINE_CENTER);
HBox pane1=new HBox(20);
HBox pane2=new HBox(20);
pane1.setAlignment(Pos.BASELINE_CENTER);
pane2.setAlignment(Pos.BASELINE_CENTER);
Text text = new Text(100, 100, "请输入你要修改学员的学号:");
text.setFont(Font.font("宋体", FontWeight.BOLD,
FontPosture.ITALIC, 20));
Text text1 = new Text(100, 100, " ");
Text text2 = new Text(100, 100, " ");
Button bt1 = new Button("确认");
Button bt2 = new Button("返回");
pane.getChildren().add(text1);
pane.getChildren().add(text2);
pane.getChildren().add(text);
pane.getChildren().add(pane1);
pane1.getChildren().add(setid);
pane.getChildren().add(pane2);
pane2.getChildren().add(bt1);
pane2.getChildren().add(bt2);
Scene scene = new Scene(pane, 400, 400);
stage.setScene(scene);
bt1.setOnAction(e -> {
try {
amendstudents();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
bt2.setOnAction(e ->{
try {
start(stage);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
}
private void amendstudents() throws IOException {
Button bt = new Button("修改");
VBox pane=new VBox(20);
pane.setAlignment(Pos.BASELINE_CENTER);
HBox pane3=new HBox(5);
pane3.setAlignment(Pos.BASELINE_CENTER);
HBox pane4=new HBox(5);
pane4.setAlignment(Pos.BASELINE_CENTER);
HBox pane5=new HBox(5);
pane5.setAlignment(Pos.BASELINE_CENTER);
HBox pane6=new HBox(5);
pane6.setAlignment(Pos.BASELINE_CENTER);
Label title=new Label("请输入修改的成绩");
Font FontItalic=Font.font("宋体",FontWeight.NORMAL,FontPosture.ITALIC,36);
Label title3=new Label("高等数学 ");
Label title4=new Label("大学英语 ");
Label title5=new Label("算法分析与设计");
Label title6=new Label("操作系统 ");
pane.getChildren().add(title);
pane.getChildren().add(pane3);
pane3.getChildren().add(title3);
pane3.getChildren().add(setmath);
pane.getChildren().add(pane4);
pane4.getChildren().add(title4);
pane4.getChildren().add(setEnglish);
pane.getChildren().add(pane5);
pane5.getChildren().add(title5);
pane5.getChildren().add(setalgorithm);
pane.getChildren().add(pane6);
pane6.getChildren().add(title6);
pane6.getChildren().add(setoperate);
pane.getChildren().add(bt);
Scene scene = new Scene(pane,900,500);
stage.setTitle("修改成绩");
stage.setScene(scene);
bt.setOnAction(e ->{
try {
amend();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
}
private void amend() throws IOException {
ArrayList<Student> students = new ArrayList<Student>();
readFile("studentscore.csv",students);
boolean k = true;
for (int i = 0; i < students.size(); i++) {
if (students.get(i).getId().equals(setid.getText())) {
k = false;
if(setmath.getText().length()<1) {
students.get(i).setMath(students.get(i).getMath());
}
else {
students.get(i).setMath(setmath.getText());
}
if(setEnglish.getText().length()<1) {
students.get(i).setEnglish( students.get(i).getEnglish());
}
else {
students.get(i).setEnglish(setEnglish.getText());
}
if(setalgorithm.getText().length()<1) {
students.get(i).setAlgorithm(students.get(i).getAlgorithm());
}
else {
students.get(i).setAlgorithm(setalgorithm.getText());
}
if(setoperate.getText().length()<1) {
students.get(i).setOperate( students.get(i).getOperate());
}
else {
students.get(i).setOperate(setoperate.getText());
}
writeFile("studentscore.csv",students);
// Text text = new Text( "修改成功!");
// text.setFill(Color.RED);
Text text = new Text(50, 50, "修改成功");
text.setFont(Font.font("宋体", FontWeight.BOLD,
FontPosture.ITALIC, 36));
Button bt = new Button("退出");
VBox pane=new VBox(100);
pane.setAlignment(Pos.BASELINE_CENTER);
pane.getChildren().add(text);
pane.getChildren().add(bt);
Scene scene = new Scene(pane, 700, 400);
stage.setScene(scene);
bt.setOnAction(e ->{
try {
start(stage);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
break;
}
}
if(k){
Text text = new Text(100, 100, "系统无该学生信息!");
text.setFill(Color.RED);
Button bt1 = new Button("重试");
Button bt2 = new Button("退出");
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 e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
}
}
5.查看学生数据
学号查找
private void checkStundets() {//查看学生1
VBox pane=new VBox(20);
pane.setAlignment(Pos.BASELINE_CENTER);
HBox pane1=new HBox(20);
pane1.setAlignment(Pos.BASELINE_CENTER);
HBox pane2=new HBox(20);
pane2.setAlignment(Pos.BASELINE_CENTER);
Text text = new Text(100, 100, "请输入你要查看学员的学号:");
text.setFont(Font.font("宋体", FontWeight.BOLD,
FontPosture.ITALIC, 20));
Text text1 = new Text(100, 100, " ");
Text text2 = new Text(100, 100, " ");
Button bt1 = new Button("确认");
Button bt2 = new Button("返回");
pane.getChildren().add(text1);
pane.getChildren().add(text2);
pane.getChildren().add(text);
pane.getChildren().add(pane1);
pane1.getChildren().add(setid);
pane.getChildren().add(pane2);
pane2.getChildren().add(bt1);
pane2.getChildren().add(bt2);
Scene scene = new Scene(pane, 400, 400);
stage.setScene(scene);
bt1.setOnAction(e ->{
try {
checktudents();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
bt2.setOnAction(e ->{
try {
start(stage);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
}
private void checktudents() throws IOException {
ArrayList<Student> students = new ArrayList<Student>();
readFile("studentscore.csv",students);
boolean count = true;
for (Student student : students) {
if(setid.getText().equals(student.getId())) {
count = false;
Text text1 = new Text(160, 50, "学号:\t" +student.getId());
Text text2 = new Text(160, 80, "姓名:\t" + student.getName());
Text text3 = new Text(160, 120, "高等数学:\t" + student.getMath());
Text text4 = new Text(160, 150, "大学英语:\t" + student.getEnglish());
Text text5 = new Text(160, 180, "算法分析与设计:\t" + student.getAlgorithm());
Text text6 = new Text(160, 210, "操作系统:\t" + student.getOperate());
Button bt2 = new Button("返回");
bt2.setLayoutX(200);
bt2.setLayoutY(250);
Pane pane = new Pane();
pane.getChildren().addAll(text1, text2, text3, text4,text5,text6, bt2);
Scene scene = new Scene(pane, 500, 500);
stage.setScene(scene);
bt2.setOnAction(e ->{
try {
start(stage);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
break;
}
}
if(count){
Text text = new Text(100, 100, "未找到该学生信息!");
text.setFill(Color.RED);
Button bt1 = new Button("重试");
Button bt2 = new Button("退出");
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 -> checkStundets());
bt2.setOnAction(e ->{
try {
start(stage);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
}
}
6.显示学生数据
private void showscore() throws IOException {
ArrayList<Student> students = new ArrayList<Student>();
readFile("studentscore.csv",students);
ArrayList<avestudent> stu = new ArrayList<avestudent>();
for (int i = 0; i < students.size(); i++) {
Student student = students.get(i);
avestudent count = new avestudent();
count.setId(student.getId());
count.setName(student.getName());
count.setMath(Float.parseFloat(student.getMath()));
count.setEnglish(Float.parseFloat(student.getEnglish()));
count.setAlgorithm(Float.parseFloat(student.getAlgorithm()));
count.setOperate(Float.parseFloat(student.getOperate()));
float ave=(float) count.getAverage(count);
count.setAverage(ave);
stu.add(count);
}
for(int i=0;i<stu.size();i++) {
for(int j=i+1;j<stu.size();j++) {
if( stu.get(i).getAverage()<stu.get(j).getAverage()) {
avestudent s=new avestudent(stu.get(i).getId(),stu.get(i).getName(),stu.get(i).getMath(),stu.get(i).getEnglish(),stu.get(i).getAlgorithm(),stu.get(i).getOperate(),stu.get(i).getAverage());
stu.get(i).setId(stu.get(j).getId());
stu.get(i).setName(stu.get(j).getName());
stu.get(i).setMath(stu.get(j).getMath());
stu.get(i).setEnglish(stu.get(j).getEnglish());
stu.get(i).setAlgorithm(stu.get(j).getAlgorithm());
stu.get(i).setOperate(stu.get(j).getOperate());
stu.get(i).setAverage(stu.get(j).getAverage());
stu.get(j).setId(s.getId());
stu.get(j).setName(s.getName());
stu.get(j).setMath(s.getMath());
stu.get(j).setEnglish(s.getEnglish());
stu.get(j).setAlgorithm(s.getAlgorithm());
stu.get(j).setOperate(s.getOperate());
stu.get(j).setAverage(s.getAverage());
}
}
}
GridPane pane = new GridPane();
pane.setHgap(40);
pane.setVgap(60);
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);
pane.add(new Label("操作系统"), 5, 0);
pane.add(new Label("平均分"), 6, 0);
pane.add(new Label("名次"), 7, 0);
Text[][] text = new Text[stu.size()][8];
int count=0;
for (int i = 0; i < stu.size(); i++) {
avestudent student = stu.get(i);
text[i][0] = new Text("" + student.getId());
text[i][1] = new Text("" + student.getName());
text[i][2] = new Text("" + student.getMath());
text[i][3] = new Text("" + student.getEnglish());
text[i][4] = new Text("" + student.getAlgorithm());
text[i][5] = new Text("" + student.getOperate());
text[i][6] = new Text("" + student.getAverage());
for(;count<=i;) {
++count;
text[i][7] = new Text(""+count);
}
pane.add(text[i][0], 0, i + 1);
pane.add(text[i][1], 1, i + 1);
pane.add(text[i][2], 2, i + 1);
pane.add(text[i][3], 3, i + 1);
pane.add(text[i][4], 4, i + 1);
pane.add(text[i][5], 5, i + 1);
pane.add(text[i][6], 6, i + 1);
pane.add(text[i][7], 7, i + 1);
}
Button bt = new Button("返回");
pane.add(bt, 3, students.size() + 1);
Scene scene = new Scene(pane);
stage.setScene(scene);
bt.setOnAction(e ->{
try {
start(stage);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
});
}
源代码请私信