一、高校教材管理系统简述:
系统采用java语言设计,本系统主要以web的三层架构模式来划分,系统的项目环境包括Maven依赖包管理环境,JDK开发环境,存储数据的mysql数据库环境,项目运行的Tomcat服务器运行环境等。下载相应软件,在电脑上安装并配置相应变量。其中在设计系统过程中,所采用的集成开发编程软件是Intelij IDEA,该软件具有强大的集成功能,如支持maven、spring等,而且还具有提示功能,快速便捷等优点,能够很大程度上提高系统开发效率。另外,为了简化数据库信息的管理和查看,安装Navicat对数据库进行可视化管理。整个系统开发环境的准备基本完成。系统开发环境准备完成后,开始搭建项目开发环境,本系统采用的技术是SpringBoot+Mybatis的框架技术,并且使用Maven来管理依赖的jar包。Maven的安装可以通过去官网下载,也可以通过Intelij IDEA提供的Maven插件。创建Maven项目,根据项目开发需要的依赖jar包,在Maven的配置文件pom.xml添加对应的依赖java语句,利用Maven可以动态的来管理项目的依赖jar包。其次,创建配置文件application.properties和yml文件,可以在配置文件中配置连接数据库和打印日志的语句,mapper映射文件路径等。之后,根据系统开发的设计思想Spring MVC的三层架构,在src/main/java目录下分别创建三层架构对应的的package,包括Service服务层包,Pojo实体类包,Dao数据库接口层包,Controller控制层包等。综上,系统开发环境,项目环境搭建以及框架整合基本完成。项目的结构如图

二.、功能划分:
根据用户角色分为四种分别是教务处(管理者),教师,学生,商家。
(1)教务处:用户信息管理,教材信息管理,教材发布,审批,订购,教材库存管理,领取管理,选择教材管理,教材开放管理,通知管理。
(2)教师:教材发布,选择教材,领取教材,教材缴费,发布通知
(3)学生:选择教材,教材缴费,领取教材,查看通知
(4)商家:确认订单,教材订单发货
(5)公共功能模块:登陆,个人信息管理

三、采用的技术:
后端使用SpringBoot+Mybatis技术,前端使用Thymleaf的模板渲染,数据交互使用boostrap+Jquer技术。

四、数据库表设计
(1)用户表(4张)分别存储教务处,教师,学生,商家
(2)教材信息表(1张)
(3)教材库存信息表(1张)
(4)教材订购信息表(2张)分别存储订购人信息,订购的教材信息
(5)选择教材信息(2张)分别存储选择人信息,选择的教材信息
(6)领取教材信息(2张)分别存储领取人信息,领取的教材信息
(7)通知信息表(3张)分别存储通知信息,发送人,接收人

五、功能界面(部分):
(1)系统主界面图:

(2)用户信息管理页面

(3)教材信息管理页面
六、开发过程中遇到的问题以及注意事项:
(1)数据库字段类型为Datetime对应的实体类型为Date,是坑。
(2)前端这种跳转页面携带参数的方法:window.location.href=’/adm/main?user_id=’+user_id+"&urole="+urole+"&udept="+udept+"&uname="+uname;
(3)SpringBoot传递参数给Thymeleaf模板,使用ModelMap,在ModelMap对象必须为该方法的参数,这是个坑

Model,ModelMap,MoelAndView的使用
public String main( String user_id,String urole,String dept,String uname,ModelMap model )

(3)Thymeleaf前端模板使用要在html开头写明:

html  lang="zh" xmlns:th="http://www.thymeleaf.org"xmlns="http://www.w3.org/1999/xhtml">

Idea会对于静态文件的标签报错的,但不影响运行结果
(4)请求发分页参数的获取
使用Boostrap的分页,后端接收参数方法:

  ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();int pageNum=  attributes.getRequest().getParameter("pageNum");int pageSize= attributes.getRequest().getParameter("pageSize");

(5)Mapper.xml中的参数设置问题,id为整形,utelep为String,可用实体类作参数

 <select id="selectEditCheckUtelepUnique" parameterType="com.yang.wang.pojo.YuserPojo" resultType="int">SELECTCOUNT(*)FROM yuserWHERE id=#{id} and utelep=#{utelep,jdbcType=VARCHAR}</select>

(6)获取URl中的参数使用@PathVariable注解

@RequestMapping("/adm/system/user/edit/{id}")public String AdmEditView(@PathVariable("id") Integer id, ModelMap modelMap){System.out.println("跳转到修改用户页面—————————————");YuserPojo yuserPojo=userService.selectByUserId(id);modelMap.put("user",yuserPojo);return "system/user/edit";}

(7)js动态为input赋值

$('#urole').val('0');

(8)前端传递的json格式参数

var datas=JSON.stringify({"id":id}

(9)比较日期大小(2020-3-12这种格式的)
有个坑2020-3-12和2020-03-12比较起来是不一样的

var trtime = new Date(Date.parse($("input[name='trtime']").val()));
var tctime = new Date(Date.parse($("input[name='tctime']").val()));var date=new Date();
var year=date.getFullYear();
var month=date.getMonth()+1;
if(month<10){month="0"+month
}
var day=date.getDate();
var nowdate =year+"-"+month+"-"+day
var systemdate=new Date(Date.parse(nowdate));console.log(trtime,tctime,systemdate)
if(systemdate>=trtime&&systemdate>=tctime){return true;
}else{return false;
}

(10)Boostrap-table中自定义的ajax请求

$.ajax({cache : true,type : "POST",contentType : " application/json;charset=UTF-8",//必须url :"system/ylbook/remove",data : datas,async : false,error : function(request) {$.modal.alertError("系统错误");},success : function(data) {$.operate.successCallback(data);}
});

(11)删除语句Mybati的血坑啊

(12)判断list类型是否为空用list.isEmpty()方法
(13)input值改变时触发函数,和自动计算金额值

(14)删除时传递的参数为String的bno,String[]的bmno,Mybatis的写法
Mapper文件传递的参数可以为List,Map,Array等类型
foreach循环

<delete id="deleteByBmnoAndBno" parameterType="java.util.List">delete FROM ylbookdetails WHERE bno= #{list[0]} and bmno in<foreach collection="list" item="bmno" open="(" separator="," close=")" >#{bmno}</foreach>
</delete>

Service层写法:

public int removeYlbookdetails(String bno,String bmno) {String[] aaa = bmno.split(",");List<String> a=new ArrayList<>();a.add(bno);for(int i=0;i<aaa.length;i++){a.add(aaa[i]);}System.out.println(a.get(0));// return ylbookDao.deleteByBmnoAndBno(bno,aaa);return ylbookDao.deleteByBmnoAndBno(a);
}

(15)boostraptable获取勾选选项值的方法:

  var rows = $("#bootstrap-table").bootstrapTable('getSelections')//获取table中所有的值var allTableData = $('#bootstrap-table1').bootstrapTable('getData');

(16)th:href携带多个参数的方法

带一个参数:
<a th:href="@{/sign/details(signId=${t.signId})}" ></a>带两个参数:
<a th:href="@{/mobileSign/signDetails(id=${id},name=${name})}"></a>

(17)使用ajax请求之后是跳转不了的(注意)
(18)mybatis 3.3.0中对于时间参数进行比较时的一个bug. 如果拿传入的时间类型参数与空字符串’'进行对比判断则会引发异常. 所以在上面的代码中去该该判断, 只保留非空判断就正常了.

<if test="otime!=null">otime = #{otime,jdbcType=DATE},
</if>

七、开发感悟
(1)心细,容易由于一个小小的错误而花费比较长时间,代码打得不够多,经验少(比如mapper文件参数漏了个逗号,#{}分开了多个逗号.)
(2)易混乱,容易搞乱代码直接的逻辑关系什么的
(3)遇到问题,先思考,能找到原因的并解决,不能找到原因的百度并解决,解决完后该如何总结记录
(4)学会有Bug如何调试

八、参考学习:

Jqurey的检验:

https://www.cnblogs.com/ada-zheng/p/3875773.html

BooStrap-table:

https://www.cnblogs.com/laowangc/p/8875526.html

声明:如有侵权,请联系博主删除,谢谢!!!

基于javaweb高校教材管理系统的设计与实现相关推荐

  1. 高校教材管理系统mysql_高校教材管理系统的设计与实现

    内容介绍 原文档由会员 莎士比亚 发布 论文资源标准WORD格式排版共 53页 10921字 摘 要 本论文通过对高校教材管理的学习和研究,提出了高校教材管理系统的设计与实现.在实现过程中,深入考虑了 ...

  2. 高校教材管理系统mysql_高校教材管理系统的设计与实现(PHP,MySQL)(含录像)

    高校教材管理系统的设计与实现(,MySQL)(含录像)(毕业论文15000字,程序代码,MySQL数据库) The Design And Realization ofThe Teaching mate ...

  3. 基于javaweb敬老院/养老院管理系统的设计和实现

    <javaweb基于Java的敬老院管理系统的设计和实现>该项目采用技术jsp.servlet.jdbc.tomcat服务器.mysql数据库 ,项目含有源码.论文.配套开发软件.软件安装 ...

  4. 酒店管理系统/基于ssm的酒店管理系统/基于javaweb的酒店管理系统的设计与实现

    摘  要 酒店管理系统采用B/S模式,促进了酒店管理的安全.高效.快捷的发展.传统的管理模式还处于手工处理阶段,管理效率极低,随着用户的不断增多,传统基于手工管理模式已经无法满足当前用户需求,随着信息 ...

  5. 基于java web的图书馆_基于Java-Web的图书管理系统的设计与实现.doc

    题 目 基于Java Web的图书管理 系统的设计与实现 指导老师 ****** 专业班级 姓 名 ******* 学 号 ***** 年 月*日 第 PAGE \* MERGEFORMAT 0 页 ...

  6. 基于JavaWeb的物流管理系统网站设计

    目录 1. 绪论 1 1.1设计背景 1 1.2设计意义 1 1.3设计思路 1 2. 需求分析 2 2.1 需求描述 2 2.2 用例建模 2 2.2.1人事信息管理 2 2.2.2货物信息管理 3 ...

  7. java毕业设计成品源码网站基于javaWeb停车场车辆管理系统的设计与实现|车位

  8. Java基于JSP的高校教材管理系统

    随着科学技术的发展,社会进步,计算机迅速的发展,教材征订管理的方法也日新月异,以前全是由人工管理的方法现存在很多的缺点:管理效率低,劳动强度大,信息处理速度低而且准确率也不够令人满意.为了提高教材征订 ...

  9. [附源码]Java计算机毕业设计SSM高校教材管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

最新文章

  1. 构造方法前可以用public修饰吗_程序员,你连反射都不会,还敢说自己会Java吗?...
  2. python爬取音乐神器_Python爬虫提取神器,正则表达式(re模块),全程干货!
  3. 变形版汉诺塔:LeetCode:70爬楼梯
  4. 深度学习入门必须理解这25个概念
  5. zwpython_零起点Python大数据与量化交易
  6. hadoop源码分析_Spark2.x精通:Job触发流程源码深度剖析(一)
  7. [你必须知道的.NET]第二十八回:说说Name这回事儿
  8. Jsp中Uploadify插件的使用(jQuery上传插件)
  9. 如何在Mac OS X 10.6.4上卸载Python 2.7?
  10. mysql pmm安装_PMM 安装部署
  11. 奥城大学计算机专业,美国研究生双录取大学有哪些?
  12. 计算机03年word做母亲节贺卡,word2007怎样制作电子母亲节贺卡
  13. C语言输入10名同学3门课,输入10个学生3门课的成绩,统计各科全部及格的人数(c语音)...
  14. 遥感数据网站整理中......
  15. 【“盛大游戏杯”第15届上海大学程序设计联赛 K】【贪心】购买装备
  16. 第41课:Checkpoint彻底解密:Checkpoint的运行原理和源码实现彻底详解
  17. 服务器系统能装打印机吗,现在云服务器怎么安装打印机
  18. 增强型脉冲宽度调制模块(ePWM)图解
  19. 软件架构师 第一部分 基础篇 第四章 识别架构特性
  20. Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspectivewith Transformers

热门文章

  1. C# Microsoft.Office.Interop.Owc11 导出excel文件
  2. 吕聪贤SwiSHmax中文视频教程打包下载(连接已失效)
  3. leetcode142之寻找环形链表的环的起点
  4. LM324的运放芯片的放大电路(四运放)运算-简单理解
  5. ajax上传文件一直报404
  6. 神舟 mini pc Android,神舟四核mini PC不仅仅是小巧
  7. 超实用!手把手教你如何将废旧的 Android 手机改造成一个好用的 Linux 服务器!...
  8. sklearn聚类之谱聚类SpectralClustering
  9. linux pjsip 编译_Linux下移植pjsip使用QT开发
  10. 没有最好只有更好,本届云栖大会的无线网络如何创造奇迹?