《新闻发布系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《新闻发布系统的设计与实现.doc(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、.-1.引言近年来,Internet 的高速发展带动了整个世界新闻传播的速度,我们每一刻都可以从网络上知晓世界上发生的事情。电脑的普及,移动视频,智能手机等传媒终端的迅速的发展。使传统的信息传播媒体如电视、广播、报纸等逐渐被人们抛弃,满足不了人们对外界瞬息万变的信息的好奇心,因而人们越来越习惯依赖网络新闻媒体。新闻的传播方式发生了巨大的变化,人们更多的开始关注网络新闻媒体。这种媒体不但具备新闻传播的特点:及时、准确。还具有信息量大、方便管理、方便阅读等特点。有了新闻发布系统后,可以随意查询新闻,快速找到自己喜欢的新闻,并可以发表自己的评论,也方便了管理员使其能够更加清晰的管理新闻,很好地提高了
2、管理者的效率。 当今,网络已成为了人们日常生活信息来源的主要途径,人们都习惯于通过上网来获取信息,在这种发展形势下,网络新闻逐渐深入我们的生活,成为获得信息的一个重要手段。由于 Internet 的信息容量大,传播范围广,信息传播及时并且内容准确,大大满足了人们的需要。把所有的信息都上传到网络,供大家相互浏览、评论,使网络的信息量越来越大,所以我们迫切的需要开发一个基于网络的新闻信息浏览系统。 2.新闻发布系统的需求分析2.1性能需求该系统在性能功能上应达到如下需求:1)操作简单、界面友好: 完全控件式的页面布局,使得新闻的录入工作更简便,许多选项包括新闻分类、来源部门等只需要点击鼠标就可以完
3、成;另外,跟踪出现的提示信息也让用户随时清楚自己的操作情况。对常见网站的新闻管理的各个方面:新闻录入、浏览、删除、修改、搜索等方面都大体实现,实现了网站对即时新闻的管理要求;2)即时可见:对新闻的处理(包括录入、删除)将立即在主页的对应栏目显示出来,达到“即时发布、即时见效”的功能;3)系统运行应该快速、稳定、高效和可靠;4)在结构上应具有很好的可扩展性,便于将来的功能扩展和维护。用户根据对新闻系统的需求分析的上述要求及新闻系统模型结构,新闻的功能模块分为四个大的部分,新闻的管理,新闻的查询,新闻类别的管理,用户的管理。新闻管理包括新闻的浏览,新闻的添加和新闻的删除;新闻的查询是按照新闻的发布
4、时间进行查询;新闻类别的管理包括新闻类别的浏览,添加和删除;用户的管理包括对用户的基本信息的浏览,添加和删除。制定出新闻系统的系统功能模块图。该新闻系统的系统功能模块划分如图4-1所示图4-1新闻系统功能模块图2.2运行环境要求2.2.1硬件设备要求客户机硬件要求:具有 Pentium III 处理器以上且满足以下要求的计算机:最低 64 MB 内存,最小 2.1 GB 硬盘。服务器硬件要求:具有 Pentium III 处理器以上且满足以下要求的计算机:最低 256MB 内存,最小 8 GB 硬盘。2.2.2软件设备要求 客户端操作系统:Windows 98/NT/2000/XP或更高版本浏
5、览器:IE 5.0以上或Netscape同等版本以上服务端系统设计工具: Visual Studio 2005或者Visual Studio 2008数据库:SQL server20053. 系统设计3.1新闻系统的设计模型结构3.1.1系统的功能模块新闻的功能模块分为四个大的部分,新闻的管理,新闻的查询,新闻类别的管理,用户的管理。新闻管理包括新闻的浏览,新闻的添加和新闻的删除;新闻的查询是按照新闻的发布时间进行查询;新闻类别的管理包括新闻类别的浏览,添加和删除;用户的管理包括对用户的基本信息的浏览,添加和删除。系统的功能模块图如图3-1所示图3-1系统的功能模块图3.1.2用户管理功能模块
6、的关系本新闻系统的用户分为管理员用户和普通的用户。普通用户在新闻管理上可以浏览新闻的基本信息,添加新闻;在新闻查询上可以按照新闻的发布时间对新闻进行查询。管理员用户除了拥有普通用户的功能外,还可以在用户管理上对用户进行用户的基本信息的浏览,用户管理和新闻类别管理是管理员用户所特有的操作,用户管理包括对所有用户的添加、浏览和删除;新闻类别管理是在进行新闻类别界面对新闻界面的浏览,添加和删除。用户的功能模块图如图3-2所示图3-2用户功能模块图3.1.3系统工作流程分析用户进入系统后,按照其身份的不同,可进入不同操作界面。但是其工作的流程是大致相同的。如果是管理员用户,则进入管理员身份的新闻系统,
7、管理员可以进行新闻管理、新闻查询、用户管理和新闻类别的管理,管理员的新闻管理不但有新闻的添加和浏览,还可以对新闻进行删除操作;新闻查询是按照时间对新闻进行精确地查询,并在查询界面返回查询结果;用户可以在每个页面新闻之间相互跳转,只要点击相应页面的连接就可以实现。其工作流程图如图3-3所示图3-3系统工作流程图3.2新闻系统的功能模块简介新闻的功能是新闻系统的重点模块,进一步了解与熟悉新闻系统的功能模块,才能够很好的完成新闻系统,掌握新闻系统的工作流程,明确每一个新闻系统界面的功能。下面是对新闻管理系统功能模块的一些说明。3.2.1.新闻类别管理管理员发布Web Services,使得用户可以通
8、过Web Services向数据转换服务器发送执行作业的请求。用户调用发布的Web Services,输入相关的参数,服务器调用适当的作业服务器和作业来处理请求,最后将需要的结果返回。(1)新闻类别的录入,包括类别编号和类别名称等信息;(2)新闻类别的增加;(3)新闻类别的删除;3.2.2.新闻的管理通过对后台数据库相关内容的修改能够实现对新的新闻内容进行添加和讲过去的新闻删除,为此系统的核心部分。(1)基本新闻信息的录入,包括新闻标题、新闻内容和所属类别等;(2)基本新闻信息的增加;(3)基本新闻信息的删除;3.2.3.新闻查询模块(1)按照新闻类别分页显示新闻; (2)按照日期分页显示新闻
9、。 3.2.4.编辑用户信息(1)系统用户信息的录入,包括用户名和密码等信息;(2)系统用户信息的增加;(3)系统用户信息的删除。4.详细设计4.1数据库设计本系统定义的数据库中包含以下3个表:新闻类别表:category、新闻基本信息表:news、和用户信息表:xtuser。首先根据新闻系统设计计划表的的内容及相关的属性,并使用数据库工具创建表。下面分别介绍这些表的结构及相关内容,表建立好后,新闻系统的用户可以根据具体的新闻系统的实现新闻系统的功能。4.1.1新闻类别表category新闻类别表category用来保存新闻类别数据,结构如表4.1所示。表4.1新闻类别表category的结构
10、编号字段名称数据结构说明1cateIDint新闻类别编号2catenamevarchar (50)新闻类别名称(其中cateID是表category的主键)在设计数据库结构时,很多表都需要设计一个整型字段作为标识列,这几乎已经成为惯例,例如表category中的cateID字段。所谓标识列,就是可以惟一标识一行记录的列,在表中不会存在两条标识列相同的记录。如果其他表需要引用表category中的数据,则在表中添加一个cateID字段就可以了。有的程序设计人员习惯于直接使用名称字段作为标识列,例如表category中的catename字段。这样,如果修改catename字段的值,就需要同时修改其
11、他所有表的相应字段的值,从而造成不必要的麻烦。在系统中,cateID字段对于用户来说是透明的,用户感觉不到它的存在,也无法对其进行修改。其中新闻类别编号的int是自增长的的。在SQL server 2005中创建的category表如图4-1所示图4-1新闻类别表category4.1.2基本新闻表news基本新闻表news用来保存网上新闻的基本信息,结构如表4.2所示。表4.2基本新闻表news的结构编号字段名称数据结构说明1IDint新闻编号2titlevarchar(50)新闻标题3contenttext新闻内容4postTimedatetime提交时间5postervarchar(50
12、)提交人6cateIdint新闻类别编号(其中ID是表news的主键,主键ID自增长的)在SQLServer2005中,可以使用char、varchar和text等3种数据类型存储非Unicode字符数据。char和varchar只能存储最多8000个字符,其中char用于存储固定长度的字符数据,varchar用于存储可变长度的字符数据。如果需要存储的数据很大,则可以使用text数据类型,例如表News中的Content字符,因为新闻内容的数据量通常会超过8000个字符。text数据类型也是可变长度的,最多可为2147483647个字符。其中新闻编号ID是自增长的。在SQL server 20
13、05中创建的news表如图4-2所示图4-2基本新闻表news4.1.3用户信息表xtuser用户信息表xtuser用来保存用户的基本信息,这个表主要涉及新闻系统用户的各项基本的信息,每个用户的基本信息包括用户ID、用户名、密码、真实姓名、电子邮件和是否是管理员6项,其结构如表4.3所示表4.3 用户信息表xtuser的结构编号字段名称数据结构说明1userIDint用户ID号2usernamevarchar(50)用户名3userpwdvarcahr(50)密码4Enamevarchar(50)用户姓名5Emailvarchar(50)电子邮箱6adminint是否为管理员((0为是管理员,
14、1为不是管理员),userId是表xtuser的主键,用户ID号userId是自增长的。)SQL server 2005中创建的xtuser表如图4-3所示图4-3用户信息表xtuser4.2各主要窗体页的图形界面介绍新闻系统的页面设计是基于各个窗体的图形界面的。新闻系统的各个主要界面包括用户的登录界面,新闻管理界面,新闻查询界面,新闻类别管理界面和用户管理界面5个大的部分。设计者根据需求分析中的新闻系统的要求,完成对新闻系统的页面设计。4.2.1登录界面登录界面包括用户名和密码,及一个身份的选择,在Visual Studio中的工具栏中分别选择Label、DropList、TextBox和B
15、uttton控件,选中每个控件,修改每个控件属性中的“text”,更改为要显示出的内容,根据需要调整其位置及大小,如修改密码的属性为password,使其显示为密码形式等。登录界面的设计如图4-4所示图4-4用户登录界面4.2.2新闻管理界面新闻管理界面是显示新闻内容的一个重要界面,在上面不但可以浏览到用户提交的新闻,还可以连接到其他的管理界面,并可以转到新闻添加的界面。所要用到的控件是Hyperlink、Label、TextBox和Buttton,并需要添加一个GridView的表,根据新闻数据库中的有关新闻的信息,完善GridView表的内容。因为是GridView表格,所以完成表格列的的
16、基本信息后要对表格进行数据绑定,在数据绑定时绑定的列的名称一定要与数据库中列的名称一致,GridView表中包含删除一项,所以要对删除的RowDeleting属性进行修改完善。添加后的新闻管理界面设计显示如图4-5所示图4-5新闻管理界面新闻管理界面还应包括新闻添加的界面,点击新闻添加按钮,就可以跳转到新闻添加页面。添加新闻界面是用户填写新闻基本信息的界面。设计者要根据需要把控间的每个属性进行完善,例如新闻的各项基本信息选项不可为空,如果为空,则新闻添加不成功,并要给出提示等等。添加新闻的设计如图4-6所示图4-6添加新闻界面4.2.3新闻查询界面新闻查询界面是用户按照新闻的提交时间来进行查询
17、的一个操作界面,新闻查询也要使用一个GridView表,其显示格式要与新闻管理中的新闻表一样,普通用户和管理员用户都可以通过单击“开始查询”来查找新闻,并可以点击“重新查询”来进行重新查询。所以新闻查询界面的设计如图4-7所示图4-7新闻查询界面4.2.4新闻类别管理界面新闻类别管理是新闻进行分类和添加新闻时进行新闻选择的一个重要管理,管理员用户可以添加和删除新闻类别,添加和删除新闻类别在一个界面之上,用户并可以在此界面上连接到其他的管理界面,所要用到的控件是Hyperlink、Label、TextBox和Buttton,及一个GridView的新闻表格,表格的形式应与新闻管理中的新闻表格一致
18、(没有新闻删除一列)新闻类别管理的界面设计如图4-8所示图4-8新闻类别管理界面4.2.5用户管理界面用户管理包括管理员用户对所有用户的添加和删除,在用户管理界面上可以看到所有的用户的各项基本信息,通过点击“添加用户”按钮来进入用户添加界面,对用户的基本信息进行添加,通过返回用户管理界面进行添加后的用户信息查看。点击“删除”来删除用户。用户管理界面的设计如图4-9所示图4-9用户管理界面用户管理应包括一个添加用户基本信息的界面,同新闻的基本信息添加一样。用户的各项基本信息的空间属性也需要进行相关的完善。除了各项必须要填写的信息外,密码要设置成不可见的形式,另外确认密码的属性也要设置为源输入密码
19、一致。添加用户的操作设计如图4-10所示图4-10添加用户界面4.3系统部分重要功能及代码新闻系统设计用户登录,新闻管理,新闻添加,新闻删除,新闻查询,新闻类别管理,新闻类别添加,新闻类别删除,用户管理,添加用户,删除用户等,在新闻系统的每个前台创建好新闻系统的各个界面以后(ASPX界面),需要连接调用Web Services方法。Web Services所用到的WebMethod一共有2个,其中一个是userWeb Services.cs,包括登录时的CheckUser(),添加用户时的用到的AddUser(),登录用户管理界面时出现数据表DataTable UserManage(),以及删
20、除删除用户的DeleteUser()等等,另一个newsWeb Services.cs,包括添加新闻时用到的AddNews(),新闻类别管理时出现的数据表格用到的 Category(), 删除新闻时用到的DeleteNews(), 删除新闻类别时用到的DeleteCategory(),核对新闻数据表格时用到的 CheckNews()等等。新闻系统所要用到的全部Web Services的方法如图4-11(a)和图4-11(b)所示图4-11(a)NewWebServices方法图4-11(b)UserWebServices方法4.3.1用户登录用户登录界面包括用户名,密码和用户身份的选择,首先要
21、创建名为“Login.aspx”的文件。在设计好文件样式后,要编辑每个功能按钮的代码。对于“登录”按钮,在“Login.aspx.cs”中的代码为:protected void Button_Login_Click(object sender, EventArgs e) UserWebService userWS = new UserWebService(); string username = TextBox_Username.Text; string pwd = TextBox_Password.Text; int chr=userWS.CheckUser(username, pwd);
22、if (chr=0) Response.Redirect(/NewsManage.aspx); else if (chr=1) Response.Redirect(/NewsManage2.aspx); else Label_Result.ForeColor = Color.Red; Label_Result.Text = 用户名与密码不一致,请重新输入!; 上述部分代码的功能是用户输入用户名和密码后,点击登录系统会根据用户输入用户名和密码,作出判断:如果是管理员,则进入到管理员的新闻管理界面;如果是普通用户,则进入到普通用户的新闻管理界面;如果输入的用户名和密码不符,则不能成功登陆,系统会自
23、动提示“用户名与密码不一致,请重新输入!”上述代码是在“Login.aspx.cs”文件中编写的,而在上述代码里面调用了Web Services的方法,在UserWeb Services.cs的文件下的WebMethod CheckUser()的代码如下:WebMethod public int CheckUser(string username, string pwd) /连接用户数据库 判断 DB db = new DB(); db.Connect(); string sql = SELECT * FROM xtuser WHERE username= + username + and u
24、serpwd= + pwd + ; SqlDataReader reader = db.QueryReader(sql); if (reader.Read() return (int)readeradmin; else return -1; 在Login.aspx.cs的页面进行调试,调用WebMethod中的用于判定与联系数据库的方法,就可以登录在本系统中还需要一个通用的类DB.cs用于数据库的连接,可以避免重复的编写,通用类DB的关键代码如下:public void Connect() if (conn = null) conn = new SqlConnection(DB.connStr
25、ing); if (conn.State != ConnectionState.Open) conn.Open(); public void Close() if (conn != null & conn.State != ConnectionState.Closed) conn.Close(); / / 获取SqlDataReader / public SqlDataReader QueryReader(string sql) SqlCommand cmd = new SqlCommand(sql, conn); return cmd.ExecuteReader(CommandBehavio
26、r.CloseConnection);/ / 执行非查询语句 / public int QueryInt(string sql) SqlCommand cmd = new SqlCommand(sql, conn); return cmd.ExecuteNonQuery(); 用户在填写好用户名和密码之后,就可以顺利登陆系统,如果用户名或密码错误,则系统会给出提示,提示用户更正错误,是否是管理员身份的选择用户可以进行选择,也可以不用选择,系统会根据数据库中用户身份自动判断用户是否是管理员。新闻系统的登录界面如图4-12所示(图4-12就是登陆失败的情况)图4-12用户登录4.3.2新闻管理用户
27、成功登陆后,就进入了新闻管理界面,新闻管理界面包括与其他新闻系统页面的相互跳转级新闻的添加和删除,进入新闻管理界面首先可以浏览到一个新闻基本信息的表,所以在“NewsManage.aspx.cs”文件中首先应有如下代码;protected void Page_Load(object sender, EventArgs e) /一个新闻的表格 NewsWebService newsWS = new NewsWebService(); DataTable dt = newsWS.News(); GridView_News.DataSource = dt; GridView_News.DataBin
28、d();显示的新闻表格GridView_News调用了Web Services方法,在NewsWeb Services.cs中的News方法代码如下:WebMethod public DataTable News() DB db = new DB(); db.Connect(); string sql = SELECT * FROM news; SqlDataReader reader = db.QueryReader(sql); DataTable dt = new DataTable(); dt.Load(reader); db.Close(); return dt;用户成功登陆后,就进入
29、了新闻管理界面,新闻管理界面包括与其他新闻系统页面的相互跳转级新闻的添加和删除,点击相关的连接,用户就可以跳转到相关的页面,进入新闻管理界面首先可以浏览到一个新闻基本信息的表,用户点击添加新闻按钮,就可以对新闻进行添加,新闻管理界面如图4-13所示(图4-13登陆的身份是管理员用户)图4-13新闻管理另外点击“添加新闻”按钮进入到添加新闻的界面,跳转到添加新闻页面(Addnews.aspx)的代码如下:protected void Button1_Click(object sender, EventArgs e) Response.Redirect(/Addnews.aspx);普通用户和管理
30、员都可以对新闻进行添加,填写新闻的有关基本信息,然后提交。提交成功后,可以在新闻管理界面浏览到刚刚添加的新闻。新闻添加界面包括新闻的基本信息新闻类别、新闻题目、新闻发布人、发布时间、新闻内容,在进入新闻添加的界面时,要首先获取一个新闻类别的下拉框,新闻类别的内容是根据数据库中的新闻类别(category)自动获取的,获取新闻类别的代码如下:protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) /通过WebService获取分类信息 NewsWebService newsWS = new NewsWebServ
31、ice(); ArrayList lst = newsWS.GetCategory(); for (int i = 0; i lst.Count; i+) object news = (object)lsti; DropDownList_Category.Items.Add(new ListItem(news1.ToString(), news0.ToString(); 由于在上述代码中调用了Web Services方法,在NewsWeb Services.cs中获取分类的GetCategory方法的代码如下:WebMethod public ArrayList GetCategory() A
32、rrayList lst = new ArrayList(); DB db = new DB(); db.Connect(); string sql = SELECT * FROM category; SqlDataReader reader = db.QueryReader(sql); while (reader.Read() object news = new object2; news0 = (int)readercateID; news1 = readercatename.ToString(); lst.Add(news); reader.Close(); return lst;用户完
33、成新闻的基本信息填写后,点击“确定“按钮,就可以对新闻进行添加,如果基本信息填写不完全,则系统会自动提示用户把新闻基本信息填写完整,之后才可以成功提交新闻。添加新闻的关键代码如下:protected void Button1_Click(object sender, EventArgs e) NewsWebService newsWS = new NewsWebService(); bool result = newsWS.AddNews(TextBox_Title.Text, TextBox_Content.Text, TextBox_Poster.Text, int.Parse(DropD
34、ownList_Category.SelectedValue); if (result) Response.Write( window.alert(新闻添加成功!); else Response.Write( window.alert(新闻添加失败,请联系管理员!); 在添加新闻的上述代码中调用了Web Services方法,在NewsWeb Services.cs中的AddNews方法代码如下:WebMethod public bool AddNews(string title, string content, string poster, int cateID) DB db = new D
35、B(); db.Connect(); string sql = INSERT INTO news(title, content, posttime, poster, cateID) VALUES( + title + , + content + , + DateTime.Now.ToString() + , + poster + , + cateID + ); int affectedRows = db.QueryInt(sql); db.Close(); return affectedRows 0;用户如果想继续添加新闻,则点击“继续“按钮,就可以继续添加新闻,即用户返回添加新闻的页面就可以
36、继续添加新闻了,继续添加新闻的代码如下:protected void Button2_Click(object sender, EventArgs e) /继续添加新闻 Response.Redirect(/AddNews.aspx);如果用户想查看新闻添加后的情况,则点击“返回”按钮,就可以返回新闻管理界面,查看刚刚添加的新闻的基本情况,返回操作的关键代码是:protected void Button3_Click(object sender, EventArgs e) /返回到新闻管理 Response.Redirect(/NewsManage.aspx); 新闻添加界面包括新闻的基本信息
37、新闻类别、新闻题目、新闻发布人、发布时间、新闻内容,在进入新闻添加的界面时,用户填写好新闻的各项基本信息之后,点击确定按钮,就可以成功添加新闻,再点击返回按钮,返回新闻管理界面,查看新闻是否添加成功。添加新闻添加新闻的操作界面如图4-14所示图4-14添加新闻如果是用户管理员的身份登录,则在新闻管理界面的基本信息的表中应包含删除的功能,点击“删除”就可以把要删除的新闻删除,删除新闻的关键代码如下:protected void GridView_News_RowDeleting(object sender, GridViewDeleteEventArgs e) int uid = int.Par
38、se(GridView_News.Rowse.RowIndex.Cells0.Text); NewsWebService newsWS = new NewsWebService(); if (newsWS.DeleteNews(uid) Response.Write( window.alert(新闻删除成功!); DataTable dt = newsWS.News(); GridView_News.DataSource = dt; GridView_News.DataBind(); else Label_Result.ForeColor = Color.Red; Label_Result.T
39、ext = 删除失败!; 删除新闻在此要调用Web Services方法,在NewsWeb Services.cs中DeleteNews方法的关键代码如下:WebMethod public bool DeleteNews(int nid) /删除新闻 DB db = new DB(); db.Connect(); string sql = DELETE FROM news WHERE ID= + nid; return db.QueryInt(sql) 0;新闻删除是新闻系统中管理员用户对于新闻的一项操作,是管理员用户在新闻管理界面点击“删除”按钮来实现的。管理员用户只要点击数据表中的删除,就
40、可以把那一行对应的新闻删除,新闻管理中的新闻删除的界面如图4-15所示(如果不是管理员身份登录,则在新闻管理界面没有删除新闻的操作。)图4-15新闻删除4.3.3新闻查询用户可以在新闻管理界面通过新闻查询连接到新闻查询的界面。本系统的新闻查询是按照新闻的发布时间进行查询的,有两个日期,一个是查询的开始时间,一个是查询的截止时间(截止时间默认不选的话就是当前的时间)点击“开始查询”按钮,就会根据查询输入的需要列出对应的新闻。在新闻查询中“QueryNews.aspx”文件中开始查询的代码是:protected void Button1_Click(object sender, EventArgs
41、 e) NewsWebService newsWS = new NewsWebService(); string begt=begintime.Text.Trim(); string endt=endtime.Text.Trim(); if (endt = ) endt = DateTime.Now.ToString(); DataTable dt = newsWS.CheckNews(begt, endt); GridView1.DataSource = dt; GridView1.DataBind();新闻查询时的QueryNews.aspx之中要调用Web Services方法,即NewsWeb Services.cs中CheckNews()方法,这个方法的关键代码如下:WebMethod public DataTable CheckNews(string begintime, string endtime) /按时间查询新闻 DB db = new DB(); db.Connect(); string sql = SELECT * FROM news WHERE posttime BETWEEN + begintime