本人java 初学者,使用了已经过时的GUI图形用户界面。
程序运了IO进行数据的读写,没有涉及到数据库的使用。
写道最后发现有很多的缺点,面向对象的程序设计思想很多地方体现的不是很到位,还有频繁的操作磁盘文件。
也参考过许多网上许多大佬的方法。
算是给自己学java半年以来的一个说法吧。
最后将代码分享给大家,一起学习!
package MyStu; import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.*; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import javax.swing.*; class Login extends JFrame implements ActionListener{ static ArrayList<Student> as = new ArrayList<Student>(); JButton b1,b2=null; JPanel jp1,jp2,jp3=null; JTextField jtf=null; JLabel jlb1,jlb2=null; JPasswordField pwf=null; final String user="123"; final String psd="123"; public Login(){ Image icon=Toolkit.getDefaultToolkit().getImage("E://1.gif"); this.setIconImage(icon); b1=new JButton("登陆"); b1.setFont(new Font("华文中宋", Font.BOLD, 15)); b2=new JButton("清除"); b2.setFont(new Font("华文中宋", Font.BOLD, 15)); b1.setBorder(null); b2.setBorder(null); b1.addActionListener(this); b2.addActionListener(this); jp1=new JPanel(); jp1.setBackground(Color.cyan); jp2=new JPanel(); jp2.setBackground(Color.YELLOW); jp3=new JPanel(); jp3.setBackground(Color.orange); jlb1=new JLabel("用户名:"); jlb2=new JLabel("密 码:"); jlb1.setFont(new Font("华文行楷", Font.BOLD, 20)); jlb2.setFont(new Font("华文行楷", Font.BOLD, 20)); jtf=new JTextField(10); pwf=new JPasswordField(10); jp1.add(jlb1); jp1.add(jtf); jp2.add(jlb2); jp2.add(pwf); jp3.add(b1); jp3.add(b2); this.add(jp1); this.add(jp2); this.add(jp3); this.setLayout(new GridLayout(3,1)); this.setTitle("学生信息管理系统"); this.setSize(300,200); this.setLocation(200, 150); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); this.setResizable(false); } public void actionPerformed(ActionEvent e){ if(e.getActionCommand()=="登陆"){ stulogin(); }else if (e.getActionCommand()=="清除") { clear(); } } public void stulogin(){ if(user.equals(jtf.getText())&&psd.equals(pwf.getText())){ JOptionPane.showMessageDialog(null,"登录成功!","系统提示",JOptionPane.WARNING_MESSAGE); clear(); dispose(); Menu1 ui=new Menu1(); }else if(jtf.getText().isEmpty()&&pwf.getText().isEmpty()) { JOptionPane.showMessageDialog(null,"请输入用户名和密码!","提示消息",JOptionPane.WARNING_MESSAGE); }else if(jtf.getText().isEmpty()) { JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE); }else if(pwf.getText().isEmpty()) { JOptionPane.showMessageDialog(null,"请输入密码!","提示消息",JOptionPane.WARNING_MESSAGE); }else { JOptionPane.showMessageDialog(null,"用户名或者密码错误!\n请重新输入","提示消息",JOptionPane.ERROR_MESSAGE); //清空输入框 clear(); } } public void clear(){ jtf.setText(""); pwf.setText(""); } } //--------------------------------------------------------- //Memu功能菜单栏 class Menu1 extends JFrame { static ArrayList<Student> as = new ArrayList<Student>(); JButton jb1,jb2,jb3,jb4,jb5,jb6=null; JPanel jp1,jp2,jp3=null; JLabel jlb1=null; public Menu1(){ jp1=new JPanel(); jp2=new JPanel(); jp3=new JPanel(); jp1.setBackground(Color.cyan); jp2.setBackground(Color.cyan); jp3.setBackground(Color.cyan); jb1=new JButton("添加信息"); jb2=new JButton("删除信息"); jb3=new JButton("查找信息"); jb5=new JButton("查看信息"); jb6=new JButton("退出"); jb1.setFont(new Font("华文中宋", Font.BOLD, 18)); jb2.setFont(new Font("华文中宋", Font.BOLD, 18)); jb3.setFont(new Font("华文中宋", Font.BOLD, 18)); jb5.setFont(new Font("华文中宋", Font.BOLD, 18)); jb6.setFont(new Font("华文中宋", Font.BOLD, 18)); jb1.setBorder(null); jb2.setBorder(null); jb3.setBorder(null); jb5.setBorder(null); jb6.setBorder(null); jlb1=new JLabel("欢迎使用学生信息管理系统"); jlb1.setHorizontalAlignment(SwingConstants.CENTER); jlb1.setFont(new Font("华文行楷", Font.BOLD, 40)); jp1. add(jlb1); jp2.add(jb1); jp2.add(jb2); jp2.add(jb3); jp3.add(jb5); jp3.add(jb6); this.add(jp1); this.add(jp2); this.add(jp3); this.setLayout(new GridLayout(3,5)); this.setTitle("学生信息管理系统"); this.setSize(500,400); //设置窗体初始位置 this.setLocation(200, 150); //设置当关闭窗口时,保证JVM也退出 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示窗体 this.setVisible(true); this.setResizable(false); jb1.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { if(e.getActionCommand()=="添加信息"){ addinfo_Menu ai=new addinfo_Menu(); ArrayList<Student>as=new ArrayList<Student>(); ai.infor(as); } } }); jb2.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { if(e.getActionCommand()=="删除信息"){ Delete_info di=new Delete_info(); di.delete_info(); } } }); jb3.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { if(e.getActionCommand()=="查找信息"){ scaninfo si=new scaninfo(); si.Scaninfo(); } } }); jb5.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { if(e.getActionCommand()=="查看信息"){ readinfo ri=new readinfo(); ri.Readinfo(); } } }); jb6.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { if(e.getActionCommand()=="退出"){ dispose(); Login lg=new Login(); } } }); } public void addinfo(){ } } //主类-------------------------------------------------- public class Wenfan{ public static void main(String[] args){ Login lg=new Login(); } } package MyStu; import java.awt.*; import java.awt.event.*; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.*; import javax.swing.*; class addinfo_Menu extends JFrame implements ActionListener { ArrayList<Student>as=new ArrayList<Student>(); JButton jb1,jb2,jb3,jb4=null; JPanel jp1,jp2,jp3,jp4,jp5,jp6,jp7=null; JTextField jtf1,jtf2,jtf3,jtf4,jtf5=null; JLabel jlb1,jlb2,jlb3,jlb4,jlb5,jlb6=null; public void infor(final ArrayList<Student>as){ jb1=new JButton("保存"); jb2=new JButton("返回"); jb3=new JButton("继续添加"); jb4=new JButton("清除文件数据"); jb1.addActionListener(this); jb2.addActionListener(this); jb3.addActionListener(this); jb4.addActionListener(this); jb1.setFont(new Font("华文中宋", Font.BOLD, 15)); jb2.setFont(new Font("华文中宋", Font.BOLD, 15)); jb3.setFont(new Font("华文中宋", Font.BOLD, 15)); jb4.setFont(new Font("华文中宋", Font.BOLD, 15)); jp1=new JPanel(); jp2=new JPanel(); jp3=new JPanel(); jp4=new JPanel(); jp5=new JPanel(); jp6=new JPanel(); jp7=new JPanel(); jp1.setBackground(Color.cyan); jp2.setBackground(Color.cyan); jp3.setBackground(Color.cyan); jp4.setBackground(Color.cyan); jp5.setBackground(Color.cyan); jp6.setBackground(Color.cyan); jp7.setBackground(Color.cyan); jlb1=new JLabel("输入学生信息"); jlb1.setFont(new Font("华文行楷", Font.BOLD, 30)); jlb2=new JLabel("姓名:"); jlb3=new JLabel("性别:"); jlb4=new JLabel("年龄:"); jlb5=new JLabel("学号:"); jlb6=new JLabel("成绩:"); jlb1.setFont(new Font("华文行楷", Font.BOLD, 25)); jlb2.setFont(new Font("华文行楷", Font.BOLD, 25)); jlb3.setFont(new Font("华文行楷", Font.BOLD, 25)); jlb4.setFont(new Font("华文行楷", Font.BOLD, 25)); jlb5.setFont(new Font("华文行楷", Font.BOLD, 25)); jlb6.setFont(new Font("华文行楷", Font.BOLD, 25)); jtf1=new JTextField(10); jtf2=new JTextField(10); jtf3=new JTextField(10); jtf4=new JTextField(10); jtf5=new JTextField(10); jp1.add(jlb1); jp2.add(jlb2); jp2.add(jtf1); jp3.add(jlb3); jp3.add(jtf2); jp4.add(jlb4); jp4.add(jtf3); jp5.add(jlb5); jp5.add(jtf4); jp6.add(jlb6); jp6.add(jtf5); jp7.add(jb1); jp7.add(jb3); jp7.add(jb4); jp7.add(jb2); this.add(jp1); this.add(jp2); this.add(jp3); this.add(jp4); this.add(jp5); this.add(jp6); this.add(jp7); //设置布局管理器 this.setLayout(new GridLayout(7,1)); //给窗口设置标题 this.setTitle("学生成绩管理系统"); //设置窗体大小 this.setSize(500,400); //设置窗体初始位置 this.setLocation(200, 150); //显示窗体 this.setVisible(true); this.setResizable(false); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getActionCommand()=="保存"){ try { File stu_csv = new File("E://stu.txt"); if(stu_csv.exists()) // stu_csv.delete(); stu_csv.createNewFile(); String stu_name,stu_gendar,stu_age,stu_number,stu_score; stu_name=jtf1.getText(); stu_gendar=jtf2.getText(); stu_age=jtf3.getText(); stu_number=jtf4.getText(); stu_score=jtf5.getText(); as.add(new Student(stu_name,stu_gendar,stu_age,stu_number,stu_score)); BufferedWriter bfw = new BufferedWriter(new FileWriter(stu_csv,true)); //bfw.newLine(); for (Student stu : as) { System.out.println(stu.name+","+stu.gendar+","+stu.age+","+stu.number+","+stu.score); bfw.write(stu.name+","+stu.gendar+","+stu.age+","+stu.number+","+stu.score+"\r\n"); } bfw.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } JOptionPane.showMessageDialog(null,"已保存姓名为:"+jtf1.getText()+"的信息","系统提示",JOptionPane.INFORMATION_MESSAGE); }else if(e.getActionCommand()=="继续添加"){ reset(); }else if(e.getActionCommand()=="清除文件数据"){ try { File stu_csv = new File("E://stu.txt"); if(stu_csv.exists()) stu_csv.delete(); stu_csv.createNewFile(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }else if(e.getActionCommand()=="返回"){ dispose(); } } public void reset(){ jtf1.setText(""); jtf2.setText(""); jtf3.setText(""); jtf4.setText(""); } } class Student{ String name; String gendar; String number; String age; String score; public Student(String name,String gendar,String age,String number,String score){ this.name=name; this.gendar=gendar; this.age=age; this.number=number; this.score=score; } } package MyStu; import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.StringTokenizer; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.JTextField; class Delete_info extends JFrame implements ActionListener{ JButton jb1,jb2,jb3,jb4,jb5; JLabel jlb1,jlb2,jlb3,jlb4; JPanel jp1,jp2,jp3,jp4,jp5,jp6,jp7; JTextField jtf1; public void delete_info(){ jp1=new JPanel(); jp2=new JPanel(); jp7=new JPanel(); jp1.setBackground(Color.cyan); jp2.setBackground(Color.cyan); jp7.setBackground(Color.cyan); jb1=new JButton("按学号删除"); jb2=new JButton("按姓名删除"); jb5=new JButton("返回"); jb1.addActionListener(this); jb2.addActionListener(this); jb5.addActionListener(this); jb1.setBorder(null); jb2.setBorder(null); jb5.setBorder(null); jb1.setFont(new Font("华文中宋", Font.BOLD, 20)); jb2.setFont(new Font("华文中宋", Font.BOLD, 20)); jb5.setFont(new Font("华文中宋", Font.BOLD, 15)); jlb1=new JLabel("删除信息"); jlb1.setFont(new Font("华文行楷", Font.BOLD, 30)); jp1.add(jlb1); jp2.add(jb1); jp2.add(jb2); jp7.add(jb5); this.add(jp1); this.add(jp2); this.add(jp7); this.setLayout(new GridLayout(3,1)); this.setTitle("删除"); this.setSize(500,400); this.setLocation(200,150); this.setVisible(true); this.setResizable(false); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getActionCommand()=="按学号删除"){ Delete_Number dn=new Delete_Number(); dn.delete_number(); }else if(e.getActionCommand()=="按姓名删除"){ Delete_Name dne=new Delete_Name(); dne.delete_name(); }else if(e.getActionCommand()=="返回"){ dispose(); } } } class Delete_Number extends JFrame implements ActionListener{ JButton jb1,jb2; JPanel jp1,jp2,jp3,jp4,jp5; JTextField jtf1; JLabel jlb1,jlb2,jlb3; ArrayList<Student3> as3 = new ArrayList<Student3>(); BufferedWriter bfw; public void delete_number(){ jp1=new JPanel(); jp2=new JPanel(); jp3=new JPanel(); jp4=new JPanel(); jp1.setBackground(Color.cyan); jp2.setBackground(Color.cyan); jp3.setBackground(Color.cyan); jp4.setBackground(Color.cyan); jb1=new JButton("删除"); jb2=new JButton("返回"); jb1.addActionListener(this); jb2.addActionListener(this); jb1.setBorder(null); jb2.setBorder(null); jb1.setFont(new Font("华文中宋", Font.BOLD, 20)); jb2.setFont(new Font("华文中宋", Font.BOLD, 20)); jtf1=new JTextField(10); jlb1=new JLabel("删除信息"); jlb1.setFont(new Font("华文行楷", Font.BOLD, 30)); jlb2=new JLabel("请输入学号:"); jlb2.setFont(new Font("华文行楷", Font.BOLD, 20)); jp1.add(jlb1); jp2.add(jlb2); jp2.add(jtf1); jp2.add(jb1); jp3.add(jb2); this.add(jp1); this.add(jp2); this.add(jp3); this.setLayout(new GridLayout(3,1)); this.setTitle("删除"); this.setSize(500,400); this.setLocation(200,150); this.setVisible(true); this.setResizable(false); try { File csv = new File("E://stu.txt"); // CSV文件 BufferedReader br = new BufferedReader(new FileReader(csv)); // 读取直到最后一行 String line = ""; while ((line = br.readLine()) != null) { // 把一行数据分割成多个字段 StringTokenizer st1 = new StringTokenizer(line, ","); Student3 st2= new Student3(st1.nextToken(),st1.nextToken(),st1.nextToken(),st1.nextToken(),st1.nextToken()); as3.add(st2); } br.close(); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub boolean flag=false; if(e.getActionCommand()=="删除"){ if(jtf1.getText().isEmpty()) { JOptionPane.showMessageDialog(null,"请输入用户名!","提示消息",JOptionPane.WARNING_MESSAGE); } for(Student3 student :as3){ if(student.number.equals(jtf1.getText())){ as3.remove(student); File txt = new File("E://stu.txt"); // CSV文件 txt.delete(); try { txt.createNewFile(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } flag=true; break; } } if(flag){ try { File txt = new File("E://stu.txt"); bfw = new BufferedWriter(new FileWriter(txt,true)); for(Student3 student1 :as3){ bfw.write(student1.name+","+student1.gendar+","+student1.age+","+student1.number+","+student1.score+"\r\n"); System.out.println(student1.name+","+student1.gendar+","+student1.age+","+student1.number+","+student1.score); } } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } JOptionPane.showMessageDialog(null,"已删除学号为:"+jtf1.getText()+"的学生信息","系统提示",JOptionPane.INFORMATION_MESSAGE); try { bfw.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }else{ JOptionPane.showMessageDialog(null,"无学号为:"+jtf1.getText()+"的信息!","提示消息",JOptionPane.WARNING_MESSAGE); } }else if(e.getActionCommand()=="返回"){ dispose(); } } } //--------------------------按姓名删除菜单----------------、 class Delete_Name extends JFrame implements ActionListener{ JButton jb1,jb2; JPanel jp1,jp2,jp3,jp4,jp5; JTextField jtf1; JLabel jlb1,jlb2,jlb3; ArrayList<Student3> as3 = new ArrayList<Student3>(); BufferedWriter bfw; public void delete_name(){ jp1=new JPanel(); jp2=new JPanel(); jp3=new JPanel(); jp4=new JPanel(); jp1.setBackground(Color.cyan); jp2.setBackground(Color.cyan); jp3.setBackground(Color.cyan); jp3.setBackground(Color.cyan); jb1=new JButton("删除"); jb2=new JButton("返回"); jb1.addActionListener(this); jb2.addActionListener(this); jb1.setFont(new Font("华文中宋", Font.BOLD, 20)); jb2.setFont(new Font("华文中宋", Font.BOLD, 20)); jb1.setBorder(null); jb2.setBorder(null); jtf1=new JTextField(10); jlb1=new JLabel("删除信息"); jlb1.setFont(new Font("华文行楷", Font.BOLD, 30)); jlb2=new JLabel("请输入姓名:"); jlb2.setFont(new Font("华文行楷", Font.BOLD, 20)); jp1.add(jlb1); jp2.add(jlb2); jp2.add(jtf1); jp2.add(jb1); jp3.add(jb2); this.add(jp1); this.add(jp2); this.add(jp3); this.setLayout(new GridLayout(3,1)); this.setTitle("删除"); this.setSize(500,400); this.setLocation(200,150); this.setVisible(true); this.setResizable(false); try { File csv = new File("E://stu.txt"); // CSV文件 BufferedReader br = new BufferedReader(new FileReader(csv)); // 读取直到最后一行 String line = ""; while ((line = br.readLine()) != null) { // 把一行数据分割成多个字段 StringTokenizer st1 = new StringTokenizer(line, ","); Student3 st2= new Student3(st1.nextToken(),st1.nextToken(),st1.nextToken(),st1.nextToken(),st1.nextToken()); as3.add(st2); } br.close(); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub boolean flag=false; if(e.getActionCommand()=="删除"){ if(jtf1.getText().isEmpty()) { JOptionPane.showMessageDialog(null,"请输入姓名!","提示消息",JOptionPane.WARNING_MESSAGE); } for(Student3 student :as3){ if(student.name.equals(jtf1.getText())){ as3.remove(student); File txt = new File("E://stu.txt"); // CSV文件 txt.delete(); try { txt.createNewFile(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } jtf1.setText(""); flag=true; break; } } if(flag){ try { File txt = new File("E://stu.txt"); bfw = new BufferedWriter(new FileWriter(txt,true)); for(Student3 student1 :as3){ bfw.write(student1.name+","+student1.gendar+","+student1.age+","+student1.number+","+student1.score+"\r\n"); System.out.println(student1.name+","+student1.gendar+","+student1.age+","+student1.number+","+student1.score); } } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } JOptionPane.showMessageDialog(null,"已删除姓名为:"+jtf1.getText()+"的学生信息","系统提示",JOptionPane.INFORMATION_MESSAGE); try { bfw.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }else{ JOptionPane.showMessageDialog(null,"无姓名为:"+jtf1.getText()+"的信息!","提示消息",JOptionPane.WARNING_MESSAGE); } }else if(e.getActionCommand()=="返回"){ dispose(); } } } class Student3{ String name; String gendar; String number; String age; String score; public Student3(String name,String gendar,String age,String number,String score){ this.name=name; this.gendar=gendar; this.age=age; this.number=number; this.score=score; } } package MyStu; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.JTableHeader; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; class readinfo extends JFrame implements ActionListener { JLabel jlb; JButton jb1; JPanel jp1,jp2; public void Readinfo(){ jp1=new JPanel(); jp2=new JPanel(); jp1.setBackground(Color.cyan); jp2.setBackground(Color.cyan); jb1=new JButton("返回"); jb1.addActionListener(this); jb1.setFont(new Font("华文中宋", Font.BOLD, 18)); jb1.setBorder(null); jlb=new JLabel("所有信息如下"); jlb.setFont(new Font("华文行楷", Font.BOLD, 30)); JTableHeader tableH; String col[]={"姓名","性别","年龄","学号","成绩"}; final DefaultTableModel tableModel = new DefaultTableModel(col, 0); JTable table = new JTable(tableModel); table.setEnabled(false); JScrollPane pane = new JScrollPane(table); pane.setBackground(Color.cyan); jp1.add(jlb); jp2.add(jb1); ArrayList<Student1> as1 = new ArrayList<Student1>(); try { File csv = new File("E://stu.txt"); // CSV文件 BufferedReader br = new BufferedReader(new FileReader(csv)); String line = ""; while ((line = br.readLine()) != null) { StringTokenizer st = new StringTokenizer(line, ","); Student1 st1= new Student1(st.nextToken(),st.nextToken(),st.nextToken(),st.nextToken(),st.nextToken()); as1.add(st1); } br.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } this.add(jp1); this.add(pane); this.add(jp2); this.setBackground(Color.cyan); this.setLayout(new GridLayout(3,1)); this.setTitle("显示信息"); this.setSize(500,400); this.setLocation(200, 150); this.setVisible(true); this.setResizable(false); table.setBackground(new Color(144,238,144)); table.setForeground(new Color(100,100,100)) ; table.setGridColor(new Color(105 ,105, 105)); tableH = table.getTableHeader(); tableH.setBackground(new Color(200, 200, 200)); tableH.setForeground(new Color(0,0,205)); for (Student1 stu : as1) { Object [] data ={stu.name,stu.gendar,stu.age,stu.number,stu.score}; tableModel.addRow(data); } tableModel.fireTableDataChanged(); RowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tableModel); table.setRowSorter(sorter); this.getContentPane().add(pane, BorderLayout.CENTER); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getActionCommand()=="返回"){ dispose(); } } } class Student1{ String name; String gendar; String number; String age; String score; public Student1(String name,String gendar,String age,String number,String score){ this.name=name; this.gendar=gendar; this.age=age; this.number=number; this.score=score; } } package MyStu; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.StringTokenizer; import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.JTableHeader; class scaninfo extends JFrame implements ActionListener { JButton jb1,jb2,jb5; JLabel jlb1,jlb2,jlb3,jlb4; JPanel jp1,jp2,jp7; public void Scaninfo(){ jp1=new JPanel(); jp2=new JPanel(); jp7=new JPanel(); jp1.setBackground(Color.cyan); jp2.setBackground(Color.cyan); jp7.setBackground(Color.cyan); jb1=new JButton("按学号查找"); jb2=new JButton("按姓名查找"); jb5=new JButton("返回"); jb1.setFont(new Font("华文中宋", Font.BOLD, 20)); jb2.setFont(new Font("华文中宋", Font.BOLD, 20)); jb5.setFont(new Font("华文中宋", Font.BOLD, 15)); jb1.addActionListener(this); jb2.addActionListener(this); jb5.addActionListener(this); jb1.setBorder(null); jb2.setBorder(null); jb5.setBorder(null); jlb1=new JLabel("查找信息"); jlb1.setFont(new Font("华文行楷", Font.BOLD, 30)); jp1.add(jlb1); jp2.add(jb1); jp2.add(jb2); jp7.add(jb5); this.add(jp1); this.add(jp2); this.add(jp7); this.setLayout(new GridLayout(3,1)); this.setTitle("查询"); this.setSize(500,400); this.setLocation(200,150); this.setVisible(true); this.setResizable(false); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getActionCommand()=="按学号查找"){ Lookup_number look_n=new Lookup_number(); look_n.lookup_number(); }else if(e.getActionCommand()=="按姓名查找"){ Lookup_name look_ne=new Lookup_name(); look_ne.lookup_name(); }else if(e.getActionCommand()=="返回"){ dispose(); } } //---------------按学号查询界面---------------- } //---------------按学号查询界面---------------- class Lookup_number extends JFrame implements ActionListener{ JButton jb1,jb2; JPanel jp1,jp2,jp3,jp4,jp5; JTextField jtf1; JLabel jlb1,jlb2,jlb3; JTable jtb; ArrayList<Student2> as2 = new ArrayList<Student2>(); String col[]={"姓名","性别","年龄","学号","成绩"}; final DefaultTableModel tableModel = new DefaultTableModel(col, 0); public void lookup_number(){ jp1=new JPanel(); jp2=new JPanel(); jp3=new JPanel(); jp4=new JPanel(); jp1.setBackground(Color.cyan); jp2.setBackground(Color.cyan); jp3.setBackground(Color.cyan); jp4.setBackground(Color.cyan); JTableHeader tableH; JTable table = new JTable(tableModel); table.setEnabled(false); table.setBackground(new Color(144,238,144)); table.setForeground(new Color(100,100,100)) ; table.setGridColor(new Color(105 ,105, 105)); tableH = table.getTableHeader(); tableH.setBackground(new Color(200, 200, 200)); tableH.setForeground(new Color(0,0,205)); JScrollPane pane = new JScrollPane(table); jb1=new JButton("查询"); jb2=new JButton("返回"); jb1.setFont(new Font("华文中宋", Font.BOLD, 18)); jb2.setFont(new Font("华文中宋", Font.BOLD, 18)); jb1.addActionListener(this); jb2.addActionListener(this); jb1.setBorder(null); jb2.setBorder(null); jtf1=new JTextField(10); jlb1=new JLabel("按学号查询信息"); jlb1.setFont(new Font("华文行楷", Font.BOLD, 30)); jlb2=new JLabel("请输入学号:"); jlb2.setFont(new Font("华文行楷", Font.BOLD, 20)); jlb3=new JLabel("查询信息如下"); jlb2.setFont(new Font("华文行楷", Font.BOLD, 25)); jp1.add(jlb1); jp2.add(jlb2); jp2.add(jtf1); jp2.add(jb1); jp3.add(jlb3); jp4.add(jb2); this.add(jp1); this.add(jp2); this.add(jp3); this.add(pane); this.add(jp4); this.setLayout(new GridLayout(5,1)); //给窗口设置标题 this.setTitle("查询结果"); //设置窗体大小 this.setSize(500,400); //设置窗体初始位置 this.setLocation(200, 150); //显示窗体 this.setVisible(true); this.setResizable(false); try { File csv = new File("E://stu.txt"); // CSV文件 BufferedReader br = new BufferedReader(new FileReader(csv)); // 读取直到最后一行 String line = ""; while ((line = br.readLine()) != null) { // 把一行数据分割成多个字段 StringTokenizer st = new StringTokenizer(line, ","); Student2 st1= new Student2(st.nextToken(),st.nextToken(),st.nextToken(),st.nextToken(),st.nextToken()); as2.add(st1); } br.close(); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getActionCommand()=="查询"){ boolean flag=true; tableModel.setRowCount(0); // 之前的table一定要清零! for (Student2 student : as2) { System.out.println(student.name+student.gendar+student.age+student.number+student.score); if(student.number.equals(jtf1.getText())){ Object [] data1 ={student.name,student.gendar,student.age,student.number,student.score}; tableModel.addRow(data1); flag=false; JOptionPane.showMessageDialog(null,"已查询到学号为:"+jtf1.getText()+"的学生信息","系统提示",JOptionPane.INFORMATION_MESSAGE); } } if(flag){ JOptionPane.showMessageDialog(null,"无学号为:"+jtf1.getText()+"的学生信息","系统提示",JOptionPane.INFORMATION_MESSAGE); } }else if(e.getActionCommand()=="返回"){ dispose(); } } } //------------------按姓名查找界面------------------------ class Lookup_name extends JFrame implements ActionListener{ JButton jb1,jb2; JPanel jp1,jp2,jp3,jp4,jp5; JTextField jtf1; JLabel jlb1,jlb2,jlb3; JTable jtb; ArrayList<Student2> as2 = new ArrayList<Student2>(); String col[]={"姓名","性别","年龄","学号","成绩"}; final DefaultTableModel tableModel = new DefaultTableModel(col, 0); public void lookup_name(){ jp1=new JPanel(); jp2=new JPanel(); jp3=new JPanel(); jp4=new JPanel(); jp1.setBackground(Color.cyan); jp2.setBackground(Color.cyan); jp3.setBackground(Color.cyan); jp4.setBackground(Color.cyan); JTableHeader tableH; JTable table = new JTable(tableModel); table.setEnabled(false); table.setEnabled(false); table.setBackground(new Color(144,238,144)); table.setForeground(new Color(100,100,100)) ; table.setGridColor(new Color(105 ,105, 105)); tableH = table.getTableHeader(); //设置表头的背景色 tableH.setBackground(new Color(200, 200, 200)); //设置表头的文字颜色 tableH.setForeground(new Color(0,0,205)); JScrollPane pane = new JScrollPane(table); jb1=new JButton("查询"); jb2=new JButton("返回"); jb1.addActionListener(this); jb2.addActionListener(this); jb1.setBorder(null); jb2.setBorder(null); jtf1=new JTextField(10); jlb1=new JLabel("按姓名查询信息"); jlb1.setFont(new Font("华文行楷", Font.BOLD, 30)); jlb2=new JLabel("请输入姓名:"); jlb2.setFont(new Font("华文行楷", Font.BOLD, 20)); jlb3=new JLabel("查询信息如下"); jlb3.setFont(new Font("华文行楷", Font.BOLD, 25)); jp1.add(jlb1); jp2.add(jlb2); jp2.add(jtf1); jp2.add(jb1); jp3.add(jlb3); jp4.add(jb2); this.add(jp1); this.add(jp2); this.add(jp3); this.add(pane); this.add(jp4); this.setLayout(new GridLayout(5,1)); this.setTitle("查询结果"); this.setSize(500,400); this.setLocation(200, 150); this.setVisible(true); this.setResizable(false); try { File txt = new File("E://stu.txt"); BufferedReader br = new BufferedReader(new FileReader(txt)); String line = ""; while ((line = br.readLine()) != null) { StringTokenizer st = new StringTokenizer(line, ","); Student2 st1= new Student2(st.nextToken(),st.nextToken(),st.nextToken(),st.nextToken(),st.nextToken()); as2.add(st1); } br.close(); } catch (FileNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getActionCommand()=="查询"){ tableModel.setRowCount(0); boolean flag=true; for (Student2 student : as2) { System.out.println(student.name+student.gendar+student.age+student.number+student.score); if(student.name.equals(jtf1.getText())){ Object [] data1 ={student.name,student.gendar,student.age,student.number,student.score}; tableModel.addRow(data1); JOptionPane.showMessageDialog(null,"已查询到姓名为:"+jtf1.getText()+"的学生信息","系统提示",JOptionPane.INFORMATION_MESSAGE); flag=false; } } if(flag){ JOptionPane.showMessageDialog(null,"无姓名为:"+jtf1.getText()+"的学生信息","系统提示",JOptionPane.INFORMATION_MESSAGE); } }else if(e.getActionCommand()=="返回"){ dispose(); } } } class Student2{ String name; String gendar; String number; String age; String score; public Student2(String name,String gendar,String age,String number,String score){ this.name=name; this.gendar=gendar; this.age=age; this.number=number; this.score=score; } }