数据库课设,然后想了一会就写了,写的比较简单,用的是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财务信息管理系统相关推荐

  1. Java Web用户信息管理系统的简单设计(增删查改)

    用户信息管理系统 技术需求:Servlet +jsp+ mvc +jdbc 软件需求 :Eclipse mysql Tomcat Google 功能需求:完成用户登录  查询所有用户 增加删除用户信息 ...

  2. java web信息管理系统_Java web学生信息管理系统

    [实例简介] 基于Jsp&servlet;+JavaBean的学生信息管理系统,实现了学生成绩.课程.教师的管理 [实例截图] [核心代码] Javaweb学生信息管理系统 └── Java ...

  3. IDEA+Java+JSP+Mysql+Tomcat实现Web商品信息管理系统

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库文件 5.系统截图 二.系统展示 1.登录系统 2.系统主页 3.增加商品 4.修改商品 三.部分代码 AdminDaoImpl ...

  4. Java+SSM+Jsp+Mysql实现Web汽车信息管理系统

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库文件 5.工程截图 二.系统展示 1.登录系统 2.系统首页 3.用户管理-添加用户 4.用户管理-查询用户 5.用户管理-修改 ...

  5. Java+JSP+Mysql+Tomcat实现Web用户信息管理系统

    用户信息管理系统 一.系统介绍 1.软件环境 2.系统功能 3.数据库 二.系统展示 1.登录系统 2.主页面 3.新增用户信息 4.修改用户信息 5.查询用户信息 三.部分代码 DBUtil Adm ...

  6. java计算机毕业设计web校园信息管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计web校园信息管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计web校园信息管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: ...

  7. IDEA+Java+JSP+Mysql+Tomcat实现Web教师信息管理系统

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库文件 5.工程截图 二.系统展示 1.登录系统 2.查询教师信息 3.添加教师信息 4.修改教师信息 三.部分代码 AdminD ...

  8. 基于Java毕业设计志愿者信息管理系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计志愿者信息管理系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计志愿者信息管理系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 ...

  9. 计算机毕业设计Java印染公司信息管理系统(系统+程序+mysql数据库+Lw文档)

    计算机毕业设计Java印染公司信息管理系统(系统+程序+mysql数据库+Lw文档) 计算机毕业设计Java印染公司信息管理系统(系统+程序+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B ...

最新文章

  1. Boost::context模块callcc的回声测试程序
  2. 每天练习50个shell
  3. 玩转 SpringBoot 2.x 之 RedisTemplate 操作
  4. 阿里云、腾讯云、华为云哪个好?迄今最全面的云服务评测报告出炉(转)
  5. 看看20万程序员怎么评论:前端程序员会不会被淘汰?
  6. vue ---- 组件综合案例(购物车案例)
  7. 高调复仇还是虚张声势?黑客声称成功入侵安全公司的服务器
  8. 从零开始学 Web 之 JS 高级(二)原型链,原型的继承
  9. 2017CCPC秦皇岛 L题One-Dimensional MazeZOJ3992【模拟】
  10. php试题多选,php考试题 (选择题).doc
  11. 通过SecureCRT和PuTTY连接臻云CentOS版云主机
  12. 做真正Hacker 的乐趣──自己动手去实践
  13. JS数字正则表达式验证(全全全!!!)
  14. 【ROS】launch文件详解
  15. speedoffice怎样在word文档中画横线
  16. 吉林大学微型计算机试卷,吉林大学全真预测试卷及答案
  17. 05全球IP归属地查询工具
  18. 360小水滴用户测试
  19. 【密码学—菜狗的期末自救企划】
  20. 模拟频率 模拟角频率 数字频率

热门文章

  1. composer总结
  2. SSM全注解开发的网上商城系统
  3. Fedora 24 Linux 环境下实现 Infinality 字体渲染增强及 Java 字体渲染改善的方法(修订)...
  4. 数据采集之贝壳新房【完整代码(数据库+图片)】
  5. 计算Fisher信息之Part(二)
  6. 【论文泛读85】基于上下文的句子相似度
  7. 如何优雅地提取 App 的素材
  8. 云队友丨在注意力稀缺的时代,专注是你成败的关键筹码
  9. nagios之nsca被动监控
  10. 微信二维码1-服务号推广(将网页存储为图片存储到服务器)