一、团队成员及任务
组长:宗庆亮 计科(智能)22-1 202203200021
负责模块:静态登录界面实现以及学生信息系统管理界面的创建
组员:郑金洲 计科(智能)22-1 202203200022
负责模块:增加,删除,修改以及查询功能的实现
团队博客:面向对象程序设计(Java)课程设计——学生信息管理系统(GUI+文件)小组汇报_WayneZ16的博客-CSDN博客
二、项目简介
本项目由我们二人共同合作完成,该系统可实现学生信息的增加,删除,修改,查询,筛选的功能。并将学生信息存储在文件txt 中,不会覆盖原数据。该系统没有利用数据库,是使用文件来存储学生数据,有基本的 UI 界面,操作友好,项目运行没有问题。
三、运行结果
1.登录界面
2.管理系统界面
3.录入信息
4.查看全部信息
5.查询信息(输入学号后,点击查询信息)
6.删除信息(输入存在的学号后,点击删除信息)
7.修改信息(输入学号后,点击修改信息)
四、源代码
面向对象程序设计(Java)课程设计——学生信息管理系统(GUI+文件)小组汇报_WayneZ16的博客-CSDN博客
五、个人部分实现过程
1.用户登录界面代码
创建组件,包括一个JFrame窗体、三个JPanel面板、一个JLabel标签、一个JButton按钮。构造方法中初始化组件,并将它们加入到JFrame窗体中。设置布局管理,使用GridLayout网格式布局,将窗体分为3行1列。将标签和按钮加入到对应的面板中,并将面板加入到JFrame中。设置窗体的标题、大小、位置、关闭方式和是否可见。给按钮添加监听器,当用户点击登录按钮时,关闭当前窗口,并打开一个新的窗口,进入学生信息管理系统。
public class Login extends JFrame implements ActionListener {
//定义组件
JFrame frame=new JFrame();
JPanel jp1,jp2,jp3;//面板
JLabel jlb1;//标签
JButton jb1;//按钮
//构造函数
public Login(){
//创建面板
jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();
//创建标签
jlb1=new JLabel("学生信息管理系统");
//创建按钮
jb1=new JButton("登录");
//设置布局管理
frame.setLayout(new GridLayout(3, 1));//网格式布局
//加入各个组件
jp1.add(jlb1);
jp3.add(jb1);
//加入到JFrame
frame.add(jp2);
frame.add(jp1);
frame.add(jp3);
//设置窗体
frame.setTitle("用户登录界面");//窗体标签
frame.setSize(450, 350);//窗体大小
frame.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出关闭JFrame
frame.setVisible(true);//显示窗体
//锁定窗体
//this.setResizable(false);
jb1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
frame.setVisible(false);
new ManagerLogin();
}
});
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}
2.学生信息管理系统界面代码
进入学生信息管理系统后,同刚开始静态登录界面,首先对窗体进行设计,定义各种组件,有Jlabel,JTextField,JRadioButton,ButtonGroup,JButton,Jpanel类,并创建了2个标签。在构造方法中,创建文本框,按钮(增删改查等按钮)以及面板(p0-p7,pv,pb,ph),其中一个标签为标题,把他放入到pb面板,把另一个标签放到了p0面板,然后在p1-p7面板中加入学生信息标签,并添加前面所创建的文本框,最后将p0-p7放入到pv(8行1列网格布局)面板,在ph面板中加入增删改查等按钮,后续创建容器对象,取得容器面板,并把各种组件加入其中,JPanel的默认布局为Flowout布局,此处将其布局设置为BorderLayout布局,使用该布局,容器空间被分为东西南北中5个区域,然后将pv,pb,ph面板放入到容器中,pv在中,pb在北,ph在南,并设置容器标题、大小、位置、关闭方式和是否可见。
public class ManagerLogin extends JFrame implements ActionListener {
function fun = new function();
//定义组件
JLabel lb1 = new JLabel("学生信息管理系统");//JLabel 对象显示文本
JLabel lb2 = new JLabel("提示:录入前请先输入学号,修改、删除根据学号修改信息");
JTextField 学号, 姓名, 年龄, 电话, 宿舍号,家庭住址;//输入学生基本信息文本
JRadioButton 男, 女;//声明单选项对象,性别选择
ButtonGroup group = null;//声明按钮组
JButton 录入, 查询, 删除, 修改, 显示, 返回;//声明相应的操作的按钮
JPanel p0, p1, p2, p3, p4, p5, p6, p7, pv, ph, pb;//调节布局的通道
public ManagerLogin() { //负责管理员登录的主窗口
super("学生信息管理系统");
//创建文本框
学号 = new JTextField(10);
姓名 = new JTextField(10);
电话 = new JTextField(15);
年龄 = new JTextField(8);
宿舍号 = new JTextField(15);
家庭住址 = new JTextField(15);
//按钮
group = new ButtonGroup();
男 = new JRadioButton("男");
女 = new JRadioButton("女");
group.add(男);//把按钮添加到按钮组
group.add(女);
录入 = new JButton("录入信息");//创建按钮对象
查询 = new JButton("查询信息");
删除 = new JButton("删除信息");
修改 = new JButton("修改信息");
显示 = new JButton("显示全部");
返回 = new JButton("返回登录");
pb = new JPanel();
pb.add(lb1, JLabel.CENTER);
p0 = new JPanel();
p0.add(lb2, JLabel.CENTER);
p1 = new JPanel();//创建一个面板
p1.add(new JLabel("学 号:", JLabel.CENTER));//JLabel.CENTER是指JLabel的中心点。CENTER是中心点的坐标
p1.add(学号);
p2 = new JPanel();
p2.add(new JLabel("姓 名:", JLabel.CENTER));
p2.add(姓名);
p3 = new JPanel();
p3.add(new JLabel("性 别:", JLabel.CENTER));
p3.add(男);
p3.add(女);
p4 = new JPanel();
p4.add(new JLabel("年 龄:", JLabel.CENTER));
p4.add(年龄);
p5 = new JPanel();
p5.add(new JLabel("电 话:", JLabel.CENTER));
p5.add(电话);
p6 = new JPanel();
p6.add(new JLabel("宿 舍 号 :", JLabel.CENTER));
p6.add(宿舍号);
p7 = new JPanel();
p7.add(new JLabel("家庭住址:", JLabel.CENTER));
p7.add(家庭住址);
pv = new JPanel();//面板
pv.setLayout(new GridLayout(8, 1)); //把pv组件设置成8行1列的网格布局
pv.add(p0);//把面板放到容器中,add()代表容器
pv.add(p1);
pv.add(p2);
pv.add(p3);
pv.add(p4);
pv.add(p5);
pv.add(p6);
pv.add(p7);
ph = new JPanel();
ph.add(录入);
ph.add(查询);
ph.add(修改);
ph.add(删除);
ph.add(显示);
ph.add(返回);
Container con = getContentPane();//建立容器对象con,取得容器面板
con.setLayout(new BorderLayout());//设置布局为边框布局,边框布局分东南西北中5个方位来添加控件。
//若没有指定方位,将添加到中间,上下左右都可以扩展
con.add(pb, BorderLayout.NORTH);//pb在北边
con.add(pv, BorderLayout.CENTER);//pv在中间
con.add(ph, BorderLayout.SOUTH);//ph在南边
setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭操作
setBounds(100, 100, 900, 450);//setBounds(x,y,width,height); x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点 width:组件的长度 height:组件的高度
setVisible(true);//目的是使控件可以显示出来,如果该控件已经被显示出来
后面对增删改查等功能按钮添加监视器,点击后按钮后,触发ActionEvent事件,监视器调用接口中的方法actionPerformed(ActionEvent e),在其方法体中添加相应的方法实现对应的功能。
录入信息:添加监听器,将文本框中的学生信息保存到一个Stu对象中,并将其添加到集合中。获取学号、姓名、年龄、电话、宿舍号和家庭住址这些文本框中的信息,将它们保存到Stu对象中。
过程为:判断该学号对应的学生是否已经存在,如果已经存在则弹出提示框并直接退出。如果学号和姓名为空则弹出提示框并直接退出。判断选择的性别是男还是女,并将其保存到Stu对象中。将Stu对象添加到集合中,并使用writeFile()方法将列表保存到文件中。弹出录入成功的提示框并关闭当前窗口,进入“学生信息管理系统”页面。
录入.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String sID = 学号.getText(); //获取文本框中内容
if (fun.find(sID) != -1) {
JOptionPane.showMessageDialog(null, "该学号对应的学生已经存在!!!\n\n请重新输入或者修改已经录入的学生");
//清空文本框
学号.setText("");
姓名.setText("");
年龄.setText("");
电话.setText("");
宿舍号.setText("");
家庭住址.setText("");
return;
}
String sName = 姓名.getText();
//先判断学号和姓名是否为空,如果为空,直接退出
if (sID.equals("") || sName.equals("")) {
JOptionPane.showMessageDialog(null, "录入的学生学号或姓名为空!!!\n\n请重新输入");
return;
}
String sAge = 年龄.getText();
if (sAge.equals(""))//年龄为空,没有输入
sAge = "--";
String sPhone = 电话.getText();
if (sPhone.equals(""))
sPhone = "--";
String sRoom = 宿舍号.getText();
if (sRoom.equals(""))
sRoom = "--";
String sHome = 家庭住址.getText();
if (sHome.equals(""))
sHome = "--";
String sSex = null;
if (男.isSelected()) {//选择男女
sSex = 男.getText();
} else {
sSex = 女.getText();
}
stu.setStuID(sID);
stu.setAge(sAge);
stu.setName(sName);
stu.setSex(sSex);
stu.setPhoneNumber(sPhone);
stu.setHome_place(sHome);
stu.setRoomNumber(sRoom);
System.out.println("学生管理系统");
System.out.println(stu.fileString());
fun.add(stu);
fun.writeFile();
JOptionPane.showMessageDialog(null, "录入成功!!!");
setVisible(false);
new ManagerLogin();
}
});
显示全部信息:添加监视器,在点击 显示 按钮时打开一个show_stuall的新窗口来显示所有学生的信息
显示.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new show_stuall();
}
});
查询信息:添加监视器,在点击查询后,将符合条件的信息写入到一个文件中,并打开showones窗口来显示查询结果
过程为:获取学号、姓名、年龄、电话、宿舍号和家庭住址这些文本框中的信息,将它们保存到相应的变量中。判断各个信息是否为空,如果为空则将其赋值为"–",表示在此条件下该信息不作为查询条件。将要查询的符合条件的信息写入到文件中,每次覆盖写入,无需全部保存。并关闭文件流。创建一个showones对象,在构造函数中实现了显示查询结果的操作。打开一个新窗口并显示showones对象。清空当前窗口中的文本框和单选框。
查询.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String sID = 学号.getText(); //获取文本框中内容
if (sID.equals(""))
sID = "--";
String sName = 姓名.getText();
if (sName.equals(""))
sName = "--";
String sAge = 年龄.getText();
if (sAge.equals("")) //年龄为空,没有输入
sAge = "--";
String sPhone = 电话.getText();
if (sPhone.equals(""))
sPhone = "--";
String sRoom = 宿舍号.getText();
if (sRoom.equals(""))
sRoom = "--";
String sHome = 家庭住址.getText();
if (sHome.equals(""))
sHome = "--";
String sSex = null;
if (男.isSelected()) {//选择男女
sSex = 男.getText();
} else {
if (女.isSelected())
sSex = 女.getText();
else {
sSex = "--";
}
}
//将要查询的符合条件的写入文件
FileWriter fw = null;
BufferedWriter out = null;//学号","姓名","性别","年龄","电话号码","家庭住址","身份证号码" };
try {
fw = new FileWriter("查询时暂时存放的文件.txt");
out = new BufferedWriter(fw);
//姓名学号等中间隔一个空格
out.write(sID + " ");
out.write(sName + " ");
out.write(sSex + " ");
out.write(sAge + " ");
out.write(sPhone + " ");
out.write(sRoom + " "); //每次覆盖写入,无需全部保存
out.write(sHome + " ");
out.close();
fw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
//开始查询
new showones();
//清空文本框
学号.setText("");
姓名.setText("");
年龄.setText("");
电话.setText("");
宿舍号.setText("");
家庭住址.setText("");
group.clearSelection();
}
});
删除信息:添加一个监视器,在点击 删除 按钮时将指定学号的学生信息删除,并将更新后的列表重新保存到文件中
过程为:获取学号文本框中的内容,将其用作查找指定学生的依据。调用find()方法查找该学号对应的学生在数组列表中的位置,如果为-1则表示没有找到该学生,弹出提示框并直接退出。如果找到了该学生,则调用delete()方法将其在数组列表中删除,并使用writeFile()方法将更新后的列表重新保存到文件中。弹出删除成功的提示框。清空当前窗口中的文本框和单选框。
删除.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String sID = 学号.getText(); //获取文本框中内容
int flag = fun.find(sID);
if (flag == -1) {
JOptionPane.showMessageDialog(null, "未查找到该学号的学生!!!\n\n请重新输入");
} else {
fun.delete(sID);
fun.writeFile();
JOptionPane.showMessageDialog(null, "删除成功!!!\n");
}
//清空文本框
学号.setText("");
姓名.setText("");
年龄.setText("");
电话.setText("");
宿舍号.setText("");
家庭住址.setText("");
group.clearSelection();
}
});
修改信息:添加一个监视器,在点击 修改 按钮时将指定学好的学生信息更新为文本框中新输入的信息。
过程为:获取学号文本框中的内容,将其用作查找指定学生的依据。调用find()方法查找该学号对应的学生在数组列表中的位置,如果为-1则表示没有找到该学生,弹出提示框并直接退出。如果找到了该学生,则弹出提示框要求输入需要修改后的数据。获取年龄、电话、宿舍号、家庭住址、性别、姓名等文本框中的新信息,将其保存到Stu对象中。调用update()方法将Stu对象的信息更新到数组列表中,并调用writeFile()方法保存更新后的列表到文件中。弹出修改成功的提示框。清空当前窗口中的文本框和单选框。
修改.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String sID = 学号.getText(); //获取文本框中内容
int flag = fun.find(sID); //查找是否存在
if (flag == -1) {
JOptionPane.showMessageDialog(null, "未查找到该学号的学生!!!\n\n请重新输入");
return;
} else
JOptionPane.showMessageDialog(null, "该系统中存在该学生数据\n\n,确认返回后请输入需要修改后的数据");
String sAge = 年龄.getText();
if (sAge.equals(""))//年龄为空,没有输入
sAge = "--";
String sPhone = 电话.getText();
if (sPhone.equals(""))
sPhone = "--";
String sRoom = 宿舍号.getText();
if (sRoom.equals(""))
sRoom = "--";
String sHome = 家庭住址.getText();
if (sHome.equals(""))
sHome = "--";
String sSex = null;
if (男.isSelected()) {//选择男女
sSex = 男.getText();
} else {
sSex = 女.getText();
}
String sName = 姓名.getText();
//先判断学号和姓名是否为空,如果为空,直接退出
if (sName.equals("")) {
JOptionPane.showMessageDialog(null, "录入的学生姓名为空!!!\n\n请重新输入");
return;
}
// student_information stu=new student_information();
stu.setStuID(sID);
stu.setAge(sAge);
stu.setName(sName);
stu.setSex(sSex);
stu.setPhoneNumber(sPhone);
stu.setHome_place(sHome);
stu.setRoomNumber(sRoom);
fun.update(stu); //修改
fun.writeFile();
JOptionPane.showMessageDialog(null, "修改成功!!!");
//清空文本框
学号.setText("");
姓名.setText("");
年龄.setText("");
电话.setText("");
宿舍号.setText("");
家庭住址.setText("");
group.clearSelection();
}
});
返回:添加监视器,在点击 返回 时关闭当前窗口,并打开一个新的登录窗口
过程为:在点击“返回”按钮时触发ActionListener。调用setVisible(false)方法将当前窗口设置为不可见,即关闭当前窗口。创建一个新的Login对象,在构造函数中实现了登录窗口的初始化操作。打开一个新窗口并显示Login对象。
返回.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setVisible(false); //目的是使控件不可以显示出来
new Login();
}
});
源码:
public class ManagerLogin extends JFrame implements ActionListener {
function fun = new function();
//定义组件
JLabel lb1 = new JLabel("学生信息管理系统");//JLabel 对象显示文本
JLabel lb2 = new JLabel("提示:录入前请先输入学号,修改、删除根据学号修改信息");
JTextField 学号, 姓名, 年龄, 电话, 宿舍号,家庭住址;//输入学生基本信息文本
JRadioButton 男, 女;//声明单选项对象,性别选择
ButtonGroup group = null;//声明按钮组
JButton 录入, 查询, 删除, 修改, 显示, 返回;//声明相应的操作的按钮
JPanel p0, p1, p2, p3, p4, p5, p6, p7, pv, ph, pb;//调节布局的通道
public ManagerLogin() { //负责管理员登录的主窗口
super("学生信息管理系统");
学号 = new JTextField(10);//创建文本框
姓名 = new JTextField(10);
电话 = new JTextField(15);
年龄 = new JTextField(8);
宿舍号 = new JTextField(15);
家庭住址 = new JTextField(15);
group = new ButtonGroup();
男 = new JRadioButton("男");
女 = new JRadioButton("女");
group.add(男);//把按钮添加到按钮组
group.add(女);
录入 = new JButton("录入信息");//创建按钮对象
查询 = new JButton("查询信息");
删除 = new JButton("删除信息");
修改 = new JButton("修改信息");
显示 = new JButton("显示全部");
返回 = new JButton("返回登录");
pb = new JPanel();
pb.add(lb1, JLabel.CENTER);
p0 = new JPanel();
p0.add(lb2, JLabel.CENTER);
p1 = new JPanel();//创建一个面板
p1.add(new JLabel("学 号:", JLabel.CENTER));//JLabel.CENTER是指JLabel的中心点。CENTER是中心点的坐标
p1.add(学号);
p2 = new JPanel();
p2.add(new JLabel("姓 名:", JLabel.CENTER));
p2.add(姓名);
p3 = new JPanel();
p3.add(new JLabel("性 别:", JLabel.CENTER));
p3.add(男);
p3.add(女);
p4 = new JPanel();
p4.add(new JLabel("年 龄:", JLabel.CENTER));
p4.add(年龄);
p5 = new JPanel();
p5.add(new JLabel("电 话:", JLabel.CENTER));
p5.add(电话);
p6 = new JPanel();
p6.add(new JLabel("宿 舍 号 :", JLabel.CENTER));
p6.add(宿舍号);
p7 = new JPanel();
p7.add(new JLabel("家庭住址:", JLabel.CENTER));
p7.add(家庭住址);
pv = new JPanel();//面板
pv.setLayout(new GridLayout(8, 1)); //把pv组件设置成第七行1列的网格布局
pv.add(p0);//把面板放到容器中,add()代表容器
pv.add(p1);
pv.add(p2);
pv.add(p3);
pv.add(p4);
pv.add(p5);
pv.add(p6);
pv.add(p7);
ph = new JPanel();
ph.add(录入);
ph.add(查询);
ph.add(修改);
ph.add(删除);
ph.add(显示);
ph.add(返回);
Container con = getContentPane();//建立容器对象con,取得容器面板
con.setLayout(new BorderLayout());//设置布局为边框布局,边框布局分东南西北中5个方位来添加控件。
//若没有指定方位,将添加到中间,上下左右都可以扩展
con.add(pb, BorderLayout.NORTH);//pb在北边
con.add(pv, BorderLayout.CENTER);//pv在中间
con.add(ph, BorderLayout.SOUTH);//ph在南边
setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭操作
setBounds(100, 100, 900, 450);//setBounds(x,y,width,height); x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点 width:组件的长度 height:组件的高度
setVisible(true);//目的是使控件可以显示出来,如果该控件已经被显示出来
student_information stu = new student_information();
ArrayList<student_information> arry = new ArrayList<student_information>();
//添加监听
//点击录入按钮 学号","姓名","性别","年龄","电话号码","家庭住址","身份证号码"
录入.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String sID = 学号.getText(); //获取文本框中内容
if (fun.find(sID) != -1) {
JOptionPane.showMessageDialog(null, "该学号对应的学生已经存在!!!\n\n请重新输入或者修改已经录入的学生");
//清空文本框
学号.setText("");
姓名.setText("");
年龄.setText("");
电话.setText("");
宿舍号.setText("");
家庭住址.setText("");
return;
}
String sName = 姓名.getText();
//先判断学号和姓名是否为空,如果为空,直接退出
if (sID.equals("") || sName.equals("")) {
JOptionPane.showMessageDialog(null, "录入的学生学号或姓名为空!!!\n\n请重新输入");
return;
}
String sAge = 年龄.getText();
if (sAge.equals(""))//年龄为空,没有输入
sAge = "--";
String sPhone = 电话.getText();
if (sPhone.equals(""))
sPhone = "--";
String sRoom = 宿舍号.getText();
if (sRoom.equals(""))
sRoom = "--";
String sHome = 家庭住址.getText();
if (sHome.equals(""))
sHome = "--";
String sSex = null;
if (男.isSelected()) {//选择男女
sSex = 男.getText();
} else {
sSex = 女.getText();
}
stu.setStuID(sID);
stu.setAge(sAge);
stu.setName(sName);
stu.setSex(sSex);
stu.setPhoneNumber(sPhone);
stu.setHome_place(sHome);
stu.setRoomNumber(sRoom);
//arry.clear();// 清除原数组列表中的数据
// Input input=new Input(stu);
System.out.println("信息管理员");
System.out.println(stu.fileString());
fun.add(stu);
fun.writeFile();
JOptionPane.showMessageDialog(null, "录入成功!!!");
//dispose();
setVisible(false);
new ManagerLogin();
}
});
//显示全部学生信息
显示.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//show_stuall all=new show_stuall();
new show_stuall();
}
});
//查询某个学生信息
查询.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String sID = 学号.getText(); //获取文本框中内容
if (sID.equals(""))
sID = "--";
String sName = 姓名.getText();
if (sName.equals(""))
sName = "--";
String sAge = 年龄.getText();
if (sAge.equals("")) //年龄为空,没有输入
sAge = "--";
String sPhone = 电话.getText();
if (sPhone.equals(""))
sPhone = "--";
String sRoom = 宿舍号.getText();
if (sRoom.equals(""))
sRoom = "--";
String sHome = 家庭住址.getText();
if (sHome.equals(""))
sHome = "--";
String sSex = null;
if (男.isSelected()) {//选择男女
sSex = 男.getText();
} else {
if (女.isSelected())
sSex = 女.getText();
else {
sSex = "--";
}
}
//将要查询的符合条件的写入文件
FileWriter fw = null;
BufferedWriter out = null;//学号","姓名","性别","年龄","电话号码","家庭住址","身份证号码" };
try {
fw = new FileWriter("查询时暂时存放的文件.txt");
out = new BufferedWriter(fw);
//姓名学号等中间隔一个空格
out.write(sID + " ");
out.write(sName + " ");
out.write(sSex + " ");
out.write(sAge + " ");
out.write(sPhone + " ");
out.write(sRoom + " "); //每次覆盖写入,无需全部保存
out.write(sHome + " ");
out.close();
fw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
//开始查询
new showones();
//清空文本框
学号.setText("");
姓名.setText("");
年龄.setText("");
电话.setText("");
宿舍号.setText("");
家庭住址.setText("");
group.clearSelection();
}
});
//删除学生信息,按学号删除
删除.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String sID = 学号.getText(); //获取文本框中内容
int flag = fun.find(sID);
if (flag == -1) {
JOptionPane.showMessageDialog(null, "未查找到该学号的学生!!!\n\n请重新输入");
} else {
fun.delete(sID);
fun.writeFile();
JOptionPane.showMessageDialog(null, "删除成功!!!\n");
}
//清空文本框
学号.setText("");
姓名.setText("");
年龄.setText("");
电话.setText("");
宿舍号.setText("");
家庭住址.setText("");
group.clearSelection();
}
});
//修改学生信息
修改.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String sID = 学号.getText(); //获取文本框中内容
int flag = fun.find(sID); //查找是否存在
if (flag == -1) {
JOptionPane.showMessageDialog(null, "未查找到该学号的学生!!!\n\n请重新输入");
return;
} else
JOptionPane.showMessageDialog(null, "该系统中存在该学生数据\n\n,确认返回后请输入需要修改后的数据");
String sAge = 年龄.getText();
if (sAge.equals(""))//年龄为空,没有输入
sAge = "--";
String sPhone = 电话.getText();
if (sPhone.equals(""))
sPhone = "--";
String sRoom = 宿舍号.getText();
if (sRoom.equals(""))
sRoom = "--";
String sHome = 家庭住址.getText();
if (sHome.equals(""))
sHome = "--";
String sSex = null;
if (男.isSelected()) {//选择男女
sSex = 男.getText();
} else {
sSex = 女.getText();
}
String sName = 姓名.getText();
//先判断学号和姓名是否为空,如果为空,直接退出
if (sName.equals("")) {
JOptionPane.showMessageDialog(null, "录入的学生姓名为空!!!\n\n请重新输入");
return;
}
// student_information stu=new student_information();
stu.setStuID(sID);
stu.setAge(sAge);
stu.setName(sName);
stu.setSex(sSex);
stu.setPhoneNumber(sPhone);
stu.setHome_place(sHome);
stu.setRoomNumber(sRoom);
fun.update(stu); //修改
fun.writeFile();
JOptionPane.showMessageDialog(null, "修改成功!!!");
//清空文本框
学号.setText("");
姓名.setText("");
年龄.setText("");
电话.setText("");
宿舍号.setText("");
家庭住址.setText("");
group.clearSelection();
}
});
返回.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setVisible(false); //目的是使控件不可以显示出来
new Login();
}
});
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
}
3.学生类基本信息
首先是根据学生基本信息,声明变量,给出无参构造器以及有参构造器,随之给出相应的set,get方法,并创建fileString方法,返回基本信息。
public class student_information {
private String stuID; /* 学生学号 */
private String name; /* 学生姓名 */
private String sex; /* 学生性别 */
private String age; /* 学生年龄 */
private String phoneNumber; /* 学生电话号码 */
private String home_place; /* 学生家庭住址,籍贯 */
private String roomNumber; /* 宿舍号 */
/*无参构造方法*/
public student_information() {
}
/*有参构造方法 */
public student_information(String stuID, String name, String sex, String age, String phoneNumber, String roomNumber, String home_place) {
super();
this.stuID = stuID;
this.name = name;
this.sex = sex;
this.age = age;
this.phoneNumber = phoneNumber;
this.home_place = home_place;
this.roomNumber = roomNumber;
}
public String getStuID() {
return this.stuID;
}
public void setStuID(String stuID) {
this.stuID = stuID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return this.sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAge() {
return this.age;
}
public void setAge(String age) {
this.age = age;
}
public String getPhoneNumber() {
return this.phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getHome_place() {
return this.home_place;
}
public void setHome_place(String home_place) {
this.home_place = home_place;
}
public String getRoomNumber() {
return this.roomNumber;
}
public void setRoomNumber(String roomNumber) {
this.roomNumber = roomNumber;
}
//从文件中录入的数据格式 "学号 姓名 性别 年龄 电话 宿舍号 政治面貌 家庭住址"
public String fileString() {
return stuID + " " + name + " " + sex + " " + age + " " + phoneNumber + " " + roomNumber + " " + home_place;
}
}
4.主函数文章来源:https://www.toymoban.com/news/detail-768567.html
在主函数中创建一个Login对象,实现登录界面。文章来源地址https://www.toymoban.com/news/detail-768567.html
public class Main {
public static void main(String[] args) {
new Login();
}
}
到了这里,关于面向对象程序设计(Java)课程设计——学生信息管理系统(GUI+文件)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!