• 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

    1. package com.sjsq.view;
    2. import java.awt.GridLayout;
    3. import java.awt.event.ActionEvent;
    4. import java.awt.event.ActionListener;
    5. import javax.swing.Icon;
    6. import javax.swing.ImageIcon;
    7. import javax.swing.JButton;
    8. import javax.swing.JFrame;
    9. import javax.swing.JLabel;
    10. import javax.swing.JOptionPane;
    11. import javax.swing.JPanel;
    12. import javax.swing.JPasswordField;
    13. import javax.swing.JTextField;
    14. /**
    15. *
    16. * 管理员登录
    17. *
    18. */
    19. public class LoginFirstFrame extends JFrame implements ActionListener {
    20. // 想要实现监听功能就要重写接口ActionListener
    21. private static final long serialVersionUID = 1L;
    22. private JPanel jp1, jp2, jp3;
    23. private JButton jb1, jb2;
    24. private JLabel jl1, jl2;
    25. private JTextField jtf;
    26. private JPasswordField jpf;
    27. private Icon welcomeIcon = new ImageIcon("welcome.png");
    28. private JLabel lbWelcome = new JLabel(welcomeIcon);
    29. public static void main(String[] args) {
    30. // TODO Auto-generated method stub
    31. new LoginFirstFrame();
    32. }
    33. public LoginFirstFrame() {
    34. this.add(lbWelcome);
    35. this.setTitle("用户登录");
    36. // Box.createVerticalStrut(100);
    37. this.setSize(600, 400); // 通过这里可以调整界面的大小
    38. this.setLocation(800, 300);
    39. this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    40. this.setLayout(new GridLayout(4, 1));
    41. jp1 = new JPanel();
    42. jl1 = new JLabel("账户:");
    43. jtf = new JTextField(20);
    44. jp1.add(jl1);
    45. jp1.add(jtf);
    46. this.add(jp1);
    47. jp2 = new JPanel();
    48. jl2 = new JLabel("密码:");
    49. jpf = new JPasswordField(20);
    50. jp2.add(jl2);
    51. jp2.add(jpf);
    52. this.add(jp2);
    53. jp3 = new JPanel();
    54. jb1 = new JButton("登录");
    55. jb2 = new JButton("退出");
    56. jp3.add(jb1);
    57. jp3.add(jb2);
    58. this.add(jp3);
    59. this.setVisible(true);
    60. System.out.println(jtf.getText().toString());
    61. // 增加监听
    62. jb1.addActionListener((ActionListener) this);
    63. jb2.addActionListener((ActionListener) this);
    64. }
    65. public void actionPerformed(ActionEvent e) {
    66. if (e.getSource() == jb1) {// 如果点击的是"登陆"的button,则对账号密码进行判断
    67. String account = jtf.getText();
    68. String password = new String(jpf.getPassword());
    69. // FileOpe.getInfoByAccount(account);
    70. if (account.equals("admin") && password.equals("admin")) {
    71. JOptionPane.showMessageDialog(this, "登录成功");
    72. this.dispose();
    73. new LoginFrame();
    74. } else {
    75. JOptionPane.showMessageDialog(this, "登录失败");
    76. System.out.println(account + password);
    77. return;
    78. }
    79. } else if (e.getSource() == jb2) {// 如果点击的是"退出"的button那么就直接退出程序
    80. JOptionPane.showMessageDialog(this, "谢谢光临");
    81. System.exit(0);
    82. }
    83. }
    84. }

    LoginFrame

    1. package com.sjsq.view;
    2. import java.awt.GridLayout;
    3. import java.awt.event.ActionEvent;
    4. import java.awt.event.ActionListener;
    5. import javax.swing.JButton;
    6. import javax.swing.JFrame;
    7. import javax.swing.JLabel;
    8. import javax.swing.JPanel;
    9. /**
    10. * 登录界面
    11. * @author 陈娟
    12. * @author shuijianshiqing
    13. *
    14. */
    15. public class LoginFrame extends JFrame implements ActionListener {
    16. // 重写接口实现监听
    17. private static final long serialVersionUID = 1L;
    18. // 定义组件
    19. JFrame frame = new JFrame();
    20. JPanel jp1, jp2, jp3;// 面板
    21. JLabel jlb1, jlb2;// 标签
    22. JButton jb1, jb2;// 按钮
    23. // 构造函数
    24. public LoginFrame() {
    25. // 创建面板
    26. jp1 = new JPanel();
    27. jp2 = new JPanel();
    28. jp3 = new JPanel();
    29. // 创建标签
    30. jlb1 = new JLabel("选择操作界面");
    31. // 创建按钮
    32. jb1 = new JButton("老师");
    33. jb2 = new JButton("学生");
    34. // 设置布局管理
    35. frame.setLayout(new GridLayout(3, 1));// 网格式布局
    36. // 加入各个组件
    37. jp1.add(jlb1);
    38. jp3.add(jb1);
    39. jp3.add(jb2);
    40. // 加入到JFrame
    41. frame.add(jp2);
    42. frame.add(jp1);
    43. // this.add(jp2);
    44. frame.add(jp3);
    45. // 设置窗体
    46. frame.setTitle("用户登录界面");// 窗体标签
    47. frame.setSize(400, 300);// 窗体大小
    48. frame.setLocationRelativeTo(null);// 在屏幕中间显示(居中显示)
    49. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 退出关闭JFrame
    50. frame.setVisible(true);// 显示窗体
    51. // 增加监听
    52. jb1.addActionListener(new ActionListener() {
    53. public void actionPerformed(ActionEvent e) {
    54. frame.setVisible(false);
    55. new ManagerLoginFrame();// 老师权限的界面
    56. }
    57. });
    58. jb2.addActionListener(new ActionListener() {
    59. public void actionPerformed(ActionEvent e) {
    60. frame.setVisible(false);
    61. new StudentLoginFrame();// 学生权限的界面
    62. }
    63. });
    64. }
    65. @Override
    66. public void actionPerformed(ActionEvent e) {
    67. // TODO Auto-generated method stub
    68. }
    69. }

    ManagerLoginFrame

    1. package com.sjsq.view;
    2. import java.awt.BorderLayout;
    3. import java.awt.Container;
    4. import java.awt.GridLayout;
    5. import java.awt.event.ActionEvent;
    6. import java.awt.event.ActionListener;
    7. import java.io.BufferedWriter;
    8. import java.io.FileWriter;
    9. import java.io.IOException;
    10. import java.util.ArrayList;
    11. import javax.swing.ButtonGroup;
    12. import javax.swing.JButton;
    13. import javax.swing.JFrame;
    14. import javax.swing.JLabel;
    15. import javax.swing.JOptionPane;
    16. import javax.swing.JPanel;
    17. import javax.swing.JRadioButton;
    18. import javax.swing.JTextField;
    19. import com.sjsq.dao.StudentDao;
    20. import com.sjsq.entity.Student;
    21. /**
    22. * 教师登录后的主页
    23. * @author 陈娟
    24. * @author shuijianshiqing
    25. *
    26. */
    27. public class ManagerLoginFrame extends JFrame implements ActionListener{
    28. private static final long serialVersionUID = 1L;
    29. StudentDao fun = new StudentDao();
    30. // 定义组件
    31. JLabel lb1 = new JLabel("教师操作界面");// JLabel 对象可以显示文本、图像
    32. JLabel lb2 = new JLabel("提示:录入前请先输入学号,修改、删除根据学号修改信息\r\n");
    33. JTextField 学号, 姓名, 年龄, 电话号码, 家庭住址, 身份证号码;// 输入学生基本信息得文本
    34. JRadioButton 男, 女;// 声明单选项对象,性别选择
    35. ButtonGroup group = null;// 声明按钮组
    36. JButton 录入, 查询, 删除, 修改, 显示, 返回;// 声明相应的操作的按钮
    37. JPanel p1, p2, p3, p4, p5, p6, p7, pv, ph, pb;// 调节布局的通道
    38. public ManagerLoginFrame() { // 负责管理员登录的主窗口
    39. super("学生信息管理系统");
    40. 学号 = new JTextField(18);// 创建文本信息的的对象
    41. 姓名 = new JTextField(18);
    42. 电话号码 = new JTextField(18);
    43. 年龄 = new JTextField(18);
    44. 家庭住址 = new JTextField(18);
    45. 身份证号码 = new JTextField(18);
    46. group = new ButtonGroup();
    47. 男 = new JRadioButton("男");// 初始化单选框,
    48. 女 = new JRadioButton("女");
    49. group.add(男);// 把按钮添加到按钮组
    50. group.add(女);
    51. 录入 = new JButton("增加学生信息");// 创建按钮对象
    52. 查询 = new JButton("查询学生信息");
    53. 删除 = new JButton("删除学生信息");
    54. 修改 = new JButton("修改学生信息");
    55. 显示 = new JButton("显示全部学生信息");
    56. 返回 = new JButton("返回");
    57. pb = new JPanel();
    58. pb.add(lb1, JLabel.CENTER);
    59. p1 = new JPanel();// 创建一个面板
    60. //p1.add(lb2, JLabel.CENTER);
    61. p1.add(new JLabel("学生学号:", JLabel.CENTER));// JLabel.CENTER是指JLabel的中心点。CENTER是中心点的坐标
    62. p1.add(学号);
    63. p2 = new JPanel();
    64. p2.add(new JLabel("学生姓名:", JLabel.CENTER));
    65. p2.add(姓名);
    66. p3 = new JPanel();
    67. p3.add(new JLabel("学生性别:", JLabel.CENTER));
    68. p3.add(男);
    69. p3.add(女);
    70. p4 = new JPanel();
    71. p4.add(new JLabel("学生年龄:", JLabel.CENTER));
    72. p4.add(年龄);
    73. p5 = new JPanel();
    74. p5.add(new JLabel("电话号码:", JLabel.CENTER));
    75. p5.add(电话号码);
    76. p6 = new JPanel();
    77. p6.add(new JLabel("家庭住址:", JLabel.CENTER));
    78. p6.add(家庭住址);
    79. p7 = new JPanel();
    80. p7.add(new JLabel("身份证号:", JLabel.CENTER));
    81. p7.add(身份证号码);
    82. pv = new JPanel();// 面板
    83. pv.setLayout(new GridLayout(7, 1)); // 把pv组件设置成第七行1列的网格布局
    84. pv.add(p1);// 把面板放到容器中,add()代表容器
    85. pv.add(p2);
    86. pv.add(p3);
    87. pv.add(p4);
    88. pv.add(p5);
    89. pv.add(p6);
    90. pv.add(p7);
    91. ph = new JPanel();
    92. ph.add(录入);
    93. ph.add(查询);
    94. ph.add(修改);
    95. ph.add(删除);
    96. ph.add(显示);
    97. ph.add(返回);
    98. Container con = getContentPane();// 建立容器对象con,取得容器面板
    99. con.setLayout(new BorderLayout());// 设置布局为边框布局,边框布局分东南西北中5个方位来添加控件。
    100. // 若没有指定方位,将添加到中间,上下左右都可以扩展
    101. con.add(pb, BorderLayout.NORTH);// Frame对象lb调用方法add(),lb放在最北上方
    102. con.add(pv, BorderLayout.CENTER);// pv在中间
    103. con.add(ph, BorderLayout.SOUTH);// ph在南边
    104. setDefaultCloseOperation(EXIT_ON_CLOSE);// 置一个默认的关闭操作,也就是你的JFrame窗口的关闭按钮,点击它时,退出程序
    105. //setBounds(100, 100, 900, 450);// setBounds(x,y,width,height); x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点 width:组件的长度
    106. setSize(900, 450);// 窗体大小 // height:组件的高度
    107. setLocationRelativeTo(null);// 在屏幕中间显示(居中显示)
    108. setVisible(true);// 目的是使控件可以显示出来,如果该控件已经被显示出来
    109. Student stu = new Student();
    110. @SuppressWarnings("unused")
    111. ArrayList arry = new ArrayList();
    112. // 添加监听
    113. // 点击录入按钮 学号","姓名","性别","年龄","电话号码","家庭住址","身份证号码"
    114. 录入.addActionListener(new ActionListener() {
    115. public void actionPerformed(ActionEvent e) {
    116. String sID = 学号.getText(); // 获取文本框中内容
    117. if (fun.find(sID) != -1) {
    118. JOptionPane.showMessageDialog(null, "该学号对应的学生已经存在!!!\n\n请重新输入或者修改已经录入的学生");
    119. // 清空文本框
    120. 学号.setText("");
    121. 姓名.setText("");
    122. 年龄.setText("");
    123. 电话号码.setText("");
    124. 家庭住址.setText("");
    125. 身份证号码.setText("");
    126. return;
    127. }
    128. String sname = 姓名.getText();
    129. // 先判断学号和姓名是否为空,如果为空,直接退出
    130. if (sID.equals("") || sname.equals("")) {
    131. JOptionPane.showMessageDialog(null, "录入的学生学号或姓名为空!!!\n\n请重新输入");
    132. return;
    133. }
    134. String sage = 年龄.getText();
    135. if (sage.equals(""))// 年龄为空,没有输入
    136. sage = "--";
    137. String scall = 电话号码.getText();
    138. if (scall.equals(""))
    139. scall = "--";
    140. String shome = 家庭住址.getText();
    141. if (shome.equals(""))
    142. shome = "--";
    143. String siden = 身份证号码.getText();
    144. if (siden.equals(""))
    145. siden = "--";
    146. String ssex = null;
    147. if (男.isSelected()) {// 选择男女
    148. ssex = 男.getText();
    149. } else {
    150. ssex = 女.getText();
    151. }
    152. stu.setStuid(sID);
    153. stu.setAge(sage);
    154. stu.setName(sname);
    155. stu.setSex(ssex);
    156. stu.setCallnumber(scall);
    157. stu.setHomeplace(shome);
    158. stu.setIdentityid(siden);
    159. // arry.clear();// 清除原数组列表中的数据
    160. // Input input=new Input(stu);
    161. System.out.println("信息管理员");
    162. System.out.println(stu.fileString());
    163. fun.add(stu);
    164. fun.writefile();
    165. JOptionPane.showMessageDialog(null, "录入成功!!!");
    166. // dispose();
    167. setVisible(false);
    168. new ManagerLoginFrame();
    169. }
    170. });
    171. // 显示全部学生信息
    172. 显示.addActionListener(new ActionListener() {
    173. public void actionPerformed(ActionEvent e) {
    174. // show_stuall all=new show_stuall();
    175. new ShowAllStudentFrame();
    176. }
    177. });
    178. // 查询某个学生信息
    179. 查询.addActionListener(new ActionListener() {
    180. public void actionPerformed(ActionEvent e) {
    181. String sID = 学号.getText(); // 获取文本框中内容
    182. if (sID.equals(""))
    183. sID = "--";
    184. String sname = 姓名.getText();
    185. if (sname.equals(""))
    186. sname = "--";
    187. String sage = 年龄.getText();
    188. if (sage.equals("")) // 年龄为空,没有输入
    189. sage = "--";
    190. String scall = 电话号码.getText();
    191. if (scall.equals(""))
    192. scall = "--";
    193. String shome = 家庭住址.getText();
    194. if (shome.equals(""))
    195. shome = "--";
    196. String siden = 身份证号码.getText();
    197. if (siden.equals(""))
    198. siden = "--";
    199. String ssex = null;
    200. if (男.isSelected()) {// 选择男女
    201. ssex = 男.getText();
    202. } else {
    203. if (女.isSelected())
    204. ssex = 女.getText();
    205. else {
    206. ssex = "--";
    207. }
    208. }
    209. // 将要查询的符合条件的写入文件
    210. FileWriter fw = null;
    211. BufferedWriter out = null;// 学号","姓名","性别","年龄","电话号码","家庭住址","身份证号码" };
    212. try {
    213. fw = new FileWriter("查询时暂时存放的文件.txt");
    214. out = new BufferedWriter(fw);
    215. // 姓名学号等中间隔一个空格
    216. out.write(sID + " ");
    217. out.write(sname + " ");
    218. out.write(ssex + " ");
    219. out.write(sage + " ");
    220. out.write(scall + " ");
    221. out.write(shome + " ");
    222. out.write(siden + " "); // 每次覆盖写入,无需全部保存
    223. out.close();
    224. fw.close();
    225. } catch (IOException e1) {
    226. e1.printStackTrace();
    227. }
    228. // 开始查询
    229. new ShowOneStudentFrame();
    230. // 清空文本框
    231. 学号.setText("");
    232. 姓名.setText("");
    233. 年龄.setText("");
    234. 电话号码.setText("");
    235. 家庭住址.setText("");
    236. 身份证号码.setText("");
    237. group.clearSelection();
    238. }
    239. });
    240. // 删除学生信息,按学号删除
    241. 删除.addActionListener(new ActionListener() {
    242. public void actionPerformed(ActionEvent e) {
    243. String sID = 学号.getText(); // 获取文本框中内容
    244. int flag = fun.find(sID);
    245. if (flag == -1) {
    246. JOptionPane.showMessageDialog(null, "未查找到该学号的学生!!!\n\n请重新输入");
    247. } else {
    248. fun.delete(sID);
    249. fun.writefile();
    250. JOptionPane.showMessageDialog(null, "删除成功!!!\n");
    251. }
    252. // 清空文本框
    253. 学号.setText("");
    254. 姓名.setText("");
    255. 年龄.setText("");
    256. 电话号码.setText("");
    257. 家庭住址.setText("");
    258. 身份证号码.setText("");
    259. group.clearSelection();
    260. }
    261. });
    262. // 修改学生信息
    263. 修改.addActionListener(new ActionListener() {
    264. public void actionPerformed(ActionEvent e) {
    265. String sID = 学号.getText(); // 获取文本框中内容
    266. int flag = fun.find(sID); // 查找是否存在
    267. if (flag == -1) {
    268. JOptionPane.showMessageDialog(null, "未查找到该学号的学生!!!\n\n请重新输入");
    269. return;
    270. } else
    271. JOptionPane.showMessageDialog(null, "该系统中存在该学生数据\n\n,确认返回后请输入需要修改后的数据");
    272. String sage = 年龄.getText();
    273. if (sage.equals(""))// 年龄为空,没有输入
    274. sage = "--";
    275. String scall = 电话号码.getText();
    276. if (scall.equals(""))
    277. scall = "--";
    278. String shome = 家庭住址.getText();
    279. if (shome.equals(""))
    280. shome = "--";
    281. String siden = 身份证号码.getText();
    282. if (siden.equals(""))
    283. siden = "--";
    284. String ssex = null;
    285. if (男.isSelected()) {// 选择男女
    286. ssex = 男.getText();
    287. } else {
    288. ssex = 女.getText();
    289. }
    290. String sname = 姓名.getText();
    291. // 先判断学号和姓名是否为空,如果为空,直接退出
    292. if (sname.equals("")) {
    293. JOptionPane.showMessageDialog(null, "录入的学生姓名为空!!!\n\n请重新输入");
    294. return;
    295. }
    296. // Student stu=new Student();
    297. stu.setStuid(sID);
    298. stu.setAge(sage);
    299. stu.setName(sname);
    300. stu.setSex(ssex);
    301. stu.setCallnumber(scall);
    302. stu.setHomeplace(shome);
    303. stu.setIdentityid(siden);
    304. fun.update(stu); // 修改
    305. fun.writefile();
    306. JOptionPane.showMessageDialog(null, "修改成功!!!");
    307. // 清空文本框
    308. 学号.setText("");
    309. 姓名.setText("");
    310. 年龄.setText("");
    311. 电话号码.setText("");
    312. 家庭住址.setText("");
    313. 身份证号码.setText("");
    314. group.clearSelection();
    315. }
    316. });
    317. 返回.addActionListener(new ActionListener() {
    318. public void actionPerformed(ActionEvent e) {
    319. setVisible(false); // 目的是使控件不可以显示出来
    320. new LoginFrame();
    321. }
    322. });
    323. }
    324. @Override
    325. public void actionPerformed(ActionEvent arg0) {
    326. // TODO Auto-generated method stub
    327. }
    328. public static void main(String[] args) {
    329. new ManagerLoginFrame();
    330. }
    331. }

    StudentLoginFrame

    1. package com.sjsq.view;
    2. import java.awt.BorderLayout;
    3. import java.awt.Container;
    4. import java.awt.GridLayout;
    5. import java.awt.event.ActionEvent;
    6. import java.awt.event.ActionListener;
    7. import java.io.BufferedWriter;
    8. import java.io.FileWriter;
    9. import java.io.IOException;
    10. import java.util.ArrayList;
    11. import javax.swing.ButtonGroup;
    12. import javax.swing.JButton;
    13. import javax.swing.JFrame;
    14. import javax.swing.JLabel;
    15. import javax.swing.JPanel;
    16. import javax.swing.JRadioButton;
    17. import javax.swing.JTextField;
    18. import com.sjsq.entity.Student;
    19. /**
    20. * 学生登录后的主页
    21. * @author 陈娟
    22. * @author shuijianshiqing
    23. *
    24. */
    25. public class StudentLoginFrame extends JFrame implements ActionListener {
    26. private static final long serialVersionUID = 1L;
    27. // Function fun = new Function();
    28. // 定义组件
    29. JLabel lb1 = new JLabel("学生操作界面");// JLabel 对象可以显示文本、图像
    30. JLabel lb2 = new JLabel("提示:录入前请先输入学号,修改、删除根据学号修改信息");
    31. JTextField 学号, 姓名, 年龄, 电话号码, 家庭住址, 身份证号码;// 输入学生基本信息得文本
    32. JRadioButton 男, 女;// 声明单选项对象,性别选择
    33. ButtonGroup group = null;// 声明按钮组
    34. JButton 录入, 查询, 删除, 修改, 显示, 返回;// 声明相应的操作的按钮
    35. JPanel p1, p2, p3, p4, p5, p6, p7, pv, ph, pb;// 调节布局的通道
    36. Student stu = new Student();
    37. ArrayList arry = new ArrayList<>();
    38. public StudentLoginFrame() { // 负责管理员登录的主窗口
    39. super("学生信息管理系统");
    40. 学号 = new JTextField(18);// 创建文本信息的的对象
    41. 姓名 = new JTextField(18);
    42. 电话号码 = new JTextField(18);
    43. 年龄 = new JTextField(18);
    44. 家庭住址 = new JTextField(18);
    45. 身份证号码 = new JTextField(18);
    46. group = new ButtonGroup();
    47. 男 = new JRadioButton("男");// 初始化单选框,
    48. 女 = new JRadioButton("女");
    49. group.add(男);// 把按钮添加到按钮组
    50. group.add(女);
    51. // 录入=new JButton("增加学生信息");//创建按钮对象
    52. 查询 = new JButton("查询某个学生信息");
    53. // 删除=new JButton("删除学生信息");
    54. // 修改.setEnabled(false); //设置修改控件不可用
    55. // 修改=new JButton("修改学生信息");
    56. 显示 = new JButton("显示全部学生信息");
    57. 返回 = new JButton("返回");
    58. pb = new JPanel();
    59. pb.add(lb1, JLabel.CENTER);
    60. p1 = new JPanel();// 创建一个面板
    61. // p1.setLayout(new GridLayout(3,0));
    62. //p1.add(lb2, JLabel.CENTER);
    63. p1.add(new JLabel("学生学号:", JLabel.CENTER));// JLabel.CENTER是指JLabel的中心点。CENTER是中心点的坐标
    64. p1.add(学号);
    65. p2 = new JPanel();
    66. p2.add(new JLabel("学生姓名:", JLabel.CENTER));
    67. p2.add(姓名);
    68. p3 = new JPanel();
    69. p3.add(new JLabel("学生性别:", JLabel.CENTER));
    70. p3.add(男);
    71. p3.add(女);
    72. p4 = new JPanel();
    73. p4.add(new JLabel("学生年龄:", JLabel.CENTER));
    74. p4.add(年龄);
    75. p5 = new JPanel();
    76. p5.add(new JLabel("电话号码:", JLabel.CENTER));
    77. p5.add(电话号码);
    78. p6 = new JPanel();
    79. p6.add(new JLabel("家庭住址:", JLabel.CENTER));
    80. p6.add(家庭住址);
    81. p7 = new JPanel();
    82. p7.add(new JLabel("身份证号:", JLabel.CENTER));
    83. p7.add(身份证号码);
    84. pv = new JPanel();// 面板
    85. pv.setLayout(new GridLayout(7, 1)); // 把pv组件设置成第七行1列的网格布局
    86. pv.add(p1);// 把面板放到容器中,add()代表容器
    87. pv.add(p2);
    88. pv.add(p3);
    89. pv.add(p4);
    90. pv.add(p5);
    91. pv.add(p6);
    92. pv.add(p7);
    93. ph = new JPanel();
    94. // ph.add(录入);
    95. ph.add(查询);
    96. // ph.add(修改);
    97. // ph.add(删除);
    98. ph.add(显示);
    99. ph.add(返回);
    100. Container con = getContentPane();// 建立容器对象con,取得容器面板
    101. con.setLayout(new BorderLayout());// 设置布局为边框布局,边框布局分东南西北中5个方位来添加控件。
    102. // 若没有指定方位,将添加到中间,上下左右都可以扩展
    103. con.add(pb, BorderLayout.NORTH);// Frame对象lb调用方法add(),lb放在最北上方
    104. con.add(pv, BorderLayout.CENTER);// pv在中间
    105. con.add(ph, BorderLayout.SOUTH);// ph在南边
    106. setDefaultCloseOperation(EXIT_ON_CLOSE);// 置一个默认的关闭操作,也就是你的JFrame窗口的关闭按钮,点击它时,退出程序
    107. //setBounds(100, 100, 900, 450);// setBounds(x,y,width,height); x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点 width:组件的长度
    108. setSize(900, 450);// 窗体大小 // height:组件的高度
    109. setLocationRelativeTo(null);// 在屏幕中间显示(居中显示)
    110. setVisible(true);// 目的是使控件可以显示出来,如果该控件已经被显示出来
    111. // 添加监听
    112. // 显示全部学生信息
    113. 显示.addActionListener(new ActionListener() {
    114. public void actionPerformed(ActionEvent e) {
    115. new ShowAllStudentFrame();
    116. }
    117. });
    118. // 查询某个学生信息
    119. 查询.addActionListener(new ActionListener() {
    120. public void actionPerformed(ActionEvent e) {
    121. String sID = 学号.getText(); // 获取文本框中内容
    122. if (sID.equals(""))
    123. sID = "--";
    124. String sname = 姓名.getText();
    125. if (sname.equals(""))
    126. sname = "--";
    127. String sage = 年龄.getText();
    128. if (sage.equals("")) // 年龄为空,没有输入
    129. sage = "--";
    130. String scall = 电话号码.getText();
    131. if (scall.equals(""))
    132. scall = "--";
    133. String shome = 家庭住址.getText();
    134. if (shome.equals(""))
    135. shome = "--";
    136. String siden = 身份证号码.getText();
    137. if (siden.equals(""))
    138. siden = "--";
    139. String ssex = null;
    140. if (男.isSelected()) {// 选择男女
    141. ssex = 男.getText();
    142. } else {
    143. if (女.isSelected())
    144. ssex = 女.getText();
    145. else {
    146. ssex = "--";
    147. }
    148. }
    149. // 将要查询的符合条件的写入文件
    150. FileWriter fw = null;
    151. BufferedWriter out = null; // 学号","姓名","性别","年龄","电话号码","家庭住址","身份证号码" };
    152. try {
    153. fw = new FileWriter("查询时暂时存放的文件.txt");
    154. out = new BufferedWriter(fw);
    155. // 姓名学号等中间隔一个空格
    156. out.write(sID + " ");
    157. out.write(sname + " ");
    158. out.write(ssex + " ");
    159. out.write(sage + " ");
    160. out.write(scall + " ");
    161. out.write(shome + " ");
    162. out.write(siden + " "); // 每次覆盖写入,无需全部保存
    163. out.close();
    164. fw.close();
    165. } catch (IOException e1) {
    166. e1.printStackTrace();
    167. }
    168. // 开始查询
    169. new ShowOneStudentFrame();
    170. // 清空文本框
    171. 学号.setText("");
    172. 姓名.setText("");
    173. 年龄.setText("");
    174. 电话号码.setText("");
    175. 家庭住址.setText("");
    176. 身份证号码.setText("");
    177. group.clearSelection();
    178. }
    179. });
    180. 返回.addActionListener(new ActionListener() {
    181. public void actionPerformed(ActionEvent e) {
    182. setVisible(false); // 目的是使控件不可以显示出来
    183. new LoginFrame();
    184. }
    185. });
    186. }
    187. @Override
    188. public void actionPerformed(ActionEvent e) {
    189. // TODO Auto-generated method stub
    190. }
    191. public static void main(String[] args) {
    192. new StudentLoginFrame();
    193. }
    194. }

    ShowAllStudentFrame

    1. package com.sjsq.view;
    2. import java.awt.BorderLayout;
    3. import java.awt.Color;
    4. import java.awt.Dimension;
    5. import java.awt.Font;
    6. import java.io.BufferedReader;
    7. import java.io.FileReader;
    8. import java.io.IOException;
    9. import java.util.Vector;
    10. import javax.swing.JFrame;
    11. import javax.swing.JLabel;
    12. import javax.swing.JOptionPane;
    13. import javax.swing.JPanel;
    14. import javax.swing.JScrollPane;
    15. import javax.swing.JTable;
    16. import javax.swing.RowSorter;
    17. import javax.swing.table.DefaultTableCellRenderer;
    18. import javax.swing.table.DefaultTableModel;
    19. import javax.swing.table.TableRowSorter;
    20. /**
    21. *
    22. * 显示所有学生信息
    23. *
    24. * @author 陈娟
    25. * @author shuijianshiqing
    26. *
    27. */
    28. @SuppressWarnings("unused")
    29. public class ShowAllStudentFrame {
    30. JTable table = null;
    31. DefaultTableModel model = null;
    32. // 显示全部学生信息
    33. @SuppressWarnings("unchecked")
    34. public ShowAllStudentFrame() {
    35. JFrame jf = new JFrame("显示全部学生信息(点击表头可以按照升序降序排序)");
    36. // 创建内容面板
    37. JPanel panel = new JPanel();
    38. // 表头(列名)
    39. @SuppressWarnings("rawtypes")
    40. Vector columnNames = createColumnNames();
    41. @SuppressWarnings("rawtypes")
    42. Vector data = createTableModelData();
    43. // 创建一个默认的表格模型
    44. model = new DefaultTableModel(data, columnNames);
    45. table = new JTable(model);
    46. table.setPreferredScrollableViewportSize(new Dimension(400, 80));
    47. JScrollPane tablePanel = new JScrollPane(table);
    48. // 设置表格内容颜色
    49. table.setForeground(Color.BLACK); // 字体颜色
    50. table.setFont(new Font(null, Font.PLAIN, 14)); // 字体样式
    51. table.setSelectionForeground(Color.DARK_GRAY); // 选中后字体颜色
    52. table.setSelectionBackground(Color.LIGHT_GRAY); // 选中后字体背景
    53. table.setGridColor(Color.GRAY); // 网格颜色
    54. // 设置表头
    55. table.getTableHeader().setFont(new Font(null, Font.BOLD, 14)); // 设置表头名称字体样式
    56. table.getTableHeader().setForeground(Color.RED); // 设置表头名称字体颜色
    57. table.getTableHeader().setResizingAllowed(false); // 设置不允许手动改变列宽
    58. table.getTableHeader().setReorderingAllowed(false); // 设置不允许拖动重新排序各列
    59. // 设置行高
    60. table.setRowHeight(40);
    61. // 第一列列宽设置为40
    62. table.getColumnModel().getColumn(0).setPreferredWidth(40);
    63. // 设置滚动面板视口大小(超过该大小的行数据,需要拖动滚动条才能看到)
    64. table.setPreferredScrollableViewportSize(new Dimension(900, 320));
    65. // 排序器
    66. @SuppressWarnings({ "rawtypes" })
    67. RowSorter sorter = new TableRowSorter(model);
    68. table.setRowSorter(sorter);
    69. JScrollPane pane = new JScrollPane(table);
    70. // 把 表格 放到 滚动面板 中(表头将自动添加到滚动面板顶部)
    71. JScrollPane scrollPane = new JScrollPane(table);
    72. // 添加 滚动面板 到 内容面板
    73. panel.add(scrollPane);
    74. // JScrollPane pane = new JScrollPane(table);
    75. // 设置 内容面板 到 窗口
    76. jf.setContentPane(panel);
    77. jf.pack();
    78. jf.setSize(900, 600);
    79. jf.add(scrollPane, BorderLayout.CENTER);
    80. // 数据居中显示
    81. DefaultTableCellRenderer r = new DefaultTableCellRenderer();
    82. r.setHorizontalAlignment(JLabel.CENTER);
    83. table.setDefaultRenderer(Object.class, r);
    84. jf.setLocationRelativeTo(null);
    85. int t = table.getRowCount();
    86. if (t <= 0) {
    87. JOptionPane.showMessageDialog(null, "该系统中还没有录入学生信息!!!");
    88. jf.setVisible(false);
    89. } else {
    90. jf.setVisible(true);
    91. }
    92. }
    93. @SuppressWarnings({ "rawtypes", "unchecked" })
    94. private Vector createColumnNames() {
    95. Vector columnNames = new Vector();
    96. // columnNames.add("序号");
    97. columnNames.add("学号");
    98. columnNames.add("姓名");
    99. columnNames.add("性别");
    100. columnNames.add("年龄");
    101. columnNames.add("电话号码");
    102. columnNames.add("家庭住址");
    103. columnNames.add("身份证号码");
    104. return columnNames;
    105. }
    106. @SuppressWarnings({ "rawtypes", "unchecked" })
    107. private Vector createTableModelData() {
    108. Vector data = new Vector();
    109. String t = null;
    110. try {
    111. FileReader f1 = new FileReader("student.txt");
    112. BufferedReader br = new BufferedReader(f1);
    113. // arry.clear();// 清除原数组列表中的数据
    114. int i = 0;
    115. while ((t = br.readLine()) != null) {
    116. String[] s = t.split("\\s+"); // 通过空格分割字符串数组
    117. Vector rowData = new Vector();
    118. // rowData.add("i");
    119. rowData.add(s[0]);
    120. rowData.add(s[1]);
    121. rowData.add(s[2]);
    122. rowData.add(s[3]);
    123. rowData.add(s[4]);
    124. rowData.add(s[5]);
    125. rowData.add(s[6]);
    126. data.add(rowData);
    127. // System.out.print(s[6]);
    128. i++;
    129. }
    130. f1.close();
    131. br.close();
    132. } catch (IOException e) {
    133. // TODO 自动生成的 catch 块
    134. e.printStackTrace();
    135. }
    136. return data;
    137. }
    138. }

    四、源码下载

    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.支持博主

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

  • 相关阅读:
    12小球找坏球的问题
    RISC-V 指令学习笔记(基于CH32V103)
    利用随机森林对特征重要性进行评估(含实例+代码讲解)
    vue+iView 动态侧边栏菜单保持高亮选中
    Java项目:JSP校园运动会管理系统
    深度学习基础知识 学习率调度器的用法解析
    TypeScript 类型学习
    【Java】工作中常用的一些lambda表达式
    洛谷 P1909 [NOIP2016 普及组] 买铅笔
    通达OA v12流程中心
  • 原文地址:https://blog.csdn.net/helongqiang/article/details/126913698