1在线答疑系统院(系):专业:班级:学生:学号:指导教师:职称:设计日期:年月日至年月日2一、设计目的当今社会已经进入信息化时代,信息正以前所未有的速度急剧增长,各类信息汇聚在一起构成知识的海洋。面对信息爆炸时代,人们只有通过学习和交流帮助自己和他人提高学识水平和综合素质,在学习的过程中,必然会遇到各种各样的问题,孔子说:“三人之行,必有我师”,因此问答是解决和回答问题的一个重要手段。传统的问答方式限于书面和口头交流,容易受时间和空间影响,互联网时代的到来使得世界各地的人们有机会共享资源和交流信息,在线答疑系统的目的是及时收集各地人们提出的各种类型的问题,让来自不同行业、不同背景、不同年龄的人们集体参与解决。最终使提问者获得满意的答案。不同背景、不同年龄的人们集体参与解决。最终使提问者获得满意的答案。在线答疑系统的最终目的是帮助用户解决学习生产生活中的各种类型的问题,由于系统基于网络平台,因此来自不同地方的用户可以集体参与解决一个问题,让问题及时得到解决,突出了“一人有难,八方支援”的特点,这是互联网特有的优势,同时在线答疑系统将用户问题和回答保存在数据库中,建立了问题库,用户可以直接搜索与自己问题相类似的问题答案,省去了提问和等待浪费的时间。行业背景:经过调查发现,目前许多网站的在线答疑系统非常简单,只是一个简单的留言板,不能对用户提出的各种类型的问题做出准确的分类。也没有提供问题库搜索功能。改系统针对这些问题做了一些改进,实现了问题分类、问题搜索、用户积分等级制和消息互发等功能,有效的改善了用户回答问题的积极性,这样也使提问者能够及时的找到最佳答案。而且系统为每个用户建立了个人中心,用户可以修改自己的资料,比如选择个性头像、个性签名等,用户也可以加其它用户好友,查看好友的资料、查看好友回答和提出的问题,还可以给用户发送消息,共同商讨问题的解决办法,这样做大大方便了用户提问和查找答案。二、设计任务本系统基于B/S,包含以下几个功能模块。2.1用户管理模块由用户登录、用户注册和用户退出3个部分组成。用户可以以两种身份登录本系统:普通用户和管理员;不同身份登录被系统授予不同的使用权限,这样提高本系统的安全性,避免无关人员获取不在他权限反范围内的信息。2.2基本数据的维护这个功能模块主要实现对问题库信息、答疑问题库信息和用户信息等基本数据的维护。如用户信息的更新、删除;问题库和答疑问题库信息的删除、修改等。2.3信息查询功能系统提供了问题库和答疑问题库,问题库保存了用户提出的问题,答疑问题库保存了已经回答的问题。信息查询是一项非常重要的功能,它主要包括已解决问题的查询、未解决问题查询、关键字问题查询、用户资料查询。这项功能方便用户查询和自己的问题相关的答案,也有利于管理员维护问题库和用户信息。2.4在线答疑室在线答疑室分为主题答疑室和自由答疑室,用户可以在主题答疑室提出和回答与主题相关的问题,在自由答疑室用户可以提出各种类型的问题,让其它用户参与解答。2.5离线答疑室用户可以在离线答疑室查看自己提出的问题是否解决、也可以提出问题。待上线后再将问题上传到在线答疑室。3三、设计内容3.1系统的功能模块图如下:图3.1系统的功能模块图3.2用户管理模块用户管理模块的功能模块图如下:图3.2用户管理模块功能图1)用户登录用户输入用户名和密码后,系统对用户名和密码进行验证,如果登录成功,则可以进入主页面。否则跳转到错误页面,用户最多可以尝试5次,如果5次均未成功,10分钟之内2)用户注册这个功能实现把用户基本信息输入到数据库中,用户基本资料包括用户名、密码、性别、电子邮箱等,如果输入了正确完整的信息,则将用户资料保存到数据库中。基本流程如下:3)用户退出用户点击退出后,销毁session,安全退出系统。3.3基本数据的维护基本数据维护模块的具体功能如图所示。基本信息维护包括:问题库信息、答疑在线答疑系统用户管理模块基本数据维护信息查询在线答疑系统离线答疑系统用户输入个人资料信息添加到数据库用户信息更新用户管理用户登录用户注册用户退出4问题库信息和用户信息。图3.3基本数据维护模块功能图3.4信息查询功能信息查询是系统不可缺少的一个部分。信息查询包括:问题库信息查询、答疑问题库信息查询以及用户信息查询。用功能图表示如下:图3.4信息查询模块功能图3.5在线答疑室在线答疑室包括自由答疑室和主题答疑室。功能图表示如下:图3.5在线答疑室3.6离线答疑室用户在线时可以将自己提出的问题信息下载到本地客户端,便于离线浏览。同时用户可以离线提出问题。当能够上线时用户可以将自己的问题上传到线上。用活动图表如下:基本数据维护修改问题库信息删除问题库信息修改答疑问题库删除答疑问题库信息删除用户信息信息查询问题库信息查询答疑问题库查询用户信息查询在线答疑室自由答疑室主题答疑室5图3.6离线答疑室3.7系统用例3.7.1通过分析的到以下用例:用户登录用户注册用户信息修改问题库信息查询问题库信息修改问题库浏览答疑问题库信息查询答疑问题库信息修改答疑问题库浏览主题答疑室增加在线下载问题库信息离线提问在线提问在线上传问题退出系统3.7.1可以创建以下参与者:系统管理员6用户3.7.1系统管理员的用例关系图如下所示:图3.7.1系统用例图3.7.2用户的用例关系图如下:图3.7.2用户用例关系图73.8数据库设计3.8.1E-R图图3.8.1在线答疑系统E-R图3.9数据库表3.9.1用户表(users)功能:保存用户名和密码1PM管理1密码用户角色编号用户编号用户名注册日期积分个人签名电话编号出生日期内容标题问题编号最后回复时间点击数提问时间角色名称权限编号权限名状态学历电子邮箱等级用户信息存在角色属于权限问题信息拥有提出问题主题主题名称MNMN11性别主题编号N包括1M83.9.2用户信息表(userinfo)功能:保存用户注册资料字段名中文说明数据类型是否为空默认值检查约束键约束userinfoid用户信息intno主键userid用户idint外键sex性别Char(2)no男男/女headimg头像Varchar(20)birthday出生日期datetimenoregtime注册日期datetimenogetDate()userstate用户状态intno0userclass用户等级intno1userpoint积分longno20term学历Varchar(10)noemail电子邮件Varchar(30)nophone电话号码Varchar(15)yesintroudce个人介绍Nvarchar(50)yespwdofqs密码问题Nvarchar(50)noansofqs密码答案Nvarchar(50)no3.9.3用户角色表(roles)功能:保存用户角色信息字段名中文说明数据类型是否为空默认值检查约束键约束roleid角色idintno0主键rolename角色名称Varchar(6)no普通用户3.9.4消息表(messages)功能:保存所有用户发送的消息字段名中文说明数据类型是否为空默认值检查约束键约束msgid消息idintno主键suserid发送者IDintnoruserid发送者IDintnomsgtitle消息标题varchar(50)nomsgcontent消息内容textnostime发送时间datetimeno字段名中文说明数据类型是否为空默认值检查约束键约束userid用户编号intno主键username用户名称Nvarchar(30)nouserpwd用户密码Nvarchar(40)noroleid角色idintno0外键93.9.5好友表(friends)功能:根据用户ID保存用户的好友ID3.9.6问题类型表功能:保存问题的主题名字段名中文说明数据类型是否为空默认值检查约束键约束qstypeid问题类型intno主键qstypename问题类型名Nvarchar(10)no3.9.7问题信息表(questions)功能:保存所有用户的提问字段名中文说明数据类型是否为空默认值检查约束键约束qsid问题idintno主键qstypeid问题类型idintno外键userid用户(提问者)idintno外键title标题Nvarchar(50)nocontent内容ntextnoclickcount点击数intnoqstime提问时间datetimenogetDate()lstrptime最后回复时间datetimenostatus问题状态Char(6)no未解决3.9.8问题答案表(answers)功能:根据问题ID保存相应的答案字段名中文说明数据类型是否为空默认值检查约束键约束ansid答案idintno主键qsid问题idintno外键qstypeid主题idintno外键userid用户idintno外键anstime回答时间datetimenogetDate()ansinfo回答内容ntextyes四、测试与评价本系统采用asp语言开发,数据库采用sqlserver2000,实现了数据交互功能。整个系统采用三层结构实现,即界面层、控制层和业务逻辑层,比较好的实现了代码字段名中文说明数据类型是否为空默认值检查约束键约束friendididintno主键userid登录用户IDintnofuserid好友IDintno10的高类聚、低耦合,有利于系统的测试和升级。同时系统部分采用了ajax技术,实现了页面的局部刷新,减轻了服务器端的压力。五、体会与收获通过这一个多月的学习和开发,在线答疑系统已基本完成了主要的功能。此系统通过使用asp语言和sqlserver2000数据库,让我真正了解了理论与实践相结合的重要性和必要性。由于初次接触asp语言,这一个月来有辛酸也有开心,在开发的过程遇到了很多难以解决的问题,有时候真的很想放弃,但我还是坚持下来,当一个个难题被解决的时候,那种成就感简直难以用言语来形容。很庆幸彭老师给我们这样一个可以锻炼自己实际操作能力的机会。为了能更好的完成本课程设计,我参考了大量书籍,基本能在预定的时间内完成此系统,在此很感谢老师以及同学对我的帮助和指导。六、附录源代码清单:1)classMain.asp的源代码:%PublicFunctionExecuteSql(sqlstr)’执行sql语句并返回执行结果OnErrorResumeNext’忽略错误继续执行setExecuteSql=conn.execute(sqlstr)IfErr.Number0then’如果错误发生错误,则清除错误对象和连接对象Err.ClearSetconn=NothingResponse.Write数据库出现错误:&Err.DescriptionEndIfEndFunctionPublicFunctionRsClose(rs)’关闭记录集rs.closesetrs=nothingEndFunctionPublicFunctionShowMsg(msg,url)’显示提示并跳转到指定页面Response.Write(scriptlanguage='javascript'&vbCrlf)//获取对标记名为info的html标记的引用Response.Write(var_td=document.getElementById('info');&vbCrlf)//创建文本结点Response.Write(var_tn=document.createTextNode('&msg&');&vbCrlf)//添加文本结点到td中Response.Write(_td.appendChild(_tn);&vbCrlf)Response.Write(varurl='&url&';&vbCrlf)//将页面重定向到指定的urlResponse.Write(window.setTimeout('window.location.replace(url)',2000);)Response.Wri