一个学生成绩管理程序

实现目的:

1、增加学生对象(学号、姓名、成绩)

2、删除学生对象

3、修改成绩

4、平均成绩

5、分别打出优秀,良、中等、不及格人数的百分比

6、查询学生

 

package studentapplication;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Iterator;

class Studentinfo{

   private  String stunum;
   private  String name;
   private  double score;

   public Studentinfo(String stunum,String name){
       this.stunum = stunum;
       this.name = name;
   }

   public Studentinfo(){

   }

   public String getstunum(){
       return stunum;
   }

   public String getname(){
       return name;
   }

   public double getscore(){
       return score;
   }

   public void setscore(double sc){
       this.score = sc;
   }
}

class Studentinfooper extends Studentinfo{

    HashMap hs = new HashMap();

    public Studentinfooper()
    {

    }

    public Studentinfooper (String s,String n)
    {
        super(s,n);

    }

    public void addstudentmap(String stunum,Object o){
        hs.put(stunum,o);


    }

    public void addstudentinfo(){
       Boolean out = true;

       while(out)
       {
           System.out.println("请输入学号、姓名");
           System.out.print("学号:");
           Scanner s = new Scanner(System.in);
           String stunum = s.next();
           System.out.print("姓名:");
           Scanner n = new Scanner(System.in);
           String name = n.next();
           Studentinfooper newstu1 = new Studentinfooper(stunum,name);
           this.addstudentmap(stunum,newstu1);
           out = this.out();
       }


    }
    public void display(){
        System.out.println("显示所有学生信息:");

        for(Object o : hs.keySet())
        {
            Studentinfo s = (Studentinfo)hs.get(o);

            System.out.println("学号:" + s.getstunum() + "/t姓名:" + s.getname() + "/t成绩" + s.getscore());

        }
    }

    public void delstudeninfo(){
    Boolean out = true;
        while(out){
            System.out.print("请输入你要删除的学号:");
            Scanner s = new Scanner(System.in);
            String stunum = s.next();
            hs.remove(stunum);
            display();
            out = out();
        }
      }

    public void editscore(){
       Boolean out = true;

       while(out)
       {
           Boolean find = false;
           System.out.print("请输入你要修改成绩姓名:");
           Scanner s = new Scanner(System.in);
           String stuname = s.next();

           for(Object o : hs.keySet())
           {

               Studentinfo stu = (Studentinfo)hs.get(o);

               if (stu.getname().equals(stuname)){
                  System.out.println("学号:" + stu.getstunum() + "/t姓名:" + stu.getname() + "/t成绩" + stu.getscore());
                  System.out.print("请输入你要修改的成绩:");
                  Scanner score = new Scanner(System.in);

                  stu.setscore(score.nextDouble());
                  hs.put(stu.getstunum(),stu);
                  find = true;

               }
           }
           if (find == false)
               System.out.println("没有找到该姓名的学生!");
          out = out();
       }
    }

    public void stuavg(){

        double avg = 0;

        for(Object o : hs.keySet()){
             Studentinfo s = (Studentinfo)hs.get(o);
             avg = avg + s.getscore();
         }

        System.out.println("平均成绩:" + avg/hs.size());
    }

    public void displaystuinfo(){
        display();
        System.out.println("显示优秀、良好、中等、不及格的百分比:");
        int y=0,l=0,z=0,b=0;

        for(Object o : hs.keySet())
         {
             Studentinfo s = (Studentinfo)hs.get(o);
             if (s.getscore() >=90)
                 y++;
             else if (s.getscore() >= 75 && s.getscore() <= 89)
                 l++;
             else if (s.getscore() >= 60 && s.getscore() <= 74)
                 z++;
             else
                 b++;
         }

         System.out.println("优秀人数为:" + y*1.0/hs.size()*100 + "%");
         System.out.println("良好人数为:" + l*1.0/hs.size()*100 + "%");
         System.out.println("中等人数为:" + z*1.0/hs.size()*100 + "%");
         System.out.println("不及格人数为:" + b*1.0/hs.size()*100 + "%");
    }

    public void findscore(){
       Boolean out = true;

       while(out)
       {
           Boolean find = false;
           System.out.print("请输入你要查询的学号:");
           Scanner sn = new Scanner(System.in);
           String stunum = sn.next();

           for (Object o : hs.keySet()) {
               Studentinfo s = (Studentinfo) hs.get(o);
               if (s.getstunum().equals(stunum))
               {
                   System.out.println("学号:" + s.getstunum() + "/t姓名:" +
                                      s.getname() + "/t成绩" + s.getscore());
                   find = true;
               }

           }
           if (find == false)
               System.out.println("没有找到!");
           out = out();
       }
    }

    public Boolean out(){
            System.out.print("是否退出?(Y/N):");
            Scanner o = new Scanner(System.in);
            String ifnoout = o.next();
            if (ifnoout.equals("Y") || ifnoout.equals("y"))
              return false;
           else
               return true;

    }

}

public class StudentResultManageClass {
    public StudentResultManageClass() {

    }
    public static void main(String[] args) {
       Studentinfooper newstu = new Studentinfooper();
        newstu.addstudentinfo();
        newstu.display();
        newstu.delstudeninfo();
        newstu.editscore();
        newstu.stuavg();
        newstu.displaystuinfo();
        newstu.findscore();

 

    }
}

 

刚学JAVA才一个月左右,发现写程序还是有点困难,虽然最终还是写出来了,但是时间却用了许多

还有许多地方都感觉到不足,这个程序让我学到3个方面,一个是同一对象的数据是不同的空间,而方

法是同一空间,Hashmap PUT个同一键,而内容不同覆盖原来的键,还有remove()删除要什么同步性

一直搞不清楚,真够菜的,最后一点是好像忘了饿,昨晚还记得起来的,郁闷。从ECLIPSE到

JBUILDER2006发现JBULIDER2006还真是难用呀!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值