ASP.NET课程设计
课程设计(
)任务
软件 学院 软件+电子商务 专业 2008,2 班 一、课程设计(论文)题目 个人博客系统
二、课程设计(论文)工作自 2011 年 6 月 20日起至 2011 年 6 月 25 日止。 三、课程设计(论文) 地点: 创新大楼机房 四、课程设计(论文)内容要求:
1(本课程设计的目的
(1)通过课程设计把课堂上讲的内容融会贯通,学会设计程序、开发网络 应用软件等各项工作。
(2)通过课程设计掌握语言的语法,理解类和对象的概念,准确的使用各 种数据类型,在程序中提高代码的重用性,使设计的程序结构清晰、易于维护。 (3)通过课程设计掌握ASP.NET应用程序的编写方法和步骤;掌握WEB 开发的基本技术。
2(课程设计的任务及要求
1)基本要求:
从以下题目中任选一题。
1、基于ASP.NET选课系统开发
2、基于ASP.NET新闻发布系统开发
3、基于ASP.NET BBS系统开发
4、基于ASP.NET博客系统开发
5、基于ASP.NET网上书店系统开发
2)创新要求:
在基本要求达到后,可进行创新设计,如改善用户体验、友好的人机界面 或增加特色功能等。
3)课程设计论文编写要求
(1)要按照书稿的规格打印与写课程设计论文
(2)论文包括目录、正文、小结和参考文献四个部分;其中正文包括功能 描述、设计思路、具体实现及调试和运行结果等四个部分
(3)课程设计论文装订按学校的统一要求完成
- 1 -
4)答辩与评分标准:
(1)考勤与学习态度:20分;
(2)设计思路:20分;
(3)代码实现:20分;
(4)演示答辩:20分;
(5)论文
性:20分。
5)参考文献
(1) 韩海雯 《Web程序设计—ASP.NET》人民邮电出版社
(2) 张云 《ASP.NET3.5入门经典》 清华大学出版社
(3) www.csdn.net
6)课程设计进度安排
内容 天数 地点
构思及收集资料 1 图书馆
设计、编码与调试 3 实验室、图书馆
撰写论文 1 图书馆、实验室
学生签名:
2011 年 6月 20 日
课程设计(论文)评审意见
(1)考勤与态度 (20分):优( )、良( )、中( )、一般( )、差( ); (2)设计思路 (20分):优( )、良( )、中( )、一般( )、差( ); (3)代码实现 (20分):优( )、良( )、中( )、一般( )、差( ); (4)演示答辩 (20分):优( )、良( )、中( )、一般( )、差( ); (5)论文规范性 (20分):优( )、良( )、中( )、一般( )、差( );
评阅人: 职称: 讲师
2011年 6 月 28 日
- 2 -
目 录
目 录………………………………………………………1 正 文………………………………………………………2
一、功能描述 ………………………………………2
二、设计思路 ………………………………………
三、具体实现 ………………………………………
四、调试和运行结果 ……………………………… 小 结……………………………………………………… 参考文献……………………………………………………
- 2 -
正 文
一、功能描述
一个博客其实就是由一序列网页组成的,它通常是由简短且经常更新的 帖子所构成的,这些张贴的文章都按照年份和日期倒序列排列,能按照日期和 主题检索。博客的内容和目的有很大的不同,有到其他网站的超级链接;有对 其他网站的评论;有个人的日记,日常所思所想;有个人照片、诗歌、散文, 甚至科幻小说的发
。正是由于博客能收容这些不拘于个人思想的表达,使博 客这种交流和表达方式日益红火起来,博客秉承了个人网站的自由精神,也开 拓了激发创造的新模式,能张扬人的个性,从这个意义上说,博客将会变得越 来越普及,越来越为更多的人接受。
我的博客系统主要实现的功能是写日志、更换皮肤、相册、还有搜索日志 以及发表留言等功能。
我的博客系统具有以下功能:
1)留言模块
该模在客户端实现留言信息的添加和浏览操作,在管理端可实现
留言信息的浏览和删除操作。
2)日志模块
该模块在客户端可浏览日志类和日志内容,以及浏览日志的评论
信息,并发布评论信息。在管理端实现日志分类和日志信息的添加、删除
和修改操作,以及日志评论信息的删除。
3)相册模块
该模块在客户端可浏览相册信息和相片信息,在客户端可编辑相册
。 和相片信息
4)博客系统皮肤更换
该系统提设有几个不同页面的主题切换,用户进入页面可以根据
自己的爱好,选择自己喜欢的主题。
5)搜索日志
- 3 -
用户进入页面,可以写日志,也可以查看日至,也可以通过系统
设置的搜索日志功能,直接搜索你想看的日志。
二、 设计思路
我设计这个博客系统的主要思路很简单,就是先确定自己要构造博客的 总体结构,需要些什么功能,然后在根据这些要求进行布局,排版。
(1)博客系统的系统模块图:
(2)用户界面首页的模块功能图:
- 4 -
(3)管理界面的功能图:
(3)博客系统的流程图:
- 5 -
(3)用户在日志管理模块的系统流程图:
- 6 -
三、具体实现
实现博客系统的关键代码:
由于该系统可以实现发表留言、评论相册、相册、皮肤变换、发表日志、评论日志等功能,但是我主要把发表留言、相册、与数据库连接的关键代码写出来,其他的省略.
与数据库字符串连接的代码:Web.Config
创建ConnectionString对象实例,用于连接数据库
"DBConnectionString" connectionString="Data Source=STUffc4;Initial
实现发表留言功能的代码:
MesList.aspx.cs的代码
public partial class MsgList : System.Web.UI.Page
{ private DataTable dt;
protected void Page_Load(object sender, EventArgs e)
{if (!Page.IsPostBack){if (Request.QueryString["page"] != null) {PageDataBind(false, Int32.Parse(Request.QueryString["page"]), String.Empty);
}else{if (Request.QueryString["MsgID"] != null){ int MsgID = Int32.Parse(Request.QueryString["MsgID"]); NoPageDataBind(MsgID);}
else{if (Request.QueryString["type"] != null &&
Request.QueryString["keywords"] != null){ PageDataBind(true, 1, Replace.txtReplace(Request.QueryString["keywords"].ToString())); } else
{PageDataBind(false, 1, String.Empty);}}}}}
private void PageDataBind(bool srh, int curPage, string str)
{int pages =
Int32.Parse(Added.GetXmlNodeValue(Server.MapPath("~/xml/Config.xml"), 1, "value")); if (srh == false)
{dt = BLL.Msg.Select_DataTable(1, 0, pages, curPage);}
els{
- 7 -
dt = BLL.Srh.GetSearchData(6, str, pages, curPage);}
if (dt.Rows.Count == 0){ Response.Write("
没有符合条件的数据");}
else{this.rpMsgList.DataSource = dt;
this.rpMsgList.DataBind(); } }
private void NoPageDataBind(int MsgID){
dt = BLL.Msg.Select_DataTable(3, MsgID);
if (dt.Rows.Count == 0)
{ Response.Write("
没有符合条件的数据");
}else{
this.rpMsgList.DataSource = dt;
this.rpMsgList.DataBind();
}}}
实现相册关键代码:
PicList.aspx.cs文件
public partial class PicList : System.Web.UI.Page
{private DataTable dt;
protected void Page_Load(object sender, EventArgs e)
{if (!Page.IsPostBack)
{//根据数据库中设定的相册目录,图片编号等绑定相册
if (Request.QueryString["PicMenuID"] != null) {
if (Request.QueryString["PicMenuID"].ToString() == "0")
{PageBind(0, String.Empty); }else{
int PicMenuID = Int32.Parse(Request.QueryString["PicMenuID"]);
PageBind(PicMenuID, String.Empty); } }
else {if (Request.QueryString["PicID"] != null){
int PicID = Int32.Parse(Request.QueryString["PicID"]);
NoPageDataBind(PicID); }else{
if (Request.QueryString["type"] != null &&
Request.QueryString["keywords"] != null){
int type = Request.QueryString["type"].ToString() == "pic" ? -2 : -1; PageBind(type, Replace.txtReplace(Request.QueryString["keywords"].ToString()));
}else
//以下是绑定所有相片的代码
{ PageBind(0, String.Empty);} }}}}
private void PageDataBind(int PicMenuID, int curPage, string str)
{int pages =
Int32.Parse(Added.GetXmlNodeValue(Server.MapPath("~/xml/Config.xml"), 1, "value")); if (PicMenuID == -2)
- 8 -
{ dt = BLL.Srh.GetSearchData(8, str, pages, curPage); }
else if (PicMenuID == -1)
{dt = BLL.Srh.GetSearchData(10, str, pages, curPage);
} else if (PicMenuID == 0 ){
dt = BLL.Pic.Select_DataTable(1, 0, 0, pages, curPage);
} else{
dt = BLL.Pic.Select_DataTable(2, PicMenuID, 0, pages, curPage)}
if (dt.Rows.Count == 0){Response.Write("
没有符合条件的数据"); }
else{this.rpPicList.DataSource = dt;
this.rpPicList.DataBind()}}private void NoPageDataBind(int PicID)
{ dt = BLL.Pic.Select_DataTable(4, PicID);this.rpPicList.DataSource = dt;
this.rpPicList.DataBind()}
private void PageBind(int PicMenuID, string str)
{ if (Request.QueryString["page"] != null)
{ PageDataBind(PicMenuID, Int32.Parse(Request.QueryString["page"]), str);}
else{ PageDataBind(PicMenuID, 1, str);}}} 相册评论的关键代码:
public partial class PicCommList : System.Web.UI.Page
{protected void Page_Load(object sender, EventArgs e){
if (!Page.IsPostBack){
int PicID = Int32.Parse(Request.QueryString["enID"]);
if (Request.QueryString["curPage"] == null)
{ BindData(PicID, 1);}else
{ int curPage = Int32.Parse(Request.QueryString["curPage"]);
BindData(PicID, curPage); } }}
private void BindData(int PicID, int CurPage){ int pages =
Int32.Parse(Added.GetXmlNodeValue(Server.MapPath("~/xml/Config.xml"), 2,
"value"));
DataTable dt = BLL.PicComm.Select_DataTable(1, PicID, pages, CurPage);
this.rpPicCommList.DataSource = dt;
this.rpPicCommList.DataBind();
}
}
- 9 -
四、调试和运行结果
调试和运行结果主要由截图体现:
1、系统调试:由于功能比较多,所以测试的内容很多,但下面只举一个日志管理的功能测试。
日志管理
(1) 发表日志
测试内容:管理员用户发表新日志。
操作:以管理员的身份进入博客系统,点击管理按钮,选择添加日志的操作如图所示,填写完日志内容之后单击添加按钮,看系统是否会提示发表成功。
结果:系统提示如图所示,测试成功。如图5-4所示:
图5-4 发表日志测试图
(2) 修改日志
测试内容:管理员对自己所发表的日志信息是否可以修改。 操作:点击修改打开日志编辑页面。
结果:日志信息重新编辑后提交成功。
结论:测试成功。
(3) 删除日志。
测试内容:用户对自己所发表的日志信息能否成功删除。
操作:点击删除系统询问是否删除该日志信息。
结果:日志信息被成功删除。
结论:测试成功。
- 10 -
2、数据库的一些截图:相册的数据
发表留言数据:
首页图片:没有截完成,首页下面还有留言框、日志框、评论相册留言等。
主页主业是通过css布局的
- 11 -
皮肤颜色变换:可以再点击选择皮肤,选择自己想要的颜色和布局
留言板:
发表留言:
- 12 -
查看留言板:
- 13 -
相册:可以选择自己想要查看的相册,只要点击选择相册就行
杂七杂八相册:
收藏相册:
- 14 -
查看相册评论:
查看日志及日志评论:
博客还有搜索日志、相册、评论等功能,只列举出搜索留言,其他省略
搜索留言:
- 15 -
小结
经过几天的努力,我终于完成了本次课程设计。本次ASP 个人博客系统终于按预期的结果顺利完成了。从系统最初的需求分析、设计,到最后实现的过程中,经过了多次反复的修改,功能逐渐完善,已经可以简单的使用。
通过此博客网站系统的开发,做到了理论联系实际,将书本上学到的知识与具体实践充分结合起来,既解决了工作中的一些问题,又进一步明确了开发管理信息系统的方法和思想;既加深了对管理信息系统的认识,又进一步巩固了以前所学的计算机软件开发方面的知识,提高了软件开发的水平,从而为今后在实际工作中更好的应用计算机进行信息管理打下了坚实的基础。
但同时也应该看到,由于时间仓促,本系统的功能实现还不是尽善尽美的还存在需要改进的地方,例如系统的某些设计的可扩展性并不十分理想,在以后的系统维护过程中,使用重构方法对系统进行重构,使系统的设计日益趋于更强的可扩展性。系统有很多不足的地方。对于数据表而言,对常检索的字段没有添加有效的索引,不然速度还可以再提升。对于面临大的访问量时,需要对从软件和硬件方面进行扩展时,比如,将数据库进行读写分离,建立多台并行的读取数据库服务器时,目前程序不能自动对这些数据库进行分配,需要修改程序才能达到。当进行写操作时,数据自动写到主服务器,然而在需要读取数据时,将这些请求分发到各从属数据库中,分担数据库压力的目的,不过这一步对程序的修改也不会太大。
通过这次毕业设计,我不仅学到了很多专业知识,而且提高了动手能力和解决实际问题的能力,真的受益匪浅。
今天的缺点就是明天的经验,为了跟上时代的步伐,要活到老,学到老, 让自己每一天都在进步。对于计算机这个行业,技术的更新日新月异,作为技术人员的我,更是要坚定不移的坚守这执着的学习态度,为追求自己的理想而奋斗。
- 16 -
参考文献 一、ASP.NET2.0 数据库通用模块开发与系统移植 施伟伟 王敬栋 著 二、ASP.NET 2.0技术内幕 Dino Esposito著,施平安 译(北京:清华大学出版社(2006
三、ASP.NET 2.0+SQL Server 2005企业项目开发与实战 余金山 北京:电子工业出版社(2008
四、Effective C#: 50 Specific Ways to Improve Your C# Bill Wagner 北京:人民邮电出版社(2003
- 17 -