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

embedded/2024/10/17 22:01:19/

一、系统介绍

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

java">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

java">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

java">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

java">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

java">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.ppmy.cn/embedded/6945.html

相关文章

C# Monitor锁

一、Lock和Monitor的关系 二、Monitor多于Lock的功能 三、Monitor常用属性和方法 一、Lock和Monitor的关系 Lock在IL代码中会被翻译成Monitor。lock(obj){} 等同于 Monitor.Enter(obj)和Monitor.Exit(obj) lock 是语法糖&#xff0c;是通过 Monitor 来实现的。 lock能做的…

手写一个民用Tomcat (04)

我们继续来 写 Tomcat 这次我们做优化&#xff0c;先看一下一个标准的http 协议 GET /servlet/com.yixin.HelloWorldServlet HTTP/1.1 Host: localhost:8080 Connection: keep-alive sec-ch-ua: "Microsoft Edge";v"123", "Not:A-Brand";v&quo…

Linux基本命令之正则表达式(转义字符)

一&#xff1a;查看二进制文件 strings 命令&#xff1a;strings 文件名 生成链接文件 ln 命令&#xff1a;ln 选项 源文件(f1) 链接文件&#xff08;f2&#xff09; 软连接&#xff1a;eg:ln -s f1 f2 软链接不能跨分区链接&#xff0c;但可以在同一分区的不同目录下链接…

OWASP发布大语言模型网络安全与治理清单

当前人工智能技术面临的最大风险是大语言模型&#xff08;LLM&#xff09;和生成式人工智能技术的发展和应用速度已经远远超过了安全和治理的速度。 OpenAI、Anthropic、谷歌和微软等公司的生成式人工智能和大语言模型产品的使用正呈指数级增长。与此同时&#xff0c;开源大语…

CCleaner怎么清理软件缓存 CCleaner清理要勾选哪些 ccleanerfree下载

CCleaner软件是一款优秀的数据清理软件&#xff0c;其中没有硬盘和内存的设置&#xff0c;也不含任何广告软件&#xff0c;其出色的注册表清洁功能能够保证您的电脑更稳定运行。本文将围绕CCleaner怎么清理软件缓存&#xff0c;CCleaner清理要勾选哪些的相关内容进行介绍。 一、…

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—更新(正式比赛)

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—更新&#xff08;正式比赛&#xff09; 往期链接&#xff1a; 【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—解题全流程&#xff08;…

LeetCode hot100-29-Y

19. 删除链表的倒数第 N 个结点给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。这题比较简单&#xff0c;我的想法和官方一是一样的&#xff0c;剩下的不想看了。 就是要注意一下删除的是第一个节点的情况&#xff0c;单独处理一下。 我…

Avalonia 捕获全局异常(UI线程 和 非UI线程),增加客户端的稳定性

在 App.axaml.cs 中&#xff0c;App类添加下列事件&#xff1b; 1.重写 OnFrameworkInitializationCompleted &#xff0c;会在程序初始化完成后触发 2. 绑定AppDomain中当前域的事件 AppDomain.CurrentDomain.UnhandledException HandleGlobalException; //UI线程 …