




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软软软软 件件件件 学学学学 院院院院 实践环节报告实践环节报告 课程名称:课程名称: 软件工程实践一软件工程实践一 课题名称:课题名称: 校园微信校园微信 专专 业:业: 软件工程(网络软件开发方向)软件工程(网络软件开发方向) 班班 级:级: 软工网软工网 151 学学 号:号: 指导教师:指导教师: 2017 年年 9 月月 28 日日 中原工学院软件学院中原工学院软件学院 软软件件工工程程实实践践一一设设计计任任务务书书 姓姓 名名 软件工程 专业 软工网 151 班 题题 目目校园微信 设设 计计 任任 务务 开发一个基于局域网的通讯平台,它能给公司内部人员工作交流带来更多的方便,它的 主要功能包括: 1. 私密聊天室:一对一聊天,聊天途径安全可靠 2. 群聊室:文件、交流内容共享 3. 文件传送:双方可互传各种类型的文件 4. 桌面截屏 5. 录音、播放 开发工具:QtCreator、MySQL 时时 间间 进进 度度 第 1 周(9 月 11 日9 月 20 日):设计需求分析,每个人进行分工具体任务。 第 2 周(9 月 21 日9 月 26 日):每个人编写详细的代码,并进行合并。 第 3 周(9 月 27 日9 月 31 日):测试运行程序,撰写实践报告。 原原 主主 始始 要要 资资 参参 料料 考考 与与 文文 献献 1 Window 网络编程/杨秋黎,金智主编.-2 版-北京:人民邮电出版社,2015.1 2 QT Creator 快速入门M.2 版.北京:北京航空航天大学出版社,2014.1 3 韩玉民. 计算机专业英语教学研究与实践 J.计算机与信息技术,2008,(6):106-107. 4 Qt 及 Qt Quick 开发实战精解/霍亚飞编著.-北京:北京航空航天大学出版社,2012.5 指导教师签字:指导教师签字: 年年 月月 日日 校园微信 摘 要 随着 Internet 的不断发展普及,网络通讯成为人们生活中的一部分。网络聊天已和手 机等一样,成为人们运用最为广泛的通信工具之一。 即时通讯(Instant Messenger,简称 IM)软件可以说是目前我国上网用户使用率最高 的软件,无论是老牌的 ICQ,还是国内用户量第一的腾讯 QQ,以及微软的 MSN Messenger 都是大众关注的焦点,它们能让你迅速地在网上找到你的朋友或工作伙伴,可 以实时交谈和互传信息。而且,现在不少 IM 软件还集成了数据交换、语音聊天、网络会 议、电子邮件的功能。 我们经常听到 TCP/IP 和 UDP(用户数据报协议)这两个术语,它们都是建立在更低层 的 IP 协议上的两种通讯传输协议。TCP/IP 是以数据流的形式,将传输数据经分割、打包 后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严格保证数据正确性的 文件传输协议。而 UDP 是以数据报的形式,对拆分后的数据的先后到达顺序不做要求的 文件传输协议。 鉴于局域网的特点和通讯平台本身的要求,本设计主要采用两层 C/S 架构来实现相 互之间的通信。它主要包含以下几大模块:私聊模块、群聊模块、文件传送模块、截屏 模块和录音模块。私聊模块可以使得双方一对一通信,既安全又便利;群聊模块实现多 人同时通信,可共享聊天内容;文件传送模块用于发送及时文件, 本设计主要目的是为了满足人们通讯交流的便捷,实现灵活、全面的音、视频信息 的传递和服务。本毕业设计主要实现语音视频聊天、文字聊天等功能,能够在局域网里 进行视频聊天的系统软件。 关键词:网络安全; 私聊;群聊;文件传送;截屏;录音 目 录 第第 1 章章 项目分析项目分析 .1 1.1 问题描述.1 1.2 技术分析 .1 1.3 可行性分析.2 1.3 工程进度计划 .2 第第 2 章章 程序设计程序设计 .3 2.1 概要设计 .3 2.2 数据流图.3 2.3 系统总模块图 .4 2.4 详情设计.5 2.4.1 服务器端模块 .5 2.4.2 客户端模块 .5 2.5 系统数据结构设计.6 2.5.1 数据逻辑设计 .6 2.5.2 数据字典 .6 2.6 UML.6 2.6.1 用例图 .6 2.6.2 时序图 .8 2.6.3 系统数据库连接 .8 第第 3 章章 实现实现 .10 3.1 主页面实现.10 3.2 个人聊天.11 3.2.1 ui 页面 .11 3.2.2 ui 设计代码 .12 3.3 群聊.13 3.3.1 群聊运行结果 .13 3.3.2 群聊代码 .14 3.4 录音 .15 3.4.1 实现过程 .15 3.4 文件传送.16 3.4.1 文件发送端 .16 3.4.2 发送端代码 .18 3.4.3 文件的接收 .19 3.5 登陆页面 .21 3.6 截屏功能 .22 3.6.1 功能实习 .22 3.6.2 截屏代码 .23 第第 4 章章 测试测试 .25 4.1 测试规划 .25 4.2 测试实现 .26 第第 5 章章 总结总结 .32 附录:主要源程序附录:主要源程序 .36 王贺:校园微信 1 第 1 章 项目分析 局域网通讯就是以任一局域网为平台,通过不同客户端之间信息的交流、文件的传送 来实现不同类型资源的共享。局域网通讯平台这个通信工具使用起来简单,功能完善, 程序内存小。 本设计主要任务是设计一个基于 WINDOWS 平台的局域网即时聊天工具,然后阐述本 软件的功能、特点及使用方法,并详细阐述开发软件所用的相关技术,具体分析本软件 的各个功能及实现方法,说明本软件的设计思想及方法。本设计在 Qt 环境下使用 C+语 言编写而成,其主要功能是完成局域网内的 IM 的基本功能,其中包括:文字聊天、群聊 天、私聊、录音、截屏等功能。 1.1 问题描述 网络通讯平台是一款基于局域网的聊天工具。该聊天工具为目前一些学校提供一个 便捷的局域网通信平台,学生老师可以在局域网中的不同计算机上登录,从而和其他客 户端工作人员完成通信、文件传送。 局域网通讯平台具有聊天工具的一般功能和特征。通过开发此通讯平台,可以掌握 一般的网络通讯方法、了解通信过程中套接字的使用。 局域网通讯平台主要面临的问题是如何获取局域网中用户的在线情况和文件传送过 程中不同文件格式的转化。 1.2 技术分析 局域网通讯平台主要是对学生编程和通信套接字的应用。首先,由于接触网络方面 较少,套接字的使用是一大难题。我们需要了解它的真正意义所在,还有 TCP/IP 和 UDP/IP 的应用方法。 第二个问题就是 Qt 中按钮槽的实现,由于 Qt 代码多而琐碎,完成信号槽机制这个 任务需要开发者具备扎实的基本功,还要联系以前所学的 C+方面的知识技能。 第三个问题是好友的增删改查功能的实现,用户在登录后可以获取自己的基本信息, 也可以通过获取好友的账号进而添加好友到自己的列表,还可以修改好友的备注、删除 不常聊天的好友,数据库的使用可以使这些变得简单。 王贺:校园微信 2 1.3 可行性分析 经济可行性:由于本系统的主要背景是课题设计,不注重直接的经济效益和其后的 发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能 运行 Qt 软件的电脑便可,所以不用考虑到经济问题。 技术可行性:使用 Qt 作为系统开发的开发环境,它提供完善的指令控制语句、类与 对象的支持及丰富的数据类型,给开发高性能提供的保障为开发满足客户要求的系统, 保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修 改。 运行可行性:本系统为一个小型的局域网聊天系统,所耗费的资源非常小,现在一 般的电脑无论是硬件还是软件都能够满足条件。因此,本系统在运行上是可行的。 综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此, 它在技术上是可行的。 1.3 工程进度计划 第一周(9.119.20)每个人(共三人)按要求撰写需求分析,对实现的功能进行 合理分配。功能主要为:界面和数据库的设计、聊天和文件传送的实现。具体的分配为: 王贺(我)负责通信和文件传送的功能实现,吕鹏辉(组员)负责界面和数据库的设计, 朱金伟负责语音和截屏,另外在第一周我们开始做一些简单的开始。 第二周(9.219.26)每个人按自己的功能模块进行代码的编写。 第三周(9.2710.1)将我们各自写的代码进行合并,成功运行程序并且进行局域 网下聊天和文件传送的测试,对于不完善的功能进行查漏补缺。 王贺:校园微信 3 第 2 章 程序设计 2.1 概要设计 聊天工具大多数由客户端程序和服务端程序加服务器端,本程序采用客服机/服务器 架构模式,也就是通常所简称的 C/S 模式。通过 Qt 提供的 Socket 类来连接客户机和服务 器并使客户机与服务器之间相互通信。并且在一定的程度上为聊天工具添加截图和录音 的功能。 主要有两个应用程序,分别为服务器程序和客户端程序。服务器应用程序主要用于 消息转发,以及向所有用户发送系统消息等;客户端应用程序主要用于客户聊天记录的 显示和信息输入。采用 Client/Server(C/S)体系结构,及客户机/服务器体系结构。聊天 服务器用于监控用户状态和转发消息,客户端负责接收消息的用户序列和消息文本发送 到服务器,而在设计的程序中在私聊和群聊的情况下都是用了 udp 面向无连接的传输协 议,而在文件传输的过程中则是运用了 tcp 面向连接的传输协议。该通讯平台实现私聊、 群聊、文件传送等功能。 设计能实现局域网内聊天服务端与客户端的功能。主要实现如下功能: 聊天服务端:实现与客户端的连接,接收来自客户端的聊天消息,并且根据客户端 的要求把这些信息转发到另外一个或多个聊天客户中。并实现对客户端登录用户的管理 与控制:实现客户端聊天信息的监控与保存。 聊天客户端:实现与服务端的连接, 建立和维护与服务端的连接,向服务器发送本客户的聊天内容,同时从服务器接受 对方的相应。实现与其他用户的文本的发送,并实现聊天的功能。 2.2 数据流图 聊天用户聊天用户 图 2.1 总体数据流图 王贺:校园微信 4 2.3 系统总模块图 通讯平台 服务器端 客户端 用户上下线识别显示模块 信息识别转发模块 用户登录模块 用户注册模块 用户修改信息模块 图 2.2 系统总模块图 2.4 详情设计 2.4.1 服务器端模块 2.4.1.1 用户上下线识别及显示模块 功能:服务器开启使用设定的端口进行监听,识别并显示用户上下线信息。 目标:当有用户请求登录时,服务器通过套接字获取用户的 ip 地址以及用户名和对 应密码,识别是否一致,从而显示用户在线信息,当用户下线时,断开连接,显示用户 下线信息。基本实现用户状态与信息显示一致。 当作为服务端的情况下只有在文件发送的情况下,客户端通过 udp 报文发送信息我 王贺:校园微信 5 要发送文件,无论在群聊还是私聊中都包含了服务端和客户端。 2.4.1.2 信息识别接收模块 功能:服务器将用户发送的信息接收、分析、存储并转发到目标用户。 目标:服务器定义一个 buf 数组用来存储客户端发来的信息,定义一个通信套接字用 来读取请求客户端的端口号和 ip 地址。 2.4.2 客户端模块 2.4.2.1 用户登录模块 功能:实现用户登录。 目标:用户输入用户名、密码并点击登录,服务器端接收用户端登录请求,存储信 息,并进行检验,如果合法性检测则进入聊天主界面。 (1)群聊模块 功能:能够进行类似于 QQ 群聊的聊天功能。 目标:客户端点击“发送信息”按钮,该客户端的 ip 地址、端口号以及信息内容一 起打包写入服务器的存储数组,客户端通过线程可以读取该数组中的内容,从而实现群 聊。 (2)私聊模块 功能:能够进行点对点的聊天方式。 目标:客户端用户点击“发送信息”按钮,输入对方端口号和 ip 地址,从而该用户 开启端口用于监听,同时定义输入、输出流文件,客户端延迟片刻,然后与该端口取得 连接。当任意一方点击“发送信息”按钮时,和群聊同一机理,通过读取共享文件内容 实现私聊。 2.5 系统数据结构设计 2.5.1 数据逻辑设计 组成(用户工号,状态,好友) 用户工号(工号账号,姓名,密码,性别,好友名字) 状态(工号账号,是否在线,IP 地址,端口) 好友(好友账号,好友名字) 王贺:校园微信 6 2.5.2 数据字典 名称取值类型长度描述 主机名Char30唯一标识用户,不可 为空 姓名Char8用户姓名,不可为空 性别Char2用户性别,不可为空 Ipint32当前登录 ip 地址 端口Int4端口号 密钥一char8密钥,可空 密钥二char8密钥,可空 密码int5-8用户密码,不可为空 所属账号Int5-8唯一标识用户,不可 2.6 UML 2.6.1 用例图 在系统设计中系统用例图的实现更加让你轻松的实现系统,其中用例图的作用主要 就是获取需求;指导测试;还可在整个过程中的其它工作流起到指导作用。 王贺:校园微信 7 图 2.1 系统用例图系统用例图 用户在登录界面输入用户 ID 和密码,系统进行用户身份验证,如果通过用户身份验 证则转入相应的工作界面,如果没有通过用户身份验证则显示下列信息:用户名与密码 不符用户可以重新输入正确的 ID 和密码。 图 2.2 功能用例图功能用例图 王贺:校园微信 8 2.6.2 时序图 用户在客户端填入必要的信息后,向服务器提交自己的信息。服务器将按照一定的 规则给用户生成一个可用的用户账号,并把此账号返回给用户,用户以后便可以用此账 号登录本系统,来和网络上的其它本系统的用户进行及时的收发信息来聊天。在以后的 每一次登录中系统都将对用户进行身份验证,以确定该用户是否为合法的用户。 图 2.3 系统登录时序图系统登录时序图 2.6.3 系统数据库连接 数据库的连接,主要是储存了用户注册的用户名和密码还有就是一些注册选填的信 息,因为数据的单一,在这里了我们只是设置了了一个 user 表,表中包含了用户 id 和用 户名 username、用户密码 password 等。在实现数据的链接过程中,因为 qt 的版本和数据 库的版本不兼容的原因尝试了很多次,和查阅了很多资料,最后 qt5.2.1 的版本和 MySQL 比较好连接,其中连接数据库的时候直接引入 qt 中数据库的模块然后根据文档进行了数 据的增删改查。 王贺:校园微信 9 王贺:校园微信 10 第 3 章 实现 通过局域网通讯平台,每个人把自己设计的功能和代码进行联合,又经过不断地调 整改善,排除 BUG,最终实现了功能。包括一对一私聊,一对多群聊,文件的传送等功 能。简单易用。 3.1 主页面实现 3.1.1 主页面功能实现 在整个框架中的首先是由登陆页面为程序的入口,然后通过后台数据库的用户密码 验证,跳转到群聊的窗体中,在群聊的页面中主要分为三大块第一块中主要显示的是聊 天的纪录,在下面中则是功能模块和发送信息框,在功能框中主要有截屏按钮、字体格 式多选框、录音按钮、字体种类多选框,保存聊天纪录按钮、发送文件按钮和清空聊天 信息按钮。页面的最右面是用户在线信息列表。在群聊中通过选中最右面的用户可以发 送文件,如果是双击此用户信息则可以转到与此用户私聊页面。 图 3.13.1 群聊主页面群聊主页面 3.1.23.1.2 主页面代码主页面代码 ui-setupUi(this); this-resize(800,550);/设置窗口大小 ui-textEdit-setFocusPolicy(Qt:StrongFocus);/默认光标聚焦 ui-textBrowser-setFocusPolicy(Qt:NoFocus); ui-textBrowser-setStyleSheet(background-image:url(:/image/1.jpg);); 王贺:校园微信 11 ui-textEdit-setFocus(); ui-textEdit-installEventFilter(this);/时间过滤器设置完后自动调用其 eventFilter 函数 privatechat = NULL;/chat 的对象 privatechat1 = NULL;/同上 udpSocket = new QUdpSocket(this);/创建 socket port = 45454;/端口号 bb = 0; /绑定 udpSocket-bind(port,QUdpSocket:ShareAddress | QUdpSocket:ReuseAddressHint); /连接 connect(udpSocket,SIGNAL(readyRead(),this,SLOT(processPendingDatagrams(); /调用发送信息函数,readyRead()函数当有数据包发送过来时候就出出发槽函数 sendMessage(NewParticipant);/广播形式发送数据,信息类型为又新的好友进入聊天室 server = new TcpServer(this); /这个 tcp 的服务端主要是发送文件 connect(server,SIGNAL(sendFileName(QString),this,SLOT(sentFileName(QString); 3.2 个人聊天 3.2.1 ui 页面 图 3.3 中 ui 文件提供了界面的设计,是 Qt 中一大优点,可以通过 ui 界面实现不同的 效果,使得程序更方便与使用。 个人聊天界面是由 Qt 中 ui 文件实现的。个人聊天机制主要是用了 udpsocket 套接字 实现。在输入对话框下面输入对方 ip 和端口号,同时输入内容,对方就可以收到发送的 内容。同时在“好友列表”中显示对方的基本信息,在实现私聊的过程中,此页面是由 群聊双击用户跳转过来的,通过 Qt 中的双击事件获得了用户列表中的个人信息包括 ip,主 机名,用户名等信息,然后通过 udp 指定 IP 发送信息。 王贺:校园微信 12 图 3.33.3 个人聊天界面图 个人聊天界面中有输入对话框、聊天信息对话框、好友列表框、发送按钮、退出按 钮,在中间可以设置发送信息的字体大小、颜色、倾斜度。在这些字体的设计中调用了 Qt 中的 tohtml()的函数把字体的样式也一起发送到对方客户端中。 3.2.2 ui 设计代码 udpsocket:udpsocket(QWidget *parent) : QWidget(parent), ui(new Ui:udpsocket) ui-setupUi(this); udpskt=new QUdpSocket(this); udpskt-bind(8887); setWindowTitle(8887); connect(udpskt, this-setWindowFlags(Qt:Drawer); void udpsocket:dealMsg() QDateTime currenttime=QDateTime:currentDateTime(); QString datetime=currenttime.toString(yyyy.MM.dd hh:mm); char buf1024=0; 王贺:校园微信 13 QHostAddress peeraddr; quint16 peerport; qint64 len= udpskt-readDatagram(buf,sizeof(buf), ui-messageBrowser_3- append(str); QString str1=QString(%1).arg(buf); ui-messageBrowser_3-append(str1); QString str2=QString(%1-%2-%3) .arg(name) .arg(peerport) .arg(peeraddr.toString(); ui-textEdit-setText(str2); 以上代码是 udp/ip 协议中通信套接字的实现,在客户端输入对方 ip 和端口号,然后 在输入框输入聊天信息,对方通过网络接口接收,传到套接字,再由套接字写进计算机。 在这些代码中主要运用了 qt 中特定的信号和槽的关联,使得各对象之间的合理调用和传 输信号。 3.3 群聊 3.3.1 群聊运行结果 群聊界面通过 Qt 中 ui 文件实现,群聊主要是通过 udpsocket 多播实现。套接字绑定 端口、任意 ipv4 地址,然后加入同一广播地址。 在这个群聊的页面中主要是页面布局的的运用,我们的页面布局室友 listbox 部件、 textbower 部件、text 部件、多个 button 部件和弹簧部件的使用,在这过程中就是 ui 的设 计,合理的利用 qt 中的布局管理可以得到一个漂亮的页面。除了页面的设计就是各个部 件的使用了例如 button 的样式使用可以使得 button 设置背景更加好看。 王贺:校园微信 14 图 3.43.4 群聊界面 群聊界面主要有输入对话框、聊天信息对话框、好友列表框。用户可以在左下角输 入对话框中输入聊天信息,那么加入广播地址的所有在线用户都可以收到。群聊的 3.3.2 群聊代码 allchat:allchat(QWidget *parent) : QWidget(parent), ui(new Ui:allchat) ui-setupUi(this); udpskt=new QUdpSocket(this); udpskt-bind(QHostAddress:AnyIPv4,8787); udpskt-joinMulticastGroup(QHostAddress(224.0.0.2); connect(udpskt, this-setWindowFlags(Qt:Drawer); void allchat:dealMsg() QDateTime datetime=QDateTime:currentDateTime(); QString currenttime=datetime.toString(yyyy.MM.dd hh:mm); /定义 buf 为读取到的内容 王贺:校园微信 15 char buf1024=0; QHostAddress peeraddr; quint16 peerport; qint64 len= udpskt-readDatagram(buf,sizeof(buf), if(len0) QString str=QString(%1%2:%3:%4) .arg(name) / .arg(peeraddr.toString() .arg(peerport) .arg(currenttime); ui-textEdit1-append(str); QString str1=QString(%1).arg(buf); ui-textEdit1-append(str1); QString str2=QString(%1:%2:%3) .arg(peeraddr.toString() .arg(peerport) .arg(name); ui-textEditbiao-setText(str2); 以上代码是对群聊的实现。套接字绑定 8787 端口,然后加入组播 ip( “224.0.0.2”),这样在聊天时,客户端发送的消息所有加入组播的在线好友都可以接 收到消息。一旦群里有消息发来,套接字获取当前消息,并获取当前系统时间,将其现 实在右上角的在线好友列表中。 3.4 录音 3.4.1 实现过程 通过百度的搜索和老师的解答我简单的实现了录音的功能,这里通过按钮的按下和 释放槽函数来实现了录音的开始和结束,在 Qt 提供的类 QAudioFormat 提供了所有的设 置音频属性的方法如 setSampleRate 设置了采集音频频率,setCodec(audio/pcm)设置 音频编码等方法,在实现录音的同时所遇见的问题就是音频的编码问题,当录音命名的 后缀为 MP3 的格式,但是在用播放器播放的时候并不能播放;通过询问了了解知道,每 个编译器的编码不同,所以不能播放,但是自己用编辑器的自带解码方式则可以播放, 所以在录音的同时我实现了播放的功能。在实现的过程中通过 qt 中的 IO 文件的读入和 读出和文件的存放路径实现了播放。 3.4.2 录音源码: 王贺:校园微信 16 QString runPath = QCoreApplication:applicationDirPath(); qDebug() runPath; /建立一个文件 OutPutFile.setFileName(runPath + /audio.mp3); /打开文件的模式 OutPutFile.open(QIODevice:WriteOnly | QIODevice:Truncate); /设置了音频格式 QAudioFormat format; /设置采样频率。 format.setSampleRate(8000); /设置声道数量 format.setChannelCount(1); /样本容量 format.setSampleSize(8); /这个用来设置编码器,audio/pcm在所有的平台都支持 format.setCodec(audio/pcm); /这个是用来设定高低位的 format.setByteOrder(QAudioFormat:LittleEndian); /用来设置采样类型 format.setSampleType(QAudioFormat:UnSignedInt); /获得本地音频设备的信息 QAudioDeviceInfo info = QAudioDeviceInfo:defaultInputDevice(); /判断是否支持 if (!info.isFormatSupported(format) qWarning()start( cout 开始录音! show(); ui-progressBar-setRange(0,filesize); ui-progressBar-setValue(0); qint64 len=0; do char buf4*1024=0; len=0; len=file.read(buf,sizeof(buf); tcpsocket-write(buf,len); sendsize+=len; ui-progressBar-setValue(sendsize); while(len0); if(sendsize=filesize) ui-progressBar-hide(); 王贺:校园微信 19 ui-textEdit-append(文件发送完毕); file.close(); tcpsocket-disconnectFromHost(); tcpsocket-close(); void Form:on_pushButton_clicked() QString filepath = QFileDialog:getOpenFileName(this,Open File,./); / if(filepath.isEmpty()=false) filename.clear(); filesize=0; /获取文件信息 QFileInfo info(filepath); filename=info.fileName(); filesize=info.size(); sendsize=0; file.setFileName(filepath); bool isok=file.open(QIODevice:ReadOnly); if(isok=false) qDebug()append(filepath); ui-pushButton-setEnabled(true); ui-pushButton_2-setEnabled(true); else qDebug()= sizeof(qint64)*2) bytesReceived += sizeof(qint64)*2; if(tcpClient-bytesAvailable() = fileNameSize) bytesReceived +=fileNameSize; if(!localFile-open(QFile:WriteOnly) QMessageBox:warning(this,QString:fromLocal8Bit(应用程序), QString:fromLocal8Bit(无法读取文件 %1:n%2.).arg(fileName).arg(localFile-errorString(); r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑防火工程施工方案
- 机制砂生产线项目技术方案
- 3D打印智能工厂项目建筑工程方案
- 信贷产品的宣传营销方案
- 简历战略咨询规划方案
- 整.理收纳的活动营销方案
- 系统性咨询方案
- OBE理念下市场营销课程教学改革的路径研究
- 团队管理员营销方案
- 大学防汛防台应急预案方案
- 《可摘局部义齿工艺技术》考试复习题库(带答案)
- 《开国大典》教学设计与指导课件(第二课时)
- DZ∕T 0283-2015 地面沉降调查与监测规范(正式版)
- 人事专员简历模板
- 软硬结合板的设计制作与品质要求
- 禁毒教育知识宣传毒品知识 64
- MOOC 理解马克思-南京大学 中国大学慕课答案
- 全科医疗教学查房
- 保护牙齿少吃糖公开课课件
- 移植前打达菲林的方案
- 职业病危害因素评价与检测课件
评论
0/150
提交评论