一、环境配置
JDK1.8
MySQL 8.0
二、知识点
封装
继承
多态
接口
JDBC
List
正则表达式
MVC三层架构
三、流程图
四、代码
package com.iotek.cinema.dao;
import com.iotek.cinema.entity.Hall;
import java.util.ArrayList;
public interface HallDao {
//保存一条数据
public void saveHall(Hall hall);
//根据放映厅名字查找
public Hall selectHallByHallName(String hallname);
//根据放映厅ID查找
public Hall selectHallByHallID(int hallID);
//查询所有放映厅
public ArrayList<Hall> selectAllHall();
//根据放映厅所属电影院查找
public ArrayList<Hall> selectHallByBelongsTo(int hallBelongsTo);
//查找开放的放映厅
public ArrayList<Hall> selectHallByOpen(String hallStateOpen);
//查找未开放的放映厅
public ArrayList<Hall> selectHallByNotOpen(String hallStateNotOpen);
//修改放映厅名字
public boolean updateHallName(int hallID,String newHallName);
//修改所属放映厅
public boolean updateHallBelongsTo(int hallID,int newHallBelongsTo);
//修改放映厅状态
public boolean updateHallState(int hallID,String newHallState);
//放映厅售票前十查询
public ArrayList<Hall> ticketBeforeTenQueries(int ranking);
//购票增加总票房
public boolean updateHallSalesIncrease(int hallId,int votes);
//购票增加总营业额
public boolean updateHallTurnoverIncrease(int hallId,double moviePrice);
//退票减少总票房
public boolean updateHallBoxOfficeToReduce(int hallId,int votes);
//退票减少总营业额
public boolean updateHallReduceTotalTurnover(int hallId,double moviePrice);
}
//用户登录界面
private void loginMenu(){
do {
System.out.println("请输入用户名");
String name = scanner.next();
if (!MyUtil.math(name,"^[a-zA-Z][a-zA-Z0-9_]{4,15}$")) {
System.out.println("用户名应以字母开头,包含字母、数字、下划线,长度为5-17位");
return;
}
System.out.println("请输入密码");
String passsword = scanner.next();
if (!MyUtil.math(passsword,"^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$")) {
System.out.println("密码应包含大小写字母和数字的组合,不能使用特殊字符,长度为8-10位");
return;
}
System.out.println("请再次确认密码");
String secondPassword = scanner.next();
if (!passsword.equals(secondPassword)) {
System.out.println("两次密码不一致请重新输入!");
return;
}
User user = new User(0,name,secondPassword,0,0,"","","",0,0,"");
int res = userBiz.login(user);
if (res == 1) {
System.out.println("账号不存在");
}
if (res == 2) {
System.out.println("用户名或密码错误");
}
if (res == 3) {
System.out.println("账号已被冻结");
System.exit(0);
}
if (res == 4) {
user_id = userBiz.findByName(name).getId();
System.out.println("登录成功");
MyUtil.jump();
userMainMenu();
break;
}
System.out.println("是否继续");
choose = scanner.next();
}while (!choose.equals("n"));
}
//充值
private void topup(){
do{
double money = 0;
System.out.println("1、30元\t\t2、50元\t\t3、100元");
System.out.println("4、200元\t\t5、300元\t\t6、500元");
System.out.println("7、其他金额");
System.out.println("8、返回上一级");
System.out.println("9、退出");
choose = scanner.next();
switch (choose){
case "1":
money = 30;
break;
case "2":
money = 50;
break;
case "3":
money = 100;
break;
case "4":
money = 200;
break;
case "5":
money = 300;
break;
case "6":
money = 500;
break;
case "7":
System.out.println("请输入金额");
String m = scanner.next();
if (MyUtil.math(m,"^[1-9]\\d*$")) {
money = Double.parseDouble(m);
}else {
System.out.println("金额应为正整数");
return;
}
break;
case "8":
return;
case "9":
System.out.println("退出成功,感谢您的使用");
System.exit(0);
default:
System.out.println("您输入的有误,请重新输入!!!");
return;
}
if (money > 10000) {
userBiz.modifyUserStateFreeze(user_id);
System.out.println("账号异常,已冻结,请与管理员联系!!!!");
System.exit(0);
}else {
boolean res = userBiz.topupById(user_id,money,MyUtil.getTime());
if (res==true) {
System.out.println("充值成功");
userBiz.modifyMemberLevel(user_id,userBiz.totalAmountOfTopup(user_id));
}
userBiz.addBalance(user_id,money,money,money);
System.out.println("是否继续");
choose = scanner.next();
}
}while (!choose.equals("n"));
}
五、项目展示
下载链接:
链接:https://pan.baidu.com/s/1bL7BusqsXCV-r6aMqwlS4g?pwd=1234
提取码:1234