朋友们啊,请仔细看博客哦

文章目录

  • 0 说明
  • 1. 课程设计要求
  • 2. 主函数
    • 学生类
  • 3. 静态登录界面实现
  • 4. 信息管理员登录界面
  • 5. 学生登录界面
  • 6. 增加,删除,修改功能
  • 7. 查询和筛选功能
  • PS:插件推荐 windowbuilder

0 说明

1、关于项目运行

这个项目我完成的时候,确实是可以跑起来的,所有功能和效果基本都写在博客里了,代码资源也给上了,是免费的!!!免费的!!!免费的!!!(遇到好几个朋友私信问代码,我也是无奈了)。

如果运行不起来,出现各种问题可能是因为版本,电脑环境等原因,这些可以在评论区讨论(我盲猜我爱莫能助),或者根据报错自行搜索。这个项目对于我来说有点久远了,当时做好后就写了这个博客,很多细节可能不太记得了,另外,我要转前端了哈哈哈(*^▽^*)(现在主要是做react前端开发),所以搞Java的同学自己加油吧~

遇到问题没什么,多百度,多看教程,你可以的!


2、关于项目代码下载

这个项目的代码是免费开源的!可以直接使用~

你能从这里面学到东西,做得更好,那就是你的收获~我当初也是看了很多人的博客才写出这的,虽然还是做得不是很好。。。。。

(1)项目代码资源下载地址:Student_Manage.zip

(2)

因为CSDN的积分是自动调整的,且很多同学都没有积分,补充上了码云的代码仓库地址(这个是免费的,不需要积分):https://gitee.com/huan2515/student-manage.git


附上“如何在码云Gitee中部署个人静态网站?git提交网站”地址:https://www.bilibili.com/read/cv6506359?share_medium=android&share_source=qq&bbid=XYA0AA2A7669743DD029D12A5C0A0B24B7524&ts=1608258917421

有精力的同学可以使用git、gitee或者github 自己搭建自己的仓库啥的,更方便~


3、关于项目结构和优化

我写的时候是用的eclipse,JDK8。

这个项目只是当初我的一个很简陋的课程设计,还有很多可以提升的空间,很多的重复性源码也可以整理成为工具类,方便调用。参考借鉴的同学可以参考我这个项目,以节省时间和精力,多优化。

最终项目结构:

我这简陋的成果只是给有需要的同学参考,希望同学们可以自己多动手,练练实践能力,编码能力是要自己去踩坑才能有提升的呀。

另外,大部分项目是需要操作数据库的,但我当时做项目的时候,老师要求的是操作文件,需要操作数据库的朋友,自行研究一下吧,附上我的数据库学习博客:Java操作数据库-JDBC、数据库


4、关于私信和评论区回复

现在可能很少看CSDN的私信和评论区了,所以回复可能不是那么及时。如果是私信问的话,也麻烦说清楚是哪个博客哪个项目,具体是什么问题,我知道的话,就尽量解答~

主要也是这个项目是很久之前做的课程设计,历史太久远了,加上我现在主要做的是react前端开发,所以可能很多问题就爱莫能助了,评论区讨论的朋友如果知道怎么解决可以回一下哈~


1. 课程设计要求

该系统可实现学生信息的增加,删除,修改,查询,筛选的功能。并将学生信息存储在文件txt 中,不会覆盖原数据。
该系统没有利用数据库,是使用文件来存储学生数据,有基本的 UI 界面,操作友好,项目运行没有问题。

2. 主函数

package Student_Manage;public class Main {public static void main(String[] args) {new Login();}
}

学生类

package Student_Manage;public class student_information {private String stuID;    /*  学生学号  */private String name;     /* 学生姓名 */private String sex;     /* 学生性别  */private String age;        /*  学生年龄  */private String callnumber;   /* 学生电话号码   */private String home_place;   /* 学生家庭住址,籍贯 */private String identityID;   /* 学生身份证号码 *//*无参构造函数*/public student_information() {}/*有参构造函数 */public student_information(String stuID,String name,String sex,String age,String callnumber,String home_place,String identityID) {super();this.stuID=stuID;this.name=name;this.sex=sex;this.age=age;this.callnumber=callnumber;this.home_place=home_place;this.identityID=identityID;}public String getStuID() {return this.stuID;}public void setStuID(String stuID) {this.stuID=stuID;}public String getName() {return name;}public void setName(String name) {this.name=name;}public String getSex() {return this.sex;}public void setSex(String sex) {this.sex=sex;}public String getAge() {return this.age;}public void setAge(String age) {this.age=age;}public String getCallnumber() {return this.callnumber;}public void setCallnummber(String callnumber) {this.callnumber=callnumber;}public String getHome_place() {return this.home_place;}public void setHome_place(String home_place) {this.home_place=home_place;}public String getIdentityID() {return this.identityID;}public void setIdentityID(String identityID) {this.identityID=identityID;}//从文件中录入的数据格式    "学号  姓名  性别  年龄  电话号码  家庭住址  身份证号码"  public String fileString(){return stuID+" "+name+" "+sex+" "+age+"  "+callnumber+"  "+home_place+"  "+identityID;}}

3. 静态登录界面实现

  登录界面还有完善的空间,可增加密码验证,通过管理员和学生账号的不同验证其身份,还可增加注册功能package Student_Manage;/*** 功能:学生成绩管理系统* 步骤1、登录界面的静态实现* author:ywq*/
import java.awt.*;
import javax.swing.*;import java.awt.event.*;public  class Login extends JFrame implements  ActionListener{//定义组件JFrame frame=new JFrame();JPanel jp1,jp2,jp3;//面板JLabel jlb1,jlb2;//标签JButton jb1,jb2;//按钮//构造函数public Login(){//创建面板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);//显示窗体//锁定窗体//this.setResizable(false);jb1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {frame.setVisible(false);new ManagerLogin();}});jb2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {frame.setVisible(false);new StudentLogin();}});}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub}
}

效果图

4. 信息管理员登录界面

该界面的标签,文本框等的位置还可以调整,使其更美观。package Student_Manage;//信息管理人员登陆后的界面
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;/*ArrayList;
import java.util.Hashtable;
*/
public class ManagerLogin extends JFrame implements  ActionListener{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;//调节布局的通道public ManagerLogin(){       //负责管理员登录的主窗口super("学生信息管理系统");学号=new JTextField(10);//创建文本信息的的对象姓名=new JTextField(10);电话号码=new JTextField(15);年龄=new JTextField(5);家庭住址=new JTextField(15);身份证号码=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:组件的长度 height:组件的高度setVisible(true);//目的是使控件可以显示出来,如果该控件已经被显示出来student_information stu=new student_information();ArrayList<student_information> arry=new ArrayList<student_information>();//添加监听//点击录入按钮  学号","姓名","性别","年龄","电话号码","家庭住址","身份证号码"  录入.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {                        String sID = 学号.getText();    //获取文本框中内容if(fun.find(sID)!=-1){JOptionPane.showMessageDialog(null, "该学号对应的学生已经存在!!!请重新输入或者修改已经录入的学生");              //清空文本框学号.setText("");姓名.setText("");年龄.setText("");电话号码.setText("");家庭住址.setText("");身份证号码.setText("");return;}            String sname = 姓名.getText();           //先判断学号和姓名是否为空,如果为空,直接退出if(sID.equals("")||sname.equals("")){JOptionPane.showMessageDialog(null, "录入的学生学号或姓名为空!!!请重新输入");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.setCallnummber(scall);stu.setHome_place(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 ManagerLogin();//清空文本框/*学号.setText("");姓名.setText("");年龄.setText("");电话号码.setText("");家庭住址.setText("");身份证号码.setText("");group.clearSelection();   //清空按钮已选状态*/}       });//显示全部学生信息显示.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {                //show_stuall all=new show_stuall();     new show_stuall();                        }                   });//查询某个学生信息       查询.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 showones();  //清空文本框学号.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, "未查找到该学号的学生!!!请重新输入");                       }else {fun.delete(sID); fun.writefile();JOptionPane.showMessageDialog(null, "删除成功!!!
");}//清空文本框学号.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, "未查找到该学号的学生!!!请重新输入");return;  }    elseJOptionPane.showMessageDialog(null, "该系统中存在该学生数据,确认返回后请输入需要修改后的数据");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, "录入的学生姓名为空!!!请重新输入");return;}      // student_information stu=new student_information();stu.setStuID(sID);stu.setAge(sage);stu.setName(sname);stu.setSex(ssex);stu.setCallnummber(scall);stu.setHome_place(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 Login();}});}@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stub}}

效果图

5. 学生登录界面

 package Student_Manage;//学生登陆后的界面import java.awt.*;import javax.swing.*;import java.awt.event.*;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;/*ArrayList;import java.util.Hashtable;*/
public  class StudentLogin extends JFrame implements  ActionListener{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_information stu=new student_information();ArrayList<student_information> arry=new ArrayList<>();public StudentLogin(){       //负责管理员登录的主窗口super("学生信息管理系统");学号=new JTextField(10);//创建文本信息的的对象姓名=new JTextField(10);电话号码=new JTextField(15);年龄=new JTextField(5);家庭住址=new JTextField(15);身份证号码=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:组件的长度 height:组件的高度setVisible(true);//目的是使控件可以显示出来,如果该控件已经被显示出来//添加监听        //显示全部学生信息显示.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {              new show_stuall();       }                  });//查询某个学生信息       查询.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 showones();  //清空文本框学号.setText("");姓名.setText("");年龄.setText("");电话号码.setText("");家庭住址.setText("");身份证号码.setText("");group.clearSelection();}                });     返回.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {setVisible(false);      //目的是使控件不可以显示出来new Login();}});}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub}
}

效果图

6. 增加,删除,修改功能

package Student_Manage;import java.io.*;
import java.util.*;//修改,删除,增加某个学生信息class Function {//本程序学生数量不多,用数组列表ArrayList,  当学生数据多的时候,考虑用链表ArrayList<student_information> arry=new ArrayList<student_information>();           public Function()           //读文件,将文件中的学生信息存放在数组列表{this.readfile();}//根据学号查找学生信息,找到返回学号,找不到返回-1public int find(String str) {       for (int i = 0; i<arry.size(); i++)if (arry.get(i).getStuID().equals(str))return i;//等于在数组列表的位置return -1;}    //修改学生信息public void update(student_information stu) {int flag=find(stu.getStuID());    //查找是否存在arry.set(flag, stu);           //替换 flag 处的学生信息}    // 读文件,public boolean readfile() {                    String t=null;try{FileReader f1 = new FileReader("student.txt");BufferedReader br=new BufferedReader(f1);             arry.clear();    // 清除原数组列表中的数据             while ((t= br.readLine())!= null){String [] s=t.split("\s+");              student_information st=new student_information(s[0],s[1],s[2],s[3],s[4],s[5],s[6]);//注意若该文件每行没有七个字符串,则会出错arry.add(st);System.out.println("读取文件:");System.out.println(s[0]);}f1.close();br.close();                     return true;} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();return false;}   }                   //添加学生信息    public boolean add(student_information stu){        System.out.println();   System.out.println("要添加的学生"); System.out.println(stu.fileString());System.out.println();if (find(stu.getStuID())!=-1)return false;       arry.add(stu); return true;         }//写注意每行必须有七个元素,否则读取文件并判断是否存在时会出错时会出错,没有输入的用---代替public boolean writefile() {FileWriter fw=null;BufferedWriter out=null;try {fw = new FileWriter("student.txt");    out = new BufferedWriter(fw);//姓名学号等中间隔一个空格for(int i=0;i<arry.size();i++){String s=arry.get(i).fileString();System.out.println("数组列表数据:");System.out.println(arry.get(i).fileString());out.write(s);out.newLine();}out.close();fw.close();return true;} catch (IOException e) {e.printStackTrace();return false;}}//删除学生信息,并且文件中的内容也要修改public boolean delete(String s)  //添加学生记信息{  int pos=find(s);if (pos==-1)return false;arry.remove(pos);    return true;}/*//删除学生信息,并且重写文件内容                    public boolean delete(String s) {   File file =new File("student.txt");try {if(!file.exists()) {file.createNewFile();}FileWriter fileWriter =new FileWriter(file);fileWriter.write("");fileWriter.flush();fileWriter.close();                 int flag=find(s);                  System.out.print(flag);arry.remove(flag);                   writefile();return true;                } catch (IOException e) {e.printStackTrace();return false;}             }*/
}

增加功能的效果图

删除功能的效果图

修改功能的效果图

  修改,输入某个学生的学号及修改之后的信息,按照学号查找该学生并且将修改之后的信息录入系统修改功能还可以进一步完善,例如只修改某个条件,而无需输入所有信息



删除功能的效果图

删除功能是通过输入学号,按照学号查找,查找到之后在系统中删除该学生

7. 查询和筛选功能

  • 显示系统中所有学生的信息

    package Student_Manage;

    import java.awt.;
    import javax.swing.
    ;
    import javax.swing.table.DefaultTableCellRenderer;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableModel;
    import javax.swing.table.TableRowSorter;

    import java.io.*;

    import java.util.ArrayList;
    import java.util.Vector;

    //读取学生信息,展示在窗口

    public class show_stuall {

    JTable table = null;
    DefaultTableModel model = null;
    //显示全部学生信息
    

    public show_stuall() {
    JFrame jf = new JFrame(“显示全部学生信息(点击表头可以按照升序降序排序)”);
    // 创建内容面板
    JPanel panel = new JPanel();
    // 表头(列名)
    Vector columnNames=createColumnNames();
    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));//排序器         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);}   }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;
    

    }

     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;}
    

    }

效果图

当前按照学号升序排序,点击表头,可以按照升序,降序排序

  • 筛选系统中符合条件的学生信息

    package Student_Manage;

    import javax.management.modelmbean.ModelMBean;
    import javax.swing.*;
    import javax.swing.table.DefaultTableCellRenderer;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableModel;
    import javax.swing.table.TableRowSorter;

    import java.awt.*;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Vector;

    public class showones {
    //读取学生信息,展示在窗口

        ArrayList<student_information> arry=new ArrayList<student_information>();student_information stu=new student_information();JTable table = null;DefaultTableModel model = null;//显示全部学生信息public showones() {JFrame jf = new JFrame("显示符合条件的学生信息(点击表头可以按照升序降序排序");//jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 创建内容面板JPanel panel = new JPanel();// 表头(列名)//  String[] columnNames ={"序号","学号","姓名","性别","年龄","电话号码","家庭住址","身份证号码" };      Vector columnNames=createColumnNames();        //需要查询的符合条件的,用字符串数组f记录             String [] f = new String [7];try{FileReader f1 = new FileReader("查询时暂时存放的文件.txt");BufferedReader br=new BufferedReader(f1);             //arry.clear();//   清除原数组列表中的数据String t=null;while ((t= br.readLine())!= null){f=t.split("\s+");         //要查询的学生信息   }f1.close();br.close();                                  } catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();                        }//记得清空,否则下次查询没有筛选条件时,查询的是上一次的条件File file =new File("查询时暂时存放的文件.txt");try {if(!file.exists()) {file.createNewFile();}FileWriter fileWriter =new FileWriter(file);fileWriter.write("");fileWriter.flush();fileWriter.close();                                    } catch (IOException e) {e.printStackTrace();                    }      //判断需要查询的是那些条件              ArrayList List = new ArrayList(); for(int i=0;i<7;i++) {if(!f[i].equals("--"))     //需要满足的条件List.add(i);                           }//将满足查询条件的学生信息录入系统              for(int i=0;i<List.size();i++)System.out.println(List.get(i));try{FileReader f1 = new FileReader("student.txt");BufferedReader br=new BufferedReader(f1);String t=null;int flag=0;int t1=0;arry.clear();//    清除原数组列表中的数据                 while ((t= br.readLine())!= null){String [] s=t.split("\s+");     for(int i=0;i<List.size();i++){t1=(int) List.get(i);if(f[t1].equals(s[t1])) {flag=flag+1;}}if(flag==List.size()) {student_information st=new student_information(s[0],s[1],s[2],s[3],s[4],s[5],s[6]);//注意若该文件每行没有七个字符串,则会出错arry.add(st);}                              flag=0;}f1.close();br.close();                                                        } catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();             }   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));//排序器         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=arry.size();//int t=table.getRowCount();if(t<=0){JOptionPane.showMessageDialog(null, "该系统中没有符合条件的学生!!!");jf.setVisible(false);}else {jf.setVisible(true);}}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;}private Vector createTableModelData() {Vector data = new Vector();             for(int i=0;i<arry.size();i++) {           Vector<String> rowData=new Vector<>();            rowData.add(arry.get(i).getStuID());rowData.add(arry.get(i).getName());rowData.add(arry.get(i).getSex());rowData.add(arry.get(i).getAge());rowData.add(arry.get(i).getCallnumber());rowData.add(arry.get(i).getHome_place());rowData.add(arry.get(i).getIdentityID());                                                    data.add(rowData);}      return data;}
    

    }

例如查询名字为Q的男生
效果图


 当没有输入任何条件时,点击该筛选按钮,即显示所有的学生信息

PS:插件推荐 windowbuilder

该插件对于GUI设计有很大帮助,具体安装和下载可以查看别的教程

Java+学生信息管理系统+GUI+文件相关推荐

  1. java学生信息管理系统(GUI+mysql数据库)

    java学生信息管理系统+GUI界面布局+mysql数据库 代码已经更新!,重新设计了UI界面,代码之间的逻辑更加清晰 新的代码不需要手动建立数据库和表,全部由程序自动执行 用户名和密码为你数据库的用 ...

  2. JAVA 学生信息管理系统

    java 学生信息管理系统 主要使用的增删改查操作 首先,需要先建一个文件(点击左上角File,选择第一个New里的第一个Java Project) 然后再建一个Javabean包,在这个包里新建一个 ...

  3. JAVA学生信息管理系统IO流版

    JAVA学生信息管理系统IO流版 1. Student类 public class Student implements Serializable{//学号private int sid;//姓名pr ...

  4. JAVA学生信息管理系统课程设计简介以及开发源码介绍

    java学生信息管理系统简介 1.系统简介 主要实现功能:登录,注册,增加,删除,更改,查找,条件查找,查看在线账号,更改密码. 涉及到内容:java mysql8.0 Navicat 可视化工具 2 ...

  5. java考勤管理系统源码java学生考勤请假系统java学生考勤管理系统 java考勤系统java学生信息管理系统java学生管理系统

    java考勤管理系统源码java学生考勤请假系统java学生考勤管理系统 java考勤系统java学生信息管理系统java学生管理系统 public Swingtest002() {// 设置标题se ...

  6. 基于JAVA学生信息管理系统录像演示2021计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA学生信息管理系统录像演示2021计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA学生信息管理系统录像演示2021计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈 ...

  7. Java学生信息管理系统——管理员登录模块(简单易上手)

    前言 这一篇是用来记录我编写学生信息管理系统时实现登录操作的过程,这是学生信息管理系统的第一个模块,之后我还会陆续将其它模块分享出来. 其它章节 ------------------------> ...

  8. Java学生信息管理系统源码

    学生信息管理系统 功能说明 学生信息管理,包括学生.班级.院系.课程.成绩等的管理. 本程序仅供学习食用. 工程环境 JDK IntelliJ IDEA MySQL 运行说明 1.安装JDK. 2.导 ...

  9. Java 学生信息管理系统 (mysql版)

    引言:如果需要定制类似的图形界面版的Java 管理系统,比如控制台版的,Java web版的,ssm版,开发工具为idea和eclipse.myEclipse的,提供远程服务,需要源码,或者需要项目实 ...

  10. C++学生信息管理系统(含文件流)部分心得含源码

    题目 设计一个程序,对学生的学籍信息进行管理.通过该系统实现对学生基本信息的录入.保存.删除.修改.查询等操作. 设计要求及提示如下: 1.学生基本信息包括:学号.姓名.性别.年龄.班号.专业名称.系 ...

最新文章

  1. 轻松搞定Retrofit不同网络请求方式的请求参数配置,及常用注解使用
  2. Android 中MVC实例之Activity,Window和View
  3. 限制EditText 输入的字节数
  4. cli3解决 ie11语法错误 vue_使用 VueCLI 3.x 快速搭建Vue + TS + Kbone + KboneUI + 云开发 项目...
  5. 当我们在谈论内存时,我们在谈论什么
  6. VS2003,VS2005,VS2008 低版本打开高版本的解决方案和工程文件
  7. 剑指offer之二叉树的高度
  8. Flash中的SLC/MLC/MLC--基础
  9. 趣挨踢 | 关于遗留代码的那些事儿
  10. 循环序列模型 —— 1.7 对新序列采样
  11. mybatis生成工具
  12. HIVE json格式数据的处理
  13. EasyUI后台管理系统
  14. java100道逻辑题及答案_100道Java面试题收集整理及参考答案
  15. 安卓原生系统_你没有用过的安卓系统:原生安卓桌面体验
  16. excel锁定计算机,excel表格根据时间锁定如何操作
  17. 今天是冰桶算法大揭秘!!
  18. mysql binlog是什么_什么是 binlog?
  19. 菜鸟渗透日记29---python渗透测试编程之信息收集1-主机发现
  20. 微信小程序开发手记之七:一个小程序上线后的总结(上)

热门文章

  1. 浏览器首页被雨林木风篡改( /hao.ylmf.com/u7654.html)
  2. 2020-12-24
  3. 绘画教程:动漫人体肌肉的详细画法
  4. 使用谷歌地图在 Flutter 应用中添加地图
  5. ios 打包分发全流程
  6. 由于系统限制了文件目录的读/写权限,程序将会退出,你可以重新安装百度网盘到有权限的目录或以管理员身份运行百度网盘。
  7. win7u盘修复计算机教程视频,钻研U盘修复工具使用教程
  8. java beetl输出demo_Beetl 快速入门
  9. 华为freebuds4i降噪方法分享(教程分享)
  10. 【Code】numpy、pytorch实现全连接神经网络