软件技术专业毕业论文
毕业论文(设计)
目 录
论 文 摘 要 ....................................................................................................................... 1
ASP.NET论坛的设计论文 ......................................................................................................... 2 一、
二、
(一)
(二)
(三) BBS介绍 .......................................................................................................... 2 使用工具及相关知识...................................................................................... 3 SQL Server 2008 概述 .................................................................................................. 3 ADO.NET概述 ............................................................................................................... 3 ASP.NET简介 ................................................................................................................ 4 三、
(一)
(二)
(三)
(四) 系统简单分析.................................................................................................. 4 系统可行性分析 ........................................................................................................... 4 系统功能的需求分析 ................................................................................................... 6 系统简要用例图分析 ................................................................................................... 8 运行环境 ....................................................................................................................... 9 四、
(一)
(二) 系统总体设计................................................................................................ 10 系统的设计目标 ......................................................................................................... 10 系统功能结构 ............................................................................................................. 11 五、
(一)
(二)
(三) 数据库设计.................................................................................................... 12 数据库和设计概述 ..................................................................................................... 13 概念模型设计(E-R图) ................................................................................................ 13 数据库逻辑设计 ......................................................................................................... 14 六、 系统的详细设计与实现................................................................................ 17
(一) 前台设计与实现 ......................................................................................................... 17
(二) 论坛后台页面设计如实现 ......................................................................................... 28
结 论 ......................................................................................................................... 36
致 谢 ......................................................................................................................... 37
参 考 文 献 ........................................................................................................................... 38
论 文 摘 要
论坛系统BBS(Bullitin Board System)是互联网上一种人与人之间交互的必备工具,特别是做网站的必备,网上论坛提供一个信息交流的空间。人们可以通过论坛一起讨论自己喜欢的话题,提出自己喜欢的话题或者是回答一些问题。用户可以在论坛上发表对某个问题的看法阐述自己的观点,给别人讨论对某个问题的看法,在Internet的发展中论坛的作用是无法代替的。
然而开发论坛的应用程序必须了解两部分的内容,即前台开发工具和后台的数据库。本文利用ASP.NET技术进行前台界面设计,利用SQL Server 2008设计的后台数据库以及利用ADO.NET数据库访问技术实现对数据库的各种管理操作,实现BBS的各种基本功能。主要分析了BBS的主要组成情况,包括BBS的设计目标,框架结构,数据流程和BBS的主要特点等,重点介绍了前台功能模块的详细思路和实现方法,以及对后台数据库关键技术和部分源代码的详细说明。
关键词:BBS ASP.NET ADO.NET SQL
ASP.NET论坛的设计论文
姓名
(开封大学 软件技术专业)
论坛系统服务已经是互联网站一种极为常见的互动交流服务。论坛可以向网友提供开放性的分类专题讨论区服务,可以在此发表自己的某些观感、交流某些技术、经验乃至人生的感悟和忧欢,亦可以作为网友之间的交流渠道。通过论坛的方式,增强人与人、个人与团体、团体与团体之间的交流联系,在Internet上实习信息的传递,提高办事效率。因此论坛建设在Internet应用上的地位显而易见,它已成为现代人沟通和获取信息的重要组成部分,从而倍受人们的重视。
一、 BBS介绍
BBS起源于二十世纪80年代初,最早的BBS只提供消息投递和阅读功能,使用者通常是些计算机爱好者。随后,系统允许会员之间分享软件、文件,进行实时网络对话、信件传输等。为了提供更好的服务,一些站点实行收费政策,但目前Internet上还是有无数免费BBS站点。一般BBS站点地址以域名形式出现,这些站点可通过远程登录进行连接,更多的站点采用WWW的形式供会员使用。
BBS也被称为异步会议系统、布告板,是网络上除了E-mail之外,最为普遍的在线讨论系统,它来源于早期Internet发展的BBS系统(Bulletin Board System),随着Internet的发展,逐步演变成现在的形式——基于Web的BBS系统。
在本文中,主要介绍使用ASP.NET技术来实现网络论坛建设。通过基于Internet互联网的动态WEB数据技术,可以解决远程的数据传输与读取,远程的客户终端(Client)可以通过WEB页面提交请求,查询远端的数据服务器上的信息,以实现信息的共享,同时利用Internet技术可以降低软件的开发和部署成本,只要在服务器上安装WEB应用就可以使每个客户端都能浏览使用。
目前,通过BBS系统可随时获取各种最新的信息;也可以通过BBS系统来和
别人讨论计算机软件、硬件、硬件、Internet、多媒体、程序设计及人文、地理等等各种有趣的话题;还可以利用BBS系统来发布一些“问题”、“廉价转让”、“招聘启示”等问题;更可以召集亲朋友好友到聊天室内高谈论阔„„这个精彩的天地就在你我的身旁,只要您拥有一台可以访问互联网的计算机,就可以通过这个交流平台,来享受它的种种服务。
二、 使用工具及相关知识
(一) SQL Server 2008 概述 SQL Server 2008出现在微软数据平台愿景上是因为它使得公司可以运行他们最关键任务的应用程序,同时降低了管理数据基础设施和发送观察和信息给所有用户的成本。这个平台有以下特点:
1.可信任的——使得公司可以以很高的安全性、可靠性和可扩展性来运行他们最关键任务的应用程序。
2.高效的——SQL Server 2008降低了管理系统、.NET架构和Visual Studio的时间和成本,使得开发人员可以开发强大的下一代数据库应用程序。
3.智能的——商业智能(BI)继续作为大多数公司投资的关键领域和对于公司所有层面的用户来说的一个无价的信息源。
(二) ADO.NET概述 ADO.NET的名称起源于ADO(ActiveX Data Objects),这是一个广泛的类组,用于在以往的Microsoft技术中访问数据.之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在.NET编程环境中优先使用的数据访问接口。
它提供了平台互用性和可伸缩的数据访问。ADO.NET增强了对非连接编程模式的支持,并支持RICH XML。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。
ADO.NET是与数据源交互的.NET技术。有许多的Data Providers,它将允许与不同的数据源交流――取决于它们所使用的协议或者数据库。然而无论使用什么样的Data Provider,你将使用相似的对象与数据源进行交互。SqlConnection对象管理与数据源的连接。SqlCommand对象允许你与数据源交流并发送命令给它。为了对进行快速的只“向前”地读取数据,使用
SqlDataReader。如果想使用断开数据,使用DataSet并实现能进行读取或者写入数据源的SqlDataAdapter。
(三) ASP.NET简介 ASP.NET的前身ASP技术,是在IIS 2.0上首次推出(Windows NT 3.51),当时与 ADO 1.0 一起推出,在IIS 3.0 (Windows NT 4.0)发扬光大,成为服务器端应用程序的热门开发工具,微软还特别为它量身打造了Visual InterDev开发工具,在1994年到2000年之间,ASP技术已经成为微软推展Windows NT 4.0平台的关键技术之一,数以万计的ASP网站也是这个时候开始如雨后春笋般的出现在网络上。它的简单以及高度可定制化的能力,也是它能迅速崛起的原因之一。
ASP.NET具有一下几个重要特点特点:
1.强大性和适应性——ASP.NET是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上。
2.简单性和易学性——ASP.NET使运行一些很平常的任务如表单的提交客户端的身份验证、分布系统和网站配置变得非常简单。
3.高效可管理性——ASP.NET使用一种字符基础的,分级的配置系统,虚拟服务器环境和应用程序的设置更加简单,因为配置信息都保存在简单文本中,新的设置有可能都不需要启动本地的管理员工具就可以实现。
三、 系统简单分析
(一) 系统可行性分析
可行性研究的目的,就是用最小的代价在尽可能短的时间内确定是否能够解释决。要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后能带来的效益是否大到值得投资开发这个
系统的程度。因此,可行性研究实质上就是要进行一次大大的压缩简化了的系统分析和设计的过程,也就是在较高层次上以抽象的方式进行的系统分析和设计的过程。
系统的可行性分析主要包括技术上的可行性、经济上的可行性、操作上的可行性、法律上的可行性和开发环境上的可行性。本系统的可行性分析如下:
在技术方面:随着国内外软件开发的日益发展壮大,各种中小企事业单位已具备独立开发各种类型的软件的能力,能够满足不同行业的特别的需求。从整个系统的技术构成上来看,它属于一个数据库应用类的系统。其基本操作就是对存在数据库中的数据进行添加、删除、查找、编辑等。所以就单纯的数据库应用来看,暂不存在太大的技术问题。因此从技术方面来看考虑本系统的可行性是可行的。
在经济方面:现在越来越多的人都是通过网络做许多事情,这个BBS系统易于操作,虽然对硬件要求比较高但是其安全性和管理性比较好,实用性比较好,相信经济效益也会比较高。因此从经济方面考虑开发此系统是可行的。
在操作方面:随着社会的发展,全民素质的提高,不论是对于电脑系统的基本操作还是对电脑的基本维护都有了一定的基础。同时还可以配置专业的电脑维护人员来维护电脑,不必担心电脑的鼓掌问题,且系统使用简单明了,因此从操作方面来看此系统是可行的。
在法律方面:此系统没有侵犯他人的个人合法利益,系统所涉及的条款与国家的现行法律没有抵触,不损坏国家、集体、个人的任何利益,所以在法律上是完全可行的。
开发环境可行性:开发此BBS系统需要硬件环境要求操作系统为Windows XP Professional以上系统版本,需要安装Internet信息服务,还有ASP.NET环境。目前看操作系统和软件都不是问题,系统硬件也可以满足,所以从开发环境上来说是可行的。
软件需求分析工作是软件生存周期中的重要的一步,也是决定性的一步。只有通过软件需求分析,才能把软件功能和性能的总体概念描述为具体的软件需求规格说明,从而奠定软件开发的基础。因此,在软件开发前应该做好对软件的需求分析。
(二) 系统功能的需求分析
1. 基本功能 论坛的基本功能是构成论坛系统的必要功能,包括如下基本功能。
(1) 发帖。论坛最初是为了互相讨论话题而诞生的,发表帖子就是表达自
己的看法,与他人进行讨论,因此发帖是论坛首要的功能。 (2) 浏览帖子。发表帖子,就是供他人浏览查看,与他人分享自己的想法
和经验。
(3) 回帖。浏览了他人发帖子,想要发表自己的想法,参与讨论,就可以
回复这个帖子。
其实,发帖→浏览帖子→回帖三大功能周而复始的循环进行,就构成了论坛,每个参与论坛的人,主要目的就是发帖,查看自己已经发表的帖子,针对自己感兴趣的帖子进行回复,参与讨论。三大基本功能的相互关系如图1所示。
2. 扩展功能
图1论坛基本功能关系图
除以上基本功能外,其它的论坛功能都是扩展功能,包括如下功能:
(1) 注册登录。方便经常发帖的人不需要重复填写个人信息。
(2) 分板块浏览帖子。有利于具有相同兴趣的用户相互讨论,不易跑题。
(3) 编辑帖子。提供给用户更新自己发言的选择。
(4) 删除帖子。如果用户发飙了不符合论坛规则的帖子,组需要管理员删
除这些帖子。
(5) 转移帖子。论坛划分了板块,如果帖子内容不属于所在板块的关注话
题,那么管理员可以选择将此帖移动到所属话题的板块中去。
(6) 置顶帖子。管理员如果需要强调某些帖子的重要,有必看性,可以将
这些帖子置顶。
(7) 指定精华帖。如果管理员认为某帖子内容很好,可以坐上标记,推荐
给用户看,用户也可以只看精华帖。
(8) 搜索帖子。方便用户查找自己需要的内容。
(9) 管理板块。论坛板块需要先创建才能被使用,管理还可以删除板块的
相关信息。
(10) 设置参数。论坛一般有一些初始化信息,比如论坛名称,每页显示
帖子的数量等参数信息。
(11) 管理用户。管理员可以对论坛注册用户进行管理,直接添加用户,
赋予相关权限,也可以修改已注册用户的权限,对于违规用户可以删
除。
论坛扩展功能图,如图2所示。
图2论坛扩展功能图
(三) 系统简要用例图分析
对于访问论坛的用户,可分为注册会员和为注册的临时用户,这两种用户有着不同的权限,比如临时用户只能对帖子进行查看,而注册会员除了查看帖子之外,还可以发帖,回复,查找用户,并且可以对自己的注册资料进行修改等等。
系统的用例图如下图3所示:
图3系统用例图
(四) 运行环境
运行环境配置从硬件和软件两方面描述,所列出的都是系统所能正常运行的最低限度。而更高的硬件配置和软件环境将会带来更快的运行速度以及更稳定的运行效果。
硬件要求:
CPU:Intel Pentium 600MHz以上。 内存:128M以上。
9
磁盘安装空间:3.2GB(完全安装,包括 .NET Frameworks 以及 .NET IDE全部开发工具和MSDN)。
显示:800*600,256色。
软件需求:Microsoft Windows 2000 + SP1。
Microsoft Internet Explorer 5.5 。
四、 系统总体设计
(一) 系统的设计目标
对于典型的数据库管理系统,尤其是对像论坛这样的数据流量特别大的网络管理系统,必须要满足使用方便、操作灵活等设计需求。本系统在设计时应满足以下几个目标:
1.采用人机对话的操作方式,界面设计美观友好,信息查看灵活、方便、快捷、准确,数据存储安全可靠。
2.全面展示系统内所有分类的帖子,并进行分页显示。 3.为用户提供一个方便、快捷的主题信息查看功能。 4.实现在线发表帖子。
5.提供登录模块,主要用开管理员登录系统和发表帖子时留下发表者的信息。
6.用户随时都可以查看自己发表的帖子。
7.对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。 8.系统最大限度地实现了易维护性和易操作性。 9.系统运行稳定安全可靠。
10
(二) 系统功能结构 1.前台功能结构
和用户管理的操作。后台功能结构图如下图5所示。
3. 系统流程图
若用户的权限为管理员,则可进入后台,可进行论坛类别的管理、版面管理
11
(1) 系统后台流程图如下图6所示。
(2)系统后台流程图如下图7所示。
图7前台台功能流程图
五、 数据库设计
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
12
(一) 数据库和设计概述
1.数据库是信息系统的核心和基础,把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。
2.数据库是信息系统的各个部分能否紧密地结合在一起以及如何结合的关键所在。
3.数据库设计是信息系统开发和建设的重要组成部分。 (二) 概念模型设计(E-R图)
数据模型是是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表与操作提供一个抽象的框架。描述了数据结构、数据操作及数据约束。
E-R模型的基本概念
ER图概念化地构建实体间关系的模型,这使得它们区别于数据库模型图。ER图的理念是:项目所有参与者能理解ER图。ER图由不同实体类型、关系、特性和类型构成。实体是诸如用户的实际对象,有时更抽象,但必须有业务意义。特性用于描述实体,关系用于实体之间 (1)实体:现实世界中的事物; (2)属性:事物的特性;
(3)联系:现实世界中事物间的关系。实体集的关系有一对一、一对多、多对多的联系。
13
本系统的E-R图如下图8所示:
(三) 数据库逻辑设计
根据数据库概念设计,可以创建与实体对应的数据表。本系统中所包含的数据表的结构图如图9所示。
图9 BBS数据库所包含的数据表结构图
14
本系统包括8个数据表,下面分别是这些表的结构。 1. BlockBig(论坛区块信息表),该表结构如下表表1所示。
表1 BlockBig(论坛区块信息表)
2. BlockSmall(论坛版块信息表),该表结构如下表表2所示。
表2 BlockSmall(论坛版块信息表)
3. Message(消息信息表),该表结构如下表表3所示。
表3 Message(消息信息表)
15
4. Popedom(论坛类别信息表),该表结构如下表表4所示。
表4 Popedom(论坛类别信息表)
5. Post(论坛帖子信息表),该表结构如下表表5所示。
6. PostBack(帖子回复信息表),该表结构如下表表6所示。
表6 PostBack(帖子回复信息表)
16
7. PostType(帖子类型信息表),该表结构如下表表7所示。
表7 PostType(帖子类型信息表)
8. Users(用户信息表),该表结构如下表表8所示。
六、 系统的详细设计与实现
(一) 前台设计与实现
由于前台功能模块较多,而各模块的实现过程都是类似的,所以对于系统前台,现在只介绍系统重点设计。
17
开封大学软件学院 软件技术专业毕业论文
2012.04.12
1. 论坛系统前台首页页面运行结果如下图所示。
图10 Asp_netBBS论坛首页
该页面为论坛首页页面,当用户进入本系统时会自动进入本页面。用户可以自行选择自己想进的版面。
此BBS设计有母版页存在,故论坛首页实现代码如下:
/>
18
区长:
'>
创建日期:
'>
Eval("bigId") %>'>
'>
2. 该BBS论坛登录页面如下。
图11 Asp_netBBS论坛登录页面
该页面是用户登录页面,输入正确的用户名和密码按登录按钮则进入登录后
页面,按重置按钮则清空文本框。若用户未注册按注册按钮进入注册页面。
其实现代码如下:
………
public partial class login : System.Web.UI.Page
{
//获取数据库连接字符串
DataHelper helper = new DataHelper();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void User_login_Click(object sender, EventArgs e)
{
String Name = UserName.Text;
string Pwd = User_pwd.Text;
String user_ip=Request.UserHostAddress;//获取用户IP地址信息
if (Name == "" || Pwd == "")
{
String alerts = "用户名或密码不能为空!";
Response.Write("");
}
else {
VldUserLogin(Name,Pwd,user_ip);
}
}
public void VldUserLogin(string strUserName, string strPassWord, string ip)//验证并修改个别信息
{
string strUserId = null;
string isadmin = null;
int UserQx=0;
String connstring = helper.Getstr();
String strSql = "SELECT UserId FROM Users WHERE UserName='" + strUserName + "' and UserPwd='" + strPassWord + "'";//根据用户名和密码来查询用户的ID
String strSql2 = "SELECT IsAdmin FROM Users WHERE UserName='" + strUserName + "' and UserPwd='" + strPassWord + "'";//根据用户名和密码来查询用户是否为管理的的标志
String strSql3 = "SELECT UserQx FROM Users WHERE UserName='" + strUserName + "' and UserPwd='" + strPassWord + "'";//查询用户的权限
string strSql4 = "update Users set UserOnline='" + 1 + "',UserIp='" + ip + "'WHERE UserName='" + strUserName + "' and UserPwd='" + strPassWord + "'";
SqlConnection conn = new SqlConnection(connstring);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;//设置连接
SqlDataReader reader;
try
{
conn.Open();
cmd.CommandText = strSql;
reader = cmd.ExecuteReader();
if (reader.Read())
{
strUserId =reader["UserId"].ToString();//获取编号UserId
reader.Close();
if (strUserId.Equals(""))
{
String alerts = "该用户不存在!";
Response.Write(""); }
else
{
cmd.CommandText = strSql2;
reader = cmd.ExecuteReader();
if (reader.Read())
{
isadmin = reader["IsAdmin"].ToString();//获取是否是管理员
reader.Close();
}
cmd.CommandText = strSql3;
reader = cmd.ExecuteReader();
if (reader.Read())
{
UserQx = int.Parse(reader["UserQx"].ToString());//获取权限 reader.Close();
}
cmd.CommandText = strSql4;
int result = cmd.ExecuteNonQuery();//修改部分信息
Session["user_qx"] = UserQx;//往Session里赋值
Session["user_id"] = strUserId;
Session["user_name"] = strUserName;
//是否是管理员,用于前台主框架是否显示管理
Session["IsAdmin"] = isadmin;
Response.Redirect("android_index.aspx");//成功跳转
}
}
}
catch(Exception ex)
{
Response.Write(" 意外关闭");
conn.Close();
}
finally
{
conn.Close();
}
}
}
3. 该论坛注册页面如下图所示:
图12 Asp_netBBS论坛注册页面
该页面为用户注册页面,用户按要求填完后可进行注册,若用户想添加头像则可以输入头像网络地址或头像本地所在位置,进行头像上传。若点击重置则清空所有文本框内容,进行重新输入。
其页面实现代码如下所示:
…… public partial class Jion : System.Web.UI.Page
{
//获取数据库连接字符串
DataHelper helper = new DataHelper();
private string user_Name1, pwd1, user_email1,ip,pic;
int id = 0;
public void Add_user()
{
string strconnection = helper.Getstr();
string selectSQL = "select max(UserId) as MaxId from Users";
SqlConnection conn = new SqlConnection(strconnection);
SqlCommand cmd = new SqlCommand(selectSQL, conn);
SqlDataReader reader;
try
{
conn.Open();
reader = cmd.ExecuteReader();
if (reader.Read())
{
id = int.Parse(reader["MaxId"].ToString()) + 1;//取标号最大值
Item();
Response.Redirect("login.aspx");
}
reader.Close();
}
catch (Exception ex)
{
conn.Close();
}
finally
{
conn.Close();
}
conn.Close();
}
public void Item() //插入元素
{
string strconnection = helper.Getstr();
user_Name1 = user_name.Text;
pwd1 = pwd.Text;
pic = UpImg1.GetFilePath;
user_email1 = user_email.Text;
String insert = "insert into Users(UserId,UserName,UserPwd,UserEmail,UserPic)values('" + id + "','" + user_Name1 + "','" + pwd1 + "','"
+ user_email1 + "','" + pic + "')";
SqlConnection conn = new SqlConnection(strconnection);
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(insert, conn);
int result=cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
conn.Close();
}
finally {
conn.Close();
}
conn.Close();
}
protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button2_Click(object sender, EventArgs e) //注册按钮触发事件
{
if ((user_name.Text == "") || (pwd.Text == "")) //判断用户名和密码是否为空 {
string alerts = "用户名和密码不能为空!";
Response.Write("");
}
else if (pwd.Text != rpwd.Text)
{
string alerts = "两次输入的密码不一致!";
Response.Write("");
}
else
{
Add_user();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
//检测该用户是否已经存在
string sql = "select UserId from Users where UserName='"+user_name.Text+"'"; string strconnection = helper.Getstr();
SqlConnection conn = new SqlConnection(strconnection);
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader reader;
try
{
conn.Open();
reader=cmd.ExecuteReader();
if (reader.Read())
{
reader.Close();
Response.Write(""); }
else {
Response.Write(""); }
}
catch(Exception ex)
{
conn.Close();
}
finally
{
conn.Close();
}
}
}
4. 该论坛发帖页面如下图所示。
图13 Asp_netBBS论坛发帖页面
该页面为用户发表帖子页面,若用户未登录则自动跳转到用户登录界面,提示用户登录,若用户已登录,则可以进行发帖,按重置按钮后则清空所有文本框。
该论坛发帖页面后台实现代码如下所示:
……
public partial class SentPost : System.Web.UI.Page
{
//获取数据库连接字符串
DataHelper helper = new DataHelper();
protected void Page_Load(object sender, EventArgs e)
{
//验证是否有用户登录
if (Session["user_id"] == null)
{
Response.Redirect("login.aspx");
}
}
//发表提交按钮事件
protected void Button1_Click(object sender, EventArgs e)
{
//获取表单信息
int PostType = int.Parse(posttype_ddl.SelectedValue);
string strTitle = txt_title.Text;
int UserId = int.Parse(Session["user_id"].ToString());
//内容
string strContent = nr.Text;
int PostSmall_Id = int.Parse(Request.QueryString["Small_Id"]);
//添加帖子表
AddPost(strTitle,strContent,UserId,PostType,PostSmall_Id);
}
public void AddPost(string strTitle, string strContent, int post_senderId, int TypeId, int PostSmallId)
{
int id = 0;
string strconnection = helper.Getstr();
string selectSQL = "select max(post_id) as MaxId from Post";
SqlConnection conn = new SqlConnection(strconnection);
SqlCommand cmd = new SqlCommand();//5_1_a_s_p_x
cmd.Connection = conn;
cmd.CommandText = selectSQL;
SqlDataReader reader;
try
{
conn.Open();
reader = cmd.ExecuteReader();
if (reader.Read())
{
id = int.Parse(reader["MaxId"].ToString()) + 1;//取标号最大值
reader.Close();
if(id>0)
{
string insertSQL = "insert into
Post(post_id,post_title,post_Content,post_Sender,post_SmallId,post_TypeId)values('" + id + "','" + strTitle + "','" + strContent + "','" + post_senderId + "','" + PostSmallId + "','" +
开封大学软件学院
TypeId + "')"; 软件技术专业毕业论文 2012.04.12
cmd.CommandText = insertSQL;
int a = cmd.ExecuteNonQuery();
if(a>0)
{
Response.Redirect("Post_List.aspx?small_id="+PostSmallId); }
}
}
}
catch (Exception ex)
{
conn.Close();
}
finally
{
conn.Close();
}
conn.Close();
}
}
(二) 论坛后台页面设计如实现
1. 论坛后台用户管理界面设计与实现
论坛页面设计如下图所示:
开封大学软件学院 软件技术专业毕业论文 2012.04.12
该页面为管理员用户管理页面,管理员登录后可以根据其界面提示,进行论坛管理,按退出按钮后则返回论坛首页。
其后台实现代码如下:
……
public partial class massege_massage_user : System.Web.UI.Page
{
//获取数据库连接字符串
DataHelper helper = new DataHelper();
protected void Page_Load(object sender, EventArgs e)
{
//登陆后授权变动的区域均隐藏
bk_txt.Visible = false;
bd_ddl.Visible = false;
}
//权限下拉列表的触发事件
protected void User_QX_SelectedIndexChanged(object sender, EventArgs e)
{
//获取下拉列表中的值
int QX = int.Parse(User_QX.SelectedValue);
//若为3,即选择版主
if (QX == 3)
{
bk_txt.Visible = true;
bk_txt.Text = "板块";
bd_ddl.Visible = true;
//变动的下拉列表内显示板块类别信息
bd_ddl.DataSourceID = "SqlData_small";
bd_ddl.DataTextField = "small_Name";
bd_ddl.DataValueField = "small_Id";
}
//若为4,即选择区长
if (QX == 4)
{
bk_txt.Visible = true;
bk_txt.Text = "区块";
bd_ddl.Visible = true;
//变动的下拉列表内显示板块类别信息
bd_ddl.DataSourceID = "SqlData_big";
bd_ddl.DataTextField = "bigName";
bd_ddl.DataValueField = "bigId";
}
}
//触发授权按钮 protected void Grant_Click(object sender, EventArgs e)
{
String connStr = helper.Getstr();
SqlConnection con = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
SqlDataReader reader;
try {
con.Open();
if (int.Parse(user_id.Text) > 0)
{
string User_id = user_id.Text;
int qx = int.Parse(User_QX.SelectedValue);
if (User_id == "")
{
string message = "请输入会员号";
Response.Write("");
}
else
{
string sql1 = "select * from Users where UserId='" + int.Parse(User_id) + "'";
cmd.CommandText = sql1;
reader = cmd.ExecuteReader();
if (reader.Read())
{
string sql2 = "update Users set UserQx=" + qx + "where UserId=" + int.Parse(User_id);
//修改小版块的版主
reader.Close();
if (qx == 3)
{
string small_admin = User_id;
string sql3 = "update BlockSmall set small_Admin=" + small_admin + "where small_Id=" + int.Parse(bd_ddl.SelectedValue);
cmd.CommandText = sql3;
int a = cmd.ExecuteNonQuery();
}
else
{ //修改区的区长
if (qx == 4)
{
string big_admin = User_id;
string sql4 = "update BlockBig set bigAdmin=" + big_admin + "where bigId=" + int.Parse(bd_ddl.SelectedValue);
cmd.CommandText = sql4;
int b = cmd.ExecuteNonQuery();
}
}
cmd.CommandText = sql2;//修改用户的权限
int c = cmd.ExecuteNonQuery();
if (c > 0)
{
string messages1 = "授权成功!";
Response.Write("");
Response.Redirect("~/massege/massege_user.aspx"); }
else
{
string messages2 = "授权失败!";
Response.Write("");
}
}
}
}
else
{
string messages3 = "输入的格式错误!";
Response.Write("");
}
}
catch(Exception ex)
{
Response.Write("出错关闭");
con.Close();
}
finally
{
Response.Write("最后关闭");
con.Close();
}
}
}
2. 管理员添加论坛版块设计实现
添加论坛版块设计页面如下图所示:
图15 Asp_netBBS论坛添加论坛版块页面
该页面为管理员添加论坛板块页面,管理员可在此页面添加论坛版块,按重置按钮后则是清空所有文本框。
开封大学软件学院 软件技术专业毕业论文 2012.04.12
该论坛页面后台实现代码如下所示:
……
public partial class massege_massage_user : System.Web.UI.Page
{
//获取数据库连接字符串
DataHelper helper = new DataHelper();
protected void Page_Load(object sender, EventArgs e)
{
//登陆后授权变动的区域均隐藏
bk_txt.Visible = false;
bd_ddl.Visible = false;
}
//权限下拉列表的触发事件
protected void User_QX_SelectedIndexChanged(object sender, EventArgs e)
{
//获取下拉列表中的值
int QX = int.Parse(User_QX.SelectedValue);
//若为3,即选择版主
if (QX == 3)
{
bk_txt.Visible = true;
bk_txt.Text = "板块";
bd_ddl.Visible = true;
//变动的下拉列表内显示板块类别信息
bd_ddl.DataSourceID = "SqlData_small";
bd_ddl.DataTextField = "small_Name";
bd_ddl.DataValueField = "small_Id";
}
//若为4,即选择区长
if (QX == 4)
{
bk_txt.Visible = true;
bk_txt.Text = "区块";
bd_ddl.Visible = true;
//变动的下拉列表内显示板块类别信息
bd_ddl.DataSourceID = "SqlData_big";
bd_ddl.DataTextField = "bigName";
bd_ddl.DataValueField = "bigId";
}
}
//触发授权按钮
protected void Grant_Click(object sender, EventArgs e)
开封大学软件学院
{ 软件技术专业毕业论文 2012.04.12
String connStr = helper.Getstr();
SqlConnection con = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
SqlDataReader reader;
try
{
con.Open();
if (int.Parse(user_id.Text) > 0)
{
string User_id = user_id.Text;
int qx = int.Parse(User_QX.SelectedValue);
if (User_id == "")
{
string message = "请输入会员号";
Response.Write("");
}
else
{
string sql1 = "select * from Users where UserId='" + int.Parse(User_id) + "'";
cmd.CommandText = sql1;
reader = cmd.ExecuteReader();
if (reader.Read())
{
string sql2 = "update Users set UserQx=" + qx + "where UserId=" + int.Parse(User_id);
//修改小版块的版主
reader.Close();
if (qx == 3)
{
string small_admin = User_id;
string sql3 = "update BlockSmall set small_Admin=" + small_admin + "where small_Id=" + int.Parse(bd_ddl.SelectedValue);
cmd.CommandText = sql3;
int a = cmd.ExecuteNonQuery();
}
else
{
//修改区的区长
if (qx == 4)
{
string big_admin = User_id;
string sql4 = "update BlockBig set bigAdmin=" + big_admin + "where bigId=" + int.Parse(bd_ddl.SelectedValue);
cmd.CommandText = sql4;
int b = cmd.ExecuteNonQuery();
}
}
cmd.CommandText = sql2;//修改用户的权限
int c = cmd.ExecuteNonQuery();
if (c > 0)
{
string messages1 = "授权成功!";
Response.Write("");
Response.Redirect("~/massege/massege_user.aspx"); }
else
{
string messages2 = "授权失败!";
Response.Write("");
}
}
}
}
else
{
string messages3 = "输入的格式错误!";
Response.Write("");
}
}
catch(Exception ex)
{
Response.Write("出错关闭");
con.Close();
}
finally
{
Response.Write("最后关闭");
con.Close();
}
}
}
结 论
我所选论文题目是“ASP.NET论坛系统”。在老师辛勤指导的基础上,经过自己不断的努力,和同学们的帮助,尽管辛苦,最终“ASP.NET论坛系统” 毕业设计还是按时完成了。
经过查看大量的资料,认真对网站进行规划和几个月来辛勤的创作,终于完成了BBS论坛的开发。开发此BBS论坛的目的是提供一个供用户交流的平台,为广大用户提供交流经验、探讨问题的社区。因此,本论坛系统最基本的功能首先是发表主题,其次是其他人员根据主题发表自己的看法。此外,为了记录主题的发表者和主题的回复者信息,系统还提供用户注册和登录的功能。只有注册的用户登录后才能够发表和回复主题,浏览者(游客)只能浏览主题信息。它具备以下功能:显示各论坛类别及版面、查看版面下所有根帖、查看自己发表的帖子、搜索帖子、查看根帖内容、用户注册、用户登录、发表帖子、回复帖子、进入后台、论坛类别管理、版面管理、用户管理和用户注册。
在论坛系统的整个设计过程中,需要注意的是力求界面友好、简洁,易于操作。代码部分尽量避免逻辑错误,算法设计简单合理,尽量使程序具有较好的可读性,有利于其他的设计者对程序的阅读;力求对数据库操作的安全与稳定,尽量避免数据库操作异常,并要保证查询的快速无误。保证程序的逻辑结构,编程时注意多使用通用方法(函数和过程)。
当然,由于我的专业知识水平有限以及时间的限制,在系统设计过程中没有全面做好切合实际的需求分析,所以在开发过程中遇到了一些棘手的问题。现在开发出来的系统还存在部分不足的地方。系统版面设计不够人性化,系统对数据库的操作还不够稳定,程序代码中还存在一些Bug,这些问题在以后的开发过程中还需要逐步完善。
这次的毕业设计让我知道了自己很多的不足,还需要自己加倍努力。
致 谢
经过几个月的忙碌和工作,本次毕业设计已经接近尾声,作为一个专科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。在这里首先要感谢我的导师李响老师。李老师平日里工作繁多,但在我做毕业设计的每个阶段,从查阅资料到设计草案的确定和修改,中期检查,后期详细设计等整个过程中都给予了我悉心的指导。除了敬佩李老师的专业水平外,她的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。其次要感谢我周围同学朋友的帮助,感谢他们提出宝贵的意见和建议,特别是在程序的编写方面,正因为如此我才能顺利的完成设计,我要感谢我的母校——开封大学,是母校给我们提供了优良的学习环境;另外,我还要感谢那些曾给我授过课的每一位老师,是你们的悉心教导使我有了良好的专业课知识。在此,我再说一次谢谢!谢谢大家!
参 考 文 献
(1) 张海藩,《软件工程》,清华大学出版社,2009
(2) 王凤岭,《ASP.NET程序设计实用技术》,人民邮电出版社,2005
(3) 张敏,《用ASP.NET开发动态网站》,清华大学出版社,2002
(4)张超钦,《基于.NET的通用数据访问模型与实现》 ,信阳师范学院学报(自然科学版),2009
(5)Dino Esposito著、施平安 译,《ASP.NET 2.0技术内幕》,清华大学出版社,2006
(6)Kouresh Ardestani 著、张哲峰 译,《高效掌握ADO.NET—C#编程篇》,清华大学出版社,2003
(7)余金山,《ASP.NET 2.0+SQL Server 2005企业项目开发与实战》,电子工业出版社,2008
(8)陈萱华,《如何利用ASP.NET技术访问数据库》,计算机与现代化,2003
(9)朱涛,《基于ASP.NET技术的WEB数据库分页显示》,电脑学习,2005
(10)Alex Homer、李敏波译,《ASP.NET 1.1高级编程》,清华大学出版社,2005
开封大学软件学院 软件技术专业毕业论文 2012.04.12
(11)齐治昌、谭庆平、宁洪编著,《软件工程》,高等教育出版社,2001
(12)Dino Esposito、梁超 译,《构建Web解决方案一一应用ASP.NET和ADO.NET》,清华大学出版社,2002
(13)Shawn Wildermuth著、周靖 译,《ADO.NET实用指南:面向Internet世界的数据访问技术》,清华大学出版社,2003
39