网上论坛管理系统的设计与实现 - 图文

更新时间:2023-03-08 06:21:23 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业设计

网上论坛管理系统的实现

学 院 年 级 专 业 学 号 学生姓名 指导老师

级 班

20 年 月

授人以渔 能力为本

四川科技职业学院毕业设计(毕业设计) 第I页

毕业设计诚信承诺书

题目 学生姓名 专业 网上论坛管理系统的设计与实现 学生承诺 我承诺在毕业设计活动中,遵守学校有关规定,恪守学术规范,本人毕业设计内容除特别注明和引用外,均为本人观点,不存在剽窃、抄袭他人学术成果,伪造、篡改实验数据的情况,如果有违规行为和毕业设计抄袭率达到30%以上,我愿意承担一切责任,接受学校的处理。 学生(签名): 年 月 日 指导教师承诺 我承诺在毕业设计活动中,遵守学校有关规定,恪守学术规范,经过本人核查,该生毕业设计内容除特别注明和引用外,均为本人观点,不存在剽窃、抄袭他人学术成果,伪造、篡改实验数据的现象。 指导教师(签名): 年 月 日 学号 班级

授人以渔

能力为本

四川科技职业学院毕业设计(毕业设计) 第II页

摘 要

随着Android智能手机的快速普及,移动互联网技术也得到了快速发展。现在的智能手机已不再局限于打电话、发短信等基础通信功能,而是具备了除通信功能之外的很多智能应用,如通过电子书阅读电子书籍、通过新闻客户端浏览新闻进行评论、通过移动QQ进行即时聊天、通过购物网站APP进行网上购物、网上支付等等。

本文开发的网上论坛管理系统正是基于Android智能手机平台开发的,主要包括服务器端和Android应用客户端两个部分,服务器端完成用户管理、日志管理、访客管理等功能,应用客户端完成用户注册、登录,日志发布与查看,查看访客列表与相册列表等功能。

为了使开发出来的网上论坛管理系统简单、高效,具有一定的灵活性,本文设计的网上论坛管理系统采用MyEclipse作为系统开发环境,Java作为开发语言,数据库采用MySQL以存放论坛的数据信息,能够快速高效的开发基于Android的应用APP。

关键词 :智能手机;Android;网上论坛

授人以渔 能力为本

四川科技职业学院毕业设计(毕业设计) 第III页

Abstract

With the rapid popularization of Android smart phones, mobile

Internet technology has been rapid development. Now the smart phone is no longer limited to call, send text messages and other basic communication function, but hasmany things except the communication function of intelligent application, such as through the e-book readingelectronic books, through the news client browse news comment, by

moving

the QQ instant chat, through

the

shopping site

APP, online payment, online shopping.

The online forum management system developed in this paper is based on the Android intelligent mobile phoneplatform development, mainly contains two parts: the

server

and

the

Android client server application, complete

the

user management, log management, visitor management and other functions, the application client complete

the

userregister, login, log

publish and view, view

the list and album list etc. function.

In order to online forum management system developed is simple and efficient, with a certain degree of flexibility,online forum management system designed in this paper using MyEclipse as the system development environment,Java as a development language, database using MySQL to store the forum data information, and can be developedfast enough to efficient application of APP based on Android.

key words:Intelligent mobile phone; Android; online forum

授人以渔 能力为本

四川科技职业学院毕业设计(毕业设计) 第IV页

目 录

第一章 绪 论......................................................... 1 1.1.课题背景........................................................ 1 1.2.研究意义........................................................ 1 1.3.本文所做的工作.................................................. 2 第二章 系统开发环境.................................................. 3 2.1.MyEclipse开发环境简介 .......................................... 3 2.2.MySQL数据库简介 ................................................ 3 2.3.Android简介 .................................................... 5

2.3.1.Android架构.............................................. 5 2.3.2.Android应用.............................................. 6 第三章 需求分析...................................................... 8 3.1.可行性分析...................................................... 8

3.1.1.技术可行性 ............................................... 8 3.1.2.经济可行性 ............................................... 8 3.1.3.操作可行性 ............................................... 8 3.2.功能需求........................................................ 9 3.3.性能需求........................................................ 9 第四章 系统分析设计................................................ 11 4.1.总体设计...................................................... 11

4.1.1.设计思想 ................................................ 11 4.2.数据库设计.................................................... 15

4.2.1.概念设计 ................................................ 15

授人以渔

能力为本

四川科技职业学院毕业设计(毕业设计) 第V页

4.2.2.逻辑设计 ................................................ 19 第五章 详细设计与系统实现.......................................... 23 5.1.详细设计...................................................... 23

5.1.1.登录功能设计 ............................................ 23 5.1.2.注册功能设计 ............................................ 24 5.1.3.发帖功能设计 ............................................ 24 5.1.4.回复帖子功能设计 ........................................ 25 5.2.服务器端设计与实现............................................ 26

5.2.1.首页设计 ................................................ 26 5.2.2.注册界面设计与实现 ...................................... 26 5.2.3.更新心情界面设计与实现 .................................. 28 5.2.4.发布帖子设计与实现 ...................................... 29 5.2.5.修改资料设计与实现 ...................................... 30 5.2.6.数据库类实现 ............................................ 31 5.3.Android客户端设计与实现 ...................................... 33

5.3.1.登录页面设计与实现 ...................................... 33 5.3.2.主页面设计 .............................................. 37 5.3.3.帖子列表 ................................................ 37 5.3.4.更新心情 ................................................ 38 5.3.5.发表帖子 ................................................ 40 5.3.6.拍照上传 ................................................ 42 结 论............................................................... 44 致 谢............................................................... 45 参考文献............................................................ 46

授人以渔 能力为本

四川科技职业学院毕业设计 第1页

第一章 绪 论

1.1.课题背景

网上论坛简称BBS,起源于20世纪80年代初,其最初只是为了发布公告信息和为了大家方便讨论问题的一种在线交流平台,随着互联网技术的快速发展,其功能也越来复杂,越来越强大,不再局限于发布公告信息和在线讨论问题,如网友积分功能,上传图片、美化论坛等多种功能。

在二十一世纪的今天,随着移动互联网技术的飞速发展,移动互联带给人们越来越多的便利,如人们可以十分方便的利用智能手机实现任何时间、任何地点,只要有移动网络的地方都可以即时通信和交流,因此,交流工具是移动互联网中应用最为广泛的通信方式之一。目前,多数的校园论坛系统还是采用传统的WEB网页方式进行,可以在校内或校外有网络的地方方便的查看学校的新闻、公告等信息,但也有一定的局限性,如果家里不能上网,那么就不能及时查看到学校发布的信息,比如学生考试信息,有可能会造成耽误学生考试,因此开发一套脱离传统WEB方式的校园论坛系统是十分有必要的。

1.2.研究意义

随着智能手机的普及以及移动互联网技术的快速发展,移动互联网正在快速融入我们的生活,也正在改变和影响着我们的生活。网络提供给我们的不仅仅是一个获取资源的通道,也为我们提供了一个方便交流和沟通的平台,而网上论坛正是这样一种供在校学生或其他人群进行交流的网上平台。目前网上论坛已经十分普遍,不是一种新生事物,许许多多各具特色的网上论坛层出不穷,我在查看多种资料和网上论坛的基础上,结合学校学生的实际情况,于是开发出了一套适合于我们学生的界面简单,功能适宜,易于使用的基于Android平台的网上论然管理系统,这为我们大学生进行网上交流提供了一个十分好的平台。

授人以渔 能力为本

四川科技职业学院毕业设计 第2页

1.3.本文所做的工作

21世纪是信息化的社会,人们的生活日益信息化、网络化。日常交流、购物、新闻浏览、会议等更多的依靠网络来完成。随着国内国际网民越来越多,移动终端设备的数量快速的增长,据《手机中国新闻》昨日市场分析机构Strategy Analytics公布了2014年第二季度智能手机操作系统全球分布情况。报告显示,目前安卓操作系统的全球市场份额已达84.6%(有史以来最高比重),而IOS、WindowsPhone等系统占比均有所下滑。因此基于此,本文设计并开发了一套基于Android操作系统的网上论坛管理系统。

本文按照功能可以划分为两大功能模块,即用户功能模块和系统管理功能模块。 用户功能模块:主要是针对用户进行功能划分,主要完成了用户注册、用户登录、用户发布日志、用户查看日志列表、用户查看好友及访客记录等功能的实现。例如设计用户查看日志功能,既可针对别人发布的主题进行讨论,也可以发表自己的观点供大家来评论。为了净化论然环境,防止用户发布一些不太健康或非法的内容,管理人员需要对用户已发布的不健康或违法内容进行删除或修改。如果用户想在论坛发布信息,则需要用户进行注册登录后才允许发布信息,这样易于方便管理用户信息。用户也可以把自己拍的照片进行上传,供其他用户进行观看或评论等。

系统管理功能模块:主要是实现服务器端的功能,管理用户的注册、登录信息,也可以修改用户的注册信息;系统管理员也可以发布和管理信息、查看论坛的访客信息等。

授人以渔

能力为本

四川科技职业学院毕业设计 第3页

第二章 系统开发环境

本网上论坛管理系统采用MyEclipse作为系统集成开发环境,JAVA作为系统开发语言,MySQL作为系统开发数据库,基于Android操作系统进行应用程序开发和部署。

2.1.MyEclipse开发环境简介

MyEclipse企业级工作平台(MyEclipse[1] Enterprise Workbench)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持Ajax[2]、Struts[3]、JSP[4]、CSS、JavaScript、SQL[5]等技术。

在结构上,MyEclipse的特征可以被分为7类: 1、JavaEE模型。 2、WEB开发工具。 3、EJB开发工具。

4、应用程序服务器的连接器。 5、JavaEE项目部署服务。 6、数据库服务。 7、MyEclipse整合帮助。

MyEclipse结构上具备模块化的特点,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。

2.2.MySQL数据库简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站

授人以渔 能力为本

四川科技职业学院毕业设计 第4页

数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。

与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。Linux作为操作系统,Apache和Nginx作为Web服务器,MySQL作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“组合。

系统特性:

1、使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。 2、支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。

3、为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

4、支持多线程,充分利用CPU资源。

5、优化的SQL查询算法,有效地提高查询速度。

6、既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。

7、提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。

8、提供TCP/IP、ODBC和JDBC等多种数据库连接途径。 9、提供用于管理、检查、优化数据库操作的管理工具。

10、支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 11、支持多种存储引擎。 应用架构

MySql的应用结构如图2-1所示:

授人以渔 能力为本

四川科技职业学院毕业设计 第5页

图 2-1 应用结构

2.3.Android简介

2.3.1.Android架构

Android是一个包括操作系统,中间件以及一些重要应用程序的专门针对移动设备的层次结构的软件集[6]。作为一个层次结构的软件集,一定有一个层次的系统构架,下图为Android的构架图:

图2-2 Android 系统构架

从图3-1中明显的可以看出该系统从下到上包括Linux内核层、Libraries

授人以渔

能力为本

四川科技职业学院毕业设计 第6页

和运行时环境层、应用程序框架层、应用程序层四层结构。在Android的最下层的操作系统基于Linux2.6内核,往上的中间件包括Libraries和运行时环境层和应用程序框架层两个层次,最上层则是应用程序层。

Android 包含一些C/C++库,Android系统中的各种不同组件都能够使用这些库函数。这些库函数通过Android 应用程序框架为开发者提供服务。以下列举了一些库函数[7]:系统C库、媒体库、Surface Manager、LibWebCore、SQLite库等。 Android采用Java作为应用程序的开发语言,但是虽然使用的是Java语言,但是Google却没使用传统的Java Runtime来执行应用程序而是采用Android自己特有的Android Runtime。从Android 的系统构架图中可以清楚的看到,Android Runtime由Android函数库(Android Libraries)和Dalvik虚拟机组成[8]。 在Android系统构架图中可以看到,应用程序框架层是处于Android Runtime和库函数层于应用程序层之间,之前的叙述中知道,该层使用开发语言的是Java语言。应用程序框架是能够让开发者完全访问核心应用程序所使用的API(Application Programming Interface,应用程序编程接口),该框架能够让组件软件重用的工做简单化。同时该框架中的任何一个功能模块都是等价的,任何一个应用程序都可以发布其功能模块,该功能模块可以替代当前的任意一个功能模块,但前提是必须遵循框架的安全限制[9],另外,其他的任意应用程序能够使用这个发布的功能模块。这样的设计就使Android的构件重用率提高了。

2.3.2.Android应用

任何一个Android应用程序,都可由四个部分组成,这四个组成部分分别是①Activity;②Intent Receiver;③Service;④Content Provider[10]。对于一个应用程序来说,不一定这四个部分都需要。其中,Activity、Intent Receiver和Service是Android最基本的三个组件。其实,这四个部分全部或者其中几个的相互协调工作组成了我们平时见到的应用程序。

在Android中每个应用程序都需要一个XML配置文件AndroidManifest.xml,该配置文件用于定义我们的应用程序组件和组件的功能以及一些必要条件等。因此当我们使用到任何一个组件时都需要在这个配置文件中进行登记,否则就算是你在代码中使用了这个组件,但是Android系统也是找不到该组件的。

Activity是Android中最最基本的组件,实际应用中,通常就是一个单独的屏[11],也就是一个运行在前台程序在某一时刻在屏幕中所能展示的全部内容就是一个Activity。

Intent Receiver有的地方也叫做Broadcast Receiver。当你希望你的应用

授人以渔 能力为本

四川科技职业学院毕业设计 第7页

能够捕获一个外部事件并作出响应时,比如手机快没电了,收到一条新的短信息等。这时你就可以使用一个Intent Receiver。因为Intent Receiver只是在一个你所关注的事件发生时,会给那些关注该事件的应用程序发送一个通知,所以它并不会生成一个UI。同样的Intent Receiver也需要在AndroidManifest.xml中进行注册。当一个你所关注的时间发生时,我们的应用不需要主动去调用intent receiver,系统会在一个合适的时候去调用我们的程序的。

Service是一段长生命周期的,没有用户界面的程序。对于一个Service组件,我们可以使用Context.bindService()连接到Service上,就能通过该Service提供的接口与之进行通信。

Content Provider提供给你的应用程序与其他应用程序共享数据的一个功能。我们的应用程序可以通过Content Provider提供的一些方法来处理或者保存其他应用程序Content Provider中的数据,这样来达到数据的共享。

在Android中,为了使用应用程序更加地安全,Android增加了安全模型来操作资源和数据的特征,这是通过权限设置来决定的。Android是一个多进程系统,在此之中,每个应用程序都在自己的进程中运行。大多数的应用程序之间的安全模式设置和标准的Linux系统相一致,例如给各个应用程序分配不同的UID[12]。

授人以渔 能力为本

四川科技职业学院毕业设计 第8页

第三章 需求分析

3.1.可行性分析

通过网上查阅资料和图书馆查阅相关文献,对毕业设计需要完成的任务进行了相关的调查和分析,目前网上论坛系统,特别是针对学生的网上论坛系统,多数还是基于WEB的方式进行浏览,而随着Android智能手机的普及,现在的大学生基本上人手一部,对于开发一套基于Android的网上论坛系统是十分有必要的,从技术方面来讲:由于Android操作系统是开源的,提供了大量的接口,可以利用现有的技术来完成开发工作;从经济方面来讲:只要具有智能手机和计算机就可以十分容易的进行开发工作,开发成本是比较低的,能够满足经济的要求;从操作方面来讲:参照其他的在线网上论坛系统可以十分方便的实现与用户之间的交互,做到操作简单方便。

3.1.1.技术可行性

本文设计的网上论坛管理系统采用目前流行的MyEclipse开发环境和JAVA开发语言,以Android操作系统作为应用开发部署平台,以MySQL作为数据库开发平台。由于本文设计的网上论坛管理系统功能不算发杂,Android开发技术和Mysql开发技术也比较成熟且都是开源的,用户可以十分方便的调用系统提供的很多接口,因此对于在智能手机上做应用开发不存在任何的技术难度,能够实现这个系统。

3.1.2.经济可行性

从搜集的资料和查阅的文献来看,本文设计开发的系统对计算机硬件没有任何特殊的要求,再加上Android操作系统是开源的,我们开发的系统可以免费且十分方便的部署和发布到Android上,因此成本十分低廉,基本可以忽略不计。

3.1.3.操作可行性

本文设计的系统完全可以从技术做到与用户良好的互动,并且作为程序开发人员也

授人以渔

能力为本

四川科技职业学院毕业设计 第9页

可以尽自己所能简化程序设计,使设计的界面做到友好,操作步骤简单可行。

3.2.功能需求

本文设计的网上论坛管理系统提供的是一个简单实用的论坛管理系统,具备其他一般论坛所具备的功能。具体的功能如下:

1、服务器端功能:

(1)、注册与登录:管理员可以对注册用户进行添加、修改和删除等操作。 (2)、日志管理功能:管理员可以发布系统日志信息,可以查看任何用户发布的日志信息。

(3)、访问信息管理:管理员可以查看系统登录和论坛访问人员信息。 2、Android客户端功能:

(1)、注册与登录:用户账户的注册。用户只用通过注册后方可访问论坛。 (2)、日志信息:登录用户可以发布自己的日志和心情,可以通过日志列表查看其他用户和自己发布的日志信息。

(3)、访问信息:用户可以查看自己的好友信息和访问自己日志的访客信息。 (4)、相册信息:用户可以通过拍照上传自己的照片,也可以查看已上传的照片信息。

3.3.性能需求

用户总是强调确定他们的功能、行为或需求——软件让他们做的事情。除此之外,用户对产品如何良好地运转抱有许多期望。这些特性包括:产品的易用程度,执行速度,可靠性等。这些被称为软件质量属性(或质量因素)的特性是系统非功能(也叫非行为)部分的需求。

然而,质量属性是很难定义的,并且他们经常造成开发者设计的产品和客户满意的产品之间的差异。就像 Robert Charette(1990)指出的那样:“真正的现实系统中,在决定系统的成功或失败的因素中,满足非功能需求往往比满足功能需求更为重要”。优秀的软件产品反映了这些竞争性质量特性的优化平衡。

软件质量属性包括:

授人以渔 能力为本

四川科技职业学院毕业设计 第15页

等,本文设计实现的网上论坛管理系统仅具有注册用户和管理员两种操作对象,如下表4-3所示:

表4-3 帖子功能模块列表

模块 模块包含的功能 浏览帖子 发布、修改、删除帖子 帖子模块 对帖子特殊操作 帖子评价 帖子发布增加相册 帖子板块 帖子管理模块 帖子管理 用户只有注册后,进行登录系统进行发帖操作和回复帖子信息,同样只有登录会员才能修改、删除自己的帖子信息。

4.2.数据库设计

网上论坛系统的实现离不开数据库的支撑,因为对于网上论坛系统来讲会有大量的信息需要存储,而信息的存储目前多数采用数据库实现,在比较了SQL SERVER、ORACLE、MYSQL等多种数据库的优缺点后,本文采用MYSQL数据库,它体积较小,运行速度快,比较适合快速开发,且存储效率较高,易于管理。

4.2.1.概念设计

E-R图也即实体-联系图(Entity Relationship Diagram),提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的基本要素是实体型、属性和联系。它是描述现实世界概念结构模型的有效方法。是表示概念模型的一种方式,实体型(Entity)用矩形表示,矩形框内写明实体名;属性(Attribute)用椭圆形表示,并用无向边将其与相应的实体连接起来;联系(Relationship)用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1 : 1,1 : n或m : n)。[12]

构成E-R图的基本要素

构成E-R图的基本要素是实体型、属性和联系,其表示方式为:

1.实体型(Entity):具有相同属性的实体具有相同的特征和性质,用实体名

授人以渔

能力为本

四川科技职业学院毕业设计 第16页

及其属性名集合来抽象和刻画同类实体;在E-R图中用矩形表示,矩形框内写明实体名;比如学生张三丰比如学生张三丰、学生李寻欢都是实体。[13]如果是弱实体的话,在矩形外面再套实线矩形实体名及其属性名集合。

2.属性(Attribute):实体所具有的某一特征,一个实体可由若干个属性来刻画。在E-R图中用椭圆形表示,并且无向边将其与相应的实体连接起来;比如学生的姓名、学号、性别、都是属性。如果多值属性的话,再椭圆形外面再套实线椭圆。如果是派生属性则用虚线椭圆表示。

3.联系(Relationship):联系也成关系,信息世界中反映实体内部或实体之间的联系。实体内部的联系通常是指构成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。在E-R图中用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1 : 1,1 : n或m : n)。比如老师给学生授课存在授课关系,学生选课存在选课关系。如果是弱实体的联系则在菱形外面再套菱形。

用户表ER图如下图4-6所示:

用户名用户密码用户编号用户电子邮件ID用户状态

图4-6 用户表实体属性关系图

好友表ER图如下图4-7所示:

好友ID用户编号日期好友好友编号

图4-7 好友表实体属性关系图

授人以渔 能力为本

四川科技职业学院毕业设计 第17页

帖子表ER图如下图4-8所示:

帖子标题帖子内容帖子ID帖子信息发帖日期发布用户

图4-8 帖子表实体属性关系图

相册表ER图如下图4-9所示:

相册名称用户编号相册ID相册信息相册获取相册日期

图4-9 相册表实体属性关系图

照片表ER图如下图4-10所示:

照片名称照片描述照片ID照片信息拍照日期相册ID

图4-10 照片表实体属性关系图

授人以渔 能力为本

四川科技职业学院毕业设计 第18页

评论表ER图如下图4-11所示:

评论内容用户编号评论ID评论信息帖子编号评论时间

图4-11 评论表实体属性关系图

照片评论表ER图如下图4-12所示:

评论内容用户编号评论ID照片评论照片编号评论时间

图4-12 照片评论表实体属性关系图

访客表ER图如下图4-13所示:

用户编号访客编号访客ID访客信息图4-13 访客表实体属性关系图

访问时间

授人以渔

能力为本

四川科技职业学院毕业设计 第19页

最大数量表ER图如下图4-14所示:

帖子数相册数好友数最大数量照片数评论数访客数用户数头像数照片评论

图4-14 最大数量表实体属性关系图

头像表ER图如下图4-15所示:

头像描述添加日期头像ID头像信息图4-15 头像表实体属性关系图

用户编号

4.2.2.逻辑设计

数据库逻辑设计主要是指数据库表的设计,本文采用的数据库是MYSQL数据库,本文设计的网上论坛管理系统的数据库名称为KDWB。

本文设计的数据库KDWB设计的表主要有:

用户表、好友列表、帖子表、相册表、照片表、评论表、照片评论表、访客表、最大数量表、头像表。

数据库KDWB设计的数据库详细信息如下:

授人以渔 能力为本

四川科技职业学院毕业设计 第20页

1. user用户信息表,如表4-4所示:

表4-4 用户信息表

字段名 u_no u_pwd u_name u_email u_state h_id 中文名 用户编号 用户密码 用户名称 电子邮件 用户状态 头像ID 类型 INT VARCHAR VARCHAR VARCHAR TINYTEXT INT 长度(字符) 4 16 8 18 20 4 2. friend好友列表信息表,如表4-5所示:

表4-5 好友列表信息表

字段名 f_id u_noz u_noy f_date 中文名 好友ID 用户编号 好友编号 添加好友日期 类型 INT INT INT TIMESTAMP 长度(字符) 4 4 4 18 3. diary帖子信息表,如表4-6所示:

表4-6 帖子信息表 字段名 r_id r_title r_content r_date u_no 中文名 帖子ID 帖子标题 帖子内容 帖子发布日期 发布用户编号 类型 INT VARCHAR TEXT TIMESTAMP INT 长度(字符) 4 18 255 18 4 4. album相册信息表,如表4-7所示:

表4-7 相册信息表

字段名 x_id x_name u_no x_access x_date 中文名 相册ID 相册名称 用户编号 相册获取方式 发布相册日期 类型 INT VARCHAR INT INT TIMESTAMP 长度(字符) 4 18 4 4 18

授人以渔

能力为本

四川科技职业学院毕业设计 第21页

5. photo照片信息表,如表4-8所示:

表4-8 照片信息表

字段名 p_id p_name p_des p_data x_id 中文名 照片ID 照片名称 照片描述 照片发布日期 相册编号 类型 INT VARCHAR VARCHAR TIMESTAMP INT 长度(字符) 4 18 50 18 4 6. comment评论信息表,如表4-9所示:

表4-9 评论信息表

字段名 c_id c_content u_no r_id c_date 中文名 评论ID 评论内容 用户编号 帖子编号 评论日期 类型 INT TEXT INT INT TIMESTAMP 长度(字符) 4 255 4 4 18 7. p_comment照片评论信息表,如表4-10所示:

表4-10 照片评论信息表 字段名 c_id c_content u_no p_id c_date 中文名 评论ID 评论内容 用户编号 照片编号 评论日期 类型 INT TEXT INT INT TIMESTAMP 长度(字符) 4 255 4 4 18 8. visit访客信息表,如表4-11所示:

表4-11 访客信息表

字段名 v_id u_no v_no v_date 中文名 访客ID 用户编号 访客编号 访问日期 类型 INT INT INT TIMESTAMP 长度(字符) 4 4 4 18

授人以渔

能力为本

四川科技职业学院毕业设计 第22页

9. max最大数量信息表,如表4-12所示:

表4-12 最大数量信息信息表

字段名 friend_max diary_max album_max photo_max comment_max visit_max user_max head_max p_comment_max 中文名 好友数量 帖子数量 相册数量 照片数量 评论数量 访客数量 用户数量 头像数量 照片评论数量 类型 INT INT INT INT INT INT INT INT INT 长度(字符) 4 4 4 4 4 4 4 4 4 10. head头像信息表,如表4-13所示:

表4-13 头像信息表 字段名 h_id h_des h_data u_no 中文名 头像ID 头像描述 头像数据 用户编号 类型 INT VARCHAR MEDIUMBLOB INT 长度(字符) 4 40 1000 4 需求分析阶段主要确定系统需要实现的功能,在总体设计阶段,主要负责将需求分析阶段确定的功能以图表的形式展现出来,确定数据库设计需要用到的各张表结构和字段。

授人以渔

能力为本

四川科技职业学院毕业设计 第23页

第五章 详细设计与系统实现

详细设计阶段的任务是进行各个功能模块的设计,需要给出数据流程图,完成系统各界面的设计,达到软件开发人员能够可以直接进行软件编程的目的。而系统实现主要指的是系统各个功能模块的代码。

5.1.详细设计

下面以用户注册、登录、发帖、回帖等进行描述详细设计过程。

5.1.1.登录功能设计

用户在登录之前需要首先进行用户信息的注册方可进行系统的登录,用户登录需要验证密码是否正确,如果不正确则系统提示密码不正确,需要重新输入密码,否则显示登录成功。其系统登录流程图如下图5-1所示:

开始登录 输入账号密码 N 密码是否正确 Y 登录成功 结束

图5-1 用户登录流程图

授人以渔 能力为本

四川科技职业学院毕业设计 第24页

5.1.2.注册功能设计

对于新用户注册来说,需要填入一定的信息方可注册成功,尤其是对于系统要求必须填写的选项要求用户在填写注册资料的时候务必进行填写。

如果用户在提交注册信息的时候,出现系统提示该用户已存在,则需要用户重新填写注册信息,方可注册成功。一旦用户注册成功后,用户名信息无法进行修改,但是其密码可以进行修改。

其用户注册的流程图如下图5-2所示:

开始注册 输入用户信息 Y 是否存在相同的数据 重新输入用户信息 Y 数据信息是否存在 注册 成功 N 结束 图5-2 用户注册流程图

N

5.1.3.发帖功能设计

用户登录成功后,输入自己想要发表的帖子信息,点击提交后系统即可发布用户的帖子信息。系统实现发帖功能的流程图如下图5-3所示:

授人以渔

能力为本

四川科技职业学院毕业设计 第25页

用户登录 输入账号密码 N 密码验证 Y 登录成功 输入帖子信息 发帖 返回系统首页 图5-3 发帖流程图

5.1.4.回复帖子功能设计

当用户登录后,可以对某个帖子进行回复,选择想要回复的帖子后,输入需要回复的内容后,即可完成回复帖子的操作。其回复帖子的实现流程图如下图5-4所示:

登录 N 密码验证 Y 登录成功 选择帖子 回复 返回系统首页

图5-4 回复帖子流程

授人以渔

能力为本

四川科技职业学院毕业设计 第26页

5.2.服务器端设计与实现

5.2.1.首页设计

用户打开首页后,可以看到首页界面有登录、注册、发表帖子、查看帖子、我的好友、最近访客等,首页界面应力争做到简洁、操作方便、易用等。

首页的界面设计如下图5-5所示:

图5-5 首页界面

5.2.2.注册界面设计与实现

当点击注册按钮时,会出现如下图5-6所示的注册界面。

在注册界面,输入昵称、邮箱、密码、确认密码、心情状态等信息后,点击“注册”按钮即可实现用户的注册。当点击“清空”按钮时,上面输入的注册信息将全部清空,需要用户重新进行注册信息填写。如果用户注册成功,则系统给出注册成功的提示,如

授人以渔

能力为本

四川科技职业学院毕业设计 第27页

下图5-7所示。

图5-6 注册界面

图5-7 注册成功界面

“注册”按钮的核心代码实现如下所示:

授人以渔

能力为本

四川科技职业学院毕业设计 第28页

if(action.equals(\)){ //action为注册信息 String u_name = (String)request.getParameter(\);

String u_pwd = (String)request.getParameter(\); String u_email = (String)request.getParameter(\); String u_state = (String)request.getParameter(\);

String result = DBUtil.registerUser(u_name, u_pwd, u_email, if(!result.equals(REGISTER_FAIL)){ //注册成功 User user = new User(result, u_name, u_email, u_state, \); }

request.setAttribute(\, result);

HttpSession session = request.getSession(); session.setAttribute(\, user);

u_state,\);

request.getRequestDispatcher(\).forward(request,response);

5.2.3.更新心情界面设计与实现

更新心情的页面设计如下图5-8所示。在随便说说处写入需要填入的内容,点击更新心情即可。

图5-8 更新心情界面

授人以渔

能力为本

四川科技职业学院毕业设计 第29页

更新心情的核心实现代码如下所示:

if(action.equals(\)){ //action为更新心情 HttpSession session = request.getSession();

User user = (User)session.getAttribute(\); if(user == null){ //用户没有登录 request.setAttribute(\, UPDATE_STATE_FAIL); }

String u_no = user.u_no; //获得用户的id

String content = (String)request.getParameter(\); String result = DBUtil.updateState(u_no, content); user.u_state=content;

session.setAttribute(\, user);

request.setAttribute(\, result);

//更新心情

request.getRequestDispatcher(\).forward(request, return;

response);

//更新Session的内容

//将结果设置到

request的属性中 request.getRequestDispatcher(\).forward(request, response);//返回

}

5.2.4.发布帖子设计与实现

当管理员在写入需要发布的内容后,点击“发布日记”后,帖子发布成功,如下图5-9所示。

图5-9 发布帖子界面

授人以渔

能力为本

四川科技职业学院毕业设计 第30页

发布帖子的核心实现代码如下所示:

if(action.equals(\)){ //action为写新日记 HttpSession session = request.getSession();

User user = (User)session.getAttribute(\); if(user == null){ //用户没有登录 request.setAttribute(\, DIARY_FAIL); }

String u_no = user.u_no; //获得用户的id

String title = (String)request.getParameter(\); String content = (String)request.getParameter(\); String result = DBUtil.writeNewDiary(title, content, u_no); request.setAttribute(\, result);

//将结果设置到

request.getRequestDispatcher(\).forward(request, return;

response);

request的属性中 request.getRequestDispatcher(\).forward(request, response);//返回

}

5.2.5.修改资料设计与实现

当在首页点击“修改资料”时,会出现如下图5-10的界面,在这个界面可以修改个人资料也可以修改头像资料。

图5-10 修改资料界面

授人以渔

能力为本

四川科技职业学院毕业设计 第31页

修改资料页面的核心实现代码如下所示:

if(action.equals(\)){

}

//action为修改用户信息 //action为修改头像

String hid = request.getParameter(\); //读取参数 String uno = request.getParameter(\); //读取参数 if(DBUtil.changeUserHead(uno, hid) == 1){ //修改成功 HttpSession session = request.getSession(); }

request.getRequestDispatcher(\).forward(request,

User u = (User)session.getAttribute(\); u.h_id=hid;

session.setAttribute(\, u);

response);

if(action.equals(\)){

}

String uname = request.getParameter(\); //获得昵称

String uemail = request.getParameter(\); //获得邮箱地址 String ustate = request.getParameter(\); //获得心情 HttpSession session = request.getSession();

//获得Session

User user = (User)session.getAttribute(\); //提取出Session对String uno = user.u_no;

int result = DBUtil.changeUserInfo(uno, uname, uemail, ustate); if(result == 1){ //更改成功 user.u_name = uname; }

request.setAttribute(\, result);

request.getRequestDispatcher(\).forward(request,

user.u_email = uemail; user.u_state = ustate;

session.setAttribute(\, user);

response);//跳转

5.2.6.数据库类实现

//方法:使用数据源连接池访问数据库 public static Connection getConnection(){

Connection con = null; //使用数据源连接池

try{

Context initial = new InitialContext(); //其中mysql为数据源jndi名称

// // //

授人以渔 能力为本

四川科技职业学院毕业设计 第32页

// // // // // //

con=DriverManager.getConnection(\,\,\

}

catch(Exception e){ }

return con;

e.printStackTrace();

}

//方法:检查用户名和密码是否正确 public static ArrayList checkLogin(String u_no,String u_pwd){

ArrayList result = new ArrayList(); Connection con = null; ResultSet rs = null; try{

//声明获取数据库连接

//声明Statement对象

//声明ResultSet对象

PreparedStatement ps = null; }

catch(Exception e){ }

//使用JDBC直接访问数据库 try{

Class.forName(\); e.printStackTrace(); DataSource ds =

con=ds.getConnection();

(DataSource)initial.lookup(\

3\);

con = getConnection(); //获取数据库连接

if(con == null){ //判断数据库连接对象是否 result.add(CONNECTION_OUT); // }

ps = con.prepareStatement(%u_no,u_name,u_email,u_state,h_id ps.setString(1, u_no); ps.setString(2, u_pwd); rs = ps.executeQuery();

//设置预编译语句的参数 //设置预编译语句的参数

return result;

from user where u_no=? and u_pwd=?\);

if(rs.next()){ //判断结果集是否为空 for(int i=1;i<=5;i++){

}

//如果数据库查无此人

result.add(rs.getString(i));

//将结果集中数据存放到

ArrayList中

}

else{

result.add(LOGIN_FAIL); //返回登录出错信息

授人以渔 能力为本

四川科技职业学院毕业设计 第33页

}

}

finally{ }

return result;

try{ } try{ } try{ }

if(con != null){ }

e.printStackTrace();

con.close(); con = null; if(ps != null){ }

e.printStackTrace();

ps.close(); ps = null; if(rs != null){ }

e.printStackTrace();

rs.close(); rs = null;

}

e.printStackTrace();

}catch(Exception e){

}catch(Exception e){

}catch(Exception e){

}catch(Exception e){

5.3.Android客户端设计与实现

5.3.1.登录页面设计与实现

客户端登录实现用户的登录和注册,在此页面用户输入账号和密码后,点击“登录”,如果密码验证通过,则可进入网上论坛管理系统主页面,否则需要重新输入账号和密码。其系统登录页面设计如下图5-11所示。

授人以渔 能力为本

四川科技职业学院毕业设计 第34页

图5-11 登录界面

其“登录”按钮的核心实现代码如下所示:

//方法:连接服务器进行登录 public void login(){ new Thread(){

public void run(){

Looper.prepare();

try{

if(mc == null){ }

EditText etUid = (EditText)findViewById(R.id.etUid); //获得EditText etPwd = (EditText)findViewById(R.id.etPwd); //获得String uid = etUid.getEditableText().toString().trim(); //String pwd = etPwd.getEditableText().toString().trim(); //if(uid.equals(\) || pwd.equals(\)){

//判断输入是否为空

mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT);

帐号EditText 密码EditText

获得输入的帐号 获得输入的密码

Toast.makeText(LoginActivity.this, \请输入帐号或密码!\,

Toast.LENGTH_SHORT).show();//输出提示消息 return;

}

String msg = \+uid+\+pwd; mc.dout.writeUTF(msg);

//组织

//

要返回的字符串

授人以渔 能力为本

本文来源:https://www.bwwdw.com/article/c41.html

Top