Java 基于JFrame的一个简单学生成绩管理系统(内含详细注释)丨【奔跑吧!JAVA】
【摘要】 Java 基于JFrame的一个简单学生成绩管理系统(内含详细注释)
/*
* 若尘
*/
package demo;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
*
* @author ruochen
* @version 1.0
*/
public class Test extends JFrame{
/**
*
*/
private static final long serialVersionUID = -303244674232669473L;
Container c = this.getContentPane();
Student[] stu = new Student[10];
int count = 0;
JTabbedPane jtab = new JTabbedPane();
JTextField tNumberIn = new JTextField(8);
JTextField tScoreIn = new JTextField(8);
JTextField tNumberQuery = new JTextField(8);
JTextField tScoreQuery = new JTextField(8);
JTextArea textArea = new JTextArea(5, 20);
JButton bIn, bSort, bQuery;
/**
* 构造函数初始化
*/
public Test() {
for (int i = 0; i < stu.length; i++) {
stu[i] = new Student();
}
/**--------------------- 建立输入面板 --------------------- **/
JPanel panel1 = new JPanel();
panel1.setLayout(new BorderLayout());
JPanel panel11 = new JPanel();
JLabel lNumberIn = new JLabel("请输入学号: ");
panel11.setLayout(new FlowLayout());
panel11.add(lNumberIn);
panel11.add(tNumberIn);
JPanel panel12 = new JPanel();
JLabel lScoreIn = new JLabel("请输入成绩: ");
panel12.setLayout(new FlowLayout());
panel12.add(lScoreIn);
panel12.add(tScoreIn);
bIn = new JButton("确认");
panel1.add(panel11, BorderLayout.NORTH);
panel1.add(panel12, BorderLayout.CENTER);
panel1.add(bIn, BorderLayout.SOUTH);
bIn.addActionListener(new InActionListener());
jtab.addTab("输入成绩", null, panel1, null);
// 设置选项卡索引
jtab.setSelectedIndex(0);
/**--------------------- 建立排序面板 --------------------- **/
JPanel panel2 = new JPanel();
bSort = new JButton("排序");
textArea.setEditable(false);
// 设置水平和垂直方向滚动条总是出现
JScrollPane scrollPane = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
// 将panel2的布局设置为GirdBagLayout
GridBagLayout gridBagLayout = new GridBagLayout();
panel2.setLayout(gridBagLayout);
GridBagConstraints constraints = new GridBagConstraints();
// 水平方向最后一个组件
// 根据前一个组件而决定当前组件的相对放置方式
constraints.gridwidth = GridBagConstraints.REMAINDER;
// 当格子有剩余空间时,填充空间
constraints.fill = GridBagConstraints.BOTH;
// 窗口放大时,长度和宽度
constraints.weightx = 1.0;
constraints.weighty = 1.0;
gridBagLayout.setConstraints(scrollPane, constraints);
constraints.fill = GridBagConstraints.HORIZONTAL;
gridBagLayout.setConstraints(bSort, constraints);
panel2.add(scrollPane);
panel2.add(bSort);
bSort.addActionListener(new SortActionListener());
jtab.addTab("成绩排序", null, panel2, null);
/**--------------------- 建立输出面板 --------------------- **/
JPanel panel3 = new JPanel();
panel3.setLayout(new BorderLayout());
JPanel panel31 = new JPanel();
JLabel lNumberQuery = new JLabel("请输入学号: ");
panel31.setLayout(new FlowLayout());
panel31.add(lNumberQuery);
panel31.add(tNumberQuery);
JPanel panel32 = new JPanel();
JLabel lScoreQuery = new JLabel("您的成绩为: ");
panel32.setLayout(new FlowLayout());
panel32.add(lScoreQuery);
panel32.add(tScoreQuery);
bQuery = new JButton("查询");
panel3.add(panel31, BorderLayout.NORTH);
panel3.add(panel32, BorderLayout.CENTER);
panel3.add(bQuery, BorderLayout.SOUTH);
jtab.addTab("成绩查询", null, panel3, null);
bQuery.addActionListener(new QueryActionListener());
c.setLayout(new GridLayout(1, 1));
c.add(jtab);
this.setLocation(500, 500);
this.setSize(300, 300);
this.setVisible(true);
}
public static void main(String[] args) {
new Test();
}
/**
* 成绩输入
* @author ruochen
* @version 1.0
*/
class InActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == bIn) {
if (count < stu.length) {
stu[count].name = tNumberIn.getText();
int scoreIn = Integer.parseInt(tScoreIn.getText());
stu[count].score = scoreIn;
System.out.println(stu[count].score);
count++;
}
}
tNumberIn.setText("");
tScoreIn.setText("");
}
}
/**
* 成绩排序
* @author ruochen
* @version 1.0
*/
class SortActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
Student temp;
String str = " ";
for (int i = 0; i < stu.length; i++) {
for (int j = i + 1; j < stu.length; j++) {
if (stu[i].score < stu[j].score) {
temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
}
textArea.setText("学号 成绩\n");
for (int i = 0; i < stu.length; i++) {
if (stu[i].name != null) {
str = str + stu[i].name + " " + stu[i].score + "\n";
}
}
textArea.append(str);
}
}
/**
* 查找
* @author ruochen
* @version 1.0
*/
class QueryActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String str = tNumberQuery.getText();
if (e.getSource() == bQuery) {
// 遍历stu,查看对应的成绩
int i;
for (i = 0; i < stu.length; i++) {
if (str.equals(stu[i].name)) {
tScoreQuery.setText(String.valueOf(stu[i].score));
tScoreQuery.setEditable(false);
break;
}
}
if (i >= stu.length) {
// 弹出一个对话框,提示要查找的人不存在
int mes = JOptionPane.PLAIN_MESSAGE;
JOptionPane.showMessageDialog(bQuery, "该学生不存在 !", "提示", mes);
}
}
}
}
}
- 运行结果
【奔跑吧!JAVA】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/265241
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)