不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)

这篇具有很好参考价值的文章主要介绍了不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


引言:
  大家好,欢迎来到我的博客。五一假期就快到了,你们准备怎么安排假期活动呢?要不去看一场电影来缓解一下枯燥的学习生活?😝说起电影,就离不开中国内地电影票房冠军《长津湖》。那么今天,我们就来制作一个影院订票系统前端页面,如有错误之处,欢迎大家指正。😊

不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)

🎉案例分析

不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)

  影院订票系统是电影院进行电影票销售非常重要的一个环节,直接影响到用户的操作是否方便、界面是否直观。该系统包括用户注册、影片信息管理、订票信息管理、站内新闻管理等模块。本节仅对其中的订票前端页面进行阐述,目的是让读者能对本书前期学习的知识进行综合运用,本节完成的前端页面如图1所示,可点击效果动图查看完成效果。

不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)

图1 效果图

  该页面要求用图形方式进行座位的选择,也就是能够单击图1左边的可选座位来选中想购买的座位,单击可选座位之后,该座位会变成已选座位状态;单击已选座位后,该座位会重新回到可选座位状态;图中灰色的座位表示已是售出座位的状态。
  另外,选中或取消某一个座位之后,在图1的右边会自动显示出已选座位是“几排几号”,并能根据用户所选择的电影票张数,自动计算出本次购票的总价,同时还能限制用户最多一次只能购买五张电影票,当票数达到上限时,动态提示用户,此时不能再选择新的可选座位,但可以取消已选座位。
  由图1可以看出该页面分为左右两个部分,采用Bootstrap栅格布局实现,即左右各占12等份的一半,其中左半部分又分成两行(座位行和座位提示行),右半部分也分成两行(电影信息行和影票购买信息行),其实现代码如下所示:
不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)

<div  class="container" id="app">
    <div  class="row">
        <div  class="col-md-6">
             <div  class="row">
                <!--左上半部分:座位行-->
             </div>
             <div class="row">
                 <!--左下半部分:座位提示行-->
             </div>
    </div>
    <div class="col-md-6  sceenRight">
        <div class="row">
            <!--右上半部分:电影信息行-->
        </div>
        <div class="row">
             <!--右下半部分:影票购买信息行-->
        </div>
    </div>
  </div>
</div>

🎉详细设计

✨座位数据与样式定义

  座位数据是通过在<li></li>标记中使用背景图片,背景图片有四种座位样式:无座位(空白)、可选座位(白色)、选中座位(红色)、售出座位(灰色),在数组中定义的数值如下:

-1:无座位0:可选座位1:选中座位2:售出座位

  例如,在Vue.js中定义一个11行10列的座位,每个座位用一个数字来表示,数字含义如上所示,定义的数组语句如下所示(其在浏览器中对应如图1左上半部分的座位图):
不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)

seatflag:[
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
	    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		0, 0, 0, 0, 2, 2, 0, 0, 0, 0,
		0, 0, 0, 2, 2, 0, 2, 2, 0, 0,
		-1, 0, 0, 0, 0, 0, 0, 0, 0, -1,
		-1, -1, 0, 0, 0, 0, 0, 0, -1, -1,
	]

  从定义的seatfage数组可以看出这是一维数组,让其变成能够显示行列的二维数组的方法是:定义一行有多少座位的数据seatCol,用户单击某一个座位后,在程序中可以得到该座位在数组中的序号,该序号整除seatCol得到的商就是行号,对seatCol取余数就是相对应的列号。
在CSS中对座位<li>元素的样式定义是通过四个座位的背景图(如图2所示)完成,通过上下移动该背景图使用户在<li>元素的窗口中看到不同的座位样式,其样式定义如下所示:

不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)

图2 订票系统座位背景图
.seat{
			float: left;
			width: 30px;
			height: 30px;
			background-color: bisque;
			margin: 5px 10px;
			cursor: pointer;
			list-style: none;
		}
.seatActive{
			background: url(img/bg.png) 1px 0px;
		}
.seatSpace{
			background: url(img/bg.png) 1px -29px;
		}
.seatNoUse{
			background: url(img/bg.png) 1px -56px;
		}
.noSeat{
			background: url(img/bg.png) 1px -84px;
		}

  使用Vue中的v-for命令对上面的数据动态生成多个座位的<li>元素。每个座位都有“seat”样式类,然后根据每个座位对应的数据来显示其对应的样式图片,当对应座位的数据是-1时,添加“noSeat”样式类,即没有该座位;当对应座位数据是0时,添加“seatSpace”样式类,即该座位是可选座位;当对应座位数据是1时,添加“ seatActive ”样式类,即该座位是已选座位;当对应座位数据是2时,添加“seatNoUse”样式类,即该座位是售出座位。HTML中的语句如下所示:

<li class="seat seatSpace" v-for="(item,index) in seatflag"
							:key="index" 
		   :class="{'noSeat':seatflag[index]==-1,
							'seatActive':seatflag[index]==1,
							'seatSpace':seatflag[index]==0,
							'seatNoUse':seatflag[index]==2,
							}",
							@click="handleClick(index)"
							></li>

  行和列是由单击座位对应序号和数据seatCol来确定的,但在浏览器中的显示是由<li>的父级元素来确定的,也就是<ul>元素的宽度,这些数据以后都可以通过后台服务器动态获取。该<ul>元素的样式定义如下所示:

 #app ul{
		list-style: none;/*去除列表样式*/
		width: 550px;/*设定宽度,目的是一行显示多少座位,其他座位另起新行*/
  }

✨座位的事件处理及相关的代码

  用户单击某个座位后,会执行相应座位的单击事件处理函数handleClick(index),处理函数的入口参数index是用户单击某个座位在一维数组seatflag中的位置值,利用Vue中的数据绑定,当用户修改了数组seatflag的数据值,会自动刷新相对应的座位图片。该函数的实现方式如下所示:

handleClick:function(index){
					if (vm.seatflag[index]==1){
						vm.$set(vm.seatflag,index,0);
						//console.log(this.curSeat.findIndex(item=>item.id===index));
						this.curSeat.splice(this.curSeat.findIndex(item=>item===index),1);
					}
					else
					if (vm.seatflag[index]==0 && this.count<5){
						vm.$set(vm.seatflag,index,1);
						this.curSeat.push(index);
					}
					//设置当前选中的座位
					this.curSeatDisp=[];
					for(let item of this.curSeat){
						this.curSeatDisp.push((Math.floor(item/this.seatCol)+1)+"行"+(item%this.seatCol+1)+"列");
					}
					//计数已经选择了多少个座位
					var mySeat=vm.seatflag.filter(item=>{//item为数组当前的元素
						return item==1;
					})
					this.count=mySeat.length;
					//判断达到购买上限,设置数据maxFlag,并显示提示语句,并显示提示语句“您一次最多仅能买五张票”
					if (this.count>=5)this.maxFlag=true;
					else this.maxFlag=false;
				}

  说明如下:

  (1)显示已选座位“几排几列”是根据 curSeatDisp 数组确定,在HTML中通过v-for指令实现,其代码如下所示:

 <p id="seatSelect">
    座位:
    <span v-for="(item,index) in curSeatDisp" :key="index">
    {{item}}
    </span>
 </p>

  (2)显示已选择多少个座位是根据count数据确定,在HTML中的实现代码如下所示:

<p>已选择
      <strong style="color: red;">{{count}}</strong>个座位,
 </p>

  (3)判断达到购买票数上限后,是否显示“您一次最多仅能买五张票”的提示语句,通过数据maxFlag的值确定。在HTML中的语句如下所示:

<strong style="color: red;">再次单击座位可取消。
		<span v-if="maxFlag">您一次最多只能买五张票!</span>
</strong>

✨监听与数据格式化

  在Vue中通过监听count数据的变化,可以重新计算总价。在Vue实例中的语句如下所示:

computed:{
		totalPrice:function(){
		return this.count * this.filmInfo.unitPrice;
	}
},

  显示电影票单价和总价通过Vue的全局过滤器实现,让其保留两位小数点,并在金额前面加上人民币符号。在Vue实例中的语句如下所示:

Vue.filter('numberFormat',function(value){
			return '¥'+value.toFixed(2)
		})

  在HTML中使用过滤器是通过管道符实现的,其代码如下所示:

<p>单价:
       <strong>{{filmInfo.unitPrice|numberFormat}}</strong>
</p>
<p>总价:
      <strong style="color: red;">{{totalPrice|numberFormat}}</strong>
 </p>

✨电影信息展示

  图1的右上半部分是电影海报和电影的部分相关信息,这部分是通过调用Vue实例的filmInfo对象中的相关数据来显示信息。flmInfo对象在Vue的data中的定义如下:

fileInfo:{
			name:'长津湖',
			nameEnglish:'The Battle at Lake Changjin',
			copyRight:'中文2D',
			filmImg:'img/1.png',
			storyType:'历史、战争',
			place:'中国大陆',
			timeLength:'176 分钟',
			timeShow:'2021年9月30日',
			cinema:'万达影城',
			room:'1号影厅',
			time:'2021年9月30日  20:00',
			unitPrice:38,
				}

  此处HTML的实现方式是使用Bootstrap提供的媒体对象组件,代码如下所示:

:可在bootstrap官网直接映入媒体对象组件。操作方式:打开bootstrap官网(https://www.bootcss.com/),点击页面最中心Bootstrap3中文文档(v3.4.1),选择右侧列表中的“媒体对象”,复制代码即可。

<div class="row">
		            <!--右上半部分:电影信息行-->
					<div class="media">
					  <div class="media-left">
					    <a href="#">
					      <img class="media-object" :src="filmInfo.filmImg" alt="..."  height="200px">
					    </a>
					  </div>
					  <div class="media-body">
					    <h4 class="media-heading">中文名:<strong>{{filmInfo.name}}</strong></h4>
						<h4 class="media-heading">英文名:<strong>{{filmInfo.nameEnglish}}</strong></h4>
						<p>剧情:{{filmInfo.storyType}}</p>
						<p>版本:{{filmInfo.copyType}}</p>
						<p>{{filmInfo.place}}/{{filmInfo.timeLength}}</p>
						<p>{{filmInfo.timeShow}}</p>
					  </div>
					</div>
		        </div>

  这里在HTML中进行数据绑定时使用了两种方式,一种是双大括号的数据绑定方式,即“{{数据}}”;另一种是属性绑定方式,
即“:src='filmInfo.film Img”


🎉动态操作演示图

不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)

动态操作演示

  总结:本章主要讲解了影院订票系统前端页面的综合案例,重点是使用Vue. js的特性结合Bootstrap的排版功能实现,该案例要求具有较高的 JavaScript 程序的编程能力和对Vue. js进行网页行为的控制能力。通过这个案例的学习,读者不仅可以更进一步、更深刻地理解前面章节学过的所有知识,而且能够体会到最新前端框架Vue. js的数据渲染、事件触发响应、监听属性、计算属性、各种指令等在实际项目中的灵活应用,以及Bootstrap的简便布局排版能力。

🎉源码(附图片素材)

不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<link href="./css/bootstrap.min.css" rel="stylesheet">
		<script src="js/vue.min.js"> </script>
		<style>
		#app{
			margin: 50px auto;
		}
		#app ul{
			list-style: none;
			width: 550px;
		}
		#app ul #screen{
			text-align: center;
			letter-spacing: 30px;
		}
		.seat{
			float: left;
			width: 30px;
			height: 30px;
			background-color: bisque;
			margin: 5px 10px;
			cursor: pointer;
			list-style: none;
		}
		.seatActive{
			background: url(img/bg.png) 1px 0px;
		}
		.seatSpace{
			background: url(img/bg.png) 1px -29px;
		}
		.seatNoUse{
			background: url(img/bg.png) 1px -56px;
		}
		.noSeat{
			background: url(img/bg.png) 1px -84px;
		}
		.notice{
			float: left;
			height: 30px;
			line-height: 30px;
			margin-right: 70px;
		}
		</style>
	</head>
	<body>
		<div  class="container" id="app">
		    <div  class="row">
		        <div  class="col-md-6">
		             <div  class="row">
		                <!--左上半部分:座位行-->
						<ul>
							<li id="screen">
								<h1>屏幕</h1>
							</li>
							<hr>
							<!--<li class="seat seatActive"></li>-->
							<li class="seat seatSpace" v-for="(item,index) in seatflag"
							:key="index" :class="{'noSeat':seatflag[index]==-1,
							'seatActive':seatflag[index]==1,
							'seatSpace':seatflag[index]==0,
							'seatNoUse':seatflag[index]==2,
							}",@click="handleClick(index)"
							></li>
							<!--<li class="seat seatNoUse"></li>-->
							<!--<li class="seat noSeat" ></li>-->
						</ul>
		             </div>
		             <div class="row">
		                 <!--左下半部分:座位提示行-->
						 <hr>
						 <li class="seat seatActive"></li>
						 <span class="notice">已选座位</span>
						 <li class="seat seatSpace"></li>
						 <span class="notice">可选座位</span>
						 <li class="seat seatNoUse"></li>
						 <span class="notice">售出座位</span>
		             </div>
		    </div>
		    <div class="col-md-6  sceenRight">
		        <div class="row">
		            <!--右上半部分:电影信息行-->
					<div class="media">
					  <div class="media-left">
					    <a href="#">
					      <img class="media-object" :src="filmInfo.filmImg" alt="..."  height="200px">
					    </a>
					  </div>
					  <div class="media-body">
					    <h4 class="media-heading">中文名:<strong>{{filmInfo.name}}</strong></h4>
						<h4 class="media-heading">英文名:<strong>{{filmInfo.nameEnglish}}</strong></h4>
						<p>剧情:{{filmInfo.storyType}}</p>
						<p>版本:{{filmInfo.copyType}}</p>
						<p>{{filmInfo.place}}/{{filmInfo.timeLength}}</p>
						<p>{{filmInfo.timeShow}}</p>
					  </div>
					</div>
		        </div>
		        <div class="row">
		             <!--右下半部分:影票购买信息行-->
					 <p>影院:<strong>{{filmInfo.ciname}}</strong></p>
					 <p>影厅:<strong>{{filmInfo.room}}</strong></p>
					 <p>场次:<strong>{{filmInfo.time}}</strong></p>
					 <p id="seatSelect">座位:<span v-for="(item,index) in curSeatDisp" :key="index">{{item}}</span></p>
					 <p>已选择<strong style="color: red;">{{count}}</strong>个座位,<strong style="color: red;">再次单击座位可取消。
					 <span v-if="maxFlag">您一次最多只能买五张票!</span></strong></p>
					 <hr>
					 <p>单价:<strong>{{filmInfo.unitPrice|numberFormat}}</strong></p>
					 <p>总价:<strong style="color: red;">{{totalPrice|numberFormat}}</strong></p>
					 <hr>
					 <button type="button" class="btn btn-success" style="margin: 0 200px;"
					 @click="filmSubmit">确认信息,下单</button>
		        </div>
		    </div>
		  </div>
		</div>
		<script>
		Vue.filter('numberFormat',function(value){
			return '¥'+value.toFixed(2)
		})
		var vm=new  Vue({
			el:'#app',
			data:{
				curSeat:[],//选中座位数组
				curSeatDisp:[],//选中座位展示数组
				count:0,//当前已选中票的个数
				maxLength:5,//一次最多可购买的张数
				maxFlag:false,//是否允许再选择票数
				seatCol:10,//一行的座位列数,当前是10列
				seatflag:[
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
				     0, 0, 0, 0, 2, 2, 0, 0, 0, 0,
				     0, 0, 0, 2, 2, 0, 2, 2, 0, 0,
				     -1, 0, 0, 0, 0, 0, 0, 0, 0, -1,
				     -1, -1, 0, 0, 0, 0, 0, 0, -1, -1,
				],
				filmInfo:{
					name:'长津湖',
					nameEnglish:'The Battle at Lake Changjin',
					copyRight:'中文2D',
					filmImg:'img/1.png',
					storyType:'历史、战争',
					place:'中国大陆',
					timeLength:'176 分钟',
					timeShow:'2021年9月30日',
					cinema:'万达影城',
					room:'1号影厅',
					time:'2021年9月30日  20:00',
					unitPrice:38,
				}
			},
			computed:{
				totalPrice:function(){
					return this.count * this.filmInfo.unitPrice;
				}
			},
			methods:{
				handleClick:function(index){
					if (vm.seatflag[index]==1){
						vm.$set(vm.seatflag,index,0);
						//console.log(this.curSeat.findIndex(item=>item.id===index));
						this.curSeat.splice(this.curSeat.findIndex(item=>item===index),1);
					}
					else
					if (vm.seatflag[index]==0 && this.count<5){
						vm.$set(vm.seatflag,index,1);
						this.curSeat.push(index);
					}
					//设置当前选中的座位
					this.curSeatDisp=[];
					for(let item of this.curSeat){
						this.curSeatDisp.push((Math.floor(item/this.seatCol)+1)+"行"+(item%this.seatCol+1)+"列");
					}
					//计数已经选择了多少个座位
					var mySeat=vm.seatflag.filter(item=>{//item为数组当前的元素
						return item==1;
					})
					this.count=mySeat.length;
					//判断达到购买上限,设置数据maxFlag,并显示提示语句,并显示提示语句“您一次最多仅能买五张票”
					if (this.count>=5)this.maxFlag=true;
					else this.maxFlag=false;
				}
			}
		})
		</script>
	</body>
</html>

图片:

不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)

bg.png

谢谢大家,请多多支持!
不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)文章来源地址https://www.toymoban.com/news/detail-413675.html

到了这里,关于不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于微信小程序电影院订票系统源码(微信小程序毕业设计)

    项目获取请看文章最底下官网 电影院订票系统是基于微信小程序端和网页后端,系统采用java编程语言,mysql数据库,idea开发工具,ssm框架开发,本系统分为用户和管理员两个角色,用户微信小程序端主要功能是可以登陆注册系统,查看电影推荐,电影分类,会员手册,在线

    2024年02月07日
    浏览(63)
  • 电影院订票选座小程序|基于微信小程序的电影院购票系统设计与实现(源码+数据库+文档)

     电影院订票选座小程序目录 目录 基于微信小程序的电影院购票系统设计与实现  一、前言 二、系统功能设计 三、系统实现 1、管理员功能实现 1、影院信息管理 2、 电影信息管理 2 、用户功能实现 1、影院信息 四、数据库设计 1、实体ER图 五、核心代码   六、论文参考 七

    2024年03月15日
    浏览(119)
  • (微信小程序毕业设计源码)基于微信小程序电影院订票系统源码

    项目获取请看文章最底下官网 电影院订票系统是基于微信小程序端和网页后端,系统采用java编程语言,mysql数据库,idea开发工具,ssm框架开发,本系统分为用户和管理员两个角色,用户微信小程序端主要功能是可以登陆注册系统,查看电影推荐,电影分类,会员手册,在线

    2024年02月16日
    浏览(68)
  • 案例118:基于微信小程序的电影院订票选座系统设计及实现

    文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序运行软件:微信开发者 目录 目录 前言 系统展示 用户功能模块的实现 注册登录界面 首页界面 电影信息详

    2024年02月02日
    浏览(47)
  • 设计尝试用Microsoft Visual Studio 在网络上架构一个电影院网络订票系统

    设计尝试用Microsoft Visual Studio 在网络上架构一个电影院网络订票系统的设计,以使每一位客户不用出门就能看到最新的电影信息和预定电影票。本文从理论和实践两个角度出发,对一个具有数据挖掘功能电影院网络订票系统的设计进行设计与实现分析。 随着电影数量与电影种

    2024年02月04日
    浏览(37)
  • ssm电影院选座订票系统小程序-计算机毕设 附源码 26840

    随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,电影院选座订票系统小程序被用户普遍使用,为方便用户能够可以随时进行电影院选座订票系统小程序的数据

    2024年02月02日
    浏览(52)
  • 基于Java+SpringBoot+Vue前后端分离电影院售票订票系统设计与实现(有演示视频)

    博主介绍: ✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品: 《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-

    2024年02月06日
    浏览(51)
  • 基于微信小程序的电影院订票选座系统的设计与实现(程序+数据库+)

    ** ** 二十一世纪是一个集数字化,网络化,信息化的,以网络为核心的社会。随着互联网的发展,传统生活变得更加方便快捷,许多事物都可以跟互联网相连接,于是就提出了“互联网+”[1]的概念,日常生活离不开计算机更离不开互联网,例如生活中最平常的衣食住行,都有

    2024年04月10日
    浏览(50)
  • 基于PHP后台微信电影院选座订票小程序系统设计与实现(安装部署+源码+文档)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年04月08日
    浏览(98)
  • 基于Java+SSM+Vue+uniapp实现微信小程序的电影院订票选座系统小程序

    文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器:谷歌浏览器 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序运行软件:微信开发者 通过移动互联网这几年

    2024年02月04日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包