C#留言板制作报告+源码.docx
《C#留言板制作报告+源码.docx》由会员分享,可在线阅读,更多相关《C#留言板制作报告+源码.docx(28页珍藏版)》请在冰豆网上搜索。
C#留言板制作报告+源码
一、业务流程与功能设计
1、管理员(权限为1):
管理员在前台页面通过验证后,可以直接登录到后台管理页面,对留言进行增删查改等操作。
2、普通用户(权限为0):
普通用户可以对自己留言进行查看,发表
3、业务流程图
二、数据库设计
1、综述:
本系统采用了SQLServer2005数据库,建立了三个数据表,用户信息表tb_User、留言表tb_LeaveWord、回复表tb_Reply
2、三个数据表如下:
用户信息表tb_User
留言表tb_LeaveWord
回复表tb_Reply
3、数据库连接操作类SqlData.cs代码:
publicclassSqlData
{
privateSqlConnectionsqlcon;
privateSqlCommandsqlcom;
privateSqlDataAdaptersqldata;
publicSqlData()
{
sqlcon=newSqlConnection("DataSource=.\\SQLExpress;IntegratedSecurity=True;AttachDBFilename=|DataDirectory|db_22.mdf;UserInstance=true");
sqlcon.Open();
}
publicboolExceSQL(stringstrSqlCom)
{
sqlcom=newSqlCommand(strSqlCom,sqlcon);
try
{
sqlcom.ExecuteNonQuery();
returntrue;
}
catch
{
returnfalse;
}
finally
{
sqlcon.Close();
}
}
publicDataSetExceDS(stringSqlCom)
{
try
{
sqlcom=newSqlCommand(SqlCom,sqlcon);
sqldata=newSqlDataAdapter();
sqldata.SelectCommand=sqlcom;
DataSetds=newDataSet();
sqldata.Fill(ds);
returnds;
}
finally
{
sqlcon.Close();
}
}
publicSqlDataReaderExceRead(stringSqlCom)
{
sqlcom=newSqlCommand(SqlCom,sqlcon);
SqlDataReaderread=sqlcom.ExecuteReader();
returnread;
}
#endregion
}
三、各模块设计
1、母版设计
界面:
后台代码(含搜索查询模块):
publicpartialclassMasterPage:
System.Web.UI.MasterPage
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
SqlConnectioncon=newSqlConnection("DataSource=.\\SQLExpress;IntegratedSecurity=True;AttachDBFilename=|DataDirectory|db_22.mdf;UserInstance=true");
con.Open();
if(TextBox1.Text=="")
{
Response.Write("alert('输º?
入¨?
不?
能¨¹为a空?
!
ê?
');location='query.aspx'");
}
else
{
stringstr="select*fromtb_LeaveWordwhereSubjectlike'%"+TextBox1.Text+"%'";
SqlCommandcmd=newSqlCommand(str,con);
SqlDataReaderreader=cmd.ExecuteReader();
reader.Read();
if(reader.HasRows)
{
reader.Close();
PagedDataSourcepgds=newPagedDataSource();
stringsqlStr1="selectID,Uid,Subject,Content,DateTimefromtb_LeaveWordwhereSubjectlike'%"+TextBox1.Text+"%'";
SqlDataAdapterAdapter=newSqlDataAdapter(sqlStr1,con);
DataSetds=newDataSet();
Adapter.Fill(ds,"tb_LeaveWord");
pgds.DataSource=ds.Tables["tb_LeaveWord"].DefaultView;
this.GridView1.DataSource=pgds;
this.GridView1.DataBind();
}
else
{
Response.Write("alert('没?
有®D相¨¤关?
内¨²容¨Y!
ê?
');location='query.aspx'");
}
}
}
}
2、留言板主页(查看主题)设计
界面:
后台代码:
publicpartialclassUserControls_ShowWord:
System.Web.UI.UserControl
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
publicstringGetList()
{
SqlDatada=newSqlData();
SqlDataReaderdr=da.ExceRead("select*fromtb_LeaveWord");
stringstrBody="";
while(dr.Read())
{
strBody+="
·¡èID="+dr["ID"]+">"+dr["Subject"].ToString()+"
\n";
}
dr.Close();
strBody+="";
returnstrBody;
}
}
4、发表留言模块设计
界面:
后台代码:
(先检测是否已登录)
publicpartialclassDefault2:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
if(Session["UserName"]==null)
{
Response.Redirect("Login.aspx");
}
}
protectedvoidbtnOK_Click(objectsender,EventArgse)
{
SqlDatada=newSqlData();
stringcmdtxt="INSERTINTOtb_LeaveWord(Uid,Subject,Content,DateTime,IP)";
cmdtxt+="VALUES('"+Session["UserName"].ToString()+"','"+this.TextBox1.Text+"'";
cmdtxt+=",'"+this.FreeTextBox1.Text+"','"+DateTime.Now+"'";
cmdtxt+=",'"+Request.UserHostAddress+"')";
booladd=da.ExceSQL(cmdtxt);
if(add==true)
{
Response.Write("alert('添¬¨ª加¨®成¨¦功|!
');location='Default.aspx'");
}
else
{
Response.Write("alert('添¬¨ª加¨®失º¡ì败㨹!
ê?
');location='javascript:
history.go(-1)'");
}
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
this.TextBox1.Text="";
this.FreeTextBox1.Text="";
}
}
5、用户信息注册模块设计
界面:
后台代码:
publicpartialclassUserControls_Register:
System.Web.UI.UserControl
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidbtnOK_Click(objectsender,EventArgse)
{
this.MultiView1.ActiveViewIndex=1;
}
protectedvoidbtnOK1_Click(objectsender,EventArgse)
{
SqlDatada=newSqlData();
SqlDataReaderread=da.ExceRead("select*fromtb_UserwhereUid='"+this.txtUid.Text+"'");
read.Read();
if(read.HasRows)
{
if(this.txtUid.Text==read["Uid"].ToString())
{
Response.Write("alert('对?
不?
起e,ê?
该?
用®?
户¡ì已°?
经-注Á¡é册¨¢!
ê?
');location='Register.aspx'");
return;
}
}
read.Close();
stringcmdtxt="INSERTINTOtb_User(Uid,Pwd,Sex,WebSite,Email,QQ,IP)";
cmdtxt+="VALUES('"+this.txtUid.Text+"','"+this.txtPwd.Text+"','"+this.radSex.SelectedValue+"'";
cmdtxt+=",'"+this.txtWebSite.Text+"','"+this.txtEmail.Text+"','"+this.txtQQ.Text+"'";
cmdtxt+=",'"+Request.UserHostAddress+"')";
booladd=da.ExceSQL(cmdtxt);
if(add==true)
{
Response.Write("alert('注Á¡é册¨¢成¨¦功|!
');location='Default.aspx'");
}
else
{
Response.Write("alert('注Á¡é册¨¢失º¡ì败㨹!
ê?
');location='javascript:
history.go(-1)'");
}
}
protectedvoidbtnNoOK_Click(objectsender,EventArgse)
{
Response.Redirect("Default.aspx");
}
}
6、个人留言信息查看模块设计
界面:
后台代码:
(先检测是否登录)
publicpartialclassDefault2:
System.Web.UI.Page
{
publicstringShowSubject,ShowTime,ShowContent;
protectedvoidPage_Load(objectsender,EventArgse)
{
if(Session["UserName"]==null)
{
Response.Redirect("Login2.aspx");
}
this.dlBind();
}
publicstring[]ReplyName=null;
publicstring[]ReplyTime=null;
publicstring[]ReplyContent=null;
publicstringstrName=null;
publicvoiddlBind()
{
stringid=null;
SqlDatada=newSqlData();
intcurpage=Convert.ToInt32(labNowPage.Text);
PagedDataSourceps=newPagedDataSource();
SqlConnectionmycon=newSqlConnection("DataSource=.\\SQLExpress;IntegratedSecurity=True;AttachDBFilename=|DataDirectory|db_22.mdf;UserInstance=true");
mycon.Open();
stringcmdtxt1="SELECT*FROMtb_LeaveWordWHEREUid='"+Session["UserName"].ToString()+"'";
SqlDataAdapterMyAdapter=newSqlDataAdapter(cmdtxt1,mycon);
DataSetds=newDataSet();
MyAdapter.Fill(ds,"tb_LeaveWord");
ps.DataSource=ds.Tables["tb_LeaveWord"].DefaultView;
ps.AllowPaging=true;//是º?
否¤?
可¨¦以°?
分¤?
页°3
ps.PageSize=3;//显?
示º?
的Ì?
数ºy量¢?
ps.CurrentPageIndex=curpage-1;//取¨?
得Ì?
当Ì¡À前¡ã页°3的Ì?
页°3码?
lnkbtnPrve.Enabled=true;
lnkbtnTop.Enabled=true;
lnkbtnNext.Enabled=true;
lnkbtnLast.Enabled=true;
if(curpage==1)
{
lnkbtnTop.Enabled=false;//不?
显?
示º?
第̨²一°?
页°3按ã¡ä钮£¤
lnkbtnPrve.Enabled=false;//不?
显?
示º?
上¦?
一°?
页°3按ã¡ä钮£¤
}
if(curpage==ps.PageCount)
{
lnkbtnNext.Enabled=false;//不?
显?
示º?
下?
一°?
页°3
lnkbtnLast.Enabled=false;//不?
显?
示º?
最Á?
后¨®一°?
页°3
}
this.labCount.Text=Convert.ToString(ps.PageCount);
this.DataList1.DataSource=ps;
this.DataList1.DataKeyField="ID";
this.DataList1.DataBind();
}
protectedvoidlnkbtnTop_Click(objectsender,EventArgse)
{
this.labNowPage.Text="1";
this.dlBind();
}
protectedvoidlnkbtnPrve_Click(objectsender,EventArgse)
{
this.labNowPage.Text=Convert.ToString(Convert.ToInt32(this.labNowPage.Text)-1);
this.dlBind();
}
protectedvoidlnkbtnNext_Click(objectsender,EventArgse)
{
this.labNowPage.Text=Convert.ToString(Convert.ToInt32(this.labNowPage.Text)+1);
this.dlBind();
}
protectedvoidlnkbtnLast_Click(objectsender,EventArgse)
{
this.labNowPage.Text=this.labCount.Text;
this.dlBind();
}
protectedvoidlnkbtnFeedBack_Click(objectsender,EventArgse)
{
Response.Redirect("LeaveWordBack.aspx?
ID="+Request["ID"].ToString()+"");
}
protectedvoidDataList1_DeleteCommand(objectsource,DataListCommandEventArgse)
{
stringstrid=this.DataList1.DataKeys[e.Item.ItemIndex].ToString();//获?
取¨?
当Ì¡À前¡ãDataList控?
件t列¢D
stringcom="Deletefromtb_LeaveWordwhereID='"+Convert.ToInt32(strid)+"'";
SqlDatada=newSqlData();
da.ExceSQL(com);
Page.Response.Redirect("MyWord.aspx");
}
}
7、留言信息管理模块设计
界面
后台代码:
publicpartialclassDefault2:
System.Web.UI.Page
{
publicstringShowSubject,ShowTime,ShowContent;//声¦¨´明¡Â的Ì?
变À?
量¢?
protectedvoidPage_Load(objectsender,EventArgse)
{
if(Session["UserName"]==null)
{
Response.Redirect("Login.aspx");
}
this.dlBind();
}
publicvoiddlBind()
{
stringid=null;
SqlDatada=newSqlData();
intcurpage=Convert.ToInt32(labNowPage.Text);
PagedDataSourceps=newPagedDataSource();
SqlConnectionmycon=newSqlConnection("DataSource=.\\SQLExpress;IntegratedSecurity=True;AttachDBFilename=|DataDirectory|db_22.mdf;UserInstance=true");
mycon.Open();
stringcmdtxt1="SELECT*FROMtb_LeaveWord";
SqlDataAdapterMyAdapter=newSqlDataAdapter(cmdtxt1,mycon);
DataSetds=newDataSet();
MyAdapter.Fill(ds,"tb_LeaveWord");
ps.DataSource=ds.Tables["tb_LeaveWord"].DefaultView;
ps.AllowPaging=true;
ps.PageSize=3;
ps.CurrentPageIndex=curpage-1;
lnkbtnPrve.Enabled=true;
lnkbtnTop.Enabled=true;
lnkbtnNext.Enabled=true;
lnkbtnLast.Enabled=true;
if(curpage==1)
{
lnkbtnTop.Enabled=false;
lnkbtnPrve.Enabled=false;}
if(curpage==ps.PageCount)
{
lnkbtnNext.Enabled=false;
lnkbtnLast.Enabled=false;
}
this.labCount.Text=Convert.ToString(ps.PageCount