COSC0022 Java 语言与应用

Auth:admin       Date:2024/06/27       Cat:大二       Word:共4057字       Views:288

授课教师:刘嘉欣

考试时间:2024-01-05

个人课程学习情况

总评成绩:96

这门课程学的还是比较认真,每次理论课和实验课基本都会认真听刘老师讲,每周都有的编程作业也会让你不得不去主动去学一些。

课程评价

刘老师讲的还是很不错的,幽默风趣,深入浅出。比较建议理论课和实验课都认真听一听,但其实完全不听也有办法速通并且稳拿高分。

刘老师的实验课会认真的带着同学写程序,并且不是生硬地写代码,会在其中加上思考和改进的过程。虽然说这门课的编程作业确实多,但是大部分代码上课他都会带着你写完,基本上其中后最复杂的几个作业(p2p聊天软件,画图软件,单机五子棋,联机五子棋等)也只需要两个晚上的时间就能完成。

这门课比较令人诟病的可能就是大作业了,需要对最后一次编程作业的联机五子棋写一个和学位论文格式完全相同的报告。刘老师比较看着格式,那篇论文更重要的也是格式是否正确,至于内容可能反倒不那么重要了,所以我建议直接用overleaf来写。我不知道是不是必须写8000字以上,反正我当时是写满了,如果你选了这么课可以到时候和老师再确认下。

方法指导

认真听课即可,如果你想速通请参考下面的复习资料与试卷回忆。

课程资料

点击下载复习资料

待上传

复习资料与试卷回忆

这部分内容来自nkucs.icu的学长们的回忆,经过我的验证后整理如下,如有侵权请联系我我会删除:

这门课的考试为上机考试,考试共5道题,内容基本每年一致,同时老师会提供文档作为参考资料所以不需要自己去记那些自带类,大致题型如下:

第一题每年不固定,但是基本都是考一些基本的java语法,我知道的有考过求和,求斐波那契数列,求n内素数等,下面的题目仅作为示例:

  • 创建一个数组,存 100 个 10 以内的随机整数,统计其中奇数和偶数的数目。你需要会创建数组,用包函数批量创建随机整数。
  • 创建一个浮点数数组,存储 100 个随机生成的 0-1 内的浮点数,计算总和并输出结果(保留小数点后 4 位)
  • 创建一个类 MinMax,含大小为 50 的 int 型数组,初始化为 100 以内的随机数,编写函数 minmax()输出最大值和最小值,在 main 函数里测试。(考察随机数和基本语法)

第二题会考察你会不会基本的IO,以下的题目仅作为示例:

  • 从控制台获取字符串放在指定文件。会控制台 IO 和文件 IO。
  • 在 main 函数读取指定.txt 文件,统计文件元音字母(a,e,i,o,u)的个数并输出(考察文件输入输出流)
  • 随机生成 10 个整数,把它们拼成一个字符串,并把这个字符串写入当前路径下的 "IOTest.txt" 中。

第三题会考察你会会不会使用多线程,以下的题目仅作为示例:

  • 你有 1000 张票和两种买票方式,其线程名、方式名、每次买的票数不同,开两个线程,同时开始卖,卖一次睡一秒,余票不足为止。你需要会开线程和沉睡,输出要符合规范,可以把不同的地方直接在构造函数传进去。
  • 初始 money 有 20000 元,启动第一个线程 + 8000,然后 sleep (1000),启动第二个线程 - 10000,然后 sleep (1000)(模拟每月的发工资 8000 和还房贷 10000),钱不够还房贷了就结束程序。
  • 小明手里有原始资金 10000 元,想要攒钱买 100000 元的车,创建两个线程:每月工资收入 x 元和每月正常支出 y 元,按月的顺序交替输出(Thread0 和 Thread1 交替)小明每月收入后 / 支出后所剩的钱,直到他成功有钱买车
  • 编写类 Petroleum Dealer,利用多线程模拟油厂生产与售卖。 (1) 定义油厂类 Petroleum Dealer,初始化油库储存量为 0 升; (2) 线程 0 模拟进货工作,每天生产油 2000 升; (3) 线程 1 模拟售卖工作,每天售出油 1000 升。 (4)油库大小为 10000 升; (5) 编写程序,模拟油厂的经营活动,当油库为满时程序停止。输出格式要求: Thread-0: 第 1 天生产 2000 升,油库储量 2000 升。 Thread-1: 第 1 天售出 1000 升,油库储量 1000 升。 Thread-0: 第 2 天生产 2000 升,油库储量 3000 升。 ... Thread-0: 第 n 天生产 2000 升,油库储量 11000 升。 Thread-1: 第 n 天售出 1000 升,油库储量 10000 升。 油库已满!

第四题我个人理解考察的是接口那部分内容,以下题目仅作为示例:

  • 创建两个接口,分别包含一个函数,创建一个类完善它们,用这两个操作 “实现一个记事本”。你需要会 IO,StringBuffer 和接口的最基本的一点概念。
  • 写一个 Memo 类,内有 String 变量,实现 Out 和 In 接口,完成读取输入字符串,保存到 String 变量中,并输出该字符串的功能。
  • 父类有三个:存钱类,取钱类,另一个忘了。需要构造的派生类是继承了上述三类的银行类,拥有对应的三种功能,测试输出基本的存取钱的过程就行
  • 编写程序,实现图形面积计算功能: (1) 定义抽象类 Shape,包含抽象方法:void printArea (),void printPerimeter (); (2) 定义 Shape 的派生类 Circle,包含一个 int 型 radius 字段,用于描述圆形的半径长度;实现 printArea 和 printPerimeter 方法,计算并输出圆形的面积和周长 (PI=3.14); (3) 定义 Shape 的派生类 Square,包含一个 int 型 sideLength 字段,用于描述正方形边长;实现 printArea 和 printPerimeter 方法,计算并输出正方形的面积和周长; (4) 定义 ShapeTest 类,在 main 方法中使用多态的形式测试上述 printArea 方法。

第五题主要考的就是你会不会用IDE的一些功能,不过也稍微额外考了些其他的东西(链表排序)。以下题目仅作为示例:

  • 创建一个手表类,有四个属性,就这四个属性完善它的 getter, setter, equals, toString 和 hashcode。创建一个手表库类,维护一个 LinkedList 保存手表,实现添加、移除和按某一属性排序输出。你需要会用容器类,知道怎么用 Eclipse 自动生成那些函数。排序输出最好做成有序存储。多文件做成一个包。类的成员由 UML 图给出,你只需要知道 + 代表 public,- 代表 private,# 代表 protected。
  • 给一个 UML 图,大概就是考察一下 LinkedList 的 add、remove 功能和快捷键创建 setter、getter 的方式。
  • 编写类 Petroleum Dealer,利用多线程模拟油厂生产与售卖。 (1) 定义油厂类 Petroleum Dealer,初始化油库储存量为 0 升; (2) 线程 0 模拟进货工作,每天生产油 2000 升; (3) 线程 1 模拟售卖工作,每天售出油 1000 升。 (4)油库大小为 10000 升; (5) 编写程序,模拟油厂的经营活动,当油库为满时程序停止。输出格式要求: Thread-0: 第 1 天生产 2000 升,油库储量 2000 升。 Thread-1: 第 1 天售出 1000 升,油库储量 1000 升。 Thread-0: 第 2 天生产 2000 升,油库储量 3000 升。 ... Thread-0: 第 n 天生产 2000 升,油库储量 11000 升。 Thread-1: 第 n 天售出 1000 升,油库储量 10000 升。 油库已满! (考察多线程)
  • 编写程序,模拟手机超市信息管理系统。 (1) (20 分) 定义手机实体类 Phone,如 UML 图所示:

    ========================================

    ! Phone |

    ========================================

    |-id: int |

    |-name: String |

    |-type: String |

    |-price: float |

    ========================================

    |+ Phone (int, String, String, float)|

    |+getId(): int |

    |+setId(int): void |

    |+getName(): String |

    |+setName(String): void |

    |+getType(): String |

    |+setType(String): void |

    |+getPrice(): float |

    |+setPrice(float): void |

    |+equals(Object): boolean |

    |+hashCode(): int |

    |+toString(): String |

    ========================================

    (2) (20 分) 定义市场类 Market,如 UML 图所示:

    | Market |

    |-id: int |

    |-name: String |

    |- PhoneList: LinkedList(Phone) |

    |- PhoneCount: int |

    |+Market(int, String) |

    |+getId(): int |

    |+setId(int): void |

    |+getName(): String |

    |+setName(String): void |

    |+getPhone List(): LinkedList< Phone>

    |+getPhone Count(): int |

    |+addPhone (Phone): void |

    |+deletePhone (Phone): void |

    |+showInfo(): void |

    该类的属性和主要方法说明:

    * 属性 PhoneList 为 LinkedList 类对象,用于多种品类手机组成的列表。

    * 方法 getPhoneList 用于查询手机列表。

    * 方法 getPhoneCount 用于查询手机品类总数。

    * 方法 addPhone 用于添加新品种的手机类型对象至列表。

    * 方法 deletePhone 用于从手机列表中删除某类型的手机。

    * 方法 showInfo 用于输出手机列表中的全部手机信息,要求按照 price 从大到小输出。

    请在 Market 类中编写 main 方法,测试 addPhone、deletePhone、getPhoneCount、showInfo 方法的运行效果。<

⚑Tags:      

除非注明,咕咕鸡的个人博客文章均为原创,本文地址 http://120.53.249.128/2024/06/27/9/,转载请以链接形式注明出处。

作者: 简介:

《COSC0022 Java 语言与应用》留言数:0

发表留言