在线问答系统.doc_第1页
在线问答系统.doc_第2页
在线问答系统.doc_第3页
在线问答系统.doc_第4页
在线问答系统.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息管理系统分析与设计课程设计题 目 在线问答系统 班 级 信息111 学 号 201152275113/201152275117 学生姓名 XXX 同组成员 XXX 指导教师 XX 编写日期 2014.7.10 目录1 开发计划21.2开发背景21.3 原系统概述21.4目标系统概述21.5 可行性分析21.6 项目计划32 需求分析32.1需求定义说明书42.2数据流程图42.3 数据字典53 概要设计73.1系统功能模块结构图73.2数据库概要设计73.3代码设计103.4输入/输出界面设计104 提问模块设计(XXX)124.1 提问模块主页展示124.2 提问模块技术分析135 发布信息界面(XXX)145.1 代码设计145.2 代码设计技术分析166 提问模块设计(XXX)176.1提问模块测试设计176.2 提问模块实际测试操作176.3 测试评价184 回复模块设计(XXX)184.1 问题回复模块分析185 编码(XXX)205.1 回复模块的关键技术205.2 回复模块相关代码216 测试与调试(XXX)246.1 回复模块测试设计246.2 回复模块实际测试操作247 对软件分析、设计及实施方面的评价及体会258 组长对小组工作及成员的评价261 开发计划1.1项目名称在线问答系统1.2开发背景读者朋友们对国内知名的大型搜索引擎网站百度比较熟悉,其中“百度知道”这个功能非常吸引人,我们在百度上搜索的资料几乎都是来自于“百度知道”根据现行社会大多数用户的相关需求,因此开发了“明日知道问答系统”这个网站,实现的功能及流程操作和“百度知道”相似。在网络应用中,互动性、人性化的网络服务已成为吸引访问者、提高网站访问量、增加客户转发度的一种手段,也是未来网络服务发展的趋势。1.3 原系统概述 在没有互联网的情况下,人们寻求解决问题的方案唯一途径是来自于寻求朋友或亲人的帮助,这种方式给询问者带来极大的不便且答复效率较低,往往不能及时得到最佳答案。此外不同人会针对同一问题多次咨询,造成了严重的资源浪费。 1.4目标系统概述明日知道在线问答系统主要是为了解决编程爱好者在编程过程中遇到的问题而开发的一个在线问答平台。该系统为用户提供一个问题交流的平台,可以注册用户、提出问题、回答问题、关闭问题、设置最佳答案、设置悬赏积分等功能。对于明日知道在线问答系统在设计时应该满足以下几个目标:(1)要求是一个互动性很强的网站,需要多方参与、多方协作完成。参与者越多,发挥的作用就越大、效果越好。(2)有良好的人机交互功能:用户界面直观、友好,数据录入灵活、简便。(3)功能强大,拓展性强,稳定性高。(4)系统无操作系统限制,方便不同平台之间的移植。(5)网站最大限度地实现易维护性和易操作性。(6)网站运行稳定、安全可靠。 1.5 可行性分析可行性分析的任务,并不是所有问题都有简单明显的解决办法,事实上,许多问题不可能在预定的系统规模之内解决。如果问题没有可行的解,那么花费这项开发工程上的任何时间、资源、人力和经费都是无谓的浪费。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。所以从以上的分析原则来看,所设计的在线问答管理系统是一个规模不太大的系统,但是目标明确,清晰的描述了对目标系统的一切限制和约束。在使用过程中,要看它能不能带来效益,毕竟在现今社会效率是第一位的。21世纪是计算机的时代,它必然取代一部分人的工作,高科技的信息系统进入社会生活的方方面面是发展的趋势。本设计从以下三个方面进行可行性研究:1.5.1技术可行性分析目前有很多程序语言和相应的开发工具都可以适用于本系统的开发,例如VB、ASP、PHP等,数据库有DB2、Oracle、Informix、SQL Server等,基本所有的软件程序都是用这些工具开发的,本系统网站开发环境运用的是Microsoft Visual Studio2008集成开发环境,网站开发语言及核心技术是ASP.NET+C#+LINQ数据库访问技术,网站的后台数据库是SQLServer2005,这些技术都是成熟可靠的,所以在技术上本程序的开始时可行的。1.5.2经济可行性分析开发本系统操作系统采用Windows Server2003(SPI),在开发过程中只需要一台PC,估算新系统的成本效益分析,其中包括估计项目开发的成本,开发费用和今后的运行、维护费用也不高,所以在经济上具有一定的可行性。 1.5.3操作可行性分析本系统的操作对象主要是在线问答系统管理员或经身份认证的问答用户,对于他们不需要复杂的操作,而且此系统采用图形界面,界面美观大方形象,操作十分方便。适合普通人群使用,对于错误操作或者操作频繁者会有相应的提示操作,所以操作可行。1.6 项目计划表 1-1 项目计划任务/时间分配(1天)人员分配详细任务原型系统研究(1天)XXX、XXX搜索寻找合适的原型系统开发计划/需求分析(1天)XXX、XXX项目名称、开发背景、对原系统概述、目标系统概述、项目计划、可行行分析、需求分析、数据流程图、数据字典数据库设计/详细设计(1天)XXX、XXX系统功能模块图、数据库概要设计(E-R图)、代码设计、输入/输出界面设计、个人详细设计编码/测试/分析(1天)XXX、XXX实现主要界面/测试系统/分析系统优缺点2 需求分析 2.1需求定义说明书2.1.1用户功能需求分析通过对系统需求进行分析,我们可以确定系统中有两类用户:管理员、用户。各类用户的具体描述如下: 管理员:管理员维护整个系统,包括查看用户信息、管理问题、删除问题。 具体功能解释如下:(1)管理员功能是对用户提出的问题进行管理及用户相关信息(如积分、获得最佳答案数等)的查询。 用户:搜索问题、注册账户、提出问题、回答问题、关闭问题、设置最佳答案; 具体功能解释如下:(1)用户搜索各个编程语言的相关知识(2)提问者可以发布某一编程语言的问题,回复者给出答案。(3)提问者在众多答案中评选最佳答案,被评为最佳答案的回复者可以获得规定的积分奖励。(4)如果没有正确的答案,提问者可以关闭该问题。(5)用户可以在前台网站的搜索引擎中查找待解决或自己感兴趣的各个编程语言问题及最佳答案。2.1.2 性能需求分析(1)安全性高:本系统需要进过身份认证的人员才可以登录,安全性高; (2)可靠性:该系统应该运行正常,可靠性很好;(3)稳定性:该系统应该输出结果无误,稳定性很好;(4)便捷性:该系统采用图形界面,操作方便快速,便捷性好。2.2数据流程图根据系统调查阶段的数据资料,并依据用户的要求,确定该在线问答系统的基本功能和工作过程如下:(1) 顶层图根据用户与该系统的交互可得出,用户主要就是提出问题和回答问题,管理员则管理问题。如图2-1所示:图 2-1 在线问答系统顶层图(2) 一层图首先用户可根据自己的需求搜索问题寻找答案,也可直接选择提出问题,其他用户可根据此问题做出回复,原用户在众多回复中选择最优答案,若无满意答案或其他情况可随时关闭此问题。管理员可对问题进行管理,删除不适当的问题。根据相应的功能要求,我们绘制系统的一层数据流程图,如图2-2所示:图 2-2 在线问答系统一层图2.3 数据字典数据字典是对描述数据流程图中的数据项、数据流、数据存储、加工处理逻辑等组成部分的严格定义,下面是本系统的数据字典。 数据项的定义数据项编号:1-01数据项名称:用户代码别名:无简 述:某个用户的编号类型:字符串型长度:50字节 数据流的定义数据流名称:问题编号:F1简述:用户提出的问题数据流来源:用户数据流去向:问题记录系统数据流组成:日期 + 提问标题+ 提问内容流通量:无限制高峰流通量:无限制 数据存储的定义数据存储的名称:答题信息数据存储编号:D1简述:记录回复主题、回复内容、回复时间等信息数据存储组成:回复代码 + 回复主题 + 回复内容+回复时间关键字: 回复内容 处理逻辑的定义处理名:在线用户提问编号:P1输入:从用户输入输出:从回答问题过程输出描述:当用户将问题发布至系统时,其他用户可自行选择是否回复问题 外部实体的定义外部实体名称:用户外部实体编号:1外部实体组成:用户代码+用户名+性别+邮件+密码+积分简 述:用来描述外部实体的基本信息情况3 概要设计3.1系统功能模块结构图明日知道网分为前台操作和后台管理两个网站。前台网站主要由提问模块、恢复模块、设置最佳答案模块、关闭问题模块、搜索问题模块、用户注册模块和用户登录模块7部分组成。后台管理网站主要由用户管理模块和问题管理模块组成。明日知道问答系统的功能结构如图3-1所示。图 3-3 在线问答系统功能结构图3.2数据库概要设计数据库是数据库应用程序的核心。数据库设计是建立一个应用程序最重要的步骤之一。数据库设计一般要在需求分析和数据分析的基础上进行概念设计、逻辑设计和物理设计。3.2.1 概念设计经过对该系统的研究我们了解到系统中的实体类型有:用户、问题、答案、管理员,这些实体之间的相互关系有:管理员与问题之间存在“管理”联系,是一对多的。问题与答案之间存在“回答问题”关系,是一对多的。用户和问题之间存在“提问”关系,是多对多的。用户和答案之间存在“回答”关系,是多对多的。每个实体的属性分别是:用户:用户代码,用户名,密码,性别,邮件,用户积分,获得悬赏积分,发出悬赏积分,回复问题数,被评为“最优问题”数,已解决问题数,未解决问题数,已关闭问题数,注册时间;问题:提问代码,提问目录,用户代码,提问标题,提问内容,悬赏分数,发布时间;答案:回复代码,提问代码,回复者代码,回复主题,回复内容,是否为最佳答案,好投票计数,不好投票计数;画出在线问答系统的ER图如图3-2所示。图 3-4 在线问答系统E-R图3.2.2 物理设计物理设计的目的是根据具体DBMS的特征,确定数据库的物理结构(存储结构)。关系数据库的物理设计任务包括两个方面,一是确定所有数据库文件的名称及其所含字段的名称、类型和宽度;二是确定各数据库文件需要建立的索引,在什么字段上建立索引等。各表结构如下表所示。tb_Question(问题表),用于保存用户的提问信息,新建提问时状态为“未解决”;提问者设置最佳答案是状态变为“已解决”;提问关闭时状态为“已关闭”。表结构如表3-1显示。 表 3-2 问题表字段名数据类型长度是否主键描述Codevarchar50是提问代码CatalogCodevarchar50否目录代码UserCodevarchar50否用户代码Titlenvarchar200否提问标题Textntext16否提问内容Markint4否悬赏分数PostDatetimedatetime8否发布时间Stateint4否状态(0-未解决;1-已解决;2-已关闭) tb_Answer(答案表),用于保存答案的回复信息,提问者设置最佳答案时,将是否为最佳答案设置为真。表结构如表3-2显示。 表 3-3 答案表字段名数据类型长度是否主键描述Codevarchar50是回复代码QuestionCodevarchar50否提问代码UserCodevarchar50否回复者代码Titlenvarchar200否回复主题Textntext16否回复内容BestAnswerbit1否是否为最佳答案PostDatetimedatetime8否回复时间VoteNiceint4否好投票计数VoteBadint4否不好投票计数 tb_UserInfo(用户信息表),用于保存用户注册的信息。表结构如表3-3所示。 表 3-4 用户信息表字段名数据类型长度是否主键描述Codevarchar50是用户代码UserNamenvarchar200否用户名Passwordvarchar20否密码Sexchar2否性别Emailvarchar100否邮件Markint4否用户积分RewardMarkint4否获得悬赏积分PaidMarkint4否发出悬赏积分ACountint4否回复问题数AAcceptCountint4否被评为“最优答案”数QSolvedCountint4否已解决问题数QUnsolveCountint4否未解决问题数QCancelledCountint4否已关闭问题数CreatedCountdatetime8否注册时间3.3代码设计 3.3.1 问题代码设计为了方便对管理员对问题的管理,用户提问的信息编码以字符串表示。根据在线问答系统的管理,“*”为小写的英文字母和数字来表示,用“-”来连接,格式固定。问题代码设计方案如图3-3所示。图 3-5 问题代码设计 3.4输入/输出界面设计 3.4.1明日知道前台首页 如图3-4所示:(1) 网页首尾部:网页头部比较简单,但是却很精简,使明日知道搜索的LOGO一目了然。在底部放置企业邮箱、传真、公司地址等信息,方便用户咨询。(2) 内容:为增强用户体验度,该页面利用TextBox控件制作搜索文本框,方便用户搜索问题。为了使用户更加精确搜索,特地在搜索框上方添加导航条,缩小搜索范围。搜索框下方为热门搜索,可直接点击,简略输入操作。(3) 配色:本页面以绿色为主,绿色与人类息息相关,是永恒的欣欣向荣的自然之色,代表了生命和希望,也充满了青春与活力,是寻求知识的最佳颜色,给人舒适与安宁,同时有缓解眼部疲劳的作用。图 3-6 明日知道系统首页3.4.2 后台管理员问题界面(1) 布局:在背景色主要为绿色的情况下,上方图片是双手打字的背景,可体现出用此软件搜索或发布或回答问题;左侧导航列特地选用白色背景,黑色字体,使管理员一眼就能找到系统的主要功能;在右侧问题显示表中淡绿色和白色间隔的形式,使管理员查看问题更加清晰明了。(2) 显示列表:在管理员管理问题时最主要的就是问题类别、提问者以及提问标题,其他附加悬赏时间、发布时间及状态,方便管理员查看,每一行后面都有删除问题的按钮,管理员可根据行中信息决定是否删除问题。在问题管理上方有搜索提问标题的文本框,管理员可输入敏感词汇更加方便查询是否存在这类的问题,方便删除。图 3-7 管理员后台界面4 提问模块设计(XXX)4.1 提问模块主页展示提问模块实现的功能是保存用户的提问信息。用户首先在提问页面录入主题、内容、类别、悬赏分数,其中主题、类别、内容为必填项,然后单击“发送帖子”即可发布问题。在加载提问页面时,程序首先会判断用户是否登录,如果没有登录先跳转到登录提示页面。登录提示页面如图所示。如果没有登录帐号,则可注册帐号再登录,若已经注册帐号,则直接登录即可发布信息。如图4-1所示。 提问模块实现步骤:(1)创建一个Web实体,命名为Qustion.aspx (2)Answer.aspx页面运用的主要控件:DropDownList控件、TextBox控件、ValidateCode控件、ImageButton控件图 4-8 发布界面 4.2 提问模块技术分析 在模块功能的展示上,绘制了提问模块的流程图。如图4-2所示。图 4-9 提问模块流程图 在上图中,执行提问主要用到LINQ TO SQ中对数据库的插入和修改操作。数据库的插入:tb_Question question = new tb_Question(); /创建提问信息question.Title = txtTitle.Text; /给实体成员赋值DC.tb_Question.InsertOnSubmit(question); /保存提问信息DC.SubmitChanges(); /提交至服务端数据库的修改操作:tb_UserInfo user = DC.tb_UserInfo.FirstOrDefault(itm = itm.Code = ClientHelper.UserCode);user.QUnsolveCount = user.QUnsolveCount + 1; /未解决问题数+1DC.SubmitChanges(); /提交至服务器端5 发布信息界面(XXX)5.1 代码设计在该系统中由于提问问题、回复问题、设置最佳答案及关闭问题都涉及到分数的分配或问题数量的统计操作,所以必须先以注册会员的身份登录,然后才可以将提问者、回复者的信息与数据库中存储的信息进行核对,才可以有操作权限的判断及积分的分配。图 5-10 发布界面图5-1的主要实现代码如下: (1)在提问页面的加载时间Page_load中,主要实现两个功能:一个是判断用户是否登录,如果没有登录将提示登录;二是将数据类别数据库表中的内容填充到下拉列表框中,具体代码如下: DataClassesDataContext DC = new DataClassesDataContext(); protected void Page_Load(object sender, EventArgs e) if (!Page.IsPostBack) if (string.IsNullOrEmpty(ClientHelper.UserCode)/提问前判断用户是否登陆 SessionRedirectFrom = Request.Url; /记住当前的Url Response.Redirect(NotLogin.aspx); /跳转到登陆提示页 var query = from item in DC.tb_Catalog /取类别数据表中的数据 select new Code = item.Code, Name = item.Name ; ddlCatalogCode.DataSource = query; /将类别数据表中的数据绑定到类别下拉列表框 ddlCatalogCode.DataTextField = Name; ddlCatalogCode.DataValueField = Code; ddlCatalogCode.DataBind(); (2)输入提问信息后,单击发送帖子按钮将提问信息保存到数据库中,由于提交了一个未解决的问题,所以提问者的未解决数加1,全局设置表中未解决总数也加1。主要代码如下: /保存提问信息 protected void ibtnPostQuestion_Click(object sender, ImageClickEventArgs e) if (!ValidateCode1.CheckSN(txtCheckCode.Text) /判断验证码是否正确 lblMessage.Text = 输入验证码不正确!; return; if (Page.IsValid) tb_UserInfo user = DC.tb_UserInfo.FirstOrDefault(itm = itm.Code = ClientHelper.UserCode); if (txtMark.Text.Trim() != & user.Mark Convert.ToInt32(txtMark.Text) Response.Write(window.alert(用户的分数不足!); return; tb_Question question = new tb_Question(); /创建提问信息实体 question.Code = ClientHelper.BuildCode(); /调用公共类生成唯一号 /给实体成员赋值 question.CatalogCode = ddlCatalogCode.SelectedValue; question.UserCode = ClientHelper.UserCode; question.Title = txtTitle.Text; question.Text = txtText.Text; if (txtMark.Text.Trim() !=) question.Mark = Convert.ToInt32(txtMark.Text); question.PostDatetime = ClientHelper.ServerDate; question.State = 0; /状态默认为0(未解决) DC.tb_Question.InsertOnSubmit(question); /保存提问信息 /用户信息表中提问者的未解决问题数+1 user.QUnsolveCount = user.QUnsolveCount + 1; /全局配置表中未解决问题数+1 tb_Config config = DC.tb_Config.FirstOrDefault(); config.UnSolved = config.UnSolved + 1; DC.SubmitChanges(); /提交结果到服务器端 txtTitle.Text = ; /清空输入内容 ddlCatalogCode.SelectedIndex = 0; txtText.Text = ; txtMark.Text = ; txtCheckCode.Text = ; Response.Write(window.alert(保存成功!); 5.2 代码设计技术分析LINQ TO SQL可直接对数据库进行插入、查找、修改、删除、排序、聚合、分分区等操作。在使用LINQ TO SQL查询和操作数据库之前,首先创建自动生成的数据上下文类的实例。其代码如下: DataClassesDataContext DC = new DataClassesDataContext();创建上下文类实例后可以查询数据库中的数据,与传统的SQL存储过程相比,使用此方法获取数据更加简洁。在提问模块主要是发布问题,用到的是向数据库中添加数据,实现该功能主要通过InsertOnSubmit()方法和SubmitChange()方法实现,其中,InsertOnSubmit()方法将单个实体的集合添加到Table(T)类的实例中,SubmitChange()方法计算要插入、更新或删除的以修改对象的集,并执行相应命令以实现对数据库的修改。6 提问模块设计(XXX) 6.1提问模块测试设计表 6-5 提问模块测试设计检测项测试条件测试数据预计测试结果发布问题未登录发布未登录发布跳转到提示页面提示:您需要登录才可以参与本站活动。没有帐号?注册登录用户密码账号正确lyl,110110,egk3登录成功用户错误ly,110110,egk3该用户名不存在用户为空“”,110110,egk3请输入登录昵称密码错误lyl,110111,egk3密码不正确,请重新输入密码为空lyl,“”,egk3输入密码不能为空!验证码错误lyl,110110,egk2输入验证码不正确!验证码为空lyl,110110,“”输入验证码不正确!登录成功主题、类别、内容、悬赏分数、验证码正确程序设计,ASP.NET,寻找程序源码,10,egk3发布成功类别为空程序设计,“”,寻找程序源码,10,egk3悬赏分数为空程序设计,ASP.NET,寻找程序源码,“”,egk3主题为空“”,ASP.NET,寻找程序源码,10,egk3请输入主题内容为空程序设计,ASP.NET,“”,10,egk3请输入要发表的内容验证码错误程序设计,ASP.NET,寻找程序源码,10,egk1输入验证码不正确!验证码为空程序设计,ASP.NET,寻找程序源码,10,“”请输入验证码6.2 提问模块实际测试操作表 6-6 提问模块测试操作检测项测试条件测试数据预计测试结果实际测试结果发布问题未登录发布未登录发布跳转到提示页面提示:您需要登录才可以参与本站活动。没有帐号?注册发布失败登录用户密码账号正确lyl,110110,egk3登录成功登录成功用户错误ly,110110,egk3该用户名不存在登录失败用户为空“”,110110,egk3请输入登录昵称登录失败密码错误lyl,110111,egk3密码不正确,请重新输入登录失败密码为空lyl,“”,egk3输入密码不能为空!登录失败验证码错误lyl,110110,egk2输入验证码不正确!登录失败验证码为空lyl,110110,“”输入验证码不正确!登录失败登录成功主题、类别、内容、悬赏分数、验证码正确程序设计,ASP.NET,寻找程序源码,10,egk3发布成功发布成功类别为空程序设计,“”,寻找程序源码,10,egk3悬赏分数为空程序设计,ASP.NET,寻找程序源码,“”,egk3主题为空“”,ASP.NET,寻找程序源码,10,egk3请输入主题发布失败内容为空程序设计,ASP.NET,“”,10,egk3请输入要发表的内容发布失败验证码错误程序设计,ASP.NET,寻找程序源码,10,egk1输入验证码不正确!发布失败验证码为空程序设计,ASP.NET,寻找程序源码,10,“”请输入验证码发布失败6.3 测试评价首先点击“我要提问”,当未登录时跳转到提示登录页面,当已登录时成功跳转到问题发布页面,主题、内容、验证码为必填项,类别、悬赏分数选填,操作正常则发布成功!在此界面上,仍然存在不足之处,在类别选项中若不选则会默认为第一个,也就是自动选择类别!当全部为空时,错误提示只是在当前页面提示,并没有以弹出框的形式出现,不能引人瞩目!4 回复模块设计(XXX)4.1 问题回复模块分析 4.1.1 回复模块实现前提 回复模块实现的功能是对提问模块提出的问题进行回复,并不是所有地提问都允许回复,回复问题的前提如下。(1) 该问题没有被提问或者关闭(或管理员删除)。(2) 该问题还没有最佳答案。(3) 该用户没有回复过该问题。 4.1.2 回复模块实现方式在回复面录入回复主题、回复内容及正确的验证码后,单击“发送帖子”按钮,将回复信息保存到数据库的答案表中。如图4-1回复模块。图 4-11 回复模块 4.1.3回复模块实现流程 为了更加清晰地理解回复模块的总体设计思路,详见如图4-2回复模块的流程图。图 4-12 回复模块流程图 4.1.4 回复模块实现步骤(1)创建一个Web实体,命名为Answer.aspx (2)Answer.aspx页面运用的主要控件 控件类型:DataList控件、TextBox控件、ValidateCode控件、ImageButton控件5 编码(XXX)要求选用特定程序设计语言对所选的数据管理、查询、报表几个模块进行代码实现,并复制主要的实现界面,描述实现中的关键技术和技术难点(著明制作人,制作时间)5.1 回复模块的关键技术 在回复模块执行“进入提问”操作时主要应用了查询字符串传值技术和Session传值技术。执行“提交答案”操作应用了LINQ to SQL中对SQL Server数据库的修改和删除操作。(1)获得查询字符串中指定参数值的实例代码 if (Request.QueryStringQuestionCode != null) /提问唯一号不为空 QuestionCode = Request.QueryStringQuestionCode.ToString();(2)从Session中取出指定对象的实例代码 SessionRedirectFrom = Request.Url;(3)应用LINQ to SQL中对SQL Server数据库删除操作的代码tb_Answer answer = DC.tb_Answer.FirstOrDefault(itm = itm.Code = code); DC.tb_Answer.DeleteOnSubmit(answer);/删除回复信息DC.SubmitChanges();/提交删除操作5.2 回复模块相关代码(1)在回复问题页面有两个DataList控件,分别用来显示提问信息回复信息。在初始化这两个DataList数据时都调用了一个自定义LoadData()方法,主要代码如下:private void LoadData() var questionQuery = from item in DC.tb_Question/使用LINQ查询提问信息 where item.Code = QuestionCode join user in DC.tb_UserInfo on item.UserCode equals user.Code join catalog in DC.tb_Catalog on item.CatalogCode equals catalog.Code select new Code = item.Code, Title = item.Title, Text = item.Text, QuestionMark = item.Mark, PostDatetime = item.PostDatetime, UserCode = user.UserName, Mark = user.Mark, AAcceptCount = user.AAcceptCount, CreatedDate = user.CreatedDate, CatalogCode = item.CatalogCode, CatalogName = catalog.Name ; if (questionQuery != null) dlQuestion.DataSource = questionQuery; /将提问信息绑定到DataList dlQuestion.DataBind(); var answerQuery = from item in DC.tb_Answer/使用LINQ查询回复信息 where item.QuestionCode = QuestionCode join user in DC.tb_UserInfo on item.UserCode equals user.Code select new Code = item.Code, QuestionCode = item.QuestionCode, Title = item.Title, Text = item.Text, PostDatetime = item.PostDatetime, UserCode = user.UserName, Mark = user.Mark, AAcceptCount = user.AAcceptCount, CreatedDate = user.CreatedDate ; dlAnswer.DataSource = answerQuery; /将回复信息绑定到DataList dlAnswer.DataBind(); (2)双击问题回复页(Answer.aspx)中的“发送帖子”按钮,触发其Click事件,在该事件中科将回复信息保存到数据库中,并且当回复了一个问题时回复者的回复问题数+1。主要代码如下:protected void ibtnPostAnswer_Click(object sender, ImageClickEventArgs e) int cnt = DC.tb_Answer.Count(itm = itm.QuestionCode = QuestionCode & itm.UserCode = ClientHelper.UserCode); if (cnt 0) lblMessage.Text = 不能重复回复同一问题; return; int cnt2 = DC.tb_Question.Count(itm = itm.Code = QuestionCode & itm.UserCode = ClientHelper.UserCode); if (cnt2 0) lblMessage.Text = 不能回复自已提出的问题; return; if (!CurrencyCheck(QuestionCode) return; /判断不能修改其他用户的帖子/? if (!ValidateCode1.CheckSN(txtCheckCode.Text) lblMessage.Text = 输入验证码不正确!; return; if (Page.IsValid) if (AnswerCode = )/传入的查询字符串为空,是新建回复信息操作 tb_Answer answer = new t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论