不细说了,这会要去改进美化界面了,代码中用了很多笨方法,总算是实现了这个程序,源码如下:(温馨提示:左侧应该有导航栏,其实我刚刚发现)
Main:主函数&Filew:文件操作
package student;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import static student.Main.fe;
import static student.Main.list;
public class Main {
static List<student> list = new ArrayList<student>();
static String fe=".\\studentData.txt";//文件名
static {
File file;
file = new File(fe);
if (!file.exists()) {
try {
boolean newFile = file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
//到这里已经成功打开了文件,或者是创建了文件
//将文件中的数据读入程序
FileReader fr= null;
BufferedReader br=null;
try {
fr = new FileReader(fe);
br = new BufferedReader(fr);
String Line = "";
while ((Line=br.readLine())!=null){
String[] s = Line.split(" ");
student stu = new student();
stu.setID(s[0]);
stu.setName(s[1]);
stu.setSex(s[2]);
stu.setGrade(s[3]);
list.add(stu);
}
fr.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new FileFrame();
}
}
class Filew{ //导出信息到文件类
public void writeStu(student stu){ //追加写入指定信息
try {
FileWriter fw = new FileWriter(fe, true);
BufferedWriter bw = new BufferedWriter(fw);
if (!list.isEmpty()){ //bug补丁 //仅适用于当前方法
bw.newLine();
}
bw.write(stu.getID() + " " +stu.getName() + " " + stu.getSex() + " " + stu.getGrade());
bw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void writeStu(){ //全部覆盖写入集合中当前信息
boolean first=false;
try {
FileWriter fw = new FileWriter(fe);
BufferedWriter bw = new BufferedWriter(fw);
if (first){ //bug补丁 -改
bw.newLine();
}
first=true;
for (int i = 0; i <list.size(); i++) {
student s = list.get(i);
bw.write(s.getID()+" "+s.getName()+" "+s.getSex()+" "+s.getGrade());
if (i!=list.size()-1){//预防针
bw.newLine();
}
}
bw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileFrame:主界面
package student;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FileFrame extends JFrame {
public FileFrame(){
super();
setTitle("韩法旭---学生管理系统V1.0");
setBounds(600,300,340,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setResizable(false);
Container con = getContentPane();
JButton b1 = new JButton("添加");
JButton b2 = new JButton("删除");
JButton b3 = new JButton("查询");
JButton b4 = new JButton("修改");
JButton b5 = new JButton("遍历");
JButton b6 = new JButton("退出");
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
JPanel p4 = new JPanel();
JPanel p5 = new JPanel();
JPanel p6 = new JPanel();
JPanel p7 = new JPanel();
p1.add(b1);
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == b1) {
addStu addStu = new addStu();//添加
dispose();
}
}
});
p2.add(b2);
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == b2) {
delStu delStu = new delStu();//删除
dispose();
}
}
});
p3.add(b3);
b3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == b3) {
inquStu inquStu = new inquStu();//查询
dispose();
}
}
});
p4.add(b4);
b4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == b4) {
reStu reStu = new reStu();//修改
dispose();
}
}
});
p5.add(b5);
b5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == b5) {
printfStuAll printfStuAll = new printfStuAll();//遍历
dispose();
}
}
});
p6.add(b6);
b6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == b6) {
System.exit(0); //退出
dispose();
}
}
});
p7.add(p1);
p7.add(p2);
p7.add(p3);
p7.add(p4);
p7.add(p5);
p7.add(p6);
p7.setLayout(new FlowLayout(FlowLayout.CENTER, 50, 60));
con.add(p7);
}
}
addStu:添加学生
package student;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static student.Main.list;
public class addStu extends JFrame {
public addStu() {
setTitle("添加学生信息");
setBounds(600, 300, 300, 360);
setVisible(true);
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
JTextField t1,t2,t3,t4;
JLabel l1,l2,l3,l4;
JButton b1,b2;
Container con = getContentPane();
l1 = new JLabel("学号: ");
l2 = new JLabel("姓名: ");
l3 = new JLabel("性别: ");
l4 = new JLabel("成绩: ");
b1 = new JButton("确认");
b2 = new JButton("取消");
t1 = new JTextField(15);
t2 = new JTextField(15);
t3 = new JTextField(15);
t4 = new JTextField(15);
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
JPanel p4 = new JPanel();
JPanel p5 = new JPanel();
JPanel p6 = new JPanel();
JPanel p7 = new JPanel();
p1.add(l1);
p1.add(t1);
p2.add(l2);
p2.add(t2);
p3.add(l3);
p3.add(t3);
p4.add(l4);
p4.add(t4);
p5.add(b1);
p6.add(b2);
p7.add(p1);
p7.add(p2);
p7.add(p3);
p7.add(p4);
p7.add(p5);
p7.add(p6);
p7.setLayout(new FlowLayout(FlowLayout.CENTER,40,25)); //居中,水平距30,垂直距15
con.add(p7);
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s1 = t1.getText();
String s2 = t2.getText();
String s3 = t3.getText();
String s4 = t4.getText();
student s = new student(s1, s2, s3, s4);
boolean bool=true;
for (student st : list) {//判断学号是否存在
if (st.getID().equals(s1)) {
JOptionPane.showMessageDialog(null, "你输入的学号已存在", "警告", JOptionPane.ERROR_MESSAGE);
bool=false;
return;
}
}
if(t1.getText().equals("") || t2.getText().equals("")||t3.getText().equals("")||t4.getText().equals("")){
JOptionPane.showMessageDialog(null, "请输入完整的信息", "警告", JOptionPane.ERROR_MESSAGE);
bool=false;
}
if (bool) {
JOptionPane.showMessageDialog(b1, "添加成功"); //消息对话框
list.add(s);
new Filew().writeStu(s);
t1.setText("");
t2.setText("");
t3.setText("");
t4.setText("");
} else {
JOptionPane.showMessageDialog(null, "添加错误", "错误", JOptionPane.ERROR_MESSAGE);
}
}
});
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
new FileFrame();
dispose();
}
});
}
}
printfStuAll:遍历
package student;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static student.Main.list;
public class printfStuAll extends JFrame{
public printfStuAll() {
setTitle("遍历学生信息");
setBounds(600, 300, 300, 360);
setVisible(true);
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
JTextArea jt;
JButton b1,b2;
Container con = getContentPane();
b1 = new JButton("确认");
b2 = new JButton("取消");
String s[] = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
student student = list.get(i);
s[i]=student.getID()+" "+student.getName()+" "+student.getSex()+" "+student.getGrade();
}
String s1="";
for (int i = 0; i < list.size(); i++) {
s1=s1+s[i]+"\n";
}
jt=new JTextArea(s1,12,20);
// setBounds(600,300,340,400);
// jt.setSize(200,200);
jt.setLineWrap(true);
JScrollPane jScrollPane = new JScrollPane(jt);
jScrollPane.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
JPanel p1 = new JPanel();
JPanel p5 = new JPanel();
JPanel p6 = new JPanel();
JPanel p7 = new JPanel();
p1.add(jScrollPane);
p5.add(b1);
p6.add(b2);
p7.add(p1);
p7.add(p5);
p7.add(p6);
p7.setLayout(new FlowLayout(FlowLayout.CENTER,40,25)); //居中,水平距30,垂直距15
con.add(p7);
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
new FileFrame();
dispose();
}
});
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
new FileFrame();
dispose();
}
});
}
}
delStu:删除学生
package student;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static student.Main.list;
public class delStu extends JFrame {
public delStu() {
setTitle("删除学生信息");
setBounds(600, 300, 300, 360);
setVisible(true);
setResizable(false);
JTextField t1;
JLabel l1,l2;
JButton b1,b2;
Container con = getContentPane();
l1 = new JLabel("学号: ");
l2=new JLabel("请输入要修改学生的学号");
l2.setFont(new Font("宋体", Font.PLAIN, 16));
b1 = new JButton("删除");
b2 = new JButton("取消");
t1 = new JTextField(15);
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p5 = new JPanel();
JPanel p6 = new JPanel();
JPanel p7 = new JPanel();
p1.add(l1);
p1.add(t1);
p2.add(l2);
p5.add(b1);
p6.add(b2);
p7.add(l2);
p7.add(p1);
p7.add(p5);
p7.add(p6);
p7.setLayout(new FlowLayout(FlowLayout.CENTER,40,25));
con.add(p7);
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// System.out.println(list.toString()); // 查看当前集合元素(用于查bug)
String inID = t1.getText();
if (list.size()>0){
for (int i = 0; i < list.size(); i++) {
student stu = list.get(i);
if (inID.equals(stu.getID())){
list.remove(i);
// System.out.println(list.toString());
new Filew().writeStu();
JOptionPane.showMessageDialog(null, "删除成功", "删除结果", JOptionPane.PLAIN_MESSAGE);
return;
}
if (i==list.size()-1){
JOptionPane.showMessageDialog(null, "该学生不存在", "警告", JOptionPane.ERROR_MESSAGE);
}
}
}else{
JOptionPane.showMessageDialog(null, "没有数据", "警告", JOptionPane.ERROR_MESSAGE);
}
}
});
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
new FileFrame();
dispose();
}
});
}
}
reStu:修改学生 &reStuData:修改具体操作
package student;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static student.Main.list;
public class reStu extends JFrame{
public reStu() {
setTitle("修改学生信息");
setBounds(600, 300, 300, 360);
setVisible(true);
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
JTextField t1;
JLabel l1,l2;
JButton b1,b2;
Container con = getContentPane();
l1 = new JLabel("学号: ");
l2=new JLabel("请输入要修改学生的学号");
l2.setFont(new Font("宋体", Font.PLAIN, 16));
b1 = new JButton("确认");
b2 = new JButton("取消");
t1 = new JTextField(15);
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p5 = new JPanel();
JPanel p6 = new JPanel();
JPanel p7 = new JPanel();
p1.add(l1);
p1.add(t1);
p2.add(l2);
p5.add(b1);
p6.add(b2);
p7.add(p2);
p7.add(p1);
p7.add(p5);
p7.add(p6);
p7.setLayout(new FlowLayout(FlowLayout.CENTER,40,25));
con.add(p7);
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s1 = t1.getText();
for (int i=0;i<list.size();i++) {//判断学号是否存在
student student = list.get(i);
if (student.getID().equals(s1)) {
new reStuData(i);
break;
}
if (i == list.size() - 1){
JOptionPane.showMessageDialog(null, "你输入的学号不存在", "警告", JOptionPane.ERROR_MESSAGE);
t1.setText("");
return;
}
}
dispose();
}
});
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
new FileFrame();
dispose();
}
});
}
}
class reStuData extends JFrame{
public reStuData(int i) {
setTitle("修改学生信息");
setBounds(600, 300, 300, 360);
setVisible(true);
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
JTextField t2,t3,t4;
JLabel l2,l3,l4;
JButton b1,b2;
Container con = getContentPane();
l2 = new JLabel("姓名: ");
l3 = new JLabel("性别: ");
l4 = new JLabel("成绩: ");
b1 = new JButton("确认");
b2 = new JButton("取消");
t2 = new JTextField(15);
t3 = new JTextField(15);
t4 = new JTextField(15);
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
JPanel p4 = new JPanel();
JPanel p5 = new JPanel();
JPanel p6 = new JPanel();
JPanel p7 = new JPanel();
p2.add(l2);
p2.add(t2);
p3.add(l3);
p3.add(t3);
p4.add(l4);
p4.add(t4);
p5.add(b1);
p6.add(b2);
p7.add(p1);
p7.add(p2);
p7.add(p3);
p7.add(p4);
p7.add(p5);
p7.add(p6);
p7.setLayout(new FlowLayout(FlowLayout.CENTER,40,25));
con.add(p7);
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String s2 = t2.getText();
String s3 = t3.getText();
String s4 = t4.getText();
student student = list.get(i);
student.setName(s2);
student.setSex(s3);
student.setGrade(s4);
list.set(i, student);
new Filew().writeStu();
JOptionPane.showMessageDialog(b1, "修改成功"); //消息对话框
new reStu();
dispose();
}
});
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
new reStu();
dispose();
}
});
}
}
inquStu:查询学生
package student;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static student.Main.list;
public class inquStu extends JFrame {
public inquStu() {
setTitle("查询学生信息");
setBounds(600, 300, 300, 360);
setVisible(true);
setResizable(false);
JTextField t1;
JLabel l1,l2;
JButton b1,b2;
Container con = getContentPane();
l1 = new JLabel("学号: ");
l2=new JLabel("请输入要修改学生的学号");
l2.setFont(new Font("宋体", Font.PLAIN, 16));
b1 = new JButton("查询");
b2 = new JButton("取消");
t1 = new JTextField(15);
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p5 = new JPanel();
JPanel p6 = new JPanel();
JPanel p7 = new JPanel();
p1.add(l1);
p1.add(t1);
p2.add(l2);
p5.add(b1);
p6.add(b2);
p7.add(p2);
p7.add(p1);
p7.add(p5);
p7.add(p6);
p7.setLayout(new FlowLayout(FlowLayout.CENTER,40,25));
con.add(p7);
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String inID = t1.getText();
if (list.size()>0){
for (int i = 0; i < list.size(); i++) {
student stu = list.get(i);
if (inID.equals(stu.getID())){
String string = stu.getID()+"------------"+stu.getName()+"------------"+stu.getSex()+"------------"+stu.getGrade();
JOptionPane.showMessageDialog(null, string, "查询结果", JOptionPane.PLAIN_MESSAGE);
return;
}
if (i==list.size()-1){
JOptionPane.showMessageDialog(null, "该学生不存在", "警告", JOptionPane.ERROR_MESSAGE);
}
}
}else{
JOptionPane.showMessageDialog(null, "没有数据", "警告", JOptionPane.ERROR_MESSAGE);
}
}
});
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
new FileFrame();
dispose();
}
});
}
}
student:学生类
package student;
import java.util.Objects;
public class student {
private String ID;
private String Name;
private String Sex;
private String Grade;
public student() {
}
public student( String ID,String name, String sex, String grade) {
Name = name;
Sex = sex;
this.ID = ID;
Grade = grade;
}
@Override
public String toString() {
return ID + " " + Name + " " + Sex + " " +Grade ;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getSex() {
return Sex;
}
public void setSex(String sex) {
Sex = sex;
}
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public String getGrade() {
return Grade;
}
public void setGrade(String grade) {
Grade = grade;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
student student = (student) o;
return Objects.equals(ID, student.ID) &&
Objects.equals(Name, student.Name) &&
Objects.equals(Sex, student.Sex) &&
Objects.equals(Grade, student.Grade);
}
@Override
public int hashCode() {
return Objects.hash(ID, Name, Sex, Grade);
}
}