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.hqwc.cn/news/637967.html

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

相关文章

Java学习Go(入门)

下载Go 《官网下载golang》 直接点Download&#xff0c;然后根据你自己的操作系统进行下载&#xff0c;我这里以win10为例 安装go 默认安装到C:\Program Files\Go&#xff0c;这里我们可以选择安装到其他盘&#xff0c;也可以选择默认安装。初学者建议直接一路next。 安装完…

冷却塔的选型方法介绍

冷却塔形式冷却塔形式冷却塔形式 冷却塔有开式冷却塔、闭式冷却塔 闭式冷却塔与开式冷却塔的区别 1)开式冷却塔的冷却原理就是&#xff0c;通过将循环水以喷雾方式&#xff0c;喷淋到玻璃纤维的填料上&#xff0c;通过水与空气的接触&#xff0c;达到换热&#xff0c;再有风机…

Qt 窗口的坐标体系

Qt 窗口的坐标体系 Qt 中使用的坐标系也是平面直角坐标系&#xff0c;但是呢又和我们平时在数学中使用的坐标系是不同的&#xff0c;我们在数学中使用的坐标系是 x 向右增长&#xff0c; y 向上增长。 但是在 Qt 中使用的是 x 轴不变&#xff0c;y 轴是向下增长的。 所以Qt 中…

用python selenium实现短视频一键推送

https://github.com/coolEphemeroptera/VIVI 效果如下 demo 支持youtube视频搬运

PHP反序列化漏洞原理(附带pikachu靶场演示)

1.反序列化概念 序列化:是将变量转换为可保存或传输的字符串的过程;实现函数是serialize()反序列化:就是在适当的时候把这个字符串再转化成原来的变量使用&#xff0c;就是序列化的逆过程。实现函数是unserialize() 直白一点就是&#xff1a;序列化是把对象转换成字节流&#…

解析 IP(IPv4)地址

IPv 4 地址 一、组成二、IPv4 的分类三、子网掩码四、特殊的地址五、私有 IP 地址六、全局 IP 地址七、私有 IP 地址和全局 IP 地址的关系八、广播地址九、网络地址十、IP 地址个数计算十一、查看电脑的 IP 地址&#xff08;window&#xff09;十二、手动设置电脑的 IP 地址 为…

【C++初阶】vector使用特性 vector模拟实现

1.vector的介绍及其使用 1.1 vector的介绍 vector文档介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#…

如何利用ChatGPT进行论文撰写?

原文链接&#xff1a;如何利用ChatGPT进行论文撰写&#xff1f;https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247601619&idx1&snb686fbe87dedfac2df3a6afe780b2ffe&chksmfa820c34cdf5852251dca64597024ea62ddbde280086535ec251f4b62b848d9f9234688384…

服务器Linux上杀死特定进程的命令:kill

1、查看用户XXX正在运行的进程 top -u xxx2、查看想要杀死的进程对应的PID 先找到此进程对应的命令 取其中的main-a3c.py即可 ps -aux | grep main-a3c.py可以看到对应的PID是1325390使用kill杀死对应PID的进程 kill -9 1325390成功&#xff0c;gpustat可以看到之前一直占…

restful请求风格的增删改查-----修改and删除

一、修改&#xff08;和添加类似&#xff09; 前端&#xff1a; <script type"text/javascript">function update(){//创建user对象var user {id:$("#id").val(),username:$("#username").val(),password:$("#password").val…

华为海思校园招聘-芯片-数字 IC 方向 题目分享——第六套

华为海思校园招聘-芯片-数字 IC 方向 题目分享——第六套 (共9套&#xff0c;有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&#xff09; 部分题目分享&#xff0c;完整版获取&#xff08;WX:didadidadidida313&#xff0c;加我备注&#x…

CSS基础:position定位的5个类型详解!

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…