桌面宠物Oline-------------面向程序综合设计2020

项目由来

2018年QQ宠物就此停服,童年的回忆就此消失,为此我们(L.Z.G)决定自己写一个桌面宠物。做这个之前我们需要一些前期的准备工作,前期调查,需要我们宠物的图片后期的PS,还要数据库来存储我们的登录信息,这里我们使用了Mysql数据库并且使用了Navicat 的可视化操作数据库软件,又为了我们的桌面宠物能让每一个人都拥有一只这么可爱的宠物,我们使用了阿里云服务器来搭建我们的数据库。实现每个人都拥有一只可爱无比的桌面宠物。该程序主要为了给那些怀念那只可爱的小企鹅的用户设计。

一、团队介绍

成员姓名 任务分配 备注
郭东阳(队长) 服务器、主界面GUI、模块拼接、多线程 可爱、帅气
周理伟 实体类的设计、数据库 机智、勇敢
李星宝 部分GUI、音乐模块、程序可执行调试 帅气、迷人
##二、项目Git地址

https://gitee.com/jellysheep/development_of_desktop_pet.git

三、Git项目提交记录截图

四、项目功能架构图、主要功能流程图

五、面向对象设计类图

1、Skill接口

2、User 类存储登录用户信息

3、pet类.存储宠物信息属性、好感度以及互动的方法

4、Account类 存储记账的信息

5、pet.Girl类 特有类继承接口Skill

6、Reminder类 提醒类 存储数据库中提示语句

六、项目运行截图与屏幕录制

1、登录界面后面的背景皮卡丘是个动态的小宠物



2、注册界面

3、宠物主界面

4、系统托盘菜单

5、菜单主界面、包含播放和暂停音乐按钮

6、宠物属性、好感度


7、记账界面

8、宠物演示小视频

https://v.youku.com/v_show/id_XNDUwNDM3MjYxMg==.html

七、项目关键代码

1、登录按钮的监听


这里对登录按钮添加了监听器,在该部分代码中使用UserDaoImpl类里的isLogin方法对服务器发送请求获取服务端的数据库信息,并且做出比对给出判断反馈

2、主界面的多线程

Def和Cil线程是维持桌面宠物一直处于动态的主要代码,以及每个一段时间的弹窗小提醒也是在这个线程里,互动之类的,好感度的实时增加

3、系统托盘

支持系统托盘、增加可操作性菜单

4、鼠标拖动宠物代码

这部分代码比较关键、如果不能拖动宠物,互动就大大的打了折扣

5、服务器端获取弹窗信息

对服务器发送请求、进行连接,获取数据库中talk数据,进行随机输出

6、弹窗GUI的实现

这部分是为jframe设置背景图片,在GUI的设计中,JLabel放了图片就会把其它jLabel挤开,这很让人头疼;在查询资料的过程中我发现:
在jframe上添加组件,往往是添加在contentpane中。但是在contentpane的下面还有两层面板,那就是layeredpane和jrootpane。
任何一本关于java的书中都会介绍contentpane,却很少提到layeredpane和jrootpane。

八、测试、改进与感想

1、测试的过程中遇到了很多问题比如线程,在鼠标进行操作的时候要怎么去变化,通过监听器去修改一个flag值在线程里加上一个比较flag来判断什么时候要做什么事情,还有服务器。在使用服务器作为数据库,要注意的有很多;首先要先在阿里云控制台设置端口的出入, 一般数据库的端口为3306,但是服务器并没有默认该端口可以通过,所以不开的话将不能通过3306端口访问数据库,同时还要在云端数据库运行允许外网ip访问权限的开放的命令,并且设置外网访问密码;还有和队友们对接的时候往往会出现意想不到的问题,好比如我调用队友写的菜单中的一个选项,会跳出一个GUI但是在关闭这个弹窗的时候会把其它GUI一起关闭这时候就需要队友修改自己的代码;
2、改进方面,就是互动的动作可能太少了,时间的不足没办法让我们的GUI宠物动作更加丰富,因为很多图片都需要我们自己去PS修改才能用;
3、通过这次课程设计,让我明白了团队合作有很大的好处,同时默契也是团队合作中的关键,团队合作使我灵活应用所学的知识,完成自己团队分工的内容;学会了很多东西,也知道可如何在服务器上架构数据库,怎么连接远程数据库,GUI的布局管理;这些都是日后实用的,只有不断的学习、实践,再学习、再实践才会成长。

九、关于云端服务器

刚开始,想着的是用本地数据库,但是那样别人用起来就不是特别的方便了,所以我买了一个阿里云服务来构架我们桌面宠物的数据库。

posted on 2020-01-12 15:26  jellysheep  阅读(1271)  评论(2编辑  收藏  举报

导航