留言板系统的设计与实现.docx
《留言板系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《留言板系统的设计与实现.docx(22页珍藏版)》请在冰豆网上搜索。
留言板系统的设计与实现
一、设计目的1
二、需求分析1
三、模块分析及设计2
四、数据库设计2
4.1系统概念结构设计2
4.1.1数据字典2
4.1.2系统E-R图3
4.1.3系统流程图4
4.2逻辑结构设计5
五、制作过程及要点6
5.1类库建立6
5.2验证码6
5.3留言内容界面7
5.4留言页面7
5.5登录界面9
5.6注册页面12
5.7修改密码界面13
5.8管理员界面14
设计总结15
附录.........................................................15
一、设计目的
留言板管理系统主要是提供大众一个操作系统,便于网上交流,谈论。
功能块的响应操作分别由对应的子模块实现。
通过互联网把你想说的话及想问的事发表出去,方便大家交流。
同时,留言板的后台通过一个简化的自动的信息管理系统,使网友留言管理工作系统化,规范化,自动化,从而达到提高网络作用和管理的目的。
本设计研究的留言板是一种电子便签管理系统,是用ASP和SQLSever编写的网络应用程序,留言操作相对简单,在进入网站后,可看到留言内容。
留言板提供完备的信息发布功能,在网络用户交流中有很大的作用。
而我们这个留言板仅仅是简单的留言和管理员对留言进行操作的工具,该留言板简单实用,而且具备了大多数留言板的基本功能。
科学技术在不断地提高,计算机网络技术也日渐成熟,器强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用,现在许多国外和国内的网站均实现了网上注册、网上查询、网上发表信息等一系列的网上信息服务。
通过计算机网络实现了足不出户就可以了解各种信息、咨询问题、搜索资料等,有了这样的一个网络平台,节省了大量的人力物力。
二、需求分析
对于一个系统,我们要从其性能、功能、用户界面、安全性等反面考虑,系统必须完成的功能如下:
1.留言板管理系统前端的主要功能是:
(1)用户注册。
(2)用户登录。
(3)用户发表内容。
(4)用户修改密码。
(5)用户浏览留言内容。
2.留言板管理系统后台管理的主要功能:
(1)管理员登陆。
(2)管理员删除用户发帖信息。
3.留言板管理系统性能要求:
(1)页面响应速度快。
(2)页面美观整洁。
三、模块分析及设计
模块分析与设计是对一定范围内的不同功能或相同功能不同性能、不同规格的产品进行功能分析的基础上,划分并设计出一系列功能模块,通过模块的选择和组合构成不同的顾客定制的产品,以满足市场的不同需求。
在上节内容中,已对本系统的所需求的功能进行了设计,结合其功能,制作出本系统的功能模块图,如图所示:
四、数据库设计
4.1系统概念结构设计
4.1.1数据字典
数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果,数据字典是对系统所用到的所有表结构的描述。
login表基本信息
序号
字段
别名
1
Uname
用户名
2
Upass
密码
3
Email
邮箱
4
Phone
电话
5
Addr
地址
management表基本信息
账号
messages表基本信息
ID
Title
主题
Content
内容
Times
时间
4.1.2系统E-R图
E-R图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型。
4.1.3系统流程图
流程图是由一些图框和流程线组成的,其中图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。
4.2逻辑结构设计
逻辑结构设计就是把概念结构设计阶段所设计好的基本E-R图转换为与SQL数据库所支持数据模型相符合的逻辑结构。
关系模型如下所示:
a)login表(用户名,密码,邮箱,电话,地址)
b)messages表(序号,用户名,主题,内容,时间)
c)management表(账号,密码)
五、制作过程及要点
5.1类库建立
publicclassdb
{
publicdb()
}
publicstaticSqlConnectionCreateConnection()
SqlConnectioncon=newSqlConnection(@"server=(Local);database=message;IntegratedSecurity=True");
returncon;
5.2验证码
protectedvoidPage_Load(objectsender,EventArgse)
this.GenImg(this.GenCode(4));
Session["image"]=this.GenCode(4);
privatestringGenCode(intnum)
string[]source={"0","1","2","3","4","5","6","7","8","9","0","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
stringcode="";
Randomrd=newRandom();
for(inti=0;i{code+=source[rd.Next(0,source.Length)];}returncode;}privatevoidGenImg(stringcode){BitmapmyPalette=newBitmap(60,20);Graphicsgh=Graphics.FromImage(myPalette);Rectanglerc=newRectangle(0,0,60,20);gh.FillRectangle(newSolidBrush(Color.Blue),rc);gh.DrawString(code,newFont("宋体",16),newSolidBrush(Color.White),rc);myPalette.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);gh.Dispose();myPalette.Dispose();}5.3留言内容界面图(一)打开网站后,首先浏览到留言内容(图一),当用户要留言的时候,则跳转到留言页面(图二)。"留言"事件代码:protectedvoidButton3_Click(objectsender,EventArgse){Response.Redirect("messages.aspx");}5.4留言页面图(二)在跳转到该页面之前,系统会检测用户是否登录,如果用户未登录,则直接跳转到用户登录页面(图三),如果用户登录,则可提交留言。在此页面,可统计注册会员的人数,用户名为用户登陆时,系统用session对象传递自动显示。"留言"事件代码:protectedvoidPage_Load(objectsender,EventArgse){try{this.Label1.Text=Session["Uname"].ToString();SqlConnectioncon=db.CreateConnection();con.Open();stringstrsql="selectcount(*)fromlogin";SqlCommandcmd=newSqlCommand(strsql,con);SqlDataReaderrd=cmd.ExecuteReader();while(rd.Read()){this.Label2.Text=rd[0].ToString();}rd.Close();con.Close();}catch{Response.Write("");Response.Redirect("login.aspx");}}protectedvoidButton1_Click(objectsender,EventArgse){SqlConnectioncon=db.CreateConnection();con.Open();stringstrsql="insertintomessagesvalues('"+Label1.Text+"','"+TextBox2.Text+"','"+TextBox3.Text+"','"+DateTime.Now.ToString()+"')";SqlCommandcmd=newSqlCommand(strsql,con);cmd.ExecuteNonQuery();con.Close();Response.Write("");Response.Redirect("messageout.aspx");}"取消"事件代码:protectedvoidButton2_Click(objectsender,EventArgse){TextBox2.Text="";TextBox3.Text="";}5.5登录界面图(三)在登录界面,用户首先选择"角色","用户"则跳转到留言内容界面(图一),"管理员"则进入管理界面(图六)。在此页面,用户还可以注册用户、修改密码。"注册用户"则进入注册界面(图四),"修改密码"则进入修改密码界面(图五)。"登录"事件代码:protectedvoidPage_Load(objectsender,EventArgse){this.ImageButton1.ImageUrl="image.aspx";}protectedvoidButton1_Click(objectsender,EventArgse){if(this.TextBox1.Text==""){Label1.Text="用户名不能为空!";}if(this.TextBox2.Text==""){Label1.Text+="密码不能为空!";}if(this.TextBox3.Text==""){Label1.Text+="请输入验证码!";}else{SqlConnectioncon=db.CreateConnection();con.Open();if(RadioButtonList1.SelectedItem.Value.ToString().Trim()=="用户"){stringstrsql="selectUpassfromloginwhereUname='"+this.TextBox1.Text+"'andUpass='"+this.TextBox2.Text+"'";SqlCommandcmd=newSqlCommand(strsql,con);DataSetds=newDataSet();SqlDataReaderdr=cmd.ExecuteReader();try{if(dr.Read()){stringaa=this.TextBox3.Text.ToString();if(aa==Convert.ToString(Session["image"])){Session["Uname"]=this.TextBox1.Text.ToString();Response.Redirect("messageout.aspx");}else{Label1.Text="验证码错误,注意大小写!";}}else{Label1.Text="用户名或者密码错误!";}}catch{Label1.Text="输入的用户名不存在!";}con.Close();}elseif(RadioButtonList1.SelectedItem.Value.ToString().Trim()=="管理员"){stringstrsql1="selectUpassfrommanagementwhereUname='"+this.TextBox1.Text+"'andUpass='"+this.TextBox2.Text+"'";SqlCommandcmd=newSqlCommand(strsql1,con);DataSetds=newDataSet();SqlDataReaderdr=cmd.ExecuteReader();try{if(dr.HasRows){stringaa=this.TextBox3.Text.ToString();if(aa==Convert.ToString(Session["image"])){Session["Uname"]=this.TextBox1.Text.ToString();Response.Redirect("management.aspx");}else{Label1.Text="验证码错误,注意大小写!";}}else{Label1.Text="用户名或者密码错误!";}}catch{Label1.Text="输入的用户名不存在!";}con.Close();}}}5.6注册页面图(四)用户注册成功后,将跳转到登录界面(图三)。"注册"事件代码:protectedvoidButton1_Click(objectsender,EventArgse){try{SqlConnectioncon=db.CreateConnection();con.Open();SqlCommandcmd=con.CreateCommand();stringstrsql=string.Format("insertintologin(Uname,Upass,Email,Phone,Addr)values('{0}','{1}','{2}','{3}','{4}')",TextBox1.Text,TextBox2.Text,TextBox4.Text,TextBox5.Text,TextBox6.Text);cmd.CommandText=strsql;cmd.ExecuteNonQuery();Response.Write("");Response.Redirect("login.aspx");con.Close();}catch{Response.Write("");}}5.7修改密码界面图(五)用户修改密码成功后,不在进行登录,直接进入留言板内容界面(图一)"确认"事件:protectedvoidButton1_Click1(objectsender,EventArgse){SqlConnectioncon=db.CreateConnection();SqlCommandcmd=con.CreateCommand();con.Open();stringstrsql1="selectUpassfromloginwhereUname='"+this.TextBox1.Text+"'andUpass='"+this.TextBox4.Text+"'";cmd.CommandText=strsql1;DataSetds=newDataSet();SqlDataReaderdr1=cmd.ExecuteReader();if(dr1.Read()){dr1.Close();SqlCommandcmd2=con.CreateCommand();stringstrsql=string.Format("updateloginsetUpass='"+TextBox2.Text+"'whereUname='"+TextBox1.Text+"'");cmd2.CommandText=strsql;cmd2.ExecuteNonQuery();Response.Write("");Response.Redirect("messageout.aspx");Session["Uname"]=this.TextBox1.Text.ToString();}else{Response.Write("");}con.Close();}5.8管理员界面图(六)在此界面,只授予管理员删除留言的权限。设计总结经过近一个星期的努力,终于设计出一个基本达到要求的设计。其功能比较完整,用户界面良好,但是也存在着一些缺陷:(1)仅授予管理员删除留言的权限(2)不能针对性的回复留言(3)留言内容仅支持一般汉字等等。这一段时间的努力,最后的结果固重要,但更重要的是它让自己了解了设计的一般过程。在做一个项目的时候,首先是进行需求分析,既各种功能需求以及系统结构都要在需求分析中做出来。接下来做的就是逻辑结构设计,通过逻辑结构设计出数据库。然后就是详细设计,通过需求分析中对各种功能的描述,利用自己所学的知识编写出相应的功能模块界面,这是个比较繁琐的阶段,需要大量的编写和修改各部分代码,以确保系统整体的可运行性。最后就到了验收成果的阶段,通过系统的运行测试,了解系统的一些问题和不足,并做出一定的修改,最终得到了现在的成果。这个学期的学习中,我终于体会到Asp.Net和SQLServer2005功能的功能丰富,表达能力强,使用灵活方便,应用面广。随着社会的发展,人类需要处理的数据越来越多,对数据管理的要求也越来越重要。软件的发展也从面向程序发展成为面向数据。附录参考文献:1、陈志泊主编《数据库原理及应用教程》人民邮电出版社2、闫洪亮主编《ASP.NET程序设计》上海交通大学出版社
code+=source[rd.Next(0,source.Length)];
returncode;
privatevoidGenImg(stringcode)
BitmapmyPalette=newBitmap(60,20);
Graphicsgh=Graphics.FromImage(myPalette);
Rectanglerc=newRectangle(0,0,60,20);
gh.FillRectangle(newSolidBrush(Color.Blue),rc);
gh.DrawString(code,newFont("宋体",16),newSolidBrush(Color.White),rc);
myPalette.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
gh.Dispose();
myPalette.Dispose();
5.3留言内容界面
图
(一)
打开网站后,首先浏览到留言内容(图一),当用户要留言的时候,则跳转到留言页面(图二)。
"留言"事件代码:
protectedvoidButton3_Click(objectsender,EventArgse)
Response.Redirect("messages.aspx");
5.4留言页面
(二)
在跳转到该页面之前,系统会检测用户是否登录,如果用户未登录,则直接跳转到用户登录页面(图三),如果用户登录,则可提交留言。
在此页面,可统计注册会员的人数,用户名为用户登陆时,系统用session对象传递自动显示。
try
this.Label1.Text=Session["Uname"].ToString();
SqlConnectioncon=db.CreateConnection();
con.Open();
stringstrsql="selectcount(*)fromlogin";
SqlCommandcmd=newSqlCommand(strsql,con);
SqlDataReaderrd=cmd.ExecuteReader();
while(rd.Read())
this.Label2.Text=rd[0].ToString();
rd.Close();
con.Close();
catch
Response.Write("");
Response.Redirect("login.aspx");
protectedvoidButton1_Click(objectsender,EventArgse)
stringstrsql="insertintomessagesvalues('"+Label1.Text+"','"+TextBox2.Text+"','"+TextBox3.Text+"','"+DateTime.Now.ToString()+"')";
cmd.ExecuteNonQuery();
Response.Redirect("messageout.aspx");
"取消"事件代码:
protectedvoidButton2_Click(objectsender,EventArgse)
TextBox2.Text="";
TextBox3.Text="";
5.5登录界面
图(三)
在登录界面,用户首先选择"角色","用户"则跳转到留言内容界面(图一),"管理员"则进入管理界面(图六)。
在此页面,用户还可以注册用户、修改密码。
"注册用户"则进入注册界面(图四),"修改密码"则进入修改密码界面(图五)。
"登录"事件代码:
this.ImageButton1.ImageUrl="image.aspx";
if(this.TextBox1.Text=="")
Label1.Text="用户名不能为空!
";
if(this.TextBox2.Text=="")
Label1.Text+="密码不能为空!
if(this.TextBox3.Text=="")
Label1.Text+="请输入验证码!
else
if(RadioButtonList1.SelectedItem.Value.ToString().Trim()=="用户")
stringstrsql="selectUpassfromloginwhereUname='"+this.TextBox1.Text+"'andUpass='"+this.TextBox2.Text+"'";
DataSetds=newDataSet();
SqlDataReaderdr=cmd.ExecuteReader();
if(dr.Read())
stringaa=this.TextBox3.Text.ToString();
if(aa==Convert.ToString(Session["image"]))
Session["Uname"]=this.TextBox1.Text.ToString();
Label1.Text="验证码错误,注意大小写!
Label1.Text="用户名或者密码错误!
Label1.Text="输入的用户名不存在!
elseif(RadioButtonList1.SelectedItem.Value.ToString().Trim()=="管理员")
stringstrsql1="selectUpassfrommanagementwhereUname='"+this.TextBox1.Text+"'andUpass='"+this.TextBox2.Text+"'";
SqlCommandcmd=newSqlCommand(strsql1,con);
if(dr.HasRows)
Response.Redirect("management.aspx");
con.Close();}}}
5.6注册页面
图(四)
用户注册成功后,将跳转到登录界面(图三)。
"注册"事件代码:
SqlCommandcmd=con.CreateCommand();
stringstrsql=string.Format("insertintologin(Uname,Upass,Email,Phone,Addr)values('{0}','{1}','{2}','{3}','{4}')",TextBox1.Text,TextBox2.Text,TextBox4.Text,TextBox5.Text,TextBox6.Text);
cmd.CommandText=strsql;
}}
5.7修改密码界面
图(五)
用户修改密码成功后,不在进行登录,直接进入留言板内容界面(图一)
"确认"事件:
protectedvoidButton1_Click1(objectsender,EventArgse)
stringstrsql1="selectUpassfromloginwhereUname='"+this.TextBox1.Text+"'andUpass='"+this.TextBox4.Text+"'";
cmd.CommandText=strsql1;
SqlDataReaderdr1=cmd.ExecuteReader();
if(dr1.Read())
dr1.Close();
SqlCommandcmd2=con.CreateCommand();
stringstrsql=string.Format("updateloginsetUpass='"+TextBox2.Text+"'whereUname='"+TextBox1.Text+"'");
cmd2.CommandText=strsql;
cmd2.ExecuteNonQuery();
{Response.Write("");}
con.Close();}
5.8管理员界面
图(六)
在此界面,只授予管理员删除留言的权限。
设计总结
经过近一个星期的努力,终于设计出一个基本达到要求的设计。
其功能比较完整,用户界面良好,但是也存在着一些缺陷:
(1)仅授予管理员删除留言的权限
(2)不能针对性的回复留言(3)留言内容仅支持一般汉字等等。
这一段时间的努力,最后的结果固重要,但更重要的是它让自己了解了设计的一般过程。
在做一个项目的时候,首先是进行需求分析,既各种功能需求以及系统结构都要在需求分析中做出来。
接下来做的就是逻辑结构设计,通过逻辑结构设计出数据库。
然后就是详细设计,通过需求分析中对各种功能的描述,利用自己所学的知识编写出相应的功能模块界面,这是个比较繁琐的阶段,需要大量的编写和修改各部分代码,以确保系统整体的可运行性。
最后就到了验收成果的阶段,通过系统的运行测试,了解系统的一些问题和不足,并做出一定的修改,最终得到了现在的成果。
这个学期的学习中,我终于体会到Asp.Net和SQLServer2005功能的功能丰富,表达能力强,使用灵活方便,应用面广。
随着社会的发展,人类需要处理的数据越来越多,对数据管理的要求也越来越重要。
软件的发展也从面向程序发展成为面向数据。
附录
参考文献:
1、陈志泊主编《数据库原理及应用教程》人民邮电出版社
2、闫洪亮主编《ASP.NET程序设计》上海交通大学出版社
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1