第一篇:软件工程课程设计报告 之 总结性报告
总结性报告
1. 时间
飞Q2012项目从拟定好课题起,经过问题定义,可行性研究,需求分析,概要设计,详细设计,主要编程,分布测试,总体测试,到整体装配完成历时一个半月。
2. 人员
主程序员(组长):王昌帅
辅程序员:司吉峰、王璐、纪晓文、王松松
文档管理员:王璐、纪晓文
3. 遇到的困难
服务器方面:最开始我们选用的登录模式是利用sqlsever从硬盘上的数据库中读取账号密码进行匹配登录,但这种读取机制降低了登录速度,经过修改,改用了将好友账号密码预读入内存中,直接在内存中进行读取,大幅度节省了登录时间。
客户端方面:区别于类似的大多数即时聊天工具的消息传送机制(即向服务器发送消息经服务器转发),我们利用了典型的p2p(点对点)机制,当好友聊天时,服务器避免了接收和转发消息的负荷,减少了线程数量,既减轻了服务器压力同时又提高了好友间消息传送的速度和质量。
4. 系统性总结
本系统具有以下特点:
采用 C/S通信模型设计,有效减轻了服务器的负担,便于后台的管理。将任务合理分配到 Client端和Server端来实现,降低了系统的通讯开销。
采用了Java语言,因为用Java设计的系统是跨平台的,在任何操作系统上,只要安装了Java虚拟机,就可以运行本系统,不用受平台的限制。
在客户端都和服务器端都实现了多线程编程技术,以提高系统的效率。使用线程可以把占据长时间的程序中的任务放到后台去处理。
本系统这实现了网络聊天工具所具备的基本功能,即注册、登录、查找好友,添加好友、更改个人资料、查看好友资料、添加删除分组、各分组之间转移好友、发送消息、接收消息、接收系统消息等,还添加了一些特色功能,如隐身,头像的变化,系统管理员可以向每个客户端发送系统消息,上线下线在好友客户端都有提示,密码丢失可以通过密码找回功能通过设置的密保问题找回密码,并可以判断密码的安全等级等。本系统实现了一个与Tencent QQ相似的友好操作界面,简单,易用,适合用户的操作习惯。
该系统具备了网络聊天工具所具备的基本功能,但还有一些功能还没完善,如用户聊天之间的方式仅限于文本通信,还没实现文本传输功能。还没实现修改用户资料的功能等。系统或许存在一些未知的Bug,还需要进一步的改进和测试。在以后的研究中,我们还会研究安全通信协议,保障通信的安全,提高系统的实用性等
本课题需要继续完善的功能有:
设计测试用例,全面、系统地测试该系统所存在的一些缺陷;
扩展即时消息系统的服务范围,增强系统工作的稳定性和健壮性。
5. 收获与经验
本次课程设计是自大一以来工作量最大的同时也是历时最长的一次大作业任务。与之前大作业不同的在于,这次课程设计所设计的项目课题,所用的编程语言,用到的知识都是以前没有接触过的,完全通过自学掌握。所以工作进度最初进展很慢,不过通过对新知识的学习,和项目实践的锻炼,深入学习java可视化编程,完善操作界面,使其更加适合用户的操作习惯; 设计安全通信机制,保障通信的安全; 加入文件传输功能,丰富用户的信息交流方式;
掌握专业知识的同时,更重要的是项目经验,以及实践中处理各种问题能力的培养。
通过本次项目的复习,我们了解了一个完整的软件开发过程,包括课题定义、可行性研究,需求分析,概要设计,详细设计,测试工作,进一步完善,设计使用说明书,总结提交实验报告。以及其中不同人员和不同的工作,主程序员是一个项目团队的核心,指导整个项目组各个成员的工作,规划整个项目的结构,统一各个部分函数接口,承担着编程过程中最核心的任务,以其为核心各个部分才可以慢慢扩展开来。辅助程序员主要负责各个独立部分的编程设计,对辅助程序员来说,独立性较主程序员的任务更大一些,但是,却要求辅助程序员对自己承担的任务有必须清晰的了解,因为到后期各个部分连接的时候肯定会出现一些问题,修改这些错误要求必须对不同部分有很详细的了解。文档管理员承担着大部分文档编辑工作,但对具体的程序代码也要有一定的了解。
本次课程设计最重要的是让我们收获了一些宝贵的项目开发经验:项目最开始的全局规划,接口统一工作很重要以及数据结构的选择因为这涉及到以后各部分连接时的统一问题,一旦刚开始没有统一好,连接时会有很多问题,导致各部分不能很好的连接,很多功能或属性没有很好的利用。另外,项目后期的bug修改也很重要,因为由不同程序员编写程序在正确性、高效性,和格式上都有很大的不同,自然会在连接时产生一些问题,更改这些问题时便不再是某个部分的问题,而是全局的问题,需要各个程序员协调完成修改工作,而且我们也了解到,工程项目越大,后期产生的bug也会越多,起初我们忽视了后期bug修改的工作量,导致在完成时间上一拖再拖。
总而言之,尽管本次课程设计使我们纠结了很长的时间,遇到了很多困难,但我们真心的为我们所获得工作经验和成果而高兴,截止到完成文档时,我们的飞QQ2012已经实现了局域网内以及校园内网各个客户端的即时聊天,并且速度和质量得到了各用户的好评,我们还将继续完善飞Q2012,让更多人知道了解它,继续学习继续努力。
第二篇:软件工程课程设计报告(个人)2010
软件工程课程设计报告(个人)
课程设计题目:研究生教务管理系统
专业:信息与计算科学班级:
报告人姓名:学号课程教师:实验指导教师:
实验地点:
完成起止日期:
[正文]
一、课程设计概述(目的、任务、参考资料)
1.项目的目的根据研究生管理部门的要求,面向针对研究生和导师这一特殊的群体,针对教务信息数据混乱的情况,利用电脑信息化的优势,为理学院研究生系统建立研究生教务管理系统,使研究生管理中的各项实际业务工作切实的映射在系统内部,为学院提供一个方便的、快捷的、一体化的集成信息化环境。
2.项目的任务
根据研究生教务管理中的具体需求,该项目的任务可分为7个模块进行
设计划分,每个模块都要完成具体的任务
任务一:基础平台
任务:建立导航登陆界面,使用户能用密码登陆页面,了解信息,下载表格文件,获得具体操作权限。
任务二:学籍管理
任务:研究生登路后,可进行基本信息查询、成绩查询、修改密码的功能操作;管理员则可进行修改用户信息、创建账户、数据上传或下载的操作
任务三:智能排课:
任务:包括完成自动排课、手动调整、选课管理、课表查询及打印等更能
任务四:导师管理
任务:建业数据库,使研究生和导师、管理员可以查询导师的基本信息,并且管理员可以对数据等做出修改和调整。
任务五:教学教务管理
任务:该部分主要针对管理员展开建设。管理员的职责是以管理、统计、修改数据信息为主。建议以基本信息维护、入学、毕业信息管理、任课安排和考试安排为主要功能的模块。
任务六:科研管理
任务:主要完成的任务是,研究生能够顺利提交科研项目,管理员能无误的将项目挂在网页上
任务七:评优管理
任务:管理员能将通过审核的名单公示在网页上。
3.项目的参考资料
[1] 《LoadRunner使用手册》
北京长江软件有限公司编制
[2] 《软件测试:第二版》
Paul C.Jorgensen著/机械工业出版社
[3]《ASP.NET网站开发》(丁昊凯、许静雯、谢黎文编著 出版社:电子工业出版社)
[4]《数据库系统概论(第四版)》(作者:萨师煊王珊出版社:高等教育出版社)
[5]《软件工程导论(第五版)》(作者:张海藩出版社:清华大学出版社)
二、采用的主要技术与方法
1.项目采用的主要技术:
技术路线:
基于微软ASP.NET框架及应用环境,遵循Web Service和XML技术、B/S模式,采用三层结构开发
系统平台:
Windows 2003 Server SP1(以上包括SP1)
MS Sql Server 2005
IIS 6.0及以上
开发工具:
Microsoft Visual Studio.NET 2005
PhotoShop 7.0
CorelDraw 12
Dream Weaver 8.0
开发语言
C# 2.0
ASP.NET 2.0(3.0)
XML/XSL
JavaScript
测试软件
LoadRunner
三、实现步骤与在实现项目中我获得的主要成果
1.项目的实现步骤
1)首先,小组成员根据研究生管理部门提供的资料,针对研究生的具
体要求,讨论研究后编写需求分析文档,将项目软件分为7个模块,并完成初步的界面设计;
2)之后,在需求文档的基础上,针对研究生、导师以及管理员的不同
需求,根据模块进行设计文档的编写,并着手进行软件的设计以及
完善界面设计。
3)在完善需求文档和设计文档之后,小组成员制作PPT,并通过审核。
4)在完成项目前期工作之后,小组中的软件编写成员依据软件工程的原则开始进行具体的软件编程,另外的部分成员则进行测试计划文
档及测试设计文档的编写。并在之后的几天中对其进行整理修改以
完善文档。
5)在软件基本完成之后,小组成员分工进行软件的测试,完成测试结
果。针对测试中发现的问题,讨论并对软件进行修改。
6)最后,对项目进行总结,编写总结报告。
2.我获得的主要成果:
由于我在软件编程方面比较薄弱,在完成项目的过程中,我主要负责的是文档的编写以及项目的测试方面的工作。包括如下部分:
研究生教务管理系统需求分析书中,第四部分需求规格以及第五部分项
目具体的功能规格;
研究生教务管理系统软件设计文档的大体框架以及其中的第一部分引言
以及第二部分系统设计概述;
研究生教务管理系统客户端测试计划(全部);
研究生教务管理系统客户端测试设计的大体框架以及第一部分引言、第二部分测试设计;
研究生教务管理系统用户使用手册(除第三部分运行环境)
四、个人小结
主要困难:
在项目进行的初期,虽然我们对用户的需求有大致的了解,并有参照模版,但由于本科生教务管理系统和研究生教务管理系统的具体项目上有着某些差异,这要求我们要注重了解其中的区别,并对模版进行分析及修改。在对需求文档进行编写时,文字表述不足的弱点很轻易的就显示出来,这要求我们对网络教学上给出的资料及范例进行详细的阅读,才能写好需求文档;在接下来的文档编写时也有同样的问题。
在项目进行的中期,即软件的设计阶段。在了解具体需求之后,编写设计
文档困难不大,但是由于编程能力的强弱问题,小组成员不可能完全都进行编程,虽然这是小组分工后可以解决盖的问题,但是由于软件编程能力的缺乏,会造成在小组讨论和文档书写上出现代沟,所以个人认为,小组成员拥有对程序编成有一定的了解是有必要的。
在项目的测试后面阶段,即软件的测试阶段。初次接触具体测试的我们,对新的软件不了解,导致产生一定的困难,这要求我们对LoadRunner软件自主的进行学习并掌握如何运用该软件进行项目的测试。
五、附录(个人完成的文档)
第三篇:《软件工程》课程设计个人报告
软件工程课程设计报告
海天一色网上书店
《软件工程》课程设计个人报告
题 目 网上书店
学 院 名
称 :信息科学与工程学院 专 业 班
级 :计算机09-2 班
报 告 人姓名 :
梁宏
报 告 人学号 : 200901051413
承 担 角
色 : 网页设计员
同 组 组
长 :
安文龙
同组其他成员 : 李金闪、吕颖、孙娜
指 导 教 师 : 孙红梅
完成起止日期:2011-10-17至2011-12-20 软件工程课程设计报告
海天一色网上书店
一、课程设计实验概述
1.目的与任务
1)通过本课程设计的实践及其前后的准备与总结,复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识,为适应毕业后团队合作开发规模稍大项目和综合应用本专业所学习的多门课程知识创造实践机会,为学生提供主动学习、积极探索与大胆创新的机会。
2)学习研究课程设计指导书,进行分组并且明确每个人在开发小组中扮演的角色及承担的职责,确定目标、初步方案,准备、试用开发环境与工具,以及学习与搜集素材,借阅、购置必要的书籍与材料,做好小组与个人的开发记录、总结,做好小组内外的交流与互助。
2.开发环境
本项目采用客户机/服务器原理,客户端和用户端的程序是建立在Windows XP/Win7 系统上。
3.参考资料
1)《软件工程》钱乐秋、赵文耕、齐治昌 等清华大学出版社郑人杰等 2)覃剑锋 张钢编著,ASP网站建设专家,机械工业出版社,2001 3)武延军 赵彬编著,精通ASP网络编程,人民邮电出版社,2000 4)李赫雄等,SQL SERVER 2000应用程序开发,邮电出版社,2001 5)刘育楠著,动态网页设计培训教程,清华大学出版社,2001 4.任务完成的一般过程
学习课程设计指导书—>分组并明确角色—>对项目进行分析确定目标、初步确定方案,选择开发环境及工具—>进行课程设计—>进行总结
5.软件配置
以Microsoft Visual Studio 2008为开发软件的应用程序,是采用SQL Server Management Studio Express的为开发软件的数据库服务程序。
6.个人完成的程序模块和文档清单 参与各个文档的讨论及修改母版、首页的设计,网页整体设计,角色划分及 软件工程课程设计报告
海天一色网上书店 权限的设计,参与小组课程设计报告的完成。
二、本小组个人承担部分的主题、构思与创意 1.小组选题特色:
小组内承担着网页设计员的职责。首先我们网站主要提供的基本服务项目有:用户的注册,登录;用户的分级浏览或图书选购;店主对进书、售书、库存、帐目、客户的管理;以及网站的日常维护(比如,网上书店简介;网上书店信息发布;客户留言及对客户留言的反馈)。这些都是需要大量网页来呈现的,网站的前台就是我们程序的脸面,因为它是我们程序唯一能与执行者关联的模块,所以我认为网站的设计员同样也是一个软件开发团队里不可缺少的一部分。
经过我们小组讨论,网页首先用的动态的,所以这就要求我作为网站设计员必须熟练的运用ASP和C#的一部分内容,尽我最大的能力把网也弄的符合人们现在的观赏能力,让我们的用户能喜欢而不是讨厌我们的网站,让用户能在使用我们网站的时候有个愉快的购物体验,让他们能记住我们的网站。
2. 个人贡献:
本人承担的角色是网页设计员,参与各个文档的讨论及修改母版、首页的设计,网页整体设计,角色划分及权限的设计,参与小组课程设计报告的完成。软件工程课程设计报告
海天一色网上书店
三、本人实现项目的过程与步骤以及遇到的困难
1、因为以前没有做过这个大规模的程序,也没有动态网页设计的经验,好在以前自己为了满足自己的好奇心做过静态的网页,对html网页语言和Dreamweaver,photoshop软件的使用都有一定的了解,但是这些知识的积累还不足以满足我们这次项目的要求,所以我是边学习边应用。
首先在网上了解了网页设计的基本步骤:
一、用“原型法”细化网站设计需求
二、网页链接的深度、广度和耦合程度
三、网页基本布局
四、网页空间中的视觉导向
五、网页空间的秩序及运动趋势
六、网页中的留白
七、文字信息的设计和编排
八、图片和动画
九、网页空间中的运动趋势线
十、使用Web标准设计网页
因为我的主要角色是网页设计,所以要把我的网页框架思路介绍给同组中负责编码的成员,因此,为了实现网页设计,我还参与了网页模板的设计。
母版的设计要综合考虑各方面的因素,不能过于简单,因为过于简单不能体现母版的使用价值,也不能过于复杂,因为过于复杂会影响其他页板页的设计,使其影响面板设计的灵活性,有的页面因为特殊的需要甚至不用继承模板页。
2、首页的设计要注重对整个网站的引导作用,网页版面设计要力求简单但是有特色,具有良好的网络购书界面,读者可以通过分类查找方式选择自己所需购买的图书。一个网站,能否吸引顾客的经常光顾,界面的美观也显得非常重要。本书店系统通过精心打造,让书店的设计充分体现软件的时尚、大众化。
1)首页中拥有显示进入各个模块的导航按钮,用户可以直接点击进入相应的模块。
海天一色网上书店首页如下图所示: 软件工程课程设计报告
海天一色网上书店
2)要在本网上书店进行购书,首先要注册为网站会员,填写详细个人信息。通过会员注册提取用户基本信息。注册内容包括登录名,密码,真实姓名,E—ail等信息。
会员注册页面如下:
3)为了便于对网上书店进行管理,以及从网站的安全性考虑,我们将科大书店首页与后台管理系统进行了分离,以防不法分子进行攻击。海天一色书店的内部管理系统的界面: 软件工程课程设计报告
海天一色网上书店
对于有关图片编辑的地方,因为对于Photoshop掌握的并不好,所以选取了另一款简易的软件:ACDSee,具有多照片叠加等功能,更有50余种照片特效,数秒即可制作出影楼级的专业照片。因此相对于Photoshop来说,ACDSee更加容易上手。
3、网站设计过程中遇到的大问题不多但小问题还真得挺多的,光是网页设计就费了很长时间,起初为了接触网页,翻阅了很多资料,最终确定的方就是边查资料边学习。
网页页面的设计中最主要的就是页面风格的设计,为了使客户在登陆网站之后又一个舒适的页面,单纯的依靠自己的喜好设计页面鲜艳不合乎情理,为此,我专门登陆了一项大型公司的网站做了相应的比较和分析,例如,东软和华维的网站,他们的首页想对于一些娱乐网站来说都是比较简单,给我一种简单的舒适的感觉。结合我们网站的特点,经过和其他组员的商定最终确定了现在的网页格式。
四、实验个人小结
因为以前没有做过这个大规模的程序,也没有动态网页设计的经验,好在以前自己为了满足自己的好奇心做过静态的网页,对html网页语言和Dreamweaver,photoshop软件的使用都有一定的了解,但是这些知识的积累还不足以满足我们这次项目的要求,所以我是边学习边应用。由于自己一开始的不自信,觉着这样的任务也许自己并不能很好的完成,也许会拖累自己组的人。但是当我做完整个项目回过头看时,才发现自己一开始的想法是错误的,其实并没 软件工程课程设计报告
海天一色网上书店 有自己想象的那么困难。
通过此次课程设计,使我更加扎实的掌握了有关软件工程方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!
回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。
实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。
第四篇:软件工程课程设计报告 之 详细设计报告
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
详细设计说明书
1、引言: 1、1编写目的:
在前一阶段(概要设计说明书)中,已解决了实现该系统需求的程序模块设计问题。包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。在以下的详细设计报告中将对在本阶段中对系统所做的所有详细设计进行说明。
在本阶段中,确定应该如何具体地实现所要求的系统,从而在编码阶段可以把这个描述直接翻译成用具体的 程序语言书写的程序。主要的工作有:根据在《需求分析说明书》中所描述的数据、功能、运行、性能需求,并依照《概要设计说明书》所确定的处理流程、总体结构和模块外部设计,设计软件系统的结构设计、逐个模块的程序描述(包括各模块的功能、性能、输入、输出、算法、程序逻辑、接口等等)
在以下的各个阶段中,《用户操作手册》将与本阶段的工作紧密结合,努力作到 让用户易懂易学。《测试报告》和《维护报告》也将参考本说明书,检验本系统的各项性能指标,及时发现纰漏及时修补,一定要把功能强大、稳定可靠、便于维护的机票预定系统交到用户手中。1、2项目背景:
在本即时聊天工具项目的前一阶段,也就是需求分析阶段,已经将系统用户对本系统的需求做了详细的阐述,这些用户需求已经在上一阶段中对不同用户所提出的不同功能,实现的各种效果做了调研工作,并在需求规格说明书中得到详尽得叙述及阐明。
本 飞Q即时聊天系统项目主要由两部分形成:
1、客户端;
2、数据库服务器端;
山东科技大学 王昌帅 wangchangshuai0010.iteye.com 1、3文中特殊的定义和缩写:
1.3.1定义
SQL SERVER: 系统服务器所使用的数据库管理系统(DBMS)。SQL: 一种用于访问查询数据库的语言
事务流:数据进入模块后可能有多种路径进行处理。主键:数据库表中的关键域。值互不相同。
外部主键:数据库表中与其他表主键关联的域。ROLLBACK: 数据库的错误恢复机制。
1.3.2 缩写
系统:若未特别指出,统指本机票预定系统。
SQL: Structured Query Language(结构化查询语言)。ATM: Asynchronous Transfer Mode(异步传输模式)。1、4参考资料:
1. 以下列出在概要设计过程中所使用到的有关资料: 2. 需求规格说明书
飞Q软件开发小组
3. 概要设计说明书 飞Q软件开发小组
4. 用户操作手册(初稿)
飞Q软件开发小组 5. 软件工程及其应用 周苏、王文等 天津科学技术出版社 6. 软件工程
张海藩 清华大学出版社
7. Computer Network A.S.Tanenbaun Prentice Hall
8.网络上的资料
文档所采用的标准是参照《软件工程导论》沈美明著 的“计算机软件开发文档编写指南”。
山东科技大学 王昌帅 wangchangshuai0010.iteye.com 2.总体设计: 2、1需求概要:
应广大用户的要求,要求做一个性能更高更人性化的即使聊天工具,我飞Q软件设计小组努力为大家写一个更好的即时聊天工具。
飞Q2012聊天系统的总目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的飞Q2012聊天系统,实现添加好友,删除好友,相互聊天系统,为人们聊天提供准确、精细、迅速的信息。
根据可行性研究的结果和客户的要求,分析现有情况及问题,采用Client/Server结构,将飞Q2012聊天系统划分为两个子系统:客户端子系统,服务器端子系统。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要单明了,易于操作,服务器程序利于维护。2、2 软件结构:
各模块之间的关系已由概要设计给出
下面介绍详细的设计
登陆模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
登录找回密码输入错误输入飞Q帐号和密码申请帐号输入格式是否正确正确进入找回密码界面点击登录进入申请界面密码正确?密码正确进入飞Q聊天主界面密码错误登录失败结束 申请模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
开始输入基本信息N点击新用户注册信息是否完整Y显示已申请的QQ帐号,密码点击登录QQ进入QQ登陆界面结束
安全模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
开始点击安全概述点击修改密码点击常见欺骗点击修改密保常见欺诈立即完成是否设置密保Y判断安全状况隐患危险N密保是否正确Y提交输入验证密保设置密保N密保问题是否正确提交Y提交N是否设置密保Y输入原密保问题输入密保问题N修改密码修改密保输入新密保提交良好结束
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
聊天模块聊天窗口1聊天窗口2窗口1窗口2发送发送窗口2信息转换站窗口1信息转换站
服务器端:
1、申请模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动线程将可申请帐号预读到内存中等待用户申请。。返回继续监听客户端返回申请到的QQ用户请求启动线程调用子线程次数过多此ip是否申请次数过多取出一个可申请的qq返回申请到的QQ在数据库中建立此人的基本信息档案结束c
2、登录模块山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动线程将密码预读到内存中等待用户申请。。返回继续监听该帐号另一客户端客户端返回申请到的QQ用户请求启动线程调用子线程重复则发送终止命令判断是否是重复登录不重复密码错误判断密码是否正确给其他好友发送登录信息、读取系统消息读取系统消息所以在线好友返回申请到的QQ返回用户的好友列表读取好友列表数据库结束
3、添加好友模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动接收添加好友同意与否信息线程10
等待用户。。返回继续监听客户端发送同意与否信息启动子线程调用子线程读取同意与否信息不同意同意否?同意写入数据库数据库客户端同意信息子线程结束 10 山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动接收添加好友请求线程11
等待用户申请。。返回继续监听客户端用户请求启动子线程调用子线程不允许任何人加入判断要添加的用户的添加权限允许任何人加入数据库需要验证结束 11 山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动接收添加好友验证线程12
等待用户申请。。返回继续监听客户端用户请求启动子线程调用子线程读取验证信息判断要添加的用户是否在线发送同意与否不在线数据库在线子线程结束要添加的用户同意的同时数据库相应添加
4、删除好友模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动删除好友请求线程13
等待用户请求。。返回继续监听客户端用户请求启动子线程调用子线程删除成功读取要删除的人在双方数据库中删除对方数据库发送刷新界面命令另一客户端结束
5修改好友昵称模块山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动修改好友昵称请求线程等待用户请求。。返回继续监听客户端用户请求启动子线程调用子线程读取要修改的人在数据库中修改数据数据库结束
6、查找用户模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动查找用户请求线程15
等待用户请求。。返回继续监听客户端用户请求启动子线程调用子线程读取要删除的人判断是精确查找还是按条件按条件精确构造SQL语句构造SQL语句返回结果列表数据库构造搜索结果列表返回结果结束
7、安全模块
7.1、设置密保模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动监听用户设置密保请求线程等待用户请求。。返回继续监听客户端用户请求启动子线程调用子线程读取此用户的信息,及密保设置信息返回成功信息构造SQL语句写入数据库数据库写入数据库完成后结束
7.2、判断是否设置密保模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动监听用户请求线程等待用户请求。。返回继续监听客户端用户请求没有设置密保启动子线程调用子线程判断是否设置密保读取密保问题返回密保问题信息数据库得到该用户密保问题结束 山东科技大学 王昌帅 wangchangshuai0010.iteye.com 7.3、判断密保答案是否正确模块
启动接收用户密保答案线程等待用户请求。。返回继续监听客户端用户请求启动子线程错误调用子线程获得密保答案读取密保问题及答案数据库返回数据判断密保答案是否正确返回正确信息子线程结束
山东科技大学 王昌帅 wangchangshuai0010.iteye.com 7.4、修改密保模块
启动接收用户密保答案线程等待用户请求。。返回继续监听客户端用户请求启动子线程错误调用子线程获得密保答案读取密保问题及答案数据库返回数据判断密保答案是否正确返回正确信息子线程结束
7.5、修改密码模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动接收用户重设密码线程等待用户请求。。返回继续监听客户端用户请求调用子线程启动子线程读取密码信息返回成功信息重设密码在数据库中重写此用户密码数据库子线程结束
7.6、找回密码
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动监听用户请求线程等待用户请求。。返回继续监听客户端用户请求没有设置密保启动子线程调用子线程读取密保问题判断是否设置密保旧密码不正确判断旧密码是否正确返回重设成功信息数据库重设密码写入数据库子线程结束
8、移动好友模块 山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动移动好友昵称请求线程等待用户请求。。返回继续监听客户端用户请求启动子线程调用子线程读取基本信息在数据库中修改数据数据库结束
9、组操作模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动组操作请求线程23
等待用户请求。。返回继续监听客户端用户请求启动子线程调用子线程读取基本信息判断是对组的什么操作赠加组删除组修改组的名称生成SQL语句在数据库中修改数据数据库结束
10、发送系统消息模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
开始服务器线程产生的不通的发送消息要求判断是发哪种类型的系统消息用户1用户3用户2用户4给相应的用户发送相应的系统消息。。结束
11、更新个人信息模块
启动修改个人信息请求线程等待用户请求。。返回继续监听客户端用户请求启动子线程调用子线程读取信息生成SQL语句在数据库中修改数据数据库结束
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
12、请求ipPort 模块
启动修改个人信息请求线程等待用户请求。。返回继续监听客户端用户请求启动子线程调用子线程读取信息读取ip和port读取另一用户ip和portHashmap返回此人ip和chatport判断ipport是否为空返回不在线信息结束、心跳模块
13.1、用户心跳接收处理模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动修改个人信息请求线程26
等待用户请求。。返回继续监听客户端用户请求启动子线程调用子线程读取信息读取ip和port读取另一用户ip和portHashmap返回此人ip和chatport判断ipport是否为空返回不在线信息结束
13.2、服务器定时检测超时模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动循环检测用户是否在线的线程得到hashmap中的一个用户是否超时?是推拉检测模块否得到hashmap中的下一个用户
13.3、服务器推拉检测在线模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
启动循环检测用户是否在线的线程客户端是否在线我在线向用户询问是否在限定时间得到用户客户端响应是更新记录接收用户心跳时刻的hashmap否在数据库中相应修改从记录接收用户状态的hashmap删除此用户从记录接收用户在线信息的hashmap删除此用户从记录接收用户心跳时刻的hashmap删除此用户数据库此线程结束
14、添加可利用飞Q号
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
开始否读取数据库中可申请的帐号数Sleep 一小时判断数量是否过少否是添加一些可利用的帐号添加到内存中的可申请帐号arraylist中
3、程序描述:
客户端总模块:
山东科技大学 王昌帅 wangchangshuai0010.iteye.com 30
登陆模块 登录过程
对在飞Q登录信息界面中输入的各项信息进行初步检验。若发现错误,输入数据全部清空,以让用户重新输入一次。若未发现错误,转入主界面。其中的错误种类有:
输入数据不匹配
帐号 数据库没有该帐号
密码 与对应账号的密码不匹配 2 输入数据不能为空 if(账号为空){ 请输入账号再登陆 } else if(账号长度小于6或对于20){ 请输入正确的账号,账号可以位数字或Email地址。
} else if(密码为空){ 请输入密码后再登陆 } else { 通知服务器 账号为:xxx 密码为:xxx的请求登陆 } 2申请过程
对之前没有申请飞Q的用户,不能登录飞Q,而必须点击申请,成为飞Q大家庭点击之后转入申请界面
寻找忘记密码过程
对之前申请飞Q的用户,如果忘记密码,请不要担心,点击界面上的“忘记密码”,点击之后转入寻找密码界面
1.的一员。
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
2申请模块
对在飞Q申请信息界面中输入的各项信息进行账号申请。若发现错误,输入数据全部清空,以让用户重新输入一次。若未发现错误,转入账号申请成功界面。
if(昵称为空){ 请输入昵称 } else if(密码格式错误(小于6或大于20)){ 密码必须6-20个字符!
密码框清空,重新输入 } else if(两次密码输入不匹配){ 两次密码输入不一致
密码框清空,重新输入 } else { 获取注册信息
点击新用户注册,向服务器传输注册信息 }
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
3 增删改查模块
3.1 查找好友模块
对在飞Q查找好友界面中选择查找类型(精确查找或条件查找),输入各项查找信息进行好友查找。若发现错误,输入数据全部清空,以让用户重新输入一次。若未发现错误,转入查找结果界面。在查找结果界面中选择要添加的好友,双击,查看该好友的详细资料,点击添加,转入好友信息验证界面。在好友信息界面,输入验证信息,完成好友的添加。
Search类
if(查找联系人){ if(精确查找){
if(查询条件为空)
{
请至少填一个查询条件
}
else { 获取查找信息
点击查找把查找信息传递给服务器 } }
else if(条件查找)
{ 获取查找信息
点击查找把查找信息传递给服务器
} Search_rasult类 if(点击添加好友){ if(添加好友选择的是自己)
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
{
对不起,自己不能加自己为好友!
重新选择
} else { 把选择的好友发送给服务器
} } else if(关闭){ 放弃添加为好友
} Addfriends类
if(确定添加为好友){ 把选择的好友信息发送给服务器 } else if(取消){ 放弃添加为好友 } 3.2 删除好友模块
找到你要删除的对象所在的用户组,展开,找到该用户,右击,点击好友删除,然后刷新好友列表;
3.3.3 修改个人资料模块
点击自己头像,转入个人资料界面,更新你所需要的信息选项;确定更新点击确定,如果不想更新,点击取消即可;
更改头像:点击更换头像,即可转入更换头像界面,界面中陈列了各种头像,点击你想要的头像,即可显示该头像的不同样式,一供你参考。思考之后确实想更换,点击确定,立刻刷新所有界面,确保头像更换。如果不想更换,点击取消即可。
3.4 好友移动模块
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
找到你要移动的对象所在的用户组,展开,找到该用户,右击,点击移动,在弹出框中选择移动的组对象,向服务器发送相应的数据,然后刷新好友列表;
3.5 组操作模块 <1> 修改
找到你要修改的用户组,右击点击重命名,向服务器发送该账号的修改组信息,刷新好友列表,即可看见修改成果.<2> 删除
找到你要删除用户组,展开,右击,点击删除分组,向服务器发送该账号的删除组信息,然后刷新好友列表;
如果,要删除的是默认分组“我的好友”,系统不提供删除权限。<3> 添加
在好友列表中右击,点击添加分组,输入分组名,点击确定,向服务器发送该账号的组信息,不想添加,点击取消。安全模块
对在飞Q安全界面中,分为“安全概述”,“常见欺诈”,“修改密码”,“修改密保”; <1> 安全概述
安全概述 概述了你当前飞Q的安全状况 if(设置密保并且密码等级为良好以上){
安全状况良好请继续保持良好的习惯
可立即完成设置密码 } else if(设置密保并且密码等级为中等以下){ 安全状况存在隐患请定期修改密码
立即完成设置密码 } else { 安全状况危险请立刻设置密保问题
立即完成设置密保 } <2> 常见欺诈
常见的集中欺诈方式:钓鱼网址,视频欺诈,中奖欺诈,冒充好友欺诈;
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
<3> 修改密码
修改密码之前请确保设置密保;
如果没有设置密保问题,请先设置密保问题,以确保该账户的安全性。如果设置了密保问题,请先输入原密保问题,核对用户身份。密保正确才可以修改,如果错误,对不起,不能修改密码。
if(三个密保问题有空){ 对不起,密保问题回答不能为空!
没填写的须不完整
} else { 向服务器获取对应密保问题的答案
If(回答错误){ 提示:对不起,密保问题回答不能正确
全部清空,重新输入 }
else { 修改密码
输入旧密码
if(输入的旧密码正确){
if(新密码为空)
{
提示:密码不能为空
}
else if(两次密码输入不一致)
{
提示:两次密码输入不一致
}
else if(两次密码输入一致并且不空){ 向服务器发送该账号的新密码
} }
else
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
{ 提示:密码有误,请重新输入
} } } <4> 修改密保
如果没有设置密保问题,设置密保问题。
如果设置了密保问题,请先输入原密保问题,核对用户身份。密保正确才可以修改,如果错误,对不起,不能修改密保。
if(没有设置密保){ 选择密保问题回答
If(选择的密保问题重复){ 提示:选择的密保问题重复
重新选择密保问题 }
Else if(修改密保时验证密保问题为空){ 提示:修改密保时验证密保问题为空 } Else { 服务器发送该账号的新密保问题和新密保问题对应的答案 }
} else { 已经设置设置密保
向服务器获取对应密保问题的答案
输入密保问题答案(用户)If(回答错误){ 提示:对不起,密保问题回答不能正确
全部清空,重新输入 }
else { 修改密保
选择密保问题回答
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
If(选择的密保问题重复){ 提示:选择的密保问题重复
重新选择密保问题 }
Else if(修改密保时验证密保问题为空){ 提示:修改密保时验证密保问题为空 } Else { 服务器发送该账号的新密保问题和新密保问题对应的答案 } } } 聊天模块
所有的聊天窗口的即时聊天信息 只要点击发送,聊天信息会发送到服务器中信息中转站中;在信息中转站中判断该发送的对象,再由服务器发送给对。
服务器模块:
1、申请模块
将用户发送过来的申请信息写入临时变量对象中并存入数据库中 在数据库中建立如下信息
在main数据库的各表中插入申请的号码
在users 数据库中建立该帐号的档案,包括好友列表、添加好友验证表、历史记录表等等
2、登录模块
接收数据并存入loginpot中
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
判断接收的密码和服务器中的密码是否相同,相同则返回登录成功,并发送一系列信息(见下),不相同则返回登录失败,3、添加好友模块
1、发送添加好友请求:
用户发送添加好友请求包,服务器解析出要添加的好友,然后从数据库中查找出该用户的添加好友权限jugde 然后进行一下判断: switch(judge){ case 1://假如统一任何人加入
在双方数据库中分别添加对方,并且向被添加的的用户发送的界面刷新命令
break;
case 2: 对方需要验证信息,通知客户端
break;
case 0: 对方不允许任何人加入,通知客户端
break;
}
2、发送验证信息:
用户发送验证信息包,服务器解析出数据,判断要发送验证信息的用户是否在线
If(在线){
在线的话,就把验证信息发送到该用户客户端上并显示 } Else {
不在线的话,就把验证信息存入要发送的用户的数据库中,等到该用户下次登录时候并会提示该用户有添加好友验证信息 }
3、发送同意以否信息
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
用户发送同意与否信息包,服务器解析出数据,判断要发送同意与否信息的用户是否在线,判断同意与否信息是否
If(同意){
写入数据库相应 的信息。} Else {
不对数据库进行操作。}
If(在线){
在线的话,就把同意与否信息发送到该用户客户端,同时把此人的基本信息发送到客户端 } Else {
不在线的话,就把同意与否信息存入要发送的用户的数据库中,等到该用户下次登录时候并会提示该用户有添加好友成功与否信息 }
4、删除好友模块
删除好友模块设计思路比较简单,如下
用户发送删除好友信息包,服务器解析出基本数据,删除发送请求用户的数据库中要删除的好友的信息,同时在对方的数据库中也相应的删除此人信息,并且将删除成功与否信息发送回去,同时给要删除的用户发送刷新界面命令,当然得先判断该用户是否在线
If(在线){
在线的话,给要删除的用户发送刷新界面命令,删除点发送请求的用户的信息 } Else {
不在线的话,不用再进行任何操作 }
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
5修改好友昵称模块
同样,修改好友昵称模块,也很简单明了,不需要进行复杂的逻辑判断,详细过程如下:
用户发送修改好友昵称信息包,服务器解析成基本数据,在数据库中找到该好友的好友列表,修改该用户要修改的好友的昵称,然后子线程就可以终止了
6、查找用户模块
用户发送修改好友昵称信息包,服务器解析成基本数据,首先判断该用户用的是什么搜索模式,If(搜索模式是精确查找模式){
根据内容构造出SQL语句,在数据库中查找出相应的用户,构造出列表发回客户端 }
Else if(搜索模式是按条件查找模式){
根据内容构造出SQL语句,在数据库中查找出相应的用户,构造出列表发回客户端 }
7.1、设置密保模块
用户发送修改好友昵称信息包,服务器解析成基本数据,在数据库中找到该用户的的信息,将密保问题和答案写入该用户的数据库中,假如已有密保问题则转到重设密保模块
7.2、判断是否设置密保模块
用户发送请求后,服务器解析出数据,在数据库中找到该好友,查看该好友是否设置密保,If(设置了密保){
返回密保问题
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
}
Else if(没有设置密保){
发送回去没有设置密保的标识 }
7.3、判断密保答案是否正确模块
用户发送给服务器密保答案信息,服务器解析出相应的数据,从数据库中查找该用户的信息,得到密保问题和答案,进行判断三个问题是否全部回答对
If(三个密保问题全回答对)
{
向该用户客户端发送验证成功的消息 }
Else(三个问题不全对或全不对){
向该用户客户端发送验证失败信息 }
7.4、修改密保模块
这里说明一下,修改密保的模块是在验证密保答案正确的前提下才能进入的,所以此模块仅仅是覆盖掉该用户的,特此声明,呵呵,声明有点晚了。
没有复杂逻辑判断,思路如下:
用户发送给服务器新密保信息,服务器解析出相应的数据,从数据库中查找该用户,在数据库中重写此人的密保问题和答案,然后子线程接收。
7.5、修改密码模块
声明如7.4所示,不再重复 思路如下:
用户发送给服务器新密码信息,服务器解析出相应的数据,从数据库中查找该用户,在数据库中重写此人的密码,同时将新设置的密码加入内存中用户密码hashmap中,然后子线程接收。
7.6、找回密码
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
找回密码其实和重设密保有什么相识的地方,都是先验证信息密保信息是否正确,然后根据正确与否做出相应的处理
用户发送请求后,服务器解析出数据,在数据库中找到该好友,查看该好友是否设置密保,If(设置了密保){
返回密保问题
。。
判断接受的密保答案是否正确
If(三个问题都回答正确){
返回验证成功信息,通知客户端转入重设密码模块
} Else {
返回验证失败信息
} }
Else if(没有设置密保){
发送回去没有设置密保的标识,通知该用户由于没有设置密码,通过此方法不能找回密码。
}
8、移动好友模块
移动好友模块设计思路比较简单,如下
用户发送移动好友信息包,服务器解析出基本数据,在数据库中查到该用户的用户列表信息,更新列表信息,在数据库中做相应的修改
9、组操作模块
由于基本的几个组操作有很多相似之处,所以将几个组操作划为一个模块,设计思路如下:
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
用户发送组操作 信息包,服务器解析出基本数据和命令,判断要进行的组操作是什么操作,然后进行相应的操作,具体设计思路如下:
If(组操作命令为增加组){ 在users数据库中找到此用户的groupsList表,在此表中添加相应的组 } Else if(组操作为删除组){
1、在users数据库中找到此用户的friendsList表,把相应组的好友的组属性改为 我的好友,即将要删除组中的好友放到我的好友 中,而不是直接将他们删除,2、在users数据库中找到此用户的groupsList表,在此表中删 除相应的组
} Else if(组操作为修改组的名称){
1、在users数据库中找到此用户的friendsList表,把相应组的 好友的组属性改为 要修改的组名
2、在users数据库中找到此用户的groupsList表,在此表中删 找到相应的组,修改此组的名称为要修改的名称
}
10、发送系统消息模块
发送系统消息模块是由服务器直接调用的,来完成一些必须的用户响应,此模块发送消息的不同是由器构造函数决定的,其构造函数共有7种,如下:
//
public sendSystemMessageThread(String qq, int status)throws SQLException {
1、发送改变状态
}
public sendSystemMessageThread(String text)throws SQLException { 43 山东科技大学 王昌帅 wangchangshuai0010.iteye.com
2、发送系统消息(全部人)
}
public sendSystemMessageThread(String qq, int sign, String ip_od, String t)throws SQLException {
3、发送上次登录信息(登陆者)
}
public sendSystemMessageThread(String qq, String text)throws SQLException {
4、发送系统消息(对登录者)
}
public sendSystemMessageThread(String qq, systemMessage sys)throws SQLException {
5、发送添加好友请求信息
}
public sendSystemMessageThread(int sign, String qq)throws SQLException {
6、当在其他地方登录时给另一个QQ发送下线通知
}
public sendSystemMessageThread(String qq, systemMessage sys, int agree){
7、给该用户发送好友状态改变
}
由服务器根据不同的需要构造不同 的发送系统消息线程,实现相应的响应
11、更新个人信息模块
用户发送给服务器新个人信息信息,服务器解析出相应的数据,从数据库中查找该用户,在数据库中重写已经更改了的此人的信息
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
12、请求ipPort 模块
此模块是服务器中唯一和聊天相关的监听线程,此种设计方法极大的降低了服务器的压力,获取ip 和聊天port 是聊天中很重要的一个环节,设计思路如下:
用户发送给服务器请求另一个人的port的信息包,服务器解析出相应的数据,从内存中查找另一个用户的ip 和聊天 port,判断是否得到此人信息
If(查询到此人的在线信息){
给客户端返回找到的在线信息 } Else {
给客户端返回没有找到此人信息,也就是此人不在线,客户端
然后做出相应地相应
}
13、心跳模块
心跳相互协作的工作组及即时聊天领域发挥着详单重要的角色,通过发送心跳报,来判断各个部分工作是否正常,以防某个部分运作异常发现不了,造成严重错误。
心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。
用来判断对方(设备,进程或其它网元)是否正常运行,采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经离线。用于检测TCP的异常断开。基本原因是服务器端不能有效的判断客户端是否在线,也就是说,服务器无法区分客户端是长时间在空闲,还是已经掉线的情况。所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开。
比如有些通信软件长时间不使用,要想知道它的状态是在线还是离线就需要心跳包,定时发包收包。发包方:可以是客户也可以是服务端,看哪边实现方便合理,一般是客户端。服务器也可以定时发心跳下去。一般来说,出于效率的考虑,是由客户端主动向服务器端发包,而不是服务器向客户端发。客户端每隔一段时间发一个包,使用TCP的,用send发,使用UDP的,用sendto发,服务器收到后,就知道当前客户端还处于“活着”的状态,否则,如果隔一定时间未收到这样的包,则服务器认为客户端已经断开,进行相应的客户端断开逻辑处理。
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
13.1、用户心跳接收处理模块
客户端发送心跳包,服务器心跳接收模块解析出此用户的状态,判断此人的状态与上一次心跳的状态是否相同
If(状态相同){ 将系统此时的时间写入内存中此用户的hashmap节点 } Else if(状态不同){
将系统此时的时间写入内存中此用户的hashmap节点
If(是下线信息){
删除此人的在线信息
} 给其好友发送状态改变信息
}
13.2、服务器定时检测超时模块
此模块用于定时检测用户心跳超时与否,设计详细如下:
While(true){ 从内存中的hashmap 中的第一个用户到最后一个用户,进行如下操作:
If(此用户心跳超时){
超时意味着此用户极有可能已经掉线了,但是不确定,所以此时要调用推拉检测用户在线模块,来确认此人到底在不在线
} Else {
不执行操作
} 休眠5秒后,继续 }
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
13.3、服务器推拉检测在线模块
此模块是服务器中很特殊的模块,是主动联系客户端 的模块,在次模块中,服务器会主动询问客户端是否在线,形象的描述如下:
服务器问:******你在线吗? 客户端答:我在线。或者客户端没反应
这里就要判断在规定的时间内客户端是否返回响应 If(在规定的时间能收到相应){ 证明此用户是活着的,将系统此时的时间写入内存中此用户的 hashmap节点
} Else { 此用户已经意外掉线,所以应删除此人的所有在线信息 }
14、添加可利用飞Q号
添加可利用的帐号就是,假如可申请的号码低于规定的个数时,服务器添加帐号现在立即自动添加适当的帐号,保持适当数量的可利用的帐号,描述如下
While(ture){
If(数据库中的可申请的帐号数量小于某个值){
向数据库中添加适当数量的帐号,同时向内存中的可申请帐号
hashmap表中添加这些帐号
} Else {
不执行操作
} 线程休眠1小时
}
山东科技大学 王昌帅 wangchangshuai0010.iteye.com
第五篇:软件工程课程设计报告 之 用户操作手册
用户操作手册
1.引言
1.1编写目的本操作手册供本系统操作人员参考之用,分别为客户机端使用人员说明本系统操作方法。
1.2项目背景
本项目(飞Q2012系统)由计算机系软件开发小组负责开发。
1.3定义
WINDOWS NT:本系统所采用的操作系统。
SQL SERVER:系统服务器所使用的数据库管理系统(DBMS)。
1.4参考资料
[1]黄凯,陶宏才.即时通讯系统服务器端简要设计[J].成都信息工程学院学报,2006,(4),20-23.[2]马丹.即时通信系统终端的设计与实现[C].电子科技大学,2005.[3] 潭献海等编著.网络编程技术及应用[M].北京:清华大学出版社,2006.12.[4] 郑人杰,殷人昆,陶永雷.实用软件工程(第二版)[M].北京:清华大学出版社,1997.4.[5] 徐国平等编著,JSP网络开发务实,电子工业出版社,2001年9月
2.1目标
本系统分为服务器端和客户机端两个部分,用户为客户机端。客户机和
服务器通过网络进行通信。用户网络把信息(qq号,密码等)传输到
服务器,服务器程序通过对数据库的查询来为用户安排登陆查询等信息
服务,并把结果传输到客户机,客户机就可以使用了。
2.2功能
系统实现了在各个客户机端聊天,文件传输的功能,并在分布式系统的基础上采用了一些实时处理,以达到快速响应。客户机端除了简单的聊
天之外,本系统还可进行查询和检索的功能。服务器端还实现了用户信
息的自动管理和数据库查询,维护功能。
2.3性能
输入数据:
用户输入:
飞Q号码:String
密码:Sring
输出数据:
好友列表:
飞Q号码:String
时间特性:
要求数据传输时间在10秒钟以内,服务器响应时间在10秒以内,总响应时间为0.5分钟。
3.运行环境
3.1硬件
服务器端:Pentium II 450以上,1024M RAM,36G HD
客户机端:支持java se 虚拟机的pc机
系统软件:服务器端:Windows NT Server
客户机端:Windows NT Workstation
数据库管理系统:SQL Server
4.使用说明
4.1安装和初始化
由于使用了安装自动生成工具,安装变的非常简单,只需运行飞Qserver_SQLServer_fat.jar即可根据提示安装服务器端程序或是客户机端程序。
在安装的过程中,系统将自动初始化,为第一次运行作准备。
4.2输入
4.2.1 数据背景
数据的来源参见需求分析说明书和概要设计说明书。
4.2.2 数据格式
用户输入:
飞Q账号String
密码String
4.2.3 输入举例
旅客输入:
飞Q账号1000005
密码1234567
4.3输出
4.3.1 数据背景
数据的来源参见需求分析说明书和概要设计说明书。
4.4出错和恢复
如果输入数据出错,可立即进行取消操作,重新输入。
如果突然断电或系统没有响应,则关机,等系统重新启动时,会根据日志文件自动ROLLBACK到正确的阶段。需要等待一段时间。如果系统繁忙,也要等待一段时间。
5. 程序文件和数据文件一览表
客户机端:飞Q2012.jar
readme.txt
客户机端主文件 说明文件