SSM学生社团管理系统的设计与实现
摘 要
21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于学生社团管理也是十分常见的。过去使用手工的管理方式对学生社团进行管理,造成了管理繁琐、难以维护等问题,如今使用计算机对学生社团的各项基本信息进行管理,比起手工管理来说既方便又简单,而且具有易于管理、搜索速度快、存储量大等多个优点。将其使用在学生社团管理中,不仅能够提高学生社团管理中管理员的工作效率,而且可以使学生社团管理更加科学与规范。在信息化时代的不断冲击下,学生社团管理与计算机技术的结合,将会是一条提高学生社团管理水平的捷径。
经过本人的综合考虑,SSM学生社团管理系统的设计是基于Java技术、Mysql数据库、Tomcat服务器的方式设计,以Myeclipse和Dreamweaver为开发工具,在Myeclipse集成环境下调试并允许,并运用Photoshop技术美化网页,辅之以CSS技术。
该系统实现了学生社团管理内部的各种工作流程计算机管理化,其中包括管理员的系统首页、个人资料、公共管理(管理员、学生用户、社长用户)信息管理(社团资讯、资讯分类)社团信息、社团类型、入团申请、社员信息、社团活动、活动服务、学生留言等功能。
关键词:Java技术;Mysql数据库;Tomcat服务器
Design and Implementation of SSM Student Association Management System
Abstract
In the era of information technology in the 21st century, almost any industry cannot do without computers. It is also very common to apply computers to the management of student associations. In the past, using manual management methods to manage student associations has caused problems such as cumbersome management and difficult maintenance. Nowadays, using computers to manage various basic information of student associations is not only convenient and simple compared to manual management, but also has many advantages such as easy management, fast search speed, and large storage capacity. Using it in the management of student associations can not only improve the work efficiency of administrators in the management of student associations, but also make the management of student associations more scientific and standardized. Under the continuous impact of the information age, the combination of student association management and computer technology will be a shortcut to improve the management level of student associations.
After my comprehensive consideration, the design of the SSM student community management system is based on Java technology, MySQL database, and Tomcat server. It uses Myeclipse and Dreamweaver as development tools, debugs and allows in the Myeclipse integrated environment, and uses Photoshop technology to beautify web pages, supplemented by CSS technology.
The system implements various workflow computerized management within the management of student associations, including the administrator's system homepage, personal data, public management (administrator, student user, president user) information management (association information, information classification), association information, association type, membership application, membership information, association activities, activity services, student messages, and other functions.
Keywords: Java technology; MySQL database; Tomcat Server
目 录
高校学生社团是在对应管理教师的指引下由兴趣相同或相似的学生自发组成的带有俱乐部性质的学校小型团体组织,它们通常以举行带有社团独特风格的集众性活动来吸引学生加入社团组织。大学生社团是我国高校校园建设中不可欠缺的一环,其潜移默化的影响着校园文化的发展。并有利于展开政治性思想教育,提高社团成员的社交能力与综合水平。
我国对学生社团的研究主要形成于二十世纪末期。随着社团发展的重要性逐渐凸显,我国对学生社团的发展、建设能力略显陈旧,难以满足当下壮大并走向繁荣的社团发展现状。我国早期社团研究主要从以往的建设经验入手,较为感性的对大学生社团进行探索、研究相关管理以及组织方法。直到近十年,少数学者在着眼于校园教育时对社团的发展产生了较多的关注并进行了相关的学术研究,有关论文,逐年递增,使我们对大学生社团的了解更加深刻且具有理性。
在以北京、上海、天津等一线城市的部分大学网站进行调查中发现,在以访问的网站中,大多数高校网站上并没有专门的学生社团相关模块,有的也只是在新闻内容中略微提及,缺少明确的社团管理体系部分,且存在信息更新间隔过长、缺乏维护工作的问题。显然,学生社团在信息化的管理方面缺乏相应的社团管理的策略,更多地处于放任学生之间自由的发展社团的阶段;这使得社团之间发展的不均衡,或从根本上名存实亡的现象屡屡存在。
然而,在大多数大学网站上都没有找到较为完善的学生社团管理模块,甚至有的仅仅只在学校新闻中略加提及,缺少明确的社团管理体系结构。
国外的社团管理系统种类繁多,但主要以单一的社团管理为主体,这主要是因为国外的社团成员大多在大学结束后,可直接加入具有社会性质的俱乐部。大多数社团并不与学校有较明确的管理关系,但在社团相关活动等信息上更新与维护较为及时,
本文的主要工作是研究如何将计算机和信息管理进行有机结合,从而利用Java语言以及Mysql数据库技术在Dreamweaver中实现了系统的功能模块,切实的开发出一套贴近¥新闻管理的实际,有效管理¥新闻的系统。
论文结构如下:
第一章绪论:主要对SSM学生社团管理系统的开发背景,研究现状,目的,及意义进行了分析。
第二章开发技术及软件:主要把系统开发工具进行介绍,另外讲解开发系统所用到的一些特殊功能技术。
第三章系统分析:主要是对SSM学生社团管理系统进行需求分析,以及对其数据流程与功能进行分析。
第四章系统设计:主要根据系统需求对系统的设计进行介绍,以及对数据的开发与功能模块设计的过程。
第五章系统实现:本章主要结合系统界面截图,介绍了系统各个功能实现的结果。
第六章系统测试:本章系统进行功能模块的测试,撰写测试用例,确保系统各大功能准确无误。
第七章总结与展望:对整个论文的研究内容进行总结,概括整个论文的特点,指出不足之处,为下步深究指明方向。
超文本传输协议(HTTP)作为协作式与分布式的通信协议,其以万维网交换信息作为前提条件。HTTP为IEIF的国际化标准指标,在制定相关标准与实现内,W3C积极参与其中,同时发挥着不可替代的作用。其能够借助超文本标记语言,将文档在服务器与浏览器之间相互传输。HTML作为构架文档的标记语言,这些文档内将包括有关信息的链接,用户仅需要点击其中一个链接就能够访问多媒体对象与图像,同时获得该链接项所具有的附加信息[1][2]。
Java是美国sun公司所推出的一款程序设计语言,其能够在多个平台内应用,具有良好兼容性,进而其凭借自身优势在数据中心、个人PC与科技超级计算机等平台内广泛应用,具有目前最为庞大的开发者专业社群[3]。
JDK为美国sun公司为java开发员所推出的一款全新产品,要是没有JDK的情况下,所安装的java程序也就无法运行[4]。
HTML是一种制作网页的常用语言,它一般是用于制作静态页面。它的命令是可以体现文字信息、链接信息、图形信息和表格信息等等。现在它被大众普遍接受广泛应用在网络上[5]。
JSP可以放在在html里使用,也可以独自使用,它同时也具备有很多种优点,可以讲,Web脚本技术的先驱是JSP。现代编程语言(像C,Java和Perl等)的一些最好的特点都融合在JSP里,Web服务器里的一些配置标准是由JSP、Tomcat和数据库等的组合在一起的[6]。
Mysql 经过多次的更新,功能层面已经非常的丰富和完善了,从Mysql4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的Mysql支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷[7][8]。
针对本文中设计的SSM学生社团管理系统在实际的实现过程中,最终选择Mysql数据库的主要原因在于在企业的应用系统应用及开发的过程中会存在大量的数据库比较频繁的操作,而且数据的安全性要求也是非常的高。综合这些因素,最终选择安全性系数比较高的Mysql来对SSM学生社团管理系统后台数据进行存储操作[9][10]。
开发任何一个系统,都要对其可行性进行分析,对其时间和资源上的限制进行考虑,这样可以减少系统开发的风险。同时,分析之后不仅能够合理的运用人力,还能在各方面资源的消耗上得到节省。下面就对技术、经济和社会三个方面来介绍。
技术可行性主要考虑当前项目所用的技术是否能够符合,在设备上是否能够满足,及各种辅助工具是否提供帮助。本系统用的是Java开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。采用Java编程语言,已无技术上的问题。
系统所采用的Myeclipse开发平台和Mysql后端数据库均为免费开发工具。故开发成本主要集中在后期的推广及系统维护上。相对于成本较高的C/S模式,也是选用了成本较低的B/S模式,所以经济上几乎没任何问题。
本系统是自行开发的系统,以方便高效管理社团为出发点,是具有实际意义的系统,开发的环境软件和用到的数据库也都是开源代码,不存在侵权等问题,所以在社会方面也是可行的。
学生用例图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/2e2fcc2a5dba8e05276f04be46daed82.png)
图3-1 学生用例图
管理员用例图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/494458c019d15f4d24acb9a6dd6935c1.png)
图3-2 管理员用例图
社长用例图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/43dd4e4a62a83477e1abcf57da2b5c02.png)
图3-2 管理员用例图
通过对用例图的分析和调查,根据本系统的实际需要,从用户角度提出需求功能如下:
1.管理员功能需求:
用户管理模块:管理员查看用户基本信息,并实现对用户信息的增加、删除、修改等功能。
修改登录密码模块:修改管理员用户的登录密码。
留言管理模块:管理员查看用户的留言,管理留言板的内容,可对其删除、修改。
评论管理模块:管理员查看用户的评论,管理评论的内容,可对其删除、修改。
社团管理模块:管理员查看社团,并且添加社团数据,也能够删除社团数据。
社团活动管理模块:根据业务需要,管理员对社团活动信息的维护、处理等操作。
活动/服务管理模块:根据业务需要,管理员对活动/服务记录的审核、处理、维护等操作。
社团成员模块:从管理员发布的社团数据中选择要成员的社团,进行添加成员记录。
2.用户功能需求:
用户注册模块:将用户信息录入数据库,用户利用注册的账号以及密码登录系统,浏览查看各种信息,添加部分信息;
留言模块:用户以留言的形式,跟管理员交流。
评论模块:用户评论社团,查看其他对该社团的评论内容。
收藏模块:用户收藏社团,整理个人收藏夹。
个人信息模块:修改信息功能,用户修改个人资料信息,但不能修改账号;密码修改功能,修改登录密码。
社团活动/活动服务模块:从管理员发布的社团数据中选择要活动/活动服务的社团,进行添加活动/活动服务记录。
提交好友模块:提交一些好友到系统中,形成好友列表,管理员对其管理,包括删除、修改。
评判一个系统好坏的一项重要指标就是性能,下面是对此系统的一些性能进行阐述。
1.系统的安全性和稳定性: SSM学生社团管理系统在管理权限上有着严格的控制,即想登录此平台进行操作,则必须要有操作权限,没有权限的用户是不可能登录平台查看任何的信息和数据,从而确保了系统的安全性。
2.数据的完整性和准确性:第一个是各项记录信息的完整性,信息记录的内容可以为空;第二个是各项信息数据之间相互联系的准确性;第三个是数据在不同记录信息的一致性
3.用户操作系统简单方便
在系统开发中按照“简单易用”的原则,能够使用户对系统的使用一目了然,既能保证用户使用,同时又能保证维护人员方便维护。
业务流程图不仅能反映出内部业务之间的关系,而且能体现出作业顺序及信息的流动。SSM学生社团管理系统必须支持整个组织在不同层次上的各种功能,各个功能模块之间又有各种不同相关的信息进行联系,构成了一个有机的整体,根据社团管理的特点以及结合所面临的实际情况,设计出了系统的业务流程图。
系统的业务流程如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/fe62094e7cc1f933d65bd1c3ad2edc13.png)
图3-1系统业务流程图
在分析了系统的业务流程之后,就要分析系统的数据流,为后面设计系统的数据库做好基础。这里主要利用数据流程图来说明数据流程。数据流程图是一个图示工具,容易理解,容易在开发和用户方之间进行交流,以及在开发组织内部交流。因此数据流程图作为一种模型工具已经广泛使用在软件工程的实践中。
系统的顶层数据流图如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/7da96153a7041629dc593216a01cd1aa.png)
图3-2系统数据流图(顶层)
根据系统的业务流程,用户浏览所使用到的数据归纳为输出信息。而用户提交的数据则作为系统的输入数据。相应的,根据系统管理员业务流程,管理员对系统内容的添加、更新和删除等所操作的数据定义为输入信息。
系统的底层数据流图如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/0a5d7b1ed0027dd44ba57fd30064c5d1.png)
图3-3系统数据流图(底层)
MVC 是指 Model、View 和 Controller,翻译成中文分别是模型层、视图层和控制层。MVC 模式是一种设计模式,它强制性的把应用程序的输入、输出和处理全部分开,将其分为三个核心部分,这三个部分分别有不同的功能。
![](https://i-blog.csdnimg.cn/blog_migrate/53011c4ec610b48a7ff50eb9f794480a.png)
图4-1系统架构图
视图层视图是指被用户所看到的并且能够与之进行交互的界面。视图可以向用户展示相关的数据,并接收用户输入的数据,但对用户数据不进行任何实际业务操作处理。
模型层通过控制层来处理视图层传递的数据,同一个模型可以给不同的视图提供数据,也可以被不同的视图重复使用。由于 Model 的主要内容是数据、方法和行为,其也是 MVC 中逻辑最为复杂,代码量最多的部分,其中包含了许多应用中需要用到的业务逻辑,因此模型层的开发也变得尤为重要,后期一般不会对模型层进行大规模改动,也是 MVC 中最稳定的部分。
控制层主要负责视图层和模型层之间的数据传输和处理请求操作。当用户通过视图发送数据和请求时,控制层可以接收请求和数据并决定调用哪些模型、通过模型的哪些操作来处理数据和请求,处理完成后,控制层再将数据返回给相应的视图。
根据对系统的功能进行分析可以总结SSM学生社团管理系统的具体功能模块包括下面的几个主要的功能模块:该系统主要从两大模块进行设计的,首先就是用户参与操作需要的模块,此外还需要有管理员用到的模块,两者之间不是互相独立的,他们之间有着密切的联系,同数据库表中的数据连接起来进行操作。每个模块访问相同的数据库,但访问的表不同。系统的各个功能模块是根据所收集的资料研究得到的。在以上分析功能的基础上,系统模块分为多个模块。用户含有的功能有注册,登录,信息搜索,留言、评论、收藏、社团活动/活动服务、社团成员、好友提交等,退出登录等功能,管理员含有的功能有修改密码,用户管理、社团管理、活动/活动服务管理、社团管理、成员管理等功能。
系统的功能结构图如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/7e96cbb96bdf8e0e757d929410a8ee70.png)
图4-2系统功能结构图
用户模块主要实现用户的注册、登录、在线留言、在线评论、社团浏览、社团活动/活动服务、社团浏览、社团成员和个人资料修改、登录密码修改、好友提交、活动/活动服务查询、成员查询等功能。
用户注册:用户通过账号注册得到用户名和密码。
用户登录:用户在被管理员添加成功后,通过管理员提供的用户名、密码和输入验证码进行登录,操作非常简单。
个人资料管理:用户根据用户ID修改当前ID的一些属性的值。
修改个人登录密码:用户登录SSM学生社团管理系统后可以自己修改自己的密码。
在线留言:用户可以在线留言并查看管理员对自己的留言回复。
在线评论:用户评论社团,查询该社团的所有评论信息。
收藏:在社团的基础上对社团的收藏,收藏按时间形成收藏列表,个人对其收藏夹进行维护和整理。
社团活动/活动服务:用户根据自己的需求选中某个社团进行活动/活动服务操作。
查看历史活动/活动服务单:用户可以查看自己以往活动/活动服务的信息。
管理员模块是本系统重要开发部分,它的使用对象是系统管理员,在进入管理员模块前,需要输入正确的用户姓名、密码和验证码,才能进入管理员模块。界面右上方有退出系统按钮,点击可退出管理员模块界面。
系统用户管理:管理员添加、管理、查询管理员信息并有修改他们密码的权限。
评论管理:管理社团的评论信息。
注册用户管理:管理员管理已注册的用户,审核刚注册的用户,修改用户的基本信息。
社团信息管理:管理员录入社团信息,跳转至添社团页面,填写社团信息,提交后,社团信息存储数据库的社团信息表中,包括社团编号、社团名称、社团图标、社团类型、联系电话、社团地址等信息。
社团活动信息管理:社团活动信息管理包括社团活动信息录入、社团活动信息修改、社团活动信息删除,在数据库中设计并建立社团活动信息表,管理员添加社团活动信息,即往数据表中插入一条数据,删除社团活动信息,则在数据库删除一条数据,修改社团活动信息,则修改数据库的数据。
社团成员录入:用户根据自己的需求选中某个社团进行成员录入操作。
E-R图一般是由实体、实体的属性与联系三个要素组成的。在规划系统中所使用的数据库实体对象及实体E-R图,则需要通过对系统的需求分析、业务流程设计和系统功能结构来确定的。
总体ER图如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/82e72a40b498a24ff2bf5ae1da11b1ae.png)
图4-3总体ER图
将实体属性模型转换为关系数据库应该遵循以下几个原则:
1.一个实体转换后要对应一个关系。
2.所有的主键必须要定义为非空(not null)。
3.针对二元联系也应该按照一对多、弱对实、一对一和多对多等联系来定义外键。
得到数据库的关系后,设计如下表结构。
表access_token (登陆访问时长)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表category_of_association (社团类别)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | category_of_association_id | int | 10 | 0 | N | Y | 社团类别ID | |
2 | category_of_association | varchar | 64 | 0 | Y | N | 社团类别 | |
3 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
4 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | community_activities_id | int | 10 | 0 | N | Y | 社团活动ID | |
2 | activity_title | varchar | 64 | 0 | Y | N | 活动标题 | |
3 | activity_number | varchar | 64 | 0 | Y | N | 活动编号 | |
4 | association_name | varchar | 64 | 0 | Y | N | 社团名称 | |
5 | president_of_the_association | int | 10 | 0 | Y | N | 0 | 社团社长 |
6 | presidents_phone_number | varchar | 64 | 0 | Y | N | 社长电话 | |
7 | event_cover | varchar | 255 | 0 | Y | N | 活动封面 | |
8 | number_of_participants | int | 10 | 0 | Y | N | 0 | 活动人数 |
9 | event_location | varchar | 64 | 0 | Y | N | 活动地点 | |
10 | activity_date | date | 10 | 0 | Y | N | 活动日期 | |
11 | activity_funds | int | 10 | 0 | Y | N | 0 | 活动经费 |
12 | activity_content | text | 65535 | 0 | Y | N | 活动内容 | |
13 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
14 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
15 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
16 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
17 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
18 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | community_information_id | int | 10 | 0 | N | Y | 社团信息ID | |
2 | association_name | varchar | 64 | 0 | N | N | 社团名称 | |
3 | category_of_association | varchar | 64 | 0 | Y | N | 社团类别 | |
4 | association_number | varchar | 64 | 0 | Y | N | 社团编号 | |
5 | price_of_social_expenses | int | 10 | 0 | Y | N | 0 | 社费价格 |
6 | president_of_the_association | int | 10 | 0 | Y | N | 0 | 社团社长 |
7 | president_student_id | varchar | 64 | 0 | Y | N | 社长学号 | |
8 | president_clas | varchar | 64 | 0 | Y | N | 社长班级 | |
9 | presidents_phone_number | varchar | 64 | 0 | Y | N | 社长电话 | |
10 | community_pictures | varchar | 255 | 0 | Y | N | 社团图片 | |
11 | establishment_time | date | 10 | 0 | Y | N | 成立时间 | |
12 | community_address | varchar | 64 | 0 | Y | N | 社团地址 | |
13 | introduction_to_the_association | text | 65535 | 0 | Y | N | 社团简介 | |
14 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
15 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
16 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
17 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
18 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
19 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | event_registration_id | int | 10 | 0 | N | Y | 活动报名ID | |
2 | activity_title | varchar | 64 | 0 | Y | N | 活动标题 | |
3 | activity_number | varchar | 64 | 0 | Y | N | 活动编号 | |
4 | association_name | varchar | 64 | 0 | Y | N | 社团名称 | |
5 | president_of_the_association | int | 10 | 0 | Y | N | 0 | 社团社长 |
6 | event_location | varchar | 64 | 0 | Y | N | 活动地点 | |
7 | activity_date | date | 10 | 0 | Y | N | 活动日期 | |
8 | number_of_applicants | varchar | 64 | 0 | Y | N | 报名人数 | |
9 | enrolled_students | int | 10 | 0 | Y | N | 0 | 报名学生 |
10 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
11 | student_id | varchar | 64 | 0 | Y | N | 学生学号 | |
12 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
13 | student_phone | varchar | 64 | 0 | Y | N | 学生电话 | |
14 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | league_application_id | int | 10 | 0 | N | Y | 入团申请ID | |
2 | association_name | varchar | 64 | 0 | Y | N | 社团名称 | |
3 | category_of_association | varchar | 64 | 0 | Y | N | 社团类别 | |
4 | association_number | varchar | 64 | 0 | Y | N | 社团编号 | |
5 | president_of_the_association | int | 10 | 0 | Y | N | 0 | 社团社长 |
6 | price_of_social_expenses | int | 10 | 0 | Y | N | 0 | 社费价格 |
7 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
8 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
9 | student_id | varchar | 64 | 0 | Y | N | 学生学号 | |
10 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
11 | student_phone | varchar | 64 | 0 | Y | N | 学生电话 | |
12 | application_information | text | 65535 | 0 | Y | N | 申请信息 | |
13 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
14 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | member_information_id | int | 10 | 0 | N | Y | 社员信息ID | |
2 | association_name | varchar | 64 | 0 | Y | N | 社团名称 | |
3 | category_of_association | varchar | 64 | 0 | Y | N | 社团类别 | |
4 | association_number | varchar | 64 | 0 | Y | N | 社团编号 | |
5 | president_of_the_association | int | 10 | 0 | Y | N | 0 | 社团社长 |
6 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
7 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
8 | student_id | varchar | 64 | 0 | Y | N | 学生学号 | |
9 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
10 | student_phone | varchar | 64 | 0 | Y | N | 学生电话 | |
11 | price_of_social_expenses | int | 10 | 0 | Y | N | 0 | 社费价格 |
12 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
13 | pay_type | varchar | 16 | 0 | Y | N | 支付类型: 微信、支付宝、网银 | |
14 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | president_user_id | int | 10 | 0 | N | Y | 社长用户ID | |
2 | presidents_name | varchar | 64 | 0 | Y | N | 社长姓名 | |
3 | presidents_gender | varchar | 64 | 0 | Y | N | 社长性别 | |
4 | president_student_id | varchar | 64 | 0 | Y | N | 社长学号 | |
5 | president_clas | varchar | 64 | 0 | Y | N | 社长班级 | |
6 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_message_id | int | 10 | 0 | N | Y | 学生留言ID | |
2 | association_name | varchar | 64 | 0 | Y | N | 社团名称 | |
3 | president_of_the_association | int | 10 | 0 | Y | N | 0 | 社团社长 |
4 | message_student | int | 10 | 0 | Y | N | 0 | 留言学生 |
5 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
6 | message_date | date | 10 | 0 | Y | N | 留言日期 | |
7 | message_content | text | 65535 | 0 | Y | N | 留言内容 | |
8 | message_reply | text | 65535 | 0 | Y | N | 留言回复 | |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_users_id | int | 10 | 0 | N | Y | 学生用户ID | |
2 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
3 | student_gender | varchar | 64 | 0 | Y | N | 学生性别 | |
4 | student_id | varchar | 64 | 0 | Y | N | 学生学号 | |
5 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
6 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
从web系统查询数据的根本的查询步骤:
Step1: 进行检查并且过滤来自用户的系统数据;
Step2: 成立起一个合适的数据库进行连接;
Step3: 进行查询系统数据库;
Step4: 获得查询的结构;
Step5: 把查询的结果展示给用户。
Step6: 数据库连接断开,释放资源。
数据库连接原理如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/934996287a0cb7d95acd44a0bc887330.png)
图5-1数据库连接原理
数据库连接关键代码如下所示。
public Connection getConn()
{
try
{
if(conn==null||conn.isClosed()){
// Class.forName("com.mysql.jdbc.Driver");
// conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jspmldnwwspblhglxthsg836187mysql","root","");
Class.forName("com.microsoft.Mysql.jdbc.MysqlDriver");
conn = DriverManager.getConnection("jdbc:Mysql://localhost:1433;databaseName=jspmldnwwspblhglxthsg836187","sa","sa123456");
// Class.forName("net.sourceforge.jtds.jdbc.Driver");
// conn = DriverManager.getConnection("jdbc:jtds:Mysql://127.0.0.1:1433;databaseName=jspmldnwwspblhglxthsg836187","sa","sa123456");
}}
catch(Exception e)
{
e.printStackTrace();
}
return conn;
}
为确保系统安全性,系统操作员只有在登录界面输入正确的用户名、密码、权限以及验证码,单击“登录”按钮后才能够进入本系统的主界面。
用户登录流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/167092b48fec5f5ae42ea19d9ae5969e.png)
图5-2用户登录流程图
登录界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/f3db4215edabc3ed2f4870b80c87dab4.png)
图5-3登录界面
用户登录的逻辑代码如下所示。
if(ac.equals("login"))
{
String username = request.getParameter("username");
String password = request.getParameter("pwd1");
String utype = request.getParameter("cx");
String pagerandom = request.getParameter("pagerandom")==null?"":request.getParameter("pagerandom");
String random = (String)request.getSession().getAttribute("random");
if(!pagerandom.equals(random)&&request.getParameter("a")!=null)
{
request.setAttribute("random", "");
go("/index.jsp", request, response);
}
else{
String sql1="";
if (utype.equals("注册用户"))
{
sql1 = "select * from yonghuzhuce where yonghuming='"+username+"' and mima='"+password+"' and issh='是'";
}
else
{
sql1 = "select * from yuangongxinxi where gonghao='"+username+"' and mima='"+password+"'";
}
List<HashMap> userlist1 = dao.select(sql1);
if(userlist1.size()==1)
{
if (utype.equals("注册用户"))
{
request.getSession(). setAttribute("username", userlist1.get(0).get("yonghuming"));
}
else
{
request.getSession(). setAttribute("username", userlist1.get(0).get("gonghao"));
}
request.getSession(). setAttribute("cx", utype);
gor("index.jsp", request, response);
}else{
request.setAttribute("error", "");
go("/index.jsp", request, response);
}
用户输入用户名、密码、电话、姓名等必填信息后,点击注册按钮完成用户的注册。
用户注册流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/18b8cd56251effcdee6b2d733cdbdf92.png)
图5-4用户注册流程图
用户注册界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/d401ea169e562eb10dae877a1528a7f4.png)
图5-5用户注册界面
用户注册关键代码如下所示。
public String insert(HttpServletRequest request,HttpServletResponse response, String tablename,HashMap extmap,boolean alert,boolean reflush,String tzurl)
{
extmap.put("addtime", Info.getDateStr());
if(request.getParameter("f")!=null){
HashMap typemap = new HashMap();
ArrayList<String> collist = new ArrayList();
String sql = "insert into "+tablename+"(";
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
用户点击留言按钮进入留言板,点击留言发布,跳转至留言发布页面,提交留言信息,成功发布留言,管理员管理用户的留言信息。
发表留言流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/9e0d930bfb51eb6749ccfff05e900d59.png)
图5-6发表留言流程图
发表留言界面如图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/2498948cf1f44a0beb15aacc44d28c37.png)
图5-7发表留言界面
留言管理界面如图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/f80e443df74f9ae0bceb7283743a1d0a.png)
图5-8留言管理界面
留言添加关键代码如下所示。
public String insert(HttpServletRequest request,HttpServletResponse response, String tablename,HashMap extmap,boolean alert,boolean reflush,String tzurl)
{
extmap.put("addtime", Info.getDateStr());
if(request.getParameter("f")!=null){
HashMap typemap = new HashMap();
ArrayList<String> collist = new ArrayList();
String sql = "insert into "+tablename+"(";
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
用户点击某个社团进入社团详细页,点击评论按钮进入评论页,提交评论信息,成功发布评论,管理员管理用户的评论信息。
发布评论流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/de59622e4ed60d5c15a699cf4b41f1ac.png)
图5-9发布评论流程图
发布评论界面如图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/08e06348793c56dd8a4f3148f9996246.png)
图5-10发布评论界面
评论添加关键代码如下所示。
public String insert(HttpServletRequest request,HttpServletResponse response, String tablename,HashMap extmap,boolean alert,boolean reflush,String tzurl)
{
extmap.put("addtime", Info.getDateStr());
if(request.getParameter("f")!=null){
HashMap typemap = new HashMap();
ArrayList<String> collist = new ArrayList();
String sql = "insert into "+tablename+"(";
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
-
-
- 社团活动/活动服务模块的实现
-
用户点击某个社团进入社团详细页,点击活动/活动服务按钮进入活动/活动服务页,提交活动/活动服务信息,成功活动/活动服务后,管理员管理用户的活动/活动服务信息,审核活动/活动服务信息。
社团活动/活动服务流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/6d421767a3e66a8a020b39bdca212ddb.png)
图5-11社团活动/活动服务流程图
社团活动/活动服务界面如图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/6a670c12b6040f416a9d42daf4cfcf6a.png)
图5-12社团活动/活动服务界面
活动/活动服务管理界面如图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/94df32e73af63b537ebe84c38d2547b0.png)
图5-13活动/活动服务管理界面
活动/活动服务添加关键代码如下所示。
public String insert(HttpServletRequest request,HttpServletResponse response, String tablename,HashMap extmap,boolean alert,boolean reflush,String tzurl)
{
extmap.put("addtime", Info.getDateStr());
if(request.getParameter("f")!=null){
HashMap typemap = new HashMap();
ArrayList<String> collist = new ArrayList();
String sql = "insert into "+tablename+"(";
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
系统用户管理主要是对新用户的添加和旧用户的删除。新用户的添加主要是指添加用户名称并确定其密码;旧用户的删除也是从下拉菜单中找到对应的用户名称将其删除。不论是新用户添加还是旧用户的删除,这个权限只有管理员具有。
用户管理流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/d15ac6667943a74afd2f5b4d92a0c6be.png)
图5-14用户管理流程图
用户管理界面如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/74eb6abbaee0c2aa86b50215ac163cc6.png)
图5-15用户管理界面
系统用户管理关键代码如下所示。
public HashMap getmaps(String nzd,String zdz,String table)
{
List<HashMap> list = new ArrayList();
try {
Statement st = conn.createStatement();
//System.out.println("select * from "+table+" where "+nzd+"='"+zdz+"'");
ResultSet rs = st.executeQuery("select * from "+table+" where "+nzd+"='"+zdz+"'");
ResultSetMetaData rsmd = rs.getMetaData();
while(rs.next())
{
HashMap map = new HashMap();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(!rsmd.getColumnName(j).equals("ID"))
{
String str = rs.getString(j)==null?"": rs.getString(j);
if(str.equals("null"))str = "";
map.put(rsmd.getColumnName(j), str);
}
else
map.put("id", rs.getString(j));
}
list.add(map);
}
rs.close();
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list.get(0);
}
密码修改是对当前登录用户的密码进行修改,在管理员登录页面后右上方也能进行密码修改。
密码修改流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/4bb25f05eb3c56334c5f05f220fafff9.png)
图5-16密码修改流程图
密码修改界面如图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/5df2cfeca1540434715469d929353f53.png)
图5-17修改密码界面
密码修改关键代码如下所示。
if(ac.equals("uppass"))
{
String olduserpass = request.getParameter("ymm");
String userpass = request.getParameter("xmm1");
String copyuserpass = request.getParameter("xmm2");
HashMap m = dao.getmaps("yonghuming",(String)request.getSession().getAttribute("username"), "yonghuzhuce");
if(!(((String)m.get("mima")).equals(olduserpass)))
{
request.setAttribute("error", "");
go("mod2.jsp", request, response);
}else{
//String id = (String)user.get("id");
String sql = "update yonghuzhuce set mima='"+userpass+"' where yonghuming='"+(String)request.getSession().getAttribute("username")+"'";
dao.commOper(sql);
request.setAttribute("suc", "");
go("mod2.jsp", request, response);
}
}
社团信息添加功能主要指对其社团编号、社团名称、社团图标、社团类型、联系电话、社团地址等一些基本信息的添加、删除和修改。社团查询能根据社团编号、社团名称等多种条件对社团信息进行查询。
社团添加流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/c8640e201a36135a24c398bccb7b48c2.png)
图5-18社团添加流程图
社团添加如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/499d96d960090d4a9763ffb20ee3d5a5.png)
图5-19社团添加界面
社团查询界面如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/ab8ea589b5564ac753840355f2626465.png)
图5-20社团查询界面
社团信息添加关键代码如下所示。
public String insert(HttpServletRequest request,HttpServletResponse response, String tablename,HashMap extmap,boolean alert,boolean reflush,String tzurl)
{
extmap.put("addtime", Info.getDateStr());
if(request.getParameter("f")!=null){
HashMap typemap = new HashMap();
ArrayList<String> collist = new ArrayList();
String sql = "insert into "+tablename+"(";
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
管理员发布新的社团活动信息,系统显示社团活动信息,社团活动信息添加功能主要指对其社团编号、社团名称、社团类型、联系电话、活动标题、开始时间、结束时间、活动封面等一些基本信息的添加、删除和修改。社团活动查询能根据社团活动编号、社团名称等多种条件对社团活动信息进行查询。
社团活动添加流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/ce9e3c9017edc3092cd1d113f8f2ff2d.png)
图5-21社团活动添加流程图
社团活动添加界面如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/c97b4d651085da88e236fb221ca9e33b.png)
图5-22社团活动添加界面
社团活动查询界面如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/d0e0244b76a0ffe4223397b04ddf20c1.png)
图5-23社团活动查询界面
社团活动信息添加关键代码如下所示。
public String insert(HttpServletRequest request,HttpServletResponse response, String tablename,HashMap extmap,boolean alert,boolean reflush,String tzurl)
{
extmap.put("addtime", Info.getDateStr());
if(request.getParameter("f")!=null){
HashMap typemap = new HashMap();
ArrayList<String> collist = new ArrayList();
String sql = "insert into "+tablename+"(";
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
-
-
- 活动/活动服务管理模块的实现
-
用户选择社团添加活动/活动服务记录,管理员审核活动/活动服务信息,管理所有用户的活动/活动服务记录。
活动/活动服务管理流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/fb51e28d34a08f3c4fc14e028f5fe1ff.png)
图5-24活动/活动服务管理流程图
活动/活动服务维护界面如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/fc91fa07a2cb8ac8917c902109a4f7f5.png)
图5-25活动/活动服务维护界面
活动/活动服务维护关键代码如下所示。
<%
String yuan=request.getParameter("yuan");
String id=request.getParameter("id");
String tablename=request.getParameter("tablename");
String sql="";
if(yuan.equals("是"))
{
sql="update "+tablename+" set issh='否' where id="+id;
}
else
{
sql="update "+tablename+" set issh='是' where id="+id;
}
new CommDAO().commOper(sql);
out.print("<script>location.href='"+request.getHeader("Referer")+"';</script>");
%>
社团成员模块可以分解为社团查询、成员录入、成员查询三个小功能,首选用户先选择社团,然后点击成员按钮,填写成员数据,系统会通过ajax来验证表单填写是否符合,不符合则提示,用户继续输入到符合为止,符合之后,用户可以成功提交数据。
社团成员流程图如下所示。
![](https://i-blog.csdnimg.cn/blog_migrate/5d37e9649c8d1d1fac2df1dc3e840fb9.png)
图5-26社团成员流程图
社团成员界面如图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/9800fb80785fb522780293d3388e52c9.png)
图5-27社团成员界面
成员添加关键代码如下所示。
public String insert(HttpServletRequest request,HttpServletResponse response, String tablename,HashMap extmap,boolean alert,boolean reflush,String tzurl)
{
extmap.put("addtime", Info.getDateStr());
if(request.getParameter("f")!=null){
HashMap typemap = new HashMap();
ArrayList<String> collist = new ArrayList();
String sql = "insert into "+tablename+"(";
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from "+tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(rsmd.getColumnName(j).equals("id"))continue;
if(rsmd.getColumnName(j).equals("ID"))continue;
if(rsmd.getColumnName(j).equals("iD"))continue;
if(rsmd.getColumnName(j).equals("Id"))continue;
typemap.put(rsmd.getColumnName(j)+"---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql+=rsmd.getColumnName(j)+",";
}
sql = sql.substring(0,sql.length()-1);
sql+=") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
1、服务器端
操作系统:Windows 7
Web服务器:Tomcat7.0
数据库:Mysql
开发语言:Java
2、客户端
浏览器:Internet Explorer10
界面布局:DIV+CSS
分辨率:最佳效果1027*768以上像素
3、开发工具
Dreamweaver
Myeclipse
系统测试是用于检查软件的质量、性能、可靠性等是否符合用户需求。一套严谨的、规范的、完善的测试过程将大大提高软件的质量、可信度、可靠性,降低软件的出错率,降低用户风险系数。通过在计算机上对系统进行测试试验并从中发现此系统中存在的问题和错误然后加以修改,使之更加符合用户需求。
1.测试的目的是通过测试来发现程序在执行过程中的错误的过程。
2.好的测试方案是可以检验出还未被发现的错误的方案。
3.好的测试是发现了到目前为止还未被发现的错误的测试。
4.该系统能够完成社团活动/活动服务、社团维护、活动/活动服务维护、用户维护、系统维护等功能,做到所开发的系统操作简单,尽量使系统操作不受用户对电脑知识水平的限制。
下表是社团管理功能的测试用例,检测了社团管理中对社团信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;用户登录系统。
表6-1 社团管理的测试用例
功能描述 | 用于社团管理 | |
测试目的 | 检测社团管理时的各种操作的运行情况 | |
测试数据以及操作 | 预期结果 | 实际结果 |
点击添加社团,必填项合法输入,点击保存 | 提示添加成功 | 与预期结果一致 |
点击添加社团,必填项输入不合法,点击保存 | 提示必填项不能为空 | 与预期结果一致 |
点击修改社团,必填项修改为空,点击保存 | 提示必填项不能为空 | 与预期结果一致 |
点击修改社团,必填项输入不合法,点击保存 | 提示必填项不能为空 | 与预期结果一致 |
点击删除社团,选择社团删除 | 提示删除成功 | 与预期结果一致 |
点击搜索社团,输入存在的社团名 | 查找出社团 | 与预期结果一致 |
点击搜索社团,输入不存在的社团名 | 不显示社团 | 与预期结果一致 |
下表是活动/活动服务管理功能的测试用例,检测了活动/活动服务管理中活动/活动服务单的操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;用户登录系统。
表6-2 活动/活动服务管理的测试用例
功能描述 | 用于活动/活动服务管理 | |
测试目的 | 检测活动/活动服务管理时各种操作的情况 | |
测试数据以及操作 | 预期结果 | 实际结果 |
未选择社团,点击提交 | 提示请选择社团 | 与预期结果一致 |
未上传附件,点击提交 | 提示请选择附件 | 与预期结果一致 |
未选择原因,点击提交 | 提示请选择原因 | 与预期结果一致 |
根据以上测试情况,测试结果如下表所示。
表6-1测试结果表
测试项目 | 测试结果 |
登录测试 | 成功 |
修改密码测试 | 成功 |
留言测试 | 成功 |
评论测试 | 成功 |
社团活动/活动服务测试 | 成功 |
社团成员测试 | 成功 |
用户管理测试 | 成功 |
社团管理测试 | 成功 |
社团活动管理测试 | 成功 |
本研究针对SSM学生社团管理系统地需求建模,数据建模及过程建模分析设计并实现SSM学生社团管理系统的过程。给出系统应用架构并分析优劣势,通过功能分解图,系统组件图描述功能需求。设计建立了数据库,给出系统关键数据结构的定义。通过类关系图描述组件间的协作关系,给出各个类的定义方法。通过描述每一个类的字段,属性及方法实现SSM学生社团管理系统的前后端代码。最终给出系统集成整合方法,完成SSM学生社团管理系统地设计与实现。
在此项目的开发中,先要按照产品经理做出的产品模型铺出大体的页面,并在其中找好页面的逻辑关系,并且中途总结一些页面上的问题重新反馈给产品经理,当静态页面的搭建的大体已经完善时,就需要和负责后台开发的技术开发者联系,来接好前后台的数据接口,可以让后台的信息在前台显示出来,在这个项目实现中,不光明白了前端开发和产品经理的联系,也明白了后台在整个系统中起到了什么作用,因为前后台的连接,用户可以对系统进行操作,可以在输入自己的相关信息后,通过后台加工,完成对数据库的查找、修改、添加,而理解了这些关系与实现的方法后。再去完善整个系统的功能就更加清晰与简单了。此次的项目它涉及了前台与后台系统的搭建,在学校所学的知识基础上,此次的项目,让我对于一个系统的前端开发,以及后台的作用都有了一个更深切的认知。
参考文献
[1]田克迪.学生社团融入高校“大思政”教育的动力机制研究[J].辽宁经济职业技术学院.辽宁经济管理干部学院学报,2023(01):88-90.
[2]王宪中.新时代背景下高校学生社团管理模式创新研究[J].吉林农业科技学院学报,2023,32(01):54-57.
[3]陈欣杰,陈思宇,潘文琦.以学生社团社会实践为主体的校园文化建设策略[J].才智,2023(06):189-192.
[4]Pratap Singh Surya,Singh Jagbir,Pal Anuj. Application on Soil Bearing Capacity by Using SPT Values[J]. IOP Conference Series: Earth and Environmental Science,2023,1110(1).
[5]郑李明.基于SSM中国幼儿体育教学内容的分析[J].四川体育科学,2023,42(01):139-142.DOI:10.13932/j.cnki.sctykx.2023.01.27.
[6]伍德鹏,李佩学.基于SSM框架的高职院校教学办公用品管理信息系统设计研究[J].轻工科技,2023,39(01):99-101.
[7]Maruti Endang Sri,Yulianto Bambang,Suhartono Suhartono,Yohanes Budinuryanta,Cahyono Bambang Eko Hari. Scale development as a measuring tool of critical Javanese language’ awareness for pre-service Javanese teachers[J]. Cogent Arts & Humanities,2022,9(1).
[8]宋方帅,陈善志.新时代高校学生社团发展的困境与突破:组织生命周期理论的视角[J].长江工程职业技术学院学报,2022,39(04):72-76.DOI:10.14079/j.cnki.cn42-1745/tv.2022.04.018.
[9]梁会成,王黎光.基于JSP+SSM在线领养猫咪系统的设计与实现[J].电子制作,2022,30(24):59-62+45.DOI:10.16589/j.cnki.cn11-3571/tn.2022.24.018.
[10]陶爱兰. 基于SSM的数字化审计平台的设计与实现[D].南京邮电大学,2021.DOI:10.27251/d.cnki.gnjdc.2021.001665.
[11]陆俊龙.公安院校学生社团建设的思考——以重庆警察学院为例[J].教育教学论坛,2022(45):41-45.
[12]胡龙宇,徐玉婷.新时期高校学生社团建设路径的理性探析[J].江西电力职业技术学院学报,2022,35(10):119-121+124.
[13]钱艳丽.一站式背景下高校学生社团书院育人模式改革路径探析[J].延边教育学院学报,2022,36(05):94-96.
[14]庞军,徐娜娜,何青松.科技类学生社团品牌建设与内涵提升[J].湖北开放职业学院学报,2022,35(18):136-138.
[15]李乐.Java语言应用研究[J].智慧中国,2022(09):80-81.
[16]黄超.新时代加强高职院校学生社团建设的对策研究——以厦门市高职院校为例[J].龙岩学院学报,2022,40(05):103-109.DOI:10.16813/j.cnki.cn35-1286/g4.2022.05.015.
[17]王静.“双高”背景下高职院校学生社团建设探析——以杨凌职业技术学院为例[J].杨凌职业技术学院学报,2022,21(03):59-61.DOI:10.19859/j.cnki.cn61-1403/G4.2022.03.018.
[18]贺斌.计算机软件开发中JAVA语言的应用研究[J].中国设备工程,2022(11):247-249.
[19]杨迎.Java语言异常处理机制的分析[J].电子技术,2022,51(03):42-43.
[20]曹嵩彭,王鹏宇.浅析Java语言在软件开发中的应用[J].信息记录材料,2022,23(03):114-116.DOI:10.16009/j.cnki.cn13-1295/tq.2022.03.009.
致谢
在此论文完成之际,感谢我的指导老师。在指导老师的网页设计课上,当时我学到了很多东西,这对于我实习过程中也打了一定的基础,而且指导老师对于我的设计也提出许多建议,并予以悉心的指导,对于一些细小的问题都耐心的指导我去完善,授予我写论文的好友,时常的鼓励我,另外感谢教导我完善此项目的前端同学,对于这个项目,我是边学习边实现完成的,有许多东西开始并不是很明白,但前端开发的同学非常耐心的引导我去将这个项目完成,在系统的后端开发中,所用到的后台开发技术也时常会给我讲解,助于我更好的将论文完成,在此对帮助到我的同学和一直予以教导的指导老师致以衷心的感谢,祝事业有成。
请关注点赞+私信博主,免费领取项目源码