⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gui.java

📁 用java编写的关于学生成绩统计系统的源代码
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
//import java.awt.image.ImageObserver;
import javax.swing.*;
//import javax.swing.event.*;
//import javax.swing.border.*;
import java.util.*;
//import java.text.*;


public class GUI extends JFrame{
	public GUI(){
		super("成绩统计");
		Toolkit kit =Toolkit.getDefaultToolkit();
        Dimension screenSize=kit.getScreenSize();
        int x=(screenSize.width-600)/2;
        int y=(screenSize.height-400)/2;
        setLocation(x,y);
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		buildclass();
		Container pane=getContentPane();
		initInput();
		initDraw();
		initWest();
		pane.setLayout(new BorderLayout());
		pane.add(InputArea,BorderLayout.NORTH);
		pane.add(DrawArea,BorderLayout.WEST);
		pane.add(WestArea,BorderLayout.CENTER);
		//pane.setPreferredSize(new Dimension(600,600));
		setVisible(true);
		pack();
	    
	}
	
///////////////////////////////////////////////////////////////////////////输入区
 private void initInput(){
 	InputArea=new JPanel();
 	InputArea.setLayout(new FlowLayout());
 	JLabel nameare=new JLabel("姓名");
 	InputArea.add(nameare);
 	name=new JTextField(5);
 	InputArea.add(name);
 	JLabel IDare=new JLabel("学号");
 	InputArea.add(IDare);
 	ID=new JTextField(5);
 	InputArea.add(ID);
 	JLabel gradearea=new JLabel("成绩");
 	InputArea.add(gradearea);
 	grade=new JTextField(5);
 	InputArea.add(grade);
 	JLabel carea=new JLabel("班别");
 	InputArea.add(carea);
 	String[] arv=new String[classes.length];
 	for(int i=0;i<classes.length;i++)
 	   arv[i]=String.valueOf(i+1);
 	c=new JComboBox(arv);
 	Select I=new Select();
 	c.addItemListener(I);  
 	InputArea.add(c);
 	JButton b=new JButton("输入");
 	ButtonAct e=new ButtonAct();
 	b.addActionListener(e);
 	InputArea.add(b);
 	}	
 	//////////////////////////////////////////////////////////////////////输出区
 	private void initDraw(){
 		DrawArea=new JPanel();
 	//	Container c=DrawArea.getC;
 		DrawArea.setBackground(Color.white);
 		DrawArea.setPreferredSize(new Dimension(300,300));
 		DrawArea.setLayout(new BoxLayout(DrawArea,BoxLayout.Y_AXIS));
 		//JScrollPane Scroll=new JScrollPane();
 	//	DrawArea.add(Scroll);
 	}
 	
 	private void DrawData(Classes classes ){
 		JLabel[] drawD=new JLabel[classes.getSize()];
 		JLabel top=new JLabel("最高分:"+String.valueOf(classes.getMax().getGrade())+",最低分:"+String.valueOf(classes.getMin().getGrade())+",平均分"+String.valueOf(classes.getAvg()));
 		JLabel to=new JLabel("姓 名   学 号      分 数");
 		DrawArea.add(top);
 		DrawArea.add(to);
 		for (int i=0;i<drawD.length;i++){
 		int n=drawD.length-1-i;
 		drawD[i]=new JLabel(classes.get(n).getName()+"        "+classes.get(n).getID()+"       "+String.valueOf(classes.get(n).getGrade()));
 		DrawArea.add(drawD[i]);
 		setVisible(true);
 		
 		}
 		
 		
 	}
 ///////////////////////////////////////////////////////////////////////////////监听器区	
 	private class ButtonAct implements ActionListener {
 		public void actionPerformed(ActionEvent e){
 			int i=Integer.parseInt(c.getSelectedItem().toString());
 			float g=Float.valueOf(grade.getText());
 			int d=Integer.parseInt(ID.getText());
 			String n=name.getText();
 			classes[i-1].add(new student(d,g,n));
 			DrawArea.removeAll();
 			DrawData(classes[i-1]);
 			draw(classes[i-1],WestArea);
 			}
 			
 	}
 private class Select implements ItemListener {
 	
 public void itemStateChanged(ItemEvent e) 
{ 
if(e.getStateChange() == ItemEvent.SELECTED)//当JComboBox选项发生改变时 
{ 
   int i=Integer.parseInt(c.getSelectedItem().toString());
   DrawArea.removeAll();
   DrawArea.repaint();
   if(classes[i-1].getSize()!=0)
   DrawData(classes[i-1]);
   draw(classes[i-1],WestArea);
   
} 
} 
}
//////////////////////////////////////////////绘图区
 private void initWest(){
 	WestArea=new DrawPanel();
 //	WestArea.setPreferredSize(new Dimension(400,300));
 	//WestArea.setVisible(true);
 	JLabel eLabel=new JLabel("优秀(100-90)");
    JLabel gLabel=new JLabel("良好(89-80)");
    JLabel cLabel= new JLabel("中等(79-60)");
    JLabel bLabel=new JLabel("不及格(60以下)");
         eLabel.setForeground(Color.RED);
         gLabel.setForeground(Color.YELLOW);
         cLabel.setForeground(Color.BLUE);
         bLabel.setForeground(Color.BLACK);
         WestArea.add(eLabel);
         WestArea.add(gLabel);
         WestArea.add(cLabel);
         WestArea.add(bLabel);
    
 }
 
 private void draw(Classes clas,DrawPanel d){
   d.eEnd=Math.round(clas.getGood()*360);
    d.gEnd=Math.round(clas.getExc()*360);
    d.cEnd=Math.round(clas.getMid()*360);
    d.repaint();
}
//////////////////////////////////////////////////////////////////////////////创建班队列
 	private void buildclass(){
		String inputValue = JOptionPane.showInputDialog("总共有多少个班?");
		int j=Integer.parseInt(inputValue);
		classes=new Classes[j];
		for(int i=0;i<classes.length;i++)
		classes[i]=new Classes();
	}
 
private JPanel InputArea,DrawArea; 
private JTextField name,grade,ID;
private JComboBox c;
 private Classes[] classes;
 private DrawPanel WestArea;
}


/////////////////////////////////////////////////////////
class DrawPanel extends JPanel{
    
    /** Creates a new instance of DrawPanel */
    public DrawPanel() {
       eEnd=0;
       gEnd=0;
       cEnd=0;
    }
    public void paintComponent(Graphics g){
         super.paintComponent(g);
         g.setColor(Color.RED);//优秀红色
         g.fillArc(x,y,d,d,0,eEnd);
         g.setColor(Color.YELLOW);//良好黄色
         g.fillArc(x,y,d,d,eEnd,gEnd);
         g.setColor(Color.BLUE);//中等蓝色
         g.fillArc(x,y,d,d,gEnd+eEnd,cEnd);
         g.setColor(Color.BLACK);//不及格黑色
         g.fillArc(x,y,d,d,eEnd+gEnd+cEnd,360-eEnd-gEnd-cEnd);
     }

     int x=100;
     int y=60;
     int d=180;
    int eEnd,gEnd,cEnd;
}
class test{
	public static void main(String args[]){
		new GUI();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -