好久都没有这么累过了持续了大半个月的学期末阶段就这样结束了,期间经历了一个礼拜左右的时间去完成数据库课设,说是说数据库课设,但给人的感觉其实就是一个完整的网站开发项目,开始理一理
软件架构:B/S
开发环境:Win10+Eclipse J2EE+JSP+JavaBean+ apache-tomcat-8.0.48 +MySQL5.7.20
辅助工具:mysql-connector-java-5.1.45 +Navicat
源码包已上传至http://download.csdn.net/download/mikeoperfect/10214875
记录一下那周的情况:
2018年1月11日星期四 08点45分,员工账号这边已经完全解决了,09点40分,完成www.processon.com 员工登陆思维导图
开始root账号登陆设计。 已设置两个管理员账号
2018年1月12日星期五,08点46分,下周一有个信号与系统考试,有点烦,现在还有debittable和allowancetable两块有待设计。
2018年1月12日星期五,下午16点00分,基本完成了数据库的开发工作,当然啦,小问题依旧存在,急需要改善,17点00分:开始网站优化和项目总结
2018年1月13日星期六,正在复习信号与系统,项目搁置2天,星期一晚9点重新开始,需要做的内容有加急内容、数据库数据的生成、BUG的修复等等
2018年1月15日,20点26分,项目重新开始,项目BUG修复
----------------------------------------------
---------------------------------------------
-----------------------------------------------
--------------------------------------
-----------------------------------------
数据库设计问题
数据库的设计是关键问题,这直接影响到了后续的发展情况,一开始我们因为没有这方面的设计经验,所以不太清楚应该如何进行,到底该如何配合是我们最为头疼的地方,但随着项目的不断深入,,慢慢的发现原来是这么做 的,数据库的设计是很重要的,因为考虑到效率问题,最好的办法就是先将数据库的基本表确定下来,本来我们有10个表,后来发现有些多余,然后删减到6个表,但是后来又发现不太行,其中一些字段是无关字段,于是继续删减,最终形成了如上数据字典。
stafftable中的staffCode是主键,wagetable中的staffCode是外键,如果添加员工基本信息之后又添加了员工工资信息,则无法直接删除员工基本信息,因为有外键约束,因此只能先删除员工的工资信息然后再删除员工的基本信息。 若只删除员工工资信息则部门人数还是不变,只有再删除员工基本信息,部门人数才会减一。
stafftable中的staffDepartment是外键,dptable中的dpCode是主键,因此添加员工基本信息时必须参考dptable中的dpCode,且dptable只能通过直接操作数据库添加无法通过网站界面添加,保证了数据库的安全性。
前后端实现问题
采用的是原始的不能再简单的JSP+JavaBean,6个表源码完全是手动薅的,所以给人的感觉是十分的简陋,但在设计的过程中也是存在着很多的问题,因为我是负责这一块的,所以比较的清晰,以下是我的项目问题记录及后来的解决办法。
员工登陆逻辑: index.html中输入UserName,UserPassword,login_check.jsp获取UserName和UserPassword且将值设置为stafftable.java中的对应初值,进入到stafftable.java中判断是否与数据库中Name和Password一致,如果一致则将数据库(关键值)赋值给stafftable.java中的相应初值以便用session记录初值传给其他网页:比如传给usre_list_basic.jsp页面中,利用session记录的初值
(比如staffCode)将数据库字段统统赋值给stafftable.java中,方便后续的操作,比如增删查改(员工登陆只有查的作用)
**数据库:**不仅仅MySQL中的编码要为GBK,导出的sql文档编码方式也要是gbk才行,如果为utf8,则因为其他地方都是GBK故而会出现问题
界面输入框: String输入需要转换字符编码,而数字则不需要进行转换编码,但要记住一开始的对象都是Object类。
">
String staffCode=request.getParameter("staffCode");
支持URL传参 多个参数可以用&隔开
<% if(user==null)
%>
解决办法:
在Java源码删除方法中,删除MySQL语句后面添加时间限制
解决办法:拦截器,因为时间关系还没有实现,以后有时间再说了。
思路是:①每个request.getParameter(String name) 都写一个判空条件,②使用request.getParametervalues(String name)一次性解决
java中sql语句能不能加分号的问题?
一、原因
在程序运行中,当执行sql后总是报无效字符错误;但是把程序放在pl/sql中执行又没有错误。让我很纳闷!于是我开始查找资料,然后我终于发现了问题。
二、问题剖析
原来在程序中;如果你在程序里面写sql,就不要加分号,在程序里面编译器会把分号当做sql本身的一部分,所以会报错。
如果是在查询工具里面(比如plsql),这个时候可以加上分号,在工具里面已经做过预处理,分号是个分隔符,看到分号就标志着本条sql语句结束了;
因此java中sql语句不能加分号。
在写对应数据库的decimal时,发现了Java中有Bigdecimal对应的参数,
BigDecimal decimal = new BigDecimal(Math.PI);
decimal = decimal.setScale(10, BigDecimal.ROUND_HALF_EVEN); 10 是10个小数,其中ROUND_HALF_EVEN是 银行家舍入法
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;
如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。
注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。
此舍入模式也称为“银行家舍入法”,主要在美国使用。四舍六入,五分两种情况。
如果前一位为奇数,则入位,否则舍去。
以下例子为保留小数点1位,那么这种舍入方式下的结果。
1.15>1.2 1.25>1.2
前端HTML中的input标签限制输入属性
//可以解决输入只限于整数。
//能输入数字和小数点
//只能输入中文
readonly表示此域的值不可修改,仅可与 type=“text” 配合使用,可复制,可选择,可以接收焦点,后台会接收到传值.
代码如下
disabled表示禁用input元素,不可编辑,不可复制,不可选择,不能接收焦点,后台也不会接收到传值
代码如下
或者
或者
小结
整个过程真的很累,尤其是加班加点后依然无法避免BUG的情况,不过这次学到的东西真的实在是太丰富了,满载而归一点都不过分,团队配合也是相当的重要,最重要的是理清楚了这种网站开发的全过程,这种感觉真的还是挺不错的!