网吧计费系统

该代码实现了一个简单的网吧管理系统,包括电脑(Computer)类,包含机器号、区域、上机和下机时间、客户和状态等信息。此外,还有Customer(客户)类、RoomType(房间类型)枚举、Status(电脑状态)枚举以及DateUtil(日期工具类)。系统提供浏览所有电脑、开始上机、结束上机的功能,并记录消费信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先创建电脑主页面

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;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值