版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、吉首大學(xué)信息科學(xué)與工程學(xué)院10級(jí)計(jì)算機(jī)科學(xué)與技術(shù)課程設(shè)計(jì)電信運(yùn)營(yíng)支撐系統(tǒng)-信息采集系統(tǒng)班 級(jí): 二 班 指導(dǎo)老師: 小組名稱(chēng): 姓名學(xué)號(hào)組長(zhǎng)成員成員成員成員成員成員成員 1、 設(shè)計(jì)目的1. 了解java的項(xiàng)目設(shè)計(jì)過(guò)程及思想,以及java項(xiàng)目開(kāi)發(fā)的基本過(guò)程。2. 鞏固所學(xué)的java知識(shí)。3. 培養(yǎng)學(xué)生分析.解決問(wèn)題的能力,以及團(tuán)隊(duì)的合作能力!4.實(shí)現(xiàn)java跟數(shù)據(jù)庫(kù)的鏈接,制作出一個(gè)數(shù)據(jù)采集系統(tǒng),將采集到的信息存到相應(yīng)的數(shù)據(jù)庫(kù)中!2、 設(shè)計(jì)內(nèi)容1. 采集數(shù)據(jù):以文件流的形式將數(shù)據(jù)讀入程序中,并將數(shù)據(jù)進(jìn)行解析,該過(guò)程在implements Gather接口類(lèi)中的gather方法實(shí)現(xiàn)2.(1)a.文
2、件備份:用來(lái)備份沒(méi)有下線(xiàn)信息用戶(hù)的信息和一些其他程序用到的數(shù)據(jù),該風(fēng)發(fā)是implements BackUP接口類(lèi)中的store方法,一對(duì)象流的方式存儲(chǔ)b.文件加載以文件流的形式將數(shù)據(jù)讀入程序中,并數(shù)據(jù)進(jìn)行解析,該過(guò)程在implements Gather接口類(lèi)中的gather方法實(shí)現(xiàn)(2)a.文件備份用來(lái)備份設(shè)有下線(xiàn)信息用戶(hù)的信息和一些其他程序用到的數(shù)據(jù),該方法是implements接口的類(lèi)方法,以對(duì)象流的方式保存。b.文件加載 用來(lái)將上次保存的數(shù)據(jù)以對(duì)象流的方法加載到程序中,并以對(duì)象object的方式返回給調(diào)用段3.Socket網(wǎng)絡(luò)編程(1)客戶(hù)端:implements Client ,實(shí)現(xiàn)該
3、類(lèi)的send方法,將數(shù)據(jù)以流的方式發(fā)送到服務(wù)器端,之前先建立tcp連接,要設(shè)好端口號(hào),服務(wù)器ip。(2) 服務(wù)器端:implements Server,實(shí)現(xiàn)receive方法,將數(shù)據(jù)以流的方式進(jìn)行接收,并存入數(shù)據(jù)庫(kù)。通過(guò)new下一個(gè)DBStore對(duì)象,并調(diào)用store方法。4.jdbc數(shù)據(jù)庫(kù)操作通過(guò)implements DBStore并實(shí)現(xiàn)其中的方法saveToDB方法:a.加載驅(qū)動(dòng)b.得到連鏈c.得到PrepareStament語(yǔ)句d.對(duì)數(shù)據(jù)進(jìn)行批處理,每1000條送入數(shù)據(jù)庫(kù)e.關(guān)閉資源5.測(cè)試(1)通過(guò)建立一個(gè)類(lèi),在該類(lèi)的main方法中new一個(gè)client對(duì)象并調(diào)用ClientImpl中
4、的sent()方法。(2) 再建一個(gè)類(lèi),在該類(lèi)中的main方法new一個(gè)server對(duì)象,并調(diào)用ServerImpl的receive方法。(3)先啟動(dòng)ClientImpl,再啟動(dòng)ClientImpl中的Sent方法6. 熟悉在控制終端利用sql語(yǔ)言創(chuàng)建表,建立用戶(hù),以及對(duì)用戶(hù)的賦權(quán)操作。以及對(duì)表的查詢(xún)操作7. 程序設(shè)計(jì)的流程圖為:三設(shè)計(jì)平臺(tái)1. Oracle工作環(huán)境2. 基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)eclipce3. 控制終端四設(shè)計(jì)過(guò)程1.本系統(tǒng)分五個(gè)模塊,一個(gè)模塊對(duì)應(yīng)相應(yīng)的實(shí)驗(yàn)內(nèi)容。A. 備份模塊類(lèi)BackUpImplA.1成員函數(shù)store:用與讀取文件中的數(shù)據(jù),并且用布爾類(lèi)型值判斷其實(shí)追
5、加還是覆蓋Load:用于收集到的數(shù)據(jù)暫時(shí)存儲(chǔ)到文件中,一面數(shù)據(jù)一次性采集時(shí)不成功而丟失A.2函數(shù)的具體實(shí)現(xiàn):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.數(shù)據(jù)采集模塊GatherImplB.1將上線(xiàn)相關(guān)的數(shù)據(jù)存儲(chǔ)到HashMap類(lèi)對(duì)象中Map<String,BIDR> map = new
7、HashMap<String,BIDR>();B.2將下線(xiàn)數(shù)據(jù)存儲(chǔ)到List類(lèi)對(duì)象中ArrayList<BIDR> resultBIDR = new ArrayList<BIDR>();B.3實(shí)現(xiàn)gather數(shù)據(jù)采集模塊的具體程序: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");/構(gòu)造文件對(duì)象FileReader re = new FileReader(file);BufferedReader br
9、= new BufferedReader(re);String result = "" /讀取每一行的臨時(shí)結(jié)果String name = "" /用戶(hù)名String ip = "" /ip地址String state = "" /用戶(hù)的在線(xiàn)狀態(tài)String time = "" /時(shí)間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();/構(gòu)造臨時(shí)的對(duì)象存儲(chǔ)if ("7".equals(state) /若是在線(xiàn)的就加入數(shù)組中 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) /如果是啊下線(xiàn)就計(jì)算他的在線(xiàn)時(shí)間長(zhǎng) 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.數(shù)據(jù)入庫(kù)模塊DBStoreImpl:將采集到的數(shù)據(jù)入庫(kù),saveToDB方法的具體實(shí)現(xiàn):public void saveToDB(Collection<BIDR> collection) throws Exception ArrayList<BIDR> list = (ArrayList<BIDR>)collection; co = this.getConnection(); System.out.println("數(shù)據(jù)正在保存在數(shù)據(jù)庫(kù)中.");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("導(dǎo)入數(shù)據(jù)有 :"+list.size()+"個(gè)"); public Connection getConnection() throws ExceptionClass.forName(this.driver);C
17、onnection con = DriverManager.getConnection(this.url,this.user,this.password);return con;D.客戶(hù)端模塊ClientImplD.1客戶(hù)端和服務(wù)端要有相同的portString host = "127.0.0.1" ; int port = 3567;D.2客戶(hù)端給服務(wù)端傳送數(shù)據(jù)的send方法具體實(shí)現(xiàn):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.服務(wù)端模塊ServerImplE.1和客戶(hù)端有想痛痛的端口號(hào)int port = 3567;E.2實(shí)現(xiàn)receiver方法,將數(shù)據(jù)以流的方式進(jìn)行接收,并且做入庫(kù)操作: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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版八年級(jí)數(shù)學(xué)下冊(cè)《19.1.1變量與函數(shù)》同步測(cè)試題含答案
- 2025年滬教版九年級(jí)地理下冊(cè)階段測(cè)試試卷
- 2025年人民版八年級(jí)物理上冊(cè)月考試卷
- 2024版國(guó)際貿(mào)易格式合同
- 2025年上教版八年級(jí)科學(xué)上冊(cè)月考試卷
- 2025年人民版八年級(jí)科學(xué)上冊(cè)階段測(cè)試試卷
- 2025年人民版必修2生物上冊(cè)月考試卷含答案
- 2025年中圖版六年級(jí)語(yǔ)文下冊(cè)月考試卷
- 二零二五年度自然人財(cái)產(chǎn)繼承處理合同3篇
- 2025年測(cè)繪勞務(wù)分包與城市景觀設(shè)計(jì)合同3篇
- 新編建筑施工扣件式鋼管腳手架安全技術(shù)規(guī)范
- 三年級(jí)下冊(cè)小猿口算題1000道
- 決策的藝術(shù)課件
- 了不起的狐貍爸爸-全文打印
- 國(guó)際經(jīng)濟(jì)學(xué)國(guó)際貿(mào)易的標(biāo)準(zhǔn)理論
- 8D報(bào)告培訓(xùn)教材(PPT 47頁(yè))
- -居民死亡醫(yī)學(xué)證明(推斷)書(shū)
- 糖尿病酮癥酸中毒病例討論-文檔資料
- 液相色譜質(zhì)譜質(zhì)譜儀LCMSMSSYSTEM
- 民辦非企業(yè)單位章程核準(zhǔn)表-空白表格
- 派克與永華互換表
評(píng)論
0/150
提交評(píng)論