CREATE TABLE user
(
id
int(11) NOT NULL auto_increment COMMENT ‘主键’,
no
varchar(20) default NULL COMMENT ‘账号-学生一般用学号’,
name
varchar(100) not NULL COMMENT ‘名字’,
password
varchar(20) not NULL COMMENT ‘密码’,
sex
varchar(20) default NULL COMMENT ‘性别’,
phone
varchar(20) default NULL COMMENT ‘电话’,
role_id
int(11) default NULL COMMENT ‘角色 0超级管理员,1管理员,2老师,3学生’,
isValid
varchar(4) default ‘Y’ COMMENT ‘是否有效,Y有效,其他无效’,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
默认插入超级管理员数据
INSERT INTO user
VALUES (‘1’, ‘sa’, ‘超级管理’, ‘321’, ‘1’, ‘111’, ‘0’, ‘Y’);
菜单表
CREATE TABLE menu
(
id
int(11) NOT NULL,
menuCode
varchar(8) default NULL COMMENT ‘菜单编码’,
menuName
varchar(16) default NULL COMMENT ‘菜单名字’,
menuLevel
varchar(2) default NULL COMMENT ‘菜单级别’,
menuParentCode
varchar(8) default NULL COMMENT ‘菜单的父code’,
menuClick
varchar(16) default NULL COMMENT ‘点击触发的函数’,
menuRight
varchar(8) default NULL COMMENT ‘权限3表示学生,2表示老师,1表示管理员,0超级管理员,可以用逗号组合使用’,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
默认插入的数据(建议一行行的插入,反正我的mysql一条条的弄,不然后面的中文会乱码)
NSERT INTO menu
VALUES (‘1’, ‘001’, ‘管理员管理’, ‘1’, null, ‘adminManage’, ‘0’);
INSERT INTO menu
VALUES (‘2’, ‘002’, ‘教师/学生管理’, ‘1’, null, ‘userManage’, ‘0,1’);
INSERT INTO menu
VALUES (‘3’, ‘003’, ‘分类管理’, ‘1’, null, ‘categoryManage’, ‘0,1’);
INSERT INTO menu
VALUES (‘4’, ‘004’, ‘图书管理’, ‘1’, null, ‘booksManage’, ‘0,1,2,3’);
INSERT INTO menu
VALUES (‘5’, ‘005’, ‘借阅信息管理’, ‘1’, null, ‘recordManage’, ‘0,1,2,3’);
INSERT INTO menu
VALUES (‘6’, ‘006’, ‘修改密码’, ‘1’, null, ‘modPwd’, ‘0,1,2,3’);
INSERT INTO menu
VALUES (‘7’, ‘007’, ‘退出系统’, ‘1’, null, ‘logout’, ‘0,1,2,3’);
分类信息表
CREATE TABLE category
(
id
int(11) NOT NULL auto_increment COMMENT ‘主键’,
name
varchar(100) not NULL COMMENT ‘分类名’,
remark
varchar(1000) default NULL COMMENT ‘备注’,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
图书表
CREATE TABLE books
(
id
int(11) NOT NULL auto_increment COMMENT ‘主键’,
name
varchar(100) not NULL COMMENT ‘书名’,
category
int(11) not NULL COMMENT ‘分类’,
count
int(11) default NULL COMMENT ‘数量’,
curCount
int(11) default NULL COMMENT ‘现存数量’,
remark
varchar(1000) default NULL COMMENT ‘备注’,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
借阅信息表
CREATE TABLE record
(
id
int(11) NOT NULL auto_increment COMMENT ‘主键’,
book
int(11) not NULL COMMENT ‘书id’,
userId
int(11) not NULL COMMENT ‘借阅人’,
start_date
date default NULL COMMENT ‘开始日期’,
end_date
date default NULL COMMENT ‘结束日期’,
return_date
date default NULL COMMENT ‘归还日期’,
state
int(1) not NULL COMMENT ‘状态:1 借阅 2 归还 3 续借’,
admin_id
int(11) default NULL COMMENT ‘操作人id’,
remark
varchar(1000) default NULL COMMENT ‘备注’,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
===================================================================
超级管理员才有的权限,可以增加、修改、删除系统管理员。
管理员和超管都可以操作,新增、修改、删除等操作。
1.管理员和超管新增的默认是激活状态。
2.教师和学生注册申请过来的,需要管理员激活(也就是账号审核功能)。
管理员和超管都可以操作,新增、修改、删除等操作。
管理员和超管都可以操作,新增、修改、删除、借阅等操作。
学生/教师 仅仅有查看图书功能
借阅操作是在此界面进行操作的,选择书本后进行借阅操作
1.借阅人需要选择
2.数量现在默认是1
3.需选择归还日期
选择借阅人界面
管理员和超管都可以操作,归还、续借等操作。
学生/教师 仅仅只能查看自己的借阅信息
续借和归还也只能由管理员来操作
=================================================================
java文件
页面
后端分层
=================================================================
借阅信息查询
public Map queryByPage(RecordVO vo, int start, int pageSize)
{
String status=“-1”;
String content=“”;
Map retMap = new HashMap();
try
{
String sqlStrCount = "select count(1) from Record a,books b,user c where 1=1 and a.book=b.id and c.id=a.userId ";
String sqlStr = “select a.*,b.name bookName,c.name userName,” +
" (select name from user c where c.id=a.admin_id) admin_name from Record a,books b,user c where 1=1 and a.book=b.id and c.id=a.userId ";
String bookName = vo.getBookName();
if(!“”.equals(bookName)){
sqlStrCount +=" and b.name like’%“+bookName+”%'";
sqlStr +=" and b.name like’%“+bookName+”%'";
}
String userName = vo.getUserName();
if(!“”.equals(userName)){
sqlStrCount +=" and c.name like’%“+userName+”%'";
sqlStr +=" and c.name like’%“+userName+”%'";
}
Timestamp date =vo.getStart_date();
if(date!=null){
sqlStrCount +=" and a.start_date=‘“+date+”’";
sqlStr +=" and a.start_date=‘“+date+”’";
}
String userId = StringHelper.convertStringNull(vo.getUserId());
if(!“”.equals(userId)){
sqlStrCount +=" and a.userid=‘“+userId+”’";
sqlStr +=" and a.userid=‘“+userId+”’";
}
sqlStr +="order by a.id limit “+start+”, "+pageSize ;
ps = this.getWrappedConnection().prepareStatement(sqlStrCount);
rs = ps.executeQuery();
int totalCount=0;
if (rs.next())
{
totalCount = rs.getInt(1);
}
retMap.put(“totalCount”, String.valueOf(totalCount));
rs=null;
ps = this.getWrappedConnection().prepareStatement(sqlStr);
rs = ps.executeQuery();
List list = new ArrayList();
RecordVO recordVO = null;
while (rs.next())
{
recordVO = new RecordVO();
recordVO.setId(rs.getString(“id”));
recordVO.setBook(rs.getString(“book”));
recordVO.setBookName(rs.getString(“bookName”));
recordVO.setUserId(rs.getString(“userId”));
recordVO.setUserName(rs.getString(“userName”));
recordVO.setStart_date(rs.getTimestamp(“start_date”));
recordVO.setEnd_date(rs.getTimestamp(“end_date”));
recordVO.setReturn_date(rs.getTimestamp(“return_date”));
recordVO.setState(rs.getString(“state”));
recordVO.setAdmin_id(rs.getString(“admin_id”));
recordVO.setAdmin_name(rs.getString(“admin_name”));
recordVO.setRemark(rs.getString(“remark”));
list.add(recordVO);
}
retMap.put(“list”, list);
status=“1”;
}
catch (Exception e)
{
e.printStackTrace();
}finally{
try
{
this.cleanUp();
}
catch (Exception e)
{
e.printStackTrace();
}
}
面试结束复盘查漏补缺
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
更多笔记分享
;
}
catch (Exception e)
{
e.printStackTrace();
}finally{
try
{
this.cleanUp();
}
catch (Exception e)
{
e.printStackTrace();
}
}
面试结束复盘查漏补缺
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
[外链图片转存中…(img-JA15J9H4-1719264078234)]
[外链图片转存中…(img-zQR58Ydp-1719264078235)]
更多笔记分享
[外链图片转存中…(img-J49kKk8n-1719264078236)]