目录
一、前言介绍
二、系统功能分析
2.1前台用户功能
2.2已注册用户的功能
2.3后台管理员功能
2.4非功能需求分析
三、系统详细设计
3.1系统首页模块
3.2景点信息模块
3.3景点详情模块
3.4酒店信息模块
3.5个人资料模块
四、管理员功能模块
4.1普通用户模块
4.2景点资讯模块
4.3景点信息模块
4.4酒店信息模块
4.5路线申请模块
五、部分核心代码
5.1景点信息管理关键代码
5.2酒店信息管理关键代码
5.3登录关键代码
5.4用户注册关键代码
信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对旅游等问题,对旅游网站进行研究分析,然后开发设计出旅游网站以解决问题。
旅游网站主要功能模块包括信息系统首页、在线留言、公告消息、景点资讯、景点信息、酒店信息,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取Mysql作为后台数据的主要存储单元,采springboot技术、vue技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对旅游网站的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现旅游网站和部署运行使用它。
前台用户可分为未注册用户需求和以注册用户需求。
未注册用户的功能如下:
注册账号:用户填写个人信息,并验证手机号码。
景点信息:用户可以根据景点类型浏览景点的信息,并选中某个景点查看详情,例如:景点名称、景点编号、景点类型、景点介绍等。
登录:根据账号密码进行登录操作。
个人中心:用户因个人信息的变更可以随时修改自己注册信息。
浏览评论信息:选中某间景点可查看其用户的评论。
景点信息:用户根据自己的需求选中某个景点进行购票操作。
论坛:用户可以根据自己的观点看法对相关景点进行发布。
收藏:在景点的基础上对景点的收藏,收藏按时间形成收藏列表,个人对其收藏夹进行维护和整理。
酒店信息:用户根据自己的需求选中某个酒店进行预订操作,并可以对其进行编辑更新删除等操作。
修改密码:管理员可以随时修改自己进入系统的登录密码,以保证系统的安全性。
景点信息管理:对景点信息进行详情,删除、修改信息。
酒店信息管理:对酒店信息进行详情,删除、修改信息。
对酒店预订信息进行处理:办理酒店预订审核等。
用户管理:可以查看注册用户的信息,并对其进行管理。
首先主要考虑的是系统功能软件,在具体设计的环节上,是不是能够较好的满足各类用户的基本功能需求,如果不能较好的满足用户需求,那么这个系统的存在是没有价值的。软件系统的非功能性求分析,从7个方面展开,一个是性能分析,针对系统;一个是安全分析,针对系统,一个是完整度分析,针对系统,一个是可维护分析,针对系统,一个是可扩展性分析,针对系统,一个是适应业务的性能分析。面对旅游网站存在的性能、安全、扩展、完整度等7个方面性能综合比对分析后发现,需要相应的非功能性需求分析。
-
@PostMapping(
"/add")
-
-
@Transactional
-
-
public
Map<
String,
Object>
add(
HttpServletRequest request) throws
IOException {
-
-
service.
insert(service.
readBody(request.
getReader()));
-
-
return
success(
1);
-
-
}
-
-
@Transactional
-
-
public
Map<
String,
Object>
addMap(
Map<String,Object> map){
-
-
service.
insert(map);
-
-
return
success(
1);
-
-
}
-
-
public
Map<
String,
Object>
readBody(
BufferedReader reader){
-
-
BufferedReader br =
null;
-
-
StringBuilder sb =
new
StringBuilder(
"");
-
-
try{
-
-
br = reader;
-
-
String str;
-
-
while ((str = br.
readLine()) !=
null){
-
-
sb.
append(str);
-
-
}
-
-
br.
close();
-
-
String json = sb.
toString();
-
-
return
JSON
Object.
parseObject(json,
Map.
class);
-
-
}
catch (
IOException e){
-
-
e.
printStackTrace();
-
-
}
finally{
-
-
if (
null != br){
-
-
try{
-
-
br.
close();
-
-
}
catch (
IOException e){
-
-
e.
printStackTrace();
-
-
}
-
-
}
-
-
}
-
-
return
null;
-
-
}
-
-
public
void
insert(
Map<String,Object> body){
-
-
StringBuffer sql =
new
StringBuffer(
"INSERT INTO ");
-
-
sql.
append(
"`").
append(table).
append(
"`").
append(
" (");
-
-
for (
Map.
Entry<
String,
Object>
entry:body.
entrySet()){
-
-
sql.
append(
"`"+
humpToLine(entry.
getKey())+
"`").
append(
",");
-
-
}
-
-
sql.
deleteCharAt(sql.
length()-
1);
-
-
sql.
append(
") VALUES (");
-
-
for (
Map.
Entry<
String,
Object>
entry:body.
entrySet()){
-
-
Object value = entry.
getValue();
-
-
if (value
instanceof
String){
-
-
sql.
append(
"'").
append(entry.
getValue()).
append(
"'").
append(
",");
-
-
}
else {
-
-
sql.
append(entry.
getValue()).
append(
",");
-
-
}
-
-
}
-
-
sql.
deleteCharAt(sql.
length() -
1);
-
-
sql.
append(
")");
-
-
log.
info(
"[{}] - 插入操作:{}",table,sql);
-
-
Query query =
runCountSql(sql.
toString());
-
-
query.
executeUpdate();
-
-
}
-
@RequestMapping(value =
"/del")
-
-
@Transactional
-
-
public
Map<
String,
Object>
del(
HttpServletRequest request) {
-
-
service.
delete(service.
readQuery(request), service.
readConfig(request));
-
-
return
success(
1);
-
-
}
-
-
@Transactional
-
-
public
void
delete(
Map<String,String> query,Map<String,String> config){
-
-
StringBuffer sql =
new
StringBuffer(
"DELETE FROM ").
append(
"`").
append(table).
append(
"`").
append(
" ");
-
-
sql.
append(
toWhereSql(query,
"0".
equals(config.
get(
FindConfig.
GROUP_BY))));
-
-
log.
info(
"[{}] - 删除操作:{}",table,sql);
-
-
Query query1 =
runCountSql(sql.
toString());
-
-
query1.
executeUpdate();
-
-
}
-
/**
-
-
* 登录
-
-
* @param data
-
-
* @param httpServletRequest
-
-
* @return
-
-
*/
-
-
@PostMapping(
"login")
-
-
public
Map<
String,
Object>
login(
@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
-
-
log.
info(
"[执行登录接口]");
-
-
String username = data.
get(
"username");
-
-
String email = data.
get(
"email");
-
-
String phone = data.
get(
"phone");
-
-
String password = data.
get(
"password");
-
-
List resultList =
null;
-
-
Map<
String,
String> map =
new
HashMap<>();
-
-
if(username !=
null &&
"".
equals(username) ==
false){
-
-
map.
put(
"username", username);
-
-
resultList = service.
select(map,
new
HashMap<>()).
getResultList();
-
-
}
-
-
else
if(email !=
null &&
"".
equals(email) ==
false){
-
-
map.
put(
"email", email);
-
-
resultList = service.
select(map,
new
HashMap<>()).
getResultList();
-
-
}
-
-
else
if(phone !=
null &&
"".
equals(phone) ==
false){
-
-
map.
put(
"phone", phone);
-
-
resultList = service.
select(map,
new
HashMap<>()).
getResultList();
-
-
}
else{
-
-
return
error(
30000,
"账号或密码不能为空");
-
-
}
-
-
if (resultList ==
null || password ==
null) {
-
-
return
error(
30000,
"账号或密码不能为空");
-
-
}
-
-
//判断是否有这个用户
-
-
if (resultList.
size()<=
0){
-
-
return
error(
30000,
"用户不存在");
-
-
}
-
-
User byUsername = (
User) resultList.
get(
0);
-
-
Map<
String,
String> groupMap =
new
HashMap<>();
-
-
groupMap.
put(
"name",byUsername.
getUserGroup());
-
-
List groupList = userGroupService.
select(groupMap,
new
HashMap<>()).
getResultList();
-
-
if (groupList.
size()<
1){
-
-
return
error(
30000,
"用户组不存在");
-
-
}
-
-
UserGroup userGroup = (
UserGroup) groupList.
get(
0);
-
-
//查询用户审核状态
-
-
if (!
StringUtils.
isEmpty(userGroup.
getSourceTable())){
-
-
String sql =
"select examine_state from "+ userGroup.
getSourceTable() +
" WHERE user_id = " + byUsername.
getUserId();
-
-
String res =
String.
valueOf(service.
runCountSql(sql).
getSingleResult());
-
-
if (res==
null){
-
-
return
error(
30000,
"用户不存在");
-
-
}
-
-
if (!res.
equals(
"已通过")){
-
-
return
error(
30000,
"该用户审核未通过");
-
-
}
-
-
}
-
-
//查询用户状态
-
-
if (byUsername.
getState()!=
1){
-
-
return
error(
30000,
"用户非可用状态,不能登录");
-
-
}
-
-
String md5password = service.
encryption(password);
-
-
if (byUsername.
getPassword().
equals(md5password)) {
-
-
// 存储Token到数据库
-
-
AccessToken accessToken =
new
AccessToken();
-
-
accessToken.
setToken(
UUID.
randomUUID().
toString().
replaceAll(
"-",
""));
-
-
accessToken.
setUser_id(byUsername.
getUserId());
-
-
tokenService.
save(accessToken);
-
-
// 返回用户信息
-
-
JSON
Object user =
JSON
Object.
parseObject(
JSON
Object.
toJSONString(byUsername));
-
-
user.
put(
"token", accessToken.
getToken());
-
-
JSON
Object ret =
new
JSON
Object();
-
-
ret.
put(
"obj",user);
-
-
return
success(ret);
-
-
}
else {
-
-
return
error(
30000,
"账号或密码不正确");
-
-
}
-
-
}
-
/
**
-
-
* 注册
-
-
* @param user
-
-
* @return
-
-
*/
-
-
@PostMapping("register")
-
-
public Map
signUp(@RequestBody User user) {
-
-
// 查询用户
-
-
Map
query = new HashMap<>();
-
-
query.put("username",user.getUsername());
-
-
List list = service.select(query, new HashMap<>()).getResultList();
-
-
if (list.size()>0){
-
-
return error(30000, "用户已存在");
-
-
}
-
-
user.setUserId(null);
-
-
user.setPassword(service.encryption(user.getPassword()));
-
-
service.save(user);
-
-
return success(1);
-
-
}
-
-
/**
-
-
* 用户ID:[0,8388607]用户获取其他与用户相关的数据
-
-
*/
-
-
@Id
-
-
@GeneratedValue(strategy = GenerationType.IDENTITY)
-
-
@Column(name = "user_id")
-
-
private Integer userId;
-
-
/**
-
-
* 账户状态:[
0,10](
1可用|2异常|3已冻结|4已注销)
-
-
*/
-
-
@Basic
-
-
@Column(name = "state")
-
-
private Integer state;
-
-
/**
-
-
* 所在用户组:[0,32767]决定用户身份和权限
-
-
*/
-
-
@Basic
-
-
@Column(name = "user_group")
-
-
private String userGroup;
-
-
/**
-
-
* 上次登录时间:
-
-
*/
-
-
@Basic
-
-
@Column(name = "login_time")
-
-
private Timestamp loginTime;
-
-
/**
-
-
* 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
-
-
*/
-
-
@Basic
-
-
@Column(name = "phone")
-
-
private String phone;
-
-
/**
-
-
* 手机认证:[
0,1](
0未认证|1审核中|2已认证)
-
-
*/
-
-
@Basic
-
-
@Column(name = "phone_state")
-
-
private Integer phoneState;
-
-
/**
-
-
* 用户名:[0,16]用户登录时所用的账户名称
-
-
*/
-
-
@Basic
-
-
@Column(name = "username")
-
-
private String username;
-
-
/**
-
-
* 昵称:[0,16]
-
-
*/
-
-
@Basic
-
-
@Column(name = "nickname")
-
-
private String nickname;
-
-
/**
-
-
* 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
-
-
*/
-
-
@Basic
-
-
@Column(name = "password")
-
-
private String password;
-
-
/**
-
-
* 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
-
-
*/
-
-
@Basic
-
-
@Column(name = "email")
-
-
private String email;
-
-
/**
-
-
* 邮箱认证:[
0,1](
0未认证|1审核中|2已认证)
-
-
*/
-
-
@Basic
-
-
@Column(name = "email_state")
-
-
private Integer emailState;
-
-
/**
-
-
* 头像地址:[0,255]
-
-
*/
-
-
@Basic
-
-
@Column(name = "avatar")
-
-
private String avatar;
-
-
/**
-
-
* 创建时间:
-
-
*/
-
-
@Basic
-
-
@Column(name = "create_time")
-
-
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-
-
private Timestamp createTime;
-
-
@Basic
-
-
@Transient
-
-
private String code;
-
-
}
SpringBoot+Vue实现前后端分离旅游资源信息系统