资源描述
软件工程综合实践 报告
企业用电管理系统设计
专业
学生姓名
班级
学号
指导教师
完成日期
信息工程学院
目录
1.项目名称:企业用电管理系统 3
1.1 编写目的 3
1.2 背景说明 3
1.3 开发环境 3
2. 软件介绍 3
2.1 目标 3
2.2 用户的特点 4
2.3 假定与约束 4
3. 需求分析 4
3.1 对功能的规定 4
3.2 对性能的规定 5
3.2.1 精度 5
3.2.2 时间特性要求 5
3.2.3 灵活性 5
4. 软件的基本结构 6
4.1 数据管理能力要求 6
5.详细设计 6
6.部分编码 9
6.1企业信息查询代码 9
6.2企业用电信息查询代码: 11
6.3删除企业用电信息代码: 14
6.4删除用电企业信息代码: 15
7. 软件核心技术,存在问题等 17
8. 实验心得 22
1.项目名称:企业用电管理系统
1.1 编写目的
需求的编写是为了研究企业用电管理系统软件的开发途径和应用方法。同时它也是进行项目策划、概要设计和详细设计的基础,是维护人员进行内部维护,信息更新,验收和测试的依据。本需求的预期读者是与企业用电管理系统软件开发有联系的决策人,开发组成人员,扶助开发者,支持本项目的领导和公司人员,软件验证者。
1.2 背景说明
管理信息系统, 是现在各个行业中普遍使用的软件系统,随着计算机的普及和我国信息化
建设的发展,它的使用已经遍及各行各业。在电力系统中更是如此,它不仅涉及一些常规的管理,更有些行业的特征。本系统针对目前在企业用电的使用过程中企业信息以及用电信息的复杂,;因此对企业用电的管理工作已势在必行。
本系统主要分为两张表,分别为企业信息跟企业用电信息,按照企业编号或者名称查询相关信息,同时也查询该企业的用电信息,并且可以进行插入、修改、删除等操作。本系统研究的就是此过程,即为电能的管理提供一个管理信息系统。
1.3 开发环境
采用java编写,可以运行于所有的jdk6.0环境的JEE服务器上。使用my eclipse开发工具开发,数据库采用sql server 2005。
2. 软件介绍
2.1 目标
建立的企业用电管理系统,可以简洁明了的实现对企业用电管理,能够对企业以及企业用电信息实现查询、添加、修改、删除等要求。
2.1.1 开发意图
a. 为了企业用电管理系统更完善;
b. 为了使电力部门对企业用电的管理更方便;
c. 为了减轻电力部门人员的工作负担。
2.1.2 应用目标
通过本系统软件,能帮助相关电力管理人员利用计算机,快速方便地对企业用电的管理。
2.1.3 作用及范围
本软件适用于小范围电力部门管理,以及学生以及相关爱好者学习使用。
2.2 用户的特点
本软件的使用对象是相关电力部门及相关编程爱好者,有一定的行业特点。
2.3 假定与约束
技术约束:
本项目的设计是JAVA程序设计语言的条件下进行的,技术设计采用软硬一体化的设计方法。
环境约束:
运行该软件所适用的具体设备必须是奔腾4、内存256兆以上的计算机;
3. 需求分析
3.1 对功能的规定
1、理解需求
理解需求是在问题及其最终解决方案之间架设桥梁的第一步。开发者只有和用户充分理解了需求之后才能开始设计系统,否则,对需求定义的任何改进,设计上都必须大量的返工。
下面是对系统的终端用户和客户调研后得到的需求规格说明书。
(1)由于使用者为相关电力部门及学习使用,系统开始时,便可以进入到欢迎界面。
(2)进入到系统之后,友好的界面可以很清晰的分为企业信息管理跟企业用电信息管理两大选择。
(3)点击企业信息管理,下拉菜单中选项可以实现对企业信息的查询、添加、修改、删除操作。
(4)点击企业用电管理信息,下拉菜单中选项可以实现对企业用电管理信息的查询、添加、修改和删除操作。
(5)系统客户端运行在Windows平台下,服务器可以运行在Windows或Unix平台下。系统还应该有一个较好的图形用户界面。
(6)系统应该有很好的可扩展性。
2、需求分析
需求分析是从客户的需求中提取出软件系统能够帮助用户解决的业务问题,通过对用户业务问题的分析,确定系统的功能需求。这个步骤是对理解需求的升华,直接关系到该系统的质量。分析的根本目的是在开发者和提出需求的人之间建立一种理解和沟通机制,因此,系统的需求分析也应该是开发人员和用户或客户一起完成的。
<1>系统功能模块划分
根据开发者和客户的需求分析后,可以把系统功能分为两个大的个功能模块:
(1)用电企业基本信息模块
包括:用电企业编号、地址、电话、联系人的查询、添加、修改、删除等操作模块。
(2)电费信息
包括:单价、电量的查询、添加、修改、删除等操作模块。
3.2 对性能的规定
3.2.1 精度
在精度需求上,根据使用需要,在各项数据的输入,输出及传输过程中,可以满足各种精度的需求。如:根据关键字精度的不同,查找可分为精确查找和泛型查找,精确查找可精确匹配系统使用者所知道的企业名称及编号快速便捷的查询所要知道的信息。
3.2.2 时间特性要求
在软件方面,响应时间,更新处理时间都比较快且迅速,完全满足用户要求。
3.2.3 灵活性
当用户需求,如操作方式,运行环境,结果精度,数据结构于其他软件接口等发生变化时,设计的软件要做适当调整,灵活性非常大。
4. 软件的基本结构
查询企业信息:输入关键字为企业编号或者联系人姓名,按照精确匹配为主,再索引关联字。输出时列出索引到的所有企业信息,具体信息包括企业地址,电话等,方便电力管理者查找。
查看企业用电信息:进入企业用电信息管理系统,输入关键字为企业编号或者联系人姓名,按照精确匹配为主,再索引关联字。输出时列出索引到的所有企业信息,具体信息包括电费单价、电量等。
4.1 数据管理能力要求
定时整理数据:系统管理员根据企业用电信息定时整理系统数据库,对用电企业以及企业用电信息的增减等均可有计算机执行,并将运行结果归档。
查询库存量:能随时查询库中用电企业以及企业用电的库存量,以便准确、及时、方便地为企业提供信息,但不能修改数据,无信息处理权。
5.详细设计
本系统包含企业信息查询、添加、修改删除跟企业用电信息查询、添加、修改、删除这几大模块。
1、欢迎界面
系统打开时,友好的欢迎界面包括了两大选项,即企业信息管理跟企业用电信息管理两大模块。
2、企业信息查询功能
在该模块中采用对企业进行编号方式或者企业用电量来管理。管理者点击进入系统页面之后,便可以输入企业编号,实现对企业信息的查询。
3、企业信息添加功能
这部分主要完成的是电力管理者输入用电企业编号、联系人姓名、地址、联系电话,点击添加按钮实现添加功能。
4、企业信息修改功能
这部分通过输入要更新的企业编号,输入新的联系人姓名、地址、新的电话,然后点击提交修改按钮,实现对企业信息的修改。
5、企业信息删除功能
这部分只要输入企业编号,点击提交删除按钮便可以实现删除功能。
6、企业用电信息查询的功能
在该模块中采用对企业用电进行编号来管理。管理者点击进入系统页面之后,便可以输入企业编号,实现对企业用电信息的查询。
7、企业用电信息添加功能
这部分主要完成的是电力管理者输入用电企业编号、输入电费单价,用电量,点击添加按钮实现添加功能。
8、企业用电信息修改功能
这部分输入要更新的企业编号,新的电费单价,新的用电量,点击提交修改按钮,实现修改功能。
9、企业用电信息删除功能
这部分只要输入企业编号,点击提交删除按钮就可以实现删除功能。
流程图如下:
登陆系统
进入企业信息管理系统/企业用电信息管理系统
进行查询、添加、插入、删除等操作
退出系统
图(1)总体设计
图(2)修改操作
数据库结构设计:
表一:member表
企业信息表
字 段 名
数据类型、长度
小数点位数
是否为空
字段含义
qiyenumber
Char(10)
No
企业编号
address
Char(20)
No
企业地址
lianxiren
Char(10)
No
联系人
phone
Interger
No
电话号码
表二:dianfei表
企业用电信息表
字 段 名
数据类型、长度
小数点位数
是否为空
字段含义
qiyenumber
Char(10)
No
企业编号
danjia
Float(10)
No
单价
dianliang
Char(24)
No
电量
6.部分编码
6.1企业信息查询代码
package myservlet.control;
import java.sql.*;
public class QueryQiye
{ String databaseName="ssh"; //数据库名
String tableName="member"; //表名
String user="sa" ; //用户
String secret="ycit" ; //密码
StringBuffer queryResult; //查询结果
public QueryQiye()
{ queryResult=new StringBuffer();
try{ Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e) {}
}
public void setDatabaseName(String s)
{ databaseName=s.trim();
queryResult=new StringBuffer();
}
public String getDatabaseName()
{ return databaseName;
}
public void setTableName(String s)
{ tableName=s.trim();
queryResult=new StringBuffer();
}
public String getTableName()
{ return tableName;
}
public void setSecret(String s)
{ secret=s.trim();
queryResult=new StringBuffer();
}
public String getSecret()
{ return secret;
}
public void setUser(String s)
{ user=s.trim();
queryResult=new StringBuffer();
}
public String getUser()
{ return user;
}
public StringBuffer getQueryResult()
{ Connection con;
Statement sql;
ResultSet rs;
try { queryResult.append("<table border=1>");
String uri="jdbc:mysql://127.0.0.1:3306/ssh?user=root&password=&useUnicode=true";
String id=user;
String password=secret;
con=DriverManager.getConnection(uri);
DatabaseMetaData metadata=con.getMetaData();
ResultSet rs1=metadata.getColumns(null,null,tableName,null);
int 字段个数=0;
queryResult.append("<tr>");
while(rs1.next())
{ 字段个数++;
String clumnName=rs1.getString(4);
queryResult.append("<td>"+clumnName+"</td>");
}
queryResult.append("</tr>");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM "+tableName);
while(rs.next())
{ queryResult.append("<tr>");
for(int k=1;k<=字段个数;k++)
{ queryResult.append("<td>"+rs.getString(k)+"</td>");
}
queryResult.append("</tr>");
}
queryResult.append("</table>");
con.close();
}
catch(SQLException e)
{ queryResult.append("请输入正确的用户名和密码");
}
return queryResult;
}
}
6.2企业用电信息查询代码:
package myservlet.control;
import java.sql.*;
public class QueryDianfei
{ String databaseName="ssh"; //数据库名
String tableName="dianfei"; //表名
String user="sa" ; //用户
String secret="ycit" ; //密码
StringBuffer queryResult; //查询结果
public QueryDianfei()
{ queryResult=new StringBuffer();
try{ Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e) {}
}
public void setDatabaseName(String s)
{ databaseName=s.trim();
queryResult=new StringBuffer();
}
public String getDatabaseName()
{ return databaseName;
}
public void setTableName(String s)
{ tableName=s.trim();
queryResult=new StringBuffer();
}
public String getTableName()
{ return tableName;
}
public void setSecret(String s)
{ secret=s.trim();
queryResult=new StringBuffer();
}
public String getSecret()
{ return secret;
}
public void setUser(String s)
{ user=s.trim();
queryResult=new StringBuffer();
}
public String getUser()
{ return user;
}
public StringBuffer getQueryResult()
{ Connection con;
Statement sql;
ResultSet rs;
try { queryResult.append("<table border=1>");
String
uri="jdbc:mysql://127.0.0.1:3306/ssh?user=root&password=&useUnicode=true";
String id=user;
String password=secret;
con=DriverManager.getConnection(uri);
DatabaseMetaData metadata=con.getMetaData();
ResultSet rs1=metadata.getColumns(null,null,tableName,null);
int 字段个数=0;
queryResult.append("<tr>");
while(rs1.next())
{ 字段个数++;
String clumnName=rs1.getString(4);
queryResult.append("<td>"+clumnName+"</td>");
}
queryResult.append("</tr>");
sql=con.createStatement();
rs=sql.executeQuery("SELECT * FROM "+tableName);
while(rs.next())
{ queryResult.append("<tr>");
for(int k=1;k<=字段个数;k++)
{ queryResult.append("<td>"+rs.getString(k)+"</td>");
}
queryResult.append("</tr>");
}
queryResult.append("</table>");
con.close();
}
catch(SQLException e)
{ queryResult.append("请输入正确的用户名和密码");
}
return queryResult;
}
}
6.3删除企业用电信息代码:
package myservlet.control;
import java.sql.*;
public class DelDianfei
{ String number="", //企业编号
danjia="", //联系人姓名
dianliang=""; //地址
String delMessage="";
public DelDianfei()
{ try{ Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e){ }
}
public void setNumber(String s)
{ number=s.trim();
}
public void setDanjia(String s)
{ danjia=s.trim();
try{ byte bb[]=danjia.getBytes("ISO-8859-1");
danjia=new String(bb,"gb2312");
}
catch(Exception e){}
}
public void setDianliang(String s)
{ dianliang=s.trim();
}
public String getDelMessage()
{ String delCondition="delete from dianfei where qiyenumber="+number+"";
String str="";
Connection con;
Statement sql;
try
{
String uri="jdbc:mysql://127.0.0.1:3306/ssh?user=root&password=&useUnicode=true";
con=DriverManager.getConnection(uri);
sql=con.createStatement();
if(number.length()>0)
{ int m=sql.executeUpdate(delCondition);
if(m!=0)
{ str="对表中删除"+m+"条记录成功";
}
else
{ str="删除记录失败";
}
}
else
{ str="必须要有企业编号";
}
con.close();
}
catch(SQLException e)
{ str=""+e;
}
return str;
}
}
6.4删除用电企业信息代码:
package myservlet.control;
import java.sql.*;
public class DelQiye
{ String number="", //企业编号
name="", //联系人姓名
address="", //地址
phone=""; //电话
String delMessage="";
public DelQiye()
{ try{ Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e){ }
}
public void setNumber(String s)
{ number=s.trim();
}
public void setName(String s)
{ name=s.trim();
try{ byte bb[]=name.getBytes("ISO-8859-1");
name=new String(bb,"gb2312");
}
catch(Exception e){}
}
public void setAddress(String s)
{ address=s.trim();
}
public void setPhone(String n)
{ phone=n;
}
public String getDelMessage()
{ String delCondition="delete from member where qiyenumber="+number+"";
String str="";
Connection con;
Statement sql;
try { String uri="jdbc:mysql://127.0.0.1:3306/ssh?user=root&password=&useUnicode=true";
con=DriverManager.getConnection(uri);
sql=con.createStatement();
if(number.length()>0)
{ int m=sql.executeUpdate(delCondition);
if(m!=0)
{ str="对表中删除"+m+"条记录成功";
}
else
{ str="删除记录失败";
}
}
else
{ str="必须要有企业编号";
}
con.close();
}
catch(SQLException e)
{ str="输入的联系人不允许重复"+e;
}
return str;
}
}
测试:本系统用的是用了黑盒与白盒测试的方法。
7. 软件核心技术,存在问题等
a. 内部故障处理
在开发阶段可以随即修改数据库里的相应内容。
b. 外部故障处理
对编辑的程序进行重装载时,第一次装载认为错,修改。第二次运行,在需求调用时出错,有错误提示,重试。
c. 本软件可能产生的错误为数据库的错误信息,应由数据库管理员对数据库进行维护。为了确保系统恢复的能力,数据库管理员要定期对数据库进行备份。
数据的安全性、完整性要求:图书馆各项数据信息必须保证安全性和完整性。网络系统设有通信、程序、网络三级权限和口令管理,确保系统安全。
迎界面欢
查询企业信息
添加企业信息
修改企业信息
删除企业信息
查询企业用电信息
添加企业用电信息
删除企业用电信息
修改企业用电信息
8. 实验心得
通过本次课程设计,对软件工程的结构与各种模型的认识更加了解了,开发一套系统,最重要的是细心,并不是一定要做到面面俱到,但也要充分考虑到客户的需求和现实意义,不管什么系统,只用运用到实际应用中,才具有先现实意义。所以在准备工作中要正确分析社会需求了解现实应用,画出流程图,把大体框架做好,然后再逐一细化。我们不可能做到面面俱到,但一定要做到步步扎实,作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程。
展开阅读全文