资源描述
存档资料 成绩:
华东交通大学理工学院
课 程 设 计 报 告 书
所属课程名称 ASP.NET程序设计项目教程
题 目 基于ASP.NET的新闻发布系统
分 院 电 信 分 院
专业班级 电子商务2011-2
学 号 20110210460228
学生姓名 龚 云 凯
指导教师 程 志 平
2014年1月1日
目 录
第1章 前言 1
第2章 系统分析 2
1.1系统需求分析 2
1.2开发环境 2
第3章 系统设计 4
3.1 系统架构 4
3.3数据库的设计 5
第3章 网站的主要功能设计 7
1. 登陆界面的设计 7
2.会员注册界面 8
3. 管理员登陆 10
3.1新闻的添加 11
3.2新闻的添加与删除 12
3.3新闻的搜索 13
3.4新闻的修改 14
3.5新闻的删除 14
3.6批量删除 15
3.7用户的删除与查看 17
3.8留言的删除与查看 18
4. 普通用户的登陆: 18
4.1新闻的浏览 18
4.2浏览新闻 19
4.3收藏夹功能 20
4.4留言功能 21
4.5显示所有留言 21
4.6个人资料的修改 22
第4章 系统调试 26
4.1程序调试概述 26
4.2调试本系统分析 26
第5章 设计心得 28
参考文献(资料) 29
第1章 前言
在我国,由于网民数目的大量增多,新闻媒介逐渐由纸质变为网络化信息化,新闻发布系统在我国虽然起步晚,但是研发和进步速度巨大,所用技术多种多样,逐渐同世界先进设计接轨,常用的技术如Asp,Jsp,PHP等等,网络编程发展已逐渐成为一种产业。相较于国内,国外的网络更为发达和普及,互联网全球的发展形势是这样的:由于带宽的增长,尤其是在国外发达国家已经实现了光纤到户,日本、韩国这些国家。像美国因为它的有线网和卫星网的之间竞争,加上电信网络运营商,也在大量发展固网的光纤业务,所以互联网的业务多样化,而且非常高带宽化,五年以前大家接触的互联网,还是打开网上看新闻,现在做的比较多的,一个是搜索,一个是互联网社区,比如开心网、校园网,再一个就是下载音乐、视频、在线观看,互联网一个重要的趋势,就是高带宽的应用已经成为人们主流的应用。网络的发展必定带来信息量的增加,尤其是新闻发布系统更是层出不穷,应用范围巨大。
常见的新闻发布管理系统种类有两种:一种是静态HTML页面,更新信息时需要重新制作页面然后上传页面并修改相应链接,这种方式因为效率太低已不多用;另一种是基于ASP和脚本语言,将动态网页和数据库结合,通过应用程序来处理新闻,这是目前较为流行的做法。
本文研究的思路及主要成果 该系统是基于B/S(Browser/Server,浏览器/客户端)模式实现,基于.NET平台架构开发设计,主要实现对校园新闻的发布与管理功能,对新闻内容信息的浏览阅读等。
随着Internet/Intranet技术的兴起,将原本在单机或本地局域网上运行的数据库系统移植到因特网中,即开发基于B/S模式的新一代MIS(Management Information System,管理信息系统)系统,正成为技术发展的趋势。为了保证系统性能的高效性、可扩展性,以及达到数据共享和网络化管理的目的,本系统采用B/S体系结构进行设计开发。
第2章 系统分析
1.1系统需求分析
随着信息化产业逐渐进入各行各业,并成为经济的基础,对实行信息化必须有一个明确的方向,这也是客不容缓的事。新闻信息作为当前信息化的重要组成部分,而新闻管理作为新闻信息中的一个重要环节,必须同信息化同步,以促使整个经济和新闻事业的发展。
本系统功能模块包括:新闻管理,用户管理,系统管理模块、留言、留言的删除与管理。数据的操作主要是:数据添加、数据修改、数据查询。
“管理员用户”实现的功能如下:
一、“新闻管理”是对新闻添加、新闻审核、新闻转移、新闻管理,通过数据库绑定控件实现对信息直接的增、删、查、改。
二、“留言的查看/删除”实现的功能是对留言的查看和删除。
三、“用户管理”是对后台的用户进行管理,用户账号信息的更和添加管理员。
“普通用户”所具备的的功能:
一、 新闻的浏览与留言。
二、 对新闻添加收藏。
三、 修改个人的资料。
1.2开发环境
数据库是数据管理的一种技术,是计算机科学的一个分支。数据库管理系统已发展成为现代通用系统软件。由于数据库具有数据的结构化、可控冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。
由于用到的数据表格多,另外考虑到实际情况,我们选用SQL Server作为数据库开发,而没有选择Access,主要是因为Access存放的记录,在实际运用中不适合此系统;而SQL Server是一种常用的关系数据库,能存放和读取大量的数据,管理众多并发的用户,故选用SQL Server数据库。用C#语言进行编码。C#编程语言是微软在.NET计划中重要的开发语言,它具有语法简单,功能强大,快速应用,语言自由,强大的Web服务器控件,支持跨平台,与XML相融合等。因此选择C#编程语言。ASP.NET
是Active Server Page.NET Framework的缩写,意为“基于动态WEB应用程序的技术服务器网页”。ASP. NET是微软公司开发的代替ASP的一种应用,它可以与数据库和其它程序进行交互,是一种功能强大的编程工具。ASP. NET的网页文件的格式是.aspx,现在常用于各种动态网站中。ASP. NET是一服务器端脚本编写环境,可以用来创建和运行动态网页或Web应用程序。ASP. NET网页可以包含HTML标记、普通文本、脚本命令、.css、以及COM组件等。利用ASP.NET可以向网页中添加交互式内容(如在线表单),也可以创建使用HTML网页作为用户界面的Web应用程序。与HTML相比,ASP.NET网页具有以下特点:
(1)利用ASP.NET可以实现突破静态网页的一些功能限制,实现动态网页技术;
(2)ASP文件是包含在HTML代码所组成的文件中的,易于修改和测试;
(3)服务器上的ASP.NET解释程序会在服务器端制定ASP程序,并将结果以HTML格式传送到客户端浏览器上,因此使用各种浏览器都可以正常浏览ASP所产生的网页;
(4)ASP.NET提供了一些内置对象,使用这些对象可以使服务器端脚本功能更强。
(5)ASP可以使用服务器端ActiveX组建来执行各种各样的任务。
第3章 系统设计
3.1 系统架构
进入该发布系统根据级别的不同分为管理员和普通的用户,所拥有的功能如下图所示:
新闻的浏览
普通用户登陆
新闻的留言
留言的查看
个人资料的修改
新闻发布系统
用户的删除与管理
新闻的增删查改
留言的查看,删除
管理员登陆
新闻发布管理模块业务流程图:
3.3数据库的设计
根据所需要实现的功能,共设计6张数据表设计数据库的名称为news,共设6张表,名为admin(管理员的信息)、users(普通用户的信息)、collection(存放用户收藏的信息)、leave_word(存放用户留言的信息)、news(新闻的内容)、photos(图片信息)。
数据表的创建(以news表为例),设置newsid为主键,同时作为表user、collection、leave_word、photo四张表的辅键,设置的属性如下图所示:
创建news表的代码如下:
CREATE TABLE [dbo].[news](
[newsid] [int] IDENTITY(1,1) NOT NULL,
[subjects] [varchar](50) NULL,
[contents] [varchar](1000) NULL,
[sysdate] [datetime] NULL,
[type] [int] NULL,
[author] [varchar](10) NULL,
[seenum] [int] NULL,
CONSTRAINT [PK__news__76CBA758] PRIMARY KEY CLUSTERED
(
[newsid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [dbo].[news] ADD CONSTRAINT [DF__news__seenum__77BFCB91] DEFAULT (0) FOR [seenum]
GO
创建好所有的表格之后,各个变量形成以下的函数依赖关系:
第3章 网站的主要功能设计
1. 登陆界面的设计
登陆界面需要实现以下功能:
1. 输入用户名和密码,输入后能通过数据的调用,提示相关的错误。当输入正确的用户名和密码后进入相关页面。
2. 可以新用户的注册。
3. 可以选择用户的级别(管理员和普通用户)。
设计完毕后,效果如如下所示:
确定按钮的代码如下:
protected void btnConfirm_Click(object sender, System.EventArgs e)
{
if(this.rBtnUser.Checked)
{
string sql="select * from users where username='"+this.txtUserName.Text+"' and userpwd='"+this.txtPwd.Text+"'";
if(DB.ExecuteSqlEx(sql)==1)
{
Response.Write("<script>javascript:alert('验证失败!请注册后再登录');</script>");
}
else
{
Session["username"]=this.txtUserName.Text;
Response.Redirect("default.aspx");
}
}
else
{
string mysql="select * from admin where adminname='"+this.txtUserName.Text+"' and adminpwd='"+this.txtPwd.Text+"'";
if(DB.ExecuteSqlEx(mysql)==1)
{
Response.Write("<script>javascript:alert('请使用正确的账户登录!!!');</script>");
}
else
{
Session["adminname"]=this.txtUserName.Text;
Response.Redirect("manage.aspx");
}
}
}
用户注册按钮的代码:
protected void lBtnRegister_Click(object sender, System.EventArgs e)
{
Response.Redirect("register.aspx");
}
2.会员注册界面
点击会员注册按钮后,跳转入register.aspx页面,该页面的效果图如下所示:
点击确定按钮触发btnConfirm_Click事件,执行以下代码时,首先调用CheckUserName函数,该函数的功能是检测注册的用户名是否已存在,当用户填完正确的信息后会提示“恭喜!您已注册成功,请登录”,否则则提示“您使用的用户名已存在!”代码如下所示:
protected void btnConfirm_Click(object sender, System.EventArgs e)
{
if(this.CheckUserName(this.txtUserName.Text))
{
string sex="";
if(this.rBtnM.Checked)
{
sex="男";
}
else
{
sex="女";
}
int age=0;
age=Convert.ToInt32(this.txtAge.Text);
string sql="insert into users(username,userpwd,sex,age,email) values('"+this.txtUserName.Text+"','"+this.txtPwd.Text+"','"+sex+"',"+age+",'"+this.txtEmail.Text+"')";
if(DB.ExecuteSql(sql)==0)
{
Response.Write("<script>javascript:alert('恭喜!您已注册成功,请登录');</script>");
}
Response.Redirect("login.aspx");
}
else
{
Response.Write("<script>javascript:alert('您使用的用户名已存在!');</script>");
}
}
protected void btnCancel_Click(object sender, System.EventArgs e)
{
Response.Redirect("register.aspx");
}
private bool CheckUserName(string username)
{
string sql="select * from users where username='"+username+"'";
if(DB.ExecuteSqlEx(sql)==1)
{
return false;
}
else
{
return true;
}
}
3. 管理员登陆
管理员可实现的功能有新闻的添加、删除、修改,用户的查看、删除,留言的查看与删除。以管理员的身份登陆后,进入以下页面:
进入该页面后拥有管理新闻,管理用户,管理留言三大模块。
3.1新闻的添加
点击进入新闻的添加页面,并输入相关的新闻信息,出现如下图所示的效果图:
鼠标单击按钮的触发事件:
protected void btnConfirm_Click(object sender, System.EventArgs e)
{
string datetime=DateTime.Now.ToString();
string sql="insert into news(subjects,author,contents,type,sysdate) values('"+this.txtsubject.Text+"','"+this.txtauthor.Text+"','"+this.txtcontent.Text+"','"+dl1.SelectedItem.Value+"','"+datetime+"')";
DB.ExecuteSql(sql);
Response.Write("<script>javascript:alert('添加成功!!!');</script>");
sql="select * from news where sysdate='"+datetime+"'";
conn.Open();
SqlCommand cmd=new SqlCommand(sql,conn);
Session["newsid"]=cmd.ExecuteScalar().ToString();
}
当新闻添加成功后会弹出一个对话框,如下图所示:
3.2新闻的添加与删除
当点击修改/删除新闻按钮时,会进入以下的页面,该页面功能有新闻的搜索,修改及删除。当页面载入时会执行Page_load事件,并执行一下代码,得到下图所示的页面:
protected void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!this.IsPostBack)
{
this.btndelselect.Attributes.Add("onclick","return confirm('确认删除吗?')");
this.BindToDataGrid();
}
}
3.3新闻的搜索
新闻的搜索可以分为按作者查找、按主题查找、按内容查找,以按主题查找为例,在新闻搜索框中输入123,并按照标题查找,得到如下图所示的结果:
代码如下:
protected void btnfind_Click(object sender, System.EventArgs e)
{
find=this.ddlfind.SelectedItem.Value;
findcontent=this.txtfind.Text;
this.dg.CurrentPageIndex=0;
this.BindToDataGrid();
}
3.4新闻的修改
当点击编辑后,会跳转到一个名为 modifynew.asp 的页面,在此页面可以对新闻进行编辑,再次进行类似于新闻添加的代码操作。
3.5新闻的删除
新闻的删除分为批量删除和单个新闻的删除。
单个新闻的删除即直接点击删除字样,选中名为123标题的新闻,此时如图所示,点击删除操作后,页面如下图所示:
代码如下所示:
private void dg_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string newsid=this.dg.DataKeys[e.Item.ItemIndex].ToString();
string sql="select * from photo where newsid='"+newsid+"'";
conn.Open();
SqlCommand cmd=new SqlCommand("select * from photo where newsid='"+newsid+"'",conn);
SqlDataReader sdr=cmd.ExecuteReader();
while(sdr.Read())
{
string fileName=sdr["filename"].ToString();
File.Delete(Server.MapPath("upload")+"\\"+fileName);
}
sdr.Close();
conn.Close();
string sql1="delete from photo where newsid='"+newsid+"'";
DB.ExecuteSql(sql1);
string sql2="delete from leave_word where newsid='"+newsid+"'";
DB.ExecuteSql(sql2);
string sql3="delete from collection where newsid='"+newsid+"'";
DB.ExecuteSql(sql3);
string sql4="delete from news where newsid='"+newsid+"'";
DB.ExecuteSql(sql4);
this.BindToDataGrid();
}
3.6批量删除
当许多的新闻都需要进行删除时,一个一个的进行删除就会显得十分的繁琐,为了是更加的任性话,加入了批量删除的功能。在这我们如需删除标题名为《国际新闻》和《国家主席习近平发表》的新闻内容,我们可以 选中删除后面的多选框,然后点击页面下方的“选中删除内容”按钮,会弹出确认删除的对话框,点击确定即可对选中的新闻进行删除操作。效果图如下所示:
点击“删除选中新闻”按钮所触发的按钮代码如下:
protected void btndelselect_Click(object sender, System.EventArgs e)
{
foreach(DataGridItem dl in this.dg.Items)
{
CheckBox chk=(CheckBox)dl.FindControl("chkSelect");
if(chk.Checked)
{
string newsid=this.dg.DataKeys[dl.ItemIndex].ToString();
conn.Open();
SqlCommand cmd=new SqlCommand("select * from photo where newsid='"+newsid+"'",conn);
SqlDataReader sdr=cmd.ExecuteReader();
while(sdr.Read())
{.
string fileName=sdr["filename"].ToString();
File.Delete(Server.MapPath("upload")+"\\"+fileName);
}
sdr.Close();
conn.Close();
string sql1="delete from photo where newsid='"+newsid+"'";
DB.ExecuteSql(sql1);
string sql2="delete from leave_word where newsid='"+newsid+"'";
DB.ExecuteSql(sql2);
string sql3="delete from collection where newsid='"+newsid+"'";
DB.ExecuteSql(sql3);
string sql4="delete from news where newsid='"+newsid+"'";
DB.ExecuteSql(sql4);
}
}
this.BindToDataGrid();
}
点击“删除选中新闻”按钮后弹出如下图对话框
代码如下:
private void dg_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
((LinkButton)e.Item.Cells[3].Controls[0]).Attributes.Add("onclick","return confirm('确认删除吗?')");
}
}
3.7用户的删除与查看
点击查看/删除用户,进入updateusers页面,在此页面可以进行用户的搜索、查看用户的信息,删除用户,批量删除操作,由于这些功能与新闻的添加删除,修改所使用的方法类似,代码便不再重复,下面是效果演示:
用户的查找:
用户的删除
3.8留言的删除与查看
当用户浏览新闻,对新闻内容作出评价是,作为管理员需要审核这些评论的内容,当评论的内容有不符合网络规范以及相关法律法规时需要对留言进行删除操作。
由于代码的内容与新闻的添加删除类似,在此便不做累述。
4. 普通用户的登陆:
普通用户所需要的功能是对新闻的浏览,评论,以及用户信息的修改。
4.1新闻的浏览
用户输入正确的账号密码登陆后,即可进入主页面。页面的效果图如下所示:
在此页面需要实现当用户未登录,直接访问此页面时,会识别用户的登陆状态,从而直接跳转到用户登陆页面,控制此功能的代码如下:
protected void Page_Load(object sender, System.EventArgs e)
{
if(Session["username"]==null&&Session["adminname"]==null)
{
Response.Redirect("login.aspx");
}
// 在此处放置用户代码以初始化页面
}
4.2浏览新闻
当用户点击新闻标题后,进入浏览界面,效果如如下所示:
加载选中的新闻是,所调用的代码如下:
public partial class shownew : System.Web.UI.Page
{
SqlConnection conn=DBController.CreateConn();
protected void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!this.IsPostBack)
{
int newsid=Convert.ToInt32(Request.QueryString["newsid"]);
see();
string sql="select * from news where newsid="+newsid;
SqlCommand mycmd=new SqlCommand(sql,conn);
conn.Open();
SqlDataReader getdata=mycmd.ExecuteReader();
while(getdata.Read())
{
this.txtsubject.Text=getdata["subjects"].ToString();
this.txtcontent.Text=getdata["contents"].ToString();
this.sysdate.Text=getdata["sysdate"].ToString();
this.seenum.Text=getdata["seenum"].ToString();
}
mycmd.Dispose();
getdata.Close();
conn.Close();
this.BindToDataGrid();
this.BindToTable();
}
}
4.3收藏夹功能
在此页面可以观看新闻,可以将喜欢的新闻加入收藏夹中,可以对新闻内容进评论,可以对其他留言观看。
添加入收藏夹功能的实现
点击触发btnAddToCollection_Click事件,并把用户名与新闻的编号读入数据库中,并弹出对话框提示添加成功,相关数据加入到collection数据表中。代码如下:
protected void btnAddToCollection_Click(object sender, System.EventArgs e)
{
string newsid=(Request.QueryString["newsid"]).ToString();
conn.Open();
string sql="insert into collection(username,newsid) values('"+Session["username"]+"',"+newsid+")";
SqlCommand cmd=new SqlCommand(sql,conn);
cmd.ExecuteNonQuery();
conn.Close();
Response.Write("<script>javascript:alert('已添加到您的收藏夹!!!');</script>");
}
此时收藏夹的页面如下图所示:
4.4留言功能
对新闻评论功能的实现:
当用户浏览完新闻,需要发表一下自己的见解,写好自己想说的内容之后,提交评论,此时触发btnConfirm_Click事件,调用以下代码:
protected void btnConfirm_Click(object sender, System.EventArgs e)
{
if(Page.IsValid)
{
int newsid=Convert.ToInt32(Request.QueryString["newsid"]);
string sql="insert into leave_word(username,newsid,title,content,posttime) values('"+Session["username"]+"',"+newsid+",'"+this.txttitle.Text+"','"+this.txtcont.Text+"','"+DateTime.Now.ToString()+"')";
conn.Open();
SqlCommand mycmd=new SqlCommand(sql,conn);
mycmd.ExecuteNonQuery();
mycmd.Dispose();
conn.Close();
this.BindToTable();
}
}
4.5显示所有留言
当用户需要观看其他会员的留言时,点击“显示所有留言”,触发BtnShowAllLeaveWord_Click事件,并且跳转入showlw.aspx 页面。点击后效果如如下所示:
protected void lBtnShowAllLeaveWord_Click(object sender, System.EventArgs e)
{
string newsid=(Request.QueryString["newsid"]).ToString();
Response.Redirect("showlw.aspx?newsid="+newsid);
}
4.6个人资料的修改
当用户需要对个人的信息进行修改时,点击导航条上方的修改资料,进入如下页面:
当填好信息后,点击确认即可修改个人信息,此时用户的信息被写回到数据库的user表中。
代码如下:
protected void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!this.IsPostBack)
{
conn.Open();
string sql="select * from users where username='"+Session["username"]+"'";
SqlCommand cmd=new SqlCommand(sql,conn);
SqlDataReader sdr=cmd.ExecuteReader();
if(sdr.Read())
{
this.txtUserName.Text=sdr["username"].ToString();
this.txtPwd.Text=sdr["userpwd"].ToString();
this.txtPwdConfirm.Text=sdr["userpwd"].ToString();
this.txtAge.Text=sdr["age"].ToString();
this.txtEmail.Text=sdr["email"].ToString();
if(sdr["sex"].ToString()=="男")
{
this.rBtnM.Checked=true;
}
else
{
this.rBtnF.Checked=true;
}
}
sdr.Close();
conn.Close();
}
}
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
展开阅读全文