资源描述
1.引言
多年来,Internet 高速发展带动了整个世界新闻传输速度,我们每一刻全部能够从网络上知晓世界上发生事情。电脑普及,移动视频,智能手机等传媒终端快速发展。使传统信息传输媒体如电视、广播、报纸等逐步被大家抛弃,满足不了大家对外界瞬息万变信息好奇心,所以大家越来越习惯依靠网络新闻媒体。新闻传输方法发生了巨大改变,大家更多开始关注网络新闻媒体。这种媒体不仅含有新闻传输特点:立即、正确。还含有信息量大、方便管理、方便阅读等特点。有了新闻公布系统后,能够随意查询新闻,快速找到自己喜爱新闻,并能够发表自己评论,也方便了管理员使其能够愈加清楚管理新闻,很好地提升了管理者效率。
当今,网络已成为了大家日常生活信息起源关键路径,大家全部习惯于经过上网来获取信息,在这种发展形势下,网络新闻逐步深入我们生活,成为取得信息一个关键手段。因为 Internet 信息容量大,传输范围广,信息传输立即而且内容正确,大大满足了大家需要。把全部信息全部上传到网络,供大家相互浏览、评论,使网络信息量越来越大,所以我们迫切需要开发一个基于网络新闻信息浏览系统。
2.新闻公布系统需求分析
2.1性能需求
该系统在性能功效上应达成以下需求:
1)操作简单、界面友好: 完全控件式页面布局,使得新闻录入工作更简便,很多选项包含新闻分类、起源部门等只需关键点击鼠标就能够完成;另外,跟踪出现提醒信息也让用户随时清楚自己操作情况。对常见网站新闻管理各个方面:新闻录入、浏览、删除、修改、搜索等方面全部大致实现,实现了网站对即时新闻管理要求;
2)即时可见:对新闻处理(包含录入、删除)将立即在主页对应栏目显示出来,达成“即时公布、即时见效”功效;
3)系统运行应该快速、稳定、高效和可靠;
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//XP或更高版本
浏览器:IE 5.0以上或Netscape相同版本以上
服务端
系统设计工具: Visual Studio 或Visual Studio
数据库:SQL server
3. 系统设计
3.1新闻系统设计模型结构
3.1.1系统功效模块
新闻功效模块分为四个大部分,新闻管理,新闻查询,新闻类别管理,用户管理。新闻管理包含新闻浏览,新闻添加和新闻删除;新闻查询是根据新闻公布时间进行查询;新闻类别管理包含新闻类别浏览,添加和删除;用户管理包含对用户基础信息浏览,添加和删除。系统功效模块图图3-1所表示
图3-1系统功效模块图
3.1.2用户管理功效模块关系
本新闻系统用户分为管理员用户和一般用户。一般用户在新闻管理上能够浏览新闻基础信息,添加新闻;在新闻查询上能够根据新闻公布时间对新闻进行查询。管理员用户除了拥有一般用户功效外,还能够在用户管理上对用户进行用户基础信息浏览,用户管理和新闻类别管理是管理员用户所特有操作,用户管理包含对全部用户添加、浏览和删除;新闻类别管理是在进行新闻类别界面对新闻界面浏览,添加和删除。用户功效模块图图3-2所表示
图3-2用户功效模块图
3.1.3系统工作步骤分析
用户进入系统后,根据其身份不一样,可进入不一样操作界面。不过其工作步骤是大致相同。假如是管理员用户,则进入管理员身份新闻系统,管理员能够进行新闻管理、新闻查询、用户管理和新闻类别管理,管理员新闻管理不仅有新闻添加和浏览,还能够对新闻进行删除操作;新闻查询是根据时间对新闻进行正确地查询,并在查询界面返回查询结果;用户能够在每个页面新闻之间相互跳转,只关键点击对应页面连接就能够实现。其工作步骤图图3-3所表示
图3-3系统工作步骤图
3.2新闻系统功效模块介绍
新闻功效是新闻系统关键模块,深入了解和熟悉新闻系统功效模块,才能够很好完成新闻系统,掌握新闻系统工作步骤,明确每一个新闻系统界面功效。下面是对新闻管理系统功效模块部分说明。
3.2.1.新闻类别管理
管理员公布Web Services,使得用户能够经过Web Services向数据转换服务器发送实施作业请求。用户调用公布Web Services,输入相关参数,服务器调用合适作业服务器和作业来处理请求,最终将需要结果返回。
(1)新闻类别录入,包含类别编号和类别名称等信息;
(2)新闻类别增加;
(3)新闻类别删除;
3.2.2.新闻管理
经过对后台数据库相关内容修改能够实现对新新闻内容进行添加和讲过去新闻删除,为此系统关键部分。
(1)基础新闻信息录入,包含新闻标题、新闻内容和所属类别等;
(2)基础新闻信息增加;
(3)基础新闻信息删除;
3.2.3.新闻查询模块
(1)根据新闻类别分页显示新闻;
(2)根据日期分页显示新闻。
3.2.4.编辑用户信息
(1)系统用户信息录入,包含用户名和密码等信息;
(2)系统用户信息增加;
(3)系统用户信息删除。
4.具体设计
4.1数据库设计
本系统定义数据库中包含以下3个表:新闻类别表:category、新闻基础信息表:news、和用户信息表:xtuser。首先依据新闻系统设计计划表内容及相关属性,并使用数据库工具创建表。下面分别介绍这些表结构及相关内容,表建立好后,新闻系统用户能够依据具体新闻系统实现新闻系统功效。
4.1.1新闻类别表category
新闻类别表category用来保留新闻类别数据,结构如表4.1所表示。
表4.1新闻类别表category结构
编号
字段名称
数据结构
说明
1
cateID
int
新闻类别编号
2
catename
varchar (50)
新闻类别名称
(其中cateID是表category主键)
在设计数据库结构时,很多表全部需要设计一个整型字段作为标识列,这几乎已经成为通例,比如表category中cateID字段。所谓标识列,就是能够惟一标识一行统计列,在表中不会存在两条标识列相同统计。假如其它表需要引用表category中数据,则在表中添加一个cateID字段就能够了。有程序设计人员习惯于直接使用名称字段作为标识列,比如表category中catename字段。这么,假如修改catename字段值,就需要同时修改其它全部表对应字段值,从而造成无须要麻烦。在系统中,cateID字段对于用户来说是透明,用户感觉不到它存在,也无法对其进行修改。其中新闻类别编号int是自增加。在SQL server 中创建category表图4-1所表示
图4-1新闻类别表category
4.1.2基础新闻表news
基础新闻表news用来保留网上新闻基础信息,结构如表4.2所表示。
表4.2基础新闻表news结构
编号
字段名称
数据结构
说明
1
ID
int
新闻编号
2
title
varchar(50)
新闻标题
3
[content]
text
新闻内容
4
postTime
datetime
提交时间
5
poster
varchar(50)
提交人
6
cateId
int
新闻类别编号
(其中ID是表news主键,主键ID自增加)
在SQL Server 中,能够使用char、varchar和text等3种数据类型存放非Unicode字符数据。char和varchar只能存放最多8000个字符,其中char用于存放固定长度字符数据,varchar用于存放可变长度字符数据。假如需要存放数据很大,则能够使用text数据类型,比如表News中Content字符,因为新闻内容数据量通常会超出8000个字符。text数据类型也是可变长度,最多可为个字符。其中新闻编号ID是自增加。在SQL server 中创建news表图4-2所表示
图4-2基础新闻表news
4.1.3用户信息表xtuser
用户信息表xtuser用来保留用户基础信息,这个表关键包含新闻系统用户各项基础信息,每个用户基础信息包含用户ID、用户名、密码、真实姓名、电子邮件和是否是管理员6项,其结构如表4.3所表示
表4.3 用户信息表xtuser结构
编号
字段名称
数据结构
说明
1
userID
int
用户ID号
2
username
varchar(50)
用户名
3
userpwd
varcahr(50)
密码
4
Ename
varchar(50)
用户姓名
5
Email
varchar(50)
电子邮箱
6
admin
int
是否为管理员
((0为是管理员,1为不是管理员),userId是表xtuser主键,用户ID号userId是自增加。)SQL server 中创建xtuser表图4-3所表示
图4-3用户信息表xtuser
4.2各关键窗体页图形界面介绍
新闻系统页面设计是基于各个窗体图形界面。新闻系统各个关键界面包含用户登录界面,新闻管理界面,新闻查询界面,新闻类别管理界面和用户管理界面5个大部分。设计者依据需求分析中新闻系统要求,完成对新闻系统页面设计。
4.2.1登录界面
登录界面包含用户名和密码,及一个身份选择,在Visual Studio中工具栏中分别选择Label、DropList、TextBox和Buttton控件,选中每个控件,修改每个控件属性中“text”,更改为要显示出内容,依据需要调整其位置及大小,如修改密码属性为password,使其显示为密码形式等。登录界面设计图4-4所表示
图4-4用户登录界面
4.2.2新闻管理界面
新闻管理界面是显示新闻内容一个关键界面,在上面不仅能够浏览到用户提交新闻,还能够连接到其它管理界面,并能够转到新闻添加界面。所要用到控件是Hyperlink、Label、TextBox和Buttton,并需要添加一个GridView表,依据新闻数据库中相关新闻信息,完善GridView表内容。因为是GridView表格,所以完成表格列基础信息后要对表格进行数据绑定,在数据绑定时绑定列名称一定要和数据库中列名称一致,GridView表中包含删除一项,所以要对删除RowDeleting属性进行修改完善。添加后新闻管理界面设计显示图4-5所表示
图4-5新闻管理界面
新闻管理界面还应包含新闻添加界面,点击新闻添加按钮,就能够跳转到新闻添加页面。添加新闻界面是用户填写新闻基础信息界面。设计者要依据需要把控间每个属性进行完善,比如新闻各项基础信息选项不可为空,假如为空,则新闻添加不成功,并要给出提醒等等。添加新闻设计图4-6所表示
图4-6添加新闻界面
4.2.3新闻查询界面
新闻查询界面是用户根据新闻提交时间来进行查询一个操作界面,新闻查询也要使用一个GridView表,其显示格式要和新闻管理中新闻表一样,一般用户和管理员用户全部能够经过单击“开始查询”来查找新闻,并能够点击“重新查询”来进行重新查询。所以新闻查询界面设计图4-7所表示
图4-7新闻查询界面
4.2.4新闻类别管理界面
新闻类别管理是新闻进行分类和添加新闻时进行新闻选择一个关键管理,管理员用户能够添加和删除新闻类别,添加和删除新闻类别在一个界面之上,用户并能够在此界面上连接到其它管理界面,所要用到控件是Hyperlink、Label、TextBox和Buttton,及一个GridView新闻表格,表格形式应和新闻管理中新闻表格一致(没有新闻删除一列)新闻类别管理界面设计图4-8所表示
图4-8新闻类别管理界面
4.2.5用户管理界面
用户管理包含管理员用户对全部用户添加和删除,在用户管理界面上能够看到全部用户各项基础信息,经过点击“添加用户”按钮来进入用户添加界面,对用户基础信息进行添加,经过返回用户管理界面进行添加后用户信息查看。点击“删除”来删除用户。用户管理界面设计图4-9所表示
图4-9用户管理界面
用户管理应包含一个添加用户基础信息界面,同新闻基础信息添加一样。用户各项基础信息空间属性也需要进行相关完善。除了各项必需要填写信息外,密码要设置成不可见形式,另外确定密码属性也要设置为源输入密码一致。添加用户操作设计图4-10所表示
图4-10添加用户界面
4.3系统部分关键功效及代码
新闻系统设计用户登录,新闻管理,新闻添加,新闻删除,新闻查询,新闻类别管理,新闻类别添加,新闻类别删除,用户管理,添加用户,删除用户等,在新闻系统每个前台创建好新闻系统各个界面以后(ASPX界面),需要连接调用Web Services方法。Web Services所用到WebMethod一共有2个,其中一个是userWeb Services.cs,包含登录时CheckUser(),添加用户时用到AddUser(),登录用户管理界面时出现数据表DataTable UserManage(),和删除删除用户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用户登录
用户登录界面包含用户名,密码和用户身份选择,首先要创建名为“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);
if (chr==0)
{
Response.Redirect("~/NewsManage.aspx");
}
else if (chr==1)
{
Response.Redirect("~/NewsManage2.aspx");
}
else
{
Label_Result.ForeColor = Color.Red;
Label_Result.Text = "用户名和密码不一致,请重新输入!";
}
上述部分代码功效是用户输入用户名和密码后,点击登录系统会依据用户输入用户名和密码,作出判定:假如是管理员,则进入到管理员新闻管理界面;假如是一般用户,则进入到一般用户新闻管理界面;假如输入用户名和密码不符,则不能成功登陆,系统会自动提醒“用户名和密码不一致,请重新输入!”
上述代码是在“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 userpwd='" + pwd + "'";
SqlDataReader reader = db.QueryReader(sql);
if (reader.Read())
{
return (int)reader["admin"];
}
else
{
return -1;
}
}
在Login.aspx.cs页面进行调试,调用WebMethod中用于判定和联络数据库方法,就能够登录在本系统中还需要一个通用类DB.cs用于数据库连接,能够避免反复编写,通用类DB关键代码以下:
public void Connect()
{
if (conn == null)
{
conn = new SqlConnection(DB.connString);
}
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
}
public void Close()
{
if (conn != null && conn.State != ConnectionState.Closed)
{
conn.Close();
}
}
/// <summary>
/// 获取SqlDataReader
/// </summary>
public SqlDataReader QueryReader(string sql)
{
SqlCommand cmd = new SqlCommand(sql, conn);
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
/// <summary>
/// 实施非查询语句
/// </summary>
public int QueryInt(string sql)
{
SqlCommand cmd = new SqlCommand(sql, conn);
return cmd.ExecuteNonQuery();
}
用户在填写好用户名和密码以后,就能够顺利登陆系统,假如用户名或密码错误,则系统会给出提醒,提醒用户更正错误,是否是管理员身份选择用户能够进行选择,也能够不用选择,系统会依据数据库中用户身份自动判定用户是否是管理员。新闻系统登录界面图4-12所表示(图4-12就是登陆失败情况)
图4-12用户登录
4.3.2新闻管理
用户成功登陆后,就进入了新闻管理界面,新闻管理界面包含和其它新闻系统页面相互跳转级新闻添加和删除,进入新闻管理界面首先能够浏览到一个新闻基础信息表,所以在“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.DataBind();
}
显示新闻表格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;
}
用户成功登陆后,就进入了新闻管理界面,新闻管理界面包含和其它新闻系统页面相互跳转级新闻添加和删除,点击相关连接,用户就能够跳转到相关页面,进入新闻管理界面首先能够浏览到一个新闻基础信息表,用户点击添加新闻按钮,就能够对新闻进行添加,新闻管理界面图4-13所表示(图4-13登陆身份是管理员用户)
图4-13新闻管理
另外点击“添加新闻”按钮进入到添加新闻界面,跳转到添加新闻页面(Addnews.aspx)代码以下:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("~/Addnews.aspx");
}
一般用户和管理员全部能够对新闻进行添加,填写新闻相关基础信息,然后提交。提交成功后,能够在新闻管理界面浏览到刚刚添加新闻。新闻添加界面包含新闻基础信息新闻类别、新闻题目、新闻公布人、公布时间、新闻内容,在进入新闻添加界面时,要首先获取一个新闻类别下拉框,新闻类别内容是依据数据库中新闻类别(category)自动获取,获取新闻类别代码以下:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//经过WebService获取分类信息
NewsWebService newsWS = new NewsWebService();
ArrayList lst = newsWS.GetCategory();
for (int i = 0; i < lst.Count; i++)
{
object[] news = (object[])lst[i];
DropDownList_Category.Items.Add(new ListItem(news[1].ToString(), news[0].ToString()));
}
}
}
因为在上述代码中调用了Web Services方法,在NewsWeb Services.cs中获取分类GetCategory方法代码以下:
[WebMethod]
public ArrayList GetCategory()
{
ArrayList 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 object[2];
news[0] = (int)reader["cateID"];
news[1] = reader["catename"].ToString();
lst.Add(news);
}
reader.Close();
return lst;
}
用户完成新闻基础信息填写后,点击“确定“按钮,就能够对新闻进行添加,假如基础信息填写不完全,则系统会自动提醒用户把新闻基础信息填写完整,以后才能够成功提交新闻。添加新闻关键代码以下:
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(DropDownList_Category.SelectedValue));
if (result)
{
Response.Write("<Script Language='JavaScript'> window.alert('新闻添加成功!')</Script>");
}
else
{
Response.Write("<Script Language='JavaScript'> window.alert('新闻添加失败,请联络管理员!')</Script>");
}
}
在添加新闻上述代码中调用了Web Services方法,在NewsWeb Services.cs中AddNews方法代码以下:
[WebMethod]
public bool AddNews(string title, string content, string poster, int cateID)
{
DB db = new DB();
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;
}
用户假如想继续添加新闻,则点击“继续“按钮,就能够继续添加新闻,即用户返回添加新闻页面就能够继续添加新闻了,继续添加新闻代码以下:
protected void Button2_Click(object sender, EventArgs e)
{//继续添加新闻
Response.Redirect("~/AddNews.aspx");
}
假如用户想查看新闻添加后情况,则点击“返回”按钮,就能够返回新闻管理界面,查看刚刚添加新闻基础情况,返回操作关键代码是:
protected void Button3_Click(object sender, EventArgs e)
{
//返回到新闻管理
Response.Redirect("~/NewsManage.aspx");
}
新闻添加界面包含新闻基础信息新闻类别、新闻题目、新闻公布人、公布时间、新闻内容,在进入新闻添加界面时,用户填写好新闻各项基础信息以后,点击确定按钮,就能够成功添加新闻,再点击返回按钮,返回新闻管理界面,查看新闻是否添加成功。添加新闻添加新闻操作界面图4-14所表示
图4-14添加新闻
假如是用户管理员身份登录,则在新闻管理界面基础信息表中应包含删除功效,点击“删除”就能够把要删除新闻删除,删除新闻关键代码以下:
protected void GridView_News_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int uid = int.Parse(GridView_News.Rows[e.RowIndex].Cells[0].Text);
NewsWebService newsWS = new NewsWebService();
if (newsWS.DeleteNews(uid))
{
Response.Write("<Script Language='JavaScript'> window.alert('新闻删除成功!')</Script>");
DataTable dt = newsWS.News();
GridView_News.DataSource = dt;
GridView_News.DataBind();
}
else
{
Label_Result.ForeColor = Color.Red;
Label_Result.Text = "删除失败!";
}
}
删除新闻在此要调用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;
}
新闻删除是新闻系统中管理员用户对于新闻一项操作,是管理员用户在新闻管理界面点击“删除”按钮来实现。管理员用户只关键点击数据表中删除,就能够把那一行对应新闻删除,新闻管理中新闻删除界面图4-15所表示(假如不是管理员身份登录,则在新闻管理界面没有删除新闻操作。)
图4-15新闻删除
4.3.3新闻查询
用户能够在新闻管理界面经过新闻查询连接到新闻查询界面。本系统新闻查询是根据新闻公布时间进行查询,有两个日期,一个是查询开始时间,一个是查询截止时间(截止时间默认不选话就是目前时间)点击“开始查询”按钮,就会依据查询输入需要列出对应新闻。在新闻查询中“QueryNews.aspx”文件中开始查询代码是:
protected void Button1_Click(object sender, EventArgs 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.ToString().Replace("'", "''") + "' AND '" + endtime.ToString().Replace("'", "''") + "'";
SqlDataReader reader = db.QueryReader(sql);
DataTable dt = new DataTable();
dt.Load(reader);
db.Close();
return dt;
}
点击“重新查询”按钮则会重新对新闻进行查询,重新查询代码是:
protected void Button2_Click(object sender, EventArgs e)
{
// 重新查询
展开阅读全文