东南大学自动化学院
《JAVA语言》
姓 名:专 业:组 别:设计时间:评定成绩:
课 程 设 计 报 告
徐征宇 学 号: 08009129 自动化 实 验 室: 同组人员: 08009224 陈洪骏 2011 年 8 月 15 日 ——2010 年 9 月 6 日 审阅教师:
1
目 录
系统概述……………………………………………………………3
程序功能分析………………………………………………………3
所做工作……………………………..……………………..4 总结
2
一、 系统概述:
在工业领域以及民用系统中,嵌入式系统占据着主要控制核心的地位,很多功能都由单片机,FPGA,DSP等嵌入式平台实现,但是这些嵌入式平台无法提供友好的用户界面,同时由于平台上EEPROM容量有限无法存储大量的数据,无法满足各个方面的需求。同时也不利于大量数据的分析管理。
于是产生了上位机的概念,通过一台PC机专门完成数据存储,数据分析,提供GUI,传输通信指令的功能,而上位机与控制器之间则是通过通信完成数据以及指令的传送,这样可以很好地弥补现有控制器的各类缺陷,最重要的是提供了一个便于操作的界面,提升用户体验,系统的具体关系图如下: 终端机1终端机2终端机3终端机N ……
由于现阶段我们对于嵌入式平台还不甚了解,所以在本课程中我们只是利用JAVA语言完成上位机的部分功能。由于不存在通信的关系,所以所有的数据只能通过手动输入,然后进行查询管理。
实际上本软件最终的目的已经接近一个数据库管理的软件,重点在于用户界面GUI的设计和使用JAVA管理数据库。
上位机 一、 程序功能分析:
程序功能主要可以分为三个部分:
第一、数据库管理,主要功能有对于数据库信息进行添加,删除,更新。这也就是所谓的数据库的数据管理。有关的管理项有设备编号,设备名称,电压,电流,故障名称,时间。添加的功能就是可以通过手动的方式将各个数据项添加到数据表格中;而数据删除是可以根据一定的条件批量删除数据;数据更新是可以根据搜索条件去更新制定的数据项目。
第二、数据库搜索,可以根据数据搜索的条件,搜索显示满足条件的数据项,同时如果搜索的条件是设备名称或者设备号则统计计算该设备的故障的次数。
第三、由于本软件存在用户登陆,那么必然存在用户管理这么一个问题,用户管理主要有用户注册,可以允许现有用户注册新用户;用户更新,允许现有用户更改用户名与密码;删除用户,允许用户删除制定用户。
以上的内容即是本软件所要实现的基本基本功能。
我们还希望为程序添加其他的增强性的功能,主要功能有两项:
3
第一、用户操作历史记录,主要是希望这个程序可以将每次用户对于数据库的更改输入一个文件,然后用户可以调用这些文件查询;
第二、数据恢复功能,主要是提供用户如果不满意本次修改的结果,可以将数据库恢复到上一次关闭时的状态。
三、所做工作:
本人主要是完成数据库编程的工作,下面通过软件的工作流程来阐述具体功能的实现途径。 首先是软件整体的流程:
开始
输入用户名、密码
提示错误
N正确?
Y 选择功能 NNN选择管理账户?选择管理数据库?选择查询数据库
YY Y
管理账户流程管理数据库流程查询数据库流程
N
是否退出
Y
退出
下面我们根据流程图来具体阐述各个部分的实现方式。
由于本软件牵涉到两个数据表格,一个是用户信息数据表格,其主键设置为username,还有数据项为password。
另一个数据表格就是设备管理的数据库表格,这个数据表格无主键,数据项有:num,
4
name,voltage,current,bugname,bugname。
两个数据表格之间无任何关联,相互独立。 本程序选用ODBC:JDBC桥来完成程序与数据库的链接。
1)用户登陆
用户一开始就会进入一个登陆的见面,需要输入有效地用户名与密码,用户名与密码通过TextArea的FocusListener获取,用login的ActionPerform的程序去搜索数据库中的用户名与密码,如果存在相同的项,则允许登入主界面否则提示错误,让用户返回重新登陆。关键代码如下:
Connection con=DriverManager.getConnection(connectDB); Statement stmt=con.createStatement();
rs=stmt.executeQuery(\建立连接 while((rs.next())&&(flag==1))//用于读取数据 { String name=rs.getString(1); //获得数据库第一列 String sex=rs.getString(2); // System.out.println(\姓名:\输出信息 // System.out.println(\性别:\ // System.out.println(login_username); boolean result1=name.equals(login_username); boolean result2=sex.equals(login_password);
if(result1&&result2){System.out.println(\login_frame.show();login.setVisible(false);}
}//flag作为标志位,发现完全符合则推出循环 if(flag==1){logfal.setVisible(true);}
右图为登陆失败的提示界面,允许返回登陆界面操作。
2)用户管理:
由于需要用到登陆的界面,那么必然牵涉到用户管理的问题。用户管理就与数据库息息相关。 首先是用户添加,与登陆界面类似,通过FocusListener完成数据信息的获取后,用sql的insert语句写入数据库。具体代码如下: try { Class.forName(\ } catch(ClassNotFoundException e1) { System.out.println(\ } try { Connection con=DriverManager.getConnection(connectDB); Statement stmt=con.createStatement();
5