本文目录
- 基础知识
- 第一题:数据模拟栈
- 完整代码
- 第二题:酒店管理系统
- 完整代码
基础知识
除了8个基础数据类型int/short/byte/long/char/float/double/boolean
其他都是引用数据类型
第一题:数据模拟栈
编写程序,使用一维数组,模拟栈数据结构。
要求:
1、这个栈可以存储java中的任何引用类型的数据。
2、在栈中提供push方法模拟压栈。(栈满了,提示)
3、在栈中提供pop方法模拟弹栈。(栈空了,提示)
4、编写测试程序,new栈对象,调用push pop方法模拟压栈动作。
完整代码
设置了一个索引index来控制栈帧的位置。
public class MyStack{
private Object[] elements;
private int index;
public MyStack() {
this.elements = new Object[10];
this.index = -1;
}
/*
向栈中压元素
*/
public void push(Object obj){
if(index>= elements.length-1){
System.out.println("压栈失败,栈已满!");
return;
}
elements[++index] = obj;
System.out.println("压栈成功!栈帧指向" + index);
//所有sout方法执行时,如果输出引用的话,自动调用引用的toString()方法
}
/*
从栈中取元素
*/
public void pop(){
if(index < 0){
System.out.println("弹栈失败,栈已空!");
return;
}
System.out.println("弹栈" + elements[index] + "元素成功");
index --;
System.out.println("栈帧指向" + index);
}
public Object[] getElements(){
return elements;
}
public static void main(String[] args){
MyStack stack = new MyStack();
stack.push(4);
stack.pop();
stack.pop();
}
}
输出
压栈成功!栈帧指向0
弹栈4元素成功
栈帧指向-1
弹栈失败,栈已空!
第二题:酒店管理系统
要求:为某个酒店编写程序:酒店管理系统,模拟订房、退房、打印所有房间状态等功能。
1、该系统的用户是:酒店前台
2、酒店中所有的房间使用一个二维数组来模拟。“Room[][] rooms;”
3、酒店中的每一个房间应该是一个java对象:Room
4、每一个房间Room应该有:房间编号、房间类型属性、房间是否空闲
5、系统对外提供的功能:
可以预定房间:用户输入房间编号、订房
可以退房:用户输入房间编号、退房
可以查看所有房间的状态:用户输入某个指令应该可以查看所有房间状态。
完整代码
代码分为两个类,一个Hotel类一个Room类。Room类定义了房间的基本信息,房间编号、房间类型属性、房间是否空闲。Hotel定义了一个二维数组存放房间,提供了order(预定),exit(退房)等功能。
import javafx.scene.transform.Scale;
import java.util.Scanner;
public class Hotel {
private Room[][] rooms;
public Hotel(){
rooms = new Room[3][10];//3行10列。三层楼每层十个房间。
for(int i = 0;i<rooms.length;i++){
for(int j = 0;j<rooms[i].length;j++){
if(i == 0){
rooms[i][j] = new Room((i+1)*100+j+1,"房间类型",true);
}else if(i == 1){
rooms[i][j] = new Room((i+1)*100+j+1,"标准间",true);
}else if(i == 2){
rooms[i][j] = new Room((i+1)*100+j+1,"总统套房",true);
}
}
}
}
void print(){
for(int i = 0;i<rooms.length;i++){
for(int j = 0;j<rooms[i].length;j++){
Room room = rooms[i][j];
System.out.println(room);
}
System.out.println();
}
}
/*
* 订房方法
* 调用此方法时需要传递一个房间编号
*/
public void order(int roomNo){
//订房最主要的是将房间对象的status修改为false
//Room对象的status修改为false
//假设房间编号207,下标是rooms[1][6]
Room room = rooms[roomNo/100 - 1][roomNo%100 - 1];
room.setStatus(false);//修改为占用
}
/*
* 退房
* @#param roomNo
*/
public void exit(int roomNo){
Room room = rooms[roomNo/100 - 1][roomNo %100 -1];
//修改为空闲
room.setStatus(true);
}
public static void main(String[] args) {
Hotel hotel = new Hotel();
// hotel.print();
System.out.println("欢迎使用酒店管理系统,请认真阅读以下使用说明");
System.out.println("请输入对应的功能编号:[1]查看房间列表。[2]表示订房。[3]表示退房。[4]表示退出");
Scanner s = new Scanner(System.in);
while(true){
System.out.println("请输入功能编号:");
int i = s.nextInt();
if(i == 1){
hotel.print();
}else if(i == 2){
System.out.println("请输入订房编号:");
int roomNo = s.nextInt();
hotel.order(roomNo);
}else if(i == 3){
System.out.println("请输入退房编号:");
int roomNo = s.nextInt();
hotel.exit(roomNo);
}else if (i == 0){
System.out.println("再见!欢迎下次再来!");
return;
}else{
//出错了!!
System.out.println("您的输入有误,请重新输入");
}
}
}
}
class Room{
private int no;
/*
* 房间类型:标准间 单人间 总统套房
*/
private String type;
/*
* 房间状态
* true表示空闲,房间可以背锁定。
* false表示占用,房间不能被预定。
*/
public Room(int no, String type, boolean status) {
this.no = no;
this.type = type;
this.status = status;
}
private boolean status;
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
@Override
public String toString() {
return "["+no+","+type+","+(status?"空闲" : "占用")+"]";
//把一个变量塞到一个字符串当中,口诀:加一个双引号,双引号中间加两个加号,两个加号中间加变量名。
}
}
输出
欢迎使用酒店管理系统,请认真阅读以下使用说明
请输入对应的功能编号:[1]查看房间列表。[2]表示订房。[3]表示退房。[4]表示退出
请输入功能编号:
1
[101,房间类型,空闲]
[102,房间类型,空闲]
[103,房间类型,空闲]
[104,房间类型,空闲]
[105,房间类型,空闲]
[106,房间类型,空闲]
[107,房间类型,空闲]
[108,房间类型,空闲]
[109,房间类型,空闲]
[110,房间类型,空闲]
[201,标准间,空闲]
[202,标准间,空闲]
[203,标准间,空闲]
[204,标准间,空闲]
[205,标准间,空闲]
[206,标准间,空闲]
[207,标准间,空闲]
[208,标准间,空闲]
[209,标准间,空闲]
[210,标准间,空闲]
[301,总统套房,空闲]
[302,总统套房,空闲]
[303,总统套房,空闲]
[304,总统套房,空闲]
[305,总统套房,空闲]
[306,总统套房,空闲]
[307,总统套房,空闲]
[308,总统套房,空闲]
[309,总统套房,空闲]
[310,总统套房,空闲]
请输入功能编号:
2
请输入订房编号:
201
请输入功能编号:
1
[101,房间类型,空闲]
[102,房间类型,空闲]
[103,房间类型,空闲]
[104,房间类型,空闲]
[105,房间类型,空闲]
[106,房间类型,空闲]
[107,房间类型,空闲]
[108,房间类型,空闲]
[109,房间类型,空闲]
[110,房间类型,空闲]
[201,标准间,占用]
[202,标准间,空闲]
[203,标准间,空闲]
[204,标准间,空闲]
[205,标准间,空闲]
[206,标准间,空闲]
[207,标准间,空闲]
[208,标准间,空闲]
[209,标准间,空闲]
[210,标准间,空闲]
[301,总统套房,空闲]
[302,总统套房,空闲]
[303,总统套房,空闲]
[304,总统套房,空闲]
[305,总统套房,空闲]
[306,总统套房,空闲]
[307,总统套房,空闲]
[308,总统套房,空闲]
[309,总统套房,空闲]
[310,总统套房,空闲]
请输入功能编号:
3
请输入退房编号:
201
请输入功能编号:
1
[101,房间类型,空闲]
[102,房间类型,空闲]
[103,房间类型,空闲]
[104,房间类型,空闲]
[105,房间类型,空闲]
[106,房间类型,空闲]
[107,房间类型,空闲]
[108,房间类型,空闲]
[109,房间类型,空闲]
[110,房间类型,空闲]
[201,标准间,空闲]
[202,标准间,空闲]
[203,标准间,空闲]
[204,标准间,空闲]
[205,标准间,空闲]
[206,标准间,空闲]
[207,标准间,空闲]
[208,标准间,空闲]
[209,标准间,空闲]
[210,标准间,空闲]
[301,总统套房,空闲]
[302,总统套房,空闲]
[303,总统套房,空闲]
[304,总统套房,空闲]
[305,总统套房,空闲]
[306,总统套房,空闲]
[307,总统套房,空闲]
[308,总统套房,空闲]
[309,总统套房,空闲]
[310,总统套房,空闲]