欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    毕业论文_基于WEB的学生作业管理系统设计与实现.doc

    • 资源ID:3941312       资源大小:355.50KB        全文页数:39页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    毕业论文_基于WEB的学生作业管理系统设计与实现.doc

    西安工业大学北方信息工程学院西安工业大学北方信息工程学院 本科毕业设计本科毕业设计( (论文论文) ) 题目题目:基于基于 WEB 的学生作业管理系的学生作业管理系 统设计与实现统设计与实现 系系 别:别:计算机信息与技术系 专专 业:业:计算机科学与技术 班班 级:级: 学学 生:生: 学学 号:号: 指导教师:指导教师: 2011 年 06 月 毕业设计(论文)任务书 系别 计算机信息与技术系 专业 计算机科学与技术 班级 B070601 姓名 学号 B07060115 1.毕业设计(论文)题目: 基于 WEB 的学生作业管理系统设计与实现 2.题目背景和意义:随着 Internet 技术的发展,人们的日常生活、学习已经离不开网络。未 来社会人们的生活和工作将越来越依赖于数字教学的发展,越来越数字化、网路化、电子 化、虚拟化。在现代化的教育技术模式下,计算机已经广泛应用于教学的管理,给传统的 教学方式带来了重大的革命。如何进行有效作业管理是摆在我们面前的一个新的课题。 3.设计(论文)的主要内容(理工科含技术指标): (1)实现学生作业管理系统 。主要功能是: 管理员通过登陆后,可对教师和学生进行管理(包括添加、删除、修改用户) ,并能发布公 告信息。教师通过登陆后,可以发布作业、批改作业、发布标准答案和发送消息。学生通 过登录后,可以查看作业、上传作业、下载标准答案和查看成绩。 (2) 书写 1.5 万字的论文,要求书写整齐规范,无错误。 (3) 完成与专业相关的 3000 字以上的外文资料的翻译,翻译应与原文意思相一致,语句通 顺。 (4)开发工具:a.语言:C#,b.数据库:SQL server2005 (5)按照软件工程的思想和方法进行 分析、设计和实现 4.设计的基本要求及进度安排(含起始时间、设计地点): 基本要求:(1) 要求学生每周与指导教师联系一次,及时反映问题,及时解决; (2) 在校设计期间,遵守校纪校规,外出要请假。 (3) 保持实验室卫生整洁,爱护设备。 进度安排:第 14 周:查看有关资料,完成对项目的整体把握,搭建工程环境。 第 57 周:研究系统相关模块的详细设计说明书。 第 8-12 周:编码实现和测试。 第 13-14 周:编写毕业论文。 第 15 周:毕业论文答辩。 5.毕业设计(论文)的工作量要求 撰写 15000 字论文 实验(时数)*或实习(天数): 300 机时 图纸(幅面和张数)*: 其他要求: 查阅资料不少于 10 份 II 指导教师签名: 年 月 日 学生签名: 年 月 日 系主任审批: 年 月 日 说明:1 本表一式二份,一份由学生装订入册,一份教师自留。 2 带*项可根据学科特点选填。 III ASP.NETASP.NET 技术技术 摘摘 要要 1.1.构建构建 ASP.NETASP.NET 页面页面 ASP.NET 和 ASP.NET 结构 ASP.NET 是微软.NET framework 整体的一部分, 它包含一组大量的编程用 的类,满足各种编程需要。 在下列的二个部分中, 你如何学会 ASP.NET 很适 合的放在.NET framework, 和学会能在你的 ASP.NET 页面中使用语言。 .NET 类库 假想你是微软。 假想你必须支持大量的编程语言-比如 Visual Basic 、 JScript 和 C+. 这些编程语言的很多功能具有重叠性。 举例来说,对于每一 种语言,你必须包括存取文件系统、与数据库协同工作和操作字符串的方法。 此外,这些语言包含相似的编程构造。 每种语言,举例来说,都能够使用 循环语句和条件语句。即使用 Visual Basic 写的条件语句的语法不与 用 C+ 写的不一样,程序的功能也是相同的。 最后,大多数的编程语言有相似的数据变量类型。 以大多数的语言,你有 设定字符串类型和整型数据类型的方法。举例来说,整型数据最大值和最小值 可能依赖语言的种类,但是基本的数据类型是相同的。 对于多种语言来说维持这一功能需要很大的工作量。 为什么继续再创轮子? 对所有的语言创建这种功能一次,然后把这个功能用在每一种语言中岂不是更 容易。 .NET 类库不完全是那样。 它含有大量的满足编程需要的类。举例来说, .NET 类库包含处理数据库访问的类和文件协同工作,操作文本和生成图像。除 此之外,它包含更多特殊的类用在正则表达式和处理 Web 协议。 .NET framework,此外包含支持所有的基本变量数据类型的类,比如:字 符串、整型、字节型、字符型和数组 最重要地, 写这一本书的目的, .NET 类库包含构建的 ASP.NET 页面的类。 然而你需要了解当你构建.NET 页面的时候能够访问.NET framework 的任意类。 理解命名空间 IV 正如你猜测的, .NET framework 是庞大的。 它包含数以千计的类。 (超 过 3,400) 幸运地,类不是简单的堆在一起。.NET framework 的类被组织成有 层次结构的命名空间。 ASP Classic Note 在先前的 ASP 中,你仅仅能够访问五个标准类 。相比之下 ASP.NET 提供超过 3,400 个类! 一个命名空间包含一组逻辑的类。 举例来说,涉及到与文件系统协同工作 的类就集合在 System.IO 命名空间中。 命名空间被组织成一个层次结构(一棵逻辑树) 。 树根就是 SYSTEM 命名 空间。 这个命名空间包含基本的数据类型的所有的类,例如:字符串、数组, 还包含提供随机数字和日期的类。 你通过完整的类的命名空间能唯一识别任何的类在.NET framework 中的位 置。 举例来说,指定找到一个 the File class 类,按如下操 System.IO.文件 System.IO 指命名空间 ,而文件指定特定的类。 你能够浏览.NET Framework 所有的标准类的命名空间。通过.NET Framework 的参考文档可以浏览类库。 标准的 ASP.NET 命名空间 在默认情况下,在你的 ASP.NET 页面中,类被包含在一个选定的命名空间 中这些默认的命名空间使你在 ASP.NET 中最常用到的。 System 命名空间- 包含所有的基本数据类型和其他有用的类,例如: 那些关于产生随机数字和日期的类。 System.Collections 命名空间- 包含的类是标准的集合类,例如:哈 希表,数组列表。 System.Collections.Specialized 命名空间- 包含特殊的集合类,例 如:连接列表和字符串集合。 System.Configuration 命名空间- 包括 Web.config files 类。 System.Text 命名空间-包含编码,解码和操作字符串内容的类。 System.Text.RegularExpressions 命名空间- 包含的是匹配正则表达 式和替代操作类。 System.Web 命名空间-工作在万维网方面包含的是浏览器请求和服务器 响应的类。 System.Web.Caching 命名空间- 包含页面缓冲内容和自定义缓冲操作 的类。 V System.Web.Security 命名空间- 包含执行验证和授权,例如:窗体和 密码验证的类。 System.Web.SessionState 命名空间- 包含执行保存状态的类。 System.Web.UI 命名空间- 包含构建 ASP.NET 页面的用户接口的类。 System.Web.UI.HTMLControls 命名空间- 包含 HTML 控件的类。 System.Web.UI.WebControls 命名空间- 包含 Web 控件的类。 .NET Framework -可用的语言 这一本书的目的, 你将会为以 Visual Basic 作为你的编程语言来完成你 的 ASP.NET 页写程序编写。 它是 ASP.NET 页面的默认语言。虽然你在这一本 书中一直用 Visual Basic, 但是,你也需要了解用其它的支持公共语言库的语 言创建 ASP.NET 页面。除此之外,这包括 C#, JScript.NET 和 C+ 。 除微软之外的公司产生的几十个其他的语言已经能够和.NET framework 兼 容。 这些其他的语言的一些例子包括 Python、 SmallTalk 、 Eiffel 和 COBOL。这就意味着假如你真的想, 你可以使用 COBOL 写 ASP.NET 页面。 不管你使用什么语言开发 ASP.NET 页面,你需要明白 ASP.NET 在执行前必 须编译,这就意味着 ASP.NET 执行速度非常快。 你第一次请求 ASP.NET 页面, 页面被编译成一个.NET 类, 这个类文件被 保存在一个特殊的目录下这个目录的名字叫 Temporary ASP.NET Files。对于 一个 ASP.NET 页面一个通信类文件出现在 Temporary ASP.NET Files 目录下。 以后不管任何时候你请求那个同样的 ASP.NET 页面,那个通信类文件就会执行。 当 ASP.NET 页面被编译的时候,它没被直接地被编译成机器码而是被编译 成了一个中间语言,名字叫 (MSIL)所有.NET 可用的语言都被编译成这种中间 语言。 一个 ASP.NET 页面不会被编译成本地机器码直到它被一个浏览器访问,在 那个时间点包含在 Temporary ASP.NET Files 目录下的类文件用 JIT 编译器编 译并且执行。 这些迷惑的方面体现在整个过程都在后台运行,你必须要做的是用资源代 码为你的 ASP.NET 页面创建一个文本文件。.NET framework 为你处理完转换它 为编译码这一困难工作。 VBScript 怎么样呢? 在 ASP.NET 之前, VBScript 是开发动态页面最流 行的语言。 VI ASP.NET 不支持 VBScript ,而且这是好消息。 Visual Basic 是一个 VBScript 的超集,意味着 Visual Basic 相对于 VBScript 有更多的功能。 因 此, 你用 Visual Basic 有更丰富的函数和语句供你使用。 此外,不像 VBScript , Visual Basic 是一种被编译的语言。这意味着 如果你使用 Visual Basic 重写相同的 VBScript 代码感觉会更容易一些。 假如你过去只用 VBScript 而不用 Visual Basic,也不用担心。因为 VBScript 如此接近 Visual Basic, 你将会发现在这二种语言之间的转变是很 容易的。 在.NET framework 中,微软包括一个名叫 IL Disassembler 的有趣的工具。 在临时的 ASP.NET 文件目录中你能使用这个工具查看没有装配的 ASP.NET 类的 代码。它列出了类的所有方法和属性使你能够浏览中间代码。 正如在这章讨论的这个工具也可以用于操作 ASP.NET 控件。 举例来说,你 能使用 IL Disassembler 浏览 TextBox 控件的中间代码。(位于在一个叫做 System.Web.dll 的文件中) 介绍 ASP.NET 控件 ASP.NET 控件为你的 Web 应用程序提供动态和交互的用户接口。这些控件 能够使你的网站的使用者看见和交互。举例来说,你能使用控件建立 HTML 窗 体元素,交互式日历, 而且可以滚动标题广告。 ASP.NET 控件和 HTML 内容共存。 典型地,你用通常的 HTML 创建你的网 页的静态区域和用 ASP.NET 控件创建网页的动态区域。 了解 ASP.NET 控件是怎么工作的?最好的方法是看一个简单的 Web 应用窗 体页面。 添加 ASP.NET 页面的代码 第二个难点就是 ASP.NET 页面的代码,他是确切的页面的程序代码,在你添 加的程序用户处理控件也页面事件。 如果一个使用者单击 HTML 窗体中的 Button 按钮, 举例来说,那个按钮 就会响应一个事件 (单击事件) 。 典型地,你想添加代码响应这个事件到页面 中。 举例来说,当某人单击 Button 按钮控件的时候,你可以保存窗体数据到 一个文件或者数据库。 控件不是唯一的能相应事件的事物。 当它被请求的时候一个 ASP.NET 页 面每次都能够响应几个事件。 举例来说,每当你请求一个页面,页面的初始化 事件就会被触发。 每当初始化事件发生的时候,你能够添加代码到页面中来执 行。 2.2. 用用 WebWeb 服务器控件创建窗体服务器控件创建窗体 VII 构建灵活窗体 你用几个基本 Web 控件来代替标准的 HTML 窗体元素,例如 radio buttons、text boxes, and list boxes. 你能够用这些控件为你的 Web 应用程 序在你的 ASP.NET 页面中创建用户界面。下面的部分为这些 Web 控件提供了详 细的提纲和程序源代码。 控制页面浏览 在下列的部分中,你学会如何控制一个用户从一个 ASP.NET 页面转到另一 个页面。首先,你学会怎么把一个 HTML 窗体链接到另一个页面来获取信息。下 一步,你学会用 Redirect()方法自动让一个用户浏览一个新的页面。 最后, 你学会用超级链接控件怎么把页面连在一起。 对控件应用格式 在下列的部分中,你学会该如何创建更有吸引力的 Web 窗体。 首先,你浏 览一下针对所有 Web 控件格式属性他们是基本控件类的格式属性。然后,你学 会在 Web 控件上应用样式表风格。 3.3. 用验证控件做页面验证用验证控件做页面验证 使用客户端验证 传统地,当增加验证到他们的页面中时,他们会面临一个严峻的选择。 你 可以添加窗体页面验证规则到你的服务器端代码,或者是添加验证规则到你的 客户端代码。 写验证代码到客户端代码中的优势能够及时反馈到你的用户。 举例来说, 一个使用者忽略在一个要求检验的字段中输入一个值,你能够及时的显示一个 错误信息而不需要返回到服务器端解决。 人们喜欢客户端的验证。 它看起来很棒而且产生一种比较好的效果。 然 而,问题是它不与所有的浏览器兼容。不是所有的浏览器支持 JavaScript、不 同版本的浏览器的不同版本支持 JavaScript,所以客户端验证没有保障。 由于这个原因,许多开发者在过去决定添加自定义验证到服务器端。因为 服务器端代码能够和任何浏览器协同工作。就这样的做法更有安全的保障。 幸运地,正如在章节讨论的这些验证控件不会强迫你做困难的选择。 这些 验证控件会自动地产生客户端代码和服务器端代码。如果一个浏览器有能力支 持 JavaScript ,客户端的验证脚本将会自动返回到浏览器。 如果一个浏览器 不支持 JavaScript,那个验证规则会自动在服务器端代码中执行。 然而你需要注意的是,客户端的验证仅仅能够工作在 IE4.0 或更高的版本。 尤其,正如这一章讨论的客户端脚本不可能在任意本本的浏览器中运行。 控制字段: RequiredFieldValidator 控件 VIII 你用这个控件来检查在一个 Web 窗体中是否为空, 典型地,你和 TextBox 控件一起使用这个控件。 然而,这个控件也可以用在其他的输入型控件,例如: RadioButtonList.控件。 验证表达式: RegularExpressionValidator 控件 你能使用 RegularExpressionValidator 控件来验证输入的值是否和定义 的正则表达式相匹配。例如:你能使用这控件来检查一个用户是否输入一个合 法的电子邮件地址,电话号码,用户名或密码。怎样用一个正则表达式来完成 这些验证任务将会在下面的例子中一一列出。 比较值: CompareValidator 控件 这个 CompareValidator 控件用于比较一个输入的数据和另外一个值是否 相同。另外一个值可能是固定值,例如:一个特定的数字或者是输入到另一个 控件中的一个值。 总结错误: ValidationSummary 控件 假想一个页面有 50 个字段假如你仅仅用上部分讨论的那些验证控件来显示 错误看见一个错误在页面中将是很难的。例如:你可能需要滚动到第 48 个页面 字段来找到这个错误信息。 幸好,微软除了包含上面提到的控件还包括 ValidationSummary 控件。 你能用这控件综合所有的错误信息在一个页面的上端或者你想要的任何一个地 方。 4.4. 先进的控件编程先进的控件编程 保存浏览状态 默认地,几乎所有的 ASP.NET 控件都会在先前的窗体中保留他们的属性值。 举例来说,如果你输入文本到一个 Lebel 标签上然后提交那个页面,当那个页 面再次被访问那个 Lebel 标签的内容将会被保存下来。 浏览状态的妙处是它不依赖任何的特定服务器或浏览器的属性。 尤其,它 不依赖 cookies, session 变量、或应用程序变量。 浏览状态在一个名叫做 VIEWSTATE 的隐藏页面中执行,这个隐藏页面自动创建每个 Web 窗体。 当灵活的应用时, 浏览状态能够在你的网站中产生艺术性的和积极的效果, 例如:如果你在一个支持浏览状态的控件中显示数据库数据,你不需要每次都 返回到需要反馈到服务器的数据库页面。你能够自动地保存页面里的数据状态。 显示和隐藏内容 IX 假想你正在用一个可选择的部分创造页面。 举例来说,假想你正在创造一 种在线纳税系统,而且你想要显示或者隐藏一个包含适用于已婚的税文件编档 员的问题的部分。 或者, 假想你想要添加一个帮助按钮到网站上去。 你可能想要隐藏或者显 示完成依靠用户参考的问题的详细说明。 最后,假想你想要把一个 tax form 变成很多页面,以便一个人每次只看 那个 tax form 的一部分。 在下列的部分中,你学会用属性设置在一个窗体中来隐藏或显示控件。 你 学会用单个控件和一组控件设置 Visible and Enabled 属性来隐藏和显示页面 内容。 使用 Visible and Enabled 属性 每个控件,包括 HTML 和 Web 控件,有一个 Visible 属性来决定那个控件是 否可见。当一个控件的 Visible 是 false 值,那个控件就不会在页面上显示; 那个控件也不会进一步运行。 Web 控件 (不是每个 HTML 控件) 还有一个叫 Enabled 的属性。当 Enabled 的属性是 false 值,你用的浏览器是 IE4.0 或更高的版本那个控件被封住了, 也不起作用了,当用其他的浏览器的时候,如:网景浏览器那个控件不会被封, 但它也是不起作用的。 使浏览状态失效 在特定的环境中,你可能想要对一个单独的控件或 ASP.NET 页面作为一个 整体的浏览状态失效。举例来说, 你可能使用一个有包含许多数据的控件.(假 想一个 RadioButtonList 控件控制 1,000 个选项)假如你担心页面数据会大大 的降低页面的显示速度,你可能不想要加载数据到隐藏的 VIEWSTATE 页面字段。 ASP.NET Technique Abstract 1.Building ASP.NET Pages ASP.NET and the .NET Framework ASP.NET is part of Microsoft's overall .NET framework, which contains a vast set of programming classes designed to satisfy any conceivable programming need. In X the following two sections, you learn how ASP.NET fits within the .NET framework, and you learn about the languages you can use in your ASP.NET pages. The .NET Framework Class Library Imagine that you are Microsoft. Imagine that you have to support multiple programming languagessuch as Visual Basic, JScript, and C+. A great deal of the functionality of these programming languages overlaps. For example, for each language, you would have to include methods for accessing the file system, working with databases, and manipulating strings. Furthermore, these languages contain similar programming constructs. Every language, for example, can represent loops and conditionals. Even though the syntax of a conditional written in Visual Basic differs from the syntax of a conditional written in C+, the programming function is the same. Finally, most programming languages have similar variable data types. In most languages, you have some means of representing strings and integers, for example. The maximum and minimum size of an integer might depend on the language, but the basic data type is the same. Maintaining all this functionality for multiple languages requires a lot of work. Why keep reinventing the wheel? Wouldn't it be easier to create all this functionality once and use it for every language? The .NET Framework Class Library does exactly that. It consists of a vast set of classes designed to satisfy any conceivable programming need. For example, the .NET framework contains classes for handling database access, working with the file system, manipulating text, and generating graphics. In addition, it contains more specialized classes for performing tasks such as working with regular expressions and handling network protocols. The .NET framework, furthermore, contains classes that represent all the basic variable data types such as strings, integers, bytes, characters, and arrays. Most importantly, for purposes of this book, the .NET Framework Class Library contains classes for building ASP.NET pages. You need to understand, however, that you can access any of the .NET framework classes when you are building your ASP.NET pages. XI Understanding Namespaces As you might guess, the .NET framework is huge. It contains thousands of classes (over 3,400). Fortunately, the classes are not simply jumbled together. The classes of the .NET framework are organized into a hierarchy of namespaces. ASP Classic Note In previous versions of Active Server Pages, you had access to only five standard classes (the Response, Request, Session, Application, and Server objects). ASP.NET, in contrast, provides you with access to over 3,400 classes! A namespace is a logical grouping of classes. For example, all the classes that relate to working with the file system are gathered together into the System.IO namespace. The namespaces are organized into a hierarchy (a logical tree). At the root of the tree is the System namespace. This namespace contains all the classes for the base data types, such as strings and arrays. It also contains classes for working with random numbers and dates and times. You can uniquely identify any class in the .NET framework by using the full namespace of the class. For example, to uniquely refer to the class that represents a file system file (the File class), you would use the following: System.IO.File System.IO refers to the namespace, and File refers to the particular class. NOTE You can view all the namespaces of the standard classes in the .NET Framework Class Library by viewing the Reference Documentation for the .NET Framework. Standard ASP.NET Namespaces The classes contained in a select number of namespaces are available in your ASP.NET pages by default. (You must explicitly import other namespaces.) These default namespaces contain classes that you use most often in your ASP.NET applications: System Contains all the base data types and other useful classes such as those related to generating random numbers and working with dates and times. XII System.Collections Contains classes for working with standard collection types such as hash tables, and array lists. System.Collections.Specialized Contains classes that represent specialized collections such as linked lists and string collections. System.Configuration Contains classes for working with configuration files (Web.config files). System.Text Contains classes for encoding, decoding, and manipulating the contents of strings. System.Text.RegularExpressions Contains classes for performing regular expression match and replace operations. System.Web Contains the basic classes for working with the World Wide Web, including classes for representing browser requests and server responses. System.Web.Caching Contains classes used for caching the content of pages and classes for performing custom caching operations. System.Web.Security Contains classes for implementing authentication and authorization such as Forms and Passport authentication. System.Web.SessionState Contains classes for implementing session state. System.Web.UI Contains the basic classes used in building the user interface of ASP.NET pages. System.Web.UI.HTMLControls Contains the classes for the HTML controls. System.Web.UI.WebControls Contains the classes for the Web controls. .NET Framework-Compatible Languages For purposes of this book, you will write the application logic for your ASP.NET pages using Visual Basic as your programming language. It is the default language for ASP.NET pages. Although you stick to Visual Basic in this book, you also need to understand that you can create ASP.NET pages by using any language that supports the .NET Common Language Runtime. Out of the box, this includes C#, JScript.NET, and the Managed Extensions to C+. NOTE The CD included with this book contains C# versions of all the code samples. XIII Dozens of other languages created by companies other than Microsoft have been developed to work with the .NET framework. Some examples of these other languages include Python, SmallTalk, Eiffel, and COBOL. This means that you could, if you really wanted to, write ASP.NET pages using COBOL. Regardless of the language that you use to develop your ASP.NET pages, you need to understand that ASP.NET pages are compiled before they are executed. This means that ASP.NET pages can execute very quickly. The

    注意事项

    本文(毕业论文_基于WEB的学生作业管理系统设计与实现.doc)为本站会员(yyf)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开