当前位置:   article > 正文

java程序设计基础——学生管理系统(JavaFX)_javafx现需开发一个具有界面和人机交互功能的程序,能够根据学号显示学生信息,也能

javafx现需开发一个具有界面和人机交互功能的程序,能够根据学号显示学生信息,也能

java程序设计基础——学生管理系统

系统功能

  • 添加学生信息
  • 查看学生信息
  • 删除学生信息
  • 修改学生信息
  • 保存学生信息
  • 导入学生信息

环境

JDK版本:1.8_152
  • 1

项目地址:

https://gitee.com/kkkkkba/javaFX/tree/master/

功能介绍

1、查找:

用户在输入学号或姓名后,点击查找,弹出对应学生信息的页面,同时设有删除,修改按钮,方便进一步对学生信息进行操作,当学生信息不存在或不匹配时,会弹出提示框。

2、添加:

用户在输入学号或姓名后,点击添加(也可不填写学号直接点击),弹出添加窗口,会自动将输入信息补入,只需将剩下信息不全即可,当学号重复和信息不全时,弹出提示界面。

3、删除:

用户在表单中选择用户后,点击删除即可,若数据太多,可以先以学号和姓名查找再进行删除

4、修改:

用户在表单中选择用户后,点击修改即可,若数据太多,可以先以学号和姓名查找再进行修改

5、导入:

用户点击后将“Input.txt”中的数据导入到表单中。

/*
文本信息要求:

1.每位学生对象应占一行,

2.每位学生信息按  学号 姓名 性别 生日 住址 联系电话 的顺序并以“,”分割,顺序有误会导致导入位置出错,信息不全会无法导入。
    
//学生信息样例
2020122104900,202000,女,2020-01-01,内蒙古农业大学新区,13488883241
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

6、导出:

用户点击后,可在“Output.txt”文件中查看导出后的数据

7、文件

//导出导入数据对应文件在根目录:src/main/java/kangbo 文件夹下
  • 1

系统设计

1、主页面

(1)界面

//主页面使用BorderPane布局方式,添加组件用到四个方法:
//顶部输入框及按钮
Top();
//中间表单部分
Center();
//底部按钮
Bottom();
//左右部分(设置表单与页面边框间距)
Side();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

kba

(2)顶部按钮

//添加:
//获取文本框内容,清除Message_gridPane数据并调用Home_Childinterface中AddMessage();方法
Home_Childinterface.AddMessage(idText,nameText);

//修改:
//当用户选择表单中的某学生后,会将学生对象存入temp中,调用Home_Childinterface中ReavmpMessage(temp);方法进行修改,修改后更新列表
Home_Childinterface.ReavmpMessage(temp);
Updatelist();

//删除:
//当用户选择表单中的某学生后,会将学生对象存入temp中,调用remove()方法进行删除删除后弹出提示页面并关闭窗口
Homepage.message.remove(temp);
Homepage.DeleteSure();
Updatelist();
Deletestage.close();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

(3)中部表格

//定义TableView通过setCenter方法将表格加入boderPane中
borderPane.setCenter(tableView);
//定义表格表头加入到TableView中
//定义ObservableList ,通过setItems()方法将数据添加进TableView中
  • 1
  • 2
  • 3
  • 4

(4)底部按钮

//按钮
//导入:调用Input()方法
//判断信息(字符串)是否符合要求,若符合则添加
message.add(student_message);

//导出:调用Output()方法
//将数据逐条toString()后调用FileIO.fileWrite写入Output.txt
FileIO.fileWrite(ss);

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

File IO类

//写入
public static void fileWrite(String s)
//读取
public static ArrayList<String> fileRead()
  • 1
  • 2
  • 3
  • 4
package kangbo.studentmanagementsystem;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

public class FileIO {
    private static FileWriter fileWriter;//按写入数据
    private static FileReader fileReader;//按字符读取数据
    private static BufferedReader cf;    //从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。
    private static BufferedWriter cw;    //文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入
    private static File file1 = new File("src/Input.txt");//输入文件
    private static File file2 = new File("src/Output.txt");//输出文件
    public static void fileWrite(String s) {
        try {
            //True表示新写入的内容会追加在旧内容之后
            fileWriter = new FileWriter(file2, true);
            cw = new BufferedWriter(fileWriter);
            cw.write(s);
        }
        catch (IOException e) {
            e.printStackTrace();//将此throwable和其追溯打印到指定的打印流。
        }
        finally {
            try {
                cw.close();
                fileWriter.close();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static ArrayList<String> fileRead() {
        try {
            fileReader = new FileReader(file1);
            cf = new BufferedReader(fileReader);
            ArrayList<String> ss = new ArrayList<String>();
            String s1 = "";
            while((s1 = cf.readLine()) != null)
                ss.add(s1);
            return ss;
        }
        catch (FileNotFoundException e) {//打开文件失败。
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            try{
                cf.close();
                fileReader.close();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67

2、添加、查找、修改页面

由于此类页面功能相似,所以设置了一个Message_gridPane类为此类页面公用

(1)Message_gridPane类

包含方法:

//设置Message_gridPane中的数据
public void setMessage(String s);
//清除Message_gridPane中的数据
 public void ClearMessage();
//设置Message_gridPane中的数据能否只读(传入false为只读)
public void setReadAndwrite(boolean flag);
//获取Message_gridPane中的数据
String getMassage();
//获取自定义的GridPane 
 GridPane getgridPane();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

(2)添加界面

//界面
//调用Home_Childinterface类中AddMessage方法
static void AddMessage(String idText,String nameText)
  • 1
  • 2
  • 3
//实现:
//传入idText和nameText为主页面中填写的学号和姓名等内容并用setText对文本框进行初始化:
Message_gridPane.ID.setText(idText);
Message_gridPane.name.setText(nameText);


//创建BorderPane布局,将Message_gridPane中gridPane填入中间部分,并添加按钮确定和取消
//设置按钮点击事件
//取消则关闭页面,
Homepage.Addstage.close();


//确认则调用Message_gridPane中getMassage()方法得到填写数据
String s = Message_gridPane.getMassage();
//判断信息是否输入完整(falg的使用)
//不完整
//调用Cinerror()页面进行提示
Cinerror();
//完整:
//判断学号是否重复
Homepage.Contains(student_message)
//若重复调用Adderror();方法提示
Adderror();
//不重复则添加学生对象,刷新表单,弹出窗口,关闭添加页面
Homepage.message.add(student_message);
Homepage.Updatelist();//刷新
Cinsucceed();
Homepage.Addstage.close();

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

在这里插入图片描述

(3)查找界面

//界面
//调用Home_Childinterface类中ReviseMessage方法
static void ReviseMessage(Student_message student_message)
  • 1
  • 2
  • 3
//实现:
//用Student_Message中toString和Message_gridPane中setMessage将传入学生数据添加到Message_gridPane的文本框中
Message_gridPane.setMessage(student_message.toString());
//调用Message_gridPane中setReadAndwrite()方法,传入false方法,设置文本框只读
Message_gridPane.setReadAndwrite(false);
//创建BorderPane布局,将Message_gridPane中gridPane填入中间部分,并添加按钮返回,删除和修改
//点击按钮界面:
//返回:close();方法
Hintstage.close();
//修改:
//调用 ReavmpMessage方法并关闭Revisestage界面
ReavmpMessage(student_message);
Homepage.Revisestage.close();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这里插入图片描述

(4)修改界面

//界面
//调用Home_Childinterface类中ReavmpMessage方法
static void ReavmpMessage(Student_message student_message)
  • 1
  • 2
  • 3
//实现:
//用Student_Message中toString和Message_gridPane中setMessage将传入学生数据添加到Message_gridPane的文本框中
Message_gridPane.setMessage(student_message.toString());
//调用Message_gridPane中setReadAndwrite()方法,传入true方法,设置文本框可读写
Message_gridPane.setReadAndwrite(true);
//创建BorderPane布局,将Message_gridPane中gridPane填入中间部分,并添加确定取消按钮
//点击按钮界面:
//取消:close();方法
Homepage.Reavmpstage.close();
//确定:
//调用Message_gridPane中RadioButtonmonitor()和Message_gridPane.getMassage();方法获取当前表中数据
Message_gridPane.RadioButtonmonitor()
Message_gridPane.getMassage();
//查询表中数据是否完整,不完整将弹出提示框
Changeerror();
//完整:
//调用setMessage将学生修改为读取的数据(s)
student_message.setMessage(s);
Changuscceed();
Homepage.Updatelist();
Homepage.Reavmpstage.close();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

在这里插入图片描述

3、弹窗页面

//将布局写入fxml文件中调用
FXMLLoader fxmlLoader = new FXMLLoader(Homepage.class.getResource("nocin.fxml"));
  • 1
  • 2

在这里插入图片描述

4、Student_message

//数据类型:final SimpleIntegerProperty(方便加入表格)
private final SimpleIntegerProperty num;
private final SimpleStringProperty ID ;
private final SimpleStringProperty name;
private final SimpleStringProperty gender;
private final SimpleStringProperty birthday;
private final SimpleStringProperty address;
private final SimpleStringProperty phone;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

方法:

setting、getting方法获取、填写数据
  • 1
/**重写equals方法为学号判重*/
boolean equals(Student_message student_message)
  • 1
  • 2
//获取数,返回字符串型数据
public String toString();
  • 1
  • 2
//将字符串型数据转化为Student对象
public  void setMessage(String s)
  • 1
  • 2
//按学号排序
public int compareTo(Student_message o);
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/958052
推荐阅读
相关标签
  

闽ICP备14008679号