当前位置:文档之家› 基于ASP_NET的个人博客网站的毕业设计

基于ASP_NET的个人博客网站的毕业设计

基于https://www.doczj.com/doc/914517485.html,个人博客网站实现与设计

THE DESIGN

ANDIMPLEMENTATION OF https://www.doczj.com/doc/914517485.html,-BASED PERSONAL BLOG

SITE

专业:计算机科学与技术

姓名:某某某

指导教师姓名:

申请学位级别:学士

论文提交日期:2013年6月10日

学位授予单位:某某大学

摘要

在互联网技术日益发展的现在,个人博客网站已经越来越让你给人们所熟知,本文介绍了采用https://www.doczj.com/doc/914517485.html,技术对个人博客网站的开发与实现。Blog的全名应该是Web log,中文意思是“网络日志”,后来缩写为Blog,而博客(Blogger)就是写Blog的人。从理解上讲,博客是“一种表达个人思想、网络链接、内容,按照时间顺序排列,并且不断更新的出版方式”。

本博客网站系统主要模块包括:文章管理模块、留言管理模块、相册管理模块,实现了用户在线文章浏览、文章发表、留言发布与回复、相册发布等功能,用户可以通过Internet发表一些自己撰写的文章以并且可以评论浏览其他网友网站进行交流。为用户提供了友好的个人信息共享和情感交流平台。它改变传统报刊、杂志发表文章的方式,突破了传统出版物的枷锁,实现文章创作的网络化,使传统繁琐的文章发表智能化、信息化、简单化、大众化。

本网站基于B/S模式,在VS2010开发环境下采用https://www.doczj.com/doc/914517485.html,技术,后台数据库使用SQL Server2008,并采用三层架构模型,实现Blog网站的动态管理,使得对Blog信息的管理更加及时、高效,提高了工作效率。

关键词:博客网站;https://www.doczj.com/doc/914517485.html, ;SQL Server2008;三层架构

ABSTRACT

InInternet technologynowgrowing, personal blogsitehas become increasinglyallow you to givewell known,this paperdescribes the useof https://www.doczj.com/doc/914517485.html,technologydevelopmentand implementation. Blog's full name should be theWeb log,Chinesemeans "web log", later shortened toBlog,andblog(Blogger)is to write theBlogman.Fromunderstandingspeaking,blogis"an expression of personal thoughts, Web links, content, arranged in chronological order, and constantly updatedpublishing methods."

Thisblogsitesystemmain modulesinclude:articlemanagement module, message management module, photo album management module, the realization of the userbrowsingonline articles, articles published, publishing andreplycomments, album releaseand other functions, users can publishthrough the Internetarticles written bysome of his owntobrowseotheruserscan commentandwebsitesto communicate.Provides users with afriendly andpersonalinformation sharing andemotional communicationplatform. It changesthe traditionalnewspapers and magazinespublished articlesthe way, breaking the shackles oftraditional publications, to achieve the creation ofnetworkedarticle, the traditional tediousarticle was publishedintelligence, information, simplistic, popular.

This site isbased onB / S mode, theVS2010developmentenvironment https://www.doczj.com/doc/914517485.html, technology, back-end databaseusingSQL Server 2008,and thethree-tiermodel, the realization Blogsitedynamic managementmakesBloginformation moretimely and efficientand improve workefficiency.

Keywords:blog site; https://www.doczj.com/doc/914517485.html,; SQLServer2008;

第一章引言

第一节研究目的与意义

博客能让个人在互联网上表达自己的心声。这是一个收集和共享任何感兴趣的事物的地方--可以是政治评论、个人日记或是指向您想记住的网站的链接。许多人使用博客只是要组织自己的想法,而有些人则在全球成千上万的浏览者中赢得影响力。职业和业余新闻记者使用博客发布特发新闻,而有写日记习惯的人则会在博客中宣示自己内心的想法。而摄影和美术发烧者,可以通过博客系统的管理自己的作品,无论您要发表什么意见,博客都可以帮您表达出来。

博客作为一种新表达的方式,它的传播不仅情绪,包括大量的智慧、意见和思想。某种意义上说,它也是一种新的文化现象,博客的出现和繁荣,真正凸现网络的知识价值,标志着互联网发展开始步入更高的阶段。

其次博客也有许多用途,如:(1)促进学习。写blog可以促进学习,想写出文章来,自然不能是泛泛的了解就可以的,要理解了才能写得出来的。这就促进了对某些领域的不断学习和思考。(2)记录收获。blog中,常常是记录下来都是瞬间的灵感,对事物的感悟,经过多日思考和实践的结果,对某个问题的解决方案等等,这些都是财富,要记录下来。(3)反映成长。写blog,可以反映出人的思考过程,而不仅仅是思考结果。对一个问题或领域,从不了解到了解,从了解到熟悉,从熟悉到精通。这纪录了一个人思考和解决问题的成长过程。很久之后,看到自己之前的文章,你将会觉得自己进步了(4)结交朋友。写了blog,自然会有许多志趣相同的朋友来阅读,这可以认识许多朋友。大家有共同的兴趣爱好,自然谈得来。(5)共享知识。blog给大家看,大家的blog也给你看。这个问题我解决了,那个问题他解决了。大家互通有无,建立起一个社群。(6)交流看法。回复的人对blog的观点或赞同,或反对,大家一起讨论,听听别人的思想,可以促进双方的共同进步。(7)包装自己。看到一篇篇用心写出的文章,自然是对自己知识技能的最好宣传。

第二节研究背景

计算机科学不断的发展,给信息共享提供了有利的客观条件。随着数字信息的全球化,对信息共享的需求日益增大。现在,不仅企业、集团、单位需要共享

自身的信息,个人信息共享的需求也是迫不急待。数字化的世界中,人与人的交流方式和传统的交流方式相比有所改变。主题网站是适应这种人际交流方式的改变,迎合个人信息共享的需求,并在此基础上快速发展起来的一种个人思想感情表达方式。主题网站的出现,给Internet世界的个人交流带来了极大的方便。

当今时代是计算机时代,人们的工作大部分都依赖计算机。计算机的功能仍在不断的增强,应用范围在不断扩大。在这种形势下,人与人之间的交流也在慢慢地计算机化。主题是发布个人信息、表达个人思想感情的一种有效方式,即主题网站就个人信息发布的场所,是人与人沟通的一个聚集地。因此,主题网站不仅需提供用户发布个人信息的功能,还需提供用户浏览信息的功能,查看用户所发布的个人信息的功能等。因此,主题网站的建设有其不容忽视的特殊意义。

第三节系统技术介绍

一、https://www.doczj.com/doc/914517485.html,程序设计语言特点介绍

https://www.doczj.com/doc/914517485.html,是一种用于创建基于Web的应用程序的编程模型。从本质上来说,运行时和.NET Framework类库集可以用于创建动态Web页。它需要在Web服务器的环境中运行,例如Microsoft Internet Information Server(Microsoft互联网信息服务器,IIS),并且根据服务浏览器请求指示在服务器上执行程序。与直接由Web服务器提供的静态HTML不同的是,https://www.doczj.com/doc/914517485.html,页面实际上是在服务器上执行以后再产生结果的。页面的最后生成也许是由许多不同的指令和/或数据源构造的。

https://www.doczj.com/doc/914517485.html,页面以.aspx扩展名存储。页面由程序员将文本、标记(例如HTML)以https://www.doczj.com/doc/914517485.html,特定服务器标记和脚本组合在一起,然后存储在Web服务器上。可以将存储后的https://www.doczj.com/doc/914517485.html,页面看成是一套描述如何创建一个HTML页面的指令。当该页面被请求浏览时,服务器端程序将会用纯标记来创建一个客户端浏览器可以读懂并能呈现(render)的页面。因为呈现后的输出是纯标记,所以任何浏览器都能够读懂;所有的动态过程都发生在Web服务器端。

https://www.doczj.com/doc/914517485.html,只是.NET Framework的一部分,所以https://www.doczj.com/doc/914517485.html,页面可以利用这个框架提供的所有服务,包括连网、数据访问、安全以及更多其他服务。https://www.doczj.com/doc/914517485.html,的第一个版本(1.0和1.1)在2001年至2003年间迅速风靡了Microsoft 的开发阵营。程序人员很快便感觉到他们通过使用强大和灵活的.NET Framework可以大大减少编码时间。

https://www.doczj.com/doc/914517485.html, 2.0具有一些程序员可以使用的特定的服务器控件,用于在页面上添加数据交互。这些专门的数据控件分为两组:数据源控件和数据绑定控件。数

据源控件创建与数据库的链接。数据绑定控件则从数据源控件获取信息,并在页面上创建呈现。这种简单的双控件模式可用于多种情况。对于多种数据库类型,甚至是非关系型数据源,都有相应的数据源控件。同样地,有多种数据绑定控件可用来在页面上生成表格、树型、列表以及其他数据格式。

二、SQLServer数据库及其特点简介

SQL Server是一个关系数据库管理系统,是Microsoft推出新一代数据管理与分析软件。SQL Server是一个全面的、集成的、端到端的数据解决方案,它为企业中的用户提供了一个安全、可靠和高效的平台用于企业数据管理和商业智能应用。

SQL Server是一个全面的、集成的、端到端的数据解决方案,它为企业中的用户提供了一个安全、可靠和高效的平台用于企业数据管理和商业智能应用。SQL Server 2008 为IT专家和信息工作者带来了强大的、熟悉的工具,同时减少了在从移动设备到企业数据系统的多平台上创建、部署、管理及使用企业数据和分析应用程序的复杂度。通过全面的功能集、和现有系统的集成性、以及对日常任务的自动化管理能力,SQL Server 2008 为不同规模的企业提供了一个完整的数据解决方案。

三、VS2010开发工具及其特点介绍

Visual Studio 是一套完整的开发工具集,用于生成https://www.doczj.com/doc/914517485.html, Web应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C++、Visual C# 和Visual J# 全都使用相同的集成开发环境(IDE),利用此IDE 可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了.NET Framework 的功能,通过此框架可使用简化https://www.doczj.com/doc/914517485.html, Web 应用程序和XML Web Services开发的关键技术。

Microsoft Visual C# 2008(读作C sharp)是一种编程语言,它是为生成在.NET Framework上运行的多种应用程序而设计的。C#简单、功能强大、类型安全,而且是面向对象的。C# 凭借它的许多创新,在保持C样式语言的表示形式和优美的同时,实现了应用程序的快速开发。

Visual Studio 支持Visual C#,这是通过功能齐全的代码编辑器、项目模板、设计器、代码向导、功能强大且易于使用的调试器以及其他工具实现的。通过.NET Framework 类库,可以访问多种操作系统服务和其他有用的精心设计的类,这些类可显著加快开发周期。

第二章需求分析及概要设计

第一节系统的功能需求

一、普通用户需求

对于普通用户来说,博客网站需要提供普通用户登录、注册功能,在登陆之后普通用户可以实行自己的权限,如:添加文章,查看留言,查看评论,上传照片完善自己的个人信息等等。

二、管理员需求

对于网站正常的运行,需要人员来管理网站,他的权限是可以对非法用户及不良文章进行管理及审查。

三、硬件需求

个人PC机:

A CPU:奔腾4.0用其以上

B内存:256M及其以上

四、软件需求

A Windows Server 2003系统

B VS2010开发工具

C SQL 2008

D IIS5.0

第二节功能模块结构化分

一、模块划分

通过对网站系统需求的调查研究,我们得出结论:博客网站应该对不同的用户提供不同的功能。经过调查分析,确定本网站的用户主要分为两种:后台管理员和普通用户。其中,考虑到网站的维护问题,决定提供一个管理员权限――网站后台管理员。因此,本网站主要分为两大模块:普通用户和管理员。

二、功能模块的初步设计

(一)普通用户模块

普通用户功能包括:登录及注册、发表浏览文章及留言、上传照片、浏览并评论好友文章,回复好友评论及留言等。

图 2.1.1普通用户功能模块结构图

1.登录及注册。普通用户可以通过申请注册用户成为该博客网的会员,然后登陆到自己的首页,浏览其他会员的网站,进行交流。

2.发表文章。系统还可以提供发表文章的功能,普通用户可以随时发表文章来交流自己内心情感,使其他会员可以立即了解到你的动态。

3.发布留言。系统可以提供留言功能,当普通用户浏览其他会员网站时,可以点击“给我留言”功能,给他留言,此留言为匿名留言,留言人可以自行输入。

4.上传照片。系统可以提供普通用户上传照片的功能。点击“上传照片”既可以选择该电脑上任意路径的图像上传。

5.浏览并评论好友文章。系统可以提供普通用户浏览其他会员文章功能,点击其他会员昵称即可进入该会员首页并浏览文章也可对自己感兴趣的文章进行评论。

6.回复评论及留言。系统可以提供普通用户回复功能。包括评论回复及留言回复,用户可以看到其他会员对自己文章的态度,也可以通过回复评论和留言进行交流。

7.博客管理。普通用户可以通过该模块对自己的文章进行修改及删除,同时可以对评论、留言、照片做同样操作。

(二)管理员模块

管理员功能模块包括:管理站内的用户及文章。

图2.1.2管理员功能模块结构图

1.管理站内用户。系统可以提供管理员管理站内用户功能。管理员可以根据规则,对非法用户进行删除。

2.管理文章作品。系统可以提供管理员管理文章作品的功能。管理员根据规则可以对文章做删除操作。系统提供搜索功能,管理员可通过文章标题、摘要、内容(任意匹配)、类型、作者查询具体文章,然后执行操作。管理操作一旦执行,该文章所对应相关信息就从数据库里删除。管理员对文章的管理,还包括对文章类型的管理,即添加和删除文章类型。

第三章数据库设计与分析

第一节数据库技术概述

数据库(Database),是按照数据结构来组织、存储和管理数据的仓库,是用于查询的大量数据的存储区域。使用数据库可以带来许多好处:如减少了数据的冗余度,从而大大地节省了数据的存储空间,实现数据资源的充分共享等等。近年来推出的计算机关系数据库管理系统,还具有操作直观,使用灵活,编程方便,功能强大,环境适应广泛,数据处理能力极强等诸多优点。

数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。

数据库技术是信息系统的一个核心技术。是一种计算机辅助管理数据的方法,它研究如何组织和存储数据,如何高效地获取和处理数据。是通过研究数据库的结构、存储、设计、管理以及应用的基本理论和实现方法,并利用这些理论来实现对数据库中的数据进行处理、分析和理解的技术。即:数据库技术是研究、管理和应用数据库的一门软件科学。

数据库技术研究和管理的对象是数据,所以数据库技术所涉及的具体内容主要包括:通过对数据的统一组织和管理,按照指定的结构建立相应的数据库和数据仓库;利用数据库管理系统和数据挖掘系统设计出能够实现对数据库中的数据进行添加、修改、删除、处理、分析、理解、报表和打印等多种功能的数据管理和数据挖掘应用系统;并利用应用管理系统最终实现对数据的处理、分析和理解。

总的来说,数据库的设计对系统的经济性、功能性和效率有很大的影响,一个好的数据库,要求在设计时尽量避免数据的多余,另外,还要尽可能提高数据的存取速度。数据库设计时速度与空间在范式上是相互矛盾的。一方面按规范化理论的要求,关系模式应尽量取高级范式,尤其对记录数较多的关系,低级范式将会造成存储的大量重复,是空间遭受严重浪费;另一方面从存取速度上考虑,应该尽量做到一个模式涉及的属性越多越好,相互运算越少越好,这样,又应取低级范式。因此我们在设计数据库时要严格地探讨它的使用环境,充分了解用户的需求,清楚地掌握数据库系统的特点。经过综合的评价和分析后设计出的数据库应满足以下要求:

(1) 数据库信息要能充分体现出用户使用系统的需求。

(2) 能够支持用户对数据进行的所有处理。

(3) 能够容易被数据库管理系统运行维护。

(4) 数据一致性、完整性好,无更新异常。

第二节数据库的选择

常用的数据库一般是分为五种:Access、SqlServer、MySQL、Oracle、DB2,其中:主流的商业数据库有Oracle、微软SQL Server、IBM DB2,而MySQL微开源数据库。

SQL Server的特点是真正的客户/服务器体系结构,并且是图形化的用户界面,使数据库管理方式更加直观和简单。它还提供了丰富的编程接口工具 为用户进行程序设计提供了更大的选择余地。

本系统采用了SQL Server 2008数据库:

SQL Server 2008数据库提供了一个新的解决方案,公司可以使用其存储和管理许多数据类型,包括XML、e-mail、时间/日历、文件、文档、地理等等,同时提供一个丰富的服务集合来与数据交互作用:搜索、查询、数据分析、报表、数据整合,和强大的同步功能。用户可以访问从创建到存档于任何设备的信息,从桌面到移动设备的信息。此外,公司可以运行他们最关键任务的应用程序,同时降低了管理数据基础设施和发送观察和信息给所有用户的成本。

这个平台有以下特点:

1.可信任的——使得公司可以以很高的安全性、可靠性和可扩展性来运行他们最关键任务的应用程序。

2.高效的——使得公司可以降低开发和管理他们的数据基础设施的时间和

成本。

3.智能的——提供了一个全面的平台,可以在你的用户需要的时候给他发送观察和信息。

第三节数据库逻辑结构设计

根据需求分析及模块划分,设计数据库表结构如下:

(一)管理员信息表

管理员信息表对应数据库中表Admins,存储管理员基本信息,如姓名、密码,具体设计如表3.3.1所示。

表3.3.1管理员信息表

(二)日志文章表

日志文章表对应数据库中表Articles,存储日志的基本信息,如文章标题、内容、发表时间、发表人等,其中ArticleID为主键,具体设计如表3.3.2所示:

表3.3.2 日志文章表

(三)日志评论表

日志文章表对应数据库中表Articles,存储日志的基本信息,如评论内容、评论人、评论时间、日志编号、回复内容、回复时间等,其中Cmt_ID为主键,ArticleID为外键,具体设计如表3.3.3所示:

表3.3.3日志评论表

(四)管理员登录表

管理员登录表对应数据库中表denglu,存储管理员登录的基本信息,如编号、属性等,具体设计如表3.3.4所示:

表3.3.4 管理员登录表

(五)留言表

日志文章表对应数据库中表Messages,存储留言的基本信息,如留言题目、留言内容、留言人、留言时间、回复内容、回复时间、被留言人等,其中Msg_ID 为主键,具体设计如表3.3.4所示:

表3.3.4留言表

(五)照片信息表

照片信息表对应数据库中表Photos,存储照片的基本信息,如照片名称、照片介绍、存储路径、上传时间、相册名称、上传人等,其中Photo_ID为主键,具体设计如表3.3.5所示:

表3.3.5照片信息表

(六)相册信息表

相册信息表对应数据库中表Xcm,存储相册的基本信息,如相册名称、上传人等,具体设计如表3.3.6所示:

表3.3.6相册信息表

(七)注册用户信息表

注册用户信息表对应数据库中表zhuce,存储注册用户的基本信息,如用户名、密码、邮箱、性别、生日、工作、地址、爱好、血型等,具体设计如表3.3.7所示:

表3.3.7注册用户信息表

第四章详细设计与实现

第一节管理员模块设计

一、管理员登录模块

管理员登陆模块通过在登录页面中点击“管理员登录”按钮跳转到管理员的登陆界面(Admin/login.aspx),其中用户名、密码是唯一的admin,在数据库中已经设计完成。管理员输入正确的用户名和密码后,点击“登录”按钮执行SQL 查询语句,正确跳转制管理员模块。

图4.1.1管理员登录

管理员管理模块分为文章管理模块与用户管理模块:

图4.1.2 管理员管理页面

其中,退到首页按钮回跳转到登录页面。

二、管理员文章管理模块

文章管理模块点击页面中“文章管理”按钮跳转到文章管理页面,其中采用自定义控件(UserControl)加入GridView控件进行数据绑定,点击“删除”按钮,执行SQL语句,在文章表(Articles)中删除相应数据,删除成功。

图 4.1.3管理员文章管理

三、管理员用户管理模块

管理员可以对用户进行管理,通过点击“用户管理”按钮,跳转至用户管理页面,与文章管理模块功能相似,采用自定义控件中使用GridView控件方法进行数据绑定,当点击“删除”按钮时侄子执行相应的SQL语句在用户注册表(zhuce)中删除对应的数据。

图 4.1.4 管理员用户管理

第二节用户模块设计

一、普通用户注册模块

用户注册模块是通过在登录页面中点击“注册”按钮跳转至zhuce.aspx,首先会提供注册表让用户输入用户名和密码等,让用户输入注册信息,输入完成后,

当用户单击[注册]按钮的时候,要对用户输入的注册信息简单认证,看用户信息是否验证,如果验证进行数据库验证,查看用户之前是否已经注册过,如果没有注册则插入一条新记录到数据库,完成注册。注册页面如图4.2.1:

图4.2.1普通用户注册页面

其中,主要代码是:

protectedvoid Btnzhuce_Click(object sender, EventArgs e)

{

DBaccess dba = new DBaccess();

int a=dba.adduser(TextName.Text, TextPass.Text, Textemail.Text);

if (a == 1)

{

Response.Write("");

}

else

Response.Write("");

}

代码中相应的数据库操作是调用DBaccess类中的adduser方法:

publicint adduser(string sName, string tname, string sEmail)

{

string str = "insert into zhuce(username,password,e_mail) values ('" + sName + "','" + tname + "','" + sEmail + "')";

DBHelp Das = new DBHelp();

int nPand = Das.UpdataAccess(str);

return nPand;

}

二、普通用户登录模块

普通用户的登录是已经注册的用户输入正确的用户名和密码后登录到个人的首页。登陆页面如图4.2.2:

图4.2.2普通用户登录页面

其中,主要代码是:

protectedvoid Btnzhuce_Click(object sender, EventArgs e)

{

Response.Redirect("zhuce.aspx");

}

protectedvoid Btnlogin_Click(object sender, EventArgs e)

{

string sUid = TextBox1.Text;

string sPwd = TextBox2.Text;

DBaccess Stc = new DBaccess();

string Strs = Stc.loginstring1(sUid, sPwd);

if (sUid == "")

Page.RegisterStartupScript(" ", "");

elseif (sPwd == "")

Page.RegisterStartupScript("", "");

elseif (Stc.loginstring1(sUid, sPwd) == "")

Page.RegisterStartupScript("", "");

else

{

Response.Cookies["Login"].Value = "zhuce";

Response.Cookies["Uid"].Value = sUid.ToString();

Response.Redirect("Default.aspx");

}

}

代码中相应的数据库操作是调用DBaccess类中的loginstring方法:

publicstring loginstring1(string username, string password)

{

string str = "select username from zhuce where username='" + username + "' and password='" + password + "'";

string strsql = "Data Source=LENOVO-PC;Initial Catalog=BlogData;Integrated Security=True";

SqlConnection conn = new SqlConnection(strsql);

conn.Open();

SqlCommand cmd = new SqlCommand(str, conn);

string strs = Convert.ToString(cmd.ExecuteScalar());

return strs;

conn.Close();

}

第三节日志功能模块设计

日志模块是本博客网站的主要功能之一,主要有阅读全文及查看评论,整体的页面设计如图4.3.1,采用GridView控件进行数据绑定,其中点击“阅读全文”及“查看评论”按钮可以连接到相应的Article.aspx和mycomment.aspx页面。

图4.3.1 日志模块

一、阅读全文功能模块

在日志模块中,阅读全文模块中提供了评论功能,用户可以点击“阅读全文”按钮,跳转到Article.aspx页面,在这个页面中,用户可以对其中文章进行匿名评论。如图4.3.2所示:

图4.3.2 文章评论

其中,显示该文章采用查询的SQL语句在数据表Articles查询相对应的文章并显示其内容,代码如下:

int id = Convert.ToInt32(Request.QueryString["ID"].ToString());

string settings=Convert.ToString(ConfigurationManager.ConnectionStrings["Sql Services"]);

//创建数据库连接对象

SqlConnection myconn = new SqlConnection(settings);

myconn.Open();

string strsql = "select * from Articles Where ArticleID=" + id;

在用户匿名评论时,是向数据表Comments中插入一条新的数据,代码如下:protectedvoid Button1_Click(object sender, EventArgs e)

{

int id = Convert.ToInt32(Request.QueryString["ID"].ToString());

string settings =

Convert.ToString(ConfigurationManager.ConnectionStrings["SqlServices"]); SqlConnection myconn = new SqlConnection(settings);

myconn.Open();

string s = "insert into Comments

相关主题
文本预览
相关文档 最新文档