亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 5.+

?? jSearch - turns search Engines into FIND engines - Programming in JAVA Copyright (C) 1999-2009 Hun
?? +
字號:
軟件設(shè)計詳細(xì)說明書

1.	引言

1.1	編寫目的
	將概要設(shè)計進(jìn)行細(xì)化,產(chǎn)生與源代碼的直接映像

1.2	背景

1.3	定義

1.4	參考資料
	《軟件工程》,電子工業(yè)出版社

2.	程序(模塊)系統(tǒng)的組織結(jié)構(gòu)
	JSApplet
	SearchThread

3.	模塊JSApplet設(shè)計說明

3.1	模塊JSApplet描述
		用于人機(jī)交互。所有的界面顯示。所有的用戶操作及軟件對用戶操作的響應(yīng)主要在這上面進(jìn)行。
		用于存放全局變量。在這里全局變量作為通訊的一種重要手段,因?yàn)樵谶@里使用的是Applet,所以所有的全局變量其實(shí)可以看作是Applet上的一個對象供其它對象直接存儲。

3.2	功能
	見描述
	
3.3	性能
	
3.4	輸入項(xiàng)
	搜索串
	選擇的引擎
	
3.5	輸出項(xiàng)
	JSApplet的響應(yīng)
	
3.6	算法
	定義了下列方法用于調(diào)用:
	//JSApplet初始化
	public void init() 
	//設(shè)置按鈕狀態(tài),在init()中使用。
	void controlSetting() 
	//從輸入文件JSENGINES.TXT中整理出搜索引擎的信息
	Hashtable getEngData() 
	//從輸入文件JSENGINES.TXT中整理出搜索引擎的類別(間接通過getEngData()取得。)
	Vector getEngCateg(Hashtable engData)
	//按鈕狀態(tài)設(shè)定
	static void buttonStatus(int Status) 
	//搜索引擎類別選擇
	void categorySelect() 
	//改變語言
	void changeLanguage(int languageIndex) 
	//PREVIEW-STATUS-MESSAGES的顯示狀態(tài)切換
	void switchPSM(boolean p, boolean s, boolean m) 
	//ENGINES&OPTIONS&ABOUT的顯示狀態(tài)切換
	void switchEOA(boolean e, boolean o, boolean a) 
	//清除所有顯示
	void clearAll() 
	//開始搜索
	void startSearch() 
	//停止搜索
	void stopSearch() 
	//新建搜索
	void newSearch() 
	
3.7	流程邏輯
	初始化:
		//取得搜索引擎信息
		engDataTable = getEngData();
		engDataCateg = getEngCateg(engDataTable);
	
		//設(shè)置控件
		controlSetting();
		
		//加入事件監(jiān)聽器
	開啟搜索:
		for (Enumeration en = engDataTable.elements(); en.hasMoreElements();) {
			engDtl = (EnginesDetails)(en.nextElement());
			if ((engDtl.name).equals(enginesSelected[srchNo])) {
				
				//將srchChain中的"^"置換成待搜索的字串
				srchChainConverted = "";
				StringReader strIn = new StringReader(engDtl.srchChain);
				while (strIn.read(singleChar,0,1) != -1) {
					if (singleChar[0] == '^') {
						srchChainConverted += URLEncoder.encode(containingTf.getText().trim());
					} else {
						srchChainConverted += singleChar[0];
					}
				}
				strIn.close();
				
				//準(zhǔn)備搜索線程
				srchThread[srchNo] = new SearchThread(srchChainConverted, engDtl.srchBlkB, engDtl.srchBlkE, engDtl.name, srchNo);
				
				//在STATUS中加入信息
				statusLi.add("Starting Search From " + engDtl.name + " ...");
				
				//如果已經(jīng)達(dá)到了實(shí)際的搜索數(shù),就退出。
				if (++srchNo >= actualSearchAllowed) break;
			}
		}
		
		//開始搜索
		for (srchNo = 0; srchNo < actualSearchAllowed; srchNo ++) {
			//啟動搜索線程
			srchThread[srchNo].start();
		}

3.8	接口
	//公共全局量定義/JSApplet對外的接口
	static Hashtable resultTable	= new Hashtable();	//結(jié)果集,包括網(wǎng)址、{主題、預(yù)覽},通過網(wǎng)址進(jìn)行定位
	static Vector    resultIndex	= new Vector();		//結(jié)果集,僅包括網(wǎng)址,但可以快速使用elementAt(int)進(jìn)行定位,并確定網(wǎng)址
	static boolean	 _stop			= false;			//用標(biāo)志讓線程結(jié)束,而不是用stop()!
	static int actualSearchAllowed	= 0;				//實(shí)際應(yīng)打開的線程數(shù),并用于SearchThread的計數(shù)器

	//SEARCH
	static TextField containingTf  = new TextField("");
	static Button findNowBu        = new Button("");
	static Button stopBu           = new Button("");
	static Button newSearchBu      = new Button("");
	//RESULTS
	static List resultLi      		= new List();
	static Label totalNumLa			= new Label("0");
	//PSM
	static TextArea previewTe		= new TextArea("",0,0,TextArea.SCROLLBARS_VERTICAL_ONLY);
	static List statusLi			= new List();
	static TextArea messageTe		= new TextArea();
	//OPTIONS
	static Choice smcCh				= new Choice();
	static Choice smlCh 			= new Choice();
	static Choice valurlCh 			= new Choice();
	static Choice languageCh 		= new Choice();
	static Choice webBrowCh 		= new Choice();
	static TextField webBrowPTf		= new TextField();

3.9	存儲分配
	//搜索引擎詳細(xì)信息
	class EnginesDetails {
		String name;		//搜索引擎名稱
		String category;	//搜索引擎類別
		String srchChain;	//搜索串
		String srchBlkB;  	//信息塊開始
		String srchBlkE;  	//信息塊結(jié)束
	}
	
	//搜索結(jié)果詳細(xì)信息
	class ResultsDetails {
		String	title;		//主題		
		String	preview;	//預(yù)覽
	}

4.	模塊SearchThread設(shè)計說明

4.1	模塊SearchThread描述
		用于與Internet通信的接口。
		JSApplet信息的來源。		

4.2	功能
	見描述
	
4.3	性能
	用較快的速度,穩(wěn)定的搜索結(jié)果并進(jìn)行分析
		
4.4	輸入項(xiàng)
	this.srchChainConverted	= srchChainConverted;
	this.srchBlkB			= srchBlkB;
	this.srchBlkE			= srchBlkE;
	this.srchEngName		= srchEngName;
	this.srchNo				= srchNo;

4.5	輸出項(xiàng)
	搜索到的網(wǎng)址,并在JSApplet.ResultLi上顯示。
	
4.6	算法
	主要是對搜索信息塊進(jìn)行分析,有如下方法:
	//核心搜索線程
	public void run() 
	//用傳入的變量對類中的變量進(jìn)行賦值
	public SearchThread(String srchChainConverted, String srchBlkB, String srchBlkE, String srchEngName, int srchNo) 
	//向前推進(jìn)一個字符
	boolean stepOneChar() 
	//分析信息塊
	void analyseBlock()
	//網(wǎng)址有效性驗(yàn)證
	boolean validUrl()
	//格式化結(jié)果集
	String formatString(String unFmtStr, int width)
	//顯示結(jié)果信息
	void showResult()

4.7	流程邏輯
for (int level=0; level < Integer.valueOf(JSApplet.smlCh.getSelectedItem()).intValue() && !JSApplet._stop; level++) {
	
	//用級數(shù)處理搜索串
	srchChainConvertedWithLevel = srchChainConverted.replace('`',(char)(48+level));
	//打開搜索的頁面流
	inURLStream = new BufferedReader(new InputStreamReader((new URL(srchChainConvertedWithLevel)).openStream()));
	//推進(jìn)
	while (stepOneChar()) {
		//找到信息塊的開始:srchBlkB
		if (matchString.equals(srchBlkB)) {
			
			//準(zhǔn)備收集信息
			resultDtlHead = "";
			resultDtlBody.title = "";
			resultDtlBody.preview = "";

			//對信息塊進(jìn)行分析,并取出URL,TITLE,PREVIEW
			analyseBlock();
			
			//將最后一個非結(jié)果集排除,因?yàn)樽詈笠粋€信息塊的結(jié)束不可能也是頁面的結(jié)束。或如果當(dāng)頁已結(jié)束則退出。
			if (!stepOneChar()) break;
			
			//適當(dāng)休眠,讓PREVIEW有辦法進(jìn)行!且讓其它搜索線程有辦法進(jìn)行!并讓死鎖有時間釋放。并且如果有多個線程,這0.1秒的重疊后也就不算什么了。
			Thread.sleep(100);
			
			//對所得到的結(jié)果進(jìn)行網(wǎng)址有效性驗(yàn)證
			if (JSApplet.valurlCh.getSelectedItem().equals("Yes")) {
				if (!validUrl()) break;	//如果驗(yàn)證不通過,則不將這個URL記入/顯示。
			}

			//將結(jié)果存放并顯示
			showResult();
			
		} //if
	} //while
	
	//關(guān)閉流
	inURLStream.close();

4.8	接口
	this.srchChainConverted	= srchChainConverted;
	this.srchBlkB			= srchBlkB;
	this.srchBlkE			= srchBlkE;
	this.srchEngName		= srchEngName;
	this.srchNo				= srchNo;

4.9	存儲分配
	//要搜索的內(nèi)容
	String srchChainConverted;
	//當(dāng)前搜索線程的序號
	int srchNo;
	//搜索引擎的基本信息
	String srchBlkB, srchBlkE, srchEngName;
	
	//定義搜索當(dāng)中要用到的變量
	String srchChainConvertedWithLevel;			//加入Level后的搜索串
	BufferedReader inURLStream;					
	char matchChars[]	= {' ', ' ', ' ', ' '};	//將與標(biāo)志相符的字符
	char singleChar[]	= {' '};				//每次取得的字符
	String matchString;							//用作matchChars到String的轉(zhuǎn)化。
	int resultCount		= 0;					//當(dāng)前線程找到的結(jié)果

	//準(zhǔn)備搜集的信息
	String			resultDtlHead	= new String();			//用于存放結(jié)果集中的URL
	ResultsDetails	resultDtlBody	= new ResultsDetails();	//用于存放主題和預(yù)覽

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩和欧美的一区二区| 99综合影院在线| 国产精品美日韩| 在线亚洲高清视频| 国产呦精品一区二区三区网站| 久久伊99综合婷婷久久伊| 在线观看精品一区| 天堂成人国产精品一区| 欧美一级在线观看| av在线这里只有精品| 精油按摩中文字幕久久| 一区二区三区中文字幕电影| 精品国产成人在线影院| 91黄视频在线观看| 精品一区二区三区在线观看国产 | 黄色成人免费在线| 一区二区三区四区国产精品| 久久婷婷国产综合精品青草| 99免费精品视频| 国产盗摄一区二区三区| 日本v片在线高清不卡在线观看| 国产精品水嫩水嫩| 国产欧美一区二区在线| 26uuu成人网一区二区三区| 精品视频在线免费观看| 成人福利视频网站| 成人中文字幕在线| 国产乱码一区二区三区| 久久国产精品区| 麻豆国产欧美日韩综合精品二区| 爽好久久久欧美精品| 亚洲 欧美综合在线网络| 欧美二区乱c少妇| 欧美顶级少妇做爰| 欧美一区二区三区在线观看视频| 在线观看av一区| 在线成人小视频| 日韩欧美中文字幕公布| 一本大道久久a久久精二百| 91免费看视频| 欧美视频在线不卡| 在线播放欧美女士性生活| 欧美挠脚心视频网站| bt欧美亚洲午夜电影天堂| 91麻豆精东视频| 91麻豆福利精品推荐| 色综合天天综合狠狠| 在线观看欧美日本| 成人a级免费电影| 一区二区三区美女| 日韩电影免费在线| 九九九久久久精品| fc2成人免费人成在线观看播放| 美女网站在线免费欧美精品| 国产乱子伦视频一区二区三区 | 中文字幕色av一区二区三区| 久久久久久久久久看片| 中文字幕av一区二区三区| 中文字幕第一区综合| 久久久www免费人成精品| 亚洲狠狠爱一区二区三区| 日韩精品亚洲一区二区三区免费| 麻豆成人免费电影| 国产jizzjizz一区二区| 色综合天天综合在线视频| 欧美色图天堂网| 日韩一区二区三区精品视频| 欧美www视频| 欧美96一区二区免费视频| 不卡视频一二三| 国产一区二区免费看| 亚洲一二三四久久| 韩国一区二区三区| 欧美在线一区二区| 日韩一级片在线观看| 国产日韩欧美一区二区三区乱码| 久久久久久99精品| 亚洲成av人在线观看| 国产美女在线观看一区| 成人18精品视频| 欧美挠脚心视频网站| 欧美videos大乳护士334| 欧美国产1区2区| 美女www一区二区| 欧美视频一区二区在线观看| 日韩午夜激情免费电影| 国产精品―色哟哟| 裸体健美xxxx欧美裸体表演| 一本在线高清不卡dvd| 久久亚洲综合av| 久久精品国产网站| 精品视频一区二区不卡| 久久综合久色欧美综合狠狠| 亚洲欧美激情一区二区| 亚洲成a人片在线不卡一二三区| 风间由美一区二区三区在线观看| 在线欧美日韩精品| 欧美午夜不卡在线观看免费| 综合久久给合久久狠狠狠97色| 天堂影院一区二区| 在线免费精品视频| 亚洲丝袜美腿综合| av在线这里只有精品| 久久久精品tv| 国产精品一区二区男女羞羞无遮挡| 欧美一区二区三区播放老司机| 国产亚洲欧美日韩日本| 国产在线国偷精品产拍免费yy| 欧美性视频一区二区三区| 国产性天天综合网| 久色婷婷小香蕉久久| 色综合中文综合网| 国产欧美久久久精品影院| 国产女人18毛片水真多成人如厕| 蜜臀av一级做a爰片久久| 8x8x8国产精品| 亚洲乱码国产乱码精品精小说 | 国产精品久久久久久久久免费相片 | 国产欧美日韩激情| 国产精品一区二区在线看| 日韩三级在线免费观看| 精品在线播放免费| 国产欧美一区在线| 91色综合久久久久婷婷| 爽爽淫人综合网网站| 麻豆国产91在线播放| 一级特黄大欧美久久久| 中文字幕精品一区二区精品绿巨人 | 99re视频这里只有精品| 粉嫩高潮美女一区二区三区| 国产乱码字幕精品高清av| 国内成人精品2018免费看| 国产成人丝袜美腿| 99久久婷婷国产| 色老汉一区二区三区| 欧美日韩精品一区二区天天拍小说| 欧美亚洲高清一区二区三区不卡| 在线观看亚洲精品视频| 欧美狂野另类xxxxoooo| 日韩欧美在线网站| 国产日韩欧美制服另类| 综合久久久久久久| 日韩影院免费视频| 国产成人综合在线| 欧美在线观看禁18| 日韩欧美一区二区免费| 国产欧美一区二区精品仙草咪| 亚洲另类色综合网站| 美腿丝袜亚洲一区| 成人h动漫精品一区二| 欧美日韩亚洲丝袜制服| 久久网站热最新地址| 亚洲精品视频观看| 久久99国产精品久久99果冻传媒| 大美女一区二区三区| 欧美精选午夜久久久乱码6080| 久久久五月婷婷| 亚洲国产日韩一区二区| 国产一区二区三区电影在线观看| 国产精品一级在线| 欧美日韩免费一区二区三区视频| 久久综合av免费| 亚洲高清一区二区三区| 成人一区二区三区| 日韩区在线观看| 亚洲狼人国产精品| 国产成人免费视频一区| 欧美日高清视频| 亚洲人成7777| 国产91精品欧美| 精品国产乱码久久久久久闺蜜| 亚洲美女偷拍久久| 国产一区二区三区| 91精品国产综合久久久久久漫画 | 精品久久五月天| 亚洲午夜电影在线观看| av影院午夜一区| 精品国免费一区二区三区| 亚洲国产乱码最新视频 | 这里是久久伊人| 亚洲主播在线观看| 91捆绑美女网站| 国产精品美女www爽爽爽| 国产真实乱偷精品视频免| 欧美精品三级在线观看| 亚洲色图都市小说| 99精品欧美一区二区三区小说| 国产喂奶挤奶一区二区三区| 麻豆精品一区二区三区| 欧美三级三级三级爽爽爽| 亚洲日本电影在线| 91一区二区在线| 国产精品沙发午睡系列990531| 国产黄色91视频| 欧美国产欧美综合| 麻豆一区二区三| 精品剧情v国产在线观看在线| 秋霞午夜鲁丝一区二区老狼| 欧美精品在线观看播放| 亚洲18女电影在线观看|