收藏 分销(赏)

《Web应用技术—ASP.NET》大作业.doc

上传人:二*** 文档编号:4544840 上传时间:2024-09-27 格式:DOC 页数:36 大小:744KB
下载 相关 举报
《Web应用技术—ASP.NET》大作业.doc_第1页
第1页 / 共36页
本文档共36页,全文阅读请下载到手机保存,查看更方便
资源描述
《Web应用技术—ASP.NET》 大作业 选题名称:同学录 设 计 人:郑亚光 刘震 龚璟 学 号:8000610163 8000610137 8000610120 班 级:计软103 南昌大学软件学院 2012.12.15 目录 第一章、小组分工 2 第二章、系统需求分析报告 3 2.1问题的提出: 3 2.1.1 背景 3 2.1.2选题目的和意义 4 2.1.3 国外研究动态 4 2.2需要完成的功能: 5 2.3技术实现路线: 5 第三章、数据库逻辑结构设计 9 3.1 数据表 9 3.2 E-R图 13 第四章、系统实现 14 4.1 登录注册模块 14 4.1.1登录界面 15 4.1.2注册界面 16 4.1.3找回密码 17 4.2生日列表 18 4.3用户资料 19 4.3.1查看用户资料 19 4.3.2修改用户资料 20 4.4论坛 22 4.4.1获取所有帖列表 22 4.4.2发表新帖 23 4.4.3回帖 24 4.5班级相册 25 4.5.1上传图片 25 4.5.2评论图片 26 4.5.3展示图片 27 4.6显示注册用户 28 4.7站内信箱 29 4.7.1收信箱 30 4.7.2写信 30 4.7.3已发信箱 32 参考文献 32 第一章、小组分工 组长: 郑亚光—工程设计策划,项目分析,可行性规划. 组员: 刘震—数据库和大部分前台代码 组员: 龚璟—部分前台代码,撰写作业文档 第二章、系统需求分析报告 2.1问题的提出: 2.1.1 背景 现代社会是一个信息化社会,信息的交流在无形中影响着我们的生活,我们的生活速度随之加快,网上的同学录就是一个很好的交流平台,它不仅为我们节约了大量的时间,更给我们提供了一个同学交流的空间,让我们在繁忙的生活中获得一份轻松和惬意Internet已经成为人们生活、工作、学习越来越离不开的平台。作为Internet上一种先进的,易于被人们所接受的信息检索手段,World Wide Web(简称WWW)发展十分迅速,成为目前世界上最大的信息资源宝库。据估计,目前Internet上已有上百万个Web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。Web技术已经不再局限于单纯的提供信息服务,而是日益成为一个操作平台,为用户提供强大的服务功能。例如:电子商务、CRM(客户管理管理)等。 近年来各种在线服务系统,更是深刻的影响了人们的联系方式,使得人们可以在远隔千里之遥随时通讯。过去的种种陈旧的联系方式,已经不能满足现代生活的需要。校友录作为一种方便校友之间联系的实用系统便应运而生。华工校友录是为华工校友之间进行交流和联系提供的一个平台。通过提供完善的校友录服务和规范校友录的管理,可以达到增进校友之间、校友与母校之间的感情,方便校友联系的目的。基于我校现有的校友录系统功能比较简单、页面粗糙、安全性不强的特点,我参考了现有的系统和一些在线应用系统(比如chinaren,友联等),对现有校友录系统进行了比较全面彻底的改进,使得校友录系统无论是在功能、用户界面、安全性、可扩充性等都得到了根本的改进 2.1.2选题目的和意义 目前,经济发展迅猛,人们的压力也越来越大,以致把大多数的时间都投入在工作上,往往就会淡忘以前的生活。学生时代是梦想最多的时代,感情最纯真的时代,在那时,我们都会遇到很多不同的人,也交了很多知己。但是一走上工作岗位,大多数人都会与以前的朋友失去联系。有时,即使想联系却没有联系方式。通过校友录系统,可以找到想要联系的朋友,这是许多人都认可的,可以看出设计一个校友录是极具可行性的。 校友录是为了方便校友之间联系而使用的一种系统。本论文主要介绍了一个同学录系统的规划。主要模块的详细设计主要包括:用户注册和登录模块、留言模块、查询模块等。 本课题是基于Windows环境的数据库管理,该系统前台使用Microsoft Visual Studio 2008中的ASP.NET(C#语言)技术进行开发,后台数据库采用SQL Server 2005,并通过IIS进行发布,属于WEB数据库开发、用于解决实际问题的实例,具有一定的深度,涉及到数据库设计和前端开发工具的开发和设计,与之相似的应用很广泛。 本论文概述了ASP.NET与SQL Server 2005数据库及其相关的一些知识,着重论述数据库中间技术,并将其放入一个简单的体系中加以实现。 具体的实现是构造一个校友录管理系统,用户以个人的身份进入,查找满足条件的班级,并可以填写个人资料,以便被查询。通过校友录这种网络联系方式,可以让很多因毕业而分离的同学们还能够经常聚首,互相嘘寒问暖,了解各自的近况,还可以建立毕业生和在校生的沟通渠道,增强学校的凝聚力,能很方便的和同学沟通和交流。 2.1.3 国外研究动态 目前世界上各种形式的同学录网站大约有28 万个之多,它们在网民心中占有重要地位。以目前存在的同学录网站来看,大致有以下几类:(1)按收费方式分,有收费同学录和免费同学录,其中以后者居多,像中国人的超级校友录就是收费的同学录服务,而像友联同学录、网易同学录等大部分提供的是免费校友录服务;(2)按提供同学录服务所在网站分,有大专院校自己网站上的同学录,如西北大学校友录;有专门单独的同学录网站,如世纪同学录;有综合网站上的同学录,如ChinaRen校友录、新浪校友录、校内网等等,其中以综合网站上的校友录居多。国内的同学录,目前仍然以ChinaRen、校内网和5460最具知名度,这三个同学录在众多的同学录网站中人气最旺,经营状况良好,占据了这个领域的大部分份额,但5460更多是在吃“资历老”的老本,呈现下降趋势。其他的同学录如友联、网易、新浪、亿唐、网大也占有一定份额。 2.2需要完成的功能: a. 用户注册登录功能 b. 找回密码功能 c. 修改个人资料功能 d. 投票功能 e. 发帖功能 f. 看帖功能 g. 评论功能 h. 搜索站内贴功能 i. 写信功能 j. 收信功能 k. 上传照片功能 l. 查看班级相册功能 2.3技术实现路线: 2.3.1页面设计: a. 整个网站包含了共六个网页 b. 班级首页面 c. 班级论坛页面 从数据库中调用数据并且以列表的形式显示在页面中 d. 用户专区页面 显示所有的注册用户 e. 班级资料页面 显示数据库中保存的班级资料文档 f. 站内短息页面 个人信息中心:以列表形式显示已收到的信件,已发送的信件, g. 班级相册页面 把所有的上传到网站的图片以小图标的显示方式排列在页面中 h. 母版模块 1: 登陆注册栏(游客状态) 班级功能(登录状态) 2: 未来一个月生日列表 3: 对网站评价 2.3.2 用户权限功能描述 游客功能分析: (1) 用户注册:用于注册同学录新用户。 (2) 查看班级资料:供游客了解同学录中班级的一些基本资料和描述。 (3) 查看注册用户:让游客知道同学录中有哪些人。 (4) 查看用户资料:这是一个仅对班级内部开放的同学录便于了解给用户 的一些开放信息。 (5) 查看班级论坛:可以查看所有在同学录中发表的帖子。 (6) 查看班级相册:可以查看所有在同学录中上传的图片。 注册用户功能分析: (1) 用户登录:注册用户登录同学录。 (2) 查看班级资料:了解同学录中班级的一些基本资料和描述。 (3) 查看注册用户:让游客知道同学录中有哪些人。 (4) 查看用户资料:这是一个仅对班级内部开放的同学录便于了解给用户 的一些开放信息。 (5) 查看班级论坛:可以查看所有在同学录中发表的帖子。 (6) 查看班级相册:可以查看所有在同学录中上传的图片。 (7) 投票:对此网站进行评价。 (8) 发表新帖子:发表一份新的帖。 (9) 回复:对别人的帖进行评价。 (10) 修改个人资料:对用户个人的资料进行修改。 (11) 修改安全问题:安全问题用于找回密码修改密码。 (12) 站内信: a. 收件箱:查看站内收信。 b. 发件箱:查看已发送信件。 c. 撰写:写信。 d. 清空:清空邮箱。 (13)上传图片:把本地图片上传到网站。 (14)用户退出:退出登录状态返回游客状态。 第三章、数据库逻辑结构设计 3.1 数据表 classInfo(班级资料): Message(站内信): Photo(相册): PhotoClass: RePhoto: ReTopic: Topic: Users: Vote: VoteCon: 3.2 E-R图 第四章、系统实现 4.1 登录注册模块 4.1.1登录界面 在输入框输入正确的用户名和密码点登录按钮登录, 或通过点注册按钮跳转到注册界面,点击链接忘记密码跳转到获取密码界面。 关键代码: 检查数据库中是否有该用户 dbh.sqlCommand = "select * from Users where UserName=@UserName"; dbh.AddSqlCmdParameters("UserName", this.txtUserName.Text); dbh.GetDataReader(); 判断密码是否正确 if (dbh.dr.Read()) { … else if (dbh.dr["UserPwd"].ToString() == LeeHom.Web.Text.MD5(this.txtUserPwd.Text)) { … } } 根据不同的时间显示不同的问候 function ShowHello() { var welcomestring; var d = new Date(); h = d.getHours(); if(h<6) welcomestring="不要睡太晚了哦!"; else if (h<9) welcomestring="您来得真早啊!"; else if (h<12) welcomestring="今天精神不错吧!"; else if (h<14) welcomestring="吃午饭了吗?"; else if (h<17) welcomestring="午睡睡得好吗?"; else if (h<19) welcomestring="吃晚饭了吗?"; else if (h<22) welcomestring="人多了,网慢了。"; else welcomestring="注意休息哦!"; document.write(welcomestring); } 4.1.2注册界面 把输入的信息加入到数据库中 dbh.AddFieldParameters("UserName", txtUserRegName.Text); dbh.AddFieldParameters("UserPwd", LeeHom.Web.Text.MD5(txtUserRegPwd.Text)); dbh.AddFieldParameters("RealName", txtUserRegRealName.Text); dbh.AddFieldParameters("Sex", rbtnlistUserRegSex.SelectedItem.Value); dbh.AddFieldParameters("Mail", txtUserRegMail.Text); dbh.AddFieldParameters("PwdQue", txtUserRegPwdQuestion.Text); dbh.AddFieldParameters("PwdAnswer", LeeHom.Web.Text.MD5(txtUserRegPwdAnswer.Text)); dbh.AddFieldParameters("IsVaild", Mode); 4.1.3找回密码 获取用户名 bool UserExists(string str) { dbh.Reset(); dbh.tableName = "Users"; dbh.fieldName = str; dbh.AddConditionParameters(str, this.txtUserName.Text); return dbh.DataExists(); } 回答安全问题 获取安全问题和答案 dbh.Reset(); if (i == 1) { dbh.sqlCommand = "select top 1 PwdQue,PwdAnswer from Users where RealName=@Name"; } else { dbh.sqlCommand = "select top 1 PwdQue,PwdAnswer from Users where UserName=@Name"; } dbh.AddSqlCmdParameters("Name", this.txtUserName.Text); dbh.GetDataReader(); if (dbh.dr.Read()) { this.ltlPwdQue.Text = dbh.dr[0].ToString(); strPwd = dbh.dr[1].ToString(); } dbh.dr.Close(); 判断安全问题答案 if (LeeHom.Web.Text.MD5(this.txtPwdAns.Text) == strPwd) 设置新密码 dbh.AddFieldParameters("UserPwd", LeeHom.Web.Text.MD5(this.txtPwd.Text)); if (i == 0) { dbh.conditionExpress="UserName=@UserName"; } else { dbh.conditionExpress="RealName=@UserName"; } dbh.AddConditionParameters("UserName", this.txtUserName.Text); 4.2生日列表 查找最近一个月中是否有人过生日 if (ConfigurationManager.AppSettings["conMode"] == "0") { dbh.sqlCommand = "SELECT RealName,birthday FROM Users WHERE NOT ISNULL(birthday) AND CDATE(STR(year(date())) +'-'+STR(month(birthday))+'-'+STR(day(birthday)))-now() between 0 and 30 order by birthday"; } else { dbh.sqlCommand = "select RealName,birthday from users where datediff(dd,cast(year(Birthday)as varchar(30))+right(convert(varchar(10),getdate(),120),6),Birthday) between 0 and 30 order by birthday"; } 4.3用户资料 4.3.1查看用户资料 获取用户信息 dbh.sqlCommand = "select top 1 * from Users where RealName=@RealName"; dbh.AddSqlCmdParameters("RealName", Request.QueryString["UserName"]); DataTable dt = dbh.GetDataTable(); BinderRepeater br = new BinderRepeater(); br.repeater = rptUserInfo; br.datatable = dt; br.Bind(); 显示用户信息 this.txtUserName.Text = dbh.dr["UserName"].ToString(); this.txtRealName.Text = dbh.dr["RealName"].ToString(); this.txtBirthday.Text = Convert.ToDateTime(dbh.dr["Birthday"]).ToString("d"); this.txtPhone.Text = dbh.dr["Phone"].ToString(); this.txtMobile.Text = dbh.dr["Mobile"].ToString(); this.txtQQ.Text = dbh.dr["QQ"].ToString(); this.txtICQ.Text = dbh.dr["ICQ"].ToString(); this.txtMsn.Text = dbh.dr["MSN"].ToString(); this.txtMail.Text = dbh.dr["Mail"].ToString(); this.txtWorkAdd.Text = dbh.dr["WorkAdd"].ToString(); this.txtAddress.Text = dbh.dr["Address"].ToString(); this.txtWeb.Text = dbh.dr["Web"].ToString(); this.txtZip.Text = dbh.dr["ZipCode"].ToString(); this.txtUnderWrite.Text = dbh.dr["UnderWrite"].ToString(); this.ddlSex.SelectedValue = dbh.dr["Sex"].ToString(); 4.3.2修改用户资料 上传头像 if ((Path = UpFile.upImage("UpFile\\Face\\", this.fuUserFace.FileName, this.txtRealName.Text)) != null) { new LeeHom.Web.File.Delete("UpFile\\Face\\" + Session["UserName"] + ".gif"); new LeeHom.Web.File.Delete("UpFile\\Face\\" + Session["UserName"] + ".jpg"); if (System.IO.Path.GetExtension(fuUserFace.FileName).ToLower() == ".jpg") { UpFile.MakeThumbnail(fuUserFace.PostedFile.InputStream, null, Path, 160, 120, "W"); } else { this.fuUserFace.PostedFile.SaveAs(Server.MapPath(Path.ToString())); } dbh.Reset(); dbh.tableName = "Users"; dbh.AddFieldParameters("Face", Path); dbh.conditionExpress = "ID=@ID"; dbh.AddConditionParameters("ID", Session["ID"]); dbh.DataUpdate(); … 4.4论坛 4.4.1获取所有帖列表 获取所有列表 dbh.sqlCommand="select ID,UserName,Title,Hits,Reverts,LastReplyTime,LastReplyUserName from Topic order by LastReplyTime Desc"; 搜索指定列表 dbh.sqlCommand = "select ID,UserName,Title,Hits,Reverts,LastReplyTime,LastReplyUserName from Topic where " + this.ddlClass.Text + " like '%" + Text.HtmlEncode(this.txtSKey.Text) + "%' order by LastReplyTime Desc"; 4.4.2发表新帖 dbh.tableName = "Topic"; dbh.AddFieldParameters("UserName", Session["UserName"]); dbh.AddFieldParameters("LastReplyUserName", Session["UserName"]); dbh.AddFieldParameters("Title", txtTitle.Text); dbh.AddFieldParameters("Contents", fckTopicNew.Value); if(dbh.DataInsert()) { dbh.Reset(); dbh.tableName = "ClassInfo"; dbh.fieldName = "AllTopicCount"; dbh.CountChange(1); Alert("发表成功!", "Topic.aspx"); } 4.4.3回帖 绑定要回复的帖 dbh.tableName = "ReTopic"; dbh.AddFieldParameters("TopicID", Request.QueryString["ID"]); dbh.AddFieldParameters("UserName", Session["UserName"]); dbh.AddFieldParameters("Contents", this.fckContent.Value); 回帖 dbh.Reset(); dbh.tableName = "Topic"; dbh.AddFieldParameters("LastReplyTime", DateTime.Now); dbh.AddFieldParameters("LastReplyUserName", Session["UserName"]); dbh.conditionExpress = "ID=@ID"; dbh.AddConditionParameters("ID", Request.QueryString["ID"]); dbh.DataUpdate(); dbh.Reset(); dbh.tableName = "Topic"; dbh.fieldName = "Reverts"; dbh.AddConditionParameters("ID", Request.QueryString["ID"]); dbh.CountChange(1); this.fckContent.Value = ""; Alert(this.ltlMessage, "回复成功!"); 4.5班级相册 4.5.1上传图片 获取本地图片 UpImage u = new UpImage(); string imgLink = DateTime.Now.ToString("yyyyMMddhhmmssfff") + Session["UserName"].ToString(); LeeHom.File.UpImage.ImgValue i=new LeeHom.File.UpImage.ImgValue(); if (ddlWater.SelectedValue != "no") { i.showWaterMark = true; i.waterMarkType = ddlWater.SelectedValue; i.waterMarkText = Session["UserName"].ToString(); u.ValueChange(i); } 4.5.2评论图片 绑定要评论的图片 dbh.Reset(); dbh.sqlCommand = "select * from RePhoto where PhotoID=@PhotoID order by ID desc"; dbh.AddSqlCmdParameters("PhotoID", Request.QueryString["ID"]); BinderRepeater br = new BinderRepeater(); br.datatable = dbh.GetDataTable(); br.repeater = this.rptRePhoto; br.havePage = true; br.lnkFirst = this.lnkFirst; br.lnkLast = this.lnkLast; br.lnkNext = this.lnkNext; br.lnkPrev = this.lnkPrev; br.ltlIntr = this.ltlPageIntr; br.pageSize = 8; br.Bind(); 评论 dbh.Reset(); dbh.tableName = "RePhoto"; dbh.AddFieldParameters("PhotoID",Request.QueryString["ID"]); dbh.AddFieldParameters("UserName",Session["UserName"]); dbh.AddFieldParameters("Contents",LeeHom.Web.Text.HtmlEncode(this.txtContents.Text)); if (dbh.DataInsert()) { dbh.Reset(); dbh.tableName = "Photo"; dbh.fieldName = "Reverts"; dbh.conditionExpress = "ID=@ID"; dbh.AddConditionParameters("ID",Request.QueryString["ID"]); dbh.CountChange(1); 4.5.3展示图片 检索所有图片 dbh.sqlCommand = "select * from PhotoClass order by TheDesc"; BinderRepeater br = new BinderRepeater(); br.datatable = dbh.GetDataTable(); br.repeater = rptPhotoClass; 列表显示图片 protected void DataBindTorptPhoto() { string str = string.Empty; if (Request.QueryString["SID"] != null && Request.QueryString["SID"] != "") { str = " where ClassID=@ClassID"; } dbh.Reset(); dbh.sqlCommand = "select * from Photo" + str + " order by ID desc"; if (str != string.Empty) { dbh.AddSqlCmdParameters("ClassID", Request.QueryString["SID"]); } BinderRepeater br = new BinderRepeater(); br.repeater = rptPhoto; br.datatable = dbh.GetDataTable(); br.havePage = true; br.pageSize = 12; br.lnkFirst = lnkFirst; br.lnkLast = lnkLast; br.lnkNext = lnkNext; br.lnkPrev = lnkPrev; br.ltlIntr = ltlPageIntr; br.Bind(); } 4.6显示注册用户 protected void BindTorptUserList() { dbh.Reset(); dbh.sqlCommand = "select ID,LastLogin,RealName,IsVaild,IsTeacher,RegTime,IsAdmin from Users order by RealName asc"; BinderRepeater br = new BinderRepeater(); br.datatable = dbh.GetDataTable(); br.repeater = rptUserList; br.havePage = true; br.ltlIntr = ltlPageIntr; br.lnkFirst = lnkFirst; br.lnkLast = lnkLast; br.lnkNext = lnkNext; br.lnkPrev = lnkPrev; br.pageSize = 20; br.Bind(); } 4.7站内信箱 4.7.1收信箱 dbh.Reset(); dbh.sqlCommand = "select * from Message where Receiver=@Receiver order by ID desc"; dbh.AddSqlCmdParameters("Sender", Session["UserName"]);
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服