import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.BufferedReader;
// 系统面板
class StudentGUI extends JFrame
{
// 学生系统成员属性
int maxscore;
int minscore;
double avescore;
// 标签
JLabel name;
JLabel Id;
JLabel score;
// 文本框
JTextField namefield;
JTextField Idfield;
JTextField scorefield;
// 上传按钮
JButton sendbtn;
// 获取当前成绩按钮
JButton getscorebtn;
// 监听器
SendPolice sendPolice;
GetScorePolice getScorePolice;
// 发送按钮监听器
private class SendPolice implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
// 文件读入
try
{
// 读入文件对象
FileWriter filewriter = new FileWriter("C:\\Users\\dell\\Desktop\\2019215053 杨雨润\\学生系统\\学生成绩.txt",true);
BufferedWriter out = new BufferedWriter(filewriter); // 输出流
out.write(namefield.getText() + " " + Idfield.getText() + " " + scorefield.getText() + "\n");
// 重置输出文本
namefield.setText("");
Idfield.setText("");
scorefield.setText("");
// 关闭流
out.close();
}
catch(IOException ioe)
{
System.out.println(ioe.getMessage());
}
}
}
// 获取成绩按钮监听器
private class GetScorePolice implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
try
{
// 获取文件内容
FileReader fileReader = new FileReader("C:\\Users\\dell\\Desktop\\2019215053 杨雨润\\学生系统\\学生成绩.txt");
BufferedReader in = new BufferedReader(fileReader); // 读入流
String score; // 每个人的成绩
String reg = "[\\D]+"; // 非数字字符
String studentscore[] = new String[100]; // 所有人的成绩数组
int sum = 0; // 总分数
int count = 0; // 计算学生数
maxscore = 0;
minscore = 1000;
// 获得成绩
while((score = in.readLine())!=null)
{
String dig[] = score.split(reg); // 截取掉非数字字符
studentscore[count++] = score; // 将成绩传入数组中,方便后面排序
// 计算总成绩
sum = sum + Integer.valueOf(dig[2]); // 求成绩之和,这里之所以是2,是因为1是“ ”
// 计算最高分
if(Integer.valueOf(dig[2]) > maxscore)
maxscore = Integer.valueOf(dig[2]);
// 计算最低分
if(Integer.valueOf(dig[2]) < minscore)
minscore = Integer.valueOf(dig[2]);
}
// 排序
for(int i = 0; i < count;i++)
{
for(int j = 0;j < count-1;j++)
{
String z; // 中转
String n1[] = studentscore[j].split(reg); // 截取数字
String n2[] = studentscore[j + 1].split(reg);
int num1 = Integer.valueOf(n1[2]); // 获得第一个人的成绩
int num2 = Integer.valueOf(n2[2]);
if(num1 < num2)
{
z = studentscore[j];
studentscore[j] = studentscore[j + 1];
studentscore[j + 1] = z;
}
}
}
// 将分数写入文件
try
{
// 文件进行覆盖,每输入一个学生,文件就更新
FileWriter fileWriter = new FileWriter("C:\\Users\\dell\\Desktop\\2019215053 杨雨润\\学生系统\\学生排名.txt");
BufferedWriter out = new BufferedWriter(fileWriter);
// 输出排名
out.write("学生成绩排名: " + "\n");
for(int i = 0;i < count;i++)
out.write(studentscore[i] + "\n");
out.write("\n");
// 获取平均成绩
avescore = (double)sum / count;
out.write("平均分:" + String.format("%.3f", avescore) + "\n"); // 保留三位小数
// 获得最高分
out.write("最高分:" + maxscore + "\n");
// 获得最低分
out.write("最低分:" + minscore + "\n");
// 关闭流
in.close();
out.close();
}
catch (IOException ioe)
{
System.out.println(ioe.getMessage());
}
}
catch (IOException exc)
{
System.out.println(exc.getMessage());
}
}
}
StudentGUI()
{
// 窗口设置1
super("学生系统");
setSize(500,300);
setLayout(new FlowLayout(1,10,80));
// 设置按钮面板
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout(1,100,0));
// 标签实例化
name = new JLabel("姓名:");
Id = new JLabel("学号:");
score = new JLabel("成绩:");
// 监听器实例化
sendPolice = new SendPolice();
getScorePolice = new GetScorePolice();
// 文本框实例化
namefield = new JTextField(7);
Idfield = new JTextField(10);
scorefield = new JTextField(7);
// 按钮实例化
sendbtn = new JButton("上传成绩");
getscorebtn = new JButton("打开成绩单");
sendbtn.addActionListener(sendPolice);
getscorebtn.addActionListener(getScorePolice);
// 添加组件
add(name);
add(namefield);
add(Id);
add(Idfield);
add(score);
add(scorefield);
add(panel);
panel.add(sendbtn);
panel.add(getscorebtn);
// 窗口设置2
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
public class StudentSys
{
public static void main(String args[])
{
StudentGUI sgui = new StudentGUI();
}
}
java实例 学生成绩系统
最新推荐文章于 2023-04-21 23:25:30 发布