企业财务管理系统
背景:
随着信息时代的到来,中小企业的生存和竞争环境发生了根本性的变化。当前中小企业信息化具有宽广和深刻的内容,其中管理信息化是一个重要方面。如何运用信息技术增强企业的管理,如何制定企业信息化发展战略来提升企业的核心竞争力,如何把信息化系统融入日常的管理工作为企业带来效益,是当前我们所面临的重要课题。
功能截图
主要实现的功能点有:
部门信息管理模块:对公司部门信息进行管理,包括部门信息的添加、修改、删除等。
员工信息管理模块:对公司员工信息进行管理,包括员工信息的添加、修改、删除等。
员工工资管理模块:对员工工资信息进行管理,包括员工工资的添加、修改等。
资产信息管理模块:对公司资产信息进行管理,包括资产信息的添加、修改、删除等。
经营信息管理模块:对公司经营信息进行管理,包括经营信息的添加、修改、删除等。
费用信息管理模块:对公司费用信息进行管理,包括费用信息的添加、修改、删除等。
年终资产分析模块:对公司产终资产情况进行分析,查看分析报表。
修改个人密码:管理员登录系统,可以修改自己的登录密码。
登录页面
主页面:
信息添加和管理:
部门信息添加:
职工信息添加:
职工工资管理:
公司费用查询:
资产统计经营情况:
系统流程图
1、用例图
2、系统流程图
技术点介绍
在B/S (Browser/Server浏览器/服务器)模式下运行,系统开发语言为Java、JSP,后台数据库为MySQL。
工具:Myeclipse
jdk:1.7
Tomcat:7
源码
1、数据库连接:DB.java
package com.dao;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DB
{
private Connection con;
private PreparedStatement pstm;
private String user;
private String password;
private String ip;
private String port;
private String dbName;
private String url;
public DB()
{
try
{
getDbConnProp();
} catch (Exception e)
{
System.out.println("加载数据库驱动失败!");
e.printStackTrace();
}
}
private void getDbConnProp()
{
try{
InputStream in = getClass().getClassLoader().getResourceAsStream("dbInfo.properties");
Properties proHelper = new Properties();
proHelper.load(in);
in.close();
ip=proHelper.getProperty("dburl");
port=proHelper.getProperty("dbport");
user=proHelper.getProperty("dbuser");
password=proHelper.getProperty("dbpass");
dbName=proHelper.getProperty("dbName");
url = "jdbc:mysql://"+ip+":"+port+"/"+dbName+"?useUnicode=true&characterEncoding=utf-8";
}catch(Exception e){
e.printStackTrace();
}
}
/** 创建数据库连接 */
public Connection getCon()
{
try
{
try
{
Class.forName("org.gjt.mm.mysql.Driver");
} catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
con = DriverManager.getConnection(url, user, password);
} catch (SQLException e)
{
System.out.println("创建数据库连接失败!");
con = null;
e.printStackTrace();
}
return con;
}
public void doPstm(String sql, Object[] params)
{
if (sql != null && !sql.equals(""))
{
if (params == null)
params = new Object[0];
getCon();
if (con != null)
{
try
{
System.out.println(sql);
pstm = con.prepareStatement(sql,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
for (int i = 0; i < params.length; i++)
{
pstm.setObject(i + 1, params[i]);
}
pstm.execute();
} catch (SQLException e)
{
System.out.println("doPstm()方法出错!");
e.printStackTrace();
}
}
}
}
public ResultSet getRs() throws SQLException
{
return pstm.getResultSet();
}
public int getCount() throws SQLException
{
return pstm.getUpdateCount();
}
public void closed()
{
try
{
if (pstm != null)
pstm.close();
} catch (SQLException e)
{
System.out.println("关闭pstm对象失败!");
e.printStackTrace();
}
try
{
if (con != null)
{
con.close();
}
} catch (SQLException e)
{
System.out.println("关闭con对象失败!");
e.printStackTrace();
}
}
}
2、抽象出来的实体类:
TAdmin.java
package com.orm;
public class TAdmin
{
private int userId;
private String userName;
private String userPw;
public String getUserName()
{
return userName;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public String getUserPw()
{
return userPw;
}
public void setUserPw(String userPw)
{
this.userPw = userPw;
}
public int getUserId()
{
return userId;
}
public void setUserId(int userId)
{
this.userId = userId;
}
}
TFeiyong.java
package com.orm;
public class TFeiyong
{
private int id;
private String mingcheng;
private String shijian;
private String feiyong;
private String leixing;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMingcheng() {
return mingcheng;
}
public void setMingcheng(String mingcheng) {
this.mingcheng = mingcheng;
}
public String getShijian() {
return shijian;
}
public void setShijian(String shijian) {
this.shijian = shijian;
}
public String getFeiyong() {
return feiyong;
}
public void setFeiyong(String feiyong) {
this.feiyong = feiyong;
}
public String getLeixing() {
return leixing;
}
public void setLeixing(String leixing) {
this.leixing = leixing;
}
}
3、Action类:
feiyong_servlet.java
package com.action;
import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dao.DB;
import com.orm.TFeiyong;
public class feiyong_servlet extends HttpServlet
{
public void service(HttpServletRequest req,HttpServletResponse res)throws ServletException, IOException
{
String type=req.getParameter("type");
if(type.endsWith("feiyongMana"))
{
feiyongMana(req, res);
}
if(type.endsWith("feiyongList"))
{
feiyongList(req, res);
}
if(type.endsWith("feiyongAdd"))
{
feiyongAdd(req, res);
}
}
public void feiyongAdd(HttpServletRequest req,HttpServletResponse res)
{
String mingcheng=req.getParameter("mingcheng");
String shijian=req.getParameter("shijian");
String feiyong=req.getParameter("feiyong");
String leixing=req.getParameter("leixing");
String sql="insert into t_feiyong (mingcheng,shijian,feiyong,leixing) values(?,?,?,?)";
Object[] params={mingcheng,shijian,feiyong,leixing};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "feiyong?type=feiyongMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
public void feiyongMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
String sql="select * from t_feiyong";
req.setAttribute("feiyongList", getfeiyongList(sql));
req.getRequestDispatcher("admin/feiyong/feiyongMana.jsp").forward(req, res);
}
public void feiyongList(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
String sql="select * from t_feiyong";
req.setAttribute("feiyongList", getfeiyongList(sql));
req.getRequestDispatcher("admin/feiyong/feiyongList.jsp").forward(req, res);
}
private List getfeiyongList(String sql)
{
List feiyongList=new ArrayList();
Object[] params={};
DB mydb=new DB();
try
{
mydb.doPstm(sql, params);
ResultSet rs=mydb.getRs();
while(rs.next())
{
TFeiyong feiyong=new TFeiyong();
feiyong.setId(rs.getInt("id"));
feiyong.setMingcheng(rs.getString("mingcheng"));
feiyong.setShijian(rs.getString("shijian"));
feiyong.setFeiyong(rs.getString("feiyong"));
int leixing = rs.getInt("leixing");
feiyong.setLeixing(getLxmc(leixing));
feiyongList.add(feiyong);
}
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
mydb.closed();
return feiyongList;
}
private String getLxmc(int leixing)
{
String result = "";
switch(leixing)
{
case 0:
result = "收入";
break;
case 1:
result = "支出";
break;
case 2:
result = "报销";
break;
}
return result;
}
public void dispatch(String targetURI,HttpServletRequest request,HttpServletResponse response)
{
RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI);
try
{
dispatch.forward(request, response);
return;
}
catch (ServletException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}
public void destroy()
{
}
}
gongzi_servlet.java
package com.action;
import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dao.DB;
import com.orm.TGongzi;
import com.orm.TZhigong;
public class gongzi_servlet extends HttpServlet
{
public void service(HttpServletRequest req,HttpServletResponse res)throws ServletException, IOException
{
String type=req.getParameter("type");
if(type.endsWith("gongziMana"))
{
gongziMana(req, res);
}
if(type.endsWith("gongzi_me"))
{
gongzi_me(req, res);
}
if(type.endsWith("gongziAdd"))
{
gongziAdd(req, res);
}
if(type.endsWith("gongziUpd"))
{
gongziUpd(req, res);
}
}
public void gongziAdd(HttpServletRequest req,HttpServletResponse res)
{
String zhigong_id=req.getParameter("zhigong_id");
String jiben=req.getParameter("jiben");
String gongling=req.getParameter("gongling");
String zhiwu=req.getParameter("zhiwu");
String butie=req.getParameter("butie");
String sql="insert into t_gongzi (zhigong_id,jiben,gongling,zhiwu,butie) " +
"values(?,?,?,?,?)";
Object[] params={zhigong_id,jiben,gongling,zhiwu,butie};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "gongzi?type=gongziMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
public void gongziUpd(HttpServletRequest req,HttpServletResponse res)
{
String id=req.getParameter("id");
String jiben=req.getParameter("jiben");
String gongling=req.getParameter("gongling");
String zhiwu=req.getParameter("zhiwu");
String butie=req.getParameter("butie");
String sql="update t_gongzi set jiben=?,gongling=?,zhiwu=?,butie=? where id=?";
Object[] params={jiben,gongling,zhiwu,butie,id};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "gongzi?type=gongziMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
public void gongzi_me(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
TZhigong zhigong = (TZhigong)req.getSession().getAttribute("user");
String sql="select * from t_gongzi where zhigong_id="+zhigong.getId();
req.setAttribute("gongzi", ((TGongzi)getGongziList(sql).get(0)));
req.getRequestDispatcher("admin/gongzi/gongzi_me.jsp").forward(req, res);
}
public void gongziMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
String sql="select * from t_gongzi";
req.setAttribute("gongziList", getGongziList(sql));
req.getRequestDispatcher("admin/gongzi/gongziMana.jsp").forward(req, res);
}
private List getGongziList(String sql)
{
List gongziList=new ArrayList();
Object[] params={};
DB mydb=new DB();
try
{
mydb.doPstm(sql, params);
ResultSet rs=mydb.getRs();
while(rs.next())
{
TGongzi gongzi=new TGongzi();
gongzi.setId(rs.getInt("id"));
gongzi.setJiben(rs.getDouble("jiben"));
gongzi.setGongling(rs.getDouble("gongling"));
gongzi.setZhiwu(rs.getDouble("zhiwu"));
gongzi.setButie(rs.getDouble("butie"));
int zhigong_id = rs.getInt("zhigong_id");
gongzi.setZgxx(getZhigongById(zhigong_id));
double jiben = gongzi.getJiben();
double gongling = gongzi.getGongling();
double zhiwu = gongzi.getZhiwu();
double butie = gongzi.getButie();
double xishu = gongzi.getZgxx().getXishu();
double hj = jiben*xishu+gongling+zhiwu+butie;
gongzi.setHj(hj);
gongziList.add(gongzi);
}
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
mydb.closed();
return gongziList;
}
private TZhigong getZhigongById(int id)
{
TZhigong zhigong=new TZhigong();
String sql = "select ta.*,tb.mingcheng bmmc,tb.xishu from t_zhigong ta,t_bumen tb " +
"where ta.id=? and ta.bumen_id=tb.id";
Object[] params={id};
DB mydb=new DB();
try
{
mydb.doPstm(sql, params);
ResultSet rs=mydb.getRs();
while(rs.next())
{
zhigong.setId(rs.getInt("id"));
zhigong.setBumen_id(rs.getInt("bumen_id"));
zhigong.setBianhao(rs.getString("bianhao"));
zhigong.setLoginpw(rs.getString("loginpw"));
zhigong.setXingming(rs.getString("xingming"));
zhigong.setXingbie(rs.getString("xingbie"));
zhigong.setRuzhi(rs.getString("ruzhi"));
zhigong.setBmmc(rs.getString("bmmc"));
zhigong.setXishu(rs.getDouble("xishu"));
}
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return zhigong;
}
public void dispatch(String targetURI,HttpServletRequest request,HttpServletResponse response)
{
RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI);
try
{
dispatch.forward(request, response);
return;
}
catch (ServletException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}
public void destroy()
{
}
}
4、部分辅助类
DateUtils.java
package com.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
/**
* 字符串转日期
* @param strDate
* @param strFormat
* @return
*/
public static Date formatStr2Date(String strDate,String strFormat){
Date retValue = null;
try{
SimpleDateFormat sdf = new SimpleDateFormat(strFormat);
retValue = sdf.parse(strDate);
}catch(ParseException e){
e.printStackTrace();
}
return retValue;
}
/**
* 日期转字符串
* @param date
* @param strFormat
* @return
*/
public static String formatDate2Str(Date date,String strFormat){
String retValue = null;
SimpleDateFormat sdf = new SimpleDateFormat(strFormat);
retValue = sdf.format(date);
return retValue;
}
/**
* 获取两个日期之间相差的天数
* @param et
* @param st
* @return
*/
public static int getTwoDateDays(Date et,Date st){
int day = 0;
day = (int)((et.getTime()-st.getTime())/(24*60*60*1000));
return day;
}
}
写在最后
如果需要全部的源码和详细的文档资料,(仅供个人学习使用),可加博主V交流:(Code2Life2)