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 {
	// 想要实现监听功能就要重写接口ActionListener
	private 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 stub
		new 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);

		// 加入到JFrame
		frame.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);// 退出关闭JFrame
		frame.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();// 学生权限的界面
			}
		});

	}

	@Override
	public 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;
				} else
					JOptionPane.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();
			}
		});
	}

	@Override
	public 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();
			}
		});
	}

	@Override
	public 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);

		// 第一列列宽设置为40
		table.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.支持博主

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

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

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

VulnHub靶机 DC-7 打靶 渗透详细流程

VulnHub靶机 DC-7 实战打靶 详细渗透测试流程 目录 VulnHub靶机 DC-7 实战打靶 详细渗透测试流程一、将靶机配置文件导入虚拟机当中二、渗透测试流程主机发现端口扫描目录爆破web渗透白盒测试ssh远程连接 提权修改后台密码GETSHELL反弹shell 一、将靶机配置文件导入虚拟机当中 …

深度神经网络(DNN)

通过5个条件判定一件事情是否会发生&#xff0c;5个条件对这件事情是否发生的影响力不同&#xff0c;计算每个条件对这件事情发生的影响力多大&#xff0c;写一个深度神经网络&#xff08;DNN&#xff09;模型程序,最后打印5个条件分别的影响力。 示例 在深度神经网络&#xf…

【免费源码下载】完美运营版商城 虚拟商品全功能商城 全能商城小程序 智慧商城系统 全品类百货商城php+uniapp

简介 完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城 干干净净 没有一丝多余收据 还没过手其他站 还没乱七八走的广告和后门 后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 挺不错的一套源码 前端UNIAPP 后端PHP 一键部署版本&am…

51、图论-岛屿数量

思路&#xff1a; 该问题要求在一个由 1&#xff08;表示陆地&#xff09;和 0&#xff08;表示水&#xff09;组成的二维网格中&#xff0c;计算岛屿的数量。岛屿被水包围&#xff0c;并且通过水平或垂直连接相邻的陆地可以形成。这个问题的核心是识别并计数网格中相连的陆地…

ssm068海鲜自助餐厅系统+vue

海鲜自助餐厅系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管…

车载电子电器架构 —— 功能安全开发(首篇)

车载电子电器架构 —— 功能安全开发 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己…

go | defer、panic、recover

刷一道题&#xff0c; 将当函数触发panic 之后&#xff0c;函数是怎么执行的 然后我去找相关博客&#xff0c;发现这篇讲的蛮好的 接下来我直接上demo &#xff0c;然后通过demo 来逐个分析 package mainimport ("fmt" )func f() {defer func() {if r : recover();…

断言(Assertion)在IT技术中的确切含义— 基于四类典型场景的分析

当“断言”&#xff08;Assertion&#xff09;一词成为IT术语时&#xff0c;语义的混沌性和二义性也随之而生。那么&#xff0c;何为断言&#xff1f;断言何为&#xff1f;实际上&#xff0c;只需分析四种典型场景&#xff0c;确切答案和准确描述就将自然显现。 在SAML&#xf…

浏览器主页被“绑架”了?按照这个可以修改。

前言 小白是一个很喜欢看新闻的人&#xff0c;浏览器的默认主页通常都是MSN和百度的新闻&#xff0c;这可以说是习惯吧。 电脑用得好好的&#xff0c;有一天浏览器的主页被“绑架”了&#xff0c;变成了“hao***”。我知道&#xff0c;新一轮的检查又准备开始了。 上一次是Wi…

Docker - WEB应用实例

原文地址&#xff0c;使用效果更佳&#xff01; Docker - WEB应用实例 | CoderMast编程桅杆Docker - WEB应用实例 在之前的章节中&#xff0c;仅对普通容器进行了演示&#xff0c;但在实际中常常使用到 Docker 容器中的 WEB 应用程序。 运行一个WEB应用 拉取镜像 创建一个容器…

小型架构实验模拟

一 实验需求 二 实验环境 22 机器&#xff1a; 做nginx 反向代理 做静态资源服务器 装 nginx keepalived filebeat 44机器&#xff1a; 做22 机器的备胎 装nginx keepalived 99机器&#xff1a;做mysql的主 装mysqld 装node 装filebeat 77机器&#xff1a;做mysq…

ROS机器人实战,对标古月老师HRMRP机器人(一)——机器人总体方案设计

咳咳&#xff01;这个是自己的毕业设计&#xff0c;内容比较多就拆开发。设计实现了一款SLAM移动机器人&#xff0c;加机械臂完成视觉识别抓取的&#xff0c;同时还有语音识别控制、QT上位机控制、Web网页控制。前几年看古月老师的视频&#xff0c;看到古月老师设计的HRMRP&…

Python exe 文件反编译为 Python 脚本

文章目录 前言版本反编译Python 可执行文件&#xff08;.exe&#xff09;反编译打包一个简单的 .exe 可执行文件提取 pyc 文件使用脚本提取使用工具提取 将 .pyc 文件转换为 Python 脚本入口运行类非入口运行类转换补全后的 pyc 文件uncompyle6 反编译在线工具 可能遇到的问题P…

Web前端框架/库/工具

前言 前端从步枪&#xff08;原生js&#xff09;到了半自动武器&#xff08;jQuery&#xff09;并进化为全自动武器&#xff08;三大框架&#xff08;angular&#xff0c;react&#xff0c;vue及其生态链&#xff09;&#xff09;。 常说工欲善其事必先利其器。对于那些想要提…

前端入门:HTML(CSS边框综合案例)

案例&#xff1a; 源代码&#xff1a; css-borders.html: <body> <div id"square"> </div> <br> <div id"triangle"> </div> <br> <div id"trapezium"> </div> <br> <div id…

开源项目-汽车租赁管理系统

哈喽,大家好,今天主要给大家带来一个开源项目-汽车租赁管理系统 汽车租赁管理系统的主要功能包括汽车管理,新闻管理,用户管理,订单管理,数据展示等模块 注:后续文章都会附上安装教程,有问题也欢迎大家评论私信。 登录 汽车管理 汽车管理可以查看所有汽车进行线上汽…

SpringCloud-搭建XXL-JOB任务调度平台教程

一、XXL-JOB任务调度平台介绍 XXL-JOB是一个轻量级分布式任务调度框架&#xff0c;旨在解决分布式系统中的任务调度问题&#xff0c;提高系统的处理效率和任务管理的便捷性。 1. XXL-JOB任务调度概念 XXL-JOB任务调度平台通过中心化管理方式&#xff0c;使得任务的调度更加高…

【Hadoop】- MapReduce YARN的部署[8]

目录 一、部署说明 二、集群规划 三、MapReduce配置文件 四、YARN配置文件 五、分发配置文件 六、集群启动命令 七、查看YARN的WEB UI 页面 一、部署说明 Hadoop HDFS分布式文件系统&#xff0c;我们会启动&#xff1a; NameNode进程作为管理节点DataNode进程作为工作节…

12.Hexo helpers类似函数和data folder数据文件夹

helper Hexo里的helper&#xff0c;或者说是函数 基本上就是小函数&#xff0c;可以在layout布局中使用&#xff0c;可以允许做一些事情 如字符串操作、检查true或false、检查是否在一个页面上、打印出某个页面中的日期或时间特定格式 打开index.ejs trim 可以通过 <%…