ASO课设报告.docx
- 文档编号:12368299
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:52
- 大小:440.60KB
ASO课设报告.docx
《ASO课设报告.docx》由会员分享,可在线阅读,更多相关《ASO课设报告.docx(52页珍藏版)》请在冰豆网上搜索。
ASO课设报告
《ASP.NET编程》课程设计
——博客系统的设计与开发
系别:
计算机科学系
专业:
广播电视编导(数字媒体方向)
班级:
数媒09
姓名:
学号200901054
指导教师:
高静
完成日期:
2012年6月日
《ASP.NET编程》课程设计
一、设计任务与要求
需求分析
Ó用户分为匿名用户、博客会员用户、系统管理员用户。
Ó系统管理员可以对会员用户进行管理和系统管理员用户的管理。
Ó博客会员用户涉及对博客的类型管理、文章管理、评论管理、链接管理、留言管理。
Ó匿名用户可以阅读文章、发表回应、留言和评论。
Ó一种文章类型有多篇文章。
Ó一篇文章有多篇评论。
设计任务
根据以前学习的ASP.NET的基础知识,结合老师给出的视频教程,建立自己的博客系统,系统要按照正规的博客,能够基本实现:
♈提供博客浏览、发表评论、发表留言等功能。
♈博客管理功能:
博客会员可以管理自己的博客。
♈系统管理功能:
系统管理员可以对博客系统进行管理,如会员管理。
设计要求
♍对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;
♍系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面;
♍说明书、流程图要清楚;
♍记录设计情况(备查,也为编写设计说明书作好准备)
课设目的
☺复习、巩固ASP.NET的基础知识,进一步加深对ASP.NET技术的理解和掌握;
☺课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
☺培养学生在项目开发中团队合作精神、创新意识及能力
设计环境
ØWindowsXP操作系统,Dreamwaver与SQL2005开发环境
二、设计方案
总体设计
✧数据库设计
(1)博客会员表:
用来保存会员的信息。
表1博客会员表(tb_Blog)
列名
数据类型
长度
是否为空
说明
BlogID
int
4
否
会员唯一的ID
设置成主键自增
UserName
nvarchar
50
否
昵称
PassWord
nvarchar
50
是
密码
ST_n_key
nvarchar
200
是
注册日期
ST_n_content
ntextr
50
是
真实姓名
ST_n_date
datetime
8
是
文章发表日期
ST_n_hit
bigint
8
是
文章人气
ST_c_id
bigint
8
是
文章类型编号
ST_c_name
nvarchar
50
是
文章类型名称
ST_c_iscmd
int
4
是
文章回复数
BlogID
int
4
是
所属博客用户id
(2)文章类型信息表:
用来保存博文的类型信息。
表2文章类型信息表(ST_class)
列名
数据类型
长度
是否为空
说明
ST_c_id
bigint
8
否
类型唯一的ID号
设置成主键,自增
ST_c_name
nvarchar
50
否
类型名称
BlogID
int
4
是
所属博客用户id
(3)文章信息表:
用来保存博文的信息。
表3文章信息表(ST_news)
列名
数据类型
长度
是否为空
说明
ST_n_id
int
4
否
文章唯一的ID号
设置成主键,自增
ST_n_author
nvarchar
50
是
文章作者
ST_n_title
nvarchar
200
是
文章标题
ST_n_key
nvarchar
200
是
文章摘要
ST_n_content
ntextr
50
是
文章内容
ST_n_date
datetime
8
是
文章发表日期
ST_n_hit
bigint
8
是
文章人气
ST_c_id
bigint
8
是
文章类型编号
ST_c_name
nvarchar
50
是
文章类型名称
ST_c_iscmd
int
4
是
文章回复数
BlogID
int
4
是
所属博客
(4)评论信息表:
用来保存对文章进行评论的信息。
表4评论信息表(ST_replay)
列名
数据类型
长度
是否为空
说明
ST_r_id
bigint
8
否
评论唯一的ID号
设置成主键,自增
ST_r_nick
nvarchar
50
是
昵称
ST_r_title
nvarchar
250
是
评论标题
ST_r_content
nvarchar
250
是
评论内容
ST_r_date
datetime
8
是
评论发表时间
ST_n_id
int
4
是
评论文章编号
(5)留言信息表:
用来保存留言的信息。
表5留言信息表(ST_message)
列名
数据类型
长度
是否为空
说明
ST_id
bigint
8
否
留言唯一的ID号
设置成主键,自增
ST_nickname
nvarchar
50
是
昵称
ST_title
nvarchar
250
是
留言标题
ST_homepage
nvarchar
250
是
个人主页
ST_content
ntext
16
是
留言内容
ST_mdate
datetime
8
是
留言时间
ST_hf
ntext
16
是
留言回复
(6)链接信息表:
用来保存友情链接的信息。
表6链接信息表(ST_link)
列名
数据类型
长度
是否为空
说明
ST_l_id
bigint
8
否
链接唯一的ID号
设置成主键,自增
ST_l_name
nvarchar
50
是
链接的网站名称
ST_l_url
nvarchar
50
是
链接的地址
(7)系统管理员信息表:
用来保存系统管理员用户的信息。
表7系统管理员信息表(tb_Admin)
列名
数据类型
长度
是否为空
说明
ID
int
4
否
管理员用户唯一的ID号
设置成主键,自增
UserName
nvarchar
50
否
用户名
PassWord
nvarchar
50
是
密码
✧系统流程设计
✧系统功能设计
按照以上表格和流程图,在数据库中建立博客系统的后台信息。
在之后建立网站的过程中,需要保持数据库和网站内书写代码的连接,以便于网站能够正常运行。
详细设计
1、注册登陆模块
包括注册、登陆两个部分。
(1)、用户注册。
首先需要在.NET网站中对注册页面进行设计。
通过“添加新项”的方式添加页面,在页面中防止Table,在该标签中添加需要的按钮(Button)、输入框(TextBox)、复选框(CheckBox)、日历(Calender)等控件,并按要求更改控件的ID和属性。
该页面要包含的内容有用户名、密码、确认密码、性别、真是姓名、生日、博客主题、家庭地址、密码问题、问题答案、E-mail这些内容。
另外还需要在页面中添加验证控件,保证用户名和密码不为空以及邮箱格式正确。
用户注册界面
注册页面设计完后,双击某一控件进入其编写代码的页面。
该注册页面要实现的功能包括使用户成功注册、验证用户名和密码是否为空、验证两次输入的密码是否相同、验证邮箱格式是否正确、读入用户输入的数据并传送到数据库、提示用户注册成功或失败等等,都需要编写代码来一一实现。
读入用户输入的数据
(2)、用户登陆。
在网站中添加新的用户登陆的界面进行设计,相对于注册而言稍微简单一些,页面中的控件少了很多。
只需要在Table中添加输入框、按钮和验证控件即可。
分别包括用户名、密码、登陆和取消这些功能。
需要通过对验证控件的设计保证用户名和密码不为空
用户登陆界面设计完毕后,双击登陆按钮进入代码编写。
该页面需要实现的功能是验证用户的身份是否在数据库中存在,用户名和密码是否相符合,将允许通过身份验证的用户继续转到下一个界面,没有通过验证的用户则会接到“用户名或密码错误”的提示。
这些功能都是需要代码来实现的。
用户登陆提示
2、用户功能模块
(1)、模板页与内容页的创建。
通过创建母版可以在以后建立任何新的页面的时候使用,避免了每一页面在新建过程中需要重复制作的过程。
母版页的创建需要在“添加新项”以后,选择“母版页”,建立新的母版页。
在母版页中拉入Table框架后,添加Label标签和图片。
母版页与普通页面最大的区别就是母版页的页眉和页脚不允许更改,为了实现这一功能,需要在源代码中进行设置。
如下图所示:
母版页创建完毕以后,继续通过“添加新项”的方式添加内容页。
需要利用母版页的话,在创建过程中要记得勾选“使用母版页”的选项。
我们会发现利用母版页创建好的页面中页眉和页脚是无法更改的。
这样做在需要重复制作的一些页面中可以节省大量时间。
(2)、博客管理中心首页功能的实现。
博客管理中心首页的界面设计是通过TreeView控件来实现的。
在添加的新页面中调整Table的大小,然后在“登陆”选项卡中选择TreeView控件拖放进来。
通过“自动套用格式”可以调整该控件的外观,通过“编辑节点”打开“TreeView节点编辑器”可以调整整个页面的显示内容以及网站的链接位置。
将各个节点建立好以后,可以通过编辑器中的“NavigateUrl”选项来调整链接的页面,在以后需要的时候也可以在此进行修改。
(3)、文章类别管理页面的设计。
文章类别管理页面中的控件大致包括下拉列表框(DropdownList)、输入框(TextBox)、按钮(Button)、GriedBiew显示控件、复选框(CheckBox)以及分隔线(HorizontalRule)等。
其中下拉列表框需要通过“编辑项”打开的ListItem集合编辑器来修改显示的选项,GriedBiew显示控件的使用方法和它类似,分隔线的颜色如果通过Style更改后没有显示的话,还可以直接在分隔线上双击来对其属性进行修改。
将界面设计完毕后,需要对该页面各项功能的实现进行代码编写。
这个页面需要实现的功能大致包括,读取用户输入的数据,判定该用户是否存在于数据库中是否登录有没有对本页面的访问权限,登录用户单击“添加”按钮可以增加文章类型,GriedBiew显示控件可以对文章进行编辑、更新、修改、删除,单击“查询”按钮可以根据文章编号或文章类型对已添加的内容进行模糊搜索,单击“全选”按钮可以选择所有添加的内容,单击“取消全选”按钮可以取消所有复选框的选中状态,单击“批量删除”按钮可以删除所有被选中的内容并对用户进行提示。
“批量删除”按钮的代码编写
(4)、博文管理界面的设计。
博文管理界面的设计与文章类别管理比较类似。
需要添加的控件有下拉列表框(DropdownList)、输入框(TextBox)、按钮(Button)、GriedBiew显示控件、复选框(CheckBox)以及超链接按钮(LinkButton)。
大部分控件的使用方法都与上一个界面一样,超链接按钮则需要修改它的属性使其能够实现超链接的功能。
该界面需要实现的功能也和文章类型管理页面的功能相同,GriedBiew显示控件可以显示已添加的博文的类型、名称、摘要、内容梗概、回复数点击数等,单击“添加新博文”超链接按钮需要跳转到一个新的页面。
“全选”按钮代码的编写
(5)、添加博文和修改博文界面的设计。
添加博文和修改博文两个页面基本相同,第二个界面是将第一个界面复制过去稍加修改形成的。
两个界面都需要下拉列表框(DropDownList)、输入框(TextBox)和按钮(Button),需要通过修改文本输入框的TextMode属性把两个输入框修改为多行输入框,以及直接通过代码添加上一个返回的超链接。
添加博文界面需要实现的功能是在输入页面中需要填写的内容单击“添加”按钮后,会在博客中添加上一篇新文章并对用户进行提示,单击“重置”按钮则会清空整个页面中输入的内容,单击“返回”超链接可以返回到博文管理的界面。
添加成功后给用户的提示
修改博文界面是当用户单击“修改”后,页面跳转到该界面,界面中显示用户以前输入的内容,用户可以对这些内容进行增添或删除,单击修改按钮则确认用户进行的改动。
三、调试过程
1、
输入的代码的中英文格式错误,将输入法换成英文后,重新输入。
2、
缺少命名空间,需要在页面顶端输入using指令。
3、
括号数不正确,需要检查是否多或少输入了括号。
4、
没有输入分号。
5、
因为之前的函数使用的是Excute而不是Execute,所以需要将函数中间的e去掉。
6、
源代码上的错误,因为不小心在控件上双击进入了编写代码的页面却又将已经添加上的内容删除了,但是在后台信息中这个内容仍然是存在的。
需要在被双击的按钮的事件框中删除掉添加上的事件。
四、小结
为期三周的ASP[课设即将结束,在这三周的课设中,我感觉其实动态网站的制作并没有我们想象的那么艰巨,以前上课的时候,总是觉得看不懂听不懂不会做,于是就越来越不想去碰,所以真的就不会了。
我总是觉得,我是一个需要强迫的人,只有在课设的时候,必须交出自己的作业的时候,我才会逼着自己去做。
然后每次都发现,其实以前觉得这辈子都学不会的东西也并没有那么难。
这次课设的内容是让我们制作一个博客登陆系统的网站。
老师刚刚把要求发下来的时候看着都觉得头疼,因为怎么都感觉这次作业的难度太高了,还有那么多根本不理解的代码要去写。
虽然老师发的有教程,但是大家都知道,即使你完全按照教程去做,也绝不代表你做出的效果会和教程相同。
更何况那么多代码打下来,谁敢保证不会一不小心错个一两个符号,那做出来的东西可就完全没法运行了。
但是除了使劲儿做,没办法。
还好老师给的教程还是十分清晰的,按照教程一步一步做,然后看着页面一个一个被建立出来的时候真的很有成就感的。
但是运行的时候发现,完全没法运行,一直从头错到尾。
周围的同学也不会,老师也在给大家一个个纠正错误,忙不过来。
没办法只好硬着头皮接着往下做,总不能一直卡在那里不动吧。
等老师有时间就立刻请教。
当时我真的是这样想的,先做着,错误一点一点再纠正。
结果后来发现,根本太不可行。
当之后的页面需要登录才能预览的时候,我甚至连注册页面的错误还没改正过来,用户根本无法注册成功。
于是只好放下手头的作业,开始对着前头的视频检查。
也许是做了一段儿时间,潜意识里有了点儿分辨能力,有的错误还真的可以被找到,但毕竟学术不精,最后还是得在老师的帮助下才彻底解决了问题。
整个课设的进程,就是不断在错误中制造新错误。
最让人崩溃的是有一次页面预览的时候提示说有错,同学当时教给了我一个办法,说你先把写好的代码复制出来保存一份,然后在页面里撤销,撤销到能够正常运行的时候,你就知道错误在哪儿了而不用看着整个页面里那么多代码茫无头绪不知从何修改了。
但是那天我一直撤销到页面里所有写好的代码都没有了,无法撤销的时候,错误提示依然顽固地呆在那里。
同学的这个页面做好了,来帮我检查,发现我俩的代码没有任何区别,但就是无法运行。
最后实在无法可施,我便把之前做的全部删除从头又做了一遍。
刚开始周围的同学都说没必要,但我必须承认,做第二遍的时候才是我在这个课设里学到的东西最多的时候。
因为第一次做的时候真的是十分糊涂,视频说什么,自己就做什么,根本想不明白什么意思。
第二次做的时候因为有过了前一次的经验,反而觉得清晰了很多,也在做的过程中明白了不少之前疏漏的环节。
其实正是这些看似不起眼被我们不小心漏掉的地方,最终导致了整个页面运行的失败。
比如说逼的我不得不重做的那个错误的原因只是不小心在页面上双击了一下,导致代码里多了一句话。
我后来才知道,即使把多的那句话删除了,那个事件仍然是仍然存在的。
这也是当时我们怎么都找不出错误的原因了。
在头脑清楚的情况下做起来效果好了很多,速度也快了不少。
最后看着没一个页面都可以成功运行的时候真的万分开心。
到今天为止,网站已经基本上算是完成了,只需要再进行一下加工或是美化即可。
我最大的感受就是,什么都没有我们想象的那么难,只要做了,就有机会正确。
还有就是,如果找不到解决办法,干脆从头再来。
最后,谢谢老师每天不厌其烦地为我们解释更正那么多本不应该犯的很弱智的错误,谢谢!
五、参考资料
&DinoEsposito著,施平安译.《ASP.NET2.0技术内幕》.北京:
清华大学出版社.2006
&KoureshArdestani著,张哲峰译.《高效掌握ADO.NET—C#编程篇》.北京:
清华大学出版社.2003
&余金山.《ASP.NET2.0+SQLServer2005企业项目开发与实战》.北京:
电子工业出版社.2008
&BillWagner.《EffectiveC#:
50SpecificWaystoImproveYourC#》.北京:
人民邮电出版社.2003
&陈萱华.《如何利用ASP.NET技术访问数据库》.计算机与现代化.
&朱涛,李云云.《基于ASP.NET技术的WEB数据库分页显示》.电脑学习.
&董大伟.《ASP.NET与AJAX深度剖析范例集[M]》.北京:
中国青年出版社,2007.
&BucxekGreg.《ASP.NET开发人员指南[M]》.北京:
清华大学出版社,2002.
&崔良海.《ASP.NET网络编程实用教程(C#版)[M]》.北京:
中国林业出版社,2006.
&张跃廷,房大伟,庞娅娟.《ASP.NET全能速查宝典[M]》.北京:
人民邮电出版社,2009.
&章立民研究室.《ASP.NETAJAX经典范例168[M]》.北京:
机械工业出版社,2007.
&周金桥.《ASP.NET夜话[M]》.北京:
电子工业出版社,2009.
&麦克唐纳,兹普兹塔.《ASP.NET高级程序设计[M].》博思工作室译.北京:
人民邮电出版社,2009.
&丁士锋,蔡平.《ASP.NET项目开发指南[M]》.北京:
清华大学出版社,2010.
&余金山《ASP.NET2.0+SQLServer2005企业项目开发与实战[M]》.北京:
电子工业出版社,2008.
六、附录
SqlHelper页面
///
///SqlHelper的摘要说明
///
publicclassSqlHelper
{
publicSqlHelper()
{
//
//TODO:
在此处添加构造函数逻辑
//
}
///
///获得一个数据库连接对象
///
///
publicstaticSqlConnectionGetConnection()
{
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=System.Configuration.ConfigurationManager.ConnectionStrings["BlogConnectionString"].ConnectionString;
returnconn;
}
///
///用于执行修改的sql语句,sql语句是带参的
///
///
///
///
publicstaticintExcute(Stringsqlstr,SqlParameter[]parms)
{
intk=-1;
//1、创建数据库的连接
SqlConnectionconn=GetConnection();
//2、访问数据库
SqlCommandcomm=newSqlCommand();
comm.Connection=conn;//指定command所使用的connection连接
comm.CommandText=sqlstr;//指定command对象将要执行的sql语句
//向command对象添加参数
for(inti=0;i { comm.Parameters.Add(parms[i]); } try { conn.Open(); k=comm.ExecuteNonQuery(); } catch(SqlExceptionex) { throwex; } finally { //3、关闭数据库的连接 conn.Close(); } returnk; } //用于执行不带参数的sql语句(insert、update、delete) publicstaticintExecute(Stringsqlstr) { intk=-1; //1、创建数据库的连接 SqlConnectionconn=GetConnection(); //2、访问数据库 SqlCommandcomm=newSqlCommand(); comm.Connection=conn;//指定command所使用的connection连接 comm.CommandText=sqlstr;//指定command对象将要执行的sql语句 try { conn.Open();//打开数据库连接 k=comm.ExecuteNonQuery();//向数据库发送sql,并执行 } catch(SqlExceptionex) { } finally { //3、关闭数据库的连接 conn.Close(); } returnk; } /// ///用于执行select的sql语句,读取完,记得关闭SqlDataReader,还要关闭Sqlconnection /// /// /// /// publicstaticSqlDataReaderExecuteReader(Stringsqlstr,SqlConnectionconn) { //2、访问数据库 SqlCommandcomm=newSqlCommand(); com
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASO 报告