Java上机实验报告(1)

一、任务简要描述

1、实现Java版本的快速排序。

2、编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类Person,并作为学生数据操作类Student 和教师数据操作类Teacher 的基类。

3、请设计 3 个类 , 分别是学生类 Student, 本科生类Undergaduate, 研究生类 Postgraduate, 其中 Student 类是一个抽象类 , 它包含一些基本的学生信息如姓名、所学课程、课程成绩等 , 而Undergraduate 类和 Postgraduate 都是 Student 类的子类 , 它们之间的主要差别是计算课程成绩等级的方法有所不同 , 研究生的标准要比本科生的标准高一些。假设某班级里既有本科生也有研究生 , 请编写程序统计出全班学生的成绩等级并显示出来。此题关键是设计一个学生数组 , 既能存放本科生对象 , 又能存放研究生对象。

二、问题及解决

1、算法思想:基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(lo指向起始位置,hi指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就交换lo和hi位置的值,然后从前半部分开始扫秒,发现有元素大于基准点的值,就交换lo和hi位置的值,如此往复循环,直到lo>=hi,然后把基准点的值放到hi这个位置。一次排序就完成了。以后采用递归的方式分别对前半部分和后半部分排序,当前半部分和后半部分均有序时该数组就自然有序了。

排序过程:

输出结果:

2、

Person类:

 1 public class person {
 2     String name;
 3     String number;
 4
 5     person(){ }
 6     person(String number, String name){
 7         this.number = number;
 8         this.name = name;
 9     }
10     public void setNumber(String n){
11         number = n;
12     }
13     public String getNumber(){
14         return number;
15     }
16     public void setName(String c){
17         name = c;
18     }
19     public String getName(){
20         return name;
21     }
22     public void input(){
23         Scanner sc = new Scanner(System.in);
24         System.out.println("Please input the name:");
25         name = sc.nextLine();
26         System.out.println("Please input the number:");
27         number = sc.nextLine();
28     }
29     public void showInfo(){
30         System.out.println("The number is:" + getNumber() + ", name is:" + getName());
31     }
32 }

Teacher类:

 1 class Teacher extends person{
 2     String title;          //职称
 3     String dept;           //部门
 4     Teacher(){
 5         super();
 6     }
 7     Teacher(String number, String name, String title, String dept){
 8         super(number, name);
 9         this.title = title;
10         this.dept = dept;
11     }
12     public void setTitle(String t){
13         title = t;
14     }
15     public String getTitle(){
16         return title;
17     }
18     public void setDept(String d){
19         dept = d;
20     }
21     public String getDept() {
22         return dept;
23     }
24     //子类重载父类方法
25     public void input(){
26         super.input();
27         System.out.println("Please input the title:");
28         Scanner sc = new Scanner(System.in);
29         setTitle(sc.nextLine());
30         //title = sc.nextLine();
31         System.out.println("Please input the dept:");
32         dept = sc.nextLine();
33     }
34     public void showInfo(){
35         super.showInfo();
36         System.out.println("The teacher‘s title is:" + getTitle() + ", department is:" + getDept());
37     }
38 }

Student类:

 1 class Student extends person{
 2     String classnumber;          //班号
 3     int grade;           //成绩
 4     Student(){
 5         super();
 6     }
 7     Student(String number, String name, String classnumber, int grade){
 8         super(number, name);
 9         this.classnumber = classnumber;
10         this.grade = grade;
11     }
12     public void setClassnumber(String c){
13         classnumber = c;
14     }
15     public String getClassnumber(){
16         return classnumber;
17     }
18     public void setGrade(int g){
19         grade = g;
20     }
21     public int getGrade() {
22         return grade;
23     }
24     //子类重载父类方法
25     public void input(){
26         super.input();
27         System.out.println("Please input the classnumber:");
28         Scanner sc = new Scanner(System.in);
29         setClassnumber(sc.nextLine());
30         //classnumber = sc.nextLine();
31         System.out.println("Please input the grade:");
32         grade = sc.nextInt();
33     }
34     public void showInfo(){
35         super.showInfo();
36         System.out.println("The student‘s classnumber is:" + getClassnumber() + ", grade is:" + getGrade());
37     }
38 }

输出结果:

3、

对象数组:

1 Student[] students = new Student[5];

Student类:

 1 public abstract class Student
 2 {
 3     String name;
 4     String type;
 5     int courseScore;
 6     String courseGrade;
 7
 8     public Student(String name)
 9     {
10         this.name = name;
11         courseGrade="";
12     }
13
14     public abstract void calculateGrade();
15
16     public String getName()
17     {
18         return name;
19     }
20
21     public String getType()
22     {
23         return type;
24     }
25
26     public String getCourseGrade()
27     {
28         return courseGrade;
29     }
30
31     public int getCourseScore()
32     {
33         return courseScore;
34     }
35
36     public void setName(String name)
37     {
38         this.name = name;
39     }
40
41     public void setType(String type)
42     {
43         this.type = type;
44     }
45
46     public void setCourseScore(int courseScore)
47     {
48         this.courseScore = courseScore;
49     }
50
51 }

本科生类:

 1 class Undergraduate extends Student
 2 {
 3     public Undergraduate(String name, int courseScore)
 4     {
 5         super(name);
 6         type = "本科生";
 7         this.courseScore = courseScore;
 8     }
 9
10     public void calculateGrade()
11     {
12         if (courseScore >= 80 && courseScore < 100) courseGrade = "优秀";
13         else if (courseScore >= 70 && courseScore < 80) courseGrade = "良好";
14         else if (courseScore >= 60 && courseScore < 70) courseGrade = "一般";
15         else if (courseScore >= 50 && courseScore < 60) courseGrade = "及格";
16         else courseGrade = "不及格";
17
18     }
19 }

研究生类:

 1 class Postgraduate extends Student
 2 {
 3     public Postgraduate(String name, int courseScore)
 4     {
 5         super(name);
 6         type = "研究生" ;
 7         this.courseScore = courseScore;
 8     }
 9     public void calculateGrade()
10     {
11         if (courseScore >= 90 && courseScore < 100) courseGrade = "优秀";
12         else if (courseScore >= 80 && courseScore < 90) courseGrade = "良好";
13         else if (courseScore >= 70 && courseScore < 80) courseGrade = "一般";
14         else if (courseScore >= 60 && courseScore < 70) courseGrade = "及格";
15         else courseGrade = "不及格";
16
17     }
18 }
19  

成绩计算类:

 1 public class Polymorphism
 2 {
 3     int total = 0;
 4     double average;
 5
 6     public void showInfo(){
 7         Student[] students = new Student[5];
 8
 9         students[0] = new Undergraduate("ABC", 95);
10         students[1] = new Undergraduate("DEF", 85);
11         students[2] = new Postgraduate("GHI", 75);
12         students[3] = new Undergraduate("JKL", 65);
13         students[4] = new Postgraduate("MNO", 55);
14         for (int i=0; i<5; i++)
15         {
16             total += students[i].courseScore;
17             students[i].calculateGrade();
18         }
19         average = total / 5;
20         System.out.println("姓名" + "     类型" +"    成绩");
21         System.out.println("-----------------------");
22
23         for (int i=0; i<5; i++)
24         {
25             System.out.println(students[i].getName( )+" "+students[i].getType( )+"  "+students[i].getCourseGrade( ));
26         }
27
28         //Student st = new Student("李明");
29         System.out.println("平均成绩:" + average);
30         System.out.println();
31         for(int i=0; i<5; i++)
32         {
33             if(students[i] instanceof Undergraduate )
34             {
35                 System.out.println(students[i].getName()+"是本科生");
36             }
37             else
38             {
39                 System.out.println(students[i].getName()+"是研究生");
40             }
41         }
42     }
43     public static void main(String[] args)
44     {
45         Polymorphism show = new Polymorphism();
46         show.showInfo();
47
48     }
49 }

输出结果:

总结:

  练习使用了创建对象数组的方法,使用面向对象的思想,子类继承父类的属性和方法,并对父类的方法进行重写,在题目三中,我本来将计算成绩的内容全部写在main方法里,经过老师讲解,我重新修改了程序,将创建对象数组和成绩计算的相关程序单独写在一个类里面。

原文地址:https://www.cnblogs.com/ku1274755259/p/11108532.html

时间: 2024-10-14 12:42:32

Java上机实验报告(1)的相关文章

Java上机实验报告(2)

一.任务简要描述 java中多种方式读写文件 1.按字节读写文件内容 2.按字符读写文件内容 3.按行读写文件内容 4.随机读写文件内容 流是一个抽象的概念.当Java程序需要从数据源读取数据时,会开启一个到数据源的流.数据源可以是文件,内存或者网络等.同样,当程序需要输出数据到目的地时也一样会开启一个流,数据目的地也可以是文件.内存或者网络等.流的创建是为了更方便地处理数据的输入输出. 二.问题及解决 3.1运行结果 Test1 Test2 Test3 3.2&3.3运行结果 3.2 3.3

微机接口技术与汇编语言上机实验报告_汇编初步(intel8086)

实验环境:intel x386 一.要求:将3000H单元开始置数为00H-0FH SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE, SS:SSTACK START: PUSH DS XOR AX, AX MOV DS, AX MOV SI, 3000H MOV CX, 16 AA1: MOV [SI], AL INC SI INC AL LOOP AA1 ;CX == 0? NEXT():AA1

20145307第五次JAVA学习实验报告

20145307<Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 实验名称: 一.实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传送给客户端 4.客户端用RSA公钥密码中服务器的私钥解密DES的,秘钥,用秘钥对密文进行解密,得出

20145307第三次JAVA学习实验报告

20145307 <Java程序设计>第三次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.22 实验名称:敏捷开发与XP实践 一.实验内容 XP基础 XP核心实践 相关工具 二.实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查

20145307第二次JAVA学习实验报告

20145307<Java程序设计>实验报告二:Java面向对象程序设计 实验要求 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验内容 一.单元测试 1.三种代码 伪代码:以简洁的自然语言表明设计步骤 百分制转五分制: 如果成绩小于60,转成“不及格” 如果成绩在60与70之间,转成“及格” 如果成绩在70与80之间,转成“中等” 如果成绩在80与90之间,转成“良好” 如果成绩在90

java 第一次实验报告

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计 班级:1353  姓名:黎静  学号:20135338 成绩:             指导教师:娄嘉鹏      实验日期:2015.4.14 实验密级:         预习程度:         实验时间: 仪器组次:          必修/选修:            实验序号: 实验名称:       Java开发环境的熟悉 实验目的与要求:实验内容1.使用JDK编译.运行简单的Java程序

Java第一次实验报告——Java开发环境的熟悉

北京电子科技学院(BESTI) 实    验    报    告 课程名称:java程序设计实验      班级:1352         姓名:洪韶武      学号:20135219 成绩:                           指导教师:娄嘉鹏                    实验日期:2015.04.14 实验密级:                    预习程度:                               实验时间: 仪器组次:          

JAVA课程实验报告 实验二 JAVA面向对象程序设计

课程:Java程序设计  班级:1352  姓名:黄伟业  学号:20135315 成绩:             指导教师:娄嘉鹏    实验日期:2015.5.7 实验密级:         预习程度:         实验时间:15:50--20:50 仪器组次:         必修/选修: 选修            实验序号:2 实验目的: 1.掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了

Java第一次实验报告

北京电子科技学院(BESTI) 实     验    报     告 课程:Java实验   班级:201352     姓名:池彬宁  学号:20135212 成绩:             指导教师:娄佳鹏   实验日期:15.04.14 实验密级:         预习程度:             实验时间: 仪器组次:          必修/选修:选修          实验序号:1 实验名称:     Java开发环境的熟悉 实验目的与要求:1.使用JDK编译.运行简单的Java程