1.电影购票项目
代码:
package java项目.电影购票项目;
import java.awt.print.Book;
import java.util.Arrays;
import java.util.Scanner;
public class Test {
public static void main(String[] args){
BookTicket bookTicket=new BookTicket();
bookTicket.init();
}
}
class BookTicket{//主界面类
Movie[] movie=new Movie[2];
LoginReg loginReg= new LoginReg();
void movieInformation(){//内部电影信息
movie[0]=new Movie();
movie[0].number="S1124";
movie[0].movieName="雷神";
movie[0].movieTime="20180101";
movie[0].moviePrice=80;
movie[1]=new Movie();
movie[1].number="S1125";
movie[1].movieName="狗狗";
movie[1].movieTime="20190101";
movie[1].moviePrice=80;
}
void interFace(){//订票界面
System.out.println("************************************");
System.out.println(" 订票系统 ");
System.out.println("************************************");
System.out.println("电影编号\\t\\t电影名\\t\\t上映时间\\t\\t电影票价");
System.out.println("___________________________________________________________________________________________");
System.out.println(movie[0].number + "\t\t" + movie[0].movieName + "\t\t"+ movie[0].movieTime + "\t" + "$" + movie[0].moviePrice);
System.out.println(movie[1].number + "\t\t" + movie[1].movieName + "\t\t"+ movie[1].movieTime + "\t" + "$" + movie[1].moviePrice);
System.out.println("___________________________________________________________________________________________");
}
void login(){//登录、注册
System.out.println("请选择:1.登录 2.注册");
Scanner input=new Scanner(System.in);
int log=input.nextByte();
switch (log){
case 1:
if(loginReg.login()==0){
login();
}
break;
case 2:
loginReg.reg();
login();
break;
default:
System.out.println("输入错误");
System.out.println("是否重新登录");
login();
}
}
void booking(){//订票
Scanner input = new Scanner(System.in);
Boolean con = true;
int index = 0;
int[] flag={-1,-1};
do {
System.out.println("----------欢迎丁订票----------");
System.out.println("请输入电影编号");
String odd= input.next();
for(int i=0;i<movie.length;i++){
if(movie[i].number.equals(odd)){
flag[index]=i;
}
}
if(flag[index]==-1){
System.out.println("编号输入错误");
}else {
System.out.println("订票成功");
System.out.println("电影编号\t电影名\t\t上映时间\t\t电影票价");
System.out.println(movie[flag[index]].number + "\t\t"
+ movie[flag[index]].movieName + "\t"
+ movie[flag[index]].movieTime + "\t\t" + "$"
+ movie[flag[index]].moviePrice);
index++;
}
System.out.println("是否需要继续订票 Y/N");
String yesNo=input.next();
if(yesNo.equals("N")){
con=false;
}
if(index>=2){
System.out.println("已经没有可预订的票");
con=false;
}
}while (con);
int add=0;
int sign=0;
for(index=0;index<2;index++){
if(flag[index]!=-1){
add+=movie[flag[index]].moviePrice;
sign++;}
}
System.out.println("你一共预订了"+sign+"张票"+"一共"+add+"元");
}
void init(){
movieInformation();
interFace();
login();
booking();
}
}
class LoginReg{//登录、注册类
final int INIT = 1024;
//自定义类数组的创建
User[] user=new User[INIT];//初始化顶点,建立顶点表
Scanner input = new Scanner(System.in);//输入
void reg(){//定义用户注册方法
int flag=0;
System.out.println("------------欢迎注册--------------");
System.out.println("请输入用户名:");
for (int i=0;i<INIT;i++){
if(user[i]==null){
user[i]=new User();//初始化数组中的每一个元素
user[i].name=input.next();
flag=i;
break;
}
}
System.out.println("请输入密码:");
user[flag].password=input.next();
System.out.println("----------------恭喜你!注册成功---------------");
System.out.println("请记住你的用户名和密码");
System.out.println("用户名:"+user[flag].name+"密码:"+user[flag].password);
}
int login(){//用户登录
//未登录时,状态flag为0,登录后,状态变为1
int flag=0;
System.out.println("----------------欢迎登录----------------");
System.out.println("请输入用户名:");
String n1=input.next();
System.out.println("请输入密码:");
String n2=input.next();
for(int i=0;i<INIT;i++){
if(user[i] != null){
if(user[i].name.equals(n1) && user[i].password.equals(n2)){
flag=1;
break;
}
else {
System.out.println("用户名或密码错误");
}
}
}
switch (flag){
case 0:
System.out.println("登录失败");
System.out.println("是否重新登录(Y/N)");
String instr=input.next();
if(instr.equals("Y")){
login();
}
break;
case 1:
System.out.println("登录成功");
break;
}
return flag;
}
}
class Movie{//电影类
String number;//电影序号
String movieName;//电影名称
String movieTime;//电影播放时间
int moviePrice;//电影价格
}
class User{//用户类
String name;//用户名
String password;//密码
}
相关知识点
(1)final变量:final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值,通常,由final定义的变量为常量。
(2)\t 补按tab键的空格
(3)next()和nextLine()的区别:next()方法读取到空白符就结束,而nextLine()读取到回车就结束
(4)void和int long等的区别。主要用于区分main()函数是否有返回值,void定义的函数某有返回值,int、long定义的函数有返回值,返回类型为int型值、long型值。
(5)自定义类数组的创建
首先,定义一个类,类里面存放了一些变量
class User{//用户类
String name;//用户名
String password;//密码
}
类数组的创建
User[] user=new User[10];//初始化顶点,建立顶点表 ,定义类数组的长度为10
User[0]=new User();//初始化数组中的第一个元素
User[0].name="zhang";//给类数组赋值
User[0].password="122345";
System.out.println(User[0].name)//查看类数组第一个元素的name属性的值
(6)类的定义、方法的调用。