Eclipse+Java+Swing实现学生信息管理系统-TXT存储信息

一、系统介绍

1.开发环境

操作系统:Win10

开发工具 :Eclipse2021

JDK版本:jdk1.8

存储方式:Txt文件存储

2.技术选型

Java+Swing+Txt

3.功能模块

4.工程结构

5.系统功能

1.系统登录

管理员可以登录系统。

2.教师-查看学生

教师可以查看单个学生信息或全部学生信息。

3.教师-新增学生

教师可以新增学生信息。

4.教师-修改学生

教师可以修改学生信息。

5.教师-删除学生

教师可以删除学生信息。

6.学生-查看学生

学生可以查看单个学生信息或全部学生信息。

二、系统展示

1.登录页面

2.操作页面

3.教师-管理学生

4.教师-学生明细

5.学生-查看学生

6.学生-学生明细

三、部分代码

LoginFirstFrame

package com.sjsq.view;import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/*** * 管理员登录**/
public class LoginFirstFrame extends JFrame implements ActionListener {// 想要实现监听功能就要重写接口ActionListenerprivate static final long serialVersionUID = 1L;private JPanel jp1, jp2, jp3;private JButton jb1, jb2;private JLabel jl1, jl2;private JTextField jtf;private JPasswordField jpf;private Icon welcomeIcon = new ImageIcon("welcome.png");private JLabel lbWelcome = new JLabel(welcomeIcon);public static void main(String[] args) {// TODO Auto-generated method stubnew LoginFirstFrame();}public LoginFirstFrame() {this.add(lbWelcome);this.setTitle("用户登录");// Box.createVerticalStrut(100);this.setSize(600, 400); // 通过这里可以调整界面的大小this.setLocation(800, 300);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLayout(new GridLayout(4, 1));jp1 = new JPanel();jl1 = new JLabel("账户:");jtf = new JTextField(20);jp1.add(jl1);jp1.add(jtf);this.add(jp1);jp2 = new JPanel();jl2 = new JLabel("密码:");jpf = new JPasswordField(20);jp2.add(jl2);jp2.add(jpf);this.add(jp2);jp3 = new JPanel();jb1 = new JButton("登录");jb2 = new JButton("退出");jp3.add(jb1);jp3.add(jb2);this.add(jp3);this.setVisible(true);System.out.println(jtf.getText().toString());// 增加监听jb1.addActionListener((ActionListener) this);jb2.addActionListener((ActionListener) this);}public void actionPerformed(ActionEvent e) {if (e.getSource() == jb1) {// 如果点击的是"登陆"的button,则对账号密码进行判断String account = jtf.getText();String password = new String(jpf.getPassword());// FileOpe.getInfoByAccount(account);if (account.equals("admin") && password.equals("admin")) {JOptionPane.showMessageDialog(this, "登录成功");this.dispose();new LoginFrame();} else {JOptionPane.showMessageDialog(this, "登录失败");System.out.println(account + password);return;}} else if (e.getSource() == jb2) {// 如果点击的是"退出"的button那么就直接退出程序JOptionPane.showMessageDialog(this, "谢谢光临");System.exit(0);}}
}

LoginFrame

package com.sjsq.view;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/*** 登录界面* @author 陈娟* @author shuijianshiqing**/
public class LoginFrame extends JFrame implements ActionListener {// 重写接口实现监听private static final long serialVersionUID = 1L;// 定义组件JFrame frame = new JFrame();JPanel jp1, jp2, jp3;// 面板JLabel jlb1, jlb2;// 标签JButton jb1, jb2;// 按钮// 构造函数public LoginFrame() {// 创建面板jp1 = new JPanel();jp2 = new JPanel();jp3 = new JPanel();// 创建标签jlb1 = new JLabel("选择操作界面");// 创建按钮jb1 = new JButton("老师");jb2 = new JButton("学生");// 设置布局管理frame.setLayout(new GridLayout(3, 1));// 网格式布局// 加入各个组件jp1.add(jlb1);jp3.add(jb1);jp3.add(jb2);// 加入到JFrameframe.add(jp2);frame.add(jp1);// this.add(jp2);frame.add(jp3);// 设置窗体frame.setTitle("用户登录界面");// 窗体标签frame.setSize(400, 300);// 窗体大小frame.setLocationRelativeTo(null);// 在屏幕中间显示(居中显示)frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 退出关闭JFrameframe.setVisible(true);// 显示窗体// 增加监听jb1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {frame.setVisible(false);new ManagerLoginFrame();// 老师权限的界面}});jb2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {frame.setVisible(false);new StudentLoginFrame();// 学生权限的界面}});}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub}
}

ManagerLoginFrame

package com.sjsq.view;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;import com.sjsq.dao.StudentDao;
import com.sjsq.entity.Student;/*** 教师登录后的主页* @author 陈娟* @author shuijianshiqing**/
public class ManagerLoginFrame extends JFrame implements ActionListener{private static final long serialVersionUID = 1L;StudentDao fun = new StudentDao();// 定义组件JLabel lb1 = new JLabel("教师操作界面");// JLabel 对象可以显示文本、图像JLabel lb2 = new JLabel("提示:录入前请先输入学号,修改、删除根据学号修改信息\r\n");JTextField 学号, 姓名, 年龄, 电话号码, 家庭住址, 身份证号码;// 输入学生基本信息得文本JRadioButton 男, 女;// 声明单选项对象,性别选择ButtonGroup group = null;// 声明按钮组JButton 录入, 查询, 删除, 修改, 显示, 返回;// 声明相应的操作的按钮JPanel p1, p2, p3, p4, p5, p6, p7, pv, ph, pb;// 调节布局的通道public ManagerLoginFrame() { // 负责管理员登录的主窗口super("学生信息管理系统");学号 = new JTextField(18);// 创建文本信息的的对象姓名 = new JTextField(18);电话号码 = new JTextField(18);年龄 = new JTextField(18);家庭住址 = new JTextField(18);身份证号码 = new JTextField(18);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);p1 = new JPanel();// 创建一个面板//p1.add(lb2, JLabel.CENTER);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(7, 1)); // 把pv组件设置成第七行1列的网格布局pv.add(p1);// 把面板放到容器中,add()代表容器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);// Frame对象lb调用方法add(),lb放在最北上方con.add(pv, BorderLayout.CENTER);// pv在中间con.add(ph, BorderLayout.SOUTH);// ph在南边setDefaultCloseOperation(EXIT_ON_CLOSE);// 置一个默认的关闭操作,也就是你的JFrame窗口的关闭按钮,点击它时,退出程序//setBounds(100, 100, 900, 450);// setBounds(x,y,width,height); x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点 width:组件的长度setSize(900, 450);// 窗体大小								// height:组件的高度setLocationRelativeTo(null);// 在屏幕中间显示(居中显示)setVisible(true);// 目的是使控件可以显示出来,如果该控件已经被显示出来Student stu = new Student();@SuppressWarnings("unused")ArrayList<Student> arry = new ArrayList<Student>();// 添加监听// 点击录入按钮 学号","姓名","性别","年龄","电话号码","家庭住址","身份证号码"录入.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 scall = 电话号码.getText();if (scall.equals(""))scall = "--";String shome = 家庭住址.getText();if (shome.equals(""))shome = "--";String siden = 身份证号码.getText();if (siden.equals(""))siden = "--";String ssex = null;if (男.isSelected()) {// 选择男女ssex = 男.getText();} else {ssex = 女.getText();}stu.setStuid(sID);stu.setAge(sage);stu.setName(sname);stu.setSex(ssex);stu.setCallnumber(scall);stu.setHomeplace(shome);stu.setIdentityid(siden);// 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 ManagerLoginFrame();}});// 显示全部学生信息显示.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {// show_stuall all=new show_stuall();new ShowAllStudentFrame();}});// 查询某个学生信息查询.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 scall = 电话号码.getText();if (scall.equals(""))scall = "--";String shome = 家庭住址.getText();if (shome.equals(""))shome = "--";String siden = 身份证号码.getText();if (siden.equals(""))siden = "--";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(scall + "  ");out.write(shome + "  ");out.write(siden + "  "); // 每次覆盖写入,无需全部保存out.close();fw.close();} catch (IOException e1) {e1.printStackTrace();}// 开始查询new ShowOneStudentFrame();// 清空文本框学号.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;} elseJOptionPane.showMessageDialog(null, "该系统中存在该学生数据\n\n,确认返回后请输入需要修改后的数据");String sage = 年龄.getText();if (sage.equals(""))// 年龄为空,没有输入sage = "--";String scall = 电话号码.getText();if (scall.equals(""))scall = "--";String shome = 家庭住址.getText();if (shome.equals(""))shome = "--";String siden = 身份证号码.getText();if (siden.equals(""))siden = "--";String ssex = null;if (男.isSelected()) {// 选择男女ssex = 男.getText();} else {ssex = 女.getText();}String sname = 姓名.getText();// 先判断学号和姓名是否为空,如果为空,直接退出if (sname.equals("")) {JOptionPane.showMessageDialog(null, "录入的学生姓名为空!!!\n\n请重新输入");return;}// Student stu=new Student();stu.setStuid(sID);stu.setAge(sage);stu.setName(sname);stu.setSex(ssex);stu.setCallnumber(scall);stu.setHomeplace(shome);stu.setIdentityid(siden);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 LoginFrame();}});}@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stub}public static void main(String[] args) {new ManagerLoginFrame();}
}

StudentLoginFrame

package com.sjsq.view;import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;import com.sjsq.entity.Student;
/*** 学生登录后的主页* @author 陈娟* @author shuijianshiqing**/
public class StudentLoginFrame extends JFrame implements ActionListener {private static final long serialVersionUID = 1L;// Function fun = new Function();// 定义组件JLabel lb1 = new JLabel("学生操作界面");// JLabel 对象可以显示文本、图像JLabel lb2 = new JLabel("提示:录入前请先输入学号,修改、删除根据学号修改信息");JTextField 学号, 姓名, 年龄, 电话号码, 家庭住址, 身份证号码;// 输入学生基本信息得文本JRadioButton 男, 女;// 声明单选项对象,性别选择ButtonGroup group = null;// 声明按钮组JButton 录入, 查询, 删除, 修改, 显示, 返回;// 声明相应的操作的按钮JPanel p1, p2, p3, p4, p5, p6, p7, pv, ph, pb;// 调节布局的通道Student stu = new Student();ArrayList<Student> arry = new ArrayList<>();public StudentLoginFrame() { // 负责管理员登录的主窗口super("学生信息管理系统");学号 = new JTextField(18);// 创建文本信息的的对象姓名 = new JTextField(18);电话号码 = new JTextField(18);年龄 = new JTextField(18);家庭住址 = new JTextField(18);身份证号码 = new JTextField(18);group = new ButtonGroup();男 = new JRadioButton("男");// 初始化单选框,女 = new JRadioButton("女");group.add(男);// 把按钮添加到按钮组group.add(女);// 录入=new JButton("增加学生信息");//创建按钮对象查询 = new JButton("查询某个学生信息");// 删除=new JButton("删除学生信息");// 修改.setEnabled(false); //设置修改控件不可用// 修改=new JButton("修改学生信息");显示 = new JButton("显示全部学生信息");返回 = new JButton("返回");pb = new JPanel();pb.add(lb1, JLabel.CENTER);p1 = new JPanel();// 创建一个面板// p1.setLayout(new GridLayout(3,0));//p1.add(lb2, JLabel.CENTER);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(7, 1)); // 把pv组件设置成第七行1列的网格布局pv.add(p1);// 把面板放到容器中,add()代表容器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);// Frame对象lb调用方法add(),lb放在最北上方con.add(pv, BorderLayout.CENTER);// pv在中间con.add(ph, BorderLayout.SOUTH);// ph在南边setDefaultCloseOperation(EXIT_ON_CLOSE);// 置一个默认的关闭操作,也就是你的JFrame窗口的关闭按钮,点击它时,退出程序//setBounds(100, 100, 900, 450);// setBounds(x,y,width,height); x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点 width:组件的长度setSize(900, 450);// 窗体大小								// height:组件的高度setLocationRelativeTo(null);// 在屏幕中间显示(居中显示)								setVisible(true);// 目的是使控件可以显示出来,如果该控件已经被显示出来// 添加监听// 显示全部学生信息显示.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new ShowAllStudentFrame();}});// 查询某个学生信息查询.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 scall = 电话号码.getText();if (scall.equals(""))scall = "--";String shome = 家庭住址.getText();if (shome.equals(""))shome = "--";String siden = 身份证号码.getText();if (siden.equals(""))siden = "--";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(scall + "  ");out.write(shome + "  ");out.write(siden + "  "); // 每次覆盖写入,无需全部保存out.close();fw.close();} catch (IOException e1) {e1.printStackTrace();}// 开始查询new ShowOneStudentFrame();// 清空文本框学号.setText("");姓名.setText("");年龄.setText("");电话号码.setText("");家庭住址.setText("");身份证号码.setText("");group.clearSelection();}});返回.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {setVisible(false); // 目的是使控件不可以显示出来new LoginFrame();}});}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub}public static void main(String[] args) {new StudentLoginFrame();}
}

ShowAllStudentFrame

package com.sjsq.view;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Vector;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.RowSorter;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;/*** * 显示所有学生信息* * @author 陈娟* @author shuijianshiqing**/
@SuppressWarnings("unused")
public class ShowAllStudentFrame {JTable table = null;DefaultTableModel model = null;// 显示全部学生信息@SuppressWarnings("unchecked")public ShowAllStudentFrame() {JFrame jf = new JFrame("显示全部学生信息(点击表头可以按照升序降序排序)");// 创建内容面板JPanel panel = new JPanel();// 表头(列名)@SuppressWarnings("rawtypes")Vector columnNames = createColumnNames();@SuppressWarnings("rawtypes")Vector data = createTableModelData();// 创建一个默认的表格模型model = new DefaultTableModel(data, columnNames);table = new JTable(model);table.setPreferredScrollableViewportSize(new Dimension(400, 80));JScrollPane tablePanel = new JScrollPane(table);// 设置表格内容颜色table.setForeground(Color.BLACK); // 字体颜色table.setFont(new Font(null, Font.PLAIN, 14)); // 字体样式table.setSelectionForeground(Color.DARK_GRAY); // 选中后字体颜色table.setSelectionBackground(Color.LIGHT_GRAY); // 选中后字体背景table.setGridColor(Color.GRAY); // 网格颜色// 设置表头table.getTableHeader().setFont(new Font(null, Font.BOLD, 14)); // 设置表头名称字体样式table.getTableHeader().setForeground(Color.RED); // 设置表头名称字体颜色table.getTableHeader().setResizingAllowed(false); // 设置不允许手动改变列宽table.getTableHeader().setReorderingAllowed(false); // 设置不允许拖动重新排序各列// 设置行高table.setRowHeight(40);// 第一列列宽设置为40table.getColumnModel().getColumn(0).setPreferredWidth(40);// 设置滚动面板视口大小(超过该大小的行数据,需要拖动滚动条才能看到)table.setPreferredScrollableViewportSize(new Dimension(900, 320));// 排序器@SuppressWarnings({ "rawtypes" })RowSorter sorter = new TableRowSorter(model);table.setRowSorter(sorter);JScrollPane pane = new JScrollPane(table);// 把 表格 放到 滚动面板 中(表头将自动添加到滚动面板顶部)JScrollPane scrollPane = new JScrollPane(table);// 添加 滚动面板 到 内容面板panel.add(scrollPane);// JScrollPane pane = new JScrollPane(table);// 设置 内容面板 到 窗口jf.setContentPane(panel);jf.pack();jf.setSize(900, 600);jf.add(scrollPane, BorderLayout.CENTER);// 数据居中显示DefaultTableCellRenderer r = new DefaultTableCellRenderer();r.setHorizontalAlignment(JLabel.CENTER);table.setDefaultRenderer(Object.class, r);jf.setLocationRelativeTo(null);int t = table.getRowCount();if (t <= 0) {JOptionPane.showMessageDialog(null, "该系统中还没有录入学生信息!!!");jf.setVisible(false);} else {jf.setVisible(true);}}@SuppressWarnings({ "rawtypes", "unchecked" })private Vector createColumnNames() {Vector columnNames = new Vector();// columnNames.add("序号");columnNames.add("学号");columnNames.add("姓名");columnNames.add("性别");columnNames.add("年龄");columnNames.add("电话号码");columnNames.add("家庭住址");columnNames.add("身份证号码");return columnNames;}@SuppressWarnings({ "rawtypes", "unchecked" })private Vector createTableModelData() {Vector data = new Vector();String t = null;try {FileReader f1 = new FileReader("student.txt");BufferedReader br = new BufferedReader(f1);// arry.clear();// 清除原数组列表中的数据int i = 0;while ((t = br.readLine()) != null) {String[] s = t.split("\\s+"); // 通过空格分割字符串数组Vector rowData = new Vector();// rowData.add("i");rowData.add(s[0]);rowData.add(s[1]);rowData.add(s[2]);rowData.add(s[3]);rowData.add(s[4]);rowData.add(s[5]);rowData.add(s[6]);data.add(rowData);// System.out.print(s[6]);i++;}f1.close();br.close();} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();}return data;}
}

四、源码下载

1.登录说明

1.系统登录:账号:admin  密码:admin;

2.文件存储:student.txt。

2.下载地址

Java+Swing+Txt实现学生信息管理系统

五、其他事宜

1.更多系统

Java+Swing系统系列实现

Java+Swing实现超市管理系统-TXT存储数据

Java+Swing实现自助取款机系统-TXT存储数据

Java+Swing实现宠物商店管理系统-TXT存储数据

Java+Swing实现通讯录管理系统-TXT存储信息

Java+Swing实现图书信息管理系统-TXT存储信息

Java+Swing实现斗地主游戏

Java+Swing实现图书管理系统

Java+Swing实现医院管理系统

Java+Swing实现考试管理系统

Java+Swing实现酒店管理系统

Java+Swing实现超市管理系统1

Java+Swing实现超市管理系统2

Java+Swing实现电影购票系统

Java+Swing实现仓库管理系统-1

Java+Swing实现仓库管理系统-2

Java+Swing实现进销存管理系统

Java+Swing实现自助取款机系统

Java+Swing实现通讯录管理系统

Java+Swing实现停车场管理系统

Java+Swing实现学生信息管理系统-1

Java+Swing实现学生信息管理系统-2

Java+Swing实现学生宿舍管理系统

Java+Swing实现学生选课管理系统

Java+Swing实现学生成绩管理系统

Java+Swing实现学校教材管理系统

Java+Swing实现学校教务管理系统

Java+Swing实现企业人事管理系统

Java+Swing实现电子相册管理系统

Java+JSP系统系列实现

Java+JSP实现学生图书管理系统

Java+JSP实现学生信息管理系统

Java+JSP实现用户信息管理系统

Java+JSP实现教师信息管理系统

Java+JSP实现学生宿舍管理系统

Java+JSP实现商品信息管理系统

Java+JSP实现宠物信息管理系统

Java+JSP实现学生成绩管理系统

Java+Servlet系统系列实现

Java+Servlet+JSP实现航空订票系统

Java+Servlet+JSP实现新闻发布系统

Java+Servlet+JSP学生宿舍管理系统

Java+Servlet+JSP实现图书管理系统

Java+Servlet+JSP实现停车场管理系统

Java+Servlet+JSP实现房屋租赁管理系统

Java+Servlet+JSP实现学生信息管理系统

Java+Servlet+JSP实现学生选课管理系统

Java+Servlet+JSPl实现学生选课签到系统

Java+Servlet+JSP实现宠物诊所管理系统

Java+Servlet+JSP实现学生成绩管理系统-1

Java+Servlet+JSP实现学生成绩管理系统-2

Java+SSM系统系列实现

Java+SSM+JSP实现网上考试系统

Java+SSM+JSP实现宠物商城系统

Java+SSM+JSP实现超市管理系统

Java+SSM+JSP实现学生成绩管理系统

Java+SSM+JSP实现学生信息管理系统

Java+SSM+JSP实现药品信息管理系统

Java+SSM+JSP实现汽车信息管理系统

Java+SSM+Jspl实现商品信息管理系统

Java+SSM+JSP+Maven实现网上书城系统

Java+SSM+JSP+Maven实现学校教务管理系统

Java+SSH系统系列实现

Java+SSH+JSP实现在线考试系统

Java+SSH+JSP实现医院在线挂号系统

Java+Springboot系统系列实现

Java+Springboot+H-ui+Maven实现营销管理系统

Java+Springboot+Bootstrap+Maven实现网上商城系统

Java+Springboot+Bootstrap+Maven实现景区旅游管理系统

1.更多JavaWeb系统请关注专栏。

https://blog.csdn.net/helongqiang/category_10020130.html

2.更多JavaSwing系统请关注专栏。

https://blog.csdn.net/helongqiang/category_6229101.html

2.运行项目

关注B站:水坚石青

后期有更多干货视频推出!!!

Eclipse如何导入JavaSwing项目超详细教程

3.侵权事宜

如有侵权请联系我删除。

4.支持博主

如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/1477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打破国外垄断|暴雨发布纯血国产电脑

要说现在国产手机这边已然进入纯自研模式&#xff0c;但电脑这边却还是仍未打破国外技术垄断。但就在刚刚&#xff0c;暴雨发布自研架构台式机open Station X &#xff0c;这是纯血鸿蒙系统之后国产又一款纯血产品发布&#xff01;标志的我们已经彻底打破西方在硬件及软件方面的…

c++ - 空间申请和释放 new/delete

文章目录 一、c/c内存分布二、new/delete 的使用三、malloc/free 和 new/delete 的对比四、new/delete 的实现原理五、匹配问题 一、c/c内存分布 求下面各个变量的位置 // c/c内存分布int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar …

PyTorch与深度学习:探索现代神经网络的魅力

在科技飞速发展的今天&#xff0c;深度学习作为人工智能领域的重要分支&#xff0c;已经在图像识别、自然语言处理、语音识别等多个领域取得了突破性的进展。而PyTorch&#xff0c;作为一款开源的深度学习框架&#xff0c;以其简洁易用、动态计算图等特性&#xff0c;赢得了广大…

Django中间件的源码解析流程(上)——中间件载入的前置

目录 1. ​前言​ 2. 请求的入口 3. 中间件加载的入口 4. 源码中的闭包实现 5. 最后 1. 前言 哈喽&#xff0c;大家好&#xff0c;我是小K,今天咋们分享的内容是&#xff1a;在学会Django中间件之后&#xff0c; 我们继续深入底层源码。 在执行中间件时请求到来总是从前往后…

ChatGPT研究论文提示词集合3-【数据收集】、【数据分析】和【解释与讨论】

点击下方▼▼▼▼链接直达AIPaperPass &#xff01; AIPaperPass - AI论文写作指导平台 目录 1.数据收集 2.数据分析 3.讨论与解释 4.书籍介绍 AIPaperPass智能论文写作平台 近期小编按照学术论文的流程&#xff0c;精心准备一套学术研究各个流程的提示词集合。总共14个步…

【IDEA】用idea导入eclipse的项目后,提示:The file was loaded in a wrong encoding ‘utf-8‘

前言 最近用IDEA导入一个exlipse项目后&#xff0c;窗口出现这个红色提示&#xff1a; 可以项目中的中文&#xff0c;包括注释都是乱码&#xff0c;要解决问题就跟我开始做吧。 一定要看仔细在操作&#xff01; 一定要看仔细在操作&#xff01; 一定要看仔细在操作&#xf…

rmallox勒索病毒威胁网络安全:如何避免数据被锁定

尊敬的读者&#xff1a; 随着信息技术的飞速发展&#xff0c;网络空间的安全问题日益凸显。近年来&#xff0c;一种名为.rmallox的勒索病毒频繁出没&#xff0c;给广大计算机用户带来了严重的困扰。本文将对该病毒进行深入剖析&#xff0c;并探讨相应的应对策略。在面对被勒索…

飞书API(5):查看多维表 28 种数据类型的数据结构

一、引入 前面我们用于测试的数据集其实都是比较常用的数据&#xff0c;比如说文本、数字、单选等&#xff0c;但飞书多维表并不仅仅只有这些数据&#xff0c;截止发文&#xff0c;飞书多维表应用上支持28种数据类型&#xff0c;在数据层面飞书官方只提供了23种数据类型&#…

微信小程序vue.js+uniapp服装商城销售管理系统nodejs-java

本技术是java平台的开源应用框架&#xff0c;其目的是简化Sping的初始搭建和开发过程。默认配置了很多框架的使用方式&#xff0c;自动加载Jar包&#xff0c;为了让用户尽可能快的跑起来spring应用程序。 SpinrgBoot的主要优点有&#xff1a; 1、为所有spring开发提供了一个更快…

AI 智能工具以及热门AI开源项目整理,包含国内中科院版GPT

AI 智能工具以及热门AI开源项目整理&#xff0c;包含国内中科院版GPT。 不用xx即可访问的镜像网站 https://chat1.yqcloud.top https://chat.bnu120.space https://chat.aidutu.cn https://hzdjs.cn/chatgpt https://chats.fenqubiao.com/zh 需要xx才能访问的网站 https://o…

「 网络安全常用术语解读 」什么是0day、1day、nday漏洞

1. 引言 漏洞攻击的时间窗口被称为漏洞窗口&#xff08;window of vulnerability&#xff09;。一般来说&#xff0c;漏洞窗口持续的时间越长&#xff0c;攻击者可以利用漏洞进行攻击的可能性就越大。 2. 0day 漏洞 0day 漏洞&#xff0c;又被称为"零日漏洞"&…

react之组件与JSX

第一章 - 描述用户界面 概述&#xff1a;React是一个用于构建用户界面&#xff08;UI&#xff09;的JavaScript库&#xff0c;用户界面由按钮&#xff0c;文本和图像等小单元内容构建而成。React帮助你把它们组合成可重用&#xff0c;可嵌套的组件。从web端网站到移动端应用&a…

【讲解下Spring Boot单元测试】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

【漏洞复现】WordPress_Wholesale_Market admin-ajax.php 任意文件读取漏洞

0x01 产品简介 WordPress Wholesale Market是一个WordPress主题,专门设计用于创建批发市场和在线商城网站。该主题提供了许多功能和设计元素,使您能够轻松地构建一个功能强大的批发市场平台,以满足批发商和零售商的需求。 0x02 漏洞概述 WordPress Wholesale Market存在任…

VL02N交货单清除字段:VLSTK(分配状态)

VL02N交货单清除字段&#xff1a;VLSTK(分配状态) 通过查找增强对应的BADI&#xff1a;LE_SHP_DELIVERY_PROC 修改方法&#xff1a;IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_HEADER&#xff0c;代码如下&#xff1a;

#QT获取ONENET云平台数据(草稿)

1.基本目标 &#xff08;1&#xff09;查询ONENT云平台的数据 &#xff08;2&#xff09;查询网络时间 &#xff08;3&#xff09;网络音乐拉取&#xff08;作为背景音乐&#xff09;&#xff0c;音量可调 2.制作UI界面 &#xff08;1&#xff09;串口图标的制作方法 &…

天星金融(原小米金融)履行社会责任,提高社保政策知晓度

二十大报告指出“为民造福是立党为公、执政为民的本质要求“&#xff0c;人民幸福安康是推动高质量发展的最终目的。社会保障作为维护社会公平、增进人民福祉的基本制度&#xff0c;既是“安全网”也是“稳定器”&#xff0c;发挥着改善民生的重要作用。为进一步提升人民群众对…

如何解决DDoS攻击?群联科技做出回答。

DDoS攻击&#xff08;分布式拒绝服务攻击&#xff09;是一种恶意利用多台傀儡机协同发起大规模网络流量&#xff0c;旨在压垮目标系统或网络资源&#xff0c;使其无法正常服务的网络攻击手段。由于现代计算机和网络性能的提升&#xff0c;单点发起的DoS攻击已难以奏效&#xff…

独立样本t检验——python完整代码(直接运行就行)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Author : 三十二画生JH # Contact : fjhstudent163.com # Software: PyCharm # Time : 2024/4/21 21:49 # Site : 网址 # File : t_test.py # Version : # ---功能描述 """ 对实验数据做独立样本&am…

博客网站/部署服务器---继上篇前端页面接入后端

目录 准备工作 创建用户类博客类与连接数据库 创建博客类 创建用户类 创建连接数据库工具类 实现对数据库数据博客的操作 实现对数据库用户的操作 创建数据库语句 登录页面 前端 后端 博客列表 前端 注销登录 写入数据 判断用户是否登录 替换页面用户昵称 后…