zoukankan      html  css  js  c++  java
  • c#练笔_计数器(读书活动专题小记录)

    话说区要搞比赛,我搞好了读书专题站点后感觉还不很差就话交了。点之到交前的一天.领导才话要看附件,我看了后,很不开心哦。因为有好多要求的。最重要的要求到不是不能达到,而是时间不够了。呜呼,不过,我还是搞了两个技术点才交上去.好,来正题;

    1、复习了flash插入页面中“插入层--在层中再插入flash”,而且加一句<param   name=wmode   value=transparent>在<embed src=前。ok了。

    2、话要有阅读次数,那好,数据库中本来就有cishu一字段,我就在cs文件中的写入db中加入一句,当复习,先在view页面定义几个label来用然后就在源码中写:

    int newsid = Convert.ToInt32(Request.QueryString["id"].ToString());

     string strConnection = @"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("dir\\db.mdb");
      //创建数据库连接对象
         OleDbConnection myconn = new OleDbConnection(strConnection);
         //打开数据库连接
        myconn.Open();
        string sql = "select A.Title,A.Content,A.AddTime,A.Author,A.ReadCishu,A.flash_http_type, B.BigClassName from News A ,BigClass B Where B.BigClassID = A.BigClassID And A.ID =" + newsid;

      //创建数据库命令
                OleDbCommand mycmd = new OleDbCommand(sql, myconn);
                    OleDbDataReader dr = mycmd.ExecuteReader();
                    if (dr.Read())//读出内容
                    {
                        lbTitle.Text = dr["Title"].ToString();
                        lbContent.Text = dr["Content"].ToString();
                        lbAuthor.Text = dr["Author"].ToString();
                        lbDate.Text = dr["AddTime"].ToString();
                        flash_http_type = dr["flash_http_type"].ToString();
                        Label1.Text = dr["ReadCishu"].ToString();

                    }
                    //写一次增加访问
                    string sql_cishu = "update News set ReadCishu='" + dr["ReadCishu"] + "'+1 where ID=" + newsid;
                    mycmd = new OleDbCommand(sql_cishu, myconn);
                    mycmd.ExecuteNonQuery();
                    myconn.Close()

    3、要求话要有计数器:哈哈,这是我很久前写过的,03年时候是用asp写,06年时候是用vb.net写,现在09年用用c#搞一个了。哈哈。我对c#有信心:

    cs文件代码:

    protected void Page_Load(object sender, EventArgs e)
        {
           string app_path = Server.MapPath("").ToString ();

    //这里如果更完善看更新插入的新行,也可以不要
           string counter_file=app_path+"\\"+"ms.cnt/";//定义该目录下的ms.cnt为计数器文件

           string   HitRate, tempNo,imgName; // 'HitRate是点击率
           StreamReader txtReader = File.OpenText(counter_file);      
           HitRate=txtReader.ReadLine ().Trim ();//读行
           txtReader.Close();
            //如果符合条件
           if (Session["On_line2"] == null)
           {
               Session["On_line2"] = true;
               tempNo = System.Convert.ToString(System.Convert.ToInt32(HitRate) + 1);//中间取得值      
               StreamWriter txtWriter = File.CreateText(counter_file);
               txtWriter.WriteLine(tempNo);//写行
               txtWriter.Close();
           }
           // Response.Write(HitRate);//文字形式输出
          for (int i = 1; i <= HitRate.Length; i++)//图形方式输出
            {
                imgName = HitRate.Substring(i-1,1);//因为从0开始计算位置的,所以i-1
                Response.Write("<img src='pic/" + imgName + ".gif'>");
            }
        }


    public void  Application_Start(Object S, EventArgs E)
    {
        Application["Counter"] = 0;
      //'第一次启动Application时将CurrentUsers归零
      Application["CurrentUsers"] = 0;
    }

    public void Session_Start(Object S, EventArgs E)
    {
      //'On_line标志设成False,表示第一次连接到该站点
      Session["On_line"] = false;  //  '第一次连接,所以赋值false
      Session["On_line2"]=false ;   //'避免多人连接时候在没有超时又再重新加载页面出错准备。

      //'指定Session的TimeOut属性(默认值是20分钟)
      Session.Timeout = 10;
      Application.Lock();
      //'每有一人连接,CurrentUsers便加一
      Application["CurrentUsers"] = System.Convert .ToInt32 (Application["CurrentUsers"]) + 1;
      Application.UnLock();
    }
    public void  Session_End(Object S, EventArgs E)
    {
      Application.Lock();
      //'每有一人离线,CurrentUsers便减一
      Application["CurrentUsers"] = System.Convert .ToInt32 (Application["CurrentUsers"]) - 1;
      Application.UnLock();
    }
    public void  Application_End(Object S, EventArgs E)
    {
    }

    解析就不再做了。就是用了文件类StreamReader和StreamWriter打开/写入文件。其中,考虑到刷新和session的应用配合,务求访问人次的统计真实有效。最后以图形输出。ok,当然,我们更好的是可以用creatfile生成计数器文件先。这也是很简单的事情的哦修改几行而已

    string app_path = Server.MapPath(".")+ "\\" + "ms.cnt";
            //判断是否存在计数器文件
           if (File.Exists(app_path)==false)
           {
               StreamWriter txtWriter = File.CreateText(Server.MapPath(".") + "\\" + "ms.cnt");
               txtWriter.WriteLine(1);//写行,定为1
               txtWriter.Close();
           }
           string counter_file=app_path..........如果是新手,好好研究下啊。

    交了文件就去长隆玩:十环过山车>摩托过山车>垂直过山车>魔术表演>午餐>异国风情>u型滑板>4D恐龙电影>惊爆危机岛

  • 相关阅读:
    【Project Euler】1 第一题
    【OpenCV归纳】5 图像处理
    【OpenCV归纳】4 关于HighGUI
    【OpenCV归纳】3 在实例中学习简单函数以及数据读写
    【OpenCV归纳】2 读写视频
    【OpenCV归纳】1 体验OpenCV
    【SICP练习】27 练习1.33
    【SICP练习】26 练习1.32
    【SICP练习】25 练习1.31
    【SICP练习】24 练习1.30
  • 原文地址:https://www.cnblogs.com/pyman/p/1611856.html
Copyright © 2011-2022 走看看