软件工程实验报告(2).doc
《软件工程实验报告(2).doc》由会员分享,可在线阅读,更多相关《软件工程实验报告(2).doc(46页珍藏版)》请在咨信网上搜索。
院 系: 计算机科学学院 专 业: 计算机科学与技术 年 级: 2023级 课程名称: 软件工程 组 员: 司少武 () 兰少雄 () 张宇 () 纳洪泽() 指导教师: 刘卫平 2023年 12月 26 日 聊天室 1 前言 1.1 即时消息系统的研究现状 即时消息系统[1](Instant Messenger,IM)是一种在后 PC 时代兴起的,以 Internet 网络为基础的,允许交互双方即时地传送文字、语音、视频等信息,可以跟踪网络用户在线状态的网络应用软件。即时消息系统产生有着深刻的社会因素:人们都有渴望社交,获得社会尊重、实现自我的需求,这正是即时消息软件风行的原动力,而物质文明的日益发达所带来副作用,又使得人们习惯与周边的人保持距离,以致人们更乐意对陌生人敞开心扉,在网络中可以跨越年龄、身份、行业、地区的限制,达成人与人、人与信息之间的零距离交流。从这点上讲,即时消息系统的出现改变了人们的沟通方式和交友文化,大大拓展了个人生活交流的空间。 1.2本工程的重要内容 随着互联网逐步普及,人们的生活和工作也越来越离不开信息网络的支持, 而聊天室是人们最常见, 最直接的网上交流的方式。本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型网站。本文所介绍的网络聊天系统是基于开放的JAVA应用程序开发设计的,其重要特性是能动态、实时的完毕信息的传递,且具有高效的交互性,更有效的解决客户请求, 且具有脱离数据库技术方法, 易于维护和更新的特点。 2 需求分析 本系统所要实现的重要功能是当用户聊天时,将当前用户名、聊天对象、聊天内容、聊天语气和是否私聊进行封装,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端 当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问。 接受用户的聊天信息是由多线程技术实现的,由于客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,假如间隔时间太短将会增长客户端与服务器端的通信承担,而间隔时间长就会让人感觉没有时效性,所以通过权衡后认为3秒最佳,由于每个用户都不也许在3秒内连续发送信息。 当每次用户接受到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。 2.1 业务需求 1. 与聊天室成员一起聊天。 2. 可以与聊天室成员私聊。 3. 可以改变聊天内容风格。 4. 用户注册(含头像)、登录。 5. 服务器监控聊天内容。 6. 服务器过滤非法内容。 7. 服务器发送告知。 8. 服务器踢人。 9. 保存服务器日记。 10.保存用户聊天信息。 2.2 系统功能模块 2.2.1 服务器端 1.解决用户注册 2.解决用户登录 3.解决用户发送信息 4.解决用户得到信息 5.解决用户退出 2.2.2 客户端 1.用户注册界面及结果 2.用户登录界面及结果 3.用户发送信息界面及结果 4.用户得到信息界面及结果 5.用户退出界面及结果 2.3 性能需求 运营环境:Windows All 必要环境:JDK 1.5 以上 硬件环境:CPU 400MHz以上,内存64MB以上 3数据结构 3.1 数据结构 此系统数据库中储存信息采用字符指针储存,将用户的信息用字符的形式进行解决并储存。 3.2 逻辑结构 逻辑结构: 用户向服务器发送请求,服务器获取对方IP,若获取成功,用户向其发送消息,服务器将其解决并将其记录,然后将消息发给另一用户。其E—R图如下所示: 2 消息 发送 服务器 记录 记录信息 内容 时间 内容 储存信息 图1.E-R图 服务器IP 将E-R图转化为关系模型,建立关系模型为: 消息(内容,时间); 记录信息(内容,储存信息); 服务器(服务器IP); 3 3.3 功能模块划分 3.3.1结构框图 聊天系统 发送消息 接受消息 服务器获取IP 服务器发送消息 保存信息 时钟 图2.结构图 3.3.2程序流图 (1)整个系统流程图如下: 用户发送的消息或请求 结束 服务器接受信息 查询请求? 向用请求户发送消息 保存信息 向目的用户发送消息 是 否 图3.系统程序流程图 3.3.3模块功能分析及外部设计 模块功能分析: (1)发送消息:用户选择好友,假如好友在线,服务器便获取其IP地址,用户打开消息盒编辑需要发送的消息,然后发送,服务器接受此消息,并解决记录到登记表中,然后将其发送给好友。 (2)接受消息:好友发送的信息通过服务器解决并发送到本用户,假如设立为接受消息,则系统提醒并可以打开查看此消息,否则服务器不将此消息发送到本用户。 (3)消息记录查询:用户向服务器发送查询请求,服务器作出响应并将最近消息记录发送到此用户。 外部设计: 交互设计是面向最终用户的设计,是软件的外部设计,交互设计规定在研究软件技术问题的同时对人加以研究。用户是什么样的人?用户如何与新的计算机系统进行交互?用户如何解释系统产生的信息?用户对系统有哪些盼望?这些问题仅仅是需要在用户交互设计时必须询问和回答的问题。 作为点对点的聊天系统,作为服务使用者得用户和提供服务的聊天系统有着互动和互换信息的过程,用户有请求,系统就必须有应答,需要双方参与。 (1)当用户选择好友向其发送消息时,点击好友,向服务器发送请求,假如好友在线,服务器自动获取好友IP并建立双方的连接,进行聊天。否则应当提醒好友不在,不能聊天或发送离线信息。 (2)用户查询聊天信息时,向服务器发送查询请求,服务器作出响应并将相应记录发送到此用户界面。 通过对产品的界面和行为进行交互设计,让产品和它的使用者之间建立一种有机关系,从而可以有效的达成使用者的目的,而好的交互设计会使系统和使用者之间更好的交互,达成“愉悦地合作”,这是交互设计的最终目的。 4 具体设计 4.1 类定义 ChatClient.java 为客户端程序启动类,负责客户端的启动和退出。 Login.java 为客户端程序登录界面,负责用户帐号信息的验证与反馈。 Register.java 为客户端程序注册界面,负责用户帐号信息的注册验证与反馈。 ChatRoom.java 为客户端程序聊天室主界面,负责接受、发送聊天内容与服务器端的Connection.java 密切合作。 Windowclose 为ChatRoom.java的内部类,负责监听聊天室界面的操作,当用户退出时返回给服务器信息。 Clock.java 为客户端程序的一个小程序,实现的一个石英钟功能。 4.2 重要模块内部设计 此点对点聊天系统重要涉及以下模块:(1)发送消息;(2)接受消息;(3)查询消息记录。每个模块的重要执行功能函数及算法如下。 4.2.1模块1设计 4.2.1.1 模块算法 模块一:发送消息: 发送消息函数:send messages(char *p,InetAdrress); 发送消息后自动执行储存函数:memory messages(InetAdrress,char *p); 4.2.1.2 流程图 用户输入要发送的信息 是否在线? 获取IP 发送消息 保存记录 结束 是 否 图4.发送消息流程图 4.2.2 模块2设计 4.2.2.1 模块算法 模块二:接受消息: 接受消息消息函数: *receive messages(InetAdrress,char *p); 接受消息后自动执行储存消息函数:memory messages(InetAdrress,char *p); 4.2.2.2 流程图: 好友发送的消息 是否接受 打开消息 保存消息记 结束 图5.接受消息流程图 是 否 4.2.3 模块3设计 4.2.3.1 模块算法 模块三:消息记录查询: 执行发送请求函数:*check notes(InetAdrress,char *p); 删除记录函数:delete notes(InetAdrress); 自动执行接受消息函数:*receive messages(InetAdrress,char *p); 4.2.3.2 流程图: 用户发送的查询请求 是否存在记录 服务器向其发送记录 读取记录 结束 是 否 图6.查询记录流程图 5 测试分析与截图 在实现本系统的同时每设计一个模块,就实现模块测试,使其能实现该函数需要实现的功能,此阶段为白盒测试。此阶段将此模块作为单独的一个实体来测试,并且比较容易实际检查模块对的性的测试方案,保证每个模块单元的对的运营,来拟定编码和具体设计的错误。 然后集成测试。集成测试阶段,先将单元测试成功的模块放在一起形成一个子系统来测试,以解决模块间的协调和通信问题。然后将子系统测试通过的模块放在一起形成一个完整的系统测试,检查功能,来发现需求报告中的错误。 5.1 测试用例 为了检查此系统的对的性,设计了以下的一些测试用例: (1)登录注册 (2)发送和接受消息 A:你好 B:你好 (3)保存聊天记录 (4)保存聊天记录 (5)保存服务器日记 (6)服务器踢人 不同的测试数据发现程序错误的能力差别很大,为了提高测试效率低测试成本,应当选择高效的测试用例,数据尽量少,做到尽也许完备的测试就可以了。 5.2 测试结果 5.2.1登录界面 5.2.2注册界面 5.2.3 服务器 5.2.4 聊天室聊天 对所有人,私人聊天,系统提醒信息。 5.2.5 聊天记录保存 5.2.6服务器日记保存 5.2.7服务器踢人 5.2.8时钟 6 结束语 Java面向对象程序设计是一门应用广泛并且实用性极强的高级程序设计语言。通过本次课程设计,我们对面向对象的基本思想有了进一步的理解,对项目的各个阶段的任务也有了一定的了解。设计开始阶段必须明确设计的目的与需求分析,总体设计要全面分析聊天室系统的架构。通过这次设计,使我们结识到体系的架构是最重要的,只有准确的系统设计、很好的定义各个模块及模块之间的关系,才干在编码阶段更轻松的的实现。 通过这次课程设计,对我们的逻辑思维能力是一个很大的锻炼,它不仅加强了我们的系统思考问题的能力,并且还改变了我们以前不好的编程习惯,虽然花费了不少的时间,但是我们学到了丰富的知识。 此外,本次课程设计也提高了我们的团对合作精神,让我们明白不是不能一个人能单独完毕,而是要集思广益,结合更多的人的创意思维。让我们大家深刻的体会到理论与实际相结合的重要性与微妙之处。对于不同的想法我们都会集中讨论并对好的意见加以借鉴,在这个讨论的过程中,还更正了不少我们各自自身对于某个知识点的误区。 这次程序设计也是一个毅力的考验过程。有时候往往只是一个小小的错误,却要花出几小时甚至是一两天的时间才也许发现它。所以在这个过程不能过于暴躁,要很有耐心将程序反复调试。 App server.java import java.io.*; import .*; import java.util.*; public class AppServer extends Thread { private ServerSocket serverSocket; private ServerFrame sFrame; private static Vector userOnline = new Vector(1, 1); private static Vector v = new Vector(1, 1); public AppServer() { sFrame = new ServerFrame(); try { serverSocket = new ServerSocket(1001); // 获取服务器的主机名和IP地址 InetAddress address = InetAddress.getLocalHost(); sFrame.txtServerName.setText(address.getHostName()); sFrame.txtIP.setText(address.getHostAddress()); sFrame.txtPort.setText("1001"); } catch (IOException e) { fail(e, "不能启动服务!"); } sFrame.txtStatus.setText("已启动..."); this.start(); // 启动线程 } public static void fail(Exception e, String str) { System.out.println(str + " 。" + e); } public void run() { try { while (true) { Socket client = serverSocket.accept(); new Connection(sFrame, client, userOnline, v); System.out.println("userLength:"+userLength); } } catch (IOException e) { fail(e, "不能监听!"); } } public static void main(String args[]) { new AppServer(); } } Login.java import*; public class Login extends JFrame implements ActionListener { private static final long serialVersionUID = -6088264L; private JPanel pnlLogin; private JButton btnLogin, btnRegister, btnExit; private JLabel lblServer, lblUserName, lblPassword, lblLogo; private JTextField txtUserName, txtServer; private JPasswordField pwdPassword; private String strServerIp; private Dimension scrnsize; private Toolkit toolkit = Toolkit.getDefaultToolkit(); public Login() { super("登录[HappyChat]聊天室"); pnlLogin = new JPanel(); this.getContentPane().add(pnlLogin); lblServer = new JLabel("服务器(S):"); lblUserName = new JLabel("用户名(U):"); lblPassword = new JLabel("口 令(P):"); txtServer = new JTextField(20); txtServer.setText("127.0.0.1"); txtUserName = new JTextField(20); pwdPassword = new JPasswordField(20); btnLogin = new JButton("登录(L)"); btnLogin.setToolTipText("登录到服务器"); btnLogin.setMnemonic('L'); btnRegister = new JButton("注册(R)"); btnRegister.setToolTipText("注册新用户"); btnRegister.setMnemonic('R'); btnExit = new JButton("退出(X)"); btnExit.setToolTipText("退出系统"); btnExit.setMnemonic('X'); pnlLogin.setLayout(null); pnlLogin.setBackground(new Color(52, 130, 203)); lblServer.setBounds(50, 100, 100, 30); txtServer.setBounds(150, 100, 120, 25); lblUserName.setBounds(50, 130, 100, 30); txtUserName.setBounds(150, 130, 120, 25); lblPassword.setBounds(50, 160, 100, 30); pwdPassword.setBounds(150, 160, 120, 25); btnLogin.setBounds(50, 200, 80, 25); btnRegister.setBounds(130, 200, 80, 25); btnExit.setBounds(210, 200, 80, 25); Font fontstr = new Font("宋体", Font.PLAIN, 12); lblServer.setFont(fontstr); txtServer.setFont(fontstr); lblUserName.setFont(fontstr); txtUserName.setFont(fontstr); lblPassword.setFont(fontstr); pwdPassword.setFont(fontstr); btnLogin.setFont(fontstr); btnRegister.setFont(fontstr); btnExit.setFont(fontstr); lblUserName.setForeground(Color.BLACK); lblPassword.setForeground(Color.BLACK); btnLogin.setBackground(Color.ORANGE); btnRegister.setBackground(Color.ORANGE); btnExit.setBackground(Color.ORANGE); pnlLogin.add(lblServer); pnlLogin.add(txtServer); pnlLogin.add(lblUserName); pnlLogin.add(txtUserName); pnlLogin.add(lblPassword); pnlLogin.add(pwdPassword); pnlLogin.add(btnLogin); pnlLogin.add(btnRegister); pnlLogin.add(btnExit); Icon logo1 = new ImageIcon("images\\loginlogo.jpg"); lblLogo = new JLabel(logo1); lblLogo.setBounds(0, 0, 340, 66); pnlLogin.add(lblLogo); setResizable(false); setSize(340, 260); setVisible(true); scrnsize = toolkit.getScreenSize(); setLocation(scrnsize.width / 2 - this.getWidth() / 2, scrnsize.height / 2 - this.getHeight() / 2); Image img = toolkit.getImage("images\\appico.jpg"); setIconImage(img); btnLogin.addActionListener(this); btnRegister.addActionListener(this); btnExit.addActionListener(this); @SuppressWarnings({ "deprecation", "static-access" }) public void actionPerformed(ActionEvent ae) { Object source = ae.getSource(); if (source.equals(btnLogin)) { if (txtUserName.getText().equals("") || pwdPassword.getText().equals("")) { JOptionPane op1 = new JOptionPane(); op1.showMessageDialog(null, "用户名或密码不能为空"); } else { strServerIp = txtServer.getText(); login(); } } if (source.equals(btnRegister)) { strServerIp = txtServer.getText(); this.dispose(); new Register(strServerIp); } if (source == btnExit) { System.exit(0); } } @SuppressWarnings("deprecation") public void login() { Customer data = new Customer(); data.custName = txtUserName.getText(); data.custPassword = pwdPassword.getText(); try { Socket toServer; toServer = new Socket(strServerIp, 1001); ObjectOutputStream streamToServer = new ObjectOutputStream(toServer .getOutputStream()); streamToServer.writeObject((Customer) data); BufferedReader fromServer = new BufferedReader( new InputStreamReader(toServer.getInputStream())); String status = fromServer.readLine(); if (status.equals("登录成功")) { new ChatRoom((String) data.custName, strServerIp); this.dispose(); streamToServer.close(); fromServer.close(); toServer.close(); } else { JOptionPane.showMessageDialog(null, status); streamToServer.close(); fromServer.close(); toServer.close(); } } catch (ConnectException e1) { JOptionPane.showMessageDialog(null, "未能建立到指定服务器的连接!"); } catch (InvalidClassException e2) { JOptionPane.showMessageDialog(null, "类错误!"); } catch (NotSerializableException e3) { JOptionPane.showMessageDialog(null, "对象未序列化!"); } catch (IOException e4) { JOptionPane.showMessageDialog(null, "不能写入到指定服务器!"); } } public static void main(String args[]) { new Login(); } } Register.java import *; public class Register extends JFrame implements ActionListener { private JComboBox comboBox; private static final long serialVersionUID = 90522180L; JPanel pnlRegister; JLabel lblUserName,lblGender,lblAge; JLabel lblPassword,lblConfirmPass,lblEmail,logoPosition; JTextField txtUserName,txtAge,txtEmail; JPasswordField pwdUserPassword,pwdConfirmPass; JRadioButton rbtnMale,rbtnFemale; ButtonGroup btngGender; JButton btnOk,btnCancel,btnClear; String strServerIp; final JLabel headLabel = new JLabel(); Dimension scrnsize; Toolkit toolkit=Toolkit.getDefaultToolkit(); public Register(String ip) { super("[HappyChat]聊天室注册窗口"); strServerIp=ip; pnlRegister=new JPanel(); this.getContentPane().add(pnlRegister); lblUserName=new JLabel("用 户 名:"); lblGender=new JLabel("性 别:"); lblAge=new JLabel("年 龄:"); lblPassword=new JLabel("口 令:"); lblConfirmPass=new JLabel("确认口令:"); lblEmail=new JLabel("电子邮件:"); txtUserName=new JTextField(30); txtEmail=new JTextField(30); txtAge=new JTextField(10); pwdUserPassword=new JPasswordField(30); pwdConfirmPass=new JPasswordField(30); rbtnMale=new JRadioButton("男",true); rbtnFemale=new JRadioButton("女"); btngGender=new ButtonGroup(); btnOk=new JButton("拟定(O)"); btnOk.setMnemonic('O'); btnOk.setToolTipText("保存注册信息"); btnCancel=new JButton("返回(B)"); btnCancel.setMnemonic('B'); btnCancel.setToolTipText("返回登录窗口"); btnClear=new JButton("清空(L)"); btnClear.setMnemonic('L'); btnClear.setToolTipText("清空注册信息"); pnlRegister.setLayout(null); pnlRegister.setBackground(new Color(52,130,203)); lblUserName.setBounds(30,80,100,30); txtUserName.setBounds(110,85,120,20); lblPassword.setBounds(30,141,100,30); pwdUserPassword.setBounds(110,146,120,20); lblConfirmPass.setBounds(30,166,100,30); pwdConfirmPass.setBounds(110,171,120,20); lblGender.setBounds(30,191,100,30); rbtnMale.setBounds(110,196,60,20); rbtnFemale.setBounds(190,196,60,20); lblAge.setBounds(30,216,100,30); txtAge.setBounds(110,221,120,20); lblEmail.setBounds(30,241,100,30); txtEmail.setBounds(110,246,120,20); btnOk.setBounds(246,166,80,25); btnCancel.setBounds(246,201,80,25); btnClear.setBounds(246,241,80,25); Font fontstr=new Font("宋体",Font.PLAIN,12); lblUserName.setFont(fontstr); lblGender.setFont(fontstr); lblPassword.setFont(fontstr); lblConfirmPass.setFont(fontstr); lblAge.setFont(fontstr); lblEmail.setFont(fontstr); rbtnMale.setFont(fontstr); rbtnFemale.setFont(fontstr); txtUserName.setFont(fontstr); txtEmail.setFont(fontstr); btnOk.setFont(fontstr); btnCancel.setFont(fontstr); btnClear.setFont(fontstr); lblUserName.setForeground(Color.BLACK); lblGender.setForeground(Color.BLACK); lblPassword.setForeground(Color.BLACK); lblAge.setForeground(Color.BLACK); lblConfirmPass .setForeground(Color.BLACK); lblEmail.setForeground(Color.BLACK); rbtnMale.setForeground(Color.BLACK); rbtnFemale.setForeground(Color.BLACK); rbtnMale.setBackground(Color.white); rbtnFemale.setBackground(Color.white); btnOk.setBackground(Color.ORANGE); btnCancel.setBackground(Color.ORANGE); btnClear.setBackground(Color.ORANGE); rbtnMale.setOpaque(false); rbtnFemale.setOpaque(false); pnlRegister.add(lblUserName); pnlRegister.add(lblGender); pnlRegist- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 实验 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文