酒店管理系统是一种用于管理和监控酒店业务的软件系统,它能够提高酒店的管理效率和服务质量,减少人力和物力的浪费,提高酒店的收益。

一、数据库设计

酒店管理系统需要保存以下信息:

  • 酒店信息:酒店名称、地址、描述、联系电话等
  • 房间信息:房间类型、房间号码、价格、入住状态等
  • 用户信息:用户名、密码、联系方式、角色等

因此,设计数据库表如下:

  • 酒店表:hotel(id, name, address, description, phone)
  • 房间表:room(id, hotel_id, room_number, room_type, price, status)
  • 用户表:user(id, username, password, phone, role)

二、项目结构

酒店管理系统采用MVC架构,使用SpringBoot框架,因此项目的结构如下:

  • src/main/java/com.example.hotel:Java代码
    • controller:控制层,处理HTTP请求
    • service:服务层,实现业务逻辑
    • dao:数据访问层,与数据库交互
    • entity:实体类,定义数据库表结构
    • exception:异常处理类
  • src/main/resources:资源文件
    • application.properties:SpringBoot配置文件
    • static:静态文件,如CSS、JS、图片等
    • templates:HTML模板文件

三、实现

实现酒店管理系统需要以下功能:

  • 用户管理:注册、登录、注销、修改密码
  • 酒店管理:添加、修改、删除、查询
  • 房间管理:添加、修改、删除、查询、预订、取消预订

源码:

https://pan.baidu.com/s/1ZMr2E4bkIgov5copEtzNdg?pwd=1013 

下面分别实现这些功能。

用户管理

在UserController中实现用户注册、登录、注销和修改密码的功能:

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping("/register")
    public ResponseVO register(@RequestBody UserVO userVO) {
        return userService.register(userVO);
    }

    @PostMapping("/login")
    public ResponseVO login(@RequestBody UserVO userVO, HttpSession session) {
        return userService.login(userVO, session);
    }

    @GetMapping("/logout")
    public ResponseVO logout(HttpSession session) {
        return userService.logout(session);
    }

    @PostMapping("/{userid}/modify")
    public ResponseVO modifyUser(@PathVariable int userid, @RequestBody UserVO userVO) {
        return userService.modifyUser(userid, userVO);
    }
}

UserService实现上述功能:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    @Override
    public ResponseVO register(UserVO userVO) {
        // 省略参数检查和用户已存在的判断
        User user = new User();
        user.setUsername(userVO.getUsername());
        user.setPassword(userVO.getPassword());
        user.setPhone(userVO.getPhone());
        user.setRole(userVO.getRole());
        userDao.addUser(user);
        return ResponseVO.buildSuccess();
    }

    @Override
    public ResponseVO login(UserVO userVO, HttpSession session) {
        User user = userDao.getUserByUsername(userVO.getUsername());
        if (user == null) {
            return ResponseVO.buildFailure("用户名不存在");
        }
        if (!user.getPassword().equals(userVO.getPassword())) {
            return ResponseVO.buildFailure("密码错误");
        }
        session.setAttribute("user", user);
        return ResponseVO.buildSuccess(user);
    }

    @Override
    public ResponseVO logout(HttpSession session) {
        session.removeAttribute("user");
        return ResponseVO.buildSuccess();
    }

    @Override
    public ResponseVO modifyUser(int userid, UserVO userVO) {
        User user = userDao.getUserById(userid);
        if (user == null) {
            return ResponseVO.buildFailure("用户不存在");
        }
        user.setPhone(userVO.getPhone());
        user.setPassword(userVO.getPassword());
        userDao.updateUser(user);
        return ResponseVO.buildSuccess();
    }
}

UserDao负责数据库的读写操作:

@Repository
public interface UserDao {

    void addUser(User user);

    void updateUser(User user);

    User getUserById(int id);

    User getUserByUsername(String username);

}

酒店管理

在HotelController中实现酒店管理的添加、修改、删除和查询功能:

@RestController
@RequestMapping("/hotel")
public class HotelController {

    @Autowired
    private HotelService hotelService;

    @PostMapping("/add")
    public ResponseVO addHotel(@RequestBody HotelVO hotelVO) {
        return hotelService.addHotel(hotelVO);
    }

    @PostMapping("/{hotelid}/update")
    public ResponseVO updateHotel(@PathVariable int hotelid, @RequestBody HotelVO hotelVO) {
        return hotelService.updateHotel(hotelid, hotelVO);
    }

    @GetMapping("/{hotelid}/delete")
    public ResponseVO deleteHotel(@PathVariable int hotelid) {
        return hotelService.deleteHotel(hotelid);
    }

    @GetMapping("/{hotelid}/getDetail")
    public ResponseVO getHotelDetail(@PathVariable int hotelid) {
        return hotelService.getHotelDetail(hotelid);
    }

    @GetMapping("/all")
    public ResponseVO retrieveAllHotels() {
        return hotelService.retrieveHotels();
    }
}

HotelService实现上述功能:

@Service
public class HotelServiceImpl implements HotelService {

    @Autowired
    private HotelDao hotelDao;

    @Override
    public ResponseVO addHotel(HotelVO hotelVO) {
        // 省略参数检查
        Hotel hotel = new Hotel();
        hotel.setName(hotelVO.getName());
        hotel.setAddress(hotelVO.getAddress());
        hotel.setDescription(hotelVO.getDescription());
        hotel.setPhone(hotelVO.getPhone());
        hotelDao.addHotel(hotel);
        return ResponseVO.buildSuccess();
    }

    @Override
    public ResponseVO updateHotel(int hotelid, HotelVO hotelVO) {
        Hotel hotel = hotelDao.getHotelById(hotelid);
        if (hotel == null) {
            return ResponseVO.buildFailure("酒店不存在");
        }
        hotel.setName(hotelVO.getName());
        hotel.setAddress(hotelVO.getAddress());
        hotel.setDescription(hotelVO.getDescription());
        hotel.setPhone(hotelVO.getPhone());
        hotelDao.updateHotel(hotel);
        return ResponseVO.buildSuccess();
    }

    @Override
    public ResponseVO deleteHotel(int hotelid) {
        Hotel hotel = hotelDao.getHotelById(hotelid);
        if (hotel == null) {
            return ResponseVO.buildFailure("酒店不存在");
        }
        hotelDao.deleteHotel(hotelid);
        return ResponseVO.buildSuccess();
    }

    @Override
    public ResponseVO getHotelDetail(int hotelid) {
        Hotel hotel = hotelDao.getHotelById(hotelid);
        if (hotel == null) {
            return ResponseVO.buildFailure("酒店不存在");
        }
        return ResponseVO.buildSuccess(new HotelVO(hotel));
    }

    @Override
    public ResponseVO retrieveHotels() {
        List<Hotel> hotels = hotelDao.getAllHotels();
        if (hotels == null || hotels.isEmpty()) {
            return ResponseVO.buildFailure("酒店不存在");
        }
        List<HotelVO> hotelVOs = new ArrayList<>();
        for (Hotel hotel : hotels) {
            hotelVOs.add(new HotelVO(hotel));
        }
        return ResponseVO.buildSuccess(hotelVOs);
    }
}

HotelDao负责数据库的读写操作:

@Repository
public interface HotelDao {

    void addHotel(Hotel hotel);

    void updateHotel(Hotel hotel);

    void deleteHotel(int id);

    Hotel getHotelById(int id);

    List<Hotel> getAllHotels();

}

房间管理

在RoomController中实现房间管理的添加、修改、删除、查询、预订和取消预订功能:

@RestController
@RequestMapping("/room")
public class RoomController {

    @Autowired
    private RoomService roomService;

    @PostMapping("/add")
    public ResponseVO addRoom(@RequestBody RoomVO roomVO) {
        return roomService.addRoom(roomVO);
    }

    @PostMapping("/{roomid}/update")
    public ResponseVO updateRoom(@PathVariable int roomid, @RequestBody RoomVO roomVO) {
        return roomService.updateRoom(roomid, roomVO);
    }

    @GetMapping("/{roomid}/delete")
    public ResponseVO deleteRoom(@PathVariable int roomid) {
        return roomService.deleteRoom(roomid);
    }

    @GetMapping("/{roomid}/getDetail")
    public ResponseVO getRoomDetail(@PathVariable int roomid) {
        return roomService.getRoomDetail(roomid);
    }

    @GetMapping("/{hotelid}/getRooms")
    public ResponseVO getHotelRooms(@PathVariable int hotelid) {
        return roomService.getHotelRooms(hotelid);
    }

    @GetMapping("/{roomid}/book")
    public ResponseVO bookRoom(@PathVariable int roomid, HttpSession session) {
        User user = (User) session.getAttribute("user");
        if (user == null) {
            return ResponseVO.buildFailure("用户未登录");
        }
        return roomService.bookRoom(roomid, user.getId());
    }

    @GetMapping("/{bookid}/cancelBook")
    public ResponseVO cancelBook(@PathVariable int

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐