摘要: 本文主要介绍的是固定资产管理系统的整个设计过程。第1章的绪论包括选题的背景,目的和意义,国内外现状;第2章平台简介包括JBuilder2005和SQL Server数据库的介绍;第3章系统分析,需求分析,数据流与数据字典,功能需求;第4章系统设计部分包括系统总体设计,功能模块设计,数据库设计;第5章是系统实现部分包括程序设计,各个功能模块的实现,系统的测试;论文最后为结论、致谢、参考文献。
关键词:固定资产管理 SQL Server数据库 C/S结构
3.1 需求分析
本系统的主要功能如下:
1、管理员登录
2、固定资产信息管理
3、人员信息管理
4、资产的领用
5、资产的归还
6、资产信息浏览和查询
3.2功能需求
要使用本系统必须先登录,并且只有固定资产管理员能够登录。登录的时候需要填写正确的用户名和密码,管理员可以修改自己的密码。
系统允许有有多个固定资产的管理员,每个管理员的权限相同。
固定资产信息管理又分为:
-
- 固定资产类别管理
固定资产的类别在录入资产信息之前就定义好,录入资产信息之后可以增加新的类别。
类别要求分为两级,如大类可以是办公外设、数码产品、计算机等;小类分为办公外设:传真机、复印机、打印机、其它;数码产品:数码相机、投影仪;计算机:笔记本电脑、台式机、服务器等。
类别应允许添加和删除操作。
-
- 固定资产信息管理
资产的信息包括编号、名称、类别、型号、价值、购买日期、状态、使用者、备注等。
资产型号是文本信息,资产的状态分为:正常、维修、报废,使用者为空表示资产未被使用。
资产应允许执行添加、修改和删除操作。
这里的“人员”是指可能领用资产的人,人员的信息包括人员编号、姓名、职务和备注。
已经登记的人员,可以领用固定资产,领用时需要记录的信息有:设备编号、领用日期、管理员、用途、备注。
只有状态为正常且使用者为空的资产才能被领用,在维修或者已经报废的资产不能够领用。
资产使用完毕后要归还给管理员,归还时根据要依据领用时的记录来填写如下信息:归还日期、管理员等。
资产信息查询又可以分为:
-
- 按资产类别浏览
按资产类别浏览资产信息,类别分成两级,要求能够显示大类和小类下面的资产情况、资产状况。
-
- 查询资产信息
可以按资产编号、资产类别、使用者查询资产详细信息,按使用者查询显示该人员领用的所有资产。
4.2功能模块设计
根据需求文档,找出所有相关概念,并提炼成表格形式。见如下表格,也称为“概念清单”。一般来说,名词归为初级类、属性等信息;动词形成主要功能或者类的方法;短语形成业务逻辑或者条件限制
名称 | 词性 | 简要描述 |
固定资产 | 名词 | 大于2000的资产 |
职工 | 名词 | |
资产类别 | 名词 | 分为大类和小类两层 |
借用 | 动词 | 某职工借用固定资产 |
归还 | 动词 | 某职工归还借用的固定资产 |
资产名称 | 名词 | |
样式 | 名词 | 例如:包、箱。。。 |
价格 | 名词 | 固定资产的价格,必须大于2000 |
购入日期 | 名词 | |
资产状态 | 名词 | 分为1表示“可用”或0表示“不可用” |
购入人 | 名词 | |
借用人 | 名词 | 必须是职工 |
归还人 | 名词 | 必须是借用人 |
操作人 | 名词 | |
借用日期 | 名词 | |
归还日期 | 名词 | |
超级用户 | 名词 | 可修改资产状态 |
当删除职工时,系统会检查该员工是否已全部归还了固定资产 | 短语 | 条件限制 |
只有固定资产的状态是“1”时,才可以借用 | 短语 | 条件限制 |
借用和归还固定资产时,系统会自动记录在案 | 短语 | 业务逻辑 |
。。。 |
2、确定初级类
根据反复讨论的概念清单和需求说明等相关文档,确定如下初级类,见下表:
类名 | 属性或方法 | 属性或方法名称 | 简要描述 |
1.固定资产 | 属性 | 资产名称 | |
所属大类 | 资产类别中的大类 | ||
所属小类 | 资产类别中的小类 | ||
样式 | |||
价格 | |||
购入日期 | |||
资产状态 | |||
购入人 | 超级用户 | ||
方法 | 增加固定资产() | ||
修改固定资产信息() | 只能修改某些信息,比如样式、价格、购入日期、资产状态 | ||
删除固定资产信息() | |||
查询固定资产信息() | |||
2.职工 | 属性 | 名称 | |
职务 | |||
方法 | 增加新职工() | ||
修改员工信息() | |||
删除员工信息() | |||
查询员工信息() | |||
。。。 |
3、确定主要功能和菜单项
根据细化结果和需求说明,提出主要功能如下:
- 固定资产的增、删、改、查功能;
- 职工的增、删、改、查功能;
- 资产类别的增、删、改、查功能;
- 固定资产的借用和归还;
- 用户登陆、退出和密码修改。
根据主要功能,可确定菜单项如下:
- 固定资产管理菜单,包括:增、删、改、查4个子菜单;
- 职工管理菜单,包括:增、删、改、查4个子菜单;
- 资产类别管理菜单,包括:增、删、改、查4个子菜单;
- 固定资产的借用和归还管理菜单,包括:借用、归还2个子菜单;
- 用户管理菜单,包括:退出和密码修改2个子菜单。
菜单均采用下拉方式,示意图如下:
固定资产管理 | 职工管理 | 资产类别管理 | 借用和归还管理 | 用户管理 | ||
增加。。。 | 增加。。。 | 增加。。。 | 借用 | 密码修改 | ||
删除。。。 | 删除。。。 | 删除。。。 | 归还 | 退出 | ||
修改。。。 | 修改。。。 | 修改。。。 | ||||
查询。。。 | 查询。。。 | 查询。。。 |
5.1程序设计
登陆界面如下
图5.1
主界面模型图如下
图5.2
固定资产管理弹出界面描述:
界面示意图如下:
图5.3
源代码:
/*
*AssetModel.java:建立固定资产实体类。
*包括:与数据库进行增、删、改、查操作。
*/
import java.sql.*;
import java.math.*;
public class AssetModel {String assetid;String assetname;String cateid;String subcateid;String model;String price;String purchasedate;String status;String useby;String remarks;DbConn dbc;Connection conn;
public AssetModel() {
}
/*
* 添加方法
*/
public void insert() {
dbc = new DbConn();
conn = dbc.getConnection();
try {
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery ("select max(assetid)+1 from asset");
while (rset.next()) {
assetid = rset.getString(1);
}
if (assetid == null) assetid = "1";
PreparedStatement pstmt = conn.prepareStatement("inser tinto ASSET
(assetid,asset_name,cateid,subcateid,model,price,purchase_date,status,useby,remarks) values (?,?,?,?,?,?,?,?,?,?)");
pstmt.setInt(1, Integer.parseInt(assetid));
pstmt.setString(2, assetname);
pstmt.setInt(3, Integer.parseInt(cateid));
pstmt.setInt(4, Integer.parseInt(subcateid));
pstmt.setString(5, model);
pstmt.setFloat(6, Float.parseFloat(price));
pstmt.setString(7, purchasedate);
pstmt.setString(8, status);
pstmt.setString(9, useby);
pstmt.setString(10, remarks);
pstmt.execute();
PreparedStatement pstmt1 =
conn.prepareStatement("insert into LEND (assetid) values (?)");
pstmt1.setInt(1, Integer.parseInt(assetid));
pstmt1.execute();
conn.commit();
conn.close();
}
catch (java.sql.SQLException s) {
System.out.println("exception: " + s.getMessage());
}
}
/*
* 查询方法
*/
public void select() {
String sql;
dbc = new DbConn();
conn = dbc.getConnection();
sql = "SELECT assetid,rtrim(asset_name),cateid,subcateid,rtrim(model),price,purchase_date,status,useby,rtrim(remarks) FROM asset where assetid = "+Integer.parseInt(assetid);
try {
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery (sql);
while (rset.next()) {
assetname = rset.getString(2);
cateid = rset.getString(3);
subcateid = rset.getString(4);
model = rset.getString(5);
price = rset.getString(6);
purchasedate = rset.getString(7);
status = rset.getString(8);
useby = rset.getString(9);
remarks = rset.getString(10);
}
conn.commit();
rset.close();
stmt.close();
conn.close();
}
catch (java.sql.SQLException s) {
System.out.println("exception: " + s.getMessage());
}
}
public void update() {
dbc = new DbConn();
conn = dbc.getConnection();
try {
PreparedStatement pstmt = conn.prepareStatement("update ASSET set asset_name=?,model=?,price=?,purchase_date=?,status=?,useby=?,remarks=? where assetid = ?");
pstmt.setString(1, assetname);
pstmt.setString(2, model);
pstmt.setFloat(3, Float.parseFloat(price));
pstmt.setString(4, purchasedate);
pstmt.setString(5, status);
pstmt.setString(6, useby);
pstmt.setString(7, remarks);
pstmt.setInt(8, Integer.parseInt(assetid));
pstmt.execute();
conn.commit();
conn.close();
}
catch (java.sql.SQLException s) {
System.out.println("exception: " + s.getMessage());
}
}
/*
* 删除方法
*/
public void delete() {
dbc = new DbConn();
conn = dbc.getConnection();
String sql = "delete asset where assetid = "+Integer.parseInt(assetid) ;
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.execute();
String sql1 = "delete lend where assetid = "+Integer.parseInt(assetid) ;
PreparedStatement pstmt1 = conn.prepareStatement(sql1);
pstmt1.execute();
conn.commit();
conn.close();
assetid = null;
assetname = null;
cateid = "";
subcateid = "";
model = null;
price = null;
purchasedate = null;
status = "";
useby = null;
remarks = null;
}
catch (java.sql.SQLException s) {
System.out.println("exception: " + s.getMessage());
}
}
}
标签:java,管理系统,assetid,资产,固定资产,rset,sql,conn,pstmt From: https://blog.csdn.net/shmp54xmu/article/details/139303994