Java语言与系统设计课程实验报告

news2024/9/22 17:35:51

做个课设做的我人间失格,写了一晚上没保存,真是哭死


一、目的与要求

(一)、实验目的

掌握Java语言与系统设计的基本思路和方法。
利用所学的基本知识和技能,解决简单的Java语言与系统设计问题。

(二)、实验要求

学习Java界面开发基础知识。利用所学到的Java编程知识和编程技巧,设 计一个实际的应用软件,初步认识软件设计的基本方法,提高进行工程设计 的基本技能及分析、解决实际问题的能力,为后续课程和以后的工程实践打 下良好的基础。

(三)、实验题目

题:用Java编程开发“六级单词强化记忆”游戏
(0)在网上下载英语六级词汇表,中英文对应。保存在服务器端,服 务器 可以让1个客户端连入。客户端初始分数为10分。
(1)功能2:根据英文选择中文。服务器随机选出一个英文单词,发给客户端显示。该英文单词,从界面顶端落下。界面底端出现ABCD四个中文选项,其中一个正确;客户端输入选项,提交。规则:在英文单词描述掉到底端之前,提交正确,该客户端增加1分,进入下一局;提交错误的,该客户端扣2分,进入下一局;在掉到底端前不回答,扣1分,进入下一局。进入下一局之前,若回答正确,客户端显示“恭喜回答正确”;回答错误,客户端显示“回答错误,答案是XXX”;没回答,客户端显示“您没有回答,正确答案是XXX”。用户分数扣到0分,则游戏输掉,退出。注:此项考察多线程、界面开发、网络编程、字符串处理。
(2)功能3:错词保存。如果一个单词,在功能1或2中,被用户答对,将其保存在“已掌握单词.txt”中;如果一个单词,在功能1或2中,答错或没有答,则保存在“未掌握单词.txt”中(标注是答错还是没答),用户可以打开复习。对于客户端,“已掌握单词.txt”和“未掌握单词.txt”,保存在本地。注:此项考察多线程、界面开发、IO处理。

二、操作环境

硬件: 华硕天选2
软件:eclipse22-09和jdk17

三、实验内容

(一)、服务端的Server类

(1)Server的构造函数

设置“服务器端”为窗口标题,设置好界面,具体见源码。

(2)run函数

接收客户端发来的消息,判断:如果读入的数据为“start”便启动readwordFile函数;如果读入的数据不为“0”,也启动readwordFile函数;当读入的数据为“0”,向客户端发送“0”;如果读入的数据为“end”,则让静态函数CanDo变为flase,跳出读入数据的循环,并关闭服务器。

(3)readwordFile函数

读取存取六级单词文档中的单词,随机抽取一个单词及其配套的解释和随机另外三个单词的解释,并将其以空格分开后发送到客户端。

在这里插入图片描述

(二)、客户端的MainFrame类

(1)MainFrame的构造函数

设置界面,放置“进入游戏”、“未掌握单词”、“已掌握单词”和“退出”四个按钮,另放置“六级单词强化记忆”这个标签,具体见源码。

(2)actionPerfromed函数

按钮跳转功能:如果得到Start_Game,就开始GamePrepare类并关闭当前页面;如果得到Leave_Out,就退出游戏;如果得到Unlearn_Word,就开始新的未掌握单词这个页面并关闭当前界面;如果得到Learn_Word,就开始新的已掌握单词这个页面并关闭当前界面。

(三)、客户端的GamePrepare类

(1)GamePrepare的构造函数

设置界面,放置“开始游戏”、“设置”和“返回”这三个按钮在界面的左边,另放置一段我很喜欢的话在界面的右边,具体见源码。

(2)actionPerfromed函数

按钮跳转功能:如果得到start,就开始GameFrame类并关闭当前页面;如果得到Back,就关闭当前页面并新开一个MainFrame类;如果得到Setting,就开始新的设置页面并关闭当前界面。

(四)客户端的Setting类

Setting类的构造函数

设置页面,页面上方出现“自定义设置”标题,中间有“每局单词个数”和“单词下落秒数”这两个文本框,最下面设置“返回”和“应用”这两个按钮。
按钮判断:当点击“返回”时,重新开启GamePrepare类并关闭当前页面;当点击“应用”时,重新开启GamePrepare类,关闭当前页面,读取文本框里面输入的内容,并将读取的内容存入静态变量WordNums和DownTime中。

(五)、客户端的GameFrame类

(1)GameFrame的构造函数

设置面板,将面板上的“当前生命值”、“请操作键盘按钮答题”、掉下来的单词,跳出的提示和四个选项的初始位置及样式确定好,并向服务端输入“start,最后开始timer线程。

(2)checkFail函数

更改当前生命值和提示,判断如果生命值小于0,就停止timer线程,同时将静态变量re变为1,向服务端输入“end”,跳出弹窗“生命值耗尽,游戏结束”,点击确认后开启Review类并将当前关闭当前页面。

(3)init函数

更改当前生命值和提示,将接收服务端的信息根据空格分割成单词、正确答案和三个选项。随机抽取一个数,当数为0时,设置A为正确答案;当数为1,设置B为正确答案;当数为2时,设置C为正确答案;当数为3时,设置D为正确答案。同时将单词赋值给静态变量word,将解释赋值给静态变量ans,将正确选项赋值给Opt。

(4)actionPerformed函数

判断如果掉下来的单词的Y轴的值大于页面的Y值,像未掌握单词.txt中存入这个单词及其意思和一个数“0”。同时,静态函数life生命值减一,掉落的单词wordnum,也就是Setting.WordNums的值减少一,调用checkFail函数判断是否已经失败。最后,将掉落单词的Y值加10。

(5)run函数

不停接收服务端发来的消息,将消息赋值给静态变量getword。判断接收到消息,如果消息不为“0”,表示没结束程序,,启动init函数,同时判断静态变量wordnum和生命值life是否是为0,当wordnum为0且life大于0的时候,启动checkfile函数,同时停止timer线程,这时候游戏已经成功,弹出“恭喜你游戏赢了”,同时静态变量re为1给服务端发送“0”,启动复习Review界面。

(6)keyPressed函数

得到键盘上的按钮消息,并与Opt相比较,判断是否正确:如果正确,wordnum减一,同时生命值life加2,改变提示的信息为“恭喜回答正确”,再将这个单词写入“已掌握单词.txt”中,给服务端发送life的值;如果错误,wordnum减一,生命值life减2,改变提示信息为“回答错误,正确答案是”+这个单词,向“未掌握单词.txt”中写入,判断是否失败,并向服务端发送生命值。

(7)writeGottonFile函数

向“已掌握单词”中写入单词,具体实现见代码。

(8)WriteUnGottonFile函数

向“未掌握单词”中写入单词,如果参数为1,就是没答对的单词,如果参数为0,就是未答的单词。

(六)、Review类

(1)Review类的构造函数

设置页面和页面上的“退出”、“已掌握单词”和“未掌握单词”这三个按钮和一句我喜欢的话,具体实现见代码。

(2)actionPerformed函数

按钮判断:当点击退出时,设置程序退出;当点击“未掌握单词”,设置当前页面消失同时新开UnGottonWord类;当点击“已掌握单词”,设置当前页面消失同时新开GottonWord类。

(七)GottonWord类

(1)GottonWord类的构造函数

设置页面上的标题“已掌握单词”,同时在中间放一个可滚动的文本框来放置单词和其意思,最下面放置一个返回按钮,具体见代码。

(2)actionPerform函数

判断静态变量re如果为1,就证明已经结束了游戏,返回的时候仍然进入这个复习页面;如果静态变量为0,则返回主页面。

(八)UnGottonWord类

(1)UnGottonWord类的构造函数

设置页面上的标题“未掌握单词”,同时在中间放一个可滚动的文本框来放置单词、对应的意思和答错的原因,最下面放置一个返回按钮,具体见代码。

(2)actionPerform函数

判断静态变量re如果为1,就证明已经结束了游戏,返回的时候仍然进入这个复习页面;如果静态变量为0,则返回主页面。

四、实验结果

(1)开启服务端

在这里插入图片描述

(2)开启客户端

在这里插入图片描述

1、点击“未掌握单词”

在这里插入图片描述

2、点击返回

在这里插入图片描述

3、点击“已掌握单词”

在这里插入图片描述

4、点击返回

在这里插入图片描述

5、点击“进入游戏”

在这里插入图片描述

6、点击设置

在这里插入图片描述

7、点击应用

在这里插入图片描述

8、点击开始游戏

在这里插入图片描述

9、失败,点击确认

在这里插入图片描述

10、点击“未掌握单词”

在这里插入图片描述
在这里插入图片描述

11、点击“返回”

在这里插入图片描述

12、点击“已掌握单词”

在这里插入图片描述

13、点击返回

在这里插入图片描述

14、点击“退出”结束游戏

(三)、思维导图

在这里插入图片描述

五、源代码

源代码可以在这里获取

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

挂耳式蓝牙耳机性价比推荐,几款高性能的耳机分享

无论是在日常还是运动的场景下,我们通常都会选择佩戴着耳机,让我们能够顺利过渡掉枯燥的生活,之前人们会选择入耳式的耳机,在长期佩戴过后会有不小的疾病诞生,在近些年迅速火起的骨传导耳机成为了焦点,其保…

Java线程池理解与学习

线程过多就容易引发内存溢出,因此我们有必要使用线程池的技术 线程池的好处 降低资源消耗: 通过重复利用已创建的线程降低线程创建和销毁造成的消耗 提高响应速度: 当任务到达时,任务可以不需要等待线程创建就能立即执行 提高线…

GEE:关系、条件和布尔运算

ee.Image对象具有一组用于构建决策表达式的关系、条件和布尔运算方法。这些方法可以用来掩膜、绘制分类地图和重新赋值。 本文记录了在GEE(Google Earth Engine)平台上的关系运算符和布尔运算符,分别应用到了三个不用的场景(筛选低…

【坚持不懈的每日一题——力扣篇】1796. 字符串中第二大的数字(简单)+set 用法复习

GitHub同步更新(已分类):Data_Structure_And_Algorithm-Review 公众号:URLeisure 的复习仓库 公众号二维码见文末 以下是本篇文章正文内容,下面案例可供参考。 一、题目描述 力扣今天推的每日一题是道简单题&#x…

[附源码]计算机毕业设计心理健康系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

读写锁三种关系的证明(读者和读者互补影响、写者和写者互斥、读者和写者互斥)

目录 1、读者和读者互不影响 2、写者和写者互斥 3、读者和写者互斥 (1) 读者持有锁 (2) 写者持有锁 1、读者和读者互不影响 假设现在只有读者线程&#xff0c;我们让一个读者线程申请锁以后&#xff0c;但是不释放读写锁。 #include <stdio.h> #include <unist…

[附源码]JAVA毕业设计计算机专业在线学习评估软件-演示录像-(系统+LW)

[附源码]JAVA毕业设计计算机专业在线学习评估软件-演示录像-&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&…

HTML小游戏15 —— 网页版3D反恐英雄(附完整源码)

&#x1f482; 网站推荐:【神级源码资源网】【摸鱼小游戏】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】&#x1f4ac; 免费且实用的计…

[附源码]Python计算机毕业设计Django教学辅助系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

2022年各大企业java面试题解析,堪称全网最详细的java面试指南

前言 最近感慨面试难的人越来越多了&#xff0c;一方面是市场环境&#xff0c;更重要的一方面是企业对Java的人才要求越来越高了。 ​基本上这样感慨的分为两类人&#xff0c;第一&#xff0c;虽然挂着3、5年经验&#xff0c;但肚子里货少&#xff0c;也没啥拿得出手的项目&am…

膜拜,终于拿到了美团大佬分享的Netty源码剖析与应用PDF

前言 时间飞逝&#xff0c;转眼间毕业七年多&#xff0c;从事 Java 开发也六年了。我在想&#xff0c;也是时候将自己的 Java 整理成一套体系。 这一次的知识体系面试题涉及到 Java 知识部分、性能优化、微服务、并发编程、开源框架、分布式等多个方面的知识点。 写这一套 Ja…

机器学习笔记之受限玻尔兹曼机(二)模型表示

机器学习笔记之受限玻尔兹曼机——模型表示引言回顾&#xff1a;玻尔兹曼分布玻尔兹曼机关于玻尔兹曼机的问题受限玻尔兹曼机受限玻尔兹曼机的学习任务(填坑)引言 上一节基于马尔可夫随机场介绍了玻尔兹曼分布&#xff0c;本节将介绍受限玻尔兹曼机的模型表示(Representation)…

阿里资深专家分享程序员三门课:技术精进架构修炼、管理探秘文档

前言 学习是一种基础性的能力。然而&#xff0c;“吾生也有涯&#xff0c;而知也无涯。”&#xff0c;如果学习不注意方法&#xff0c;则会“以有涯随无涯&#xff0c;殆矣”。 学习就像吃饭睡觉一样&#xff0c;是人的一种本能&#xff0c;人人都有学习的能力。我们在刚出生…

将0-255的色彩映射表导出为RGB波段

当我们拿到0-255的色彩映射表栅格文件的时候&#xff0c;可能不太好用&#xff0c;需要导出为RGB波段或者其他波段形式的&#xff0c;在Global Mapper中可以做到。 打开0-255色彩映射表的栅格文件&#xff0c;在Arcmap中可以看到是这样的&#xff1a; 1 在ArcMap中操作步骤…

PE文件硬编码代码注入

以下适合有PE基础的人看&#xff0c;最起码要知道PE的基本结构和rva以及foa之间如何相互转换&#xff0c;不然会看的迷迷糊糊 先决条件 首先我们需要准备一个程序&#xff0c;待会将代码注入这个程序中 随便编写一个简单的程序&#xff0c;将随机基址给关闭 硬编码 程序编…

PyQt5基础练习2

实验4 关闭窗口 4.1 完整代码 #!/usr/bin/python3 # -*- coding: utf-8 -*-""" ZetCode PyQt5 tutorialThis example shows a tooltip on a window and a button.Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """import…

推荐系统在腾讯游戏运营中的实践

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2022年10月份热门报告盘点2021-2022元宇宙报告.pdf清华大学256页PPT元宇宙研究报告.pdf&#xff08;附下载链接&#xff09;机器学习在B站推荐系统中的应用实践小红书推荐系统…

【Matplotlib绘制图像大全】(三十):Matplotlib绘制时间线图

前言 大家好,我是阿光。 本专栏整理了《Matplotlib绘制图像大全》,内包含了各种常见的绘图方法,以及Matplotlib各种内置函数的使用方法,帮助我们快速便捷的绘制出数据图像。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmMatp…

[附源码]计算机毕业设计医疗纠纷处理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

在浏览器中运行 TensorFlow.js 来训练模型并给出预测结果(Iris 数据集)

文章目录开发环境构建第一个 TensorFlow.js 模型构建鸢尾花数据集分类器References在 《TensorFlow Lite 是什么&#xff1f;用 TensorFlow Lite 来转换模型&#xff08;附代码&#xff09;》中我们已经介绍了可以帮助 TensorFlow 模型在移动设备以及嵌入式设备中运行的 Tensor…