数据库能源管理收费系统Word格式.docx
《数据库能源管理收费系统Word格式.docx》由会员分享,可在线阅读,更多相关《数据库能源管理收费系统Word格式.docx(18页珍藏版)》请在冰点文库上搜索。
人信息管理
能
源信息管理
历
史记录管理
账
号密码管理
2.5系统功能结构图
2.6数据流图
由于该系统的设计主要涉及到用户的查询和管理员的管理,而他们之间的联系相对较少,所以数据流图相对较为简单,数据的总体流程
登录
登录提示
管理用户信息
查看个人信息
管理账号,密码
能源管理
收费系统
管理能源费用
查看收费信息
管理历史记录
查看历史记录
顾客信息
账号信息
数
能源费用记录
据
历史信息
库
管理员
2.6.1总体数据流图
用户
1
个人
查
看
信息
需缴纳费用
2
费用信息
历史记录
存放
据库
能源信息表
管
理和修改
用户信息
能源价格录入
2
能源信息
理
能源费用录入
员
与
录入
4
数据库
2.6.2一层数据流图
用户表
历史纪录表
2.6.3二层数据流图
2.7 数据字典
名字:
描述:
描述用户的个人基本信息
定义:
由用户的姓名,性别,所在的单位,联系电话,地址和用户编号组成位置:
用户信息表
能源使用信息
描述了用户使用能源的情况
由用户水,电,气的价格,使用量,用户编号和月份组成位置:
能源使用信息表
记录了用户所有的能源使用信息
由用户编号,用户使用水,电,气总量组成位置:
历史信息表
不成功提示
返回用户各种操作不成功的原因;
不返回系统级错误;
定义:
用户人为操作失败的原因
位置:
建立用户,登录处理
成功提示
当删除用户成功后返回给用户的相关信息;
包含删除用户的用户名和删除该用户对系统的影响;
位置:
3、系统设计
3.1主界面的设计
为了实现上述的各项功能,我们需要设计一个可以直接使用并且帮助管理员和用户直接使用的菜单运行界面,该界面能将上述的所有功能具体的实现,能真正的供管理员和用户使用,用户和管理员通过该图形界面的相关操作便可以直接得到他们想要的得到的结果,由于下面将详细的讲述该系统的使用发法,所以这里不在将图进行展示。
3.2系统E-R图
根据上缅的数据流图和数据字典,我们可以画出相应的E-R图
18
用户姓名
用户编号
联系电话
3.2.1用户信息实体图
部门
所在单位
地址
管理员账号
账号,密码信息
管理员密码
3.2.2账号,密码信息管理实体图
水价格
电价格
3.2.3能源信息
月份
应缴纳水费
应缴纳电费
气价格
使用水量
使用电量
使用气量
总应缴纳费
应缴纳气费
n
管理
缴纳电费
3.2.5历史信息实体图
缴纳水费
缴纳气费
月份
总加纳用
查看
组成
能源使用情况
3.2.6总以E-R图
3.3数据库设计
3.3.1关系模式
用户(用户编号,姓名,联系电话,部门,所在单位)
能源的价格(用户编号,姓名,月份,需缴水费,需缴电费,需缴气费)历史信息(用户编号,姓名,月份,已缴纳水费,已缴纳电费,已缴纳气
费)
账号信息(用户编号/管理员编号,账号,密码)
3.3.2相应的表及其选项
(1)用户信息表
字段名
数据类型
是否为空
是否主键
说明
u_id
varchar
否
是
u_mane
姓名
u_conmpany
u_dept
u_tel
u_address
(2)用户信息表
管理员编号
(3)能源信息表
s_time
Datetime
e_time
p_water
Float
需缴水价
p_eletric
ity
需缴电价
p_gas
float
需缴气价
p_id
int
用户基本信息
能源价格管理
修改用户密码
管理员端
(4)能源信息表
已缴水价
已缴电价
已缴气价
(5)账号信息表
name
char
账号
passw
密码
4、详细设计
登陆
历史记录查询
用户端
4.1流程图
数据的录入
5、系统实现与测试
5.1开发平台和工具选择
该能源收费管理系统的开发与运行环境如下:
开发环境:
Windows7;
辅助工具:
eclipse,word绘图工具;
数据库管理系统:
oracle数据库;
运行环境:
WindowsXP/7;
5.2系统测试
由于水平有限,本次测试使用了黑盒测试。
点击“登陆”按钮进入该“能源收费管理系统”。
管理员从此登录进入。
界面如下:
登陆失败提示界面如下:
登陆成功提示界面如下:
登陆后程序主界面如下:
点击“用户信息录入”按钮进入该“用户信息录入”。
录入一个用户信息,成功后,提示如下:
点击“价格查询”按钮进入该“价格查询”并查询能源价格,界面如下:
点击“价格更改”按钮进入该“价格更改”并更改能源价格,界面如下:
点击“用户信息录入”按钮进入该“用户信息录入”并录入一个用户信息,界面如下:
点击“收费查询”按钮进入该“消费查询”并查询消费(收费)信息,界面如下:
点击“删除用户”按钮进入该“删除用户信息”并删除以为用户,界面如下:
至此,所有功能均已演示完毕。
六、课程设计总结
在本次课程设计中,在规定的时间内,我组基本上完成了课程设计的要求,开发出了题目所要求的软件。
通过本次课程设计,使我们对软件工程的理论有了更深刻的认识,认识到软件开发的步骤是紧密联系的,包括可行性研究,需求分析,总体设计,详细设计,实现和测试。
每一步骤都是不可缺少的,而且前面的步骤做的越详细,后面的工作就越好做。
越是在后面发现异议,需要修改,那么花费的成本就越大,即开发过程的返工强度就越大。
在软件开发的过程当中,合作的力量是不可忽视的。
一个人的作用终究是有限的,面对一个比较复杂的系统,只有很好的分工合作,才能在最短时间内完成任务。
由于软件开发需要分工合作,那么文档的严格规范性就显得尤为重要,自己的文档不能只有自己能看懂,严格意义上来说,一份文档对于所有程序员来说,开发出来的结果是一样的。
我们在开发的过程当中就是因为实体关系研究不够透彻,来回返工,浪费的大量时间。
再加上相关知识掌握不够深入,开发过程是相当困难的。
但是我们并没有放弃,每当困难的时候,就向指导老师请教,总能有所收获。
在开发过程当中还发现自己的知识有限,许多任务不能出色的完成,这就要求增强自学能力,通过查找相关资料,自学慢慢来完成。
通过本次课程设计,对于java编程,数据库的理论知识有了更深入的理解,培养了一定的自学能力,对于软件开发的过程有了初步的了解,掌握了软件开发的一些基本的技巧,锻炼的团队合作的能力,增强了自身的综合素质,受益颇多。
虽然完成了此次课程设计的任务,但只软件中还存在着很多可以完善的地方,有待以后在实践中积累更多知识并加以完善。
本小组成员完成课程设计的情况:
小组成员姓名
学号
完成任务的情况
贺竞辉
系统总体设计,负责需求分析,java程序代码的初级
编写。
潘馨
数据库系统详细设计与实现。
负责java程序代码的
调校和修改,以及应用程序的测试。
吴雅琳
搜集资料,文档资料的编写,图形的绘制。
参考文献
1.解析java程序设计/甘玲,张璞编著.-北京:
清华大学出版社,2006.9
2.数据库系统基础教程/厄尔曼,怀德姆著.-北京:
机械工业出版社,2008.8
附录:
部分关键代码
用户信息录入模块
packageuser_info_insert;
importjava.awt.BorderLayout;
importjava.awt.GridBagLayout;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.sql.Statement;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.SwingConstants;
publicclassinsert_user_informationextendsJFrameimplementsActionListener{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
privateConnectioncon=null;
Statementstmt=null;
privateJLabelTitle=newJLabel("
请输入新用户的信息"
SwingConstants.CENTER);
privateJLabelidlabel=newJLabel("
用户ID "
);
privateJTextFieldid=newJTextField(15);
privateJLabelnamelabel=newJLabel("
姓名 "
privateJTextFieldname=newJTextField(15);
privateJLabelsexlabel=newJLabel("
性别 "
privateJTextFieldsex=newJTextField(15);
privateJLabeladdresslabel=newJLabel("
家庭地址"
privateJTextFieldaddress=newJTextField(15);
privateJLabeltelephonelabel=newJLabel("
电话 "
privateJTextFieldtelephone=newJTextField(15);
privateJLabelworkplacelabel=newJLabel("
工作地点"
privateJTextFieldworkplace=newJTextField(15);
privateJLabeldepartmentlabel=newJLabel("
部门 "
privateJTextFielddepartment=newJTextField(15);
privateJLabelremarklabel=newJLabel("
备注 "
privateJTextFieldremark=newJTextField(15);
privateJButtoncommit=newJButton("
提交"
publicinsert_user_information(){
setTitle("
用户信息录入"
setSize(400,400);
getContentPane().setLayout(newGridBagLayout());
JPaneljp1=newJPanel();
jp1.add(idlabel);
jp1.add(id);
JPaneljp2=newJPanel();
jp2.add(namelabel);
jp2.add(name);
JPaneljp3=newJPanel();
jp3.add(sexlabel);
jp3.add(sex);
JPaneljp4=newJPanel();
jp4.add(addresslabel);
jp4.add(address);
JPaneljp5=newJPanel();
jp5.add(telephonelabel);
jp5.add(telephone);
JPaneljp6=newJPanel();
jp6.add(workplacelabel);
jp6.add(workplace);
JPaneljp7=newJPanel();
jp7.add(departmentlabel);
jp7.add(department);
JPaneljp8=newJPanel();
jp8.add(remarklabel);
jp8.add(remark);
JPaneljp9=newJPanel();
jp9.setLayout(newGridLayout(9,1));
jp9.add(Title);
jp9.add(jp1);
jp9.add(jp2);
jp9.add(jp3);
jp9.add(jp4);
jp9.add(jp5);
jp9.add(jp6);
jp9.add(jp7);
jp9.add(jp8);
JPaneljp10=newJPanel();
jp10.setLayout(newBorderLayout());
jp10.add("
Center"
jp9);
add(jp10);
add(commit);
commit.addActionListener(this);
try{
Stringurl="
jdbc:
oracle:
thin:
@172.23.26.148:
1521:
orcl"
;
Class.forName("
oracle.jdbc.driver.OracleDriver"
// System.out.println("
驱动程序已装载"
即将连接数据库"
con=DriverManager.getConnection(url,"
DBdesign128"
"
111"
System.out.println("
loadok"
stmt=con.createStatement();
}catch(Exceptionex){System.out.println(ex.getMessage());
}
publicvoidactionPerformed(ActionEventevt){Stringuid=id.getText().trim();
Stringuname=name.getText().trim();
Stringusex=sex.getText().trim();
Stringuadd=address.getText().trim();
Stringutele=telephone.getText().trim();
Stringuwork=workplace.getText().trim();
Stringudepart=department.getText().trim();
Stringure=remark.getText().trim();
Stringcommand="
insertintouser_infovalues('
"
+uid+"
'
'
+uname
+"
+usex+"
+uadd+"
+utele+"
+uwork
+udepart+"
+ure+"
)"
if(uid.length()!
=0){
try{
stmt.executeUpdate(command);
JOptionPane.showMessageDialog(commit,"
录入成功!
提示"
JOptionPane.INFORMATION_MESSAGE);
stmt.close();
JOptionPane.showMessageDialog(commit,"
输入错误"
警告"
JOptionPane.ERROR_MESSAGE);
}else{
ID不能为空"
publicstaticvoidmain(Stringargs[]){
JFramemyframe=newinsert_user_information();
myframe.setVisible(true);