电信运营支撑系统信息采集系统课程设计报告.docx

上传人:b****0 文档编号:12769181 上传时间:2023-04-22 格式:DOCX 页数:18 大小:99.25KB
下载 相关 举报
电信运营支撑系统信息采集系统课程设计报告.docx_第1页
第1页 / 共18页
电信运营支撑系统信息采集系统课程设计报告.docx_第2页
第2页 / 共18页
电信运营支撑系统信息采集系统课程设计报告.docx_第3页
第3页 / 共18页
电信运营支撑系统信息采集系统课程设计报告.docx_第4页
第4页 / 共18页
电信运营支撑系统信息采集系统课程设计报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

电信运营支撑系统信息采集系统课程设计报告.docx

《电信运营支撑系统信息采集系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《电信运营支撑系统信息采集系统课程设计报告.docx(18页珍藏版)》请在冰豆网上搜索。

电信运营支撑系统信息采集系统课程设计报告.docx

电信运营支撑系统信息采集系统课程设计报告

 

吉首大学信息科学与工程学院

10级计算机科学与技术课程设计

电信运营支撑系统-信息采集系统

班级:

二班

指导老师:

小组名称:

姓名

学号

组长

成员

成员

成员

成员

成员

成员

成员

 

1、设计目的

1.了解java的项目设计过程及思想,以及java项目开发的基本过程。

2.巩固所学的java知识。

3.培养学生分析.解决问题的能力,以及团队的合作能力!

4.实现java跟数据库的链接,制作出一个数据采集系统,将采集到的信息存到相应的数据库中!

2、设计内容

1.采集数据:

以文件流的形式将数据读入程序中,并将数据进行解析,该过程在implementsGather接口类中的gather方法实现

2.

(1)a.文件备份:

用来备份没有下线信息用户的信息和一些其他程序用到的数据,该风发是implementsBackUP接口类中的store方法,一对象流的方式存储

b.文件加载

以文件流的形式将数据读入程序中,并数据进行解析,该过程在implementsGather接口类中的gather方法实现

(2)a.文件备份

用来备份设有下线信息用户的信息和一些其他程序用到的数据,该方法是implements接口的类方法,以对象流的方式保存。

b.文件加载

用来将上次保存的数据以对象流的方法加载到程序中,并以对象object的方式返回给调用段

3.Socket网络编程

(1)客户端:

implementsClient,实现该类的send方法,将数据以流的方式发送到服务器端,之前先建立tcp连接,要设好端口号,服务器ip。

(2)服务器端:

implementsServer,实现receive方法,将数据以流的方式进行接收,并存入数据库。

通过new下一个DBStore对象,并调用store方法。

4.jdbc数据库操作

通过implementsDBStore并实现其中的方法saveToDB

方法:

a.加载驱动

b.得到连链

c.得到PrepareStament语句

d.对数据进行批处理,每1000条送入数据库

e.关闭资源

5.测试

(1)通过建立一个类,在该类的main方法中new一个client对象并调用ClientImpl中的sent()方法。

(2)再建一个类,在该类中的main方法new一个server对象,并调用ServerImpl的receive方法。

(3)先启动ClientImpl,再启动ClientImpl中的Sent方法

6.熟悉在控制终端利用sql语言创建表,建立用户,以及对用户的赋权操作。

以及对表的查询操作

 

7.程序设计的流程图为:

三.设计平台

1.Oracle工作环境

2.基于Java的可扩展开发平台eclipce

3.控制终端

四.设计过程

1.本系统分五个模块,一个模块对应相应的实验内容。

A.备份模块类BackUpImpl

A.1成员函数store:

用与读取文件中的数据,并且用布尔类型值判断其实追加还是覆盖

Load:

用于收集到的数据暂时存储到文件中,一面数据一次性采集时不成功而丢失

A.2函数的具体实现:

publicvoidstore(Stringkey,Objectdata,booleanflag)throwsException

{

Filefile=newFile(parent);

FileOutputStreamfin=null;

if(!

file.exists())

{

file.mkdir();

}

file=newFile(parent,key);

file.createNewFile();

if(flag==STORE_APPEND)

{

fin=newFileOutputStream(file,true);

}

if(flag==STORE_OVERRIDE)

{

fin=newFileOutputStream(file,false);

}

ObjectOutputStreambop=newObjectOutputStream(fin);

bop.writeObject(data);

if(bop!

=null)

{

bop.close();

}

if(fin!

=null)

{

fin.close();

}

}

B.数据采集模块GatherImpl

B.1将上线相关的数据存储到HashMap类对象中

Mapmap=newHashMap();

B.2将下线数据存储到List类对象中

ArrayListresultBIDR=newArrayList();

B.3实现gather数据采集模块的具体程序:

publicCollectiongather()throwsException

{

Longskip1=null;

BackUpImplim=newBackUpImpl();

Objectobject=im.load("temp",BackUP.LOAD_UNREMOVE);

skip1=(Long)im.load("skip",BackUP.LOAD_UNREMOVE);

if(skip1==null)

{

skip1=0l;

}

MaptempMap=(Map)object;

if(tempMap!

=null)

{

map.putAll(tempMap);

}

Filefile=newFile("Data/radwtmp_test");//?

?

?

?

?

?

FileReaderre=newFileReader(file);

BufferedReaderbr=newBufferedReader(re);

Stringresult="";//?

?

?

?

?

?

?

?

?

?

Stringname="";//?

?

?

Stringip="";//ip?

?

Stringstate="";//?

?

?

?

?

?

?

Stringtime="";//?

?

Stringnsa="";//NAS_IP?

?

br.skip(skip1);

while((result=br.readLine())!

=null)//?

?

?

?

{

skip1+=result.length()+1;

result=result.substring(1,result.length());

String[]st=result.split("[|]");

name=st[0];

nsa=st[1];

state=st[2];

time=st[3];

ip=st[4];

BIDRbidr=newBIDR();//?

?

?

?

?

?

?

?

?

if("7".equals(state))//?

?

?

?

?

?

?

?

?

?

?

{

bidr.setAAA_login_name(name);

bidr.setLogin_date(newTimestamp(Long.parseLong(time)*1000));

bidr.setNAS_ip(nsa);

bidr.setLogin_ip(ip);

map.put(ip,bidr);

}

if("8".equals(state))//?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

{

BIDRbidr1=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)*1000-bidr1

.getLogin_date().getTime()));

bidr.setLogout_date(newTimestamp(Long

.parseLong(time)*1000));

bidr.setLogin_date(bidr1.getLogin_date());

resultBIDR.add(bidr);

}

}

BackUpImplbu=newBackUpImpl();

bu.store("temp",map,BackUP.STORE_OVERRIDE);

bu.store("skip",skip1,BackUP.STORE_OVERRIDE);

returnresultBIDR;

}

C.数据入库模块DBStoreImpl:

将采集到的数据入库,saveToDB方法的具体实现:

publicvoidsaveToDB(Collectioncollection)throwsException{

ArrayListlist=(ArrayList)collection;

co=this.getConnection();

System.out.println("?

?

?

?

?

?

?

?

?

?

?

.......");

for(inti=0;i

{

BIDRbidr=list.get(i);

Stringname=bidr.getAAA_login_name();

Stringip=bidr.getLogin_ip();

Stringnas=bidr.getNAS_ip();

java.sql.DateloginDate=newjava.sql.Date((bidr.getLogin_date().getTime()));

java.sql.DatelogoutDate=newjava.sql.Date(bidr.getLogout_date().getTime());

inttime=bidr.getTime_deration();

intday=logoutDate.getDate();

if(flag!

=day)

{

if(pre!

=null)

{

pre.executeBatch();

pre.close();

}

flag=day;

Stringsql="insertintotable_"+day+"values(?

?

?

?

?

?

)";

pre=co.prepareStatement(sql);

}

pre.setString(1,name);

pre.setString(2,ip);

pre.setString(3,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()+"?

");

}

publicConnectiongetConnection()throwsException

{

Class.forName(this.driver);

Connectioncon=DriverManager.getConnection(this.url,this.user,this.password);

returncon;

}

D.客户端模块ClientImpl

D.1客户端和服务端要有相同的port

Stringhost="127.0.0.1";

intport=3567;

D.2客户端给服务端传送数据的send方法具体实现:

publicvoidsend(Collectioncollection)throwsException

{

try{

ArrayListcur1=(ArrayList)back.load("clienback",BackUP.LOAD_REMOVE);

socket=newSocket(host,port);

OutputStreamout=socket.getOutputStream();

ObjectOutputStreamob=newObjectOutputStream(out);

if(cur1!

=null)

{

collection.addAll(cur1);

}

ob.writeObject(collection);

ob.close();

out.close();

socket.close();

}

catch(Exceptione)

{

e.printStackTrace();

back.store("clientback",collection,BackUP.STORE_OVERRIDE);

}

}

E.服务端模块ServerImpl

E.1和客户端有想痛痛的端口号

intport=3567;

E.2实现receiver方法,将数据以流的方式进行接收,并且做入库操作:

publicvoidrevicer()throwsException

{

//TODOAuto-generatedmethodstub

server=newServerSocket(port);

Socketsocket=server.accept();

Objectunfinsh=serverback.load("serverback",BackUP.LOAD_REMOVE);

InputStreamin=socket.getInputStream();

ObjectInputStreamob=newObjectInputStream(in);

ArrayListcur=(ArrayList)ob.readObject();

if(unfinsh!

=null)

{

ArrayListcur1=(ArrayList)unfinsh;

cur.addAll(cur1);

}

try

{

DBStoreImpldb=newDBStoreImpl();

db.saveToDB(cur);

}

catch(Exceptione1)

{

serverback.store("serverback",cur,BackUP.STORE_OVERRIDE);

e1.printStackTrace();

}

ob.close();

in.close();

socket.close();

}

@Override

publicvoidshutdown()

{

try

{

server.close();

}catch(IOExceptione)

{

e.printStackTrace();

}

}

5.设计结果及测试

1.在控制终端建立用户后,建立表

2.在运行ServerImpl类,再运行ClientImpl类。

3.在控制终端查询26和25号表的数据总数,结果为:

4.在Oracle平台上查看库里的数据为:

六.设计总结

这是我们第一次这样大的一个群体合作做一个系统,亲身的感受了团队的力量。

我们知道Java是面向对象的语言,在Java开发平台Eclipce里封装好了大量的类和方法,就Java而言,万物皆对象。

我们写一个程序,只需要不停的调用现成的类库和方法就行了,然后借用已学的Java知识,实现接口类里的方法。

通过这一次课程设计,我们发现好多的做项目的必备要求,具体如下几点:

1.必须理清,了解项目的要求。

分析项目的内在要求,建立需求分析,画出相应的类图,然后理清块与块之间的关系。

2.基础的课程设计语言知识要掌握牢固。

像基本的文件流操作,类的相关调用和导入,还有数据库跟Java建立连接的步骤及操作!

3.当团队合作时,应该多讨论,交换各自的意见,然后分工合作,当你做某一个模块的时候,相应的注释必不可少,为了方便你的队友理解你的代码。

通过这一次的课程设计,我们了解了做项目的简单形式。

和我们平时做的Java程序设计大不一样,可想而知,如果没有这样的简单培训,当我们真正的遇到了一个项目,我们会无从下手。

不管这一次的课程设计结果如何,我们都获益匪浅,感谢指导老师们。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1