文章目录
- 1、简要介绍
- 2、数据库设计
- 3、中间遇到的困难
- 一、数据问题
- 二、文件问题
- 4、项目
写了将近3周,人都写麻了
记录下,第一个 ss 代码
仅仅使用了layui
作为前端UI框架,因为另一个项目用的也是他,感觉一些组件比较好用
后端是java
没用框架
数据库是Mysql 8.0.34
Tomcat 9.0.84
项目地址:gitee中的位置
或者复制:https://gitee.com/one-and-one-fourth/Accommodation-management-system
1、简要介绍
分为用户端和管理端,用户端
只能预约和取消预约,管理端
有增删改查等一系列千篇一律的功能,整体布局采用layui
中的布局和风格
用户端的页面:
显然的,分页工能也是完美实现了,双击点开想要预约的楼即可看到可以预约的房间信息,同样的双击即可预约
管理端页面:
2、数据库设计
设计的不好,能凑合这用>_<
,在这里算是给自己埋下了一颗雷
数据库的问题,也算是导致本项目草草结束的一大原因
设计的数据库如下:
院子(院子编号,院子名称,负责人编号)
楼(楼编号,楼名称,楼负责人编号 )
院子和楼(院子编号,楼编号)
楼层(楼层编号,第几层,楼编号,楼层的负责人编号 )
房间(房间编号,楼层编号,应住的人数,实住的人数)
管理人员(管理人员编号,身份证号,管理人名字,性别,联系方式,管理的权限(院子 ,楼,楼层),密码 )
住宿人( 身份证号,名字,性别,联系方式,房间编号 ,密码,是否为管理员(0,1))
在使用的时候,也是一边用一边补,主打一个拆东墙补西墙 ,后来也是给自己搞得十分的难受
SQL代码如下:
create table courtyard(
cid int(5) auto_increment primary key,
cname varchar(255),
mid int(5)
)DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
create table building(
bid int(5) auto_increment primary key,
bname varchar(255),
mid int(5)
)DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
create table buildANDcourty(
bid int(5) primary key ,
cid int(5) not null,
foreign key (cid) references courtyard(cid) on delete cascade,
foreign key (bid) references building(bid) on delete cascade
)DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
create table floor(
fid int(5) primary key,
fCeng int not null,
bid int(5) not null,
mid int(5),
foreign key (bid) references building(bid) on delete cascade
)DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
create table room(
rid int(5) primary key,
fid int(5) not null,
numb1 int(5),
numb2 int(5),
foreign key (fid) references floor(fid) on delete cascade
)DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
create table manage(
mid int(5) auto_increment primary key,
idNumber varchar(255),
mname varchar(255) not null,
msex varchar(255),
mtel varchar(255),
mlevel int(1),
mpassword varchar(255) not null
)DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
create table stay(
idNumber varchar(255) primary key,
sname varchar(255) not null,
ssex varchar(255),
stel varchar(255),
rid int(5),
spassword varchar(255) not null,
srole int(1)
)DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3、中间遇到的困难
一、数据问题
1、 后端返回数据的问题,必须为json
格式,这个直接引入jackson
这一系列jar
包,使用的时候也是很简单
2、 同样的也是后端返回数据的问题,但是这个是实体类,通过json
返回时会丢失部分属性,查找了很多的解决方法后,发现了是该属性的getter setter
方法的名字出现了问题
class Student{
private int bid;
private String bName;//注意这里
...
public String getbName(){ // 通过idea自动生成的会是这样子
return this.bName;
}
}
正是因为这个自动生成的函数名字不符合 大驼峰命名 ,因此在使用json
格式化的时候,它内置的方法无法获取该属性,导致数据丢失。
我们只需要将该属性的getter setter
方法的函数名字第一个字符设为大写,即可解决,但是,这样的话,变量的名字第一个字母也会变为大写,不过,权衡解决方法,果断将前端该字段进行调整。
分析下来,如果通过json
格式化的实体类的属性只返回了部分,查看该属性的getter setter
方法的名字第一个字母是否是大写 ,第一个字母指的是set get
后面的,比如本例中的getbName()
,第一个字母便是bName()
的第一个b
,修正为getBName()
即可
通过这样看来,通过此方法也可能成为返回部分数据的一种方式
二、文件问题
1、 在使用的过程,为了实现动态的修改来解决频繁修正问题,将一个页面简单的分为了head body footer
三部分,那么,对于一些js
文件的引入肯定是放在footer
中的,但是,在body
中也是会通过一些手写的js
来实现对页面的渲染,那么,问题来了,手写的js
肯定是要放在使用的js
库的下面,如果在body
中在此添加一个相同的js
库,会导致一些bug
因此,不要在一个页面中使用两个及以上的相同js
文件
4、项目
部分文件位置,显而易见的十分麻烦