.net 学期项目总结

  照学校的教学安排,上学期老师讲了一个学期的C#语言,一学期下来基本上没怎么听过,听了一些应该也都忘干净了。

  这学期开学的前一个月就是完成上学期留下来任务做个小屁项目。要做的项目是做个校园门户网站,一开始彻底没底。除了做了几个静态页面其余的都无从下手。因为要通过答辩,慢慢就从书和网上找资料,项目这才算是开始了也慢慢找到了些.net写项目的感觉。

  项目完成功能:

   添加更行学院简介信息、教务信息、院系介绍信息,用户管理,个人管理(密码修改),发布新闻,管理新闻(查看、修改、删除),投票信息管理(设置投票头信息),留言信息管理。

  编码工作:

  完成一组增、删、改、查,之后的模块基本上就是一个模式了。到完成整个项目找不到几丝的成就感,因为业务逻辑等等什么的都没有什么技术含量。到然整个项目也没什么有特色的地方。唯一的感觉web开发.net要比Java好用、简单。在编码过程中一下几个地方那个是稍微费神的地方因为不熟悉。

(一)DateGrid模板列的使用,一开始还不知道DateGrid也能用模板列。一直在想着DateList模板列该怎么用。

比如在主页面显示新闻:


    <%# DataBinder.Eval(Container.DataItem, "newsTypeName")%>
   
     <%# DataBinder.Eval(Container.DataItem, "title")%>
   
(<%#DataBinder.Eval(Container.DataItem, "newDate")%>
    )
  

黑色加粗的代码就是通过超链接把iID带到相应页面,然后再在页面获取其ID进行数据库查询显示。后面红色代码就是要连接的ID值,后面再加上一字段,在页面显示时就会显示后面的字段值。

 

(二)在这次项目中第一次使用了FCKEdior;

1,先在其官网下载FCKeditor_2.6.3.zip,FCK在.net和java中的使用各不相同。在.net中使用还必需下载支持.net的FCKeditor.Net.zip包。

2,把FCKeditor_2.6.3.zip解压后得到的fckeditor文件夹复制到你想使用这个编辑器的网站的根目录下面,然后再解压FCKeditor.Net.zip包找到其目录下的/bin/Debug目录中的FredCK.FCKeditorV2.dll文件。在你的网站里面把这个FredCK.FCKeditorV2.dll添加到bin目录下,直接添加引用就OK。

3,在要用FCK页面顶部加上<%@ Register TagPrefix='FCKeditorV2' Namespace='FredCK.FCKeditorV2' Assembly='FredCK.FCKeditorV2'%> 然后再相应位置加上这句代码

4,在web.config配置文件中加入

 
       
       
 

注意:value值不能写错“~”代表你项目的跟目录。

5,获取FCKEditor的值,直接fck id的值.value 就OK,如上面第三条的第二句代码FCKeditor1.value就能获取FCKEditor的值。

 

(三)关于FCKEditor的一些设置。

 1,打开fckeditor文件下的fckconfig.js文件 找到

var _FileBrowserLanguage = 'aspx' ; // asp | aspx | cfm | lasso | perl | php | py
var _QuickUploadLanguage = 'aspx' ; // asp | aspx | cfm | lasso | perl | php | py

把默认的值改为aspx

FCKConfig.SkinPath = FCKConfig.BasePath + 'skins/office2003/' ;   皮肤设置。

FCKConfig.DefaultLanguage  = 'zh-cn' ;  默认语言设置

FCKConfig.FontNames  = '宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;   设置字体 可以再这里加入你需要的字体名称。

 

2,默认工具栏设置(根据需要可以进行修改)

FCKConfig.ToolbarSets["Default"] = [
 ['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
 ['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
 ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
 ['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
 '/',
 ['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
 ['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote','CreateDiv'],
 ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
 ['Link','Unlink','Anchor'],
 ['Image',/*'Flash',*/'Table','Rule','Smiley','SpecialChar','PageBreak'],
 '/',
 ['Style','FontFormat','FontName','FontSize'],
 ['TextColor','BGColor'],
  /* ['FitWindow','ShowBlocks','-','About'] */ // No comma for the last row.
] ;

 

(四)其余方面

  1, like关键字的使用如搜索新闻

   string sql=string.Format("select newsID,title,newsTypeName,author,newDate from newstable where title like '% {0}%'or newsContent like '%{1}%'or newDate like '%{2}%'",keyword,keyword,keyword);

  

2,登录代码:

   系统分为系统管理员和新闻管理员

 private void btnLogin_Click(object sender, System.EventArgs e)
  {

   string username = this.txtUserName.Text.Trim();
   string password = this.txtPassword.Text.Trim();
   string userclass = this.dList1.SelectedItem.Value;
  
   Session["username"]=username;
   Session["userclass"]=userclass;
   Session["password"]=password;
  
   try
   {
    con = schoolDB.connection;
    con.Open();
    string sql ="select userName,password,userclass from users where username='"+username+"'and password='"+password+"'and userclass='"+userclass+"'";
    cmd = new SqlCommand(sql,con);
    sd = cmd.ExecuteReader();
    if(sd.Read())
    {
     if(sd.GetValue(0).ToString()==username && sd.GetValue(1).ToString()==password)
     {

      if("系统管理"==sd.GetValue(2).ToString())
      {
       Response.Redirect("menuManager/admin_main.aspx");
      }
      else
      {
       Response.Redirect("newsManager/admin.aspx");
      }
     }
    }
    else
    {
     Response.Write((""));
    }
   }
   catch(Exception ex)
   {
    this.lblMessage.Text="数据库错误:"+ex.Message;
   }
   finally
   {
    con.Close();
   }

  }

 3,发布新闻代码

  c# code

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Text;

namespace webschool.admin.newsManager
{
 ///


 /// addNews 的摘要说明。
 ///

 public class addNews : System.Web.UI.Page
 {
  protected System.Data.SqlClient.SqlConnection con;
  protected System.Data.SqlClient.SqlDataAdapter ada;
  protected System.Data.SqlClient.SqlCommand cmd;
  protected System.Data.SqlClient.SqlDataReader dr;

  protected System.Web.UI.WebControls.Button btnAddNews;
  protected System.Web.UI.WebControls.TextBox txtAuthor;
  protected System.Web.UI.WebControls.Label lblMessage;
  protected System.Web.UI.WebControls.TextBox txtNewsTitle;
  protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
  protected System.Web.UI.WebControls.DropDownList txtNewsType;
  protected System.Web.UI.WebControls.Label lblTypeName;
  protected System.Web.UI.WebControls.Label Label1;
  protected FredCK.FCKeditorV2.FCKeditor FCKeditor1;

  private void Page_Load(object sender, System.EventArgs e)
  {
   if(!this.Page.IsPostBack)
   {
    this.getClass();
    string user = (string)Session["userclass"];
   }
  }


  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
 
  ///


  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  ///

  private void InitializeComponent()
  {   
   this.btnAddNews.Click += new System.EventHandler(this.btnAddNews_Click);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  //获得新闻类型
  private void getClass()
  {
   try
   {
    con=schoolDB.connection;
    con.Open();
    string strSQL = "select * from newsType";
       cmd = new SqlCommand(strSQL,schoolDB.connection);
    SqlDataReader dr = cmd.ExecuteReader();
    this.txtNewsType.DataSource = dr;
    txtNewsType.DataValueField = "NewsTypeID";
    txtNewsType.DataTextField = "NewsTypeName";
    txtNewsType.DataBind();
   
   }
   catch(Exception x)
   {
    this.lblMessage.Text="数据库错误:"+x.Message;
   }
   finally
   {
    con.Close();
   }
  }

  //增加各类新闻的新闻数
  private void addNewsNum()
  {
   try
   {
    con = schoolDB.connection;
    int id = int.Parse(this.txtNewsType.SelectedItem.Value);
    string sql= string.Format("update newsType set NewsNum=NewsNum+1 where newsTypeID='{0}'",id);
    cmd = new SqlCommand(sql,con);
       cmd.ExecuteNonQuery();
   
   }
   catch(Exception x)
   {
    Console.WriteLine(x.Message);
   }
   finally
   {
    con.Close();
   }
 
  }

  private void getNewsTypeName()
  {
   try
   {
    int id =int.Parse(this.txtNewsType.SelectedItem.Value);
    con=schoolDB.connection;
    con.Open();
    string strSQL = "select newsTypeName from newsType where newsTypeID='"+id+"'";
    cmd = new SqlCommand(strSQL,con);
    SqlDataReader dr = cmd.ExecuteReader();
    while(dr.Read())
    {
     this.lblTypeName.Text=(string)dr["newsTypeName"];
    }
   
   }
   catch(Exception x)
   {
    this.lblMessage.Text="数据库错误:"+x.Message;
   }
   finally
   {
    con.Close();
   }
  }
  //增加新闻数到用户
  private void addUserNum()
  {
   try
   {
    string username = (string)Session["username"];
    con = schoolDB.connection;
    con.Open();
    string sql="update users set addNum=addNum+1 where username=@username";
    cmd = new SqlCommand(sql,con);
    cmd.Parameters.Add("@username",SqlDbType.VarChar,20);
    cmd.Parameters["@username"].Value=username;
       cmd.ExecuteNonQuery();
   }
   catch(Exception x)
   {
    Console.WriteLine(x.Message);
   }
   finally
   {
    con.Close();
   }
  }
  //发布新闻
  private void btnAddNews_Click(object sender, System.EventArgs e)
  {
   try
   {
    if(""==this.FCKeditor1.Value)
    {
     this.lblMessage.Text="请输入新闻内容,再提交!!";
    }
    else
    {
     int id =int.Parse(this.txtNewsType.SelectedItem.Value);
     con=schoolDB.connection;
     con.Open();
     string strSQL = "select newsTypeName from newsType where newsTypeID='"+id+"'";
     cmd = new SqlCommand(strSQL,con);
     SqlDataReader dr = cmd.ExecuteReader();
     if(dr.Read())
     {
      this.Label1.Text="您在新闻: ";
      this.lblTypeName.Text=(string)dr["newsTypeName"];
      dr.Close();
     }
     string newsTitle = this.txtNewsTitle.Text.Trim();
     string newsTypeID = this.txtNewsType.SelectedItem.Value;
     string newsTypeName = this.lblTypeName.Text.Trim();
     string newsContent = this.FCKeditor1.Value;
     string author = this.txtAuthor.Text.Trim();
     
   
     string sql="insert newstable(title,newsTypeID,newsTypeName,newsContent,author,newDate)values(@newsTitle,@newsTypeID,@newsTypeName,@newsContent,@author,default)";
     cmd = new SqlCommand(sql,con);

     cmd.Parameters.Add("@newsTitle",SqlDbType.VarChar,500);
     cmd.Parameters["@newsTitle"].Value=newsTitle;
     cmd.Parameters.Add("@newsTypeID",SqlDbType.Int);
     cmd.Parameters["@newsTypeID"].Value=newsTypeID;
     cmd.Parameters.Add("@newsTypeName",SqlDbType.VarChar,20);
     cmd.Parameters["@newsTypeName"].Value=newsTypeName;
     cmd.Parameters.Add("@newsContent",SqlDbType.NText);
     cmd.Parameters["@newsContent"].Value=newsContent;
     cmd.Parameters.Add("@author",SqlDbType.VarChar,20);
     cmd.Parameters["@author"].Value=author;

     int result =cmd.ExecuteNonQuery();
     if(result>0)
     {
      this.addNewsNum();
      this.addUserNum();
      this.lblMessage.Text="中添加数据成功!";
      
     }
     else
     {
      this.lblMessage.Text="服务器提示:数据添加失败!";
     }
    }
   }
   catch(Exception x)
   {
    this.lblMessage.Text="数据库错误:"+x.Message;
   }
   finally
   {
    con.Close();
   }
  }
 }
}

 3, 还有就是一些页面的问题 如CSS、DIV、JavaScript 等等使用只有慢慢去熟悉了。

 

 

 

你可能感兴趣的:(学习笔记)