




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与工程学院 网络工程专业20XX级 网络编程实验大作业报告网络编程实验大作业报告-即时通讯软件的设计与实现完成日期:2015.4.16目 录目 录II1 背景介绍31.1 业务背景31.2 技术背景32 需求分析32.1 功能需求分析42.2 业务对象分析43 系统设计53.1 总体设计53.2 详细设计64 系统实现124.1 数据库访问124.2 下机模块144.3 上机模块144.4 帮助模块165 测试与分析175.1 测试用例175.2 性能分析186 小结19参考资料19131 背景介绍1.1 业务背景“即时通讯”,是一个模拟QQ的即时通讯软件,它可以实现用户在线聊天,消息即发即得,发图片,传送文件。 1.2 技术背景本系统要求使用Java技术开发,使用MySQL数据库保存数据,集成开发环境可使用支持可视化GUI界面设计的主流工具(如Eclipse、Ant、NetBeans、Jbuilder等)。开发者应有Java程序设计语言、SWING基本GUI组件、文件使用、JDBC存取数据库、使用一种集成开发工具的基本知识和技能。系统采用两层C/S体系结构,C端负责通过GUI与管理员交互、处理业务逻辑及存取数据库,S端主要是数据库系统。系统分析设计主要采用面向对象的分析设计方法。2 需求分析2.1 功能需求分析对于通讯软件,其用户的主要功能有:注册、登录、聊天、发送文件。使用流程:用户初次使用须先注册,按照提示注册完毕即可登录,成功登录后显示主界面,双击想进行聊天的好友即可进行聊天、发送截图、发文件。用例描述:1、 注册1、点击注册,弹出注册窗口。2、按提示填写注册信息。3、正确填写用户信息后,点击确定。4、客户端发送用户信息到服务端。5、服务端接收,并验证用户名是否已注册。5、将验证结果发送回客户端。6、若注册成功,则客户端弹回到登录窗口;若失败,则提示“此用户名已注册”。二、登录1、用户输入用户名和密码,点击确认登录。 2、用户端发送登陆信息到服务器。3、服务器进行验证。4、验证成功则转入主界面,否则提示“用户名或密码错误”。三、聊天1、双击想要联系的好友(A)。2、在对话窗口中输入要发送的信息,单击发送。3、客户端将信息发送给服务端。4、服务端接收,并将信息发送给好友(A)。5、客户端(A)接收,并将信息显示到对话窗口中。四、发送文件(图片)1、点击对话窗口的发送文件(或发送截图)。2、选择要发送的文件(或直接截图)。3、客户端将文件(截图)发送给服务器。4、服务端接收文件(截图),并将其发送给好友(A)。5、客户端(A)接收文件(截图)。2.2 业务对象分析根据上面的主要用例描述,可以分析出系统的主要业务对象其行为和属性应与问题领域相关:1、注册:用户首次使用,需要注册一个新的用户,方可进行聊天等功能。 2、登录:使用注册的用户名、密码进行登录。3、聊天:打开对话窗口,进行及时通信。4、发送文件(截图):用户根据需要,可以发送文件及截图。3 系统设计3.1 总体设计 一、系统体系结构一般要确定系统的体系结构,主要模块,系统运行环境(如操作系统、数据库),开发平台及语言。本系统主要运行在windows系列平台上,数据库使用ACCESS,使用eclipse开发系统。采用两层C/S体系结构。系统体系结构图如下图所示:图形界面SWING业务逻辑数据访问(JDBC)数据库ACCESSSQL客户端服务端 图1 系统体系结构客户端分3层,图形界面层(采用java的SWING设计)负责与用户交互,业务逻辑层则根据用户的请求执行各种功能(如上、下机等),数据访问层主要根据业务逻辑层的请求通过JDBC/SQL存取数据库。数据库使用ACCESS,可根据情况使用其他数据库(如SQL Server),客户端基本不做修改,仅有的少量修改也只在数据访问层。客户端与服务端在物理上可以运行在一台机器上,也可以分别运行在不同机器上。 二、系统功能模块及主要类系统的主要功能模块如图2所示。图2 系统模块图可据此设计菜单,划分模块。系统主要类图如图 3。图 3 系统主要类图3.2 详细设计3.2.1 数据库设计1.USER表 名称编码数据类型用户ID(主键)BINNIT(11)密码PASSWORD(非空)CHAR(20) 2.FRIENDLIST 表名称编码数据类型用户IDCHAR(20)朋友FRIENDSCHAR(20)聊天历史CHATHISTORYCHAR(20)3.2.2 上机模块设计 一、界面设计根据功能设计界面,上机模块参考界面如图4所示:图4 上机模块界面 二、登录流程 1 输入用户名和密码,确认登录。 2 验证账号、密码。3验证成功,弹出群聊窗口;若失败,则提示“用户名或密码错误”,重新输入3.2.3 注册模块设计一、注册模块如图5所示:图5:注册模块二、注册流程 1 单击注册按钮,弹出注册窗口。2 填写注册信息,确认注册。3 判断是否有空的文本域,若有则显示提示。4 判断密码是否小于六位,若有则显示提示。3.2.4聊天模块1、 模块图如图6所示:图6:聊天2、 聊天流程:1、双击想要联系的好友(A)。2、在对话窗口中输入要发送的信息,单击发送。3、客户端将信息发送给服务端。4、服务端接收,并将信息发送给好友(A)。5、客户端(A)接收,并将信息显示到对话窗口中。4 系统实现4.1 数据库访问 1、获取连接的代码private static final String DRIVER_CLASS = sun.jdbc.odbc.JdbcOdbcDriver; /定义驱动类 private static final String DATASOURCE = jdbc:odbc:NetBarDataSource; /定义ODBC数据源 public static Connection getConnction() Connection dbConnection = null; try Class.forName(DRIVER_CLASS); dbConnection = DriverManager.getConnection(DATASOURCE); catch (Exception e) e.printStackTrace(); return dbConnection; 该代码针对JdbcOdbcDriver驱动,ODBC源名为NetBarDataSource,未支持口令验证。 2、查询代码 下面是根据用户名和口令验证卡是否有效的代码,需要注意的是查询参数值需要加单引号 。/* * judge card is valid or not. * param card Card * return boolean */ public boolean isValid( Card card) boolean isValid = false; Connection dbConnection = null; PreparedStatement pStatement = null; ResultSet res = null; try dbConnection = ConnectionManager.getConnction(); / 构建查询SQL语句 String strSql = select * from card where id= + card.getId() + and password = + card.getPassword() + ; if (dbConnection != null) System.out.println(dbConnection != null); /查询操作 pStatement = dbConnection.prepareStatement(strSql); res = pStatement.executeQuery();/执行SQL语句,并返回结果 if (res.next() /若res有记录说明卡存在 isValid = true; catch (SQLException sqlE) sqlE.printStackTrace(); finally ConnectionManager.closeResultSet(res);/关闭结果集 ConnectionManager.closeStatement(pStatement); ConnectionManager.closeConnection(dbConnection); /关闭连接 return isValid; 3、更新代码 下面是更新机器状态的代码,其中SQL语句中,“id =(?)”是动态参数,具体值设置在pStatement.setString(1, computer.getId()/* * record the computer have used. * param computer Computer */ public void updateOnUse( Computer computer) Connection dbConnection = null; PreparedStatement pStatement = null; try String strSql = update computer set Status =1 where id =(?) ; ; pStatement = dbConnection.prepareStatement(strSql); pStatement.setString(1, computer.getId(); /设置机器号id参数 pStatement.executeUpdate(); catch (SQLException sqlE) sqlE.printStackTrace(); finally ConnectionManager.closeStatement(pStatement); ConnectionManager.closeConnection(dbConnection); 4.2 下机模块 在BusinessManager类中有一doCheckOut()方法是实现下机过程的关键。/* * do check out business. * param rec Record,已有机器号值 * return ComsumeDisplayInfo含有上机记录、对应卡记录 */ public static ComsumeDisplayInfo doCheckOut( Record rec) RecordDAO dao = new RecordDAO();/获取包含了下机记录及对应卡信息的ComsumeDisplayInfo ComsumeDisplayInfo result = dao.getStopCompouterRelationInfo(rec); Record record = result.getRecord(); Card card = result.getCard(); /计算本次上机的费用 int fee = calFee(record.getBeginTime(), record.getEndTime(); record.setFee(fee); /计算余额 int balance = card.getBalance() - fee; card.setId(record.getCardId(); card.setBalance(balance);/将数据写入数据库 RecordDAO dao2 = new RecordDAO(); dao2.doCheckOutDB(record, card);/返回含有上机记录、CARD记录的ComsumeDisplayInfo,供界面显示下机结果 result.setRecord(record); result.setCard(card); return result; 4.3 上机模块 处理请求上机的部分代码如下,主要有界面数据(机器号、密码、卡用户号)验证代码;卡有效性、余额可用性验证。/* * deal business about click confirm button. * param e ActionEvent */ void confirmButton_actionPerformed(ActionEvent e) String cardId=; String passwordtemp = ;String computerId =;/获取机器号,并去掉空格cardId = cardIdTextField.getText().trim();/获取密码 for(int i=0;ipasswordFiled.getPassword().length;i+) passwordtemp += passwordFiled.getPassword()i;/获取机器号 computerId = computerIdCombox.getSelectedItem().toString();/判断机器号是否为空,未填或只有空格 if(computerId=null | computerId.trim().length()=0) JOptionPane.showMessageDialog(this,请选择机器号!,警告, JOptionPane.WARNING_MESSAGE ,null ); return ;/判断卡号是否为空,未填或只有空格 if(cardId=null | cardId.length()=0) JOptionPane.showMessageDialog(this,请输入卡号!,警告, JOptionPane.WARNING_MESSAGE ,null ); return ; if(passwordtemp=null | passwordtemp.length()=0) JOptionPane.showMessageDialog(this,请输入密码!,警告, JOptionPane.WARNING_MESSAGE ,null ); return ;/生成卡对象,并设置卡用户名、口令、上机时间Card card = new Card(); card.setId(cardId); card.setPassword(passwordtemp); Record record = new Record(); record.setCardId(cardId); record.setComputerId(computerId); record.setBeginTime(dispalyNowTime);/生成机器对象,更新机器状态时用 C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 29479.1-2025移动实验室第1部分:通则
- 2025-2026学年甘肃省平凉市静宁县数学三年级第一学期期末监测试题含解析
- 2025-2026学年福建省泉州市惠安县数学三年级第一学期期末复习检测模拟试题含解析
- 2024年温泉县三年级数学第一学期期末质量跟踪监视试题含解析
- 护理学的创新思维与试题及答案
- 2025年执业药师考试必考知识试题及答案
- 执业医师考试学习策略监控与调整试题及答案
- 常用抗生素知识点回顾试题及答案
- 备考2025年中国文化概论行政管理考试的必修试题及答案
- 自考行政管理考核机制试题及答案
- 功能室使用记录表
- 第四章转动参照系课件
- 医院培训课件:《疑难病例讨论制度及护理查房制度解读》
- 《扣件式钢管脚手架安全技术规范》JGJ130-2023
- 卫生部检验科三甲评审标准
- 新版三体系+50430内审资料(含检查表)
- 办公室隔断施工方案
- 组织学与胚胎学-女性生殖系统
- 法律法规及其他要求更新表
- 22G101系列图集常用点全解读
- 《X线摄影检查技术》复习考试题库(带答案)
评论
0/150
提交评论