• Java项目:springboot+vue电影院会员管理系统


    作者主页:夜未央5788

     简介:Java领域优质创作者、Java项目、学习资料、技术互助

    文末获取源码

    项目介绍

    本项目代码架构设计简单,注释齐全,结构清晰,适合同为java初学者参考。
    cinema项目是一套电影院会员管理系统,使用前后端分离架构开发,前端基于Vue.js+Element UI技术,后端使用springboot+mybatis实现,包含管理员、会员管理、会员卡管理、电影票、消费记录、数据统计等模块

    环境需要

    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.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 
    6.数据库:MySql 5.7版本;

    技术栈

    1. 后端:springboot+mybatis

    2. 前端:vue.js+element-ui

    使用说明

    * 数据库文件cinema.sql已整合到项目中,使用mysql导入即可生成数据库

    * 本项目已经整合了前后端,前端文件经过webpack构建后,生成了static文件夹和index.html放入了webapp下。
    * 要对前端页面进行修改,修改完成后同样将生成的文件放到本项目的webapp下。

    * 需上交的程序设计文档可参考目录下:电影院会员管理系统说明文档.docx

    运行项目

    * 方法一: cinema项目中已经整合了vue打包的静态资源,直接启动项目,并在浏览器上输入http://localhost:8081/cinema 即可运行。
    1. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,下载所需jar包;
    2. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
    3. 将项目中db.properties配置文件中的数据库配置改为自己的配置
    4. 配置tomcat,然后运行项目,输入http://localhost:8081/cinema  登录
    5. 账户:admin  密码:123123

    * 方法二: cinema-web项目是cinema项目的vue单页面前端项目,可以在文件夹目录下命令行输入:
    `npm run install` 
    `npm run dev`

    后,修改utils/request.js下baseURL=”/api”,开启node反向代理服务器,解决跨域问题,然后启动cinema后端项目,在浏览器上输入 http://localhost:8080 即可以前后端分离方式运行(也可以npm run build后将dist文件夹放到nginx下运行)

    运行截图

     

     

     

     

    代码相关

     会员管理控制器

    1. @CrossOrigin
    2. @RestController
    3. public class CardController {
    4. @Resource
    5. CardService cardService;
    6. @RequestMapping("getCardData")
    7. public CinemaResult getCardData(String memberId, String pageIndex, String pageSize) {
    8. //这里使用分页插件pagehelper
    9. PageResult pageResult = new PageResult();
    10. PageHelper.startPage(Integer.parseInt(pageIndex), Integer.parseInt(pageSize));
    11. List lists = cardService.getCardData(memberId);
    12. PageInfo pageInfo = new PageInfo<>(lists);
    13. pageResult.setList(pageInfo.getList());
    14. pageResult.setPageTotal(pageInfo.getTotal());
    15. return CinemaResult.ok(pageResult);
    16. }
    17. /**
    18. * //注册会员卡,请求参数无,返回状态
    19. * export const registerCard = query=>{
    20. * return request({
    21. * url:"registerCard",
    22. * method:'get',
    23. * params:query
    24. * });
    25. * };
    26. */
    27. @RequestMapping("registerCard")
    28. public CinemaResult registerCard(String memberId) {
    29. cardService.registerCard(memberId);
    30. return CinemaResult.ok();
    31. }
    32. /**
    33. * //补卡,请求参数卡号id,返回新卡id号,并提示会员
    34. * export const reissueCard = query=>{
    35. * return request({
    36. * url:"reissueCard",
    37. * method:'post',
    38. * params:query
    39. * });
    40. * };
    41. */
    42. @RequestMapping("reissueCard")
    43. public CinemaResult reissueCard(String cardId) {
    44. cardId = cardService.reissueCard(cardId);
    45. return CinemaResult.ok(cardId);
    46. }
    47. /**
    48. * //挂失会员卡,请求参数id,返回状态
    49. * export const loseCard = query=>{
    50. * return request({
    51. * url:"loseCard",
    52. * method:'post',
    53. * params:query
    54. * });
    55. * };
    56. */
    57. @RequestMapping("loseCard")
    58. public CinemaResult loseCard(String cardId) {
    59. cardService.loseCard(cardId);
    60. return CinemaResult.ok();
    61. }
    62. /**
    63. * //解挂会员卡,请求参数卡号,返回状态
    64. * export const cancelCard = query=>{
    65. * return request({
    66. * url:"cancelCard",
    67. * method:'post',
    68. * params:query
    69. * });
    70. * };
    71. */
    72. @RequestMapping("cancelCard")
    73. public CinemaResult cancelCard(String cardId) {
    74. cardService.cancelCard(cardId);
    75. return CinemaResult.ok();
    76. }
    77. /**
    78. * //充值会员卡,请求卡号、参数金额,返回状态
    79. * export const rechargeCard = query=>{
    80. * return request({
    81. * url:"rechargeCard",
    82. * method:'post',
    83. * params:query
    84. * });
    85. * };
    86. */
    87. @RequestMapping("rechargeCard")
    88. public CinemaResult rechargeCard(String cardId, String value) {
    89. cardService.rechargeCard(cardId, Integer.parseInt(value));
    90. return CinemaResult.ok();
    91. }
    92. /**
    93. * //消费,请求参数卡号、金额、消费类型,返回状态
    94. * export const consumeCard = query=>{
    95. * return request({
    96. * url:"consumeCard",
    97. * method:'post',
    98. * params:query
    99. * });
    100. * };
    101. */
    102. @RequestMapping("consumeCard")
    103. public CinemaResult consumeCard(String cardId, String price, String integral) {
    104. cardService.consumeCard(cardId, Integer.parseInt(price), Integer.parseInt(integral));
    105. return CinemaResult.ok();
    106. }
    107. /**
    108. * //积分兑换,请求参数:会员id,积分
    109. * //由于是总积分兑换,所以需要将消耗积分分散到所有卡上面
    110. * export const exchangeIntegral = query=>{
    111. * return request({
    112. * url:"exchangeIntegral",
    113. * method:'post',
    114. * params:query
    115. * });
    116. * };
    117. */
    118. @RequestMapping("exchangeIntegral")
    119. public CinemaResult exchangeIntegral(String memberId, String integral) {
    120. cardService.exchangeIntegral(memberId, Integer.parseInt(integral));
    121. return CinemaResult.ok();
    122. }
    123. /**
    124. * //通过模糊条件查询到cardId,请求参数memberId,CardId,返回CardId列表
    125. * export const getCardIdByFuzzyQuery = query=>{
    126. * return request({
    127. * url:"getCardIdByFuzzyQuery",
    128. * method:'post',
    129. * params:query
    130. * });
    131. * };
    132. */
    133. @RequestMapping("getCardIdByFuzzyQuery")
    134. public CinemaResult getCardIdByFuzzyQuery(String memberId,String cardId) {
    135. return CinemaResult.ok(cardService.getCardIdByFuzzyQuery(memberId,cardId));
    136. }
    137. /**
    138. * //通过完整cardid来查询card数据,返回Card对象
    139. * export const getCardByCardId = query=>{
    140. * return request({
    141. * url:"getCardByCardId",
    142. * method:'post',
    143. * params:query
    144. * });
    145. * };
    146. */
    147. @RequestMapping("getCardByCardId")
    148. public CinemaResult getCardByCardId(String cardId) {
    149. return CinemaResult.ok(cardService.getCardByCardId(cardId));
    150. }
    151. }

    统计管理控制器

    1. @CrossOrigin
    2. @RestController
    3. public class StatisticController {
    4. @Resource
    5. MemberService memberService;
    6. @Resource
    7. CardService cardService;
    8. @Resource
    9. RecordService recordService;
    10. /**
    11. * //获取统计数字数据,请求参数无
    12. * export const statisticData = query=>{
    13. * return request({
    14. * url:'getStatisticData',
    15. * method:'get',
    16. * params:query
    17. * });
    18. * };
    19. */
    20. @RequestMapping("getStatisticData")
    21. public CinemaResult getStatisticData(){
    22. StatisticData s = new StatisticData();
    23. s.setMemberNum(memberService.getMemberNum());
    24. s.setCardNum(cardService.getCardNum());
    25. s.setMovieNum(recordService.getMovieNum());
    26. return CinemaResult.ok(s);
    27. }
    28. /**
    29. * //获取消费充值等金额数据,请求参数无
    30. * export const requestDealData = query=>{
    31. * return request({
    32. * url:'requestDealData',
    33. * method:'get',
    34. * params:query
    35. * });
    36. * };
    37. */
    38. @RequestMapping("requestDealData")
    39. public CinemaResult requestDealData(){
    40. DealData dealData = new DealData();
    41. dealData.setConsume(recordService.getConsumeCount()*-1);
    42. dealData.setIntegral(recordService.getIntegralExchangeCount()*-1);
    43. dealData.setRecharge(recordService.getRechargeCount());
    44. return CinemaResult.ok(dealData);
    45. }
    46. /**
    47. * //获取充值消费数据的图标数据,请求参数无,返回包含三个整型数组的对象
    48. * export const getSchart1Data = query=>{
    49. * return request({
    50. * url:"getSchart1Data",
    51. * method:'post',
    52. * params:query
    53. * });
    54. * };
    55. */
    56. @RequestMapping("getSchart1Data")
    57. public CinemaResult getSchart1Data(){
    58. return CinemaResult.ok(recordService.getSchart1Data());
    59. }
    60. }

    电影管理控制器

    1. @CrossOrigin
    2. @RestController
    3. public class MovieController {
    4. @Resource
    5. MovieService movieService;
    6. /**
    7. * //添加电影票数据,需要返回电影票全部数据,因为电影票id需要服务端生成
    8. * export const insertMovie = query=>{
    9. * return request({
    10. * url:'insertMovie',
    11. * method:'post',
    12. * params:query
    13. * })
    14. * };
    15. */
    16. @RequestMapping("insertMovie")
    17. public CinemaResult insertMovie(Movie movie){
    18. return movieService.insertMovie(movie);
    19. }
    20. /**
    21. * //获取电影票数据,请求参数:pageIndex,pageSize,返回电影列表和总记录数
    22. * export const movieData = query =>{
    23. * return request({
    24. * url:'getMovie',
    25. * method:'get',
    26. * params:query
    27. * });
    28. * };
    29. */
    30. @RequestMapping("getMovie")
    31. public CinemaResult getMovie(String pageIndex,String pageSize){
    32. //这里使用分页插件pagehelper
    33. PageResult pageResult = new PageResult();
    34. PageHelper.startPage(Integer.parseInt(pageIndex),Integer.parseInt(pageSize));
    35. List lists = movieService.getMovieData();
    36. PageInfo pageInfo = new PageInfo<>(lists);
    37. pageResult.setList(pageInfo.getList());
    38. pageResult.setPageTotal(pageInfo.getTotal());
    39. return CinemaResult.ok(pageResult);
    40. }
    41. /**
    42. * //删除电影数据,请求参数:movieId
    43. * export const delMovie = query=>{
    44. * return request({
    45. * url:'delMovie',
    46. * method:'get',
    47. * params:query
    48. * });
    49. * };
    50. */
    51. @RequestMapping("delMovie")
    52. public CinemaResult delMovie(String movieId){
    53. movieService.delMovie(movieId);
    54. return CinemaResult.ok();
    55. }
    56. /**
    57. * * //修改电影数据,请求参数:movieId、name、price、time
    58. * * export const modifyMovie = query=>{
    59. * * return request({
    60. * * url:'modifyMovie',
    61. * * method:'get',
    62. * * params:query
    63. * * });
    64. * * };
    65. */
    66. @RequestMapping("modifyMovie")
    67. public CinemaResult modifyMovie(Movie movie){
    68. return movieService.modifyMovie(movie);
    69. }
    70. }
    71. /*
    72. *
    73. * //删除电影数据,请求参数:movieId
    74. export const delMovie = query=>{
    75. return request({
    76. url:'delMovie',
    77. method:'get',
    78. params:query
    79. });
    80. };
    81. //修改电影数据,请求参数:movieId、name、price、time
    82. export const modifyMovie = query=>{
    83. return request({
    84. url:'modifyMovie',
    85. method:'get',
    86. params:query
    87. });
    88. };*/

    如果也想学习本系统,下面领取。回复:034springboot

  • 相关阅读:
    浅谈python后端面试(附一些经典项目源码)
    手撕排序之堆排序
    Pytorch学习笔记(9)——一文搞懂如何使用 torch 中的乘法
    片段与活动的交互
    (Linux学习六)用户特殊权限类型,suid,chattr,umask
    java如何将字符串转换为json格式字符串呢?
    队列的实现和OJ练习(c语言)
    JAVAEE初阶相关内容第十三弹--文件操作 IO
    CentOS 初步测试 两台虚拟机 能否连通(ping 通)
    Linux系统的常见变种、发行版有哪些 Debian,CentOS等
  • 原文地址:https://blog.csdn.net/hanyunlong1989/article/details/125901189