电信运营支撑系统-信息采集系统课程设计报告_第1页
电信运营支撑系统-信息采集系统课程设计报告_第2页
电信运营支撑系统-信息采集系统课程设计报告_第3页
电信运营支撑系统-信息采集系统课程设计报告_第4页
电信运营支撑系统-信息采集系统课程设计报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、吉首大学信息科学与工程学院10级计算机科学与技术课程设计电信运营支撑系统-信息采集系统班 级: 二 班 指导老师: 小组名称: 姓名学号组长成员成员成员成员成员成员成员 1、 设计目的1. 了解java的项目设计过程及思想,以及java项目开发的基本过程。2. 巩固所学的java知识。3. 培养学生分析.解决问题的能力,以及团队的合作能力!4.实现java跟数据库的链接,制作出一个数据采集系统,将采集到的信息存到相应的数据库中!2、 设计内容1. 采集数据:以文件流的形式将数据读入程序中,并将数据进行解析,该过程在implements Gather接口类中的gather方法实现2.(1)a.文

2、件备份:用来备份没有下线信息用户的信息和一些其他程序用到的数据,该风发是implements BackUP接口类中的store方法,一对象流的方式存储b.文件加载以文件流的形式将数据读入程序中,并数据进行解析,该过程在implements Gather接口类中的gather方法实现(2)a.文件备份用来备份设有下线信息用户的信息和一些其他程序用到的数据,该方法是implements接口的类方法,以对象流的方式保存。b.文件加载 用来将上次保存的数据以对象流的方法加载到程序中,并以对象object的方式返回给调用段3.Socket网络编程(1)客户端:implements Client ,实现该

3、类的send方法,将数据以流的方式发送到服务器端,之前先建立tcp连接,要设好端口号,服务器ip。(2) 服务器端:implements Server,实现receive方法,将数据以流的方式进行接收,并存入数据库。通过new下一个DBStore对象,并调用store方法。4.jdbc数据库操作通过implements DBStore并实现其中的方法saveToDB方法:a.加载驱动b.得到连链c.得到PrepareStament语句d.对数据进行批处理,每1000条送入数据库e.关闭资源5.测试(1)通过建立一个类,在该类的main方法中new一个client对象并调用ClientImpl中

4、的sent()方法。(2) 再建一个类,在该类中的main方法new一个server对象,并调用ServerImpl的receive方法。(3)先启动ClientImpl,再启动ClientImpl中的Sent方法6. 熟悉在控制终端利用sql语言创建表,建立用户,以及对用户的赋权操作。以及对表的查询操作7. 程序设计的流程图为:三设计平台1. Oracle工作环境2. 基于Java的可扩展开发平台eclipce3. 控制终端四设计过程1.本系统分五个模块,一个模块对应相应的实验内容。A. 备份模块类BackUpImplA.1成员函数store:用与读取文件中的数据,并且用布尔类型值判断其实追

5、加还是覆盖Load:用于收集到的数据暂时存储到文件中,一面数据一次性采集时不成功而丢失A.2函数的具体实现:public void store(String key, Object data, boolean flag) throws ExceptionFile file = new File(parent); FileOutputStream fin = null ; if(!file.exists() file.mkdir(); file=new File(parent,key); file.createNewFile(); if(flag=STORE_APPEND) fin = new

6、FileOutputStream(file,true); if(flag=STORE_OVERRIDE) fin = new FileOutputStream(file,false); ObjectOutputStream bop = new ObjectOutputStream(fin); bop.writeObject(data); if(bop!=null) bop.close(); if(fin!=null) fin.close(); B.数据采集模块GatherImplB.1将上线相关的数据存储到HashMap类对象中Map<String,BIDR> map = new

7、HashMap<String,BIDR>();B.2将下线数据存储到List类对象中ArrayList<BIDR> resultBIDR = new ArrayList<BIDR>();B.3实现gather数据采集模块的具体程序:public Collection<BIDR> gather() throws Exception Long skip1=null;BackUpImpl im = new BackUpImpl();Object object = im.load("temp",BackUP.LOAD_UNREMOVE

8、);skip1=(Long)im.load("skip", BackUP.LOAD_UNREMOVE);if(skip1=null)skip1=0l;Map<String,BIDR> tempMap = (Map<String,BIDR>)object;if(tempMap!=null)map.putAll(tempMap);File file = new File("Data/radwtmp_test");/构造文件对象FileReader re = new FileReader(file);BufferedReader br

9、= new BufferedReader(re);String result = "" /读取每一行的临时结果String name = "" /用户名String ip = "" /ip地址String state = "" /用户的在线状态String time = "" /时间String nsa = "" / NAS_IP地址br.skip(skip1);while (result = br.readLine() != null) /读取文件 skip1+=resul

10、t.length()+1;result = result.substring(1, result.length();String st = result.split("|"); name = st0;nsa = st1;state = st2;time = st3;ip = st4;BIDR bidr = new BIDR();/构造临时的对象存储if ("7".equals(state) /若是在线的就加入数组中 bidr.setAAA_login_name(name);bidr.setLogin_date(new Timestamp(Long.par

11、seLong(time)*1000);bidr.setNAS_ip(nsa);bidr.setLogin_ip(ip); map.put(ip, bidr);if ("8".equals(state) /如果是啊下线就计算他的在线时间长 BIDR bidr1 = map.remove(ip);bidr.setLogin_ip(ip);bidr.setNAS_ip(nsa); bidr.setAAA_login_name(bidr1.getAAA_login_name(); bidr.setTime_deration(int) (Long.parseLong(time)*10

12、00 - bidr1.getLogin_date().getTime();bidr.setLogout_date(new Timestamp(Long.parseLong(time)*1000);bidr.setLogin_date(bidr1.getLogin_date();resultBIDR.add(bidr); BackUpImpl bu = new BackUpImpl(); bu.store("temp", map, BackUP.STORE_OVERRIDE); bu.store("skip", skip1, BackUP.STORE_OV

13、ERRIDE); return resultBIDR;C.数据入库模块DBStoreImpl:将采集到的数据入库,saveToDB方法的具体实现:public void saveToDB(Collection<BIDR> collection) throws Exception ArrayList<BIDR> list = (ArrayList<BIDR>)collection; co = this.getConnection(); System.out.println("数据正在保存在数据库中.");for(int i = 0; i &

14、lt; list.size(); i+)BIDR bidr = list.get(i);String name = bidr.getAAA_login_name();String ip = bidr.getLogin_ip();String nas = bidr.getNAS_ip();java.sql.Date loginDate = new java.sql.Date(bidr.getLogin_date().getTime();java.sql.Date logoutDate =new java.sql.Date( bidr.getLogout_date().getTime();int

15、time = bidr.getTime_deration();int day = logoutDate.getDate();if(flag!=day)if(pre!=null)pre.executeBatch();pre.close();flag=day;String sql = "insert into table_"+day+" values(?,?,?,?,?,?)"pre = co.prepareStatement(sql);pre.setString(1, name);pre.setString(2, ip);pre.setString(3,

16、nas);pre.setDate(4, loginDate);pre.setDate(5, logoutDate);pre.setInt(6, time);pre.addBatch();if(i%1000=0 | i=list.size()-1)if(pre!=null)pre.executeBatch();System.out.println("导入数据有 :"+list.size()+"个"); public Connection getConnection() throws ExceptionClass.forName(this.driver);C

17、onnection con = DriverManager.getConnection(this.url,this.user,this.password);return con;D.客户端模块ClientImplD.1客户端和服务端要有相同的portString host = "127.0.0.1" ; int port = 3567;D.2客户端给服务端传送数据的send方法具体实现:public void send(Collection<BIDR> collection) throws Exception try ArrayList<BIDR>

18、cur1 = (ArrayList<BIDR>)back.load("clienback", BackUP.LOAD_REMOVE); socket = new Socket(host,port); OutputStream out = socket.getOutputStream(); ObjectOutputStream ob = new ObjectOutputStream(out); if(cur1!=null) collection.addAll(cur1); ob.writeObject(collection); ob.close(); out.cl

19、ose(); socket.close(); catch (Exception e) e.printStackTrace();back.store("clientback",collection ,BackUP.STORE_OVERRIDE ); E.服务端模块ServerImplE.1和客户端有想痛痛的端口号int port = 3567;E.2实现receiver方法,将数据以流的方式进行接收,并且做入库操作:public void revicer() throws Exception/ TODO Auto-generated method stub server =

20、new ServerSocket(port); Socket socket = server.accept();Object unfinsh = serverback.load("serverback",BackUP.LOAD_REMOVE); InputStream in = socket.getInputStream(); ObjectInputStream ob = new ObjectInputStream(in); ArrayList<BIDR> cur = (ArrayList<BIDR>)ob.readObject(); if(unfinsh!=null) ArrayList<BIDR> cur1 = (ArrayList<BIDR>)unfinsh; cur.addAll(cur1); tryDBStoreImpl db = new DBStoreImpl(); db.saveToDB(cur); catch (Exception e1) serverback.store("serverback",cur , BackUP.STORE_OVERRIDE);e1.printStackTrace();ob.close();in.close();so

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论