您的位置:首页 > 其它

一个学生成绩管理程序

2008-01-16 10:20 357 查看
实现目的:

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还真是难用呀!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐