高分求两个简单的JAVA设计源代码

问题一(要求):1、类与对象的基础题:完成下面父类及子类的声明,声明测试类完成对多类性的测试(1)声明Student类。属性包括学号、姓名、英语成绩、数字成绩、计算机成绩... 问题一(要求):
1、 类与对象的基础题:完成下面父类及子类的声明,声明测试类完成对多类性的测试
(1) 声明Student类。
属性包括学号、姓名、英语成绩、数字成绩、计算机成绩和总成绩。
方法包括构造方法、get方法、set方法、toString方法、equals方法、compare方法(比较两个学生的总成绩,结果分大于,小于、等于)、sum方法(计算总成绩)、和testScore方法(计算评测成绩:评测成绩可以取三门课成绩的平均分,另外任何一门课的成绩的改变都需要对总成绩进行重新计算,因此,在每一个set方法中应调用sum方法计算总成绩。)
(2) 声明StudentXW(学习委员)类为Student类的子类。
在StudentXW类中增加责任属性,并重写testScore方法(计算评测成绩,评测成绩=三门课的平均分+3)。
(3) 声明StudentBZ(班长)类为Student类的子类。
在StudentBZ类中增加责任属性,并重写testScore方法(计算评测成绩,评测成绩=三门课的平均分+5)。
(4)声明测试类
生成若干个Student类、StudentXW类及StudentBZ类对象,并分别计算它们的评测成绩。
声明Student类的数组(含5个元素),生成五个对象存入数组:其中三个Student类的对象、一个StudentXW类的对象、一个StudentBZ类的对象。将方法testScore()发送给数组的每一个元素,输出结果,并分析具体执行的是哪一个类中的方法。

问题二(要求)
多线程的同步控制与线程间的通信:用synchronized、wait()和notifyAll()完成以下情景
模拟3个人排队买票,每人买一张票。售票员(TicketSeller类)只有1张5元的钱,电影票5元一张。张某拿着1张20元的人民币排在第一,孙某拿着1张10元的人民币排在第二,赵某拿着1张5元的人民币排在第三。
(提示:定义一个售票员TicketSeller类,属性包括5元钱张数fiveNumber、10元钱张数tenNumber和20元钱张数twentyNumber,方法为同步方法卖票sellTicket(int receiveMoney), 创建三个线程张某Zhang、孙某Sun和赵某Zhao,这三个线程共享一个售票员类对象。)

注:两题只选其一即可,只要源代码和简单的注释。代码急用
,谢谢!
展开
 我来答
百度网友0de4684d5
2009-04-11 · TA获得超过241个赞
知道小有建树答主
回答量:167
采纳率:66%
帮助的人:163万
展开全部
上面 wuzhikun12同学写的不错,但我想还不能运行,并且还不太完善。我给个能运行的:(注意:文件名为:Test.java)

//要实现对象间的比较,就必须实现Comparable接口,它里面有个compareTo方法
//Comparable最好使用泛型,这样,无论是速度还是代码量都会减少
@SuppressWarnings("unchecked")
class Student implements Comparable<Student>{

private String studentNo; //学号
private String studentName; //姓名
private double englishScore; //英语成绩
private double computerScore; //计算机成绩
private double mathScore; //数学成绩
private double totalScore; //总成绩

//空构造函数
public Student() {}

//构造函数
public Student(String studentNo,String studentName,double englishSocre,double computerScore,double mathScore) {
this.studentNo = studentNo;
this.studentName = studentName;
this.englishScore = englishSocre;
this.computerScore = computerScore;
this.mathScore = mathScore;
}

//计算总成绩
public double sum() {

this.totalScore = englishScore+computerScore+mathScore;
return totalScore;
}

//计算评测成绩
public double testScore() {

return sum()/3;
}

//实现compareTO方法
@Override
public int compareTo(Student student) {
double studentTotal = student.getTotalScore();
return totalScore==studentTotal?0:(totalScore>studentTotal?1:-1);
}

//重写toString方法
public String toString(){
return "学号:"+this.getStudentNo()+" 姓名:"+this.getStudentName()+" 英语成绩:"+this.getEnglishScore()+" 数学成绩:"+this.getMathScore()+" 计算机成绩:"+this.getComputerScore()+" 总成绩:"+this.getTotalScore();
}

//重写equals方法
public boolean equals(Object obj) {
if(obj == null){
return false;
}
if(!(obj instanceof Student)){
return false;
}
Student student = (Student)obj;
if(this.studentNo.equals(student.getStudentName())) { //照现实来说,比较是不是同一个学生,应该只是看他的学号是不是相同
return true;
} else {
return false;
}

}

/*以下为get和set方法,我个人认为,totalScore的set的方法没必要要,因为它是由其它成绩计算出来的
在set方法中,没设置一次值,调用一次sum方法,即重新计算总成绩
*/
public String getStudentNo() {
return studentNo;
}
public void setStudentNo(String studentNo) {
this.studentNo = studentNo;
sum();
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
sum();
}
public double getEnglishScore() {
return englishScore;
}
public void setEnglishScore(double englishScore) {
this.englishScore = englishScore;
sum();
}
public double getComputerScore() {
return computerScore;
}
public void setComputerScore(double computerScore) {
this.computerScore = computerScore;
sum();
}
public double getMathScore() {
return mathScore;
}
public void setMathScore(double mathScore) {
this.mathScore = mathScore;
sum();
}
public double getTotalScore() {
return totalScore;
}

}

//Student子类学习委员类的实现
class StudentXW extends Student {

//重写父类Student的testScore()方法
@Override
public double testScore() {
return sum()/3+3;
}

public StudentXW() {}

//StudentXW的构造函数
public StudentXW(String studentNo,String studentName,double englishSocre,double computerScore,double mathScore) {
super(studentNo,studentName,englishSocre,computerScore,mathScore);
}
}

//Student子类班长类的实现
class StudentBZ extends Student {

//重写父类Student的testScore()方法
@Override
public double testScore() {
return sum()/3+5;
}

public StudentBZ() {}

//StudentXW的构造函数
public StudentBZ(String studentNo,String studentName,double englishSocre,double computerScore,double mathScore) {
super(studentNo,studentName,englishSocre,computerScore,mathScore);
}
}

//测试类
public class Test {

public static void main(String[] args) {

//生成若干个student类、StudentXW类、StudentBZ类
Student student1 = new Student("s001","张三",70.5,50,88.5);
Student student2 = new Student("s002","李四",88,65,88.5);
Student student3 = new Student("s003","王五",67,77,90);
StudentXW student4 = new StudentXW("s004","李六",99,88,99.5);
StudentBZ student5 = new StudentBZ("s005","朱漆",56,65.6,43.5);

Student[] students = {student1,student2,student3,student4,student5};

for(int i = 0 ; i<students.length; i++){
double avgScore = students[i].testScore();
System.out.println(students[i].getStudentName()+"学生的评测成绩为:"+ avgScore+"分");
}

}
}
运行结果为:
张三学生的评测成绩为:69.66666666666667分
李四学生的评测成绩为:80.5分
王五学生的评测成绩为:78.0分
李六学生的评测成绩为:98.5分
朱漆学生的评测成绩为:60.03333333333333分
匿名用户
2009-04-10
展开全部
wuzhikun12真好人,他的代码,我看过了,基本上是没有问题的,LZ可以试一下。还有,三四楼的要教孩子自己回家教去吧,这里是百度知道,不是百度说教。人家能问出来,自然有人家的道理,你不会或者不想答,就一边去嘛。说那么废话干吗?不就回个帖赚两分嘛。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuzhikun12
2009-04-09 · TA获得超过880个赞
知道小有建树答主
回答量:931
采纳率:0%
帮助的人:454万
展开全部
我写的是第一题,不知道行不行。
代码写在一个Java文件中:

import java.util.*;

public class Student implements Comparator
{
private String stuNo; //学号
private String name; //姓名
private double engScore; //英语成绩
private double mathScore; //数学成绩
private double comScore; //计算机成绩
private double sum; //总成绩

//计算评测成绩
public double testScore(){
return (this.getEngScore()+this.getMathScore()+this.getComScore())/3;
}
//计算总成绩
public double sum(){
return this.getEngScore()+this.getMathScore()+this.getComScore();
}
//实现compare方法
public int compare(Object object1,Object object2){
Student student1 = (Student)object1;
Student student2 = (Student)object2;

return student1.getSum() > student2.getSum() ? 1 : student1.getSum() < student2.getSum() ? -1 : 0 ;
}
//重写toString方法
public String toString(){
return "学号:"+this.getStuNo()+" 姓名:"+this.getName()+" 英语成绩:"+this.getEngScore()+" 数学成绩:"+this.getMathScore()+" 计算机成绩:"+this.getComScore()+" 总成绩:"+this.getSum();
}

//重写equals方法
public boolean equals(Object object){
if(object == null){
return false;
}
if(!(object instanceof Student)){
return false;
}
Student student = (Student)object;
if(student.getStuNo().equals(this.getStuNo()) && student.getName().equals(this.getName()) && student.getEngScore() == this.getEngScore() && student.getMathScore() == this.getMathScore() && student.getComScore() == this.getComScore() && student.getSum() == this.getSum()){
return true;
}
return true;
}
//getter和setter方法
public void setStuNo(String stuNo){
this.stuNo = stuNo;
}
public void setName(String name){
this.name = name;
}
public void setEngScore(double engScore){
this.engScore = engScore;
this.sum = this.sum();
}
public void setMathScore(double mathScore){
this.mathScore = mathScore;
this.sum = this.sum();
}
public void setComScore(double comScore){
this.comScore = comScore;
this.sum = this.sum();
}
public void setSum(double sum){
this.sum = sum;
}

public String getStuNo(){
return stuNo;
}
public String getName(){
return name;
}
public double getEngScore(){
return engScore;
}
public double getMathScore(){
return mathScore;
}
public double getComScore(){
return comScore;
}
public double getSum(){
return sum;
}

//无参构造方法
public Student(){}
//有参构造方法
public Student(String stuNo,String name,double engScore,double mathScore,double comScore){
this.stuNo = stuNo;
this.name = name;
this.engScore = engScore;
this.mathScore = mathScore;
this.comScore = comScore;
}
public Student(String stuNo,String name,double engScore,double mathScore,double comScore,double sum){
this(stuNo,name,engScore,mathScore,comScore);
this.sum = sum;
}
}

//班长子类
class StudentBZ extends Student
{
private String duty;//责任

public StudentBZ(){}
public StudentBZ(String stuNo,String name,double engScore,double mathScore,double comScore){
super(stuNo,name,engScore,mathScore,comScore);
}
public StudentBZ(String stuNo,String name,double engScore,double mathScore,double comScore,double sum){
super(stuNo,name,engScore,mathScore,comScore,sum);
}

public String getDuty(){
return duty;
}
public void setDuty(String duty){
this.duty = duty;
}
//重写testScore方法
public double testScore(){
return (this.getEngScore()+this.getMathScore()+this.getComScore())/3 + 5;
}
}

//学委子类
class StudentXW extends Student
{
private String duty;//责任

public String getDuty(){
return duty;
}
public void setDuty(String duty){
this.duty = duty;
}

public StudentXW(String stuNo,String name,double engScore,double mathScore,double comScore){
super(stuNo,name,engScore,mathScore,comScore);
}
public StudentXW(String stuNo,String name,double engScore,double mathScore,double comScore,double sum){
super(stuNo,name,engScore,mathScore,comScore,sum);
}
//重写testScore方法
public double testScore(){
return (this.getEngScore()+this.getMathScore()+this.getComScore())/3 + 3;
}
}

//测试类
class Test
{
public static void main(String[] args){
//Student(String stuNo,String name,double engScore,double mathScore,double comScore,double sum)
//生成若干个student类、StudentXW类、StudentBZ类
Student student1 = new Student("s001","张三",70.5,50,88.5);
Student student2 = new Student("s002","李四",88,65,88.5);
Student student3 = new Student("s003","王五",67,77,90);
StudentXW student4 = new StudentXW("s004","李六",99,88,99.5);
StudentBZ student5 = new StudentBZ("s005","朱漆",56,65.6,43.5);

Student[] students = {student1,student2,student3,student4,student5};

for(int i = 0 ; i<students.length; i++){
double avgScore = students[i].testScore();
System.out.println("第"+(i+1)+"个学生的评测成绩为:"+ avgScore+"分");
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-04-10
展开全部
同意楼上的,强烈建议把分数给wuzhikun12,不管他对不对都好,人家有这份心就已经很难得了!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
东方日出席边郁
2009-04-10 · 超过31用户采纳过TA的回答
知道答主
回答量:137
采纳率:0%
帮助的人:0
展开全部
楼上回答很有道理,很负责任。虽然分数很诱惑,但是不想给你写。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 4条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式