Sistema de gestión de habitaciones de hotel basado en javaSwing y MySQL (con código fuente)

Debido a que demasiadas personas lo solicitaron recientemente, me uní al grupo 769119544 para recibir el código fuente.

Tabla de contenido

1. Requisitos funcionales

2. Diccionario de datos

1. Entrada de flujo de datos

2. Entrada de archivo

3. Diagrama de caso de uso

4. Diagrama de flujo de datos

Cinco, diagrama ER

6. Marco del sistema 

Siete, diseño de base de datos.

8. Diseño de interfaz

Nueve, pantalla de código

1. Capa de objeto de la tabla de datos (capa de dominio)

1.1 Inicialización del objeto de la habitación

1.2 Inicialización del objeto pasajero

1.3, inicialización del objeto administrador

2. Capa de objeto de acceso a datos (capa dao)

2.1 Información relacionada con la habitación

2.2 Información del pasajero

2.3 Información del administrador

3. paquete de utilidad

3.1, base de datos interactiva JDBC (DBUtil)

3.2 Tiempo real (DateUtil)

4. Capa empresarial (capa de servidor)

4.1 Habitación (RoomContorller)

4.2 Pasajero (RoomInContorller)

4.3 Administrador (UserContorller)

5. Capa de visualización de datos (capa JSP)

6. Capa de prueba (prueba)


Entorno de desarrollo integrado: IntelliJ IDEA (2020); 
complemento: Jform Designer; 
base de datos: MySQL 8.0;

Ser aplicable

Diseño de cursos, tareas grandes, ejercicios de proyectos, presentaciones de aprendizaje, etc.

1. Requisitos funcionales

        1. Mantenimiento de la información de los residentes

        Busque información para todos los residentes. Incluyendo la hora de entrada, la hora de salida, el número de identificación, el número de la habitación del huésped, etc., proporcionando funciones como agregar, eliminar, modificar y verificar;

        2. Mantenimiento de la información de la habitación

        Explorar toda la información de la habitación. Incluyendo número de habitación, descripción de la habitación, disponibilidad de la habitación, etc. También se requieren funciones como agregar nuevas habitaciones, eliminar habitaciones y modificar la información de la habitación.

        3. Función de consulta de habitaciones

        Busque directamente la información relevante de la habitación a través del número de habitación y el nombre de la habitación;

        4. Función de gestión de cuentas

        El administrador puede registrar la cuenta, cambiar la contraseña y otras operaciones;

2. Diccionario de datos

1. Entrada de flujo de datos

(1) Nombre del flujo de datos: información de inicio de sesión

         Fuente de flujo de datos: administrador

         Hacia dónde fluyen los datos: sistemas de gestión

         Composición del flujo de datos: nombre de usuario + contraseña de usuario

(2) Nombre del flujo de datos: información de suscripción

         Fuente de flujo de datos: Viajeros

         Hacia dónde fluyen los datos: sistemas de gestión

         Composición del flujo de datos: número de habitación + nombre del ocupante + número de identificación del ocupante + fecha de reserva + número de días de ocupación

(3) Nombre del flujo de datos: estado de la habitación

         Origen del flujo de datos: tabla de estado de la habitación de invitados

         Hacia dónde fluyen los datos: sistemas de gestión

         Composición del flujo de datos: el estado actual de la sala

(4) Nombre del flujo de datos: solicitud de salida

         Fuente de flujo de datos: Viajeros

         Hacia dónde fluyen los datos: sistemas de gestión

         Composición del flujo de datos: nombre del ocupante + número de identificación del ocupante + descripción del estado

2. Entrada de archivo

(1) Nombre del archivo de datos: tabla de administrador

     Breve descripción: registrar información del usuario

       Contenido del archivo: tabla de administrador = nombre de usuario + contraseña de usuario

(2) Nombre del archivo de datos: información de registro

     Breve descripción: almacenar información de registro de clientes

       Contenido del archivo: número de cliente + nombre del cliente + número de identificación del cliente + número de habitación de check-in + fecha programada + hora de check-out + número de días de estadía

(3) Nombre del archivo de datos: información de la habitación

     Breve descripción: registrar la información de la sala

       Contenido del archivo: número de habitación + tipo de habitación + descripción de la habitación + número de estado de la habitación + ubicación de la habitación

(4) Nombre del archivo de datos: tipo de habitación

     Breve descripción: información del tipo de trastero

       Contenido del archivo: número de tipo de habitación + nombre del tipo de habitación + área estándar de la habitación + cama estándar de la habitación + cargo estándar + descripción del tipo

(5) Nombre del archivo de datos: estado de la habitación de invitados

     Breve descripción: Estado del trastero

       Contenido del archivo: número de habitación + estado de la habitación

3. Diagrama de caso de uso

4. Diagrama de flujo de datos

 

 Cinco, diagrama ER

6. Marco del sistema 

Siete, diseño de base de datos.

1. Formulario de información de la habitación (habitación)

2. Formulario de información de check-in (roomIn)

 3. Formulario de información del administrador

 8. Diseño de interfaz

 

 

 Nueve, pantalla de código

1. Capa de objeto de la tabla de datos (capa de dominio)

1.1 Inicialización del objeto de la habitación

public class Room {
    private String roomid;//房间编号
    private String housename;//名称
    private String homeloc;//位置
    private int housecoast;//标准收费
    private String housesnull;//客房空闲情况
    private String housesclean;//客房清洁状况
    private String housesdesc;//类型描述

    public Room() {
    }

    public Room(String roomid, String housename, String homeloc, int housecoast, String housesnull, String housesclean, String housesdesc) {
        this.roomid = roomid;
        this.housename = housename;
        this.homeloc = homeloc;
        this.housecoast = housecoast;
        this.housesnull = housesnull;
        this.housesclean = housesclean;
        this.housesdesc = housesdesc;
    }

    public String getRoomid() {
        return roomid;
    }

    public void setRoomid(String roomid) {
        this.roomid = roomid;
    }

    public String getHousename() {
        return housename;
    }

    public void setHousename(String housename) {
        this.housename = housename;
    }

    public String getHomeloc() {
        return homeloc;
    }

    public void setHomeloc(String homeloc) {
        this.homeloc = homeloc;
    }

    public int getHousecoast() {
        return housecoast;
    }

    public void setHousecoast(int housecoast) {
        this.housecoast = housecoast;
    }

    public String getHousesnull() {
        return housesnull;
    }

    public void setHousesnull(String housesnull) {
        this.housesnull = housesnull;
    }

    public String getHousesclean() {
        return housesclean;
    }

    public void setHousesclean(String housesclean) {
        this.housesclean = housesclean;
    }

    public String gethousesdesc() {
        return housesdesc;
    }

    public void sethousesdesc(String housesdesc) {
        this.housesdesc = housesdesc;
    }

    @Override
    public String toString() {
        return "Room{" +
                "roomid='" + roomid + '\'' +
                ", housename='" + housename + '\'' +
                ", homeloc='" + homeloc + '\'' +
                ", housecoast=" + housecoast +
                ", housesnull='" + housesnull + '\'' +
                ", housesclean='" + housesclean + '\'' +
                ", housesdesc='" + housesdesc + '\'' +
                '}';
    }
}

1.2 Inicialización del objeto pasajero

public class RoomIn {
    private String username;
    private String idcard;
    private String roomId;
    private String datain;
    private String dataout;
    private int dataNum;

    public String getRoomId() {
        return roomId;
    }

    public void setRoomId(String roomId) {
        this.roomId = roomId;
    }

    public RoomIn() {
    }

    public RoomIn(String username, String idcard,String roomId, String datain, String dataout, int dataNum) {
        this.username = username;
        this.idcard = idcard;
        this.datain = datain;
        this.dataout = dataout;
        this.dataNum = dataNum;
        this.roomId=roomId;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getIdcard() {
        return idcard;
    }

    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }

    public String getDatain() {
        return datain;
    }

    public void setDatain(String datain) {
        this.datain = datain;
    }

    public String getDataout() {

        return dataout;
    }

    public void setDataout(String dataout) {
        this.dataout = dataout;
    }

    public int getdataNum() {
        return dataNum;
    }

    public void setdataNum(int dataNum) {
        this.dataNum = dataNum;
    }

    @Override
    public String toString() {
        return "RoomIn{" +
                "username='" + username + '\'' +
                ", idcard='" + idcard + '\'' +
                ", roomId='" + roomId + '\'' +
                ", datain=" + datain +
                ", dataout=" + dataout +
                ", dataNum=" + dataNum +
                '}';
    }
}

1.3, inicialización del objeto administrador

public class User {
    private String id;
    private String password;

    public User() {
    }

    public User(String id, String password) {
        this.id = id;
        this.password = password;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

2. Capa de objeto de acceso a datos (capa dao)

2.1 Información relacionada con la habitación

import com.keshe.domain.Room;
import com.keshe.util.DBUtil;

import java.util.List;

public class RoomDao {
    //插入房间信息
    public int insert(Room rm){
        String sql ="insert room values(?,?,?,?,?,?,?)";
        int count= DBUtil.update(sql,rm.getRoomid(),rm.getHousename(),rm.getHomeloc(),rm.getHousecoast(),rm.getHousesnull(),rm.getHousesclean(),rm.gethousesdesc());
        return count;
    }
    //显示房间信息
    public List<Room> select(){
        String sql="select * from room";
        List<Room> ri =DBUtil.query(sql,Room.class);
        return ri;
    }
    //根据id查询房间用于删除数据
    public List<Room> selectId(String roomid ){
        String sql="select * from room where roomid=?";
        List<Room> ri =DBUtil.query(sql,Room.class,roomid);
        return ri;
    }
    //根据房间名查询房间
    public List<Room> selectName(String housesname ){
        String sql="select * from room where housename=?";
        List<Room> ri =DBUtil.query(sql,Room.class,housesname);
        return ri;
    }
    //根据id删除数据
    public int delete(String id){
        String sql="delete from room where roomid=?";
        int count=DBUtil.update(sql,id);
        return count;
    }
    //根据id修改数据
    public int update(String id,String housename,String homeloc,int housecoast,String housesnull,String housesclean,String housesdesc){
        String sql="update room set housename=?,homeloc=?,housecoast=?,housesnull=?,housesclean=?,housesdesc=? where roomid=?";
        int count= DBUtil.update(sql,housename,homeloc,housecoast,housesnull,housesclean,housesdesc,id);
        return count;
    }
    //根据id修改房间空闲状态
    public int updateId(String id,String housesnull){
        String sql="update room set housesnull=?where roomid=?";
        int count= DBUtil.update(sql,housesnull,id);
        return count;
    }
}

2.2 Información del pasajero

import com.keshe.domain.RoomIn;
import com.keshe.util.DBUtil;

import java.util.List;

public class RoomInDao {
    //插入入住信息
    public int insert(RoomIn ri){
        String sql="insert roomIn(username,idcard,roomId,datain,dataout,dataNum) values (?,?,?,?,?,?)";
        int count= DBUtil.update(sql,ri.getUsername(),ri.getIdcard(),ri.getRoomId(),ri.getDatain(),ri.getDataout(),ri.getdataNum());
        return count;
    }
    //修改入住天数
    public int uptateDateNum(int dataNum,String idcard){
        String sql="uptate roomIn set dataNum=? where username=?";
        int count=DBUtil.update(sql,dataNum,idcard);
        return count;
    }
    //修改退房日期(退房)
    public int updateDateout(String dateout,String idcard)
    {
        String sql="update roomIn set dataout=? where idcard=?";
        int count=DBUtil.update(sql,dateout,idcard);
        return count;
    }
    //删除入住信息
    public int delete(String idcard){
        String sql="delete from roomIn where idcard=?";
        int count=DBUtil.update(sql,idcard);
        return count;
    }
    //查看入住名单
    public List<RoomIn> select(){
        String sql="select * from roomIn";
        List<RoomIn> ri =DBUtil.query(sql,RoomIn.class);
        return ri;
    }
    //根据姓名查询入住名单信息
    public List<RoomIn> selectUserName(String username){
        String sql="select * from roomIn where username=?";
        List<RoomIn> ri =DBUtil.query(sql,RoomIn.class,username);
        return ri;
    }
}

2.3 Información del administrador

import com.keshe.domain.User;
import com.keshe.util.DBUtil;

import java.util.List;

public class UserDao {
    //添加账号至数据库
    public int insertUSer(User user){
        String sql="insert user values(?,?)";
        int count= DBUtil.update(sql,user.getId(),user.getPassword());//返回影响数据数目
        return count;
    }
    //查询
    public List<User> selectId(String id){
        String sql = "select * from user where id=?";
        List<User> list=DBUtil.query(sql,User.class,id);
        return list;
    }
    //修改密码
    public int updateUser(String id,String passworld){
        String sql="update user set password=? where id=?";
        int count= DBUtil.update(sql,passworld,id);
        return count;
    }
}

3. paquete de utilidad

3.1, base de datos interactiva JDBC (DBUtil)

import com.keshe.domain.Room;

import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class DBUtil {


    //数据库用户名
    private static final String USERNAME = "root";
    //数据库密码
    private static final String PASSWORD = "root456";
    //驱动信息
    private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
    //数据库地址
    private static final String URL = "jdbc:mysql://43.138.53.7/room"
            + "?serverTimezone=UTC&useSSL=false"
            +"&useUnicode=true&characterEncoding=UTF-8";

    //private static Connection connection;
    //private static PreparedStatement pstmt;
    //private static ResultSet resultSet;
    static{
        try {
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static Connection getConnection(){
        Connection connection  = null;
        try {
            //Class.forName(DRIVER);
            connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return connection;
    }
    public static void close(Connection connection,PreparedStatement pstmt,ResultSet resultSet){
        try {

            if(resultSet!=null){
                resultSet.close();
            }

            if(pstmt!=null){
                pstmt.close();
            }
            if(connection!=null){
                connection.close();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


    /*
           将查询到的结果集转换成自定义类的对象,并存在在List中
    <T>声明此方法持有一个类型T,此方法为一个泛型方法
    Class<T> cla指明泛型T的具体类型
    params是一个Object类型的数组
     */
    public static <T> List<T> query(String sql, Class<T> cla, Object... params){
        Connection conn = DBUtil.getConnection();
        PreparedStatement ps = null;
        ResultSet rs = null;
        List<T> list = null;
        try{

            //预编译
            ps = conn.prepareStatement(sql);
            if(params != null){
                for(int i = 0; i < params.length; ++i){
                    //替换指定位置的占位符
                    ps.setObject(i+1, params[i]);
                }
            }
            //执行查询
            rs = ps.executeQuery();
            //获取描述结果集基础信息(列数、数据类型、字段)的meta元数据
            ResultSetMetaData rsd = rs.getMetaData();
            //返回值
            list = new ArrayList<T>();
            while (rs.next()){
                //实例化一个泛型类
                //T t = cla.newInstance();
                T t = cla.getDeclaredConstructor().newInstance(); // 创建对象
                for (int i = 0; i < rsd.getColumnCount(); ++i){
                    //获取列名,sql语句中有别名返回别名,否则返回值与getColumnName()方法相同
                    String columnName = rsd.getColumnLabel(i+1);
                    //根据列名取值
                    Object columnValue = rs.getObject(columnName);
                    //根据索引取值
                    //Object value = rs.getObject(i+1);
                    //根据列名获取属性
                    Field field;
                    field = cla.getDeclaredField(convertFormat(columnName));
                    //开启私有变量访问权限
                    field.setAccessible(true);
                    //给对象t的变量赋值
                    field.set(t, columnValue);
                }
                list.add(t);
            }
            return list;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }finally {
            // 关闭资源
            DBUtil.close(conn, ps, rs);
        }
    }

    //表中字段有可能有下划线,下划线命名转小驼峰命名
    public static String convertFormat(String source){
        String[] strings = source.split("_");
        StringBuffer sf = new StringBuffer(strings[0]);
        for(int i = 1; i < strings.length; ++i){
            sf.append(strings[i].substring(0,1).toUpperCase() + strings[i].substring(1));
        }
        return sf.toString();
    }


    /**
     * 对任意表的一个非查询
     *
     * @param sql
     * @param objects
     * @return
     */
    public static int update(String sql, Object... objects) {
        Connection conn = DBUtil.getConnection();
        PreparedStatement ps = null;
        int i = 0;
        try {
            // 预编译
            ps = conn.prepareStatement(sql);
            // 给sql赋值
            for (int j = 0; j < objects.length; j++) {
                ps.setObject(j + 1, objects[j]);
            }
            // 执行
            i = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            DBUtil.close(conn, ps, null);
        }
        return i;
    }

    public static void main(String[] args) {
        String sql="select * from room";
        List<Room> roomList=DBUtil.query(sql, Room.class);
        for(Room r:roomList){
            System.out.println(r);
        }
//        String sql1="delete from Room where roomid=?";
//        int i=DBUtil.update(sql1,4);
//        System.out.println(i);
    }
}





3.2 Tiempo real (DateUtil)

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtils {
    private DateUtils(){}//防止外界对象默认无参构造

    //将日期转化为指定格式的字符串(静态方法,用类名即可访问)
    public static String dateToString(Date date,String format){
        SimpleDateFormat s = new SimpleDateFormat(format);//指定格式对象创建
        String sb=s.format(date);//将传入的日转化为指定格式并转换为字符串
        return sb;
    }

    //将字符串解析为指定的日期格式
    public static Date stringToDate(String s,String format) throws ParseException {
        SimpleDateFormat dd=new SimpleDateFormat(format);
        Date d=dd.parse(s);//parse将指定的字符串解析为时间格式
        return d;
    }
}

4. Capa empresarial (capa de servidor)

4.1 Habitación (RoomContorller)

import com.keshe.dao.RoomDao;
import com.keshe.domain.Room;

import java.util.List;

public class RoomContorller {

    //显示房间信息至table
    public String[][] showALL() {
        RoomDao rd = new RoomDao();
        List<Room> allRoom = rd.select();
        String table[][] = new String[allRoom.size()][8];
        for (int i = 0; i < allRoom.size(); i++) {
            table[i][0] = allRoom.get(i).getRoomid();
            table[i][1] = allRoom.get(i).getHousename();
            table[i][2] = allRoom.get(i).getHomeloc();
            table[i][3] = Integer.toString(allRoom.get(i).getHousecoast());
            table[i][4] = allRoom.get(i).getHousesnull();
            table[i][5] = allRoom.get(i).getHousesclean();
            table[i][6] = allRoom.get(i).gethousesdesc();
            table[i][7] = null;
        }
        return table;
    }

    //添加客房信息
    public int addRoom(String roomid, String housename, String homeloc, int housecoast, String housesnull, String housesclean, String housesdesc) {
        String coast = Integer.toString(housecoast);
        int count = 0;
        if (roomid.equals("") || housename.equals("") || homeloc.equals("") || coast.equals("") || housesnull.equals("") || housesclean.equals("") || housesdesc.equals("")) {
            count = -1;
        }
        Room rm = new Room(roomid, housename, homeloc, housecoast, housesnull, housesclean, housesdesc);
        RoomDao rc = new RoomDao();
        count = rc.insert(rm);//调用数据库
        return count;
    }

    //查询客房信息(根据房间类型)
    public String[][] selectName(String name) {
        RoomDao rd = new RoomDao();
        List<Room> allRoom = rd.selectName(name);
        String table[][] = new String[allRoom.size()][8];
        for (int i = 0; i < allRoom.size(); i++) {
            table[i][0] = allRoom.get(i).getRoomid();
            table[i][1] = allRoom.get(i).getHousename();
            table[i][2] = allRoom.get(i).getHomeloc();
            table[i][3] = Integer.toString(allRoom.get(i).getHousecoast());
            table[i][4] = allRoom.get(i).getHousesnull();
            table[i][5] = allRoom.get(i).getHousesclean();
            table[i][6] = allRoom.get(i).gethousesdesc();
            table[i][7] = null;
        }
        System.out.println("房间类型查询成功!");
        return table;
    }

    //查询客房信息(根据编号类型)
    public String[][] selectId(String id) {
        RoomDao rd = new RoomDao();
        List<Room> allRoom = rd.selectId(id);
        String table[][] = new String[allRoom.size()][8];
        for (int i = 0; i < allRoom.size(); i++) {
            table[i][0] = allRoom.get(i).getRoomid();
            table[i][1] = allRoom.get(i).getHousename();
            table[i][2] = allRoom.get(i).getHomeloc();
            table[i][3] = Integer.toString(allRoom.get(i).getHousecoast());
            table[i][4] = allRoom.get(i).getHousesnull();
            table[i][5] = allRoom.get(i).getHousesclean();
            table[i][6] = allRoom.get(i).gethousesdesc();
            table[i][7] = null;
        }
        System.out.println("编号查询成功!");
        return table;
    }

    //修改客房信息
    public int updateRoom(String id, String housename, String homeloc, int housecoast, String housesnull, String housesclean, String housesdesc) {

        RoomDao rd = new RoomDao();
        String coast = Integer.toString(housecoast);
        int count = 0;
        if (id.equals("") || housename.equals("") || homeloc.equals("") || coast.equals("") || housesnull.equals("") || housesclean.equals("") || housesdesc.equals("")) {
            count = -1;
            return count;
        }
        count = rd.update(id, housename, homeloc, housecoast, housesnull, housesclean, housesdesc);
        return count;
    }
    //删除客房
    public int deleteRoom(String id){
        RoomDao rd=new RoomDao();
        int count=0;
        if(id.equals("")){
            count=-1;
            return count;
        }
        count=rd.delete(id);
        return count;
    }
}

4.2 Pasajero (RoomInContorller)

import java.util.Date;
import java.util.List;

import com.keshe.dao.RoomDao;
import com.keshe.dao.RoomInDao;
import com.keshe.domain.Room;
import com.keshe.domain.RoomIn;
import com.keshe.util.DateUtils;


public class RoomInContorller {


    //获取时间
    public RoomInContorller() {
    }

    public String getTime() {
        Date d = new Date();
        String time = DateUtils.dateToString(d, "yyyy-MM-dd HH:mm:ss");
        return time;
    }

    //显示入住信息至table
    public String[][] showALL() {
        RoomInDao ri = new RoomInDao();
        List<RoomIn> allRoomIn = ri.select();
        String table[][] = new String[allRoomIn.size()][6];
        for (int i = 0; i < allRoomIn.size(); i++) {
            table[i][1] = allRoomIn.get(i).getUsername();
            table[i][2] = allRoomIn.get(i).getIdcard();
            table[i][0] = allRoomIn.get(i).getRoomId();
            table[i][3] = allRoomIn.get(i).getDatain();
            table[i][4] = allRoomIn.get(i).getDataout();
            table[i][5] = Integer.toString(allRoomIn.get(i).getdataNum());
        }
        return table;
    }

    //新旅客入住信息输入
    public int insertRoomIn(String roomid, String username, String idcard, int dataNum) {
        int count = 0;
        if (roomid.equals("") || username.equals("") || idcard.equals("") || dataNum == 0) {
            count = -1;
        }
        //在客房表中查询是否有该客房
        RoomDao rd = new RoomDao();
        List<Room> room = rd.select();
        for (int i = 0; i < room.size(); i++) {
            if (room.get(i).getRoomid().equals(roomid)) {
                if (room.get(i).getHousesnull().equals("是")) {
                    String datain = getTime();
                    String dataout = "暂未退房";
                    RoomIn r = new RoomIn(username, idcard, roomid, datain, dataout, dataNum);
                    RoomInDao ri = new RoomInDao();
                    count = ri.insert(r);//调用数据库
                    int test = rd.updateId(roomid, "否");
                    if (test != 0) {
                        System.out.println("修改客房状态成功!");
                    }
                    return count;
                }else{
                    System.out.println("该客房已被占用!");
                    return -2;
                }
            }
        }
        System.out.println("客房中无该客房信息,不可入住");
        return count;
    }

    //旅客退房
    public int updateRoomInNull(String idcard) {
        RoomInDao ri = new RoomInDao();
        List<RoomIn> allRoomIn = ri.select();
        int count = 0;
        if (idcard.equals("")) {
            System.out.println("输入数据后再搜索!");
            return -1;
        }
        for (int i = 0; i < allRoomIn.size(); i++) {
            if ((allRoomIn.get(i).getIdcard()).equals(idcard)) {
                String dateout = getTime();
                count = ri.updateDateout(dateout, idcard);
                RoomDao rd = new RoomDao();
                int test = rd.updateId(allRoomIn.get(0).getRoomId(), "是");
                if (test != 0) {
                    System.out.println("修改客房状态成功!");
                } else {
                    System.out.println("修改客房状态失败");
                }
                return count;//退房办理成功
            }
        }
        return count;
    }
}

4.3 Administrador (UserContorller)

import com.keshe.dao.UserDao;
import com.keshe.domain.User;

import java.util.List;

public class UserContorller {
    //注册功能
    public int login(String id, String password) {
        if (id.equals("") || password.equals("")) {
            return 0;
        }
        //查验账号是否存在
        UserDao us = new UserDao();
        List<User> list = us.selectId(id);//查询数据库中是否有该账号
        System.out.println("用户名:" + id + "\n密码:" + password);
        if (list.size() == 0) {
            //账号不存在
            User user = new User(id, password);
            int i = us.insertUSer(user);
            if (i == 1) {
                System.out.println("注册成功");
                return 1;
            } else {
                System.out.println("注册失败");
                return -1;
            }
        } else {
            System.out.println("账号已存在");
            return -2;
        }
    }

    //登录
    public int login_in(String id, String password) {
        UserDao us = new UserDao();
        List<User> list = us.selectId(id);//查询数据库中是否有该账号
        System.out.println("用户名:" + id + "\n密码:" + password);
        if (id.equals("") || password.equals("")) {
            return 0;
        }
        if (list.size() == 0) {
            System.out.println("当前无该账号,请先注册");
        } else {
            User user = list.get(0);
            if (user.getPassword().equals(password)) {
                System.out.println("登录成功");
                return 1;
            } else {
                System.out.println("登录失败");
                return -1;
            }
        }
        return -1;
    }

    //修改密码
    public int updatePassword(String id,String olePassword,String newPassword){
        UserDao us=new UserDao();
        int count=0;
        List<User> user= us.selectId(id);
        if(id.equals("")||olePassword.equals("")||newPassword.equals("")){
            return -2;
        }
        if(user.size()==0){
            return -3;
        }
        if(user.get(0).getPassword().equals(olePassword)){
            count=us.updateUser(id,newPassword);
            return count;
        }else{
            System.out.println("原密码错误");
            return -1;
        }
    }
}

5. Capa de visualización de datos (capa JSP)

此处代码过多,需要者联系博主私发~~~~~

6. Capa de prueba (prueba)

import com.keshe.jsp.Login;

public class test {
    public static void main(String[] args) {
        new Login().setVisible(true);
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_61544409/article/details/126046459
Recomendado
Clasificación