• Java----模拟学生成绩管理系统


    三.模拟学生成绩管理系统

    1.创建抽象Person类:

    属性:

            姓名;

            年龄

    方法:

            构造方法 get() and set()

            抽象方法:显示信息

    2.创建学生类Student,继承Person类:

            属性:

                    学号;

                    入学日期

            方法:

                    构造方法:学号使用static关键字来添加。

                    get() and set()

                    显示信息

    3.创建教师类Teacher,继承Person类:

            属性:

                    工号

            方法:

                    构造方法

                    get() and set()

                    显示信息

    4.创建测试类Test:

            多态的使用:

                    创建两个Person对象,一个引用Teacher对象,另 一个引用Student对象,调用她们的显示信息方法。

                    创建两个Student对象,存放在同一数组中,然后输出数组元素 的每一个显示信息方法。

    四.继续完善学生成绩管理系统

    1.创建Score类,用来存放课程信息:

            属性:

                    课程号;

                    课程名;

                    分数(跟学生有关,构造时为默认值)

            方法:

                    构造方法

                    get() and set()

                    显示信息

    2.创建GetScore接口,用来给学生上成绩:

            方法:

                    setStudentScore,传入学生和分数两个

    3.修改学生Student类:

            属性:

                    添加课程数组,

                    数据元素为2即可。

            方法:

                    打印学生成绩方法:

                    显示学生姓名和学生的所有课程成绩

                    添加设置值的方法:setStudentResult(int i,double result) 给当前第i个课程赋分数。

                    给课程数组添加get()和set()方法

    4.修改教师Teacher类,实现GetScore接口:

            属性:

                    添加课程号属性

            方法:

                    显示信息:

                    添加显示课程号

                    给课程号添加get()和set()方法

                    实现setStudentScore方法:给传递的学生的课程上成绩

    5.修改测试类Test:

            创建两个学生

            创建两个教师,分别给老师设置不同的课程。

            创建两门课程,根据老师课程设置课程,然后传给学生。

            老师给学生上成绩

            显示学生成绩 

    父类:Person

    1. public abstract class Person {
    2. //属性
    3. private String name;//姓名
    4. private int age;//年龄
    5. //方法
    6. //显示信息
    7. public abstract void printMessage();
    8. //空构造
    9. public Person() {
    10. }
    11. //满构造
    12. public Person(String name, int age) {
    13. this.name = name;
    14. this.age = age;
    15. }
    16. //get() set()
    17. public String getName() {
    18. return name;
    19. }
    20. public void setName(String name) {
    21. this.name = name;
    22. }
    23. public int getAge() {
    24. return age;
    25. }
    26. public void setAge(int age) {
    27. this.age = age;
    28. }
    29. }

     子类:Student

    1. import javax.print.attribute.standard.NumberOfDocuments;
    2. import java.text.DateFormat;
    3. import java.text.SimpleDateFormat;
    4. import java.util.Date;
    5. public class Student extends Person {
    6. //Student类继承Person
    7. //属性
    8. private int sid; //学号
    9. private String date;//日期
    10. private Score[] scores = new Score[2]; //成绩
    11. //static 变量
    12. public static int NumberOfStudent=0;
    13. //显示信息方法
    14. public void printMessage(){
    15. System.out.println("姓名:" +super.getName() + ",年龄是:" + super.getAge()
    16. +",学号是 :" + this.sid+ ",入学日期是:" + this.date);
    17. }
    18. //显示成绩方法
    19. public void printStudentScore(){
    20. System.out.println("姓名:"+super.getName());
    21. //使用父类的方法需要使用super.+方法获取
    22. for (int i = 0; i < this.scores.length; i++) {
    23. this.scores[i].printMessage();
    24. System.out.println(this.scores[i].getResult());
    25. }
    26. }
    27. //输入学生成绩的方法
    28. public void setStudentResult(int i,double result){
    29. this.scores[i].setResult(result);
    30. }
    31. //空构造
    32. public Student(){
    33. this.sid=++NumberOfStudent; //学号
    34. Date d=new Date();
    35. //Date类中的Date()方法可以获取现在的日期及时间
    36. DateFormat df =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    37. this.date=df.format(d);//空构造也需要获取日期
    38. }
    39. public Student(String name, int age) {
    40. super(name, age);
    41. this.sid = sid;
    42. Date d=new Date();
    43. DateFormat df =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置具体的格式MM(月)和mm(分钟)需要区分
    44. //DateFormat类是一个时间格式的类,SimpleDateFormat是DateFormat的子类(多态)
    45. //创建一个父类的子类,这样就能使用父类和子类的方法和属性
    46. this.date=df.format(d);
    47. //调用format()方法使时间的格式变成合适我们的格式,且类型变成String类型
    48. this.sid=++NumberOfStudent;
    49. }
    50. public int getSid() {
    51. return sid;
    52. }
    53. public String getDate() {
    54. return date;
    55. }
    56. public Score[] getScores() {
    57. return scores;
    58. }
    59. public void setScores(Score[] scores) {
    60. this.scores = scores;
    61. }
    62. }

    子类:Teacher

    1. public class Teacher extends Person{
    2. //属性
    3. private int tid; //工号
    4. private int scid //课程号
    5. //显示信息
    6. @Override
    7. public void printMessage() {
    8. System.out.println("姓名:" +super.getName() + ",年龄是:" + super.getAge()
    9. +",教师工号是 :" + this.tid+"所授课程为:"+this.scid);
    10. }
    11. //空构造
    12. public Teacher(){
    13. }
    14. //满构造
    15. public Teacher(String name, int age, int tid) {
    16. super(name, age);
    17. this.tid = tid;
    18. }
    19. //get() 和 set()
    20. public int getTid() {
    21. return tid;
    22. }
    23. public void setTid(int tid) {
    24. this.tid = tid;
    25. }
    26. public int getScid() {
    27. return scid;
    28. }
    29. public void setScid(int scid) {
    30. this.scid = scid;
    31. }
    32. }

     学生成绩类

    1. public class Score {
    2. //属性
    3. private int said; //课程号
    4. private String name;//课程名
    5. private double result=0;//成绩
    6. //方法
    7. public void printMessage(){
    8. System.out.println("课程号:"+ this.said +",名字是:"+this.name);
    9. }
    10. //空构造
    11. public Score(){
    12. }
    13. //满构造
    14. public Score(int said, String name) {
    15. this.said = said;
    16. this.name = name;
    17. }
    18. //get() 和 set()
    19. public int getSaid() {
    20. return said;
    21. }
    22. public void setSaid(int said) {
    23. this.said = said;
    24. }
    25. public String getName() {
    26. return name;
    27. }
    28. public void setName(String name) {
    29. this.name = name;
    30. }
    31. public double getResult() {
    32. return result;
    33. }
    34. public void setResult(double result) {
    35. this.result = result;
    36. }
    37. }

    接口:设置学生成绩

    1. public interface GetScore {
    2. public void setStudentScoore(Student student,double result);
    3. }

     测试类1

    1. import java.util.Scanner;
    2. public class Test {
    3. public static void main(String[] args) {
    4. // Person person1=new Teacher("岳不群",58,1);
    5. // Person person2=new Student("令狐冲",28);
    6. // person1.printMessage();
    7. // person2.printMessage();
    8. // }
    9. // public static void printPersonMessage(Person p) {
    10. // p.printMessage();
    11. //
    12. // Student student1=new Student("令狐冲",25);
    13. // Student student2=new Student("岳灵珊",18);
    14. // Student[] students=new Student[2];
    15. // students[0]=student1;
    16. // students[1]=student2;
    17. // for (int i = 0; i < students.length; i++) {
    18. // students [i].printMessage();
    19. //输出student类型数组的对象
    20. // }
    21. Student[] students = new Student[2];
    22. students[0] = new Student("令狐冲", 25);
    23. students[1] = new Student("岳灵珊", 18);
    24. for (int i = 0; i < students.length; i++) {
    25. students[i].printMessage();
    26. }
    27. }
    28. }

    测试类2

    1. import java.util.Scanner;
    2. public class Test {
    3. public static void main(String[] args) {
    4. Student[] students = new Student[2];
    5. Student students1 = new Student("令狐冲", 25);
    6. Student students2 = new Student("岳灵珊", 18);
    7. Teacher teacher1= new Teacher("左冷禅",40,1);
    8. teacher1.setScid(1);
    9. Teacher teacher2= new Teacher("岳不群",40,2);
    10. teacher2.setScid(2);
    11. Score score1 = new Score(1,"操作系统");
    12. Score score2 = new Score(2,"编译原理");
    13. Score[] scores1 = new Score[2];
    14. scores1[0]=score1;
    15. scores1[1]=score2;
    16. students1.setScores(scores1);
    17. //student2赋值
    18. Score score3 = new Score(1,"操作系统");
    19. Score score4 = new Score(2,"编译原理");
    20. Score[] scores2 = new Score[2];
    21. scores2[0]=score3;
    22. scores2[1]=score4;
    23. students2.setScores(scores2);
    24. teacher1.setStudentScore(students1, 70);
    25. teacher1.setStudentScore(students2, 80);
    26. teacher2.setStudentScore(students1, 89);
    27. teacher2.setStudentScore(students2, 85);
    28. students1.printStudentScore();
    29. students2.printStudentScore();
    30. }
    31. }
  • 相关阅读:
    [moeCTF 2023] crypto
    【Python实战】听书就用它了:海量资源随便听,内含几w书源,绝对精品哦~(好消息好消息)
    [附源码]计算机毕业设计基于springboot的残障人士社交平台
    【Linux】CentOS-6.8超详细安装教程
    【C# 基础精讲】抽象类与接口
    Spring注解解析 | P/C命名空间
    【SOLIDWORKS学习笔记】制作小风扇摇头底座(下)--- 细节优化
    智慧环保-污水处理远程监控解决方案
    java毕业设计儿童疫苗接种提醒系统小程序服务端Mybatis+系统+数据库+调试部署
    SpringMVC获取请求参数
  • 原文地址:https://blog.csdn.net/m0_56501550/article/details/127624513