这学期才接触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
试卷题目类(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程序。