资源描述
20162017学年第1学期项目名称BBS-电子论坛专业班级xxx级软件工程xx班学号20145823xxx 201458239xxx姓名 xxx xxx指导教师王 宇软件工程学目录1 软件需求分析11.1 软件项目的综合需求11.1.1课题背景11.1.2 课题研究现状11.1.3课题研究的意义31.2软件项目的数据要求31.2.1需求陈述31.2.2业务流程31.3 软件项目的逻辑模型41.3.1业务用例建模41.3.2帖子管理业务用例图51.3.3会员管理业务用例图51.3.4板块信息业务用例61.3 软件项目的逻辑模型61.3.1会员帖子发布概念层类图61.3.2会员发布帖子说明层类图72 软件设计92.1开发类设计92.1.1会员发布帖子实现层类图92.1.2用户发布帖子顺序图:92.1.3用户发布帖子活动图102.2 数据设计102.2.1绘制E-R图进行概念建模113 软件实现143.1 系统界面153.2 其它模块163.2.1会员发帖回帖模块173.2.2会员修改个人信息模块183.2.3留言模块193.2.4管理员模块194 软件测试214.1测试环境224.2测试目的224.3测试功能224.4具体过程224.5解决方案235 开发总结245.1 总结与展望255.2 主要收获255.3 存在的问题25参考资料261 软件需求分析1.1 软件项目的综合需求1.1.1课题背景电子公告牌系统(Bulletin Board System,英文缩写BBS)通过在计算机上运行服务软件,允许用户使用终端程序通过Internet来进行连接,执行下载数据或程序、上传数据、阅读新闻、与其它用户交换消息等功能。在网络发达的今天,论坛系统服务已经是互联网站一种极为罕见的互动式交流服务。论坛可以向网友提供开放式的分类专题讨论区服务,网友们可以在此发表自己的观点、交流技术、经验乃至生活的点点滴滴。也可以作为用户与教师的沟通渠道,教师可以在此回答学生的问题与疑惑,每个班级可以创建一个虚拟社区,以不同的论坛形式,供学生就相关话题交流意见和张贴发布。班级通过网上社区,可以增强班级的凝聚力,并可以吸纳更多的意见。本文设计的一个具有BBS的基本功能的通用BBS系统,主要强调功能的设计与实现,以达到学习当前网络开发的主流技术和设计思想的目的。本文讨论的是一个简易的BBS网站,它具有BBS网站应该具有的一些简单功能,包括用户注册、用户登录、发表文章、阅读文章、回复别人的文章、主题查找。1.1.2 课题研究现状通过BBS论坛的方式,展示每一个人风采、优点,发布个人对一些事和物的看法,增强个人与个人之间的互动交流,个人与团体之间的交流联系,在Internet上实现信息的传递,提高办事效率。随着全球英特网用户逐年增多,可以看出当今社会网络迅速普及,人们交流的方式也层出不穷,随着新时代的进入。人们对信息的需求也不断加大,对不同领域的讨论也越来越多了,因此开发一个专题论坛对人们的交流是非常有必要的。虽然现在论坛有很多,但是大部分都是用于各个技术领域或者社会闲聊板块模式的,还没有真正的引入到人们的行列中,所以,此项目就是做一个大家的论坛系统,使我们有相同志趣的人能够在论坛上进行互动式聊天与解答疑惑。本系统采用传统的MVC开发模式,即PHT+mysql+thinkPHP框架, MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:Model(模型)表示应用程序核心(比如数据库记录列表)。 View(视图)显示数据(数据库记录)。 Controller(控制器)处理输入(写入数据库记录)。MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型象负责在数据库中存取数据。View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。体系结构图如图1所示:图11.1.3课题研究的意义个人BBS系统的建立,极大的丰富了人们的课余活动,大家可以去自己学习的论坛上发表自己的看法与建议,其他有相同兴趣的人也可以浏览别人发的帖子,然后发表自己的看法。别人的发帖中,能得到有益的教诲和启发。一些论点能做到各方观点正确公平的显示,具有参考价值。本论坛具有知识性,趣味性,公平性,和谐性等优点。论坛给有相同兴趣的人都提供了交流的平台,为网络的互动性作出了巨大的贡献,通过论坛,人们得以更方便的交流,更便捷的发表自己的观点,而且发布信息都是通过有记录的文字来进行,所以这样也避免了精华内容的流失。通过论坛来征得自己想要的信息,有更高的效率和时效性。也最节约成本和资源,在论坛的交流过程中,无论喜怒哀乐都是在虚拟的环境中进行,也避免的正面的尴尬和冲突等,在论坛中,可以演变成任何角色,变换多种身份,因为网络的特征,我们可以更好的交流,从而促进社会的发展。1.2软件项目的数据要求1.2.1需求陈述通过实现该系统,可以为有相同制取的人们提供一个发布信息和随感的平台。其他人可以通过该平台浏览其他学生发的帖子,大家可以通过该平台同步浏览知识和相关资源。同时可以为论坛发布个人技术供其他人学习交流之用。1.2.2业务流程以下讲描述该系统的业务流程:1、用户可以注册论坛账号;2、用户可以登陆论坛查看帖子;3、用户可以回复帖子;4、用户可以发布帖子;5、用户可以删除帖子;6、用户可以按主题查询帖子;7、管理员可以浏览帖子;8、管理员可以删除帖子;9、管理员可以发帖;10、管理员可以封用户账户;11、管理员可以删除用户信息;12、管理员可以浏览用户信息;13、管理员可以给论坛增加板块;14、管理员可以浏览板块;15、管理员可以删除板块信息;16、管理员可以修改板块信息;1.3 软件项目的逻辑模型1.3.1业务用例建模如图2.3.1所示业务用例(大系统)图2.3.1业务用例图1.3.2帖子管理业务用例图如图2.3.2所示图2.3.2帖子管理业务用例图1.3.3会员管理业务用例图如图2.3.3所示图2.3.3会员管理业务用例图1.3.4板块信息业务用例如图2.3.4所示图2.3.4板块信息业务用例图1.3 软件项目的逻辑模型1.3.1会员帖子发布概念层类图如图1.3.1所示图1.3.1会员帖子发布概念层类图概念图中包含8个类1.人员信息类2.会员类3.管理员类4.帖子发布表边界类5.帖子发布表控制类6.提示信息类7.帖子发布表类1.3.2会员发布帖子说明层类图如图1.3.2所示图1.3.2会员发布帖子说明层类图功能如下:1、帖子发布表边界类中含有以下方法:1.请求新的帖子发布信息方法2.展示新的帖子发布信息方法3.输入帖子发布信息方法4.提交帖子信息方法5.验证未通过提示方法6.验证成功提示方法2、帖子发布表边界类中含有以下方法: 1.请求新的帖子发布表方法 2.提交帖子信息表方法 3.验证提交的帖子表方法 3、管理员类中有以下方法: 1.通知管理员方法 4、提示信息类中有以下方法: 1.获取错误提示信息方法 2.获取成功提示信息方法 5、人员表类中有以下属性: 1.登录名 2.登录密码 3.用户名 4.用户权限 5.性别 6.邮箱 6、帖子表类中有以下属性: 1.标题 2.内容 3.发布日期 4.发布人 5.所属板块 7、正常人员表分出两张外表关联,分别是状态表和权限表 状态表有如下性: 1.封禁 2.正常 权限表有如下属性: 1.会员 2.管理员 会员、管理员继承于人员表2 软件设计2.1开发类设计2.1.1会员发布帖子实现层类图如图2.1.1所示图2.1.1会员发布帖子实现层类图2.1.2用户发布帖子顺序图:如图2.1.2所示图2.1.2用户发布帖子顺序图2.1.3用户发布帖子活动图如图2.1.3所示图2.1.3用户发布帖子活动图2.2 数据设计2.2.1绘制E-R图进行概念建模如图2.2.1所示图2.2.1(1)admin数据表,作用是描述后台管理员的信息,如表2.2.1.1所示表2.2.1.1 admin数据表(2)users数据表,作用是描述会员状态的信息,如表2.2.1.2所示表2.2.1.2 users数据表(3)posts数据表,作用是描述帖子的信息,如表2.2.1.3所示表2.2.1.3 posts数据表(4)advice数据表,作用是游客和会员提供建议的信息,如表2.2.1.4所示表2.2.1.4 advice数据表(5)section数据表,作用是描述板块的信息,如表2.2.1.5所示表2.2.1.5 section数据表(6)replies数据表,作用是描述回帖信息的信息,如表2.2.1.6所示表2.2.1.6 replies数据表3 软件实现3.1 系统界面(1)用户登录模块论坛登录是必不可少的一项,只有登录后才可以进入论坛,游客可以通过注册成为会员,注册会员期间必需格式正确否则会提示您错误信息。如图3.1图3.1 用户登录模块图(2)用户登录时出现的错误若登录成功进入论坛首页,若登录不成功,将返回到系统的登录界面,如图3.2图3.2用户登录时出现的错误图(3)新用户注册模块如果是新用户则先注册才能登录,注册后在登录便可进入论坛,如图3.3图3.3新用户注册模块图A、用户进行注册,系统对确认密码与密码不符进行提示界面,如图3.4:图3.4 用户已注册,重新注册图3.2 其它模块3.2.1会员发帖回帖模块(1)会员发帖模块,如图3.2.1.1图3.2.1.1 会员发帖模块图(2)查看所发的帖子,图3.2.1.2图3.2.1.2 查看所发的帖子图(3)查看所发帖、回帖内容,如图3.2.1.3图3.2.1.3 查看所发帖、回帖内容图(4) 会员回帖模块,如图3.2.1.4图3.2.1.4会员回帖模块图3.2.2会员修改个人信息模块(1)个人信息模块,如图3.2.2.1图3.2.2.1 个人信息模块图3.2.3留言模块(1)留言版面,如图3.2.3.1图3.2.3.1 留言版面图3.2.4管理员模块(1)管理员版面,如图3.2.4.1图3.2.4.1 管理员版面图(2)会员管理版面,如图3.2.4.2图3.2.4.2会员管理版面图(3)帖子管理版面,如图3.2.4.3 图3.2.4.3帖子管理版面图4 软件测试4.1测试环境win7 64位笔记本电脑,xamp集成开发环境+opera浏览器。4.2测试目的尽可能的发现bbs网站中存在的bug,,并及时修复。测试改软件是否达到预期的功能需求。4.3测试功能登录,注册,发帖删帖搜帖改帖,修改个人信息4.4具体过程功能名称测试步骤预期结果实际结果Bug影响程度注册在网站首页点击“我要注册”进入注册页面.1.在用户名框输入字母开头,字母和数组组合,长度为5-15个字符。密码框为任意字符,2次密码输入一致。并正确输入验证码。然后点击“我要注册”2.在不符合上述条件下进行注册,如输入错误验证码,非字母开头的用户名1.网页显示“注册成功!”。跳转到登录页面。2.网页显示验证码错误,或非字母开头的用户名。结果符合预期无登录1. 在网站首页点击“用户登录“进入登录页面,输入正确用户名,密码和验证码。2. 在不符合上述条件下进行登录,输入错误验证码,密码或用户名。 3. 前台登录成功后,后台未登录却也显示登录成功。同理后台登录成功后,前台为登录却也显示登录成功。4. 后台登录界面尝试SQL注入1. 显示成功登录,并跳到主页。显示对应的用户名2. 提示用户名,密码或验证码错误3. 前台用户和后台用户互不干扰4. 因提示非法字符或者用户名或密码错误3. 未显示任何错误。但明显逻辑错误。前后台session变量出现冲突4.未提示错误,SQL注入成功,不知道密码和用户名也能进入后台3,4均为重大安全bug用户对帖子的增删改1. 登录成功的用户能正常(仅限没有被封禁的用户)发帖,删帖,改帖,查询帖子。删除和修改只能是自己的帖子。2. 尝试在未登录下发帖,评论;尝试在已登录下删除或修改他人的帖子用户仅能修改或删除自己的帖子,发帖必须要登录,并且未被管理员封禁。结果符合预期无用户修改个人信息1. 用户在登录下和未被封禁下,修改个人信息。2. 尝试在未登录下或被封禁下,修改个人信息。1. 提示修改成功2. 提示未登录或已被封禁结果符合预期无搜索1. 在主页的搜索框里输入相关帖子主题的“关键字”。2. 输入不相关的字符1. 显示对应帖子列表2. 提示未找到结果符合预期无评论1. 在登录状态下评论相关帖子。2. 未登录状态下评论。1. 评论成功,并显示评论2. 提示登录结果符合预期无4.5解决方案上表中:登录测试的第3条,前后台用户发生冲突。通过检查前后台用户登录的代码发现。Session变量命名,重名了。导致前后台用户登录发生冲突。通过设置不同的session名称,可避免这个问题。上表中:登录测试的第4条,通过SQL注入(用户登录表单用户名处输入or1=1/*,密码处输入*/or 1=1),即可绕过登录限制,直接进入后台进行操作。通过检查后台代码发现,未对表单输入字段进行过滤,导致网站有被入侵的风险。解决办法:对表单输入数据进行过滤,可采用正则表达式限制用户输入数据或者使用过滤函数,将/*/等特殊字符进行转义。5 开发总结在做在程序设计bbs项目实训中,无论是从技术,职业能力。明白了一个软件个人是无法实现功能的完善,团队的力量才是最可观的。当然,这都是可喜的改变,很长时间没有这样进步、提高的感觉了,所以很有必要总结一下,以客观认清事实,巩固,升华这段时间对思想的冲击,承上启下,为将来可以预期的提高铺平道路,打好基础。通过几周的实训,我们感到自己学到了很多东西,虽说不精,但已经入门,于世间万物之中,遇见我所遇见的事物;于千万年之中,时间的无涯荒野里,没有早一步,也没有晚一步,刚巧赶上了,上苍让我有机会接触编程,给了我一条路。我很清楚以后的路还很长,再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。任何业绩的质变都来自于量变的积累,成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成,让我们将事前的忧虑,换为事前的思考和计划吧!还有就是在实训中必不可少的部分,就是同学之间的互相帮助。所谓”当局者迷,旁观者清”,有些东西感觉自己做的是时候明明没什么错误,偏偏程序运行时就是有错误,让其他同学帮忙看了一下,发现其实是个很小的错误。所以说,相互帮助是很重要的一点,这在以后的工作或生活中也是很关键的。 俗话说:“要想为事业多添一把火,自己就得多添一捆材”。 此次实训,我们深深体会到了积累知识的重要性。在实训当中我们遇到了不少难题,但是经过我们大家的相互讨论和老师细心的一一指导,问题得到了解决。实训结束了,收获颇丰,同时也更深刻的认识到要做一个合格的程序员并非我们以前想像的那么容易,最重要的还是细致严谨。社会是不会要一个一无是处的人的,所以我们要更多更快地从一个学生向工作者转变,总的来说我们对这次实习还是比较满意的,它使我们学到了很多东西,为我们以后的学习做了引导,点明了方向,我相信在不远的未来定会有属于我们自己的一片美好天空!简而言之,体会的不但是知识的重要性,还有工作时应该有的态度,虽只是在学校,但更近一步地了解了将来面对的就业事宜。跟社会相适应就得不断地学习更多的知识,现在所学的知识相当有限,为了更好的掌握知识,得自觉地学习更多的知识。学校只是个启蒙的地方。计算机专业的技术发展迅速,知识层出不穷。5.1 总结与展望这次项目实训,我们小组基本上完成了这个bbs电子论坛网站,用户登录注册,对帖子的增删改查功能基本实现。但这个网站并不完美,界面普通,而且没有好好利用ajax的异步刷新特性,网站更新部分数据,依旧采取同步刷新方式。并且此项目漏洞颇多。今后还需继续学习相关web技术。力求做一个更加完美,实用,安全的网站。5.2 主要收获我们学会了如何用PHT+mysql+thinkPHP框架搭建一个简单的BBS系统。知道行动习惯性格,这是接受新知识,新概念,新思想,总之进入社会的学习活动所要遵循的步骤。我们已经有意识的进行训练,并取得一定效果,在今后的学习中还将按照这个步骤进行。5.3 存在的问题本系统的大部分模块已经实现,并且也符合以上几个特性。但是,一个完整的系统仅仅靠近几个月的分析、设计来开发室远远不够的,它需要更长的时间来测试并完善。因此,本系统仍然存在着一些需要改进和不足的问题,比如系统的整体设计需要进一步的美观,系统还不够完善还需要进一步的改善和加强,系统的内容需要更加丰富和多样化。随着研究的进行,可能还会出现其他一些问题,我们会继续努力,逐步改善和不断完善本系统。完成这次设计任务总共用了1个月半的时间,前1个星期用来收集资料、学习要用到的各项开发技术、进行系统分析,中间几个星期用来设计系统,后几个星期用来测试机修改。回顾这1个多月的系统开发工作,我们对这次实验还是比较满意的,当然由于我们知识有限,我们还是有很多不足,在接下来的时间我们会更加努力。总结起来就是,软件的开发室相当辛苦的,但成功以后的喜悦也是美妙的,而且我们发现其中你投入的心血越多,成功以后你所获得的快乐与充实感也更多更强。参考资料1PHP and web 开发原书第4版 人民邮电2PHP 技术手册 PHP官网3百度文库
展开阅读全文