关键词:
目 录
1 绪论 1
1.1 项目概述 1
1.2 项目意义 1
2 开发工具和相关技术简介 2
2.1 Eclipse简介 2
2.2 Java语言介绍 2
2.3 MySQL简介 3
2.4 JDBC技术简介 3
3 系统需求分析 4
3.1 系统可行性分析 4
3.2 系统需求分析 4
3.3 组内成员分工 5
3.4 项目进度安排 5
4 系统设计 6
4.1 系统设计 6
4.2 数据库设计 8
5 系统实现 9
5.1 仿QQ聊天程序登录界面实现 9
5.2 仿QQ聊天程序好友列表界面实现 10
5.3 仿QQ聊天程序群聊界面实现 11
5.4 仿QQ聊天程序私聊界面实现 11
5.5 仿QQ聊天程序打开图片界面实现 12
6 系统测试 13
7 结论和心得 14
1 绪论
1.1 项目概述
项目内容:使用图形用户界面实现一个聊天室中多人聊天,可以两个人私聊,可以发送图片,可以查看好友列表。实现类似QQ用户注册登录聊天等功能。
要求:运用java程序编写聊天室,实现简单的聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了java.awt 包,java.swing 包以及java.util 包等。程序实现了聊天室的基本功能,其中有:
1、启动服务器。
2、进入客户端界面。
3、登录聊天室。
4、发送信息。
5、关闭服务器。
1.2 项目意义
意义:在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ网络聊天时一类的聊天系统的发展日新月异,因此制了作一个有简单聊天功能的网络聊天程序;而且通过制作该程序还能更好的学习网络软件编程知识。
2 开发工具和相关技术简介
本项目是仿QQ聊天程序。开发环境:Eclipse、MySQL;开发语言:Java语言;开发技术:多线程、socket、UDP等。本章将对开发工具和相关技术进行简单介绍。
2.1 Eclipse简介
Eclipse是一个基于Java的、开放源码的、可扩展的应用开发平台,它为编程人员提供了一流的Java集成开发环境(Integrated Development Environment,IDE)。它可以极大地提升我们的开发效率。可以自动编译,检查错误。
2.2 Java语言介绍
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
java的特点:
(1)简单性(语言小、容易熟悉)
(2)面向对象
(3)分布性(只要编写一次,就可到处运行)
(4)编译和解释性(编译程序生成字节码,提供体系结构中的目标文件格式)
(5)稳健性(消除了某些编程错误,使得用它写可靠软件相当容易)
(7)可移植性(不依赖于实现,对新的硬件平台和操作系统是可移植的)
(8)高性能(“及时”编译程序,实现了全编译)
(9)多线索性(提供支持多线索的执行,能处理不同任务)
(10)动态性(适应于变化的环境)
Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。
2.3 MySQL简介
MySQL一般特制完整的MySQLRDBMS,是一个开源的关系型数据库管理系统,是单进程多线程架构的数据库,随着MySQL功能的不断完善,性能不断提高,又有开源免费的优势,越来越多的企业选择使用MySQL。
MySQL采用的是客户/服务器体系结构,因此实际使用时,有两个程序,内部大致分为三层,支持插入式的存储引擎,可以根据实际情况选择最合适的存储引擎。
2.4 JDBC技术简介
JDBC全称为java database connectivity,是sun公司指定的java数据库连接技术的简称。是一种用于SQL语句的Java API,由一组类和接口组成,通过调用这些类和接口所提供的方法,可以使用标准的SQL语言来存取数据库中的数据。JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库。
3 系统需求分析
3.1 系统可行性分析
仿QQ聊天程序:技术可行性、操作可行性----项目可行。
3.2 系统需求分析
调研对象:老师、同组同学、4 5 6 10组
项目内容:使用图形用户界面实现一个聊天室中多人聊天,可以两个人私聊,可以发送图片,可以查看好友列表。实现类似QQ用户注册登录聊天等功能。
要求:运用java程序编写聊天程序,实现简单的聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了java.awt 包,java.swing 包以及java.util 包等。程序实现了聊天室的基本功能。
图3-1 仿QQ聊天程序简易流程图
3.3 组内成员分工
表3-1 组内成员分工情况表
序号 |
姓名 |
组内角色 |
小组分工 |
备注 |
1 |
张睿滢 |
项目经理 |
群聊、好友列表、数据库 |
|
2 |
邬新娇 |
编码、测试 |
私聊、发送图片、线程连接 |
|
3 |
陈茜 |
编码、架构师 |
登录、注册 |
|
3.4 进度安排
进度安排如表3-2所示。
表3-2 进度安排表
阶段 |
持续时间 |
阶段描述 |
输出 |
构思阶段 |
120min |
需求分析 |
需求说明,功能模块图 |
设计阶段 |
一天 |
系统设计 |
设计说明-可以画流程图;数据库设计 |
是现阶段 |
三天 |
编写代码 |
项目工程源代码 |
一天 |
系统测试 |
进行黑盒测试(功能测试)-测试说明 |
|
运行阶段 |
两天 |
部署、运行 |
系统使用说明、运维报告-答辩 |
4 系统设计
4.1 系统设计
注册功能:用户想要聊天,首先要注册,需要输入账号密码,点击注册在数据库中查询该用户名是否已注册,如未注册,将该用户用户名密码存入数据库,之后可直接进入聊天。
登录功能:已经注册过的用户输入账号密码后点击登录,在数据库中查询该证号密码是否正确,正确即可成功登录,进入聊天。
图4-1 仿QQ聊天程序登录注册程序流程图
好友列表:登录后,进入好友列表页面,设计两个页面(查看好友列表--页面显示好友列表/群聊--点击切换页面,群聊按钮变至上方,并弹出群聊窗口)
群聊:登录后,点击好友列表中的群聊按钮,进入群聊页面,利用多线程,可发送消息至所有在线的成员。(利用GUI设置好群聊页面,给发送按钮匹配事件,如果点击发送,将谁说了什么显示在多行文本输入框上)
图4-2 仿QQ聊天程序群聊私聊程序流程图
私聊:登录后,选择在线的想聊好友,双击打开私聊界面,(用JFrame构建界面,以及文本框按钮等,先创建这些变量,然后将其赋值,最后将其添加至面板)界面内可发送图片或者发送信息(先创建发送者sender和接受者getter,然后将发送的内容用insert.插入到文本框并通过Description过滤器描述文本),我方发送后,对方立即可接受。
发送图片:在私聊界面点击文件后(用JFrame构建界面,以及文本框按钮等,先创建这些变量,然后将其赋值,最后将其添加至面板),选择所想添加的图片的路径(先用final int PREVIRW_SIZE=100来确定预览图片的大小然后通过JFileChoose来过滤掉没有.的文件,只可发送.jpg .jpeg .gif .png等规定格式的文件,然后设置文件路径。设置图宽高,最后调用路径并通过FileFileter来实现文件过滤即可),点击确定后即可发送
4.2 数据库设计
根据系统需求分析设计了1张表,为用户注册信息表。具体信息如表4-1所示。
表4-1 用户注册信息表 qquser
QQuserId |
QQPassword |
1 |
1 |
3 |
123 |
6 |
6 |
4 |
4 |
5 系统实现
5.1 仿QQ聊天程序登录界面实现
用户通过输入账号密码进行登录。登录界面如图5-1所示。
图5-1 仿QQ聊天程序登录界面
5.2 仿QQ聊天程序好友列表界面实现
登陆成功,进入好友列表页面,显示在线好友,可双击私聊好友,可进入群聊页面。好友列表界面如图5-2所示。
图5-2 仿QQ聊天程序好友列表界面
5.3 仿QQ聊天程序群聊界面实现
点击好友列表中的群聊按钮,进入群聊页面,可发送消息至所有在线的成员。群聊界面如图5-3所示。
图5-3 仿QQ聊天程序群聊界面
5.4 仿QQ聊天程序私聊界面实现
双击好友进入私聊页面,可发送消息至指定好友,其他好友不会收到此消息,可发送图片。私聊界面如图5-4所示。
图5-4 仿QQ聊天程序私聊界面
5.5 仿QQ聊天程序打开图片界面实现
点击私聊中的文件按钮,进入打开图片页面,可选择图片文件发送至好友。打开图片界面如图5-5所示。
图5-5 仿QQ聊天程序打开图片界面
6 系统测试
在仿QQ聊天程序中主要对注册、登录、好友列表、群聊、私聊、发送图片的功能模块进行测试,测试结果如表6-1所示。
表6-1 仿QQ聊天程序模块测试表
编号 |
测试功能 |
输入描述 |
预期结果 |
运行结果 |
01 |
注册功能 |
1.连接数据库 2.输入正确用户名密码 3.成功进入 4.数据库中显示注册信息 |
可正常注册,并记录到数据库 |
正常,与预期结果一致 |
02 |
登录功能 |
1.登录聊天程序 2.用户名密码正确 3.成功进入 |
可正常登录 |
正常,与预期结果一致 |
03 |
好友列表功能 |
1.两个页面成功展示 2.查看好友列表 |
可查看在线好友 |
正常,与预期结果一致 |
04 |
群聊功能 |
1.发送消息 2.所有人收到 |
可发送信息至所有人 |
正常,与预期结果一致 |
05 |
私聊功能 |
1.发送消息 2.指定人收到 |
可发送信息至指定人 |
正常,与预期结果一致 |
06 |
发送图片功能 |
1.成功选择图片 2.成功发送图片 3.指定人收到图片 |
可发送并接受图片 |
正常,与预期结果一致 |
仿QQ聊天程序模块测试主要是针对用户的操作,从测试结果中可以看出该模块的所有功能均能正常实现,且测试结果与预期结果一致。
7 结论和心得
学生1姓名:张睿滢
心得:在进行了为期两周的java实训中,我们小组的项目是仿QQ聊天程序。实现了简单的登录注册功能,群聊私聊功能,发送图片,好友列表等功能。自学了以前没学过的GUI、数据库、UDP多线程等知识,虽然时间很短,但每一天都使我收获满满,受益匪浅,也对之前十几周学习到的java基础知识有了更深的巩固,在实践能力上也得到了提高,感觉在java学习中又更上了一层楼。这次的项目我负责的是简单群聊、好友列表、数据库等功能,遇到了很多困难,查询了很多资料。当然,小组项目单单靠一个人的力量是不够的,经过这次的小组合作,我了解了团队的重要性,三个臭皮匠顶个诸葛亮。只要我们有团队精神,善于与小组成员沟通,能控制好自己的时间,把握好一切时间学习,从基本做起,不会的多查多问,就一定会成功的。加油。
学生2姓名:邬新娇
心得:这个仿QQ聊天程序对我来说是一个极大的挑战,自我自身目前的状况来看很难完成,但是在老师和组长的的引导下有了大概的思路,同时随着四次会议的召开,与伙伴们的探讨愈加深入,一步一步的增加了自己的信心,在组长和同伴的帮助下理解了很多原本不太了解的知识点,之前一直迷茫的数据库也能熟练掌握并导入eclipse了,对线程有了更加深入的学习与实践,有些东西初看可能是晦涩难懂难以实现的,但三个臭禆将赛过诸葛亮,对问题不断探索剖析与研究定能取得进展。这次实验非常感谢老师给我们的机会,让我们的能力更上一层楼并给了我们历练的机会,也非常感谢组长和伙伴的帮助,不管什么时候代码上遇到的问题他们总是及时出现并给出自己的解决方案。同时也谢谢努力不放弃的自己。受益匪浅!!
学生3姓名:陈茜
心得:我们小组实现了用Java程序设计了简单的注册登录、聊天和传送图片功能,虽然登录对密码错误次数没有限制,但若用户忘记密码则不可找回,有待完善的功能还有接收和发送文件。通过这次的课程设计,我们在Java方面的知识提高了不少,还学会了开发设计需要团队精神,让我明白了小组合作的重要性。我们互帮互助,共渡难关,最终成功完成目标。
第二阶段第三次
第三天项目进展待完成任务进行中的任务已完成任务前端重构前端重构活动页面活动页面收货地址收货地址bug调试bug调试成员贡献成员贡献比江泽平20%李胜昌20%刘向东20%丘雨晨20%黄鸿伟20%困难与问题动态获取省市区信息会对数据... 查看详情
第二阶段冲刺第三天
一、站立会议信息 确定了成员的任务进度,对遇到的问题进行了交流,互相提供学习的经验,在团队内部共享了插件和视频资源。 二、任务进度 数据库设计完成,搜索功能正在完善中,消息的表单进行了设计,对表单... 查看详情
大白鱼备考云笔记第二冲刺阶段第三天
昨天干了什么:根据对软件的总结进行修改今天准备干什么:增加注册登录主页面遇到困难没有:注册界面注册的信息保存在数据库,供下一次使用 查看详情
第三组交互设计文档,修改时间:2017/07/30
第三章社会理解力与友谊
...、友谊的重要性五、鼓励建立友谊的策略友谊发展的第一阶段——3~6岁(一)适合第一阶段的方案友谊发展的第二阶段——6~9岁(二)适合第二阶段的方案友谊发展的第三阶段——9~13岁(三)适合第三阶段的方案友谊发展的第四阶段—... 查看详情
问题l:aninvisiblehand-(2018年第二阶段个人训练赛第三场)(代码片段)
题目描述ThereareNtownslocatedinaline,convenientlynumbered1throughN.Takahashithemerchantisgoingonatravelfromtown1totownN,buyingandsellingapples.Takahashiwillbeginthetravelattown1,withnoappleinhispossession 查看详情
第三组两个有序表合并
#include<stdio.h>#include<stdlib.h>typedefstructList{ intdata; structList*next;}List;List*createlist();voidprintflist(List*pre);List*sort(List*head);List*add(List*L1,List*L2);int 查看详情
第三组小组作业
计划 估计这个任务需要多少时间200Min开发100Min需求分析5Min生成设计文档5Min设计复审5Min代码规范5Min具体设计10Min具体编码55Min代码复审15Min测试40Min报告16Min测试报告6Min计算工作量5Min事后总结并提出改进计划5Min 点击得分... 查看详情
第三组用例+功能说明+技术说明
场景:一个富有创造力的玩家想要绘制自己喜欢的图形。背景:(1)典型用户:Mondrian(2)用户的需求/迫切需要解决的问题: 用户可以得到自己想要画的图形; &... 查看详情
ospfv3综合实验(第三组)
拓扑图 本次试验规划:拓扑分4个区域,其中区域2采用帧中继实现区域内互通的前提下配置OSPF、ospfv3.R7与R8之间配置rip实现互通,区域1作为nssa区域,实现路由注入.最终实现全局互通。 ... 查看详情
第三组典型场景:浏览成就
1.背景1)典型用户:李某2)用户的需求/迫切需要解决问题:完成成就的乐趣3)假设:用户已经通关,已完成部分成就2.场景李某是一个完美主义者,已经完成所有关卡,但是好奇其他成就内容再一次打开游戏。点击成就列表,... 查看详情
[第三组]典型场景:用户登录,游戏崩溃
一.用户登录1.背景:1)典型用户:Gamer或者Math2)用户的需求/迫切解决的问题:模型加载需要一个等待时间,没有好的开场动画或者背景音乐会使用户觉得无聊3)假设:无2.场景:关于这个场景的文字描述从用户点击软件图标... 查看详情
jetbrains第三组谜题解答(代码片段)
好了,最后来介绍一下Jetbrains第三组谜题的解决办法吧。线索一:推特代码先看看这次的推特代码,和前两组不太一样,这次是真的无意义随机字符串了。不过之前一段时间我正好研究了某软件的配置,它的... 查看详情
第三组典型场景分析————游戏时刻
背景典型用户:李华用户需求:通过通关获取快感场景 李华点击闯关模式进行闯关。开启游戏界面后,他得到了一个几何问题。聪明的李华利用所学知识结合所给工具解决了这个问题,并过关成功。 过关后李华发现他没... 查看详情
第三组冲刺会议2017.7.27
冲刺会议日期:2017.7.27开发小组:Geomestry冲刺经理:程立智成员:程立智李明伦郑昊蔡镇泽温志成汪涵 成员:程立智完成工作:实现多语言在app内即时切换,继续解决bug所遇问题:语言在app内即时切换时第一次点击没反应(... 查看详情
第三组冲刺会议2017.7.23
冲刺会议日期:2017.7.23开发小组:Geomestry冲刺经理:程立智成员:程立智李明伦郑昊蔡镇泽温志成汪涵 成员:程立智完成工作:完成一键还原所遇问题:全屏设置有bug下一步工作:完善选关界面 成员:李明伦完成工作:... 查看详情
第三组冲刺会议2017.7.28
冲刺会议日期:2017.7.28开发小组:Geomestry冲刺经理:程立智成员:程立智李明伦郑昊蔡镇泽温志成汪涵 成员:程立智完成工作:实现主界面动画,修正多语言bug,添加BGM音量控制和播放暂停功能所遇问题:通宵贼困下一步工... 查看详情
第三组冲刺会议2017.7.29
冲刺会议日期:2017.7.29开发小组:Geomestry冲刺经理:程立智成员:程立智李明伦郑昊蔡镇泽温志成汪涵 成员:程立智完成工作:实现全局多语言,各种界面大小自适应,添加系统推送所遇问题:界面难以跟随设置立即更新下... 查看详情