一、系统介绍
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.支持博主
如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!