基于C#的ASP.NET开发的党史学习网站课设

 党史学习网站

#仅仅只是记录作者的期末大作业

1引言

本网站的主题为党史学习网站,其宗旨是帮助同学们了解党史,学习党史。只有了解了党史,才能更好地磨砺自己、发展自己、了解自己的不足、更好的完善自己。学习历史是为了更好走向未来。开展党史学习教育,就是要以史为镜、以史明志,把苦难辉煌的过去、日新月异的现在、光明宏大的未来贯通起来,在鉴往知来中砥砺前行,在乱云飞渡中把准航向,在凝心聚力中团结奋斗,共同创造新的历史伟业。

本网站主要分为8个模块,登陆模块,注册模块,主页模块,党史模块,党史伟人图片模块,党史资料模块,知识问答模块,党史网站在线情况模块等模块。

2 开发环境

开发环境为visual stdio 2017,使用的数据库为 MySQL

3 功能模块设计与实现

3.1登录模块设计与实现

图 3.1.1:登陆页面展示

本登陆界面如图3.1.1所示,采用了较为简单的技术,运用了table表格的形式,使用了图3.1.2的验证控件进行账号密码的验证。

图 3.1.2:登陆界面控件

登陆按钮与数据库进行连接,逻辑实现是如图3.1.3所示,自己定义一个SQL查询语句,将账号、密码放入SQL查询语句中,用sqlDataReader.HasRows语句进行逐一比较,找出结果,将用户名存入session并调用cookies,如果结果存在就关闭数据库,进行数据跳转,并弹出登陆成功的提示框,并关闭数据库。

图 3.1.3:登陆界面代码原理

若不存在就执行如图3.1.4的代码,跳出提示框,并在label1显示“账号或密码错误,请重新登录”语句,关闭数据库,重定向回本界面。

图 3.1.4:登陆失败代码原理

3.2注册模块设计与实现

使用了如图3.2.2所示的代码,创建了如图3.2.1所示的界面,运用了table表格和验证控件对账号、密码、确认密码、生日、电话号码、身份证号等内容进行验证,并单独创建了一个类如图3.2.3所示,对用户的年龄进行判断,最后使用了数据库将用户信息存入数据库。

图 3.2.1

如3.2.2图所示,对确认密码进行了验证,并用了正则表达式对电话号码进行了验证。

图 3.2.2

如图3.2.3所示,自己定义一个类,将年龄,姓名等内容进行属性定义,并定义了一个DecideAge方法对年龄的大小的判断。

图 3.2.3

如图3.2.4所示,对出生日期进行了验证

图 3.2.4

如图3.2.5和图3.2.6所示,对身份证号进行了身份证的验证

图 3.2.5

图 3.2.6

如图3.2.7和3.2.8所示,如果验证控件成功通过,则连接数据库,使用函数句柄将用户名和密码存入SQL字符串,如果sqlDataReader.HasRows语句找不到结果,则将数据存入数据库,如果账号存在,则弹出消息提示框,显示账号已经存在。

图 3.2.7

图 3.2.8

3.3主页模块设计与实现

界面主要是采用div+CSS和部分JavaScript组成。首页的效果如图3.3.1所示。

图 3.3.1

其首页导航栏的CSS如下所示:

.nav {

width: 100%;

height: 60px;

line-height: 60px;

background-color: #0b487e;

}

.ul_nav {

padding: 0;

width: 95%;/*整个导航栏宽度*/

    margin:0 auto;/*居中*/

list-style: none;/*去标签前圆点*/



}

.ul_nav li {

float: left;

width: 20%;/*每个标签宽度*/

text-align: center;

margin-left: 0;

border-top-left-radius: 8px;

border-top-right-radius: 8px;

    cursor: pointer;



/*  display: inline;

outline: none;

display: inline-block; */

background: #0b487e;

}

a {

/* width: 100%; */

text-decoration: none;

color:white;/*字体颜色*/

font-family: 隶书;

font-size: 20px;

display: block;

}

.ul_nav li:hover{

background:#023258;

}

.ul_nav a:hover{

color:#ffffff;

    display:block;

text-decoration:none;

background-color:#023258;

}

.ul_nav li.li_checked {

background-color: #023258;

}

.ul_nav a.a_checked {

color:#ffffff;

display:block;

text-decoration:none;

}



.dropDown {

display: block;



}

3.4党史模块设计与实现

界面主要是采用table表格+CSS和部分JavaScript组成。其中使用了如下的javascript语句,定义一个服务器时间显示。效果如图3.4.1所示。

<script>

    function startTimer() {

      var today = new Date();  //获取客户端当前系统日期

      var h = today.getHours();

      var m = today.getMinutes();

      var s = today.getSeconds();

      m = checkTime(m);  //调用自定义的checkTime()函数,在小于10的数字前加0

      s = checkTime(s);

      document.getElementById("divTimer").innerHTML = h + ":" + m + ":" + s;  //设置divTimer层显示内容

      setTimeout("startTimer()", 1000);  //过1秒后重复调用自定义的startTimer()函数

    }

    //checkTime(i)检查i参数值。如果i<10,就在数字前加0

    function checkTime(i) {

      if (i < 10) {

        i = "0" + i;

      }

      return i;

    }

  </script>

图 3.4.1

其中表格使用的CSS如下:

/* 首页 */

#textTable1 {

border-top-left-radius: 20px;

border-bottom-left-radius: 20px;

    background: #ffe4fe;

font-family:"华文新魏";

width: 100%;

height: 100%;



table-layout: fixed;

overflow: hidden;

text-overflow: ellipsis;

white-space: nowrap;

}



#textTable1 th {

border-top-left-radius: 20px;

background: #ff8922;

font-family:"华文新魏";

}



#textTable1.td1 {

background-color: #FFC0CB;

}



#textTable1 td {

/* 

    border: 2px;

border-color: #000000;

font-family: 隶书; */



/* background: rgba(246, 195, 39, 0.8); */

}



#textTable1 a {

font-size: medium;

}

并如图3.4.2所示使用了大量的超链接将关键字链接到党史网站上

图 3.4.2

3.5党史伟人图片模块设计与实现

界面主要是采用div+CSS和部分JavaScript组成。其他的大部分与上一个板块类似,其中伟人图片使用了CSS,效果如图3.5.1所示。

图 3.5.1

其中图片使用的CSS如下:

#imgDiv_22 {

width: 400px;

height: 400px;

background-color: #00A4AC;

float: left;

margin-left: 20px;

margin-top: 20px;

border-radius: 10px;

box-shadow: 0px 0px 10px #525455;



}

#imgDiv_22 img {

width: 100%;

height:400px;

border-radius: 10px;



}

#imgDiv_23 {

width: 400px;

height: 400px;

background-color: #00A4AC;

float: right;

margin-left: 20px;

margin-top: 20px;

border-radius: 10px;

box-shadow: 0px 0px 10px #525455;



}

#imgDiv_23 img {

width: 100%;

height:400px;

border-radius: 10px;



}

3.6党史资料模块设计与实现

界面主要是采用table表格+CSS和部分JavaScript组成。其他的大部分与上一个板块类似,其中党史当的今天字段全部是由超链接组成,链接到党史学习网上的“党史上的今天”,效果如图3.6.1所示。

图 3.6.1

3.7知识问答模块设计与实现

界面主要是采用div+CSS和部分JavaScript组成。其他的大部分与上一个板块类似,其中答题部分是使用placeholder控件数组组成的,其效果如图3.7.1所示。

图 3.7.1

其中某段placeholder源代码如下:

PlaceHolder[] plh = new PlaceHolder[5];



        for (int i = 0; i < 3; i++)

        {

            plh[i] = new PlaceHolder();

            plh[i].ID = "plh" + i.ToString();

        }

        Label lblQuestion = new Label

        {

            ID = "lblQuestion",

            Text = "1. 1936年10月2日,红一方面军部队攻占会宁城,控制西兰大道一段,这为(     )创造了条件。"

        };



        plh[0].Controls.Add(lblQuestion);



        RadioButtonList rdoltChoice = new RadioButtonList

        {

            ID = "rdoltChoice"

        };





        rdoltChoice.Items.Add(new ListItem("A. 打破围剿", "A"));

        rdoltChoice.Items.Add(new ListItem("B. 突破湘江", "B"));

        rdoltChoice.Items.Add(new ListItem("C. 大会师", "C"));

        rdoltChoice.Items.Add(new ListItem("D. 建立革命根据地", "D"));

        plh[0].Controls.Add(rdoltChoice);



        plhChoice.Controls.Add(plh[0]);

其placeholder的部署代码如图3.7.2所示:

图 3.7.2

答题后效果如图3.7.3所示

图 3.7.3

3.8党史网站在线情况模块设计与实现

界面主要是采用div+CSS和部分JavaScript组成。其他的大部分与上一个板块类似,其中在线情况界面的效果如图3.8.1所示。

图 3.8.1

显示用户在线人数和总访问人数的代码如下所示,定义一个Application:

void Application_Start(object sender, EventArgs e)

    {

        // 在应用程序启动时运行的代码

                ScriptResourceDefinition scriptResDef = new ScriptResourceDefinition();

        scriptResDef.Path = "~/scripts/jquery-3.6.0.min.js";

        ScriptManager.ScriptResourceMapping.AddDefinition("jquery", scriptResDef);

        Application["message"] = "</hr>";

        Application["VisitNumber"] = 0;

        Application["Visit"] = 0;

    }

在:session_start启动时++,在session_end启动时,计算在线人数的--,总访问人数的不做运算

void Session_Start(object sender, EventArgs e)

    {

         if (Application["VisitNumber"] != null)

        {

            Application.Lock();

            Application["VisitNumber"] = (int)Application["VisitNumber"] + 1;

            Application.UnLock();

        }

        if (Application["Visit"] != null)

        {

            Application.Lock();

            Application["Visit"] = (int)Application["Visit"] + 1;

            Application.UnLock();

        }

        Session.Timeout = 1;



    }



    void Session_End(object sender, EventArgs e)

    {

        if (Application["VisitNumber"] != null)

        {

            Application.Lock();

            Application["VisitNumber"] = (int)Application["VisitNumber"] - 1;

            Application.UnLock();

        }



    }

并用如下代码进行取出人数并显示: 

Application.Lock();

Label1.Text = Application["VisitNumber"].ToString();  //显示网站在线人数

        Label2.Text = Application["Visit"].ToString();

 Application.UnLock();

使用cookies的相关代码进行第几次访问网站的显示:

int num = int.Parse(Request.Cookies["Num"].Value);

            Request.Cookies["Num"].Value = Convert.ToString(num + 1);

            Response.Cookies.Set(Request.Cookies["Num"]);

            lblMsg.Text = Session["user"] + ",欢迎您!您是第" + Request.Cookies["Num"].Value + "次光临党史学习网!";

其中对IP地址等的显示代码如下:

        Label3.Text = "服务器IP地址:" + Request.ServerVariables["LOCAL_ADDR"] + "<br />";

        Label3.Text += "客户端IP地址:" + Request.ServerVariables["REMOTE_ADDR"] + "<br />";

        Label3.Text += "浏览器类型:" + Request.Browser["Browser"] + "<br />";

        Label3.Text += "浏览器版本:" + Request.Browser["Version"] + "<br />";

        Label3.Text += "是否支持Cookies:" + Request.Browser["Cookies"];

4 网站部署

通过VS 2017上对解决方案选择发布web应用,修改配置文件

图4.1   发布展示

连接选择相应的站点,服务器和目标url。

图4.2   连接展示

设置数据库连接。选择发布。

   图4.3   数据库展示

在iis创建对应web,端口12345的网站

图4.4   iis展示

源码已发布:

【免费】asp.net课设代码源码资源-CSDN文库

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值