Java Web开发实验课设大作业:实验室设备管理系统、图书管理系统

实验资源、课设报告和源码请加QQ:2309636835

 一  实验目的

通过联合使用本学期所学理论知识,进一步掌握和理解MVC模型结构,并掌握常用实用开发技术的用法。

二  实验内容与要求

实现基于springMVC的实验室设备管理系统。

2.1 整体结构需求

实验室设备管理系统分为用户模式(即前台端)和管理员模式(即后台端),网站采取会员制,即登录后才能查看内容,故查看网页除登录、注册页外内容均需进行登录验证(用过滤器实现)。无账号用户可以由用户登录页进入注册页注册,管理员只能大后端添加,无法注册。

用户模式(即前台端)可以根据设备名称、分类和厂家查询设备并外借设备,用户可以查看个人信息,用户还可以查看本人目前的在借设备并进行归还。在用户进行外借和归还操作后,设备信息中设备余量和设备外借数量要能进行相应的变化。

管理员模式(即后台端)可以进行设备管理、外借管理和用户管理。设备管理可以查看、修改、增加设备信息。外借管理可以查看所有用户的外借信息,其中包括已归还的设备的外借信息。用户管理可以查看所有用户的个人信息。

2.2 环境需求

CSS框架:bootstrap

所用设计模式: SpringMVC

语言: Java + HTML

数据库: MySQL

Web服务器: Tomcat

Action: Controller

View: Jsp

2.3 用户模式需求

......

2.4 管理员模式需求

......

三  实现思想及程序说明

3.1 系统总体结构设计

......

3.3.1 用户注册功能

用户在首页点击注册,进入UserRegister.jsp页面,输入相应信息后点击注册发起user/userRegister请求,交由UserController.java处理,注册成功后也可以进入系统。对于用户头像的存储,这里使用的方法是在数据库中存储图像的文件名,并将用户头像图像文件上传至服务器路径:Tomcat7.0\webapps\Library\Avatar下。

UserController.java实现用户注册功能的代码如下:

//用户注册请求 注册成功后跳转至main页面

@RequestMapping("/userRegister")

public String addUser(User user,HttpSession session,Model model,HttpServletRequest request) throws Exception{

//加入用户头像上传功能

System.out.println("接收前端==="+user);

//保存数据库的路径

String sqlPath = null;

//定义文件保存的本地路径

//String localPath="D:\\File\\";

String localPath = request.getServletContext().getRealPath("/Avatar");

//定义 文件名

String filename = null;

if(!user.getAvatar_file().isEmpty()){

//生成uuid作为文件名称

String uuid = UUID.randomUUID().toString().replaceAll("-", "");

//获得文件类型(可以判断如果不是图片 禁止上传)

String contentType = user.getAvatar_file().getContentType();

//获得文件后缀名

String suffixName = contentType.substring(contentType.indexOf("/")+1);

//获得 文件名

filename = uuid+"."+suffixName;

//文件保存路径

String path = "/AvatarImage" + filename;

user.getAvatar_file().transferTo(new File(localPath+path));

}

//把图片的相对路径保存到数据库

sqlPath = "AvatarImage"+filename;

System.out.println("用户传入头像的路径"+sqlPath);   //打印测试

user.setUser_avatar(sqlPath);

//添加新用户 至数据库

int count = userService.insertUser(user);

if(count > 0){

//插入成功

System.out.println("插入用户成功==="+user);

session.setAttribute("user_id", user.getUser_id());

model.addAttribute("user_name", user.getUser_name());

return "User/UserMain";

}

System.out.println("插入用户失败==="+user);

String errorMsg = "用户注册失败";

model.addAttribute("msg", errorMsg);

return "tip";

}

3.3.2 用户登录功能

用户在UserLogin.jsp页面输入账号以及密码发起user/userLogin请求,交由UserController.java进行处理。如果与数据库中的数据匹配成功,则用户登入成功进入页面jsp/User/UserMain.jsp

UserController.java实现用户登录功能的代码如下:

//用户登录请求

@RequestMapping("/userLogin")

public String userLogin(HttpSession session,int user_id,String user_password,Model model) throws Exception{

//根据传入的 id 和 密码 在数据库中进行查询

User user = userService.selectUserByIDPW(user_id, user_password);

if(user != null){

System.out.println("接收前端用户id==="+user_id);

session.setAttribute("user_id", user.getUser_id());

model.addAttribute("user_name", user.getUser_name());

return "User/UserMain";

}

String errorMsg = "用户登录失败";

model.addAttribute("msg", errorMsg);

return "tip";

}

3.3.3 显示个人信息

UserMain.jsp页面中设置超链接请求:<a href="user/userInfo" target="iframeMainRight">个人中心</a>,由UserController.java接收,并将查询结果返回至视图User/UserInfo.jsp

UserController.java显示个人信息的功能实现代码如下:

//用户请求账户详情信息

@RequestMapping("/userInfo")

public String userInfo(HttpSession session,Model model){

int user_id = (int)session.getAttribute("user_id");

User user = null;

user = userService.selectUserByID(user_id);

if(user != null){

System.out.println("查找到用户==="+user);

model.addAttribute("userInfo", user);

}

return "User/UserInfo";

}

3.3.4 设备查询功能

用户可以根据设备的名称、厂家、种类对设备信息进行查询。在UserAllBook.jsp页面设计三个查询框,分别用于输入名称、厂家、种类,产生请求交予BookController.java处理,控制器将查询的结果放在Model对象中再返回给UserAllBook.jsp页面用于显示。

UserAllBook.jsp主要代码如下:

<div class="search">

   <div class="SearchByName">

     <form class="form-search" action="book/selectBookByName" method="post">

   <input type="text" class="input-medium search-query" placeholder="输入查询设备的名称" name="book_name">

   <button type="submit" class="btn">Search</button>

</form>

</div>

<div class="SearchByType">

<form class="form-search" action="book/selectBookByType" method="post">

   <input type="text" class="input-medium search-query" placeholder="输入查询设备的类型" name="book_type">

   <button type="submit" class="btn">Search</button>

</form>

</div>

<div class="SearchByWriter">

<form class="form-search" action="book/selectBookByWriter" method="post">

   <input type="text" class="input-medium search-query" placeholder="输入查询设备的厂家" name="book_writer">

   <button type="submit" class="btn">Search</button>

</form>

</div>

  </div>

......

各类的属性和方法: 书籍(Book): 可以将借书还书的活动写成日志,记录到某个文件当中 private Integer id; // 书的id(主键、递增、唯一) private String name; // 书名 private String pos; // 书的位置 private String type; // 书的类型 private String info; // 书的简介 private Integer state; // 书籍状态可以使用单选框来限定 // 书的状态(0表示未被借出,1表示已被借出,2表示被续借,3表示逾期, 4表示丢失,5表示损毁,6表示其他情况) private String remark; // 书的备注 private Integer owner; // 借书的同学的id(还书之后为null) private String borrowBookDate; // 借书的时间(还书之后为null) private String returnBookDate; // 还书的时间(还书之后为null) // 书的总数量(???) 可以直接用SELECT * FROM table where state=0 然后统计list.size() 留言(Evaluation): private Integer evaluationId; // 该留言的id private Integer adminId; // 如果是管理员留言的话,管理员的id private Integer studentId; // 如果是学生留言的话,学生的id private Integer bookId; // 被留言的书的id private String message; // 留言的内容 学生(Student): private Integer id; private String number; private String username; private String password; private String tel; private String email; private Integer credit; // 信誉等级(通过调用不同的函数,根据信誉等级来置每个同学能借书和续借书的数量) private Integer bookCnt; // 每个月借的书的数量 private Integer bookRenewal; // 每个月能续借的书籍 private String bookId; // 不同的书的id之间使用,分割开 管理员(Admin): private Integer id; private String username; private String password; 登录逻辑: 用户登录之前: 到时候会将项目部署到我的服务器上面,所以会有一个公网IP(项目地址) 输入项目地址,进入index(初始页面): 页面用来展示介绍咱项目的具体内容和信息 并且提供学生的登录、注册以及管理员的注册按钮 (这里可以用别人现成的网页改一下) 学生注册页面: 输入用户的信息进行注册(这些内容都可使用正则表达式进行验证) 学号:必填、不可更改、不可重复(使用Ajax异步进行数据库的连接验证学号是否重复) 密码:长度限制 手机号:格式限制(可能需要发送验证码?) 邮箱:格式限制(可能需要发送验证码?) 最后可能需要验证码? 注册完成之后,Ajax验证注册是否成功 成功:提示用户成功,自动跳转到登录页面 失败:提示用户失败,还是在当前页面 与学生登录和管理员登录之间可以相互跳转(response完成重定向) 注册的时候不要以form表单的形式直接提交信息,要采用ajax,以json的形式,向后台提交信息。 学生登录页面: 登录信息:学号、密码登录 用cookie(加密)使十天内记住账号信息 (提示:为了您的信息安全,请不要在网吧或公用电脑上使用此功能!) 使用正则表达式验证账号密码是否符合条件 使用ajax在当前页面对与登录信息进行连接数据库的验证,验证登录的账号和密码是否正确 登录成功:用session来记录用户信息,跳转到学生个人菜单页面 登录失败:在本页面提示登录失败(用户名或密码错误) 然后就进入用户模块了 管理员登录页面: 登录信息:用户名、密码登录 使用正则表达式验证账号密码是否符合条件 使用ajax在当前页面对与登录信息进行连接数据库的验证,验证登录的账号和密码是否正确 登录成功:用session来记录用户信息,跳转到学生个人菜单页面 登录失败:在本页面提示登录失败(用户名或密码错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值