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

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


一、目的与要求

(一)、实验目的

掌握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,就开始新的已掌握单词这个页面并关闭当前界面。

扫描二维码关注公众号,回复: 14926812 查看本文章

(三)、客户端的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、点击“退出”结束游戏

(三)、思维导图

在这里插入图片描述

五、源代码

源代码可以在这里获取

猜你喜欢

转载自blog.csdn.net/weixin_62529383/article/details/128162928
今日推荐