实现目的:
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还真是难用呀!