作业总结

news/2025/3/17 4:20:05/文章来源:https://www.cnblogs.com/ysk1338/p/18147881

这学期才接触java,面向对象以前只在C里面用过一点,所以一开始对于怎么写,以及java语法有点不太适应。

个人体会:

​ 关于类:

1、类似C中的struct,构造函数、内置方法(函数 )都比较相似

2、但是无法重载运算符,这是比较难受的一点。

3、尽量避免代码的重复,把private和public的方法搞清晰。

4、把我们需要解决的问题进行拆分,拆得好就写得快

第一次作业
这是一个简单的题目与答题的程序,它要求输入题目数量、题目内容和标准答案,然后输入学生的答题信息,最后输出学生的答题结果以及判断信息。这个程序主要涉及到输入输出、字符串处理和逻辑判断等方面。
我们选择用正则表达式解决问题,所以说第一次作业的难点就是如何运用正则表达式.

总体来说,这个题目集可以帮助你学习如何处理输入输出,以及如何进行简单的逻辑判断和字符串处理。对于这个程序,我需要熟悉字符串的处理方法,以及如何使用条件语句进行逻辑判断。
设计上采用封装类实现数据类型的储存.

如果想进一步提升,可以考虑以下几点:

异常处理:程序中应该考虑到各种可能的异常情况,比如输入格式错误、题目数量与实际输入题目数量不符等情况,需要进行相应的处理和提示。

扩展功能:可以考虑增加一些扩展功能,比如统计学生答对的题目数量、给出答题评价等。

算法优化:如果题目数量非常大,可以考虑优化算法以提高程序效率,比如使用哈希表来存储题目信息,以便快速查找。

第一次作业虽然非常简单,但是具有很大意义。我第二次、第三次作业的架构都是在此基础上建立的。
第二次作业
第二次作业是在第一次作业的基础上进行代码的迭代和修改.
在这个题目中,引入了试卷信息以及对应的答卷信息,使得题目更贴近实际考试情景。同时,通过引入题目类、试卷类和答卷类,可以更好地组织数据和逻辑,提高程序的可读性和可维护性。

面向对象的技巧和方法在这里得到了很好的应用。通过定义题目类、试卷类和答卷类,将相关的数据和操作封装在一起,提高了代码的模块化和可扩展性。每个类都有自己的属性和方法,使得程序的结构更清晰,易于理解。在设计题目类时,可以包括题号、题目内容和标准答案等属性,以及判断答案是否正确的方法。试卷类可以包括试卷号以及包含的题目和对应的分值等属性,还可以有计算总分的方法。答卷类则可以包括试卷号以及对应的答案等属性,以及判断每        个题目答案是否正确的方法。通过使用面向对象的方法,可以更好地组织和管理代码,提高了代码的可维护性和可扩展性。同时,也使得程序更符合现实场景,更易于理解和修改。

第三次作业
第三次作业相较前两次难度比较大,新增了两个功能:删除题目信息和学生信息。这两个功能分别用于管理题目和学生的信息。

删除题目信息: 用户可以输入删除题目信息,删除指定的题目。当某题目被删除后,如果试卷中引用了该题目,则在输出答案时会提示该题目已失效,并将其得分设为0。

学生信息: 用户可以输入学生信息,包括学号和姓名。在判分时,程序会检查答卷中的学号是否在学生信息中存在,若不存在,则输出错误提示信息。此外,判分信息中会显示学生的姓名和学号。

这两个功能的新增,使得程序更加完善,能够更好地管理题目和学生信息,提高了程序的实用性和可用性。
第一次作业 :
涉及的类
题目类(Question):用于保存一道题目的信息以及处理的方法。
private int num;// 题号
private String content, // 题目内容
standardAnswer;// 标准答案
boolean matchingStandardAnswers(String answer):判断是否符合标准答案
试卷类(TestPaper):保存和处理一张试卷的信息以及处理的方法
int questionNum;// 题目数量
Question[] questions;//题目清单
void inputQuestion(int num, Question question):添加一道题目
void printQuestions():输出题目的内容~标准答案
boolean markQuestion(int num, String answer):判断第 num 题的正确性。
答卷类(AnswerPaper):保存和处理一张答卷的信息以及处理的方法
TestPaper paper;//试卷信息
String[] answers;//每一题的答案信息
boolean[] marks;//每一题的判题结果(对/错)
void printQ_A(int num):输出第 num 题的题目和答案(卷面答案,非标准答案)
boolean getJudge(int num):获得第 num 题的判题结果

第二次作业:
涉及的类
题目类(Question):用于保存一道题目的信息以及处理的方法。(与系列 1 相同,无变化)
private int num;// 题号
private String content, // 题目内容
standardAnswer;// 标准答案
boolean matchingStandardAnswers(String answer):判断是否符合标准答案
试卷题目类(Question_Paper 新增):用于保存试卷中的题目信息。由于试卷中的题目序
号与题目本身的题号不一致。且题目在不同试卷中的分值可能不一样,因此,设计试卷题目
类。
int p_q_num;//试卷中题目的顺序号
Question question;//题目类的对象,保存题目信息
int question_score;// 题目分值
int judge_markAnswer(String answer) // 判断题目得分
试卷类(TestPaper):保存和处理一张试卷的信息以及处理的方法,
int questionNum;// 题目数量
Question[] questions;//题目清单
void inputQuestion(int num, Question question):添加一道题目
void printQuestions():输出题目的内容~标准答案
boolean markQuestion(int num, String answer):判断第 num 题的正确性。
int sum-保存总分 (新增)
int questionQuantity-保存题目数量 (新增)
int getSum():获得总分(新增)
答案类(Answer 新增):用于保存答卷中一道答案的信息。
Question_Paper question;
String answer;
boolean mark;// 每一题的正确性
int score=0;// 每一题的得分
void calScore()//计算得分
答卷类(AnswerPaper):保存和处理一张答卷的信息以及处理的方法
TestPaper paper;//试卷信息
String[] answers;//每一题的答案信息
boolean[] marks;//每一题的判题结果(对/错)(去除)
void printQ_A(int num):输出第 num 题的题目和答案(卷面答案,非标准答案)
boolean getJudge(int num):获得第 num 题的判题结果
void printJudges() :// 输出所有的得分以及总分,以空格分隔(新增)
第三次作业:
涉及的类
题目类(Question):用于保存一道题目的信息以及处理的方法。(与系列 1 相同,无变化)
private int num;// 题号
private String content, // 题目内容
standardAnswer;// 标准答案
boolean matchingStandardAnswers(String answer):判断是否符合标准答案
(新增)boolean isValid=true;//是否是有效的题目
(新增)void disabled() //当题目被删除,设置题目为失效状态
(新增)ArrayList answers //记录所有引用了该题目的答案
试卷题目类(Question_Paper):用于保存试卷中的题目信息。由于试卷中的题目序号与题
目本身的题号不一致。且题目在不同试卷中的分值可能不一样,因此,设计试卷题目类。
int p_q_num;//试卷中题目的顺序号
Question question;//题目类的对象,保存题目信息
int question_score;// 题目分值
int judge_markAnswer(String answer) // 判断题目得分
试卷类(TestPaper):保存和处理一张试卷的信息以及处理的方法,
int questionNum;// 题目数量
HashMap<String, Question_Paper> questions;//题目清单
void inputQuestion(int num, Question question):添加一道题目
void printQuestions():输出题目的内容~标准答案
boolean markQuestion(int num, String answer):判断第 num 题的正确性。
int sum-保存总分
int questionQuantity-保存题目数量
int getSum():获得总分
答案类(Answer):用于保存答卷中一道答案的信息。
Question_Paper question;
String answer;
boolean mark;// 每一题的正确性
int score=0;// 每一题的得分
void calScore()//计算得分
(新增)void disable() //答案对应的题目失效,判分为 0
答卷类(AnswerPaper):保存和处理一张答卷的信息以及处理的方法
TestPaper paper;//试卷信息
String[] answers;//每一题的答案信息
boolean[] marks;//每一题的判题结果(对/错)
void printQ_A(int num):输出第 num 题的题目和答案(卷面答案,非标准答案)
boolean getJudge(int num):获得第 num 题的判题结果
void printJudges() :// 输出所有的得分以及总分,以空格分隔
(新增)String stuNum;// 学号
(新增)void printErrorNumQuestion(Answer answer) // 输出试卷中错误题目
号的题目
(新增)void printInvalidQuestion(Answer answer)// 输出失效题目信息
学生类(Student)(新增):保存学生的信息
String stuNum, stuName;

总结:
我在几次作业中学到了封装类,正则表达式等知识,基本运用Java知识面向对象设计程序
学习Java编程语言是一项具有挑战性但也充满乐趣的过程。在探索Java的世界时,我收获了许多知识和经验
首先,Java是一种面向对象的编程语言,它强调对象的概念,使得代码更具可维护性和扩展性。通过学习类、对象、继承、多态等概念,我深入理解了面向对象编程的核心原则,并学会了如何设计和实现高质量的Java程序。
其次,Java拥有强大的标准库和丰富的生态系统,这为开发人员提供了各种各样的工具和资源。我学习了如何有效地利用Java标准库中的类和方法,以及如何使用第三方库来加速开发过程,并在项目中实践了这些技能。
另外,Java具有跨平台性,这意味着编写的Java程序可以在不同的操作系统上运行。通过学习Java的跨平台特性,我了解了如何编写具有良好可移植性的代码,并学会了如何处理不同平台之间的差异。
此外,Java具有严格的类型检查和内存管理机制,这有助于减少程序中的错误并提高性能。我学习了如何遵循Java的最佳实践,编写出安全、高效的代码,并利用Java的垃圾回收机制来管理内存资源。
最后,通过不断实践和项目经验,我逐渐提升了自己的编程能力和解决问题的能力。我学会了如何分析和理解需求,设计合适的解决方案,并将其实现为可靠的Java程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/720471.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP概述

概述 TPC:传输控制协议,TCP协议是面向连接的、可以实现端对端通信的可靠的协议。 TCP协议传输数据时会为每个字节分配一个序列号,通过这个序列号就可以判断数据是否重复到达以及数据是否丢失,还可以通过序列号对数据进行排序。 报首格式TCP建立连接的三次握手过程TCP三次挥手…

基于毫米波雷达的手势识别算法

摘要 基于毫米波的手势识别技术提供了良好的人机交互体验。先前的工作专注于近距离手势识别,但在范围扩展方面不够,即他们无法识别距离相当大的噪声运动超过一米的手势。在本文中,我们利用一种新的数据处理方法和定制的人工卷积神经网络(CNN)设计了一个远程手势识别模型。…

POSTGRESQL中时间戳的奥秘timestamptz

哈喽,大家好,我是木头左!一、前言 在日常的数据库操作中,经常会遇到各种时间相关的数据类型,如DATE、TIME、TIMESTAMP等。这些时间类型的处理方式和精度差异,直接影响到对数据的查询和分析结果。今天,就来深入探讨一下POSTGRESQL中的两个重要时间戳类型:timestamp和tim…

6.5数组--模拟、偏移量-螺旋矩阵

6.5打卡M:59.螺旋矩阵II 题意描述给你一个正整数 n ,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1:输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2: 输入:n = 1 输出:[[1]]提示:1 <= n <= 20思路这道题目…

【Java】JVM字节码分析

Java 字节码是Java源代码编译生成的中间形式,赋予Java跨平台特性,通过对字节码的分析,可以迅速找到代码的性能瓶颈。一、功能 1、工作原理2、解释和运行 jvm本质上是运行在计算机上的程序,负责运行java字节码文件 对字节码文件中的指令,实时的解释成机器码,供计算机执行 …

23柏鹭杯-misc

我记得比赛的时候,misc都是0解。 怎么不算另类的1血呢? help_me实在不会,arm看不了一点消失的钥匙 先看验证逻辑,能够看到generateZipPassword和decryptFlag这两个方法内容不见了通过在apk中寻找半年,找到一个时间不对的classes3.dex,查看hex发现是gz压缩导出解压一下,拿…

云原生时代:从 Jenkins 到 Argo Workflows,构建高效 CI Pipeline

ACK One Serverless Argo 工作流作为全托管的 Argo 工作流服务,可以帮助您实现更大规模、具有更快的运行速度、及更低成本的 CI Pipeline,与 ACK One GitOps[8](Argo CD)、Argo Event 等事件驱动架构可以构建完整的自动化 CI/CD Pipeline。作者:蔡靖 Argo Workflows Argo …

智慧城市的规划与实施:科技引领城市运行效率新飞跃

随着信息技术的飞速发展,智慧城市的构想正逐步成为现实。作为地理信息与遥感领域的研究者,我深知在这一转型过程中,技术的创新与应用是提升城市运行效率的关键。本文旨在探讨如何利用地理信息系统(GIS)、遥感技术、大数据、物联网(IoT)等前沿科技,推动智慧城市的规划与…

WebLogic启动报Could not get the server file lock

报错信息如下:解决: 方法一: 引用:https://blog.51cto.com/hifon/2796939 方法二: 1. 出现问题可能是上次没有正确关闭Weblogic,可到如下目录,执行stopWebLogic.cmd(Windows),或stopWebLogic.sh(Linux) C:\Weblogic14.1.1.0\user_projects\domains\staubli\bin

(数据科学学习手札161)高性能数据分析利器DuckDB在Python中的使用

本文完整代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes1 简介大家好我是费老师,就在几天前,经过六年多的持续开发迭代,著名的开源高性能分析型数据库DuckDB发布了其1.0.0正式版本。DuckDB具有极强的单机数据分析性能表现,功能丰富,…

ApsaraMQ Copilot for RocketMQ:消息数据集成链路的健康管家

为了帮助用户更高效地使用 RocketMQ,阿里云消息队列 ApsaraMQ 提供了一套名为 RocketMQ Copilot 的辅助工具集。它将专家的实践经验产品化,使得即便是缺乏经验的用户也能迅速掌握 RocketMQ 客户端的正确用法,利用云消息队列 RocketMQ 版的可观测性工具进行监控、并高效地排查…