课程设计题目及说明
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
版本 3:满分 20 分 在版本 2 的基础上设计实现一个具有 GUI 界面的人员信息管理系统,要求实现基本的 人员增、删、改、查的功能,人员信息列表应采用 JTable 组件。
3.
几何图形(满分 50 分)
版本 1:满分 10 分 设计抽象类 GeometricObject 及其子类 Triangle 和 Circle。 GeometricObject 类设计要求如下: ■ 一个名为 color 的 Color 类型的私有数据域,表示对象的颜色。 ■ 一个名为 filled 的 Boolean 类型的私有数据域,表示对象是否填充颜色。 ■ 一个名为 dateCreated 的 Date 类型的私有数据域,表示对象的创建日期。 ■ 一个无参构造方法。 ■ 一个能创建特定 color 和 filled 的有参构造方法。 ■ 相关数据域的访问器和修改器。 ■ 两个个名为 draw 和 erase 的抽象方法。 ■ 一个名为 getArea 的抽象方法。 ■ 一个名为 getPerimeter 的抽象方法。 ■ 重写 toString 方法。 Triangle 类设计要求如下: ■ 三个名为 side1、side2 和 side3 的 double 类型的私有数据域表示三角形的三条边。它 们的默认值是 1.0。要求三个数据域保留 2 位小数。 ■ 一个无参的构造方法创建默认三角形。 ■ 一个能创建带指定 side1、side2 和 side3 的有参构造方法。 ■ 所有三个数据域的访问器和修改器方法。 ■ 父类抽象方法的实现。 ■ 重写 toString 方法。 Circle 类设计要求如下: ■ 一个名为 radius 的 double 类型的私有数据域,表示圆的半径,数据域保留 2 位小数。 ■ 一个名为 PI 的静态常量,其值为 3.14 ■ 一个无参的构造方法创建默认三角形。 ■ 一个能创建带指定 radius 的有参构造方法。 ■ radius 数据域的访问器和修改器方法。 ■ 父类抽象方法的实现。 ■ 重写 toString 方法。 测试类 TestGeometricObject1 设计要求如下: ■ 一个能随机生成 Circle 类和 Triangle 类对象的静态方法 GeometricObject[] RandomCreateGeometricObject() ■ 以随机生成的数组为参数,输出数组中每个对象的基本信息、周长和面积。 ■ 类中其它方法的测试 版本 2:满分 20 分 将上面的抽象类 GeometricObject 改为接口,接口只保留其中四个抽象方法,声明类 Circle、Triangle 实现该接口,类的基本要求如上,同时为每个类增加一个将当前对象序列化 到指定文件的方法 writeToFile(File f)。 测试类 TestGeometricObject2 设计要求如下: ■ 一个能随机生成 Circle 类和 Triangle 类对象的静态方法, 该方法将随机生成的象序列 化到指定的文件 GeometricObjects.dat 中,序列化成功返回真,否则返回假。 Boolean RandomCreateGeometricObject()
1
版本 2:满分 20 分 扩展 Account1 类为 Account2 类: ■ Account2 类继承 Account1 类。 ■ 为 Account2 类新增一个名为 password 的 String 类型的私有数据域存储账号密码。 password 只能为字母或数字,长度不能小于 6 且不能大于 10。密码显示时为*******。 ■ 为 Account2 类新增一个名为 name 的 String 类型的私有数据域存储客户名字。 ■ 为 Account2 类新增一个名为 transactions 的 ArrayList 类型的新数据域,其为客户存 储交易记录。这要求新建一个名为 Transaction 的类,类的定义请参照教材中文版 P327 或英 文版 P404。每笔交易都是 Transaction 类的一个实例。 ■ 新增一个带初始余额的构造方法,其 id 随机产生,但不能与当前系统的 id 重复。 若初始余额的参数为负数,则抛出一个自定义异常并在当前构造方法中进行处理。 ■ 重写方法 withDraw,要求支取的金额为 100 的整数倍,并且当日支取金额不能超过 5000,支取金额不允许透支。每进行一次操作应向 transactions 数组线性表添加一笔交易。 ■ 重写方法 deposit,要求每进行一次操作应向 transactions 数组线性表添加一笔交易。 ■ 新增一个方法 changePassword,只有旧密码正确,新密码符合要求,且两次输入相 同的情况下才可以成功修改密码 设计测试类 ATMMachine2,其主菜单如下(可参考教材中文版 P296 或英文版 P367) : Main menu 0:create a account 1: check balance 2: withdraw 3: deposit 4:details of the transaction 5: change password 6:exit ■ 若 用 户 选 择 新 建 一 个 账 号 , 则 应 提 示 用 户 输 入 账 号 password 、 balance 和 annualInterestRate,其中 id 随机产生。新产生的账户应序列化到名为 accounts.dat 的文件中。 所有账户只能通过这种方式产生。 ■ 所有用户操作结果应同步到 accounts.dat 文件中相应账户中。 ■ 所有用户操作应有友好、简介的提示语。 版本 3:满分 20 分 请参照银行的 ATM 机界面,在 Account2 类的基础上开发一个 GUI 界面的 ATM 系统。 要求界面应模拟小键盘,并且账户信息读、写于文件 accounts.dat。
2.
人员信息(满分 50 分)
版本 1:满分 10 分 设计 Person 类,有姓名、地址、电话号码和电子邮件等属性。其子类为 Student 和 Employee,其中 Employee 类又有教员类 Faculty 和职员类 staff。学生类有班级状态(大一、 大二、大三或大四) ,这些状态为常量。Employee 类有办公室、工资和受聘日期。定义一个 名为 MyDate 的类,包含 year、month 和 day 数据域。Faculty 类有办公时间和级别。Staff 类有职务称号。重写每个类中的 toString 方法,显示相应的类名和人名。 编写测试类 Test1,要求随机产生不同的对象,并将这些对象存储到数组中,并用方法 printMessages(Person[] persons)将对象的信息输出。 版本 2:满分 20 分 在上面实现类的基础上,为每个类增加一个将当前对象序列化到指定文件的方法 writeToFile(File f)。为 Student 类创建一个新的子类 Postgraduate,有研究方向和导师姓名 两个新增数据域。编写测试类 Test2,要求随机产生不同的对象,并将这些对象序列化到指 定的文件中,并用方法 printMessages(Person[] persons)将对象的信息输出。
每人完成指定的两个题目, 每个题目均需实现 3 个不同层次的版本, 实现某一版本取得 对应的分值 代码遵守命名和缩进规则,关键代码需要注释说明 提供相应的说明文档, 如: 题目描述的分析和解决方案, 包括类的主要变量和主要方法, 输入输出方式、使用的存储类型等;解决问题的主要步骤;绘制 UML 类图,标注类继 承、组合和依赖关系 如能根据实际情况,分析题目要求中的不合理因素,设计出更合理、更有效或有创新性 的解决方案并实现,可获得加分
1.
ห้องสมุดไป่ตู้
账户类(满分 50 分)
版本 1:满分 10 分 设计 Account1 类,包含: ■ 一个名为 id 的 int 类型的私有数据域(默认值为 0) ,长度为 6 位。 ■ 一个名为 balance 的 double 类型的私有数据域(默认值为 0) 。 ■ 一个名为 annualInterestRate 的 double 类型的私有数据域存储当前利率 (默认值为 0) 。 假设所有的账户都有相同的利率。 ■ 一个名为 dateCreated 的 Date 类型的私有数据域存储账户的开户日期。 ■ 一个能创建默认账户的无参构造方法。 ■ 一个能创建带特定 id 和初始余额的构造方法,初始余额不能为负数。 ■ id、balance 和 annualInterestRate 的访问器和修改器。 ■ dateCreated 的访问器。 ■ 一个名为 getMonthlyInterestRate 的方法返回月利率。 ■ 一个名为 withDraw 的方法从账户提取特定金额。 ■ 一个名为 deposit 的方法向账户存人特定金额。 ■ double 类型的数据域保留 2 位小数。 ■ 成员方法和数据域应进行基本的合理性检查。 设计测试类 ATMMachine1: ■ 创建一个有 100 个账户的数组,其 id 为 0,1,2,...99, 并初始化收支为 1000 美元。 ■ 主菜单如下(可参考教材中文版 P296 或英文版 P367) : Main menu 1: check balance 2: withdraw 3: deposit 4: exit
主要知识点: 数据类型、变量、表达式和流程控制语句 抽象、封装与类、继承与多态 抽象类和接口 UML 类图,类继承、组合、依赖关系,分包 流、文件和输入输出操作 异常处理 图形用户界面的设计和编程实现 事件驱动编程 Applet 和多媒体 程序打包发布 要求:
4.
侩子手游戏(满分 50 分)
版本 1:满分 20 分 随机产生一个单词,提示用户每次猜一个字母。单词中的每个字母以星号显示。当用户 猜对一个字母时,显示实际字母。当用户完成一个单词时,显示猜错的次数,同时询问用户 是否继续下一单词。单词存储使用数组形式,如:String[] words = {“write”,”that”,…}; 满足上述要求的控制台程序运行示例:
版本 2:满分 10 分 实现画出以下图形界面的程序。
版本 3:满分 20 分 结合以上两个功能, 实现动画方式的侩子手游戏, 当用户猜错 7 次, 绞刑架上的人摆动。 当一个单词完成后,用户使用回车键继续猜下一个单词。 初始状态如下:
4
猜错一次:
猜错 2 次:
猜错 7 次:
完成一个单词:
5.
井字游戏(满分 50 分)
3
■ 将 GeometricObjects.dat 文件中对象全部读出,存储到 GeometricObject 对象数组中, 然后以此数组为参数,输出数组中每个对象的基本信息、周长和面积。 ■ 类中其它方法的测试。 新 增 一 个 类 Rectangle , 也 实 现 接 口 GeometricObject , 同 时 修 改 测 试 类 TestGeometricObject2,体会开-闭原则。 版本 3:满分 20 分 在第 2 步的基础上设计实现一个具有 GUI 界面的几何图形绘制系统系统,要求实现根 据选择的几何图形类型来绘制和删除相应的图形, 其中相关参数应通过界面输入, 并可计算 图形的周长和面积。
版本 1:满分 20 分 井字游戏是一种在 3*3 格子上进行的连珠游戏, 和五子棋比较类似。 由分别代表 O 和 X 的两个游戏者轮流在格子里留下标记(一般来说先手者为 X) 。最先在任意一条直线上(水
5
平、垂直或者对角线)成功连接三个标记的一方获胜。当所有格子都被填满,双方都未获胜 时,为平局。 提示两个用户轮流输入 X 和 O。当一个标记设置后,程序在控制台重新显示,并判断 游戏状态(赢家、平局、继续) 。控制台程序运行示例:
版本 3:满分 20 分 在版本 2 的基础上设计实现一个具有 GUI 界面的人员信息管理系统,要求实现基本的 人员增、删、改、查的功能,人员信息列表应采用 JTable 组件。
3.
几何图形(满分 50 分)
版本 1:满分 10 分 设计抽象类 GeometricObject 及其子类 Triangle 和 Circle。 GeometricObject 类设计要求如下: ■ 一个名为 color 的 Color 类型的私有数据域,表示对象的颜色。 ■ 一个名为 filled 的 Boolean 类型的私有数据域,表示对象是否填充颜色。 ■ 一个名为 dateCreated 的 Date 类型的私有数据域,表示对象的创建日期。 ■ 一个无参构造方法。 ■ 一个能创建特定 color 和 filled 的有参构造方法。 ■ 相关数据域的访问器和修改器。 ■ 两个个名为 draw 和 erase 的抽象方法。 ■ 一个名为 getArea 的抽象方法。 ■ 一个名为 getPerimeter 的抽象方法。 ■ 重写 toString 方法。 Triangle 类设计要求如下: ■ 三个名为 side1、side2 和 side3 的 double 类型的私有数据域表示三角形的三条边。它 们的默认值是 1.0。要求三个数据域保留 2 位小数。 ■ 一个无参的构造方法创建默认三角形。 ■ 一个能创建带指定 side1、side2 和 side3 的有参构造方法。 ■ 所有三个数据域的访问器和修改器方法。 ■ 父类抽象方法的实现。 ■ 重写 toString 方法。 Circle 类设计要求如下: ■ 一个名为 radius 的 double 类型的私有数据域,表示圆的半径,数据域保留 2 位小数。 ■ 一个名为 PI 的静态常量,其值为 3.14 ■ 一个无参的构造方法创建默认三角形。 ■ 一个能创建带指定 radius 的有参构造方法。 ■ radius 数据域的访问器和修改器方法。 ■ 父类抽象方法的实现。 ■ 重写 toString 方法。 测试类 TestGeometricObject1 设计要求如下: ■ 一个能随机生成 Circle 类和 Triangle 类对象的静态方法 GeometricObject[] RandomCreateGeometricObject() ■ 以随机生成的数组为参数,输出数组中每个对象的基本信息、周长和面积。 ■ 类中其它方法的测试 版本 2:满分 20 分 将上面的抽象类 GeometricObject 改为接口,接口只保留其中四个抽象方法,声明类 Circle、Triangle 实现该接口,类的基本要求如上,同时为每个类增加一个将当前对象序列化 到指定文件的方法 writeToFile(File f)。 测试类 TestGeometricObject2 设计要求如下: ■ 一个能随机生成 Circle 类和 Triangle 类对象的静态方法, 该方法将随机生成的象序列 化到指定的文件 GeometricObjects.dat 中,序列化成功返回真,否则返回假。 Boolean RandomCreateGeometricObject()
1
版本 2:满分 20 分 扩展 Account1 类为 Account2 类: ■ Account2 类继承 Account1 类。 ■ 为 Account2 类新增一个名为 password 的 String 类型的私有数据域存储账号密码。 password 只能为字母或数字,长度不能小于 6 且不能大于 10。密码显示时为*******。 ■ 为 Account2 类新增一个名为 name 的 String 类型的私有数据域存储客户名字。 ■ 为 Account2 类新增一个名为 transactions 的 ArrayList 类型的新数据域,其为客户存 储交易记录。这要求新建一个名为 Transaction 的类,类的定义请参照教材中文版 P327 或英 文版 P404。每笔交易都是 Transaction 类的一个实例。 ■ 新增一个带初始余额的构造方法,其 id 随机产生,但不能与当前系统的 id 重复。 若初始余额的参数为负数,则抛出一个自定义异常并在当前构造方法中进行处理。 ■ 重写方法 withDraw,要求支取的金额为 100 的整数倍,并且当日支取金额不能超过 5000,支取金额不允许透支。每进行一次操作应向 transactions 数组线性表添加一笔交易。 ■ 重写方法 deposit,要求每进行一次操作应向 transactions 数组线性表添加一笔交易。 ■ 新增一个方法 changePassword,只有旧密码正确,新密码符合要求,且两次输入相 同的情况下才可以成功修改密码 设计测试类 ATMMachine2,其主菜单如下(可参考教材中文版 P296 或英文版 P367) : Main menu 0:create a account 1: check balance 2: withdraw 3: deposit 4:details of the transaction 5: change password 6:exit ■ 若 用 户 选 择 新 建 一 个 账 号 , 则 应 提 示 用 户 输 入 账 号 password 、 balance 和 annualInterestRate,其中 id 随机产生。新产生的账户应序列化到名为 accounts.dat 的文件中。 所有账户只能通过这种方式产生。 ■ 所有用户操作结果应同步到 accounts.dat 文件中相应账户中。 ■ 所有用户操作应有友好、简介的提示语。 版本 3:满分 20 分 请参照银行的 ATM 机界面,在 Account2 类的基础上开发一个 GUI 界面的 ATM 系统。 要求界面应模拟小键盘,并且账户信息读、写于文件 accounts.dat。
2.
人员信息(满分 50 分)
版本 1:满分 10 分 设计 Person 类,有姓名、地址、电话号码和电子邮件等属性。其子类为 Student 和 Employee,其中 Employee 类又有教员类 Faculty 和职员类 staff。学生类有班级状态(大一、 大二、大三或大四) ,这些状态为常量。Employee 类有办公室、工资和受聘日期。定义一个 名为 MyDate 的类,包含 year、month 和 day 数据域。Faculty 类有办公时间和级别。Staff 类有职务称号。重写每个类中的 toString 方法,显示相应的类名和人名。 编写测试类 Test1,要求随机产生不同的对象,并将这些对象存储到数组中,并用方法 printMessages(Person[] persons)将对象的信息输出。 版本 2:满分 20 分 在上面实现类的基础上,为每个类增加一个将当前对象序列化到指定文件的方法 writeToFile(File f)。为 Student 类创建一个新的子类 Postgraduate,有研究方向和导师姓名 两个新增数据域。编写测试类 Test2,要求随机产生不同的对象,并将这些对象序列化到指 定的文件中,并用方法 printMessages(Person[] persons)将对象的信息输出。
每人完成指定的两个题目, 每个题目均需实现 3 个不同层次的版本, 实现某一版本取得 对应的分值 代码遵守命名和缩进规则,关键代码需要注释说明 提供相应的说明文档, 如: 题目描述的分析和解决方案, 包括类的主要变量和主要方法, 输入输出方式、使用的存储类型等;解决问题的主要步骤;绘制 UML 类图,标注类继 承、组合和依赖关系 如能根据实际情况,分析题目要求中的不合理因素,设计出更合理、更有效或有创新性 的解决方案并实现,可获得加分
1.
ห้องสมุดไป่ตู้
账户类(满分 50 分)
版本 1:满分 10 分 设计 Account1 类,包含: ■ 一个名为 id 的 int 类型的私有数据域(默认值为 0) ,长度为 6 位。 ■ 一个名为 balance 的 double 类型的私有数据域(默认值为 0) 。 ■ 一个名为 annualInterestRate 的 double 类型的私有数据域存储当前利率 (默认值为 0) 。 假设所有的账户都有相同的利率。 ■ 一个名为 dateCreated 的 Date 类型的私有数据域存储账户的开户日期。 ■ 一个能创建默认账户的无参构造方法。 ■ 一个能创建带特定 id 和初始余额的构造方法,初始余额不能为负数。 ■ id、balance 和 annualInterestRate 的访问器和修改器。 ■ dateCreated 的访问器。 ■ 一个名为 getMonthlyInterestRate 的方法返回月利率。 ■ 一个名为 withDraw 的方法从账户提取特定金额。 ■ 一个名为 deposit 的方法向账户存人特定金额。 ■ double 类型的数据域保留 2 位小数。 ■ 成员方法和数据域应进行基本的合理性检查。 设计测试类 ATMMachine1: ■ 创建一个有 100 个账户的数组,其 id 为 0,1,2,...99, 并初始化收支为 1000 美元。 ■ 主菜单如下(可参考教材中文版 P296 或英文版 P367) : Main menu 1: check balance 2: withdraw 3: deposit 4: exit
主要知识点: 数据类型、变量、表达式和流程控制语句 抽象、封装与类、继承与多态 抽象类和接口 UML 类图,类继承、组合、依赖关系,分包 流、文件和输入输出操作 异常处理 图形用户界面的设计和编程实现 事件驱动编程 Applet 和多媒体 程序打包发布 要求:
4.
侩子手游戏(满分 50 分)
版本 1:满分 20 分 随机产生一个单词,提示用户每次猜一个字母。单词中的每个字母以星号显示。当用户 猜对一个字母时,显示实际字母。当用户完成一个单词时,显示猜错的次数,同时询问用户 是否继续下一单词。单词存储使用数组形式,如:String[] words = {“write”,”that”,…}; 满足上述要求的控制台程序运行示例:
版本 2:满分 10 分 实现画出以下图形界面的程序。
版本 3:满分 20 分 结合以上两个功能, 实现动画方式的侩子手游戏, 当用户猜错 7 次, 绞刑架上的人摆动。 当一个单词完成后,用户使用回车键继续猜下一个单词。 初始状态如下:
4
猜错一次:
猜错 2 次:
猜错 7 次:
完成一个单词:
5.
井字游戏(满分 50 分)
3
■ 将 GeometricObjects.dat 文件中对象全部读出,存储到 GeometricObject 对象数组中, 然后以此数组为参数,输出数组中每个对象的基本信息、周长和面积。 ■ 类中其它方法的测试。 新 增 一 个 类 Rectangle , 也 实 现 接 口 GeometricObject , 同 时 修 改 测 试 类 TestGeometricObject2,体会开-闭原则。 版本 3:满分 20 分 在第 2 步的基础上设计实现一个具有 GUI 界面的几何图形绘制系统系统,要求实现根 据选择的几何图形类型来绘制和删除相应的图形, 其中相关参数应通过界面输入, 并可计算 图形的周长和面积。
版本 1:满分 20 分 井字游戏是一种在 3*3 格子上进行的连珠游戏, 和五子棋比较类似。 由分别代表 O 和 X 的两个游戏者轮流在格子里留下标记(一般来说先手者为 X) 。最先在任意一条直线上(水
5
平、垂直或者对角线)成功连接三个标记的一方获胜。当所有格子都被填满,双方都未获胜 时,为平局。 提示两个用户轮流输入 X 和 O。当一个标记设置后,程序在控制台重新显示,并判断 游戏状态(赢家、平局、继续) 。控制台程序运行示例: