《基于Web的新闻发布系统.doc》由会员分享,可在线阅读,更多相关《基于Web的新闻发布系统.doc(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、分类号:TP311.1 U D C:D10621-408-(2007)5750密 级:公 开 编 号:2002032072成都信息工程学院学位论文基于Web的新闻发布系统论文作者姓名:张武军申请学位专业:网络工程申请学位类别:工学学士指导教师姓名(职称):高宏宇(讲师)论文提交日期:2007年 07月 23日基于Web的新闻发布系统摘 要ASP.NET是新一代Web应用程序开发平台,它是一个已编译的、基于.NET的开发环境,它提供了生成企业级应用程序所必需的全部服务,基于 .NET Framework 生成,整个框架都可用于任何 ASP.NET 应用程序。可以使用任何与公共语言运行库(CLR)
2、兼容的语言(包括 Visual Basic.NET、C# 和 JScript.NET)来创建应用程序。由于静态网页的交互性低下,又经常改动,导致静态Web站点的开发与维护变得越来越困难。本系统使用ASP.NET(C#语言)和ADO.NET技术开发, 实现了网站新闻的动态管理,使得对信息的管理更加及时、高效,提高了工作效率,具有一般新闻系统的功能,主要包括前台新闻查看区和后台管理区,可为公司各部门发布新闻,为公司网站提供新闻发布与管理的服务。关键词:ASP.NET ADO.NET 新闻管理 Browser/ServerWEB based News SystemAbstractASP.NET is
3、 Web application program developing platform of new generation, it is one that has already compiled , development environment based on .NET, it has offered and produced all essential services of application program of enterprise layer, produce because of .NET Framework, the whole frame can be used i
4、n any ASP.NET application program. Can use any to operate the compatible language (including Visual Basic.NET , C# and JScript .NET ) of storehouse (CLR ) to establish application program with common language . Because the static Web, interactive low and often changes. Static Web site led to the dev
5、elopment and maintenance has become increasingly difficult .This news system uses ASP.NET (C#) and ADO.NET technological development, has realized the dynamic management of websites news, make the control over information more prompt , more high-efficient , has improved working efficiency. News this
6、 system have general news function of system, mainly including front desk news person who look over and back-stage management area, can release news for every department of the company , offer news briefing and management one service for company website. Key words: ASP.NET ADO.NET NewsManagement Bro
7、wser/Server目 录论文总页数:20页1 引言111 课题背景112 国内外研究现状113 本课题的意义与研究方法22 总体设计221 系统需求分析222 总体结构33 详细设计与主要模块功能431 新闻管理系统432 用户登录系统54 数据库的设计541 NEWS表542 LOGINLOG表643 JPEG表644 MEMBER INFO表745 ADMINLOG表746 ADMIN INFO表75 功能的代码实现851 Web.config配置853 主界面设计1154 撰写新闻界面设计1255 新闻管理界面设计1356 个人用户管理界面设计1557 浏览新闻界面15结 论16参考
8、文献18致 谢19声 明201 引言11 课题背景网络时代中,快速及时的新闻浏览,五彩缤纷的网上信息,使网络与人们的生活息息相关。它打破了地域限制,真正使信息得以共享,改变了人们的工作和生活方式。在当前的市场环境中,随着社会的进步和技术的发展,信息经济也在迅猛发展,市场的竞争在很大程度上体现为信息的竞争。从而,找到合适的资源,成为企业提高竞争力的重要方法。同时,当今的市场环境又是一个快速变化的环境,市场需求在变,对信息的需求也相应处于变化之中。如何能快速适应这一变化,提高公司运作流程的工作效率,进行快速定位,也就成为公司/单位重点考虑的因素。制作网页是企业和个人的宣传自己的重要手段,同时也是学
9、习者获取学习信息的重要手段。 在二十一世纪信息横行的时代里,越来越多的企业计划建立起或者进一步拓展自己的网站。但是如果为了建立和维护自己的网站而聘请专职的技术人员,其成本对于一个中小企业来说实在是太高了。对于上面这些企业来说,他们最需要的是一个现成的新闻发布系统(Content Manaer System),这样只需要会打字,会上网就能了利用新闻发布系统建立和维护自己的网站。12 国内外研究现状传统的网站新闻管理方式有两种:一是静态HTML页面,更新信息时需要重新制作页面然后上传页面并修改相应链接。二是基于ASP和脚本语言,将动态网页和数据库结合,通过应用程序来处理新闻。静态Web站点的开发与
10、维护变得越来越困难,一方面信息的不断增加和变化,使站点维护人员不得不经常修改他们的网页,特别是基于数据库驱动的Web站点更是如此,随着Internet上信息量的增多和交互性的加强使HTML显得越来越难以胜任。另一方面静态网页由于不能与浏览者进行有效交互,使人们感到越来越乏味,而不愿意再一次地进入同一站点。所以开发动态网页或动态内容成了越来越多的站点所追求目标。所谓动态内容是由每一个用户按照自己的需求发出请求而特殊制作的Web网页。ASP 全称为 Active Server Pages(动态服务器主页),它是一种应用程序环境,可以利用 VBscript 或 Java Script 语言来设计,主
11、要用于网络数据库的查询与管理。其工作原理是当浏览者发出浏览请求的时候,服务器会自动将 ASP 的程序码,解释为标准 HTML 格式的网页内容,再送到浏览者浏览器上显示出来。我们也可以将 ASP 理解为一种特殊的 CGI。利用 ASP 生成的网页,与HTML相比具有更大的灵活性。只要结构合理,一个 ASP 页面就可以取代成千上万个网页。但是,较之近几年的新兴技术,由于ASP本身的局限性使得系统存在着一些不可克服的缺陷。因此,在ASP系统性能上有了很大的改善的ASP.NET系统,就有了非常大的市场。目前成熟的新闻发布系统很多,如著名的V7 Cntent Management Suite(,西门子公
12、司采用的系统),Interwover_TeamSite(, Cisco 采用的系统)以及开源的产品也得到广泛的应用。还有OpenCMS(http:/www.opencms.org),Zope-ContentManagementFramework(http:/www.zope.org)等。本论文针对目前新闻发布存在的缺陷,将提出一种采用ASP.NET技术的更为优势的基于Web的新闻发布系统。13 本课题的意义与研究方法该新闻发布系统是在后台由人工输入文章的内容,然后系统自动将文章内容整理保存(即存入数据库);用户在前台浏览到的均是系统自动产生的网页,所有过程均无需用户手工制作HTML网页的一种高
13、效系统。本系统采用ASP.NET技术,主要由新闻管理以及用户登陆两大模块构成。各大模块下面又包括了许多动能小模块,来动态实现新闻发布,使新闻更具有可见性和及时性。总的来说,与之前的新闻发布系统相比较,其优势主要表现为以下几方面: 一、由于ASP页面每次打开都必须经过先编译后执行的过程,所以页面在反复打开时速度没有任何提升,而ASP.NET页面只需要一次编译后不需要重新编译,直到该页面被修改或Web应用程序重新启动。这使得在多次访问时速度有了极大的提升。 二、由于ASP没有提供任何输出数据为内容的元件,所以在使用ASP撰写数据库页面时只能借助ADO的RecordSet对象逐笔读取记录,而ASP.
14、NET通过ADO.NET提供的DataGrid等数据库元件可以直接和数据库联系。 三、ASP.NET支持应用程序的实时更新。管理员不必关掉网络服务器或者甚至不用停止应用程序的运行就可以更新应用文件。应用程序文件永远不会被加锁,因此甚至在程序运行时文件就可以被覆盖。当文件更新后,系统会温和地转换到新的版本。 四、ASP.NET采取code-behind方式编写代码使得代码更易于编写,结构更清晰,降低了系统的开发与维护的复杂度和费用。 本系统以其强大的新闻发布功能、体贴的功能设置及简单的操作流程,得到了众多公司的认可。我在充分考虑公司的新闻发布的基础上,以用户建站特点开发出实用、易用新闻程序,力求
15、满足每一位用户的个性化需求。2 总体设计21 系统需求分析开发一个基于Web的新闻发布系统,首先有几个方面需要考虑:一,怎样来做,即选用怎样的开发环境来做。二,做什么,即如何来实现系统的功能的需求。功能需求主要包括如何用ASP.NET来动态实现新闻的浏览、发布以及更改,由谁管理,其权限如何设置;以及怎样来进行新闻分类,才能使新闻保持其价值性与及时性。所以以系统功能设计和系统框架与数据库设计为重点,在程序开发过程中,重点需要关注权限管理部分和栏目管理部分,这两部分确定了系统的安全性和健壮性。就此对系统的功能提出了如下需求:需要的开发环境:该新闻管理系统可以在Windows 2000 Server
16、操作系统平台上运行,Web服务为II数据库服务器为Microsoft SQL Server2000。开发工具采用的Microsoft Visual Studio .NET。用户登录的权限判定:普通用户只能浏览、阅读新闻;注册用户除了可以完成普通用户的操作外,还可以进入新闻管理模块,进行新闻录入,修改和删除操作,但只限于自己录入的新闻。管理员可对所有新闻进行录入和删改操作新闻录入的分类:一是最新新闻;二是重要新闻;三是图片新闻。最新新闻由上传时间(最新)决定,重要新闻由被浏览的点击率(最高)决定;而图片新闻则是有最新为最新,无最新以点击率最高而决定。22 总体结构新闻发布系统主要功能模块结构示意
17、图如下:新闻发布系统用户登录系统新闻管理系统用户注册系统图1 系统总体设计图新闻发布系统主要由两大功能模块和一小功能模块构成。两大功能模块:一是用户登录系统,主要用来判别用户是否为普通用户,注册用户或管理员,以便限制其权限。二是新闻管理系统,主要用来提供已判别的用户的操作,比如更新自己的信息或上传新闻等。还有一个小系统是用户注册系统,提供用户注册,以及记录注册的时间,注册用户的信息等等。3 详细设计与主要模块功能下面具体介绍新闻管理系统和用户登录系统的具体功能。31 新闻管理系统新闻管理系统撰写新闻用户管理新闻管理退出登录图2 新闻管理系统模块图新闻管理系统是已登录的用户进行上传新闻,删除自己
18、上传的新闻,管理自己的信息以及退出登录等操作的系统。它有4个子系统,分别为:撰写新闻(新闻的上传),新闻管理(更改,删除等),用户管理(更新自己的信息),以为退出登录(退出登录系统,成为一般游客)。撰写新闻新闻来源新闻内容新闻题目图片上传图3 撰写新闻模块图撰写新闻时,必须要写出新闻题目,主要内容以及新闻的来源等,同时在上传的新闻中还可以上传图片以增加新闻的可读性。如果没有完全写出上面的几大内容,则会出现出错提示。32 用户登录系统用户登录系统管理员登录一般用户登陆未注册用户上传新闻更改任何新闻删除任何新闻浏览新闻删除本人上传新闻上传新闻浏览新闻浏览新闻图4 用户登陆系统模块图用户登录系统详细
19、分为了3类,对权限加以限制。以达到对新闻进行合理的管理。第一类是普通的游客,只拥有浏览新闻的权利。第二类是注册之后的用户,除浏览新闻外,还可以上传新闻,以及删除新闻(仅仅只限于自己上传的新闻)。第三类是管理人员,管理员除拥有以上权限外,还可以对任何新闻进行删除和修改等。4 数据库的设计利用Microsoft SQL Server 2000建立数据库及其存储过程。根据需求设计出6个主要数据表,分别是:管理员操作记录表(adminlog),管理员信息表(admin_info),用户信息表(member_info),用户登陆记录表(loginlog),新闻表(news)以及用户上传图片表(jpeg)
20、。41 NEWS表新闻表News包含的字段有:编号、姓名、标题、关键字、内容、类型、来源部门和日期。字段说明如下:表1 news表42 LOGINLOG表用户登陆记录表(loginlog)包含的字段有:编号、姓名、密码、所属部门、电子邮箱和电话。字段说明如下:表2 loginlog表43 JPEG表用户上传图片表(jpeg)用于存储用户上传某批图片的基础信息表3 jpeg表NameTypeDescriptionjob_idBIGINT(11)编号Authorvarchar(40)作者authoridBIGINT(11)作者IDsort_idBIGINT(11)分类IDalbum_idBIGIN
21、T(11)图片IDhitsmediumint(7)点击次数posttimeBIGINT(11)发表时间hiddenint(2)是否隐藏44 MEMBER INFO表用户信息表(member_info)主要用来记录注册用户的信息。表4 member_info 表NameTypeDescriptionidBIGINT(11)用户编号reg_timeBIGINT(11)注册时间namevarchar(32)用户名photo_album_namevarchar(32)图片名称blog_album_describeBLOB(100)描述ganderchar(1)性别pwdvarchar(64)用户密码g
22、idmediumint(6)用户所在组IDemailvarchar(64)用户邮箱45 ADMINLOG表管理员操作记录表(adminlog),用于存储管理员对后台的操作记录表5 adminlog 表NameTypeDescriptionadminlogidint(5)记录编号uidBIGINT(11)管理员编号user_namevarchar(32)管理员名称actionvarchar(50)进行操作的名称scriptvarchar(255)该操作所调用的脚本dateint(10)执行该操作的时间46 ADMIN INFO表管理员信息表(admin_info),用于存储管理员的基本信息(为了
23、降低系统复杂度,这里将管理员的权限直接和管理员信息写入同一表中,不独立分为两个表)表6 admin_info 表NameTypeDescriptionaidBIGINT(11)管理员编号admin_namevarchar(32)管理员名称pwdvarchar(64)管理员密码gidmediumint(6)管理员组ID(预留)can_adminint(1)执行系统管理的权限can_userint(1)执行用户管理的权限can_categoryint(1)执行分类管理的权限can_settingint(1)执行设定管理的权限5 功能的代码实现51 Web.config配置ASP.NET提供了非常方
24、便的Web.config配置文件来支持对网络应用程序的配置,可以帮助管理人员轻松,快速建立里自己的web 应用环境。 web.config文件可以支持一个完全编译的应用程序的配置。这样做的优势在于,源代码对管理员是不可见的。这样保证了系统的安全性。下面为本系统的web.config文件配置。 /数据库连接 /设置默认起始页面 /设置管理员账号和密码。图5 登录界面图用户登录需要验证用户的用户名和密码,从而保证用户可见和可使用的资源。管理员和其他用户的登陆界面是一样的,都是根目录的default.aspx和default.aspx.cs 文件。邦定代码default.aspx.cs文件的关键部分
25、是单击“登陆”按钮后的相应函数,它根据用户名和密码,以及用户种类将界面重定向到各类用户的主界面上,登陆界面调用了Person 和Company类的Login() 函数判断用户是否已经登录:public bool Login() strSQl=”Select personID from person where name=”+this.Name”+AndPassword=+ Functions.Encrypt(this.Password,1) +;Try ExecuteSql4Value(strSQL);return true;catch return false;52注册界面设计在本系统中管理
26、员用户的个人登陆信息保存在web.config配置文件中,他和其他个人用户一样登陆。整个系统注册部分的如图6所示。本系统的注册比较简单,是为了减少繁冗的信息登记,方便用户登录。注册成功后才在属于自己的页面登记详细信息。注册表单提交后,服务器就会对提交的内容进行验证,如果填写错误的项要给出出错提示信息,并允许重新填写提交。这里需要用到requiredfieldvalidator控件,所有的输入框都需要这个验证控件,它用来验证输入都不能为空,comparevalidator 验证控件用来验证用来验证两次输入的密码是否相同。RequiredFieldValidator控件用来验证输入的邮箱是否合法.
27、图6 注册页面该页面代码调用的是person类的add()方法,当个人用户注册时候就调用它。它先检查新注册用户名是否已经存在,如果存在抛出“This name was registered”异常,否则在表getJonInfo中插入新的表项,以便该用户登录后可以在线填写和提交简历。代码如下:public void Add()if(IsExist()throw new Exception(This name was registered!);elsestrSQL = Insert into person (Name,Password,Email) Values(+ + this.Name + ,+
28、 + Functions.Encrypt(this.Password,1) + ,+ + this.Mail + ); /密码加密后再插入数据库。tryExecuteSql(strSQL);catchthrow new Exception(Register FAILED!);strSQL = Select Max(personID) From person;int personId;try personId = ExecuteSql4Value(strSQL);catchthrow new Exception(Register FAILED!);strSQL = Insert into get
29、JobInfo (personID) Values(+ personId.ToString() +);try ExecuteSql(strSQL);catchthrow new Exception(Register FAILED!);函数IsExist()被前面的Add()函数调用,用来检查person表中是否已经存在一个用户名,如果存在则返回true,否则返回false.代码如下: public bool IsExist() strSQL = Select personID from person Where Name=this.Name ; Try ExecuteSql4Value(str
30、SQL);return true; Catch return false;53 主界面设计所有的用户公用一个主界面,即Home.aspx,管理员用户也不例外,只是在该界面中,对不同的用户提供了不同的链接。提供给管理员的链接有撰写新闻、管理新闻、管理个人用户和管理企业用户。其界面如图7:图7 管理员主界面Home.aspx中包含了两个frame,分别是页面首部的Top.aspx文件和下面主窗口Main.aspx文件。页面首部的Top.aspx 文件描述了一些所有用户都公用的功能,如浏览新闻、浏览招聘信息、浏览应聘信息等。也就是说,Top上对于链接对于所用用户都是可见的。表7给出了顶部菜单中的各个
31、超链接所对应的文件。表7 顶部菜单对应的超链接文件超链接名称链接文件代码邦定文件首页Default.aspxDefault.aspx.cs求职GetJob.aspxGetJob.aspx.cs招聘GiveJob.aspxGiveJob.aspx.cs新闻Main.aspxMain.aspx.cs服务Hr.asmxHr.asmx.cs退出Logout.aspxLogout.aspx.cs下面的主界面Main.aspx分别为两个Frame,左边Frame对应的文件是Left.aspx和它邦定代码Left.aspx.cs。它对应每一种特定的用户提供不同的选项,如前所述,对于管理员用户它提供了撰写新闻
32、、新闻管理、个人用户管理和企业用户管理选项,对于个人用户它提供了填写个人信息、填写个人简历选项;对于企业用户,它提供了填写企业信息,发布招聘信息,以及查看招聘结果等选项。右部的窗口是主窗口,用于显示和编写各种信息,左部菜单中各个超链接对应的文件如表8所示。表8 左部菜单对应的超链接文件用户类型超链接名称链接文件代码邦定文件管理员撰写新闻WriteNews.aspxWriteNews.aspx.cs新闻管理NewsManage.aspxNewsManage.aspx.cs个人用户管理PersonManage.aspxPersonManage.aspx.cs企业用户管理CompanyManage.
33、aspxCompanyManage.aspx.cs企业用户企业基本信息CopanyBaseInfo.aspxCopanyBaseInfo.aspx.cs企业收藏夹CompanyStore.aspxCompanyStore.aspx.cs个人用户个人基本信息personBaseInfo.aspxpersonBaseInfo.aspx.cs根据不同的用户类型,可以显示不同的超链接的部分。区分一个用户是管理员还是普通用户的方法是判断他的用户名是否在前面提到的web.config中指定aaa字符串中,person类中的函数IsSupervisor()完成了这个功能,它先从配置文件的aaa字符串中取出指
34、定的管理员的用户名集合,然后将其保存在字符串数组names中,如果给定的用户名等于其中的一个字符串,说明这个用户是管理员用户,代码如下:Public bool IsSupervisor()string strManager = ConfigurationSettings.AppSettingsaaa; string names = strManager.Split(,); int i; for(i=0;inames.Length;i+) if(Name = namesi) return true; return false;54 撰写新闻界面设计在系统管理员的主界面左侧,单击“撰写新闻”按钮,
35、右面的显示窗口则进入撰写新闻界面,管理员填写完新闻内容后按下“提交”后,将执行注册函数btn_Replay_Click(),该函数将用户输入的内容存储到数据库中,撰写新闻界面如下 图8:图8 撰写新闻界面代码如下:ArrayList CommAry=new ArrayList();string ext=;string name=; if(myFile.PostedFile!=null)&(myFile.PostedFile.FileName!=) string nam = myFile.PostedFile.FileName ; int i= nam.LastIndexOf(.);/取得文件名
36、路径里最后一个.的索引 ext =nam.Substring(i); /取得文件扩展名 /这里自动根据日期和文件大小不同为文件命名,确保文件名不重复。 DateTime now = DateTime.Now; name=now.DayOfYear.ToString()+ myFile.PostedFile.ContentLength; /保存文件到所要的目录,这里是IIS根目录下的upfiles目录./Server.MapPath()取当前文件的绝对目录必须用代替 myFile.PosteFile.SaveAS(Server.MapPath(upload)+ext+name); 存储新闻时候,
37、需要调用News类的AddNews函数,而Addnews()函数利用一个名为addNews的存储过程向数据库的news表插入一条新闻。利用下面的代码来存储新加入的新闻,新闻的信息暂时存储在ArrayListtempary中,先从中取出各个值,然后调用存储过程将其存储到数据库中。public void AddNews(ArrayList tempary)SqlConnection myCn=new SqlConnection(strConn);SqlCommand myCm=new SqlCommand(AddNews,myCn);/调用updatePBaseInfo的存储过程,下面省略了一些代
38、码/myCm.CommandType =CommandType.StoredProcedure ;myCm.Parameters.Add(new SqlParameter(publicDate,SqlDbType.DateTime);myCm.ParameterspublicDate.Value =tempary0;trymyCn.Open() ;MyCm.ExecuteNonQuery() ;catch(System.Data.SqlClient.SqlException er) throw new Exception(er.Message);finallymyCm.Dispose() ;m
39、yCn.Close() ;55 新闻管理界面设计新闻管理是管理员手动删除过期或点击率比较小的新闻。在系统管理员的主界面左侧,单击“管理新闻”按钮,右面的显示窗口则进入管理新闻界面,它的界面如图9图9 新闻管理界面生成新闻列表用刀了DataGrid控件,从数据库查询得到的全部新闻信息邦定到该空间上并以列表的形式输出,代码如下:private void Bind() DataSet ds = My.News.GetNews(); Label1.Text = 共有新闻个数: + ds.Tables0.Rows.Count; this.DataGrid1.DataSource = ds.Tables0
40、.DefaultView; this.DataGrid1.DataBind();上面调用的News类的静态成员方法GetNews()用于返回所用的新闻信息,代码如下:public static DataSet GetNews() strSQL = SELECT * FROM news;Try return ExecuteSql4Ds(strSQL);catchthrow new Exception(Get all the news Information failed!);管理员想删除新闻,先将复选框选中,可以多选(全部选择可以点击“全选”图标),再点击“删除”按钮图标,由于这两个按钮位于列表
41、框底部,是该列表框的一部分。全选中新闻代码如下:private void btnCheckAll_Click()CheckBox cb = new CheckBox();int i,j = DataGrid1.Items.Count;for(i=0;ij;i+) cb=(CheckBox)DataGrid1.Itemsi.Cells0.FindControl(“CheckBox”)cb.Checked = true;删除选中的新闻代码如下:private void btnDelete_Click()CheckBox cb = new CheckBox();StringBuilder sb =
42、new StringBuilder();int i,j = DataGrid1.Items.Count;for(i=0;ij;i+)/用一个循环来逐个检查显示的每个新闻项cb= (CheckBox)DataGrid1.Itemsi.Cells0.FindControl(CheckBox);if(cb.Checked)sb.Append(DataGrid1.Itemsi.Cells2.Text.Trim(); sb.Append(,);/如果该新闻前的复选框被选中记录他的id string strNames = sb.ToString();tryMy.News.DeleteGroup(strNa
43、mes);/调用News类中的DeleteGroup()函数删除选中的新闻lblInfo.Text =”删除成功”;/输出成功提示信息Response.Redirect(NewsManage.aspx);/删除成功后刷新页面catchlblInfo.Text = Delete failed!;/输出错误提示信息 如果管理员在决定删除某条新闻前查看该新闻信息,直接点击该新闻的标题,则可直接链接到该新闻的详细内容。56 个人用户管理界面设计个人用户管理该模块与企业用户管理模块与前面的新闻管理基本相同,是管理员删除注册的用户。操作的时候删除表中的某一行时候需要注意,个人用户管理模块中表中的personID列是getJobInfo表的一个外键,需要先在getJObInfo 表中删除所有相关的行,再删除在person 表中的对应行。具体代码如下:public static void DeleteGroup(ArrayList group) int j=group.Count*2; string strSQL=new stringj; int k=0; for(int i=0;i j;i+) k=i/2; strSQLi
限制150内