ASP.NET 简易新闻系统「终于解决」

ASP.NET 简易新闻系统「终于解决」ASP.NET简易新闻系统

大家好,欢迎来到IT知识分享网。

一、新闻系统的设计

新闻系统由三个部分组成:

ASP.NET 简易新闻系统「终于解决」

 二、文件组织结构如图:

 ASP.NET 简易新闻系统「终于解决」

三、数据库的设计 

本系统需要两张表:管理员信息表 tb_Admin 和 新闻信息表 tb_News。

管理员信息表 tb_Admin 主要用于保存管理员的信息。表结构如下:

ASP.NET 简易新闻系统「终于解决」

 新闻信息表 tb_News 主要用于保存新闻的信息。表结构如下:

ASP.NET 简易新闻系统「终于解决」

 四、数据库公共类的创建

为了便于数据库的操作,便于代码的复用,可将常用的数据库操作方法写到数据库公共类中,以便于页面的调用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;

namespace 简易新闻系统
{
    public class dbClass
    {
        //定义连接对象
        private SqlConnection con;
        private string strCon = "server=.;database=news;uid=sa;pwd=123456;";

        //连接数据库
        public SqlConnection getCon()
        {
            con = new SqlConnection(strCon);
            con.Open();
            return con;
        }

        //关闭数据库
        public void con_Close()
        {
            if (con.State == ConnectionState.Open)
                con.Close();
        }

        //使用连接方式读取数据库
        public SqlDataReader getDr(string strSql)
        {
            getCon();
            SqlCommand cmd = new SqlCommand(strSql, con);
            SqlDataReader dr = cmd.ExecuteReader();
            return (dr);
        }

        // 连接式 对数据库进行增删改查操作
        public bool ExeNonQuery(string strSql)
        {
            getCon();
            SqlCommand cmd = new SqlCommand(strSql, con);
            if (cmd.ExecuteNonQuery() > 0)
            {
                con_Close();
                return true;
            }
            else
            {
                con_Close();
                return false;
            }
        }

        //查询单个值
        public object ExeScalar(string strSql)
        {
            getCon();
            SqlCommand cmd = new SqlCommand(strSql, con);
            object num = cmd.ExecuteScalar();
            con_Close();
            return (num);
        }

        //非连接式 对数据库进行增删改查操作
        public DataSet GetDataSet(string strSql, string tbName)
        {
            getCon();
            SqlDataAdapter da = new SqlDataAdapter(strSql, con);
            DataSet ds = new DataSet();
            da.Fill(ds, tbName);
            con_Close();
            return ds;
        }
    }
}

五、新闻系统的后台登录模块

页面设计:

ASP.NET 简易新闻系统「终于解决」

 具体代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace 简易新闻系统plus.manage
{
    public partial class Login : System.Web.UI.Page
    {
        dbClass db = new dbClass();
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        //登录按钮单击事件代码
        protected void btnOk_Click(object sender, EventArgs e)
        {
            string strSel = "select count(*) from tb_Admin where admin_Name='" + txtName.Text + "'and admin_Pwd='" + txtPwd.Text + "'";
            if (txtName.Text == "" || txtPwd.Text == "")
            {
                Response.Write("<script>alert('请输入用户名和密码');</script>");
            }
            else
            {
                if (Convert.ToInt32(db.ExeScalar(strSel)) > 0)
                {
                    Response.Write("<script>alert('您是合法用户');location.href='manage_List.aspx';</script>");

                }
                else
                {
                    Response.Write("<script>alert('用户名或密码输入错误');</script>");

                }
            }
        }
        //重置按钮单击事件代码
        protected void btnReset_Click(object sender, EventArgs e)
        {
            txtName.Text = "";
            txtPwd.Text = "";
        }
        //注册按钮单击事件代码
        protected void btnRegister_Click(object sender, EventArgs e)
        {
            Response.Redirect("manage_Register.aspx");
        }
    }
}

六、新闻系统的后台新闻管理模块

当管理员正确登录之后才可以看到管理内容。这部分主要是实现新闻的增删改查操作。

1.在管理员成功登录后,看到的第一个页面是新闻系统的管理页面 manage_List.aspx页面。

页面运行效果如图:

ASP.NET 简易新闻系统「终于解决」

页面设计:添加一个label标签、一个GridView控件、两个button按钮。

“新闻内容”中的【详细信息】需要通过GridView中的添加新列操作来实现

ASP.NET 简易新闻系统「终于解决」

设置HyperLinkField超链接列

ASP.NET 简易新闻系统「终于解决」

 “新闻发布时间”字段中的时间只需要精确到 年-月-日,所以通过【编辑列】进行字段值的修改。

 ASP.NET 简易新闻系统「终于解决」

具体代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;                //引入命名空间
using System.Data.SqlClient;

namespace 简易新闻系统plus.manage
{
    public partial class manage_List : System.Web.UI.Page
    {
        dbClass db = new dbClass();
        protected void Page_Load(object sender, EventArgs e)
        {
            //退出管理按钮代码 当前页面才管用
            //btnExit.Attributes.Add("onclick", "window.close()"); 
        }
        
        //页面切换事件代码,以帮助实现分页显示数据
        protected void gvNews_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvNews.PageIndex = e.NewPageIndex;
            gvNews.DataBind();
        }
        
        //添加新闻按钮事件代码
        protected void btnAddNews_Click(object sender, EventArgs e)
        {
            Response.Redirect("manage_Add.aspx");
        }

        protected void btnExit_Click(object sender, EventArgs e)
        {
            Response.Redirect("../index.aspx");
        }
        
        //删除事件代码
        protected void gvNews_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string strDel = "delete from tb_News where news_Id=" + gvNews.DataKeys[e.RowIndex].Value;
            if (db.ExeNonQuery(strDel))
            {
                Response.Write("<script>alert('删除成功');location.href='manage_List.aspx';</script>");
            }
            else
            {
                Response.Write("<script>alert('删除成功');</script>");
            }
            gvNews.DataBind();
        }

    }
}

2.新闻后台详细页面

详细页面根据传递的news_Id查询出相应的数据,并将其显示在页面中。

页面运行效果如图:

ASP.NET 简易新闻系统「终于解决」

 根据manage_List.aspx页面中传过来的news_Id的值,来查询新闻的具体内容。news_Id的值用Requset对象来获取。

页面代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;            //引入命名空间
using System.Data.SqlClient;

namespace 简易新闻系统plus.manage
{
    public partial class manage_Details : System.Web.UI.Page
    {
        dbClass db = new dbClass();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string strSel = "select * from tb_News where news_Id=" + Convert.ToInt32(Request["news_Id"]);
                DataSet ds = db.GetDataSet(strSel, "news");
                //获取新闻标题字段的值
                txtTitle.Text = ds.Tables["news"].Rows[0][1].ToString(); 
                //获取新闻类型字段的值
                lblNewsType.Text = ds.Tables["news"].Rows[0][2].ToString();
                //获取新闻内容字段的值
                txtContent.Text = ds.Tables["news"].Rows[0][3].ToString();
                //获取新闻发布时间字段的值
                lblNewsTime.Text = ds.Tables["news"].Rows[0][4].ToString().Substring(0,10);

            }
        }
        //返回按钮事件代码
        protected void btnBack_Click(object sender, EventArgs e)
        {
            Response.Redirect("manage_List.aspx");
        }
    }
}

3.添加新闻模块

页面设计:

ASP.NET 简易新闻系统「终于解决」

 页面代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;                //引入命名空间
using System.Data.SqlClient;

namespace 简易新闻系统plus.manage
{
    public partial class manage_Add : System.Web.UI.Page
    {
        dbClass db = new dbClass();
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void btnAdd_Click(object sender, EventArgs e)
        {
            //获取新闻的标题
            string strTitle = txtTitle.Text.ToString();
            //获取新闻的类型
            string strType = dropNewsType.SelectedValue.ToString();
            //获取新闻的内容
            string strContent = txtContent.Text.ToString();
            //插入语句
            string strIns = "insert into tb_News values('" + strTitle + "','" + strType + "','" + strContent + "','" + DateTime.Now.ToShortDateString() + "')";
            if (db.ExeNonQuery(strIns))
            {
                Response.Write("<script>alert('添加成功');location.href='manage_List.aspx';</script>");
            }
            else
            {
                Response.Write("<script>alert('添加失败');</script>");

            }
        }
        //重置按钮事件代码
        protected void btnReset_Click(object sender, EventArgs e)
        {
            txtTitle.Text = "";
            txtContent.Text = "";
        }
        //返回按钮事件代码
        protected void btnBack_Click(object sender, EventArgs e)
        {
            Response.Redirect("manage_List.aspx");
        }
    }
}

4.编辑新闻模块

首先应该将要修改的新闻内容显示出来,然后在已有的基础上修改。

为“新闻编辑”设置HyperLinkField超链接列:

ASP.NET 简易新闻系统「终于解决」

 页面设计:

ASP.NET 简易新闻系统「终于解决」

 页面代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;            //引入命名空间
using System.Data.SqlClient;

namespace 简易新闻系统plus.manage
{
    public partial class manage_Update : System.Web.UI.Page
    {
        dbClass db = new dbClass();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string strSel = "select * from tb_News where news_Id=" + Convert.ToInt32(Request["news_Id"]);
                DataSet ds = db.GetDataSet(strSel, "news");
                //绑定字段
                txtTitle.Text = ds.Tables["news"].Rows[0][1].ToString();
                dropNewsType.SelectedValue= ds.Tables["news"].Rows[0][2].ToString();
                txtContent.Text= ds.Tables["news"].Rows[0][3].ToString();
            }
        }

        protected void btnAdd_Click(object sender, EventArgs e)
        {
            string strTitle = txtTitle.Text.ToString();
            string strType = dropNewsType.SelectedValue;
            string strContent = txtContent.Text.ToString();
            string strUpdate = "update tb_News set news_Title='" + strTitle + "',news_Type='" + strType + "',news_Content='" + strContent + "',news_AddTime='" + DateTime.Now.ToShortDateString().Substring(0, 10) + "'where news_Id="+Convert.ToInt32(Request["news_Id"]);
            if (db.ExeNonQuery(strUpdate)==true)
            {
                Response.Write("<script>alert('修改成功');location.href='manage_List.aspx';</script>");

            }
            else
            {
                Response.Write("<script>alert('修改失败');</script>");

            }
        }

        protected void btnBack_Click(object sender, EventArgs e)
        {
            Response.Redirect("manage_List.aspx");
        }
    }
}

七、新闻系统前台浏览模块

1.新闻浏览首页

页面控件:4个label控件、“更多新闻”用HyperLink控件、3个GridView控件

需要分别为GridView绑定新列:

ASP.NET 简易新闻系统「终于解决」ASP.NET 简易新闻系统「终于解决」

注意:先进入“编辑列”对话框,取消“自动生成字段”的复选框。

页面设计如下:

ASP.NET 简易新闻系统「终于解决」

 页面代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;              //引入命名空间
using System.Data.SqlClient;

namespace 简易新闻系统plus
{
    public partial class index : System.Web.UI.Page
    {
        dbClass db = new dbClass();
        protected void Page_Load(object sender, EventArgs e)
        {
            this.Title = "新闻首页";
            if (!IsPostBack)
            {
                //国内新闻设置
                string strSel = "select top 5 * from tb_News where news_Type='国内新闻' order by news_AddTime Desc";
                DataSet ds1 = db.GetDataSet(strSel, "news_Home");
                int count1 = ds1.Tables["news_Home"].Rows.Count; //获取国内新闻的记录数量

                //依次判断新闻标题是否大于10个字符,若大于,额外的字符用“...”代替
                for (int j = 0; j < count1; j++)
                {
                    if (((string)ds1.Tables["news_Home"].Rows[j][1]).Length > 10)
                    {
                        ds1.Tables["news_Home"].Rows[j][1] = ds1.Tables["news_Home"].Rows[j][1].ToString().Substring(0, 10) + "...";
                    }
                }
                gvHome.DataSource = ds1.Tables["news_Home"];
                gvHome.DataBind();

                //财经新闻设置
                string strSel2 = "select top 5 * from tb_News where news_Type='财经新闻' order by news_AddTime Desc";
                DataSet ds2 = db.GetDataSet(strSel2, "news_Finance");
                int count2 = ds2.Tables["news_Finance"].Rows.Count;
                for (int j = 0; j < count2; j++)
                {
                    if (((string)ds2.Tables["news_Finance"].Rows[j][1]).Length > 10)
                    {
                        ds2.Tables["news_Finance"].Rows[j][1] = ds2.Tables["news_Finance"].Rows[j][1].ToString().Substring(0, 10) + "...";
                    }
                }
                gvFinance.DataSource = ds2.Tables["news_Finance"];
                gvFinance.DataBind();

                //娱乐新闻设置
                string strSel3 = "select top 5 * from tb_News where news_Type='娱乐新闻' order by news_AddTime Desc";
                DataSet ds3 = db.GetDataSet(strSel3, "news_Amusement");
                int count3 = ds3.Tables["news_Amusement"].Rows.Count;
                for (int j = 0; j < count3; j++)
                {
                    if (((string)ds3.Tables["news_Amusement"].Rows[j][1]).Length > 10)
                    {
                        ds3.Tables["news_Amusement"].Rows[j][1] = ds3.Tables["news_Amusement"].Rows[j][1].ToString().Substring(0, 10) + "...";
                    }
                }
                gvAmusement.DataSource = ds3.Tables["news_Amusement"];
                gvAmusement.DataBind();


            }
        }
    }
}

2.新闻详情页面

页面设计:

ASP.NET 简易新闻系统「终于解决」

 页面效果:

ASP.NET 简易新闻系统「终于解决」

 页面代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;

namespace 简易新闻系统plus
{
    public partial class news_Details : System.Web.UI.Page
    {
        dbClass db = new dbClass();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string strSel = "select * from tb_News where news_Id=" + Request.QueryString["news_Id"];
                DataSet ds = db.GetDataSet(strSel, "news");
                lblTitle.Text = ds.Tables["news"].Rows[0][1].ToString();
                lblType.Text= ds.Tables["news"].Rows[0][2].ToString();
                txtContent.Text= ds.Tables["news"].Rows[0][3].ToString();
            }
        }

        protected void btnBack_Click(object sender, EventArgs e)
        {
            Response.Redirect("index.aspx");
        }
    }
}

3.更多新闻页面

页面设计:

ASP.NET 简易新闻系统「终于解决」

页面效果:

ASP.NET 简易新闻系统「终于解决」

 页面代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace 简易新闻系统plus
{
    public partial class news_More : System.Web.UI.Page
    {
        dbClass db = new dbClass();
        //绑定数据源到GridView控件上
        protected void gvBind()
        {
            string strSel = "select * from tb_News where news_Type='" + Request.QueryString["news_Type"] + "'";
            DataSet ds = db.GetDataSet(strSel, "news");
            GridView1.DataSource = ds.Tables["news"];
            GridView1.DataBind();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                lblType.Text = Request.QueryString["news_Type"].ToString();
                gvBind();    //调用绑定数据源的方法
            }
        }

        protected void btnBack_Click(object sender, EventArgs e)
        {
            Response.Redirect("index.aspx");
        }
    }
}

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/25608.html

(0)
上一篇 2023-07-07 13:00
下一篇 2023-07-19 22:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信