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

📄 caky.java

📁 学生成绩管理系统:能输入学科
💻 JAVA
字号:
package 学生考试成绩分析程序;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.io.*;import java.util.*;public class Caky extends JFrame implements ActionListener{       static int[] count={0,0,0,0,0};   static int  k,sum=0,icount=0,m;   JButton jbExit;   static String[] line;   static String[] class1;    static String[] name;    static String[] score;        public Caky(String Class,String course){              try{           BufferedReader input =new BufferedReader(new FileReader("score.txt"));           String  L=input.readLine();           double sc=0;            String s3,s4;                       StringTokenizer tokenizer=new StringTokenizer(L,"*");            m=tokenizer.countTokens();            line=new String[m];            class1=new String[m/7];            name=new String[m/7];            score=new String[m/7];                     for(int i=0;tokenizer.hasMoreTokens();i++)           {               line[i]=tokenizer.nextToken();           }            for(int j=0,n=1;j<m;j++,n++)                     {                         if(n==1){                                                         class1[icount]=line[j];                             name[icount]=line[j+1];                             score[icount]=line[j+4];                             icount++;                          }                         if(n==7){                             n=0;                         }                     }                   StringTokenizer scanner3=new StringTokenizer(Class);          StringTokenizer scanner4=new StringTokenizer(course);          s3=scanner3.nextToken();          s4=scanner4.nextToken();                       for(int n=0;n<m/7;n++)          {              if((class1[n].equals(s3))&&(name[n].equals(s4))){               sc=Double.parseDouble(score[n]);               if(sc<=59&&sc>=0)                   count[0]++;               if(sc<=69&&sc>=60)                   count[1]++;               if(sc<=79&&sc>=70)                   count[2]++;               if(sc<=89&&sc>=80)                   count[3]++;               if(sc<=100&&sc>=90)                   count[4]++;               sum++;              }              }          input.close();      }                                     catch(Exception es){          JOptionPane.showMessageDialog(null, "分析失败");      }      jbExit=new JButton("EXIT");       JPanel jpExit=new JPanel();       jpExit.add(jbExit);       jbExit.addActionListener(this);       getContentPane().add(new RectPanel(),BorderLayout.CENTER);       getContentPane().add(jpExit,BorderLayout.SOUTH);        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);        this.setTitle("饼图分析");        this.setLocation(400,300);        this.setSize(600,380);        this.setVisible(true);    }    class RectPanel extends JPanel{    protected void paintComponent(Graphics g){        double m=(1-count[0]/sum-count[1]/sum-count[2]/sum-count[3]/sum-count[4]/sum)*1000/5000.0;        super.paintComponent(g);        g.setColor(Color.BLACK);        g.drawRect(getWidth()/10,getHeight()/8,getWidth()/8*7,getHeight()/4*3);         g.setColor(Color.GREEN);        g.fillArc((getWidth()/10+getWidth()/7*6)/5*2, (getHeight()/8+getHeight()/4*3)/3, getHeight()/4*3/2,  getHeight()/4*3/2, 0, (int)(count[0]+m)*360/sum);         if                 ((getWidth()/10+getWidth()/7*6)/5*2+ getHeight()/4*3/2/2+80+(int)(Math.cos( 360*count[0]/sum/2*3.14/180)*getHeight()/4*3/2/2)<(getWidth()/10+getWidth()/7*6)/5*2+getHeight()/4*3/2)        g.drawString("<60分\n "+1000*count[0]/sum/10.0+"%", (getWidth()/10+getWidth()/7*6)/5*2-80+getHeight()/4*3/2/2+(int)(Math.cos( 360*count[0]/sum/2*3.14/180)*getHeight()/4*3/2/2),                 ( (getHeight()/8+getHeight()/4*3)/3+getHeight()/4*3/2/2)-(int)(Math.sin( 360*count[0]/sum/2*3.14/180)*getHeight()/4*3/2/2));         else              g.drawString("<60分\n "+1000*count[0]/sum/10.0+"%", (getWidth()/10+getWidth()/7*6)/5*2+5+getHeight()/4*3/2/2+5+(int)(Math.cos( 360*count[0]/sum/2*3.14/180)*getHeight()/4*3/2/2),                 ( (getHeight()/8+getHeight()/4*3)/3+getHeight()/4*3/2/2)-(int)(Math.sin( 360*count[0]/sum/2*3.14/180)*getHeight()/4*3/2/2));        g.setColor(Color.BLUE);        g.fillArc((getWidth()/10+getWidth()/7*6)/5*2, (getHeight()/8+getHeight()/4*3)/3, getHeight()/4*3/2,  getHeight()/4*3/2, (int)(count[0]+m)*360/sum, (int)(count[1]+m)*360/sum);         if                 ((getWidth()/10+getWidth()/7*6)/5*2+ getHeight()/4*3/2/2+80+(int)(Math.cos( (360*count[0]/sum+360*count[1]/sum/2)*3.14/180)*getHeight()/4*3/2/2)<(getWidth()/10+getWidth()/7*6)/5*2+getHeight()/4*3/2)        g.drawString("60-69分\n "+1000*count[1]/sum/10.0+"%", (getWidth()/10+getWidth()/7*6)/5*2+ getHeight()/4*3/2/2-80+(int)(Math.cos( (360*count[0]/sum+360*count[1]/sum/2)*3.14/180)*getHeight()/4*3/2/2),                 ( (getHeight()/8+getHeight()/4*3)/3+getHeight()/4*3/2/2-20)-(int)(Math.sin( (360*count[0]/sum+360*count[1]/sum/2)*3.14/180)*getHeight()/4*3/2/2));         else             g.drawString("60-69分\n "+1000*count[1]/sum/10.0+"%", (getWidth()/10+getWidth()/7*6)/5*2+ getHeight()/4*3/2/2+5+(int)(Math.cos( (360*count[0]/sum+360*count[1]/sum/2)*3.14/180)*getHeight()/4*3/2/2),                 ( (getHeight()/8+getHeight()/4*3)/3+getHeight()/4*3/2/2)-(int)(Math.sin( (360*count[0]/sum+360*count[1]/sum/2)*3.14/180)*getHeight()/4*3/2/2));        g.setColor(Color.RED);        g.fillArc((getWidth()/10+getWidth()/7*6)/5*2, (getHeight()/8+getHeight()/4*3)/3, getHeight()/4*3/2,  getHeight()/4*3/2, (int)(count[0]+m)*360/sum+(int)(count[1]+m)*360/sum, 360*count[2]/sum);        if                ((getWidth()/10+getWidth()/7*6)/5*2+ getHeight()/4*3/2/2+80+(int)(Math.cos( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum/2)*3.14/180)*getHeight()/4*3/2/2)<(getWidth()/10+getWidth()/7*6)/5*2+getHeight()/4*3/2)        g.drawString("70-79分\n "+1000*count[2]/sum/10.0+"%", (getWidth()/10+getWidth()/7*6)/5*2+ getHeight()/4*3/2/2-80+(int)(Math.cos( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum/2)*3.14/180)*getHeight()/4*3/2/2),                 ( (getHeight()/8+getHeight()/4*3)/3+getHeight()/4*3/2/2)-(int)(Math.sin( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum/2)*3.14/180)*getHeight()/4*3/2/2));        else            g.drawString("70-79分\n "+1000*count[2]/sum/10.0+"%", (getWidth()/10+getWidth()/7*6)/5*2+ getHeight()/4*3/2/2+5+(int)(Math.cos( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum/2)*3.14/180)*getHeight()/4*3/2/2),                 ( (getHeight()/8+getHeight()/4*3)/3+getHeight()/4*3/2/2)-(int)(Math.sin( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum/2)*3.14/180)*getHeight()/4*3/2/2));        g.setColor(Color.MAGENTA);        g.fillArc((getWidth()/10+getWidth()/7*6)/5*2, (getHeight()/8+getHeight()/4*3)/3, getHeight()/4*3/2,  getHeight()/4*3/2,(int)(count[0]+m)*360/sum+((int)(count[1]+m)*360/sum+(int)(count[2]+m)*360/sum), 360*count[3]/sum);         if                ((getWidth()/10+getWidth()/7*6)/5*2+ getHeight()/4*3/2/2+80+(int)(Math.cos( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum+360*count[3]/sum/2)*3.14/180)*getHeight()/4*3/2/2)<(getWidth()/10+getWidth()/7*6)/5*2+getHeight()/4*3/2)        g.drawString("80-89分\n "+1000*count[3]/sum/10.0+"%", (getWidth()/10+getWidth()/7*6)/5*2+ getHeight()/4*3/2/2-90+(int)(Math.cos( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum+360*count[3]/sum/2)*3.14/180)*getHeight()/4*3/2/2),                 ( (getHeight()/8+getHeight()/4*3)/3+getHeight()/4*3/2/2)-(int)(Math.sin( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum+360*count[3]/sum/2)*3.14/180)*getHeight()/4*3/2/2));         else             g.drawString("80-89分\n "+1000*count[3]/sum/10.0+"%", (getWidth()/10+getWidth()/7*6)/5*2+ getHeight()/4*3/2/2+5+(int)(Math.cos( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum+360*count[3]/sum/2)*3.14/180)*getHeight()/4*3/2/2),                 ( (getHeight()/8+getHeight()/4*3)/3+getHeight()/4*3/2/2+12)-(int)(Math.sin( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum+360*count[3]/sum/2)*3.14/180)*getHeight()/4*3/2/2));         g.setColor(Color.BLACK);        g.fillArc((getWidth()/10+getWidth()/7*6)/5*2, (getHeight()/8+getHeight()/4*3)/3, getHeight()/4*3/2,  getHeight()/4*3/2,(int)(count[0]+m)*360/sum+(int)(count[1]+m)*360/sum+(int)(count[2]+m)*360/sum+(int)(count[3]+m)*360/sum, (int)(count[4]+m)*360/sum);        if                ((getWidth()/10+getWidth()/7*6)/5*2+ getHeight()/4*3/2/2+80+(int)(Math.cos( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum+360*count[3]/sum+360*count[4]/sum/2)*3.14/180)*getHeight()/4*3/2/2)<(getWidth()/10+getWidth()/7*6)/5*2+getHeight()/4*3/2)        g.drawString(">=90分\n "+1000*count[4]/sum/10.0+"%", (getWidth()/10+getWidth()/7*6)/5*2-80+ getHeight()/4*3/2/2-90+(int)(Math.cos( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum+360*count[3]/sum+360*count[4]/sum/2)*3.14/180)*getHeight()/4*3/2/2),                 ( (getHeight()/8+getHeight()/4*3)/3+getHeight()/4*3/2/2)-(int)(Math.sin( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum+360*count[3]/sum+360*count[4]/sum/2)*3.14/180)*getHeight()/4*3/2/2));        else            g.drawString(">=90分\n "+1000*count[4]/sum/10.0+"%", (getWidth()/10+getWidth()/7*6)/5*2+ getHeight()/4*3/2/2+10+(int)(Math.cos( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum+360*count[3]/sum+360*count[4]/sum/2)*3.14/180)*getHeight()/4*3/2/2),                 ( (getHeight()/8+getHeight()/4*3)/3+getHeight()/4*3/2/2)-(int)(Math.sin( (360*count[0]/sum+360*count[1]/sum+360*count[2]/sum+360*count[3]/sum+360*count[4]/sum/2)*3.14/180)*getHeight()/4*3/2/2));        g.setColor(Color.BLACK);        g.drawString("成绩百分比", getWidth()/9*4, getHeight()/5);        g.setColor(Color.GREEN);        g.drawString("<60分", getWidth()/6*5, getHeight()/3);        g.setColor(Color.BLUE);        g.drawString("60-69分", getWidth()/6*5, getHeight()/15*6);        g.setColor(Color.RED);        g.drawString("70-79分", getWidth()/6*5, getHeight()/15*7);        g.setColor(Color.MAGENTA);        g.drawString("80-89分", getWidth()/6*5, getHeight()/15*8);        g.setColor(Color.BLACK);        g.drawString(">=90分", getWidth()/6*5, getHeight()/15*9);                g.setColor(Color.LIGHT_GRAY);        g.drawRect(getWidth()/4*3, getHeight()/15*4, getWidth()/5, getHeight()/26*10);        g.setColor(Color.GREEN);        g.fillRect(getWidth()/9*7, getHeight()/10*3,getHeight()/20,getHeight()/20 );        g.setColor(Color.BLUE);        g.fillRect(getWidth()/9*7, getHeight()/10*3+getHeight()/15,getHeight()/20,getHeight()/20 );        g.setColor(Color.RED);        g.fillRect(getWidth()/9*7, getHeight()/10*3+getHeight()/15*2,getHeight()/20,getHeight()/20 );        g.setColor(Color.MAGENTA);        g.fillRect(getWidth()/9*7, getHeight()/10*3+getHeight()/15*3,getHeight()/20,getHeight()/20 );        g.setColor(Color.BLACK);        g.fillRect(getWidth()/9*7, getHeight()/10*3+getHeight()/15*4,getHeight()/20,getHeight()/20 );             }}public void actionPerformed(ActionEvent e)    {        if(e.getSource()==jbExit){         k=0;         sum=0;         icount=0;         m=0;         for(int k=0;k<5;k++)             count[k]=0;            this.setVisible(false);        }    }}

⌨️ 快捷键说明

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