Java Web财务信息管理系统
数据库课设,然后想了一会就写了,写的比较简单,用的是SpringMVC+Mybatis,前端不是很厉害的我使用Jquery+Bootstarp+JSP来做视图层(在全栈的路上越行越远),下面是从报告里摘录中的一些东西:
系统功能模块图:
E-R图
使用的数据库是mysql,数据库名称为finance,使用UTF-8编码。
数据表信息:
(1)login
id:主键,登录账号。
pwd:登录密码。
(2)tab
id:与login表中的id连接的外键。
tab_no:主键自增,表的编号。
tab_name:表名。
(3)Info
tab_no:信息所属表的编号,与tab表中的tab_no连接的外键,级联修改,删除。
Info_no:信息的编号,主键自增。
id:与login表中的id连接的外键。
tab_name:与tab中相对应的表名。
amount:交易金额。
dat:交易日期。
detail:交易明细备注,选填。
表1 账号信息表login
属性名 |
含义 |
类型 |
说明 |
id |
登录账号 |
varchar |
主键,最长长度为20 |
pwd |
登录密码 |
varchar |
非空,最长长度为20 |
表2报表信息表tab
属性名 |
含义 |
类型 |
说明 |
tab_no |
表单编号 |
int |
主键,自增 |
id |
登录账号 |
varchar |
外键,最长长度为20 |
tab_name |
报表名称 |
varchar |
非空,最长长度为20 |
表3表内信息表info
属性名 |
含义 |
类型 |
说明 |
tab_no |
表单编号 |
int |
外键 |
id |
登录账号 |
varchar |
外键,最长长度为20 |
tab_name |
报表名称 |
varchar |
非空,最长长度为20 |
Info_no |
信息编号 |
int |
主键,自增 |
amount |
交易金额 |
double |
10位,小数点后2位 |
dat |
交易日期 |
date |
格式yyyy-mm-dd |
detail |
交易备注 |
varchar |
最长长度为100 |
创建数据库脚本:
CREATE DATABASE IF NOT EXISTS finance DEFAULT CHARSET utf8 COLLATE utf8_general_ci;use financecreate table login(id varchar(20) not null primary key,pwd varchar(20) not null )engine innodb default charset=utf8;create table tab(id varchar(20)not null,tab_no int primary key auto_increment,tab_name varchar(20),foreign key(id) references login(id))engine innodb default charset=utf8;create table info(tab_no int,info_no int primary key auto_increment,id varchar(20),tab_name varchar(20) not null,amount double(10,2) default 0,dat date,detail varchar(100),foreign key(id) references login(id),foreign key(tab_no) references tab(tab_no) on delete cascade on update cascade)engine innodb default charset=utf8;
项目文件基本框架:
概述:
controller包存放MVC框架中的控制器类,处理请求拦截,调用服务,页面跳转的作用。
dao包存放与数据库操作相关的类。
entity包存放实体类,也是POJO类,只有其对应的属性和get,set方法。
service包存放所进行的服务类。
resources中存放项目相关的Mybatis配置文件。
webapp中css,js,img为jsp中要用到的静态资源,jsp中存放着jsp页面,spring-servlet.xml为springMVC 的配置文件
核心代码:
(1)service包中Finance类:存放与主页效果的业务代码.
@Service
public class Finance {public static Reaction adjPWd(String id,String bpwd,String npwd)//修改密码{Reaction reaction=new Reaction();if(bpwd.equals(LoginDao.checkLogin(id))){Login login=new Login();login.setId(id);login.setPwd(npwd);LoginDao.updatePwd(login);reaction.setTag(0);reaction.setWords("密码修改成功!");}else{reaction.setTag(1);reaction.setWords("密码修改失败,原密码不正确");}return reaction;}public static void deleteTable(Integer table_no)//删除报表{TabDao.deleteTab(table_no);}public static List<Info> findAllInfoByNo(Integer tab_no)//通过表名来查找属于id的表信息{Info info=new Info();List<Info>l=InfoDao.findAllInfo(tab_no);Collections.sort(l);return l;}public static List<Info> findInfoByMessage(String id,String year,String month,String table_name)//通过年月和表名查找该年月的交易信息{Message message=new Message();message.setName(table_name);message.setId(id);message.setYear(year);message.setMonth(month);List<Info>l=InfoDao.findInfoByMessage(message);Collections.sort(l);return l;}public static void adjTable(Integer table_no,String table_name)//修改报表信息{Tab tab=new Tab();tab.setTab_no(table_no);tab.setTab_name(table_name);TabDao.updateTab(tab);InfoDao.updateInfoName(tab);//对info进行级联修改}public static void insertTable(String id,String table_name)//添加一张表格{Tab tab=new Tab();tab.setTab_name(table_name);tab.setId(id);TabDao.insertTab(tab);}
}
(2)resources中的Tab.xml配置文件,配置着Mybatis中与info表相关的数据库操作信息。
<mapper namespace="domain2"><resultMap type="entity.Tab" id="tab"><result column="id" property="id" javaType="string"/><result column="tab_no" property="tab_no" javaType="int"/><result column="tab_name" property="tab_name" javaType="string"/></resultMap><!--查询一个用户拥有的报表--><select id="findTabById" parameterType="java.lang.String" resultMap="tab">select * from tab where id = '${value}'</select><!--根据报表名称和id查询no--><select id="findTabByName" parameterType="entity.Tab" resultType="Integer">select tab_no from tab where id = #{id} and tab_name = #{tab_name}</select><!--插入一份报表--><insert id="insertTab" parameterType="entity.Tab">insert into tab values(#{id},default,#{tab_name})</insert><!--删除一份报表--><delete id="deleteTab" parameterType="java.lang.Integer">delete from tab where tab_no ='${value}'</delete><!--更新报表信息--><update id="updateTab" parameterType="entity.Tab">update tab set tab_name = #{tab_name} where tab_no = #{tab_no}</update>
</mapper>
(3)resources中的Info.xml配置文件,配置着Mybatis中与info表相关的数据库操作信息。
<mapper namespace="domain3"><resultMap type="entity.Info" id="info"><result column="tab_no" property="tab_no" javaType="int"/><result column="info_no" property="info_no" javaType="int"/><result column="id" property="id" javaType="string"/><result column="tab_name" property="tab_name" javaType="string"/><result column="dat" property="dat" jdbcType="DATE" javaType="string"/><result column="amount" property="amount" javaType="double"/><result column="detail" property="detail" javaType="string"/></resultMap><!--查询一个用户报表中所有的交易记录 --><select id="findAllInfo" parameterType="java.lang.Integer" resultMap="info">select * from info where tab_no ='${value}'</select><!--通过年份和月份查询一份表的交易记录--><select id="findInfoByMessage" parameterType="entity.Message" resultMap="info">select * from info where id = #{id} and tab_name = #{name} and year(dat) = #{year} and month(dat) = #{month}</select><!--插入交易信息--><insert id="insertInfo" parameterType="entity.Info">insert into info values(#{tab_no},default,#{id},#{tab_name},#{amount},str_to_date(#{dat},'%Y-%m-%d'),#{detail})</insert><!--删除交易信息--><delete id="deleteOneInfo" parameterType="java.lang.Integer">delete from info where info_no = '${value}'</delete><!--更新报表信息--><update id="updateInfo" parameterType="entity.Info">update info set detail = #{detail},dat = #{dat} ,amount = #{amount},tab_name=#{tab_name } where info_no = #{info_no}</update><!--级联更新表名--><update id="updateInfoName" parameterType="entity.Tab">update info set tab_name = #{tab_name} where tab_no = #{tab_no}</update>
</mapper>
效果图:
(1)登录界面
(2)个人主页
(3)报表管理
(4)报表查询
(5)报表修改
(6)导出报表
本次课设学习的地方:
1.SpringMVC访问静态资源方法
在web.xml中添加
<servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.js</url-pattern><url-pattern>*.css</url-pattern><url-pattern>/assets/*"</url-pattern><url-pattern>/img/*</url-pattern></servlet-mapping>
大体就是这些结尾的文件跳过拦截转发使用原来路径进行访问,注意要添加在DispatcherServlet之前,要不然会失效
还有就是静态资源不能放在WEB-INF下,因为原路径无法访问其中资源
2.SpringMVC处理中文乱码问题
把这段代码加入到
web.xml中
<filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
3.外键声明级联修改方法
foreign key(tab_no) references tab(tab_no) on delete cascade on update cascade
4.Mybatis对日期类的处理
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="domain3"><resultMap type="entity.Info" id="info"><result column="tab_no" property="tab_no" javaType="int"/><result column="info_no" property="info_no" javaType="int"/><result column="id" property="id" javaType="string"/><result column="tab_name" property="tab_name" javaType="string"/><result column="dat" property="dat" jdbcType="DATE" javaType="string"/><result column="amount" property="amount" javaType="double"/><result column="detail" property="detail" javaType="string"/></resultMap><!--查询一个用户报表中所有的交易记录 --><select id="findAllInfo" parameterType="java.lang.Integer" resultMap="info">select * from info where tab_no ='${value}'</select><!--通过年份和月份查询一份表的交易记录--><select id="findInfoByMessage" parameterType="entity.Message" resultMap="info">select * from info where id = #{id} and tab_name = #{name} and year(dat) = #{year} and month(dat) = #{month}</select><!--插入交易信息--><insert id="insertInfo" parameterType="entity.Info">insert into info values(#{tab_no},default,#{id},#{tab_name},#{amount},str_to_date(#{dat},'%Y-%m-%d'),#{detail})</insert><!--删除交易信息--><delete id="deleteOneInfo" parameterType="java.lang.Integer">delete from info where info_no = '${value}'</delete><!--更新报表信息--><update id="updateInfo" parameterType="entity.Info">update info set detail = #{detail},dat = #{dat} ,amount = #{amount},tab_name=#{tab_name } where info_no = #{info_no}</update><!--级联更新表名--><update id="updateInfoName" parameterType="entity.Tab">update info set tab_name = #{tab_name} where tab_no = #{tab_no}</update>
</mapper>
其中日期类我在pojo中使用的是string来储存,在mysql中却用的是date类,要特殊处理下:
<insert id="insertInfo" parameterType="entity.Info">
insert into info values(#{tab_no},default,#{id},#{tab_name},#{amount},str_to_date(#{dat},'%Y-%m-%d'),#{detail})
</insert>
使用str_to_date方法对字符串进行转化存储。
然后此处我写的不够好,可以使用jqueryUI中的日历插件可以简化而且更美观进行日期的输入
5.使用Collections.sort排序
想要按照指定要求对一个类的List进行排序,则要重写类的CompareTo函数:
此处我根据两字符串的字典序大小进行了排序:
public int compareTo(Info info) {String s1=dat;String s2=info.getDat();if(s1.compareTo(s2)<0){return -1;}return 0;}
github源码:https://github.com/iunique/IdeaProject/tree/abc
Java Web财务信息管理系统相关推荐
- Java Web用户信息管理系统的简单设计(增删查改)
用户信息管理系统 技术需求:Servlet +jsp+ mvc +jdbc 软件需求 :Eclipse mysql Tomcat Google 功能需求:完成用户登录 查询所有用户 增加删除用户信息 ...
- java web信息管理系统_Java web学生信息管理系统
[实例简介] 基于Jsp&servlet;+JavaBean的学生信息管理系统,实现了学生成绩.课程.教师的管理 [实例截图] [核心代码] Javaweb学生信息管理系统 └── Java ...
- IDEA+Java+JSP+Mysql+Tomcat实现Web商品信息管理系统
目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库文件 5.系统截图 二.系统展示 1.登录系统 2.系统主页 3.增加商品 4.修改商品 三.部分代码 AdminDaoImpl ...
- Java+SSM+Jsp+Mysql实现Web汽车信息管理系统
目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库文件 5.工程截图 二.系统展示 1.登录系统 2.系统首页 3.用户管理-添加用户 4.用户管理-查询用户 5.用户管理-修改 ...
- Java+JSP+Mysql+Tomcat实现Web用户信息管理系统
用户信息管理系统 一.系统介绍 1.软件环境 2.系统功能 3.数据库 二.系统展示 1.登录系统 2.主页面 3.新增用户信息 4.修改用户信息 5.查询用户信息 三.部分代码 DBUtil Adm ...
- java计算机毕业设计web校园信息管理系统MyBatis+系统+LW文档+源码+调试部署
java计算机毕业设计web校园信息管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计web校园信息管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: ...
- IDEA+Java+JSP+Mysql+Tomcat实现Web教师信息管理系统
目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库文件 5.工程截图 二.系统展示 1.登录系统 2.查询教师信息 3.添加教师信息 4.修改教师信息 三.部分代码 AdminD ...
- 基于Java毕业设计志愿者信息管理系统源码+系统+mysql+lw文档+部署软件
基于Java毕业设计志愿者信息管理系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计志愿者信息管理系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 ...
- 计算机毕业设计Java印染公司信息管理系统(系统+程序+mysql数据库+Lw文档)
计算机毕业设计Java印染公司信息管理系统(系统+程序+mysql数据库+Lw文档) 计算机毕业设计Java印染公司信息管理系统(系统+程序+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B ...
最新文章
- Boost::context模块callcc的回声测试程序
- 每天练习50个shell
- 玩转 SpringBoot 2.x 之 RedisTemplate 操作
- 阿里云、腾讯云、华为云哪个好?迄今最全面的云服务评测报告出炉(转)
- 看看20万程序员怎么评论:前端程序员会不会被淘汰?
- vue ---- 组件综合案例(购物车案例)
- 高调复仇还是虚张声势?黑客声称成功入侵安全公司的服务器
- 从零开始学 Web 之 JS 高级(二)原型链,原型的继承
- 2017CCPC秦皇岛 L题One-Dimensional MazeZOJ3992【模拟】
- php试题多选,php考试题 (选择题).doc
- 通过SecureCRT和PuTTY连接臻云CentOS版云主机
- 做真正Hacker 的乐趣──自己动手去实践
- JS数字正则表达式验证(全全全!!!)
- 【ROS】launch文件详解
- speedoffice怎样在word文档中画横线
- 吉林大学微型计算机试卷,吉林大学全真预测试卷及答案
- 05全球IP归属地查询工具
- 360小水滴用户测试
- 【密码学—菜狗的期末自救企划】
- 模拟频率 模拟角频率 数字频率