// 就直接上代码了。。
之前写的教师的可能要调用这个工具类里面的方法
包括学生的---增删改查
package StudentMajor;
import java.awt.FlowLayout;
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.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
public class StudentTools {
private JFrame jf;//窗口
private JPanel jp1,jp2,jp3,jp4,jp5,jp6,jp7;//面板
private JLabel jlb1,jlb2,jlb3,jlb4,jlb5,jlb6;//标签
private JButton jb1,jb2,jb3;//按钮
private JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;//文本
public static Set<StudentUser> set = new TreeSet<StudentUser>();
private File file = new File("e:\\abc\\file\\StudentInfo.txt");
// public static void main(String[] args) {
// new StudentTools().init();
// showStudents();
// }
public StudentTools() {
}
public void init() {
if(!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//<1>设置主页面
jf = new JFrame("学生管理系统");
jf.setSize(300, 300);//窗体大小
jf.setLocationRelativeTo(null);//居中显示
jf.setLayout(new FlowLayout());//设置布局
jf.setResizable(false); //设置窗口不能改变大小
//一初始化就有面板
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
jp4 = new JPanel();
jp5 = new JPanel();
jp6 = new JPanel();
//(1)设置标签
jlb1 = new JLabel("姓 名");
jlb2 = new JLabel("学 号");
jlb3 = new JLabel("数 学");
jlb4 = new JLabel("语 文");
jlb5 = new JLabel("英 语");
//(2)设置按钮
jb1 = new JButton("确定");
jb2 = new JButton("重置");
jb3 = new JButton("返回");
//(3)创建文本框
jtf1 = new JTextField(10);
jtf2 = new JTextField(10);
jtf3 = new JTextField(10);
jtf4 = new JTextField(10);
jtf5 = new JTextField(10);
//<2>添加部件(添加到面板)
jp1.add(jlb1);
jp1.add(jtf1);
jp2.add(jlb2);
jp2.add(jtf2);
jp3.add(jlb3);
jp3.add(jtf3);
jp4.add(jlb4);
jp4.add(jtf4);
jp5.add(jlb5);
jp5.add(jtf5);
jp6.add(jb1);
jp6.add(jb2);
jp6.add(jb3);
//(1)将组件都添加到窗体上
jf.add(jp1);
jf.add(jp2);
jf.add(jp3);
jf.add(jp4);
jf.add(jp5);
jf.add(jp6);
//<3>添加窗体事件
myEvent();
//<4>设置窗体可见
jf.setVisible(true);
}
// 基本事件
public void myEvent() {
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(jtf1.getText().isEmpty()||jtf2.getText().isEmpty()||jtf3.getText().isEmpty()||
jtf4.getText().isEmpty()||jtf5.getText().isEmpty()) {
JOptionPane.showMessageDialog(null,"请输入完整的信息" ,"提示信息", JOptionPane.WARNING_MESSAGE);
return;
}
else {
String s1 = jtf1.getText();
String s1Reg = ".{2,5}";
if(!s1.matches(s1Reg)) {
JOptionPane.showMessageDialog(null,"姓名最多5位,最少两位哦" ,"提示信息", JOptionPane.WARNING_MESSAGE);
return;
}
String s2 = jtf2.getText();
String s2Reg = "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]";
if(!s2.matches(s2Reg)) {
JOptionPane.showMessageDialog(null,"学号只能是八位纯数字哦" ,"提示信息", JOptionPane.WARNING_MESSAGE);
return;
}
String s3 = jtf3.getText();
String s4 = jtf4.getText();
String s5 = jtf5.getText();
String jtfReg = "[1-9][0-9]?";
if(!(s3.matches(jtfReg)&&s4.matches(jtfReg)&&s5.matches(jtfReg))) {
JOptionPane.showMessageDialog(null,"成绩有不合法输入(0-99分)" ,"提示信息", JOptionPane.WARNING_MESSAGE);
return;
}
}
int a = Integer.parseInt(jtf3.getText());
int b = Integer.parseInt(jtf4.getText());
int c = Integer.parseInt(jtf5.getText());
boolean flag = false;
StudentUser stu = new StudentUser(jtf1.getText(),jtf2.getText(),a,b,c);
stu.setSum(a+b+c);
StudentTools.set.add(stu);
//flag = writeToStuFile(file,set);
flag = writeToStuFile(file,stu);
if(flag)
JOptionPane.showMessageDialog(null,"成绩保存成功" ,"提示信息", JOptionPane.WARNING_MESSAGE);
else
JOptionPane.showMessageDialog(null,"该学生已存在" ,"提示信息", JOptionPane.WARNING_MESSAGE);
}
});
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jtf1.setText("");
jtf2.setText("");
jtf3.setText("");
jtf4.setText("");
jtf5.setText("");
}
});
jb3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new TeacherUser().init();
jf.dispose();
}
});
}
//写进文件
public boolean writeToStuFile(File file,StudentUser stu) {
if(readFileOfStudent(file,stu.getName(),stu.getNum())){
return false;
}
if(file==null) {
System.out.println("没有文件");
return false;
}
BufferedWriter bufw = null;
try {
bufw = new BufferedWriter(new FileWriter(file,true));
bufw.write(stu.getName()+" "+stu.getNum()+" "+stu.getScore1()+" "+stu.getScore2()+" "+stu.getScore3()+" "+stu.getSum());
bufw.newLine();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(bufw!=null)
bufw.close();
} catch (IOException e) {
System.out.println("文件关闭失败");
}
}
return true;
}
// 从文件中读取
public boolean readFileOfStudent(File file,String name,String num) {
BufferedReader bufr = null;
//System.out.println(name+num);
boolean flag = false;
try {
bufr = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e) {
new RuntimeException("该文件不存在!");
}
String len = null;
String infoReg = " +";
String[]s = null;
try {
while((len = bufr.readLine())!=null) {
s = len.split(infoReg);
//System.out.println(s[0]+" "+s[1]);
if(s[1].equals(num)) {
return true;
}
}
} catch (IOException e) {
System.out.println("读取失败!");
e.printStackTrace();
}
return false;
}
//展示所有学生
public static void showStudents() {
Set<StudentUser> set = getStudentsFromFile();
StudentTools.set = set;
for(StudentUser s : set ) {
System.out.println(s.getName()+s.getNum()+s.getScore1()+s.getScore2()+s.getScore3()+s.getSum());
}
}
// 设置学生属性
public static void setStudents(StudentUser stu,int score1,int score2,int score3) {
stu.setScore1(score1);
stu.setScore2(score2);
stu.setScore3(score3);
stu.setSum(stu.getScore1()+stu.getScore2()+stu.getScore3());
}
// 返回所有学生的集合
public static Set<StudentUser> getStudentsFromFile(){
Comparator<StudentUser>cmp = Collections.reverseOrder();
return getStudentsFromFile(cmp);
}
// 返回所有学生的集合
public static Set<StudentUser> getStudentsFromFile(Comparator<StudentUser>cmp){
File file = new File("e:\\abc\\file\\StudentInfo.txt");
if(!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
set = new TreeSet<StudentUser>(cmp);
BufferedReader bufr = null;
try {
bufr = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e) {
new RuntimeException("该文件不存在!");
}
String len = null;
String infoReg = " +";
String[]s = null;
try {
while((len = bufr.readLine())!=null) {
s = len.split(infoReg);
int a = Integer.parseInt(s[2]);
int b = Integer.parseInt(s[3]);
int c = Integer.parseInt(s[4]);
StudentUser stu = new StudentUser(s[0],s[1],a,b,c);
stu.setSum(a+b+c);
set.add(stu);
}
} catch (IOException e) {
System.out.println("读取失败!");
e.printStackTrace();
}finally {
try {
if(bufr!=null)
bufr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return set;
}
//查找---学号
public static StudentUser searchForStudent(String num) {
Set<StudentUser> set = getStudentsFromFile();
for(StudentUser stu : set) {
if(stu.getNum().equals(num)) {
return stu;
}
}
return null;
}
//查找--姓名/学号
public static StudentUser searchForStudentByName(String num,String name) {
Set<StudentUser> set = getStudentsFromFile();
for(StudentUser stu : set) {
if(stu.getName().equals(name)&&stu.getNum().equals(num)) {
return stu;
}
}
return null;
}
//姓名学号查找
public static StudentUser showAStudentToPanel(String num,String name) {
return searchForStudentByName(num,name);
}
//学号
public static StudentUser showAStudentToPanel(String num) {
return searchForStudent(num);
}
public static boolean showAStudent(String num) {
StudentUser s = searchForStudent(num);
System.out.println("姓名: "+s.getName()+"学号: "+s.getNum()+
"数学: "+s.getScore1()+"语文: "+s.getScore2()+
"英语: "+s.getScore3()+"总分: "+s.getSum());
return true;
}
// 删除
public static boolean deleteStudent(String num) {
boolean flag = false;
Set<StudentUser> set = getStudentsFromFile();
Iterator<StudentUser> it = set.iterator();
while(it.hasNext()) {
StudentUser stu = it.next();
if(stu.getNum().equals(num)) {
flag = true;
it.remove();
}
}
StudentTools.set = set;
return flag;
}
//修改
public static boolean modificationStudent(String name,String num,int score1,int score2,int score3) {
boolean flag = false;
Set<StudentUser> set = getStudentsFromFile();
StudentUser tempStu = null;
Iterator<StudentUser> it = set.iterator();
while(it.hasNext()) {
StudentUser stu = it.next();
if(stu.getNum().equals(num)) {
flag = true;
tempStu = stu;
}
}
if(flag) {
StudentUser newStu = new StudentUser(name,num,score1,score2,score3);
newStu.setSum(score1+score2+score3);
StudentTools.set.add(newStu);
}else {
return false;
}
StudentTools.set = set;
return true;
}
//写进文件--set
public static boolean writeToStuFile(File file,Set<StudentUser> set) {
if(file==null) {
System.out.println("没有文件");
try {
file.createNewFile();
} catch (IOException e) {
System.out.println("文件创建失败!");
return false;
}
}
BufferedWriter bufw = null;
try {
bufw = new BufferedWriter(new FileWriter(file,true));
for(StudentUser stu : set) {
bufw.write(stu.getName()+" "+stu.getNum()+" "+stu.getScore1()+" "+stu.getScore2()+" "+stu.getScore3()+" "+stu.getSum());
bufw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(bufw!=null)
bufw.close();
} catch (IOException e) {
System.out.println("文件关闭失败");
}
}
return true;
}
// 读文件 --set
public boolean readFileOfStudent(File file,Set<StudentUser> set) {
BufferedReader bufr = null;
try {
if(file==null)
file.createNewFile();
bufr = new BufferedReader(new FileReader(file));
} catch (IOException e) {
e.getStackTrace();
return false;
}
String len = null;
String infoReg = " +";
String[]s = null;
try {
while((len = bufr.readLine())!=null) {
s = len.split(infoReg);
int a = Integer.parseInt(s[0]);
int b = Integer.parseInt(s[1]);
int c = Integer.parseInt(s[2]);
StudentUser stu = new StudentUser(s[0],s[1],a,b,c);
stu.setSum(a+b+c);
StudentTools.set.add(stu);
}
} catch (IOException e) {
System.out.println("读取失败!");
e.printStackTrace();
}
return true;
}
}