2.2 JSP简介
JSP在网页开发中有利于简化代码迁移过程,在电子商务中应用广泛。在实际应用过程中,我们可以直接对JSP的相关页面进行编写,随后就可以直接执行。执行过程中,可以直接利用浏览器对jsp发出请求。在接收到对应的请求之后,jsp服务器会进行针对性的识别。如果代码不存在就会直接利用Servlet的源代码来对其进行有针对性的转换处理,如果存在可以直接利用JSP的服务器对其是否存在修改问题进行确认和处理。在这种背景下,如果其中并不存在任何的修改或者是更新,那么就可以直接将代码进行编译处理,同时也可以在内存中对其进行有效的执行落实。在具体操作过程中,通常在对代码进行储存编译之后,其自身产生出的结果一般都会直接被返回到客户端中。虽然在第一次请求之后,就会产生出相对应的JSP文件编译,但是在与实际情况进行结合分析之后,JSP页面中的Web开发人员基本上都是第一个请求发出者。在这种背景下,用户在对JSP页边进行访问的时候,其实早就已经被编译,这样有利于促使访问效率得到有效提升。
2.3 mysql简介
数据库是存放数据的仓库的简称,数据库中的数据都是有规律结构的,相同类型的数据是会被放在一起的,而不同类型的数据之间会被隔离开。而对这些数据进行操作管理的又被成为数据库管理系统。读写数据库的语言又被叫做SQL语言,一般是由程序来操纵SQL语句来进行对数据库的读写操作。而数据库内部也有划分,分为了关系型数据库和非关系型数据库,关系型数据库就是内部存放的数据的格式能够直观的反映出数据库内实体间的关系,常见的关系型数据库有:MySQL数据库、SQLServer等,相反的非关系型数据库内的结构被简化了,为了避免冗余以及摒弃分布式操作而设计了这种类型的数据库,常见的非关系型数据库有:MongoDB等。
MySQL数据库由瑞典的MySQLAB公司开发出来,它的优点就是体积小,速度快,并且成本低的同时还是一个开源的软件,所以一些中小型公司常常采用MySQL数据库来进行开发。
2.4 B/S结构
由于Web项目的兴起,B/S结构也伴随着一同兴起的一种网络结构模式,B/S结构统一了浏览器,将系统功能实现的核心部分放在了服务器上面,目的就是为了简化开发者的开发以及维护。它的工作流程大致是:首先用户在客户端提交表单页面,向服务器发送请求,服务器接收到请求后对请求进行处理,处理这些请求的技术就是服务器端常常使用到的技术,比如:JSP等,然后服务器端又把处理完请求的响应返回给浏览器,然后浏览器呈现出用户界面。结构图如下:
3 系统分析与设计
3.1 需求分析
3.1.1 需求说明
本需求针对大学社团管理系统的设计与实现,旨在开发一个高效、可操作性强且具备良好可扩展性的管理系统。该系统需基于JAVA语言,运用MYSQL数据库和B/S架构,支持多用户权限管理,确保不同用户能够完成各自的功能。系统应实现对大学社团信息的规范管理、科学统计和快速查询,以提升管理效率,减轻学校社团管理负担。同时,该系统需确保良好的用户体验,为大学生提供一个更好的社团环境。
3.1.2 用例分析图
本文的用例分析图如下图1所示。
图 1用例分析图
3. 2 整体功能设计
3.2.1 程序功能分析
有一个简单方便的社团管理系统,能减少不必要的时间,保证活动记录的准确性。清楚的了解何时何地多少人举办社团活动,方便对社团活动历史记录的管理和查看,对社员之间的交流也起到促进作用。所以我认为该系统需要两个模块,用户模块和管理员模块,用户模块包括以下的功能:
1.用户注册功能:用户登录之前需要进行身份注册,输入自己的个人信息,登录名称唯一。
2.用户登录功能:用户名密码校验是否正确,正确即可放行,将登录信息存入到Session。
3.新闻列表:用户可以查看新闻信息,了解学校的新闻动态。
4.社团列表:用户可以查看所有社团,申请加入社团,也可以申请加入社团活动,同时可以成立社团和查看自己成立的社团。
5.留言,用户可以对系统内的一些内容进行留言,对一些活动发表自己的看法。
管理员模块包括以下的功能:
1.用户管理:管理员可以管理所有的学生信息,添加、查看、删除、修改、锁定用户。
2.新闻管理:管理员可以管理所有的新闻信息,发布、审核、推荐、删除、修改新闻信息。
3.留言管理:管理员可以管理所有的留言信息、回复信息等。
4.社团列表:主要是管理社团的基本信息,同时具有审核社团,编辑、删除社团
5.社团风采:主要是管理社团的详细信息,介绍社团的风采。
6.社团活动:主要是管理社团的活动信息,审核社团活动、同时查看申请参加活动的人。
程序功能分析图如下图3.21所示。
图 2程序功能分析图
图3.21
3.2.2 数据流图设计
通过数据流图可以分析出系统的操作流程,理顺系统开发的方向,通过表与表之间数据流通,确定系统开发时的逻辑关系。根据系统分析阶段所得出的结论确定了学生社团管理系统中存在的实体。
系统数据流图如下所示。
4 详细设计与实现
4.1 数据库设计
4.1.1 部分E-R图
图 4.11 部分E-R图
4.1.2 数据库表
表4.1 db_active_stu(学生活动申请信息)表
中文名称 | 英语名称 | 字段名 | 数据类型 | 描述 |
编号 | id | id | varchar | |
活动编号 | active_id | active_id | varchar | |
学生编号 | stu_id | stu_id | varchar | |
学生姓名 | stu_name | stu_name | varchar | |
联系电话 | phone | phone | varchar | |
报名状态 | type | type | varchar | |
是否正常出席 | is_arrive | is_arrive | varchar |
表4.2 db_message(留言信息)表
中文名称 | 英语名称 | 字段名 | 数据类型 | 描述 |
编号 | id | id | varchar | |
留言内容 | content | content | text | |
留言时间 | create_time | create_time | timestamp | |
留言学生 | create_stu | create_stu | varchar | |
审核状态 | audit_type | audit_type | varchar | |
回复内容 | replay | replay | text | |
回复时间 | replay_time | replay_time | timestamp | |
回复人 | replay_user | replay_user | varchar |
表4.3 db_site_news(新闻信息)表
中文名称 | 英语名称 | 字段名 | 数据类型 | 描述 |
编号 | id | id | varchar | |
新闻状态 | news_type | news_type | varchar | |
标题 | title | title | varchar | |
新闻主图 | pic | pic | varchar | |
简介 | short_content | short_content | text | |
新闻内容 | content | content | longtext | |
创建人 | create_user | create_user | varchar | |
创建时间 | create_time | create_time | timestamp | |
是否推荐 | is_run | is_run | varchar | |
所属社团 | belon_team | belon_team | varchar | |
是否审核 | is_audit | is_audit | varchar | |
开始时间 | ac_start_time | ac_start_time | timestamp | |
结束时间 | ac_end_time | ac_end_time | timestamp | |
是否可以回复 | is_can_apply | is_can_apply | varchar |
表4.4 db_stu_tem(学生社团信息)表
中文名称 | 英语名称 | 字段名 | 数据类型 | 描述 |
学生编号 | stu_id | stu_id | varchar | |
社团编号 | team_id | team_id | varchar |
表4.5 db_student(学生信息)表
中文名称 | 英语名称 | 字段名 | 数据类型 | 描述 |
编号 | id | id | varchar | |
登录名称 | login_name | login_name | varchar | |
登录密码 | login_password | login_password | varchar | |
注册时间 | regit_time | regit_time | timestamp | |
审核状态 | audit_type | audit_type | varchar | |
学生姓名 | stu_name | stu_name | varchar | |
性别 | sex | sex | varchar | |
学院 | school_room | school_room | varchar | |
班级 | class_room | class_room | varchar | |
联系电话 | phone | phone | varchar | |
头像 | pic | pic | varchar | |
备注 | remark | remark | text |
表4.6 db_team_applay(社团申请信息)表
中文名称 | 英语名称 | 字段名 | 数据类型 | 描述 |
编号 | id | id | varchar | |
申请社团编号 | applay_team | applay_team | varchar | |
申请学生 | applay_stu | applay_stu | varchar | |
申请理由 | applay_content | applay_content | text | |
申请时间 | applay_time | applay_time | timestamp | |
申请状态 | applay_type | applay_type | varchar |
表4.7 db_teams(社团信息)表
中文名称 | 英语名称 | 字段名 | 数据类型 | 描述 |
编号 | id | id | varchar | |
社团名字 | team_name | team_name | varchar | |
社团宣传图 | pic | pic | varchar | |
社团介绍 | team_intro | team_intro | text | |
成立时间 | build_time | build_time | timestamp | |
创建人(社长) | build_stu | build_stu | varchar | |
审核状态 | audit_type | audit_type | varchar | |
成员数 | members | members | int | |
备注 | remark | remark | text |
表4.8 money_manger(财务信息)表
中文名称 | 英语名称 | 字段名 | 数据类型 | 描述 |
编号 | id | id | varchar | |
活动编号 | act_id | act_id | varchar | |
交易类型 | type | type | varchar | 1.支出 2.收入 |
交易金额 | money | money | double | |
交易备注 | remark | remark | text |
表4.9 sys_menu(菜单信息)表
中文名称 | 英语名称 | 字段名 | 数据类型 | 描述 |
编号 | id | id | varchar | |
单菜名称 | name | name | varchar | |
访问地址 | href | href | varchar | |
目标 | target | target | varchar | |
是否显示 | is_show | is_show | varchar | |
排序 | sort | sort | int | |
父级ID | parent_id | parent_id | varchar | |
级父ids | parent_ids | parent_ids | varchar | |
备注 | remarks | remarks | text |
表4.10 sys_menu_role(菜单角色信息)表
中文名称 | 英语名称 | 字段名 | 数据类型 | 描述 |
角色编号 | role_id | role_id | varchar | |
菜单编号 | menu_id | menu_id | varchar |
表4.11 sys_role(角色信息)表
中文名称 | 英语名称 | 字段名 | 数据类型 | 描述 |
编号 | id | id | varchar | |
角色名称 | role_name | role_name | varchar | |
角色标志 | role_flag | role_flag | varchar | |
备注 | introduce | introduce | text |
表4.12 sys_user(用户信息)表
中文名称 | 英语名称 | 字段名 | 数据类型 | 描述 |
编号 | id | id | varchar | |
用户名 | username | username | varchar | |
密码 | password | password | varchar | |
头像 | pic | pic | varchar | |
角色 | role | role | varchar | |
是否锁定 | is_bolck | is_bolck | varchar |
4.2 客户端设计
4.2.1 登录功能实现
用户的登录入口在系统首页的右上方,系统的部分功能只有在用户登录状态下才可以访问,登录时用户提交的表单会和数据库中的用户信息进行比对,各项一致才能通过校验,在系统中进行下一步操作。主要步骤为当用户输入账号、密码之后,系统校验账号和密码是否正确,如果错误则提示相关错误,验证无误后前端的login.jsp页面会向后端发送登录请求,通过调用代码中的MainController类里的login方法来验证。验证成功后,将用户名显示在系统首页上。登录界面如下图4.21所示。
图4.21 用户登录界面
4.2.2 用户注册
用户的注册入口在系统首页的右上方,系统的学生用户只能通过注册进行添加,只有注册之后才能进行登录。主要步骤为当用户输入好所有信息之后,验证无误后前端的regit.jsp页面会向后端发送注册请求,注册成功后,用户将能进行登录。界面如图4.22所示。
图4.22 用户注册界面
用户点击首页社团列表,将teamDetail请求发送到FrontController类,展示所有的社团信息,用户登录之后,通过点击申请加入社团,即可发送申请请求。用户查看社团信息如下图4.24所示:
图4.24 社团信息页面
4.2.4 社团活动
用户点击首页社团活动列表,将siteNewsList请求发送到FrontController类,参数newsType为2,即可展示所有的社团活动信息。用户查看社团活动信息如下图4.25所示。
图4.25 社团活动信息页面
4.2.5 用户中心功能实现
用户登录成功之后,点击首页用户名信息,弹出下拉列表之后,选择用户中心即可查看以及修改自己的信息,修改之后,点击更新信息发送请求给FrontController类的regit方法,完成个人信息的更新。用户中心页面如下图4.26所示。
图4.26 用户中心图
4.2.6 用户社团申请
![]() |
用户社团申请,先完善社团信息之后,点击提交申请,发送请求给FrontControlle类的applayBuildTeam方法,在调用TeamsDao的add方法,将基本数据写入数据库。用户社团申请页面如图4.27所示。
图4.27 用户社团申请页面
4.2.7 用户申请页面
用户查看申请加入社团列表,点击申请加入社团,发送getMyTeamApplay请求到FrontController,再调用TeamApplayDao的list方法,将所有自己申请的社团信息进行分页展示。用户申请加入社团列表页面如图4.28所示。
![]() |
图4.28 用户申请页面
4.2.8 管理员管理页面
添加用户信息时,完善信息之后,点击保存调用Controlle层的UserController接受传过来的用户信息,再调用UserController类的add方法,经过UserController业务层到UserDao持久层的处理,完成对整个添加用户信息的操作。修改信息时,选择需要修改的用户进行修改,调用UserController控制器的form方法,拿到该用户原本的信息并显示到页面,管理员再对需要修改的用户信息字段进行修改,完成后调用update方法,调用业务层的update方法,更新数据库的菜单信息表的数据。管理员管理页面如图4.29所示。
图4.29 管理员管理页面
4.2.9 菜单管理页面
添加菜单信息时,完善信息之后,点击保存调用Controlle层的MenuController接受传过来的菜单信息,再调用MenuController类的add方法,经过MenuController业务层到MenuDao持久层的处理,完成对整个添加菜单信息的操作。修改信息时,选择需要修改的菜单进行修改,调用MenuController控制器的form方法,拿到该菜单原本的信息并显示到页面,管理员再对需要修改的菜单信息字段进行修改,完成后调用update方法,调用业务层的update方法,更新数据库的菜单信息表的数据。菜单管理页面如图4.30所示。
图4.30 菜单管理页面
4.2.10留言管理
回复留言时,选择需要回复的留言进行修改,调用MessageController控制器的form方法,拿到该留言原本的信息并显示到页面,管理员再对需要回复的留言信息字段进行回复,完成后调用update方法,调用业务层的update方法,回复留言后将回复数据写入留言信息表。留言管理页面如图4.31所示。
图4.31 留言管理页面