参考网络留言簿c课程设计说明书.docx
- 文档编号:24817149
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:52
- 大小:76.35KB
参考网络留言簿c课程设计说明书.docx
《参考网络留言簿c课程设计说明书.docx》由会员分享,可在线阅读,更多相关《参考网络留言簿c课程设计说明书.docx(52页珍藏版)》请在冰豆网上搜索。
参考网络留言簿c课程设计说明书
河北工程大学
科信学院
课程设计说明书
(2010/2011学年第一学期)
课程名称:
软件程序设计
题目:
网络留言簿
专业班级:
电子信息工程08-1
学生姓名:
************
学号:
**********
指导教师:
马****、陈**、崔*、刘***
设计周数:
2周
设计成绩:
2011年1月14日
1课程设计目的
1.1熟悉环境。
熟悉VisualStudio2005环境和MicrosoftSQLServer2005环境。
1.2实现功能
1使该软件实现普通用户浏览和发布留言的功能。
2管理员能回复和管理留言
3留言按时间先后顺序排序显示,并支持分页显示功能。
1.3熟悉语言
熟悉.Net,c#,asp,css
2需求分析
2.1软件功能
随着互联网的迅猛的发展,网站给我们带来不少的便利,与此同时,网络留言簿基本是每个网站必有的功能,为用户之间的交流提供了很好的平台。
例如用在学校网站上,学校的管理人员可以快速获取来自不同系别,不同班级的反馈信息,并且有效地处理这些反馈信息,这无论对于以后的教学管理工作还是与学生之间的信息交流都将提供重要的价值。
本留言簿有如下功能:
1、普通用户浏览、发布和回复留言;
2、管理员能编辑、删除、回复和发布留言;
3、留言按时间先后顺序排序显示,并支持分页显示功能;
4、提供密码修改、资料修改功能,使得用户能够修改自己的密码和资料。
2.2E-R图
按照需求分析,用户必须经过注册后才能发布留言或回复留言,管理员比普通用户多了管理留言这一功能。
所以,E-R图中应该有三个实体:
用户、留言、回复留言。
每个实体可转化成一个数据库表。
每个实体都有自己的属性,这些属性是根据需求分析制定的。
一个用户可以留言或回复多条,而一条留言或回复只属于一个用户。
所以用户和留言、回复留言的关系都是一对多的。
为简化逻辑关系,我将所有的新发布留言都放在“留言表”中,所有的回复都放在“回复留言表”中。
“用户表”的主码是“帐号”,“留言表”的主码是“留言编号”,“回复留言表”的主码是“回复编号”。
“用户表”和“留言表”以及“用户表”和“回复留言表”分别通过“帐号”建立外码约束关系,“留言表”和“回复留言表”通过“留言编号”建立外码约束关系。
详细E-R图见图3-1。
2.3流程图
流程图简述:
当程序开始运行,首先初始化程序,接着进入登录页面,如果是没有账号的新用户,必须在注册并获得账号后方可进行留言,如果是已有账号的用户或是管理员则可输入帐号和密码进行登录。
当输入的帐号和密码一致时,经过判断权限可进入主页面,否则会提示“帐号或密码错误”并停留在登录页面。
进入主页面后可进行相关操作,最后点击退出可结束程序。
2.4系统功能结构图
留言板的系统功能结构图下图所示:
图2-1网络留言簿的总体结构
2.5功能模块
该留言板由用户注册模块、用户登录模块、系统留言模块、资料管理模块、密码修改模块、管理员登录模块和管理留言模块组成。
用户注册模块:
用户必须经过注册并获得帐号后方可使用本留言簿,并且新用户所填写的注册信息必须符合注册的要求。
用户登录模块:
主要是记录登录用户的信息,以便系统能根据不同的用户类型进行不同的处理。
处理完后会转向系统留言模块。
用户员和管理员通过帐号登录到主页面
系统留言模块:
是用户用以留言的主界面,系统的主要功能也体现在这里。
注册过的用户以帐号进行登录。
从本次登录的时候起,之后留言的会员将会在窗口关闭之前在留言界面看到自己的留言信息记录。
资料管理模块:
用户可以修改在注册时所填写的资料。
密码修改模块:
已注册会员通过输入自己的旧密码和新密码,同时判断两次输入的新密码是否一致,最后将原始密码修改为新的密码。
管理员登录模块:
实现判断管理员的权限,并跳转到主页面。
管理留言模块:
管理员可通过该模块编辑和删除所有用户的留言。
3逻辑结构
3.1逻辑结构设计
本系统采用SQLServer2005Express数据库,系统数据库名称为“Database”,用了三个表:
UserTable表用于保存用户信息。
Message表用于保存留言内容,有的新留言都保存在该表中。
RetMessage表用于保存留言回复内容。
用户表:
UserTable用户表用于保存用户的信息。
列名
数据类型
长度
是否为主键
是否为空
注释
UserNumber
int
4
是
否
用户账号
UserPwd
nvarchar
20
否
否
用户密码
UserName
nvarchar
20
否
否
用户名
nvarchar
50
否
是
PhoneNumber
nvarchar
20
否
是
联系电话
Limit
nchar
1
否
否
用户权限
留言表:
Messagetable
留言表用于保存用户的留言内容。
列名
数据类型
长度
是否为主键
是否为空
注释
MessageID
int
4
是
否
留言编号
PubTime
smalldatetime
8
否
是
留言时间
UserNumber
int
4
否
否
收信人
Text
nvarchar
100
否
否
留言内容
UsernumberF
int
4
否
否
留言人
回复留言表:
RetMessage
回复留言表用于保存对留言的回复内容。
列名
数据类型
长度
是否为主键
是否为空
注释
RetID
int
4
是
否
回复编号
RetTime
Smalldatetime
8
否
否
回复时间
MessageID
int
4
否
否
留言编号
UserNumber
int
4
否
否
用户账号
RetText
nvarchar
100
否
否
回复内容
3.2命名规则
数据库:
数据库以系统的名称或英文命名,这里用“Database”作为数据库名称。
数据表:
数据表以相关的英文名命名。
如Message表,UserTable表。
表字段:
表字段以相关的汉语拼音或英文名命名。
如:
UserName,PubTime等。
4详细设计
4.1登录页面(login.aspx)
用户必须使用用户名登录后才能进行留言或查看留言,没有注册的用户需先注册成功后,方可登录。
源代码如下:
publicpartialclassLogin:
{
protectedvoidPage_Load(objectsender,EventArgse)
{}
protectedvoidbtnLogin_Click(objectsender,EventArgse)
{
try
{
//创建连接数据库的对象
SqlConnectionconn=newSqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString);
conn.Open();//打开数据库连接
try
{
SqlCommandcmd=newSqlCommand("SELECT*FROMUserTableWhereUserNumber='"++"'andUserPwd='"++"'",conn);
//执行命令对象操作的查询操作,并将结果返回给DataReader对象。
SqlDataReaderdr=cmd.ExecuteReader();
//执行DataReader的Read方法,判断是否查询到记录
if(dr.Read())
{
//查询到,将用户名保持至Session对象,进入上次请求的页面。
Session["yhm"]=dr["UserName"].ToString();
Session["quanxian"]=dr["Limit"].ToString();
FormsAuthentication.RedirectFromLoginPage(txtUserID.Text,true);
}
else
{
//弹出窗体,告知错误
Response.Write("");
}
//释放DateReader对象,关闭数据库连接
dr.Close();
conn.Close();
}
catch
{
//弹出窗体,告知错误
Response.Write("");
}
}
catch
{
//弹出窗体,告知错误
Response.Write("");
}
}
protectedvoidbtnRegister_Click(objectsender,EventArgse)
{
Response.Redirect("Zhuce.aspx");
}
}
4.2注册页面
注册页面用于录入用户注册的信息,新用户必须进行注册后才能进行留言等相关操作。
源代码如下:
publicpartialclasszhuce:
{
protectedvoidPage_Load(objectsender,EventArgse)
{}
protectedvoidbtnReset_Click(objectsender,EventArgse)
{
txtUserName.Text="";
txtUserPwd.Text="";
txtUserPwdAgain.Text="";
txtUserName.Text="";
txtPhoneNumber.Text="";
txtEmail.Text="";
}
protectedvoidbtnZhuce_Click(objectsender,EventArgse)
{
if(!
=""&&txtUserPwd.Text!
=""&&!
="")
{
if(==
{
//创建连接数据库的对象
SqlConnectionconn=newSqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString);
conn.Open();//打开数据库连接
SqlCommandcmd=newSqlCommand("insertintoUserTable(UserName,UserPwd,Email,PhoneNumber)Values('"++"','"+
+"','"++"','"++"')",conn);
inti=cmd.ExecuteNonQuery();
if(i==1)
{
SqlCommandcmd1=newSqlCommand("selectMAX(UserNumber)fromUserTable",conn);
//执行命令对象操作的查询操作,并将结果返回给DataReader对象。
SqlDataReaderid=cmd1.ExecuteReader();
//执行DataReader的Read方法,判断是否查询到记录
if(id.Read())
{
Response.Write("");
}
}
else
{
Response.Write("");
}
conn.Close();
}
else
{
Response.Write("");
}
}
else
{
Response.Write("");
}
}
}
4.3母版页
publicpartialclassMasterPage:
{
protectedvoidPage_Load(objectsender,EventArgse)
{
lblUserName.Text=(String)Session["yhm"];//;
Stringright=(String)Session["quanxian"];
if(right!
=null)
{
if(right.Equals("0"))
{
try
{
TreeView1.Nodes[0].ChildNodes.RemoveAt(4);
}
catch
{}
}
}
else
{
Response.Redirect("Login.aspx");
}
}
}
4.4查询联系人页面
当用户忘记好友的账号时,可以通过该页面进行账号查询,此查询为模糊查询。
源代码如下:
publicpartialclassSearch:
{
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!
IsPostBack)
{
BindData();
}
}
//绑定数据
voidBindData()
{
SqlConnectionconn=newSqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString);
conn.Open();
stringsql="selectUserNumberas账号,UserNameas用户名fromUserTablewhereUserNamelike'%"++"%'";
SqlDataAdapterda=newSqlDataAdapter(sql,conn);
DataSetds=newDataSet();
da.Fill(ds);
GridView1.DataSource=ds.Tables[0].DefaultView;
GridView1.DataBind();
conn.Close();
}
protectedvoidButton2_Click(objectsender,EventArgse)
{
txtSearch.Text="";
}
protectedvoidbtnSearch_Click(objectsender,EventArgse)
{
SqlConnectionconn=newSqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString);
conn.Open();
stringsql="selectUserNumberas账号,UserNameas用户名fromUserTablewhereUserNamelike'%"++"%'";
SqlDataAdapterda=newSqlDataAdapter(sql,conn);
DataSetds=newDataSet();
da.Fill(ds);
if(ds.Tables[0].Rows.Count!
=0)
{
GridView1.DataSource=ds.Tables[0].DefaultView;
GridView1.DataBind();
}
else
{
Response.Write("");
GridView1.DataSource=ds.Tables[0].DefaultView;
GridView1.DataBind();
}
conn.Close();
}
protectedvoidGridView1_PageIndexChanging1(objectsender,GridViewPageEventArgse)
{
GridView1.PageIndex=e.NewPageIndex;
BindData();
}
}
4.5资料修改页面
用户可通过该页面修改自己的资料。
源代码如下:
publicpartialclassAlterInfo:
{
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!
IsPostBack)
{
BindData();
}
}
voidBindData()
{
SqlConnectionconn=newSqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString);
conn.Open();
stringno2=;
stringsql="selectUserName,Email,PhoneNumberfromUserTablewhereUserNumber='"+no2+"'";
SqlDataAdapterda=newSqlDataAdapter(sql,conn);
DataSetds=newDataSet();
da.Fill(ds);
GridView1.DataSource=ds.Tables[0].DefaultView;
GridView1.DataBind();
}
protectedvoidButton2_Click(objectsender,EventArgse)
{
txtUserName1.Text="";
txtEmail2.Text="";
txtTel1.Text="";
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
if(txtUserName1.Text!
="")
{
//创建连接数据库的对象
SqlConnectionconn=newSqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString);
conn.Open();//打开数据库连接
stringno2=;
stringsql="updateUserTablesetUserName='"++"',Email='"++"',PhoneNumber='"++"'whereUserNumber='"+no2+"'";
SqlCommandcmd=newSqlCommand(sql,conn);
inti=cmd.ExecuteNonQuery();
if(i==1)
{
Response.Write("");
}
else
{
Response.Write("");
}
conn.Close();
}
else
{
Response.Write("");
}
}
}
4.6密码修改页面
用户可通过该页面修改自己的密码。
但是输入的密码必须合法。
源代码如下:
publicpartialclassModifyPwd:
{
protectedvoidPage_Load(objectsender,EventArgse)
{}
protectedvoidbtnModifyPwd_Click(objectsender,EventArgse)
{
if(!
=""&&!
="")
{
if(==
{
//创建连接数据库的对象
SqlConnectionconn=newSqlConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString);
conn.Open();//打开数据库连接
stringno1=;
stringsqlCheckPwd="selectcount(*)fromUserTablewhereUserNumber='"+no1+"'andUserPwd='"++"'";
SqlCommandcmdCheckPwd=newSqlCommand(sqlCheckPwd,conn);
intj=(int)cmdCheckPwd.ExecuteScalar();
if(j==1)
{
stringsql="updateUserTablesetUserPwd='"++"'whereUserNumber='"+no1+"'";
SqlCommandcmd=newSqlCommand(sql,conn);
inti=cmd.ExecuteNonQuery();
if(i==1)
{
Response.Write("");
}
else
{
Response.Write("");
}
}
else
{
Response.Write("
copyright@ 2008-2022 冰点文档网站版权所有
经营许可证编号:鄂ICP备2022015515号-1