Java项目:在线旅游路线商城系统(java+JSP+JavaScript+servlet+Mysql)

源码获取:俺的博客首页 "资源" 里下载!

项目介绍

本系统分为前后台,分为普通用户和管理员两种角色;

管理员角色包含以下功能:

管理员登录,用户管理,路线分类管理,路线管理,订单管理,留言管理,新闻管理等功能。

用户角色包含以下功能:
按分类查看,用户登录,修改个人信息,查看旅游线路详情,加入购物车,查看订单,提交订单,提交留言等功能。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 
5.数据库:MySql 5.7版本;
6.是否Maven项目:否;


技术栈

JSP+CSS+JavaScript+java+servlet+mysql


使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中src/com/hr/dao/Basedao.java配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入http://localhost:8080/ 登录
管理员账号/密码:admin/admin 
用户账号/密码:user/123456

 

 

 

 

 

 

登陆后台管理控制层:

/**
 * 登陆后台管理界面
 *
 */
@Controller
@RequestMapping("/backgroundweb")
public class SysloginController {
	public Logger logger = LoggerFactory
			.getLogger(SysloginController.class);// 输出日志
	@Autowired
	private SceneInformationService sceneInformationService;
	@Autowired
	private StrategyInfoemationService strategyInfoemationService;
	@Autowired
	private TourismUserService tourismUserService;
	@Autowired 
	private SearchRecordService searchRecordService;
   @RequestMapping("/checkLogin")
   @ResponseBody
   public JSONObject checkLogin(HttpServletRequest request,HttpServletResponse response,String userName,String passWord){
	   logger.info("收到的用户名为:"+userName+",密码为:"+passWord);
	   JSONObject json=new JSONObject();
	   if(userName.equals("admin") && passWord.equals("123456")){
		   request.getSession().setAttribute("userName","admin");
		   json.put("fiag", true);
	   }else{
		   json.put("fiag", false);
	   }
	   return json;
   }
   @RequestMapping("/jumpMain")
   public String jumpMain(ModelMap model){
	   model.put("userName","admin");
	   return "backgroundWeb/main";
   }
 //跳转新建景点界面
   @RequestMapping("/addAttractions")
   public String addAttractions(){
	 return "backgroundWeb/addAttractions";
   }
   //跳转用户信息界面
   @RequestMapping("/viewUser")
   public String viewUser(){
	   return "backgroundWeb/viewUser";
   }
   /**
	 * 用户退出
	 * @return
	 */
	@RequestMapping(value="/logout")
	public String dropOut(HttpServletRequest request, HttpServletResponse response){
		HttpSession session = request.getSession();
		session.removeAttribute("userName");
		return "redirect:/login";
	}
  //保存景点信息
   @RequestMapping("/save")
   @ResponseBody
   public JSONObject save (@RequestBody AttractionsDto attractionsDto){
	   JSONObject json =new JSONObject();
	   boolean flag=true;
	   logger.info("保存的实体类信息:"+JSONObject.toJSONString(attractionsDto));
	   try{
		   SceneInformation sceneInformation =new SceneInformation();
		   sceneInformation.setCreateTime(new Date());
		   sceneInformation.setState(1);
		   sceneInformation.setSceneSite(attractionsDto.getSceneSite());
		   sceneInformation.setSceneImage(attractionsDto.getSceneImage());
		   sceneInformation.setSceneName(attractionsDto.getSceneName());
		   sceneInformation.setScenePrice(attractionsDto.getScenePrice());
		   sceneInformation.setSceneTime(attractionsDto.getSceneTime());
		   sceneInformation.setSceneIntroduce(attractionsDto.getSceneIntroduce());
		   Integer aa= sceneInformationService.insert(sceneInformation);
		   logger.info("返回的id为:"+aa+"当前实体类id为:"+sceneInformation.getId());
		   if(aa >0){
			       if(StringUtils.isNotEmpty(attractionsDto.getOneSite())){
			    	   StrategyInfoemation strategyInfoemation =new StrategyInfoemation();
					   strategyInfoemation.setStatus(Constant.isUsd);
					   strategyInfoemation.setCreateTime(new Date());
					   strategyInfoemation.setStrategyAccommodation(attractionsDto.getOneAccommodation());
					   strategyInfoemation.setStrategyDays(1);
					   strategyInfoemation.setStrategyIntroduce(attractionsDto.getOneIntroduce());
					   strategyInfoemation.setStrategySite(attractionsDto.getOneSite());
					   strategyInfoemation.setStrategyTraffic(attractionsDto.getOneTraffic());
					   strategyInfoemation.setSceneId(sceneInformation.getId());
					   strategyInfoemationService.insert(strategyInfoemation);
					   strategyInfoemation=null;
			       }
				   if(StringUtils.isNotEmpty(attractionsDto.getTwoSite())){
					   StrategyInfoemation twoStrategyInfoemation=new StrategyInfoemation();
					   twoStrategyInfoemation.setStatus(Constant.isUsd);
					   twoStrategyInfoemation.setCreateTime(new Date());
					   twoStrategyInfoemation.setStrategyAccommodation(attractionsDto.getTwoAccommodation());
					   twoStrategyInfoemation.setStrategyDays(2);
					   twoStrategyInfoemation.setSceneId(sceneInformation.getId());
					   twoStrategyInfoemation.setStrategyIntroduce(attractionsDto.getTwoIntroduce());
					   twoStrategyInfoemation.setStrategySite(attractionsDto.getTwoSite());
					   twoStrategyInfoemation.setStrategyTraffic(attractionsDto.getTwoTraffic());
					   strategyInfoemationService.insert(twoStrategyInfoemation);
					   twoStrategyInfoemation=null;
				   }
				   if(StringUtils.isNotEmpty(attractionsDto.getThreeSite())){
					   StrategyInfoemation threeStrategyInfoemation=new StrategyInfoemation();
					   threeStrategyInfoemation.setStatus(Constant.isUsd);
					   threeStrategyInfoemation.setCreateTime(new Date());
					   threeStrategyInfoemation.setStrategyAccommodation(attractionsDto.getThreeAccommodation());
					   threeStrategyInfoemation.setStrategyDays(3);
					   threeStrategyInfoemation.setSceneId(sceneInformation.getId());
					   threeStrategyInfoemation.setStrategyIntroduce(attractionsDto.getThreeIntroduce());
					   threeStrategyInfoemation.setStrategySite(attractionsDto.getThreeSite());
					   threeStrategyInfoemation.setStrategyTraffic(attractionsDto.getThreeTraffic());
					   strategyInfoemationService.insert(threeStrategyInfoemation);
					   threeStrategyInfoemation=null;
				   }
		   }else{
			   flag=false;
		   }
	   }catch(Throwable te){
		   flag=false;
		   logger.error("保存景点信息异常信息为:", te); 
	   }
	   json.put("flag", flag);
	   return json;
   }
	@RequestMapping("/selectUserAll") 
	@ResponseBody
	public PageBean<TourismUser> selectUserAll(@RequestBody UserDto userDto){
		PageBean<TourismUser> pageBean = new PageBean<TourismUser>();// 初始化分页的实体
		try {
		   List<TourismUser> list=tourismUserService.selectAllUsers(userDto.getRows(),userDto.getOffset(),userDto.getMobilePhone(),userDto.getUserName());
		   Integer count=tourismUserService.selectUserCount(userDto.getMobilePhone(),userDto.getUserName());
		   pageBean.setRows(list);
		   pageBean.setTotal(count);
		}catch (Throwable te) {
			logger.error("查询用户所有信息异常信息为:", te);
		}
		return pageBean;
	}
	@RequestMapping("/viewSearchRecord")
	public String viewSearchRecord(){
		return "backgroundWeb/viewSearchRecord";
	}
	@RequestMapping("/selectSearchRecordAll")
	@ResponseBody
	public PageBean<SearchRecord> selectSearchRecordAll(@RequestBody SearchRecordDto searchRecordDto){
		PageBean<SearchRecord> pageBean = new PageBean<SearchRecord>();// 初始化分页的实体
		try {
		   List<SearchRecord> list=searchRecordService.selectAllSearchRecord(searchRecordDto.getRows(),searchRecordDto.getOffset(),searchRecordDto.getSearchScene(),searchRecordDto.getUserName());
		   Integer count=searchRecordService.selectSearchRecordCount(searchRecordDto.getSearchScene(),searchRecordDto.getUserName());
		   pageBean.setRows(list);
		   pageBean.setTotal(count);
		}catch (Throwable te) {
			logger.error("查询搜索所有信息异常信息为:", te);
		}
		return pageBean;
		
	}
}

旅游网用户管理控制层:

/**
 * 旅游网用户表 前端控制器
 */
@Controller
@RequestMapping("/tourismUser")
public class TourismUserController {
	public Logger logger = LoggerFactory
			.getLogger(TourismUserController.class);// 输出日志
	@Autowired
	private TourismUserService tourismUserService;
  @RequestMapping("/save")
  @ResponseBody
  public ResponseInformation save(@RequestBody TourismUser tourismUser){
	// 初始化返回码和返回信息,默认处理成功
	ResponseInformation responseInformation=new ResponseInformation();
	  logger.info("保存用户信息为:"+JSONObject.toJSONString(tourismUser));
	  try {
		  tourismUser.setCreateTime(new Date()); 
		  tourismUser.setStatus(Constant.isUsd);
		  Integer  count= tourismUserService.insert(tourismUser);
			if (count > 0) {
				logger.info("保存成功");
			}else{
				responseInformation.setReponseCode(Constant.dataCode);
				responseInformation.setReponseMessage("数据异常");
			}
	  }catch(Throwable te){
			responseInformation.setReponseCode(Constant.dataCode);
			responseInformation.setReponseMessage("保存失败");
			logger.error("保存人员异常信息为:", te); 
	  }
	  return responseInformation;
  }
  @RequestMapping("/checkLogin")
  @ResponseBody
  public JSONObject checkLogin(HttpServletRequest request,HttpServletResponse response,String userName,String passWord){
	   logger.info("收到的用户名为:"+userName+",密码为:"+passWord);
	   JSONObject json=new JSONObject();
	   TourismUser tourismUser =new TourismUser();
	   tourismUser.setStatus(Constant.isUsd);
	   tourismUser.setUserArount(userName);
	   tourismUser.setUserPassword(passWord);
	   TourismUser retTourismUser = tourismUserService.selectOne(tourismUser);
	   if(null != retTourismUser){
		   request.getSession().setAttribute("tourismUser",retTourismUser.getUserName());
		   json.put("fiag", true);
	   }else{
		   json.put("fiag", false);
	   }
	   return json;
  }
  @RequestMapping("/validUserName")
	@ResponseBody
	public JSONObject validUserName(String userName){
		JSONObject json=new JSONObject();
		TourismUser TourismUser=new TourismUser();
		TourismUser.setUserArount(userName);
		TourismUser ret =tourismUserService.selectOne(TourismUser);
		if(null != ret){
			json.put("flag", false);
		}else{
			json.put("flag", true);
		}
		return json;
	}
  @RequestMapping("/update")
  @ResponseBody
  public ResponseInformation update(@RequestBody TourismUser tourismUser){
	// 初始化返回码和返回信息,默认处理成功
	ResponseInformation responseInformation=new ResponseInformation();
	  logger.info("保存用户信息为:"+JSONObject.toJSONString(tourismUser));
	  try {
		  tourismUser.setCreateTime(new Date()); 
		  tourismUser.setStatus(Constant.isUsd);
		  Integer  count= tourismUserService.updateById(tourismUser);
			if (count > 0) {
				logger.info("保存成功");
			}else{
				responseInformation.setReponseCode(Constant.dataCode);
				responseInformation.setReponseMessage("数据异常");
			}
	  }catch(Throwable te){
			responseInformation.setReponseCode(Constant.dataCode);
			responseInformation.setReponseMessage("保存失败");
			logger.error("保存人员异常信息为:", te); 
	  }
	  return responseInformation;
  }
  }

评论收藏管理控制层: 

@Controller
@RequestMapping("/tourismWeb")
public class TourismWebController {
	public Logger logger = LoggerFactory
			.getLogger(TourismWebController.class);// 输出日志
	@Autowired
	private SceneInformationService sceneInformationService;
	@Autowired
	private SceneCommentsService sceneCommentsService;
	@Autowired
	private TourismUserService tourismUserService; 
	@Autowired
	private SceneCollectionService sceneCollectionService;
	@Autowired
	private StrategyInfoemationService  strategyInfoemationService;
	@Autowired
	private SearchRecordService searchRecordService;
	@RequestMapping("/selectSceneAll")
	@ResponseBody
	public List<SceneInformation> selectSceneAll(HttpServletRequest request,HttpServletResponse response,String sceneName){
		List<SceneInformation> list=new ArrayList<SceneInformation>();
		 if(StringUtils.isNotEmpty(sceneName)){
			 Map<String, Object> map=new HashMap<String, Object>(); 
			 map.put("scene_name",sceneName);
			 list=sceneInformationService.selectByMap(map); 
		 }else{
			 list= sceneInformationService.selectByMap(null); 
		 }
		return list;
	}
	@RequestMapping("/selectSceneDetail")
	public String selectSceneDetail(ModelMap map,String id){
		SceneInformation sceneInformation = sceneInformationService.selectById(id);
		map.put("sceneInformation",sceneInformation);
		return "tourismWeb/senceDetail";
	}
	@RequestMapping("/selectSceneCommentsAll")
	@ResponseBody
	public JSONObject selectSceneCommentsAll(String id){
		StringBuffer sb = new StringBuffer();
		JSONObject json=new JSONObject();
		Map<String, Object> map=new HashMap<>();
		map.put("scene_id",id);
		List<SceneComments> list=sceneCommentsService.selectByMap(map);
		if(null != list && list.size() >0){
			for(int i=0;i<list.size();i++){
				sb.append("评论人:"+list.get(i).getCommentsName());
				sb.append("   ");
				sb.append("内容:"+list.get(i).getCommentsContent());
				sb.append("   ");
				sb.append("时间:"+DateUtil.getStrDate(list.get(i).getCreateTime()));
				sb.append("\r\n");
			}
		}else{
			sb.append("暂无");
			sb.append("\r\n");
		}
		json.put("sb", sb);
		return json;
	}
	@RequestMapping("/savecomments")
	@ResponseBody
	public JSONObject savecomments(HttpServletRequest request,HttpServletResponse response,String commentsContent,String sceneId){
		SceneComments sceneComments =new SceneComments();
		JSONObject json=new JSONObject();
		boolean flag=true;
		String userName="";
		try{
			sceneComments.setCreateTime(new Date());
			if(null != request.getSession()){
	    		if(null != request.getSession().getAttribute("tourismUser")){
	    			userName=request.getSession().getAttribute("tourismUser").toString();
	    		}
	    	}
			sceneComments.setCommentsName(userName);
			sceneComments.setCommentsContent(commentsContent);
			sceneComments.setSceneId(Integer.parseInt(sceneId));
			Integer count=sceneCommentsService.insert(sceneComments);
			if(count >0){
				logger.info("保存评论成功");
			}else{
				flag =false;
			}
		}catch(Throwable te){
			flag =false;
			logger.error("保存评论异常信息为:",te);
		}
		json.put("flag", flag);
		json.put("id", sceneId);
		return json;
	}
	@RequestMapping("/jumpMayLike")
	public String jumpMayLike(){
		return "tourismWeb/maylike";
	}
	@RequestMapping("/saveSeceneCollection")
	@ResponseBody
	public JSONObject saveSeceneCollection(HttpServletRequest request,HttpServletResponse response,String sceneId){
		JSONObject json=new JSONObject();
		boolean flag=true;
		String userName = "";
		SceneCollection sceneCollection =new SceneCollection();
		try{
	    	if(null != request.getSession()){
	    		if(null != request.getSession().getAttribute("tourismUser")){
	    			userName=request.getSession().getAttribute("tourismUser").toString();
	    		}
	    	}
	    	TourismUser tourismUser =new TourismUser();
			tourismUser.setUserName(userName);
			TourismUser retTourismUser= tourismUserService.selectOne(tourismUser);
			if(null != retTourismUser){
				sceneCollection.setUserId(retTourismUser.getId());
				sceneCollection.setUserName(retTourismUser.getUserName());
			}
			SceneInformation retSceneInformation=sceneInformationService.selectById(sceneId);
			if(null != retSceneInformation){
				sceneCollection.setSceneId(retSceneInformation.getId());
				sceneCollection.setSceneName(retSceneInformation.getSceneName());
			}
			sceneCollection.setCreateTime(new Date());
			sceneCollection.setStatus(Constant.isUsd);
			Integer count= sceneCollectionService.insert(sceneCollection);
			if(count >0){
				logger.info("收藏成功");
			}else{
				flag=false;
			}
		}catch(Throwable te){
			flag=false;
			te.printStackTrace();
		}
		json.put("flag", flag);
		return json;
	}
	@RequestMapping("/selectMayLikeScene")
	@ResponseBody
	public JSONObject selectMayLikeScene(HttpServletRequest request,HttpServletResponse response){
		String userName="";
		JSONObject json =new JSONObject();
		List<SceneInformation> list=new ArrayList<SceneInformation>();
		try{
			if(null != request.getSession()){
	    		if(null != request.getSession().getAttribute("tourismUser")){
	    			userName=request.getSession().getAttribute("tourismUser").toString();
	    		}
	    	}
			TourismUser tourismUser =new TourismUser();
			tourismUser.setUserName(userName);
			TourismUser retTourismUser= tourismUserService.selectOne(tourismUser);
			if(null != retTourismUser){
				SceneInformation sceneInformation =new SceneInformation();
				sceneInformation.setSceneName(retTourismUser.getWantScene());
				SceneInformation retSceneInformation=sceneInformationService.selectOne(sceneInformation);
				if(null != retSceneInformation){
					list.add(retSceneInformation);
				}
			}
			Map<String, Object> map=new HashMap<>();
			map.put("user_name",userName);
			List<SearchRecord> searchRecordList= searchRecordService.selectByMap(map);
			if(null != searchRecordList){
				for(int i=0;i<searchRecordList.size();i++){
					if(null !=searchRecordList.get(i).getSceneId()){
						SceneInformation ret=sceneInformationService.selectById(searchRecordList.get(i).getSceneId());
						list.add(ret);
					}
				}
			}
		}catch(Throwable te){
			te.printStackTrace();
		}
		json.put("list", list);
		return json;
	}
	@RequestMapping("/jumpTourismPlan")
	public String jumpTourismPlan(){
		return "tourismWeb/tourismPlan";
	}
	@RequestMapping("/selectSeceneCollection")
	@ResponseBody
	public JSONObject selectSeceneCollection(HttpServletRequest request,HttpServletResponse response){
		String userName="";
		Random random = new Random();
		JSONObject json=new JSONObject();
		try{
		if(null != request.getSession()){
    		if(null != request.getSession().getAttribute("tourismUser")){
    			userName=request.getSession().getAttribute("tourismUser").toString();
    		}
    	}
		Map<String, Object> map=new HashMap<>();
		Map<String, Object> strategyInfoemationMap=new HashMap<>();
		map.put("user_name", userName);
		List<SceneCollection> list=sceneCollectionService.selectByMap(map);
		if(null != list && list.size() >0){
			SceneCollection sceneCollection =list.get(random.nextInt(list.size()));
			if(null != sceneCollection){
			 SceneInformation sceneInformation =sceneInformationService.selectById(sceneCollection.getSceneId());
			 json.put("sceneInformation", sceneInformation);
			 strategyInfoemationMap.put("scene_id", sceneCollection.getSceneId());
			 List<StrategyInfoemation> strategyInfoemation =strategyInfoemationService.selectByMap(strategyInfoemationMap);
			 json.put("strategyInfoemation",strategyInfoemation);
			}else{
				json.put("sceneInformation",null);
				json.put("strategyInfoemation", null);
			}
		}else{
			json.put("sceneInformation",null);
			json.put("strategyInfoemation", null);
		}
		}catch(Throwable te){
			te.printStackTrace();
		}
		return json;
	}
	@RequestMapping("/updateSeceneCollection")
	@ResponseBody
	public JSONObject updateSeceneCollection(@RequestBody SaveSceneCollectionDto saveSceneCollectionDto){
		JSONObject json =new JSONObject();
		boolean falg=true;
		try{
			if(StringUtils.isNotEmpty(saveSceneCollectionDto.getSceneId())){
				Map<String, Object> map=new HashMap<>();
				map.put("scene_id", saveSceneCollectionDto.getSceneId());
				Integer count= strategyInfoemationService.deleteByMap(map);
				if(count >0){
					if(null !=saveSceneCollectionDto.getSceneCollectionList() && saveSceneCollectionDto.getSceneCollectionList().size() >0){
						for(int i=0;i<saveSceneCollectionDto.getSceneCollectionList().size();i++){
							StrategyInfoemation strategyInfoemation=saveSceneCollectionDto.getSceneCollectionList().get(i);
							strategyInfoemation.setSceneId(Integer.parseInt(saveSceneCollectionDto.getSceneId()));
							strategyInfoemation.setCreateTime(new Date());
							strategyInfoemation.setStatus(Constant.isUsd);
							strategyInfoemationService.insert(strategyInfoemation);
						}
					}
				}
				
			}else{
				falg=false;
			}
		}catch(Throwable te){
			falg=false;
			te.printStackTrace();
		}
	
		json.put("flag", falg);
		return json;
	}
	@RequestMapping("/editUser")
	public String editUser(){
		return "tourismWeb/editUser";
	}
	@RequestMapping("/selectUserInformation")
	@ResponseBody
	public JSONObject selectUserInformation(HttpServletRequest request,HttpServletResponse response){
		String userName="";
		JSONObject json=new JSONObject();
		if(null != request.getSession()){
    		if(null != request.getSession().getAttribute("tourismUser")){
    			userName=request.getSession().getAttribute("tourismUser").toString();
    		}
    	}
		TourismUser TourismUser=new TourismUser();
		TourismUser.setUserName(userName);
		TourismUser ret =tourismUserService.selectOne(TourismUser);
		json.put("ret", ret);
		return json;
	}
	
}

源码获取:俺的博客首页 "资源" 里下载!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
本网站的主要功能大致分为:热门景点、景区点评、旅游信息查询、酒店预订、自驾游旅行线路和后台功能。 先来说一下界面设计,在此之前我看过途牛网和驴妈妈旅游网的设计,基本上都包括了热门景点线路的分类和大量的图片,当然我的毕设无法做到那么全面因此选择了其中的一小部分来做,把重点的小模块有序的安放在首页,是首页内容较为充实。主界面主要是为用户提供旅游信息,因此不能太花哨,以清晰和功能明确为主。 1.热门景点功能:热门景点在首页最明显的地方占有一席之地,管理员通过后台添加景点信息后,用户可以在首页看见前五个景点的图片,采用flash进行滚动展示,不管是点击图片还是小标题都可以进入查看景点信息,用户也可以通过热门景点模块了解景点信息,通过超链接点入后,可以看到该景点的几条旅行的日程线路、线路的特色和该线路的报价。 2.留言板功能:用户注册登录后可以像在论坛一样发表言论,用户发表言论前还需要填写自己的昵称、QQ、邮箱,还可以选取自己喜欢的头像等,同时也可以看到管理员回复自己的话。 3.旅游信息查询:该功能实际是在网页上插了一个百度地图容器,需要连接网络便可以查看,假如用户想知道自己的景点或者酒店在哪,就可以很方便的定位了。 4.酒店预订功能:该功能也在首页有所显示,管理员通过添加酒店信息和客房管理信息后,用户可以在首页看见前往五个酒店的图片和信息,同时也可以点开该模块查看。用户可以通过名称、星级、号码等关键字搜索,随后点入也可以看见该酒店的客房信息并且预定,点击预订后用户需要填写个人信息,提交后完成预定。 5.自驾游线路:与热门景点不同的是这个模块主要是针对用户的自由行,无需旅行社的约束,在这里用户可以查看出行的工具、出发地、目的地、出行时间、出行天数等,并且具有关键字搜索功能。 6.后台功能:管理员登陆后可以修改管理员登录密码,可以对用户进行管理,删除用户,还可以添加删除热门景点信息,插入热门景点图片,管理酒店信息,进入客房管理后可以添加和查询客房信息,并且可以看到用户的订房信息。再者就是可以查看用户点评并且对用户的点评进行回复。另外也可以对系统公告、友情链接、系统简介进行管理。 在此我把前台模块用户模块图详细划分了制成图4-3如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyondwild

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值