ASP课程设计的任务Word文档格式.docx
《ASP课程设计的任务Word文档格式.docx》由会员分享,可在线阅读,更多相关《ASP课程设计的任务Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

软件:
SQLserver2005,visualstudio2005
课程设计进度计划
起至日期
工作内容
备注
2012.5.10—2010.6.2
2010.6.2—2010.6.15
2010.6.15—2010.6.24
熟悉相关知识,查阅资料
分析实验要求,确定解决方案
详细分析,编写代码及调试运行
书写实验报告
参考文献、资料索引
序号
文献、资料名称
编著者
出版单位
[1]宋瀚涛,梁允荣.关系数据库原理与系统.北京理工大学出版社,1992
[2]刘秋生.数据库系统设计及其应用案例分析.东南大学出版社,2005
[3]王珊.数据库系统概论(第3版).高等教育出版社,2002
[4]张丽,王强.SQLServer数据库原理及应用教程.清华大学出版社,2003
[5]范策,周世平,胡潇琨.算法与数据结构.机械工业出版社,2004年
目录
1.系统分析与设计1
1.1需求分析1
1.2数据库结构设计1
2.系统开发环境2
2.1MVC三层构架2
2.2开发工具简介2
2.2.1ASP简介2
2.2.2IIS简介2
2.2.3Access简介3
2.3开发模式3
3.系统详细设计4
3.1创建与连接数据库4
3.1.1数据库表的设计4
3.2留言信息页面的设计6
4.主要代码实现7
总结16
1.系统分析与设计
1.1需求分析
开发一个留言系统,首先需要确定留言的功能是什么,也就是用户想要的留言所能做的工作。
用户使用留言是按照一定的流程来进行的:
用户进入留言板页面后,可以就某个话题展开讨论,通过留言功能发布新的话题,通过回帖的功能回复已有的话题;
管理员要管理留言,系统需要具有的功能有创建、删除留言。
这样的流程就决定了留言所应具有的功能,留言功能流程如图1.1所示。
留言人查看留言
发表留言
查看首页
图1.1留言功能流程图
观察留言所有功能需求,按不同实体分类,可以分为三类实体对象:
留言、回复留言、管理留言和回复留言。
这三类对象,可以设计为两个数据实体,如果使用数据库存储它们,即可以设计两个基本数据表的集合来存储这些实体的基本信息;
它们可以设计为两个基本表,映射两个实体的基本数据。
这些基本对象只是留言系统中最为基本的要素,对于一个完整的留言还需要其它相关的表来记录相关的信息,即实体之间的相互关系信息。
留言系统的用户浏览信息功能,是用户讨论问题的平台,发帖、浏览、回帖一直贯穿用户的整个活动。
同时,由于留言系统的留言管理是管理员在留言浏览时进行的,因此删除等功能也安排在浏览信息时实现,只是一般用户没有权限做这些动作。
1.2数据库结构设计
该系统的实体有:
管理员信息实体、留言实体。
实体之间的E-R图如图1.4所示。
图1.4实体间的关系E-R图
留言信息:
包括数据项有用户、内容、发表时间、发表ip地址等。
在设计数据库表的过程中,一般要遵循几条原则:
数据库设计一个表最好只存储一个实体或对象的相关信息,不同的实体最好存储在不同的数据表中,如果实体还可以再划分,实体的划分原则是最好能够比当前系统要开发的实体的复杂度小;
数据表的信息结构一定要合适,表的字段的数量一般不要过多;
扩展信息和动态变化的信息一定要分开在不同的表里;
多对多这样的表关系尽量不出现等。
2.系统开发环境
2.1MVC三层构架
MVC是Model-View-Controller的简写,“Model”代表的是应用的业务逻辑,“View”是应用的表示面,“Controller”是提供应用的处理过程控制,通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。
这些组件可以进行交互和重用。
2.2开发工具简介
2.2.1ASP简介
ASP是ActiveServerPage的简写。
ASP技术能让Web开发员和网页设计员快速地开发容易维护的动态Web主页。
ASP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
ActiveXDataOject(简称ADO)技术与ASP结合使用,可以具备存取数据库的功能,主要实现三方面的功能:
建立与数据库的连接,执行SQL声明以及处理SQL执行结果。
2.2.2IIS简介
IIS是InternetInformationServer的缩写,它是微软公司主推的服务器,IIS与WindowNTServer完全集成在一起,因而用户能够利用WindowsNTServer和NTFS(NTFileSystem,NT的文件系统)内置的安全特性,建立强大,灵活而安全的Internet和Intranet站点。
IIS支持与语言无关的脚本编写和组件,通过IIS,开发人员就可以开发新一代动态的,富有魅力的Web站点。
IIS完全支持VBScript,JScript开发软件以及Java,它也支持CGI和WinCGI,以及ISAPI扩展和过滤器。
IIS的一个重要特性是支持ASP。
IIS3.0版本以后引入了ASP,可以很容易的张贴动态内容和开发基于Web的应用程序。
对于诸如VBScript,JScript开发软件,或者由VisualBasic,Java,VisualC++开发系统,以及现有的CGI和WinCGI脚本开发的应用程序,IIS都提供强大的本地支持。
2.2.3Access简介
Access是Office系列软件中用来专门管理数据库的应用软件。
所谓数据库是指经过组织的、关于特定主题或对象的信息集合。
数据库管理系统分为两类:
文件管理系统和关系型管理系统。
Access应用程序就是一种功能强大且使用方便的关系型数据库管理系统,一般也称关系型数据库管理软件。
它可运行于各种MicrosoftWindows系统环境中,由于它继承了Windows的特性,不仅易于使用,而且界面友好,如今在世界各地广泛流行。
它并不需要数据库管理者具有专业的程序设计水平,任何非专业的用户都可以用它来创建功能强大的数据库管理系统。
2.3开发模式
网站建设目前主要有两种基本的开发模型:
两层模型、三层模型。
B/S结构是真正的三层结构,它以访问WEB数据库为中心,HTTP为传输协议,客户端通过浏览器(Browser)访问WEB服务器和与其相连的后台数据库,我们称之为B/S(Browser/Server)模式。
其三级结构组成如下图所示:
客户端
后台数据库
WEB服务器
图2.1开发模式图
图中从左到右,分为三个层次:
第一层是客户端即浏览器,主要完成客户和后台的交互及最终查询结果的输出功能。
在客户端向指定的Web服务器提出服务器请求,Web服务器用HTTP协议把所需文件资料传给用户,客户端接受并显示在WWW浏览器上;
第二层Web服务器是功能层,完成客户的应用功能,即Web服务器接受客户请求,并与后台数据库连接,进行申请处理,然后将处理结果返回Web服务器,再传至客户端;
第三层数据库服务器是数据层。
数据库服务器应客户请求独立地进行各种处理。
与传统的C/S模式相比,B/S结构把处理功能全部移植到了服务器端,用户的请求通过浏览器发出,无论是使用和数据库维护上都比传统模式更加经济方便。
而且使维护任务层次化:
管理员负责服务器硬件日常管理和维护,系统维护人员负责后台数据库数据更新维护。
3.系统详细设计
留言拥有大量的数据,这就需要对这些数据进行存储和管理建立数据库。
因为当留言的在线用户很多时,就会出现“瓶颈”现象,造成阻塞,这里应该创建连接池来提高利用率。
数据库建立成功后就应该进行具体的系统设计。
然后,将进行留言信息页面的设计,包括主页面、发布留言相关页面等,是显示在留言页面,可以由用户(包括用户)以上级别的浏览者看到;
最后,进行留言管理页面的设计,这是只能由管理员进行操作的页面,管理员会对留言进行安全、有条理的管理。
3.1创建与连接数据库
3.1.1数据库表的设计
数据表的字段:
id:
留言人的编号
name:
留言人的姓名
send:
留言的对象姓名
main:
留言的内容
time:
留言时间
gb表:
Massage表:
3.2留言信息页面的设计
留言界面
(1)查看留言界面:
(2)
4.主要代码实现
图片输出代码:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Drawing;
publicpartialclassadmin_checkcode:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
//调用自定义方法绘制验证码
CreateCheckCodeImage(GenerateCheckCode());
}
privatestringGenerateCheckCode()
//创建整型型变量
intnumber;
//创建字符型变量
charcode;
//创建字符串变量并初始化为空
stringcheckCode=String.Empty;
//创建Random对象
Randomrandom=newRandom();
//使用For循环生成4个数字
for(inti=0;
i<
4;
i++)
//生成一个随机数
number=random.Next();
//将数字转换成为字符型
code=(char)('
0'
+(char)(number%10));
checkCode+=code.ToString();
//将生成的随机数添加到Cookies中
Response.Cookies.Add(newHttpCookie("
CheckCode"
checkCode));
//返回字符串
returncheckCode;
privatevoidCreateCheckCodeImage(stringcheckCode)
//判断字符串不等于空和null
if(checkCode==null||checkCode.Trim()==String.Empty)
return;
//创建一个位图对象
System.Drawing.Bitmapimage=newSystem.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length*12.5)),22);
//创建Graphics对象
Graphicsg=Graphics.FromImage(image);
try
//生成随机生成器
//清空图片背景色
g.Clear(Color.White);
//画图片的背景噪音线
2;
intx1=random.Next(image.Width);
intx2=random.Next(image.Width);
inty1=random.Next(image.Height);
//5|1|a|s|p|x
inty2=random.Next(image.Height);
g.DrawLine(newPen(Color.Black),x1,y1,x2,y2);
Fontfont=newSystem.Drawing.Font("
Arial"
12,(System.Drawing.FontStyle.Bold));
System.Drawing.Drawing2D.LinearGradientBrushbrush=newSystem.Drawing.Drawing2D.LinearGradientBrush(newRectangle(0,0,image.Width,image.Height),Color.Blue,Color.DarkRed,1.2f,true);
g.DrawString(checkCode,font,brush,2,2);
//画图片的前景噪音点
100;
intx=random.Next(image.Width);
inty=random.Next(image.Height);
image.SetPixel(x,y,Color.FromArgb(random.Next()));
//画图片的边框线
g.DrawRectangle(newPen(Color.Silver),0,0,image.Width-1,image.Height-1);
//将图片输出到页面上
System.IO.MemoryStreamms=newSystem.IO.MemoryStream();
image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType="
image/Gif"
;
Response.BinaryWrite(ms.ToArray());
finally
g.Dispose();
image.Dispose();
}
留言代码:
usingSystem;
usingSystem.Data.OleDb;
usingSystem.IO;
publicpartialclass_Default:
System.Web.UI.Page
DB1da=newDB1();
protectedvoidButton1_Click(objectsender,EventArgse)
//5+1+a+s+p+x
stringcode=TextBox4.Text;
if(Request.Cookies["
checkcode"
].Value==code)
stringname=TextBox1.Text.Replace("
\r\n"
"
<
br>
"
);
stringsend=TextBox2.Text.Replace("
stringmain=TextBox3.Text.Replace("
stringins="
insertintomassage(name,send,main)values('
+name+"
'
'
+send+"
+main+"
)"
OleDbDataReaderodr=da.ExceRead(ins);
Session["
name"
]=name;
send"
]=send;
main"
]=main;
stringoid="
select*frommassagewherename='
andsend='
+send+"
DataSetds=da.ExceDS2(oid,"
id"
stringid=ds.Tables["
].Rows[0][0].ToString();
]=id;
Session.Timeout=20;
Response.Write("
<
script>
alert('
留言成功'
window.location.href='
postmessage.aspx'
/script>
Response.Redirect("
next.aspx"
else
RegisterStartupScript("
验证码错误!
)<
留言登录代码:
insertintogb(name,send,main)values('
select*fromgbwherename='
gbnext.aspx"
查看留言代码:
publicpartia