留言板报告
选题名称: 留言板
摘要:
随着Internet 技术的发展,“网上留言板系统”已成为网络上不可缺少的交流方式之一。“网上留言板系统”是网上的一种信息服务系统,是一种简洁而实用的在线交流平台。随着网络热潮的发展,网站的重要性也越来越重要。而作为网站中交流的中心,留言板起到了至关重要的作用。它有助于版主收集网站的反馈信息,也是客户通过网络收集信息的有力工具。ASP.NET 是一种建立动态Web 应用的技术,它更快捷、更安全、更稳定。利用ASP.NET 技术开发的企业网上论坛系统,实现了网上论坛的动态管理,使得对信息的管理更加及时、高效,方便用户及时上网浏览有用信息,发表自己对相关问题的看法,也使管理更有效、快捷。本系统支持注册,留言,删除留言内容,回复留言等功能。本系统是用VS2010,SQL2008,ASP.NET 开发的。
关键词:网上留言板系统;ASP.NET ;数据库;
目 录
1 引 言........................................................................................................................ 1
1.1项目背景 ··································································································································· 1
1.2课程目的 ··································································································································· 1
1.3课程任务 ··································································································································· 1
2可行性分析 ................................................................................................................ 1
2.1系统目标 ··································································································································· 1
2.2用户需求 ··································································································································· 2
2.3性能可行性分析 ······················································································································ 2
2.4运行可行性分析 ······················································································································ 2
3 需求分析 ................................................................................................................... 2
3.1功能需求分析 ·························································································································· 3
3.2 性能需求分析 ························································································································· 3
3.3数据需求分析 ·························································································································· 4
4软件的设计................................................................................................................. 5
4.1软件的结构设计 ······················································································································ 5
4.2软件的数据库设计 ·················································································································· 6
4.3软件的接口设计 ······················································································································ 9
4.4软件的详细设计 ······················································································································ 9
5软件的实现............................................................................................................... 11
5.1界面设计 ································································································································· 11
6 主要代码.................................................................................................................. 20
6.1 数据源链接 ··························································································································· 21
6.2 用户登录································································································································ 21
6.3普通用户界面 ························································································································ 22
6.4 管理员界面 ··························································································································· 26
6.5 注册界面································································································································ 29
7 软件的测试............................................................................................................ 31
7.1集成测试 ································································································································· 31 总 结 ........................................................................................... 错误!未定义书签。 致 谢............................................................................................ 错误!未定义书签。
参考文献...................................................................................................................... 33
1 引 言
1.1项目背景
随着网络的应用越来越广泛,国内外不少的大中型企业都不约而同地意识到利用网络传递信息可以很大程度上提高办事效率。搭建一个企业与用户的在线交流平台显得尤为重要。“网上留言板系统”是网上的一种信息服务系统,是一种电子便签管理系统,是一种简洁而实用的在线交流平台,网站访问者可通过留言板与企业进行交流。该系统支持注册,留言,删除留言内容,回复留言等功能。在网络用户交流中起很大的作用,每个人都可以将他的信息保留在上面,以供他人观看。留言板供其他网友给自己留言,或者临时存放自己的感受。通过留言板系统令信息的发布可以面向群组和个人;来自不通部门、地区的人员可以一起讨论感兴趣的话题,而管理员可以管理和答复其他人的话题。ASP.NET 是微软公司的ASP 和.NET Framework 这两项核心技术的结合,功能强大、技术非常灵活,适合于编写动态Web 页面。因此,本文选择ASP.NET 技术来构建论坛系统,采用SQLServer 2000 数据库管理系统作为数据库服务器,客户端通过IE 或其它WWW 浏览器来使用系统所提供的所有功能。
1.2课程目的
随着互联网的发展和网络应用技术的成熟,实现通信网络化,已成为浏览者与版主之间,与站长之间通信的必然趋势,而留言板作为网站重要的一部分,是一个大家交流的平台。留言板是一种最为简单的BBS 应用,它在网络用户交流中起着很大的作用。
1.3课程任务
留言板:明确所要开发的软件应具有的功能、性能和界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。
2可行性分析
2.1系统目标
1
完成一个留言板系统,要实现以下功能:新用户注册功能、会员登录功能、会员发表留言功能、会员查看留言并回复其他留言者功能、管理员登录功能、管理员回复留言功能、管理员删除留言功能和管理员退出功能。
2.2用户需求
对于留言板来说,要实现新用户的注册并发表留言功能,用户同时能够浏览其他留言者的留言,并能对自己感兴趣的留言进行回复,并能够查看到留言的日期和时间,以便能够及时了解留言动态。
2.3性能可行性分析
(1)稳定性:软件应具备长期持续工作的能力。
(2)安全性:有良好的用户身份认证体制和灵活的密码更改模块。
(3)实用性:用户界面做到直观、友好。
(4)可靠性:采用良好的操作软件和数据库,确保数据的一致性和完整性,并使软件免受病毒感染。
2.4运行可行性分析
2.4.1用户界面
要求界面适当美观,幽雅,通用性比较强。
2.4.2软件接口
软件中的接口,是针对不同模块之间程序运行的连接,要起到之间信息的匹配作用,我们力求各个模块之间能够相互匹配。
2.4.3故障处理
出错处理对策:由于数据在数据库中已经有备份, 故在系统出错后可以依靠数据库的恢复功能, 并且依靠日志文件使系统再启动, 就算系统崩溃用户数据也不会丢失或遭到破坏. 但有可能占用更多的数据存储空间, 权衡措施由用户来决定。
故障处理能力要求很高,系统要有很强的监控能力,一旦系统出现一点故障能马上发出警告信号,并在必要时自动启动备用系统。同时能够设置数据库镜像,定时备份数据和日志,在出现严重故障时能够及时恢复。
3 需求分析
2
需求分析的任务就是解决“做什么”的问题,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求。需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础。在分析阶段,设计者要和用户结合供应商,共同收集和分析数据管理的内容及用户对处理的要求。在这一阶段要收集基本数据、分析数据结构及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
3.1功能需求分析
针对留言板系统,分别对用户和留言板管理员进行详细的调研和分析,总结出如下的需求信息。
(1)新用户注册功能:对于新用户来说要留言就必须先注册成为会员,才能登录留言板系统发表自己的留言。
(2)会员登录功能:当用户注册成功后,即成为会员,可以通过登录功能进入留言板系统发表自己的留言。
(3)会员发表留言功能:系统主要功能之一,会员用户登录后可以发表自己的留言。
(4)会员回复留言功能:系统主要功能之一,会员登录后可以看到其他会员的留言,会员可以对自己感兴趣的话题对其他会员的留言进行回复。
(5)管理员登录功能:管理员登录后可以对会员的留言进行管理。
(6)管理员回复留言功能:管理员也可以对会员的留言进行回复。
(7)管理员删除留言功能:管理员在管理会员的留言时可以对一些不良留言或有攻击性的留言进行删除。
3.2 性能需求分析
(1)系统的开发性和可扩充性
留言板系统在开发过程中,应该充分考虑以后的可扩充性。例如,用户留言的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开发性来完成,即系统应该是一个开发系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。
(2)系统的易用性和易维护性
3
留言板系统是直接面向使用人员的,而使用人员往往对计算机并不非常熟悉,这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面。
(3)系统的稳定性和可靠性
系统应具备长期持续工作的能力,有良好的用户身份认证体制,采用良好的操作软件和数据库,确保数据的一致性和完整性。
3.3数据需求分析
3.3.1数据流程图
数据流程图(DFD )是一种描述数据流和加工的图形表示。数据流图是逻辑系统的图形表示,此外,设计数据流图只需考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体地实现这些功能,所以它也是软件设计的很好的出发点。留言板系统主要是为了对会员留言进行管理。
DFD 可以形象地描述事务处理与所需数据的关联,便于用结构比系统分析方法,自顶向下,逐层分解,步步细化。数据流图如下:
图3.1 总数据流图 3.3.2数据字典
数据字典的作用是在软件分析和设计的过程中给人提供关于数据的描述信息。在数据字典中建立的一组严密一致的定义很有助于改进分析员和用户之间的通信,因此将消除许多可能的误解。数据字典是关于数据的信息集合,也就是对数据流图中包含的所有元素定义的集合。一般说来,数据字典应该由下列四类元素构成:数据元素,数据流,数据存储和数据处理。
4
经过上述系统功能分析和需求总结,设计如下面所示的数据项和数据结构。
(1)Admin表
(2)Guest 表
(3)Login 表
4软件的设计
经过数据库需求分析阶段的工作,系统必须“做什么”已经清楚了,现在是决定“怎么做”的时候。软件设计又称为概要设计或初步设计。概要设计阶段主要任务和目标是根据需求分析的结果,包括一般联系实体,画出对应的ER 图。对于本系统,首先要对它的各功能模进行分析,然后再把它的功能结构图画出来,便是设计和优化。
4.1软件的结构设计
“留言板系统”是网上的一种信息服务系统,是一种电子便签管理系统,是一种简洁而实用的在线交流平台,网站访问者可通过留言板与企业进行交流。该系统支持注册,留言,删除留言内容,回复留言等功能。本留言板系统主要完成的功能有:
5
4.1.1注册模块
新用户首先必须注册成为会员,才能进行留言和回复留言。
4.1.2会员模块
(1)会员登录:可以通过登录功能进入留言板系统发表自己的留言。
(2)会员发表留言:会员用户登录后可以发表自己的留言。
(3)会员回复留言:会员登录后可以看到其他会员的留言,会员可以对自 己感兴趣的话题对其他会员的留言进行回复。
4.1.3管理员模块
(1)管理员登录:管理员登录后才能对会员的留言进行管理。
(2)管理员回复留言:管理员也可以对会员的留言进行回复。
(3)管理员删除留言:管理员删除会员的留言。
根据上述的软件功能分析,可以得出如图4.1所示的软件功能模块图。
图4.1 软件功能模块划分 4.2软件的数据库设计
4.2.1数据库逻辑设计
根据上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系。本系统的主要E-R 图如下图所示。
6
(a) 用户
(b) 管理员
(c) 留言板
图4.2 各个实体的局部ER 模型
全局ER 模型,如图4.3所示
(a)
用户
(b) 管理员
图4.3 全局ER 模型
4.2.2数据库物理设计
7
现在可以将上面的数据库逻辑结构转化为某种数据库软件所支持的实际数
据模型,也就是数据库的物理结构。从软件的稳定性方面考虑,本软件使用SQL Server 2008数据库软件。结合需求分析中的E-R 图,设计了各数据表。
(1)数据库整体介绍:留言板数据库总共有3张表,具体如下表:
表4-1数据库总表
(2)数据库各个表的介绍:
Admin 表存入的是后台管理员的用户名和密码,详细设计如下表4-2所示:
表4-2 Admin表
Guest表用来存放用户的信息和留言,详细设计如下表4-3所示:
表4-3 Guest 表
Login 表是用来注册会员信息,详细设计如下表4-4所示:
表4-4 Login 表
4.3软件的接口设计
4.3.1外部接口
1、用户界面
在用户界面部分,根据需求分析的结果,用户需要一个友善、简洁的界面。使用Microsoft Visual Studio 2010和C#编程,提供的可视化控件,编写基于Windows 风格的用户界面,简单、易学、易用。 2、软件接口
使用提供的SQL Server专用接口。 3、硬件接口
在输入方面,用键盘,鼠标进行输入。 在输出方面,主要有浏览器端的显示器。
4.3.2内部接口
内部接口方面,各模块之间采用函数调用、参数传递、返回值的方式进行信息和数据的传递。
4.4软件的详细设计
4.4.1概述
为了提高软件的质量, 延长软件的生存期,软件的可测试性, 可维护性是重要保障. 软件的可测试性,可维护性与程序的易读性有很大关系。详细设计的目标不仅是逻辑上正确地实现每个模块的功能,还应使设计出的处理过程清晰易读。 结构化程序设计是实现该目标的关键技术之一,它指导人们用良好的思想方法开发易于理解, 易于验证的程序。
详细设计阶段的根本目标是确定怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。
4.4.2 B/S结构实现系统功能
本系统利用Browser/Server(B/S)结构,实现留言板的具体功能。这种系
统的优势在于系统简单、功能强大、扩展能力良好以及能够方便的跨地狱操作等性能。
B/S (Browser/Server)结构即浏览器和服务器结构。它是随着Internet 技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW 浏览器来实现,极少部分事务逻辑在前端(Browser )实现,但是主要事务逻辑在服务器端(Server )实现,形成所谓三层3-tier 结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO )。
以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。特别是在JA V A 这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。
4.4.3系统程序流程图
(1)前台系统结构
用户前台操作主要完成用户登录、浏览留言信息,其结构如图4.4所示。
图4.4 用户前台操作结构图
(2)后台系统结构
管理员后台操作主要完成管理员登录、回复留言信息、删除留言信息等,
其结构如图4.5所示。
图4.5 用户后台操作结构图
5软件的实现
详细设计是软件开发时期的第三个阶段,也是软件设计的第二步。在概要设计已经确定了软件软件的总体结构,给予了软件中各个组成模块的功能和模块建的联系。详细设计主要是考虑“怎样实现”这个软件软件,给出各个模块的详细过程性描述。因此,软件的设计和实现如下。
5.1界面设计
5.1.1用户界面设计
运行系统,首先显示登录页面。如图5.1所示。
图5.1 用户登录页面
在图中输入用户账号、密码,然后点击“登录”按钮。
图5.2 填写信息页面
点击“登录”按钮后会跳出如图5.3的提示框,点击“确定”后登录成功。
图5.3 登录成功提示
输入用户账号、密码,进入系统首页,如图5.4所示。从首页可以看出,该系统具有查看用户留言、用户留言、回复留言、清除留言和注销用户等功能。
图5.4用户操作首页
若用户还未注册,则单击登录页面的“现在就注册”按钮。显示如图5.5所示。
图5.5用户注册页面
如需注册则填入个人信息,如下图5.6所示。
图5.6 填写注册信息页面
若用户注册过程中未输入邮箱号、密码、姓名等项时,系统会提示*必须填写,若有邮箱格式不正确时也会给出错误提示,如下图5.7所示。
图5.7错误提示
下图所示中的密码及确认密码一定要相同,否则提示出错信息, 如下图5.8
所示。
图5.8 密码不一致出错页面
正确注册完成后,点击“同意,并注册”按钮后页面将跳转到登录页面,然后登录。如果不同意注册,那么就点击“不同意,离开”来退出页面,同样跳转到登录页面。
当用户在添加留言内容时如发现自己的内容有错误或不想留言时可以使用
“清除留言”按钮,在点击“清除留言”按钮后,留言内容被清除,如图5.9所示:
图5.9清除留言界面
如果想留言就写留言内容,点击“提交”后就会提示留言成功。如图5.10所示:
图5.10留言界面
提示“留言成功”,点击“确定”按钮,如图5.11所示:
图5.11提示界面
提示“留言成功后”,在留言板中成功留了言“haha ”,如图5.12所示:
图5.12留言内容界面
如果会员对其他会员的留言有兴趣或有共同话题时,可以点击“回复”按钮进行回复,如图5.13所示:
图5.13会员留言内容
在“留言内容”中回复想说的内容,然后点击“提交”按钮。如图5.14所示:
图5.14回复留言界面
点击“回复”成功后,就出现如图5.15所示的信息:
图5.15回复留言成功界面
最后,注销用户,安全从本系统退出。如图5.15所示。
5.15注销界面
5.1.2管理员界面设计
运行系统,首先显示登录页面。在登录页面输入管理员的账号、密码,则
跳转到管理员的主界面。如图5.16所示。
图5. 16管理员登录首页
进入管理员系统首页,可以看到管理员有对留言板管理的几个功能,如回复留言,删除留言等。如图5.17所示
图5.17 管理员系统首页
管理员如果对会员的留言有兴趣或有共同话题时,可以点击“回复”按钮进行回复,如图5.18所示:
图5.18回复界面
在“留言内容”中回复想说的内容,然后点击“提交”按钮。如图5.19所示:
图5.19回复内容界面
点击“回复”成功后,就出现如图5.20所示的信息。
图5.20留言板回复界面
管理员还可以删除会员的留言内容,点击“删除”按钮,跳出是否成功删除
的提示,如图5.21所示的提示框:
图5.21删除界面
点击“确定”按钮就成功删除了会员yangli 对wanglinghui 的留言回复。如图5.22所示:
图5.22回复成功界面
最后,注销用户,安全从本系统退出。如图5.23所示。
图5.33 注销用户
6 主要代码
6.1 数据源链接
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
///
/// DB 的Ì?摘a 要°a说¦Ì明¡Â
///
public class DB
{
public DB()
{
}
public static SqlConnection createCon()
{
string conString =
System.Configuration.ConfigurationManager.AppSettings["conStr"];
SqlConnection conn = new SqlConnection(conString);
if (conn.State.Equals(ConnectionState.Closed))
{
conn.Open();
}
return conn;
}
}
6.2 用户登录
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class login : System.Web.UI.Page
{
protected void ImageButton1_Click(object sender, ImageClickEventArgs e) {
SqlConnection conn = DB.createCon();
SqlCommand cmd = new SqlCommand();
string md5pass =
FormsAuthentication.HashPasswordForStoringInConfigFile(this.txtPwd.Text, "MD5");
cmd.CommandText = "select count(*) from login where Name='" + this.txtUserName.Text + "' and Pass='" + md5pass + "'";
cmd.Connection = conn;
if (Convert.ToInt32(cmd.ExecuteScalar()) > 0)
{
if (this.txtUserName.Text == "admin")
{
Session["admin"] = "admin";
Response.Write("");
}
else
{
Session["username"] = this.txtUserName.Text;
Response.Write("");
}
}
else
{
Response.Write("");
}
}
protected void ImageButton2_Click(object sender, ImageClickEventArgs e) {
this.txtUserName.Text = "";
this.txtPwd.Text = "";
}
}
6.3普通用户界面
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
public partial class Default2 : System.Web.UI.Page
{
string curPage;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.lblPageCur.Text = "1";
dataGridBind();
this.lblUserName.Text = Session["username"].ToString(); }
}
public void dataGridBind()
{
curPage = this.lblPageCur.Text;
SqlConnection conn = DB.createCon();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from guesttest order by postTime desc"; cmd.Connection = conn;
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
DataSet ds = new DataSet();
sda.Fill(ds, "guesttest");
PagedDataSource pds = new PagedDataSource();
pds.AllowPaging = true;
pds.PageSize = 5;
pds.DataSource = ds.Tables["guesttest"].DefaultView;
pds.CurrentPageIndex = Convert.ToInt32(curPage) - 1;
this.lblPageTotal.Text = pds.PageCount.ToString();
this.Button1.Enabled = true;
this.Button2.Enabled = true;
if (curPage == "1")
{
this.Button1.Enabled = false;
}
if (curPage == pds.PageCount.ToString())
{
this.Button2.Enabled = false;
}
this.DataList1.DataSource = pds;
this.DataList1.DataBind();
cmd.CommandText = "select count(*) from guesttest";
this.lblMesTotal.Text = Convert.ToString(cmd.ExecuteScalar()); if (!IsPostBack)
{
int a = pds.PageCount;
for (int i = 1; i
{
this.DropDownList1.Items.Add(i.ToString());
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
this.lblPageCur.Text =
Convert.ToString(Convert.ToInt32(this.lblPageCur.Text) - 1);
dataGridBind();
}
protected void Button2_Click(object sender, EventArgs e)
{
this.lblPageCur.Text =
Convert.ToString(Convert.ToInt32(this.lblPageCur.Text) + 1);
dataGridBind();
}
protected void Button3_Click(object sender, EventArgs e)
{
this.lblPageCur.Text = "1";
dataGridBind();
}
protected void Button4_Click(object sender, EventArgs e)
{
this.lblPageCur.Text = this.lblPageTotal.Text;
dataGridBind();
}
protected void Button5_Click(object sender, EventArgs e)
{
this.lblPageCur.Text = this.DropDownList1.SelectedValue;
dataGridBind();
}
protected void Button6_Click(object sender, EventArgs e)
{
//string username = this.txtUserName.Text;
string username = Session["username"].ToString();
string content = this.txtContent.Text;
string posttime = DateTime.Now.ToString();
SqlConnection conn = DB.createCon();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "insert into guesttest(username,content,postTime) values('" + username + "','" + content + "','" + posttime + "')";
if (cmd.ExecuteNonQuery() > 0)
{
Response.Write("");
}
else
{
Response.Write("");
}
}
protected void DataList1_ItemCommand(object source,
DataListCommandEventArgs e)
{
if (e.CommandName == "Reply")
{
int id = e.Item.ItemIndex;
string name =
((Label)DataList1.Items[id].FindControl("Label1")).Text.Trim();
string replyContent = "回? 复¡ä " + name + " :êo";
txtContent.Text = replyContent;
txtContent.Focus();
}
}
protected void Button7_Click(object sender, EventArgs e)
{
this.txtContent.Text = "";
txtContent.Focus();
}
protected void btnExit_Click(object sender, EventArgs e)
{
Session.RemoveAll();
Response.Redirect("login.aspx");
}
}
6.4 管理员界面
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
public partial class Default4 : System.Web.UI.Page
{
string curPage;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.lblPageCur.Text = "1";
dataGridBind();
this.lblUserName.Text = Session["admin"].ToString(); }
}
public void dataGridBind()
{
curPage = this.lblPageCur.Text;
SqlConnection conn = DB.createCon();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from guesttest order by postTime desc"; cmd.Connection = conn;
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cmd;
DataSet ds = new DataSet();
sda.Fill(ds, "guesttest");
PagedDataSource pds = new PagedDataSource();
pds.AllowPaging = true;
pds.PageSize = 5;
pds.DataSource = ds.Tables["guesttest"].DefaultView; pds.CurrentPageIndex = Convert.ToInt32(curPage) - 1; this.lblPageTotal.Text = pds.PageCount.ToString();
this.Button1.Enabled = true;
this.Button2.Enabled = true;
if (curPage == "1")
{
this.Button1.Enabled = false;
}
if (curPage == pds.PageCount.ToString())
{
this.Button2.Enabled = false;
}
this.DataList1.DataSource = pds;
this.DataList1.DataBind();
cmd.CommandText = "select count(*) from guesttest";
this.lblMesTotal.Text = Convert.ToString(cmd.ExecuteScalar()); if (!IsPostBack)
{
int a = pds.PageCount;
for (int i = 1; i
{
this.DropDownList1.Items.Add(i.ToString()); }
}
}
protected void Button1_Click(object sender, EventArgs e) {
this.lblPageCur.Text =
Convert.ToString(Convert.ToInt32(this.lblPageCur.Text) - 1);
dataGridBind();
}
protected void Button2_Click(object sender, EventArgs e) {
this.lblPageCur.Text =
Convert.ToString(Convert.ToInt32(this.lblPageCur.Text) + 1); dataGridBind();
}
protected void Button3_Click(object sender, EventArgs e) {
this.lblPageCur.Text = "1";
dataGridBind();
}
protected void Button4_Click(object sender, EventArgs e) {
this.lblPageCur.Text = this.lblPageTotal.Text; dataGridBind(); }
protected void Button5_Click(object sender, EventArgs e) {
this.lblPageCur.Text = this.DropDownList1.SelectedValue; dataGridBind(); }
protected void Button6_Click(object sender, EventArgs e) {
//string username = this.txtUserName.Text; string username = Session["admin"].ToString(); string content = this.txtContent.Text;
string posttime = DateTime.Now.ToString(); SqlConnection conn = DB.createCon(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn;
cmd.CommandText = "insert into guesttest(username,content,postTime) values('" + username + "','" + content + "','" + posttime + "')"; if (cmd.ExecuteNonQuery() > 0) {
Response.Write(""); } else {
Response.Write(""); } }
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) {
if (e.CommandName == "Reply") {
int id = e.Item.ItemIndex; string name =
((Label)DataList1.Items[id].FindControl("Label1")).Text.Trim(); string replyContent = "回? 复¡ä " + name + " :êo"; txtContent.Text = replyContent; txtContent.Focus(); }
protected void Button7_Click(object sender, EventArgs e) {
this.txtContent.Text = ""; txtContent.Focus(); }
protected void lbtnDelete_Command(object sender, CommandEventArgs e) {
int userID = Int32.Parse(e.CommandArgument.ToString()); SqlCommand cmd = new SqlCommand(); cmd.Connection = DB.createCon();
cmd.CommandText = "delete from guesttest where ID=" + userID; if (cmd.ExecuteNonQuery() > 0) {
Response.Write(""); } else {
Response.Write(""); } }
protected void btnExit_Click(object sender, EventArgs e) {
Session.RemoveAll();
Response.Redirect("login.aspx"); } }
6.5 注册界面
using System;
using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI;
using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Data;
using System.Web.Security;
public partial class Default2 : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e)
}
protected int isName() {
int i;
String name = ResID.Text; if (name.Trim() != "") {
SqlConnection con = new SqlConnection("Data
Source=WANGLINGHUI-PC;Initial Catalog=myBoard;Integrated Security=True"); con.Open();
SqlCommand cmd = new SqlCommand("select count(*) from login where Name ='" + name + "'", con);
//i = Convert.ToInt32(cmd.ExecuteNonQuery()); i = Convert.ToInt32(cmd.ExecuteScalar()); con.Close(); return i; } else {
return 1; } }
protected void ReConfirm_Click(object sender, EventArgs e) {
int i = isName(); if (i
if (add()) {
Response.Write(""); } else {
Response.Write(""); } }
public bool add() {
string userid = ResID.Text.Trim() ; string pass =
FormsAuthentication.HashPasswordForStoringInConfigFile(ReCode.Text.Trim(), "MD5");
string sql = "insert into login(Name, Pass) values('" + userid + "','" + pass + "')";
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=myBoard;Integrated Security=SSPI;"); con.Open();
SqlCommand cmd = new SqlCommand(sql, con); int i = Convert.ToInt32(cmd.ExecuteNonQuery()); con.Close(); if (i > 0) {
return true; } else {
return false; } }
protected void ReDisagree_Click(object sender, EventArgs e) {
Response.Redirect("login.aspx"); } }
7 软件的测试
7.1集成测试
表5-1 集成测试表
参考文献
1刘秋生.数据库系统设计及其应用案例分析.东南大学出版社,2005 2 张海潘.软件工程导论.北京:清华大学出版社,2006 3 刘方鑫.数据库原理与技术.北京:电子工业出版社,2002
4龚赤兵.ASP.NET 2.0网站开发案例教程.中国水利水电出版社,2009 5刘世峰,数据库基础与应用.中央电大出版社,2003 6苏仕华.数据结构课程设计.北京:机械工业出版社,2005