首先创建电脑主页面
package com.diannao.pojo;
import com.diannao.util.DateUtil;
import java.util.Date;
import java.util.Random;
public class Computer {
private Integer num;//机器号
private RoomType type;//所在区域
private Date stime;//开始时间
private Date etime;//结束时间
private Customer customer;//客户
private Status status;//状态 空闲
private Integer createId(){
return new Random().nextInt(100);
}
public Computer() {
this.num = this.createId();
}
public Computer(RoomType type, Date stime, Date etime, Customer customer, Status status) {
this();
this.type = type;
this.stime = stime;
this.etime = etime;
this.customer = customer;
this.status = status;
}
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
public RoomType getType() {
return type;
}
public void setType(RoomType type) {
this.type = type;
}
public Date getStime() {
return stime;
}
public void setStime(Date stime) {
this.stime = stime;
}
public Date getEtime() {
return etime;
}
public void setEtime(Date etime) {
this.etime = etime;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
@Override
public String toString() {
return "Computer{" +
"机器号=" + num +
", 所在区域=" + type +
", 上机时间=" + (stime==null ? "未开始" : DateUtil.dateToString(stime)) +
", 下机时间=" + (etime==null ? "未结束" : DateUtil.dateToString(etime)) +
", 客户=" + (customer==null ? "无客户使用" : customer) +
", 电脑状态=" + status +
'}';
}
}
创建一个用户的
package com.zhou.jopo;
public class Custumer {
private String id;
public Custumer() {
}
public Custumer(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public String toString() {
return "Custumer{" +
"身份证号='" + id + '\'' +
'}';
}
}
创建枚举类型房间的属性
package com.diannao.pojo;
public enum RoomType {
大厅 ,包间
}
创建电脑的使用状态
package com.diannao.pojo;
public enum Status {
空闲 ,占有, 维修, 自用
}
创建时间的工具类
package com.diannao.util;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtil {
private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static String dateToString(Date date){
try {
if (date!=null)return SDF.format(date);
return null;
}catch (Exception e){
System.out.println(e.getMessage());
}
return null;
}
}
创建一个接口
package com.diannao.service;
import com.diannao.pojo.Computer;
import com.diannao.pojo.RoomType;
import java.util.HashMap;
import java.util.Map;
public interface INetBarService {
Map<Integer, Computer> COMPUTER_MAP = new HashMap<>();
void findAll();
void begin(String iden, RoomType type);
void end(int num);
}
创建一个继承接口的类
package com.diannao.service;
import com.diannao.pojo.Computer;
import com.diannao.pojo.Customer;
import com.diannao.pojo.RoomType;
import com.diannao.pojo.Status;
import com.hui.util.DateUti;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Date;
import java.util.Scanner;
public class NetBarService implements INetBarService{
static {//只执行一次
Computer c1 = new Computer(RoomType.包间,null,null,null, Status.维修);
Computer c2 = new Computer(RoomType.包间,null,null,null, Status.空闲);
Computer c3 = new Computer(RoomType.包间,null,null,null, Status.空闲);
Computer c4 = new Computer(RoomType.大厅,null,null,null, Status.空闲);
Computer c5 = new Computer(RoomType.大厅,null,null,null, Status.空闲);
Computer c6 = new Computer(RoomType.大厅,null,null,null, Status.自用);
Computer c7 = new Computer(RoomType.大厅,null,null,null, Status.空闲);
INetBarService.COMPUTER_MAP.put(c1.getNum(),c1);
INetBarService.COMPUTER_MAP.put(c2.getNum(),c2);
INetBarService.COMPUTER_MAP.put(c3.getNum(),c3);
INetBarService.COMPUTER_MAP.put(c4.getNum(),c4);
INetBarService.COMPUTER_MAP.put(c5.getNum(),c5);
INetBarService.COMPUTER_MAP.put(c6.getNum(),c6);
INetBarService.COMPUTER_MAP.put(c7.getNum(),c7);
}
@Override
public void findAll() {
for (Computer computer: COMPUTER_MAP.values()){
System.out.println(computer);
}
//方式二
/*for (Iterator<Computer> iterator = COMPUTER_MAP.values().iterator();iterator.hasNext();){
System.out.println(iterator.next());
}*/
}
@Override
public void begin(String iden, RoomType type) {
boolean flag=false;//未找到
//根据身份证创建客户对象
Customer customer = new Customer(iden);
//选择房间类型
Computer computer = null;
for (Computer c:COMPUTER_MAP.values()){
if (c.getType().equals(type) && c.getStatus()==Status.空闲){
//找到状态
computer=c;
break;
}
}
if (computer==null){
System.out.println("对不起,现在没有空闲的电脑可以使用!");
}else {
//绑定电脑和客户
computer.setCustomer(customer);
//customer.setComputer(computer);
//设置开始时间为当前时间
computer.setStime(new Date());
//修改状态为占用
computer.setStatus(Status.占有);
System.out.println("上机成功");
System.out.println(computer);
}
}
@Override
public void end(int num) {
Computer computer=null;
//根据机器号找到对应的电脑
for (Computer c:COMPUTER_MAP.values()){
if (num==c.getNum()){
computer=c;
break;
}
}
if (computer==null){
System.out.println("对不起,您输入的没有找到电脑号!");
}else {
//生成结束时间
//Date date = new Date();
computer.setEtime(new Date());
//计算费率
long time = computer.getEtime().getTime() - computer.getStime().getTime();
double money=0;
switch (computer.getType()){
case 包间 :
money = time * 5/1000/60;
break;
case 大厅:
money = time *3/1000/60;
break;
}
System.out.println("您本次上网消费¥"+money+"元");
//修改对应的电脑状态为空闲
computer.setStatus(Status.空闲);
try {
Writer writ = new FileWriter("004.txt");
writ.write("开始时间"+DateUti.DatetoString(computer.getStime())+"\n");
writ.write("结束时间"+DateUti.DatetoString(computer.getEtime())+"\n");
writ.write("本次消费:¥"+money+"元"+"\n");
writ.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
//解绑
computer.setCustomer(null);
//清空时间
computer.setEtime(null);
computer.setStime(null);
}
}
}
创建测试类
package com.diannao.view;
import com.diannao.pojo.RoomType;
import com.diannao.service.INetBarService;
import com.diannao.service.NetBarService;
import java.util.Scanner;
public class NetBraView {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num=0;
INetBarService service = new NetBarService();
do {
System.out.println("1:浏览所有电脑 2:上机 3:结账 4:退出");
num= in.nextInt();
switch (num){
case 1:
service.findAll();
break;
case 2:
System.out.println("请输入客户的身份证号:");
String iden = in.next();
System.out.println("请选择房间:1:大厅 2:包间");
int m = in.nextInt();
RoomType type = (m==1? RoomType.大厅:RoomType.包间);
service.begin(iden,type);//上机
break;
case 3:
System.out.println("请输入要结账的机器号:");
int z = in.nextInt();
service.end(z);
break;
case 4:
System.out.println("确认退出(y/n)");
String y = in.next();
if (y.equals("y")){
System.out.println("退出成功");
System.exit(0);
}else {
System.out.println("请继续选择");
}
break;
}
}while (num<=5);
}
}
创建打印小票的接口
package com.diannao.service;
import java.io.IOException;
public interface INprint {
void print() throws IOException;
}