目录
一、设计目的 (1)
二、需求分析 (1)
三、模块分析及设计 (2)
四、数据库设计 (2)
系统概念结构设计 (2)
数据字典 (2)
系统E-R图 (3)
系统流程图 (4)
逻辑结构设计 (5)
五、制作过程及要点 (6)
类库建立 (6)
验证码 (6)
留言内容界面 (7)
留言页面 (7)
登录界面 (9)
注册页面 (12)
修改密码界面 (13)
管理员界面 (14)
设计总结 (15)
附录 (15)
一、设计目的
留言板管理系统主要是提供大众一个操作系统,便于网上交流,谈论。功能块的响应操作分别由对应的子模块实现。通过互联网把你想说的话及想问的事发表出去,方便大家交流。同时,留言板的后台通过一个简化的自动的信息管理系统,使网友留言管理工作系统化,规范化,自动化,从而达到提高网络作用和管理的目的。
本设计研究的留言板是一种电子便签管理系统,是用ASP和SQL Sever编写的网络应用程序,留言操作相对简单,在进入网站后,可看到留言内容。留言板提供完备的信息发布功能,在网络用户交流中有很大的作用。
而我们这个留言板仅仅是简单的留言和管理员对留言进行操作的工具,该留言板简单实用,而且具备了大多数留言板的基本功能。
科学技术在不断地提高,计算机网络技术也日渐成熟,器强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用,现在许多国外和国内的网站均实现了网上注册、网上查询、网上发表信息等一系列的网上信息服务。通过计算机网络实现了足不出户就可以了解各种信息、咨询问题、搜索资料等,有了这样的一个网络平台,节省了大量的人力物力。
二、需求分析
对于一个系统,我们要从其性能、功能、用户界面、安全性等反面考虑,系统必须完成的功能如下:
1.留言板管理系统前端的主要功能是:
(1)用户注册。
(2)用户登录。
(3)用户发表内容。
(4)用户修改密码。
(5)用户浏览留言内容。
2.留言板管理系统后台管理的主要功能:
(1)管理员登陆。
(2)管理员删除用户发帖信息。 3.留言板管理系统性能要求: (1)页面响应速度快。 (2)页面美观整洁。
三、 模块分析及设计
模块分析与设计是对一定范围内的不同功能或相同功能不同性能、不同规格的产品进行功能分析的基础上,划分并设计出一系列功能模块,通过模块的选择和组合构成不同的顾客定制的产品,以满足市场的不同需求。
在上节内容中,已对本系统的所需求的功能进行了设计,结合其功能,制作出本系统的功能模块图,如图所示:
四、数据库设计
系统概念结构设计 数据字典
数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成
留言板系统
普通用户 管理员
登
陆
修改密码
留 言 查看 留言
注册 用户 登 陆
删除 留言
果,数据字典是对系统所用到的所有表结构的描述。
login表基本信息
序号字段别名
1Uname用户名
2Upass密码
3Email邮箱
4Phone电话
5Addr地址
management表基本信息
序号字段别名
1Uname账号
2Upass密码
messages表基本信息
序号字段别名
1ID序号
2Uname用户名
3Title主题
4Content内容
5Times时间
系统E-R图
E-R图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型。
系统流程图
流程图是由一些图框和流程线组成的,其中图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。
逻辑结构设计
逻辑结构设计就是把概念结构设计阶段所设计好的基本E-R图转换为与SQL数据库所支持数据模型相符合的逻辑结构。
关系模型如下所示:
a)login表(用户名,密码,邮箱,电话,地址)
b)messages表(序号,用户名,主题,内容,时间)
c)management表(账号,密码)
五、制作过程及要点
类库建立
public class db
{
public db()
{
}
public static SqlConnection CreateConnection()
{
SqlConnection con = new SqlConnection(@"server=(Local);database=message;Integrated Security=True");
return con;
}
}
验证码
protected void Page_Load(object sender, EventArgs e)
{
(4));
Session["image"] = (4);
}
private string GenCode(int num)
{
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" };
string code = "";
Random rd = new Random();
for (int i = 0; i < num; i++)
{
code += source[(0, ];
}
return code;
}
private void GenImg(string code)
{
Bitmap myPalette = new Bitmap(60, 20);
Graphics gh = (myPalette);
Rectangle rc = new Rectangle(0, 0, 60, 20);
(new SolidBrush, rc);
(code, new Font("宋体", 16), new SolidBrush, rc);
, ();
();
}
留言内容界面
图(一)
打开网站后,首先浏览到留言内容(图一),当用户要留言的时候,则跳转到留言页面(图二)。
"留言"事件代码:
protected void Button3_Click(object sender, EventArgs e)
{
("");
}
留言页面
图(二)
在跳转到该页面之前,系统会检测用户是否登录,如果用户未登录,则直接跳转到用户登录页面(图三),如果用户登录,则可提交留言。在此页面,可统计注册会员的人数,用户名为用户登陆时,系统用session对象传递自动显示。
"留言"事件代码:
protected void Page_Load(object sender, EventArgs e)
{
try
{
= Session["Uname"].ToString();
SqlConnection con = ();
();
string strsql = "select count(*) from login";
SqlCommand cmd = new SqlCommand(strsql, con);
SqlDataReader rd = ();
while ())
{
= rd[0].ToString();
}
();
();
}
catch
{
("");
("");
}
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = ();
();
string strsql="insert into messages values('"+Label1 .Text +"','"+ +"','"+TextBox3 .Text +"','"+DateTime .Now .ToString ()+"')";
SqlCommand cmd =new SqlCommand (strsql ,con );
cmd .ExecuteNonQuery();
();
("");
Response .Redirect ("");
}
"取消"事件代码:
protected void Button2_Click(object sender, EventArgs e)
{
= "";
= "";
}
登录界面
图(三)
在登录界面,用户首先选择"角色","用户"则跳转到留言内容界面(图一),"管理员"则进入管理界面(图六)。在此页面,用户还可以注册用户、修改密码。"注册用户"则进入注册界面(图四),"修改密码"则进入修改密码界面(图五)。
"登录"事件代码:
protected void Page_Load(object sender, EventArgs e)
{
= "";
}
protected void Button1_Click(object sender, EventArgs e)
{
if == "")
{
= "用户名不能为空!
";
}
if == "")
{
+= "密码不能为空!
";
}
if == "")
{
+= "请输入验证码!
";
}
else
{
SqlConnection con = ();
();
if == "用户")
{
string strsql = "select Upass from login where Uname='" + + "'and Upass='" + + "'";
SqlCommand cmd = new SqlCommand(strsql, con);
DataSet ds = new DataSet();
SqlDataReader dr = ();
try
{
if ())
{
string aa = if (aa == (Session["image"])) {
Session["Uname"] = ("");
}
else
{
= "验证码错误,注意大小写!";
}
}
else
{
= "用户名或者密码错误!";
}
}
catch
{
= "输入的用户名不存在!";
}
();
}
else if == "管理员")
{
string strsql1 = "select Upass from management where Uname='"+ + "'and Upass='" + + "'";
SqlCommand cmd = new SqlCommand(strsql1,con);
DataSet ds = new DataSet();
SqlDataReader dr = ();
try
{
if
{
string aa = if (aa == (Session["image"])) {
Session["Uname"] = ("");
}
else
{
= "验证码错误,注意大小写!";
}
}
else
{
= "用户名或者密码错误!";
}
}
catch
{
= "输入的用户名不存在!";
}
(); } } }
注册页面
图(四)
用户注册成功后,将跳转到登录界面(图三)。
"注册"事件代码:
protected void Button1_Click(object sender, EventArgs e)
{
try
{
SqlConnection con = ();
();
SqlCommand cmd = ();
string strsql = ( "insert into login (Uname,Upass,Email,Phone,Addr) values('{0}','{1}','{2}','{3}','{4}')" , ,,,,;
= strsql;
();
("");
("");
();
}
catch
{
("");
} }
修改密码界面
图(五)
用户修改密码成功后,不在进行登录,直接进入留言板内容界面(图一)
"确认"事件:
protected void Button1_Click1(object sender, EventArgs e)
{
SqlConnection con = ();
SqlCommand cmd = ();
();
string strsql1 = "select Upass from login where Uname='" + + "'and Upass='" + + "'";
= strsql1;
DataSet ds = new DataSet();
SqlDataReader dr1 = ();
if ())
{
();
SqlCommand cmd2 = ();
string strsql = ("update login set Upass='" + + "' where Uname='" + + "'");
= strsql;
();
("");
("");
Session["Uname"] =
}
else
{ (""); } (); }
管理员界面
图(六)
在此界面,只授予管理员删除留言的权限。
设计总结
经过近一个星期的努力,终于设计出一个基本达到要求的设计。其功能比较完整,用户界面良好,但是也存在着一些缺陷:(1)仅授予管理员删除留言的权限(2)不能针对性的回复留言(3)留言内容仅支持一般汉字等等。
这一段时间的努力,最后的结果固重要,但更重要的是它让自己了解了设计的一般过程。在做一个项目的时候,首先是进行需求分析,既各种功能需求以及系统结构都要在需求分析中做出来。接下来做的就是逻辑结构设计,通过逻辑结构设计出数据库。然后就是详细设计,通过需求分析中对各种功能的描述,利用自己所学的知识编写出相应的功能模块界面,这是个比较繁琐的阶段,需要大量的编写和修改各部分代码,以确保系统整体的可运行性。最后就到了验收成果的阶段,通过系统的运行测试,了解系统的一些问题和不足,并做出一定的修改,最终得到了现在的成果。
这个学期的学习中,我终于体会到和SQL Server 2005功能的功能丰富,表达能力强,使用灵活方便,应用面广。随着社会的发展,人类需要处理的数据越来越多,对数据管理的要求也越来越重要。软件的发展也从面向程序发展成为面向数据。
附录
参考文献:
1、陈志泊主编《数据库原理及应用教程》人民邮电出版社
2、闫洪亮主编《程序设计》上海交通大学出版社