本文為大家介紹好用的客戶管理系統(tǒng)軟件(免費的客戶關(guān)系管理系統(tǒng)),下面和小編一起看看詳細(xì)內(nèi)容吧。
客戶關(guān)系管理系統(tǒng)的服務(wù)介紹?
客戶關(guān)系管理系統(tǒng)以客戶為中心,幫助企業(yè)全面提升客戶關(guān)系,圍繞客戶開展銷售、營銷、服務(wù)的信息化管理。 (以上內(nèi)容僅適用于廣東聯(lián)通用戶)
哪個客戶管理系統(tǒng)好用
客戶關(guān)系管理的作用可以歸納為營銷中的客戶關(guān)系管理、銷售過程中的客戶關(guān)系管理和客戶服務(wù)過程中的客戶關(guān)系管理三個方面,以下簡稱營銷、銷售、客戶服務(wù)。
營銷
在營銷過程中,客戶關(guān)系管理系統(tǒng)可以有效幫助市場人員分析現(xiàn)有的目標(biāo)客戶群,比如主要客戶群集中在哪個行業(yè)、哪個職業(yè)、哪個年齡段、哪個地區(qū)等,從而以幫助市場人員準(zhǔn)確的進(jìn)行市場投放??蛻絷P(guān)系管理還有效地分析了每項營銷活動的投入產(chǎn)出比,并根據(jù)營銷活動相關(guān)的收款記錄和舉辦營銷活動的報銷單據(jù),計算出所有營銷活動的效果報告。
銷售管理
銷售是客戶關(guān)系管理系統(tǒng)的主要組成部分,主要包括潛在客戶、客戶、聯(lián)系人、商機、訂單、付款回執(zhí)、報表統(tǒng)計等模塊。銷售人員通過記錄溝通內(nèi)容、建立排班、查詢預(yù)約提醒、快速瀏覽客戶資料等功能,有效縮短工作時間,并具備大規(guī)模業(yè)務(wù)提醒、銷售漏斗分析、績效指標(biāo)統(tǒng)計、業(yè)務(wù)統(tǒng)計等功能。階段劃分可以有效幫助管理者提高整個公司的訂貨率,縮短銷售周期,從而實現(xiàn)利潤最大化的業(yè)務(wù)增長。
客戶服務(wù)
客戶服務(wù)主要用于快速、及時地獲取問題客戶信息、客戶歷史問題記錄等,從而有針對性、高效地為客戶解決問題,提高客戶滿意度,提升企業(yè)形象。主要功能包括客戶反饋、解決方案、滿意度調(diào)查等功能??蛻舴答亼?yīng)用中的自動升級功能,讓管理者第一時間獲取未解決的客戶訴求。解決方案功能可以讓公司所有員工第一時間提交給客戶最滿意的答復(fù),滿意度調(diào)查功能也可以讓高層管理人員了解公司客戶服務(wù)的真實水平。一些客戶關(guān)系管理軟件還集成了呼叫中心系統(tǒng),可以縮短客服人員的響應(yīng)時間,對提高客戶服務(wù)水平起到很好的作用。
unix課程設(shè)計 基于linux內(nèi)核的防火墻的分析與設(shè)計
1.什么是狀態(tài)機
有限狀態(tài)機是用于模擬對象行為的工具。它的主要功能是描述對象在其生命周期中所經(jīng)歷的狀態(tài)序列,以及如何響應(yīng)來自外界的各種事件。在面向?qū)ο蟮能浖到y(tǒng)中,一個對象無論多么簡單或復(fù)雜,都不可避免地要經(jīng)歷一個從創(chuàng)建到最終消亡的完整過程,通常稱為對象的生命周期。一般來說,一個對象在其生命周期內(nèi)是不可能完全孤立的。它必須通過發(fā)送消息來影響其他對象,或者通過接收消息來改變自己。在大多數(shù)情況下,這些消息只不過是簡單的同步方法調(diào)用。例如,在銀行客戶管理系統(tǒng)中,客戶類(customer)的實例可能會在需要時調(diào)用賬戶(account)類中定義的getbalance()方法。在這個簡單的例子中,類customer 不需要有限狀態(tài)機來描述它的行為,主要是因為它當(dāng)前的行為不依賴于過去的某個狀態(tài)。
不幸的是,并非所有情況都如此簡單。事實上,很多實用的軟件系統(tǒng)都必須維護(hù)一兩個非常關(guān)鍵的對象?;貜?fù)。例如,在voip 電話系統(tǒng)中,telephone 類的實例必須能夠響應(yīng)來自另一方的隨機呼叫、來自用戶的按鍵事件以及來自網(wǎng)絡(luò)的信號。在處理這些消息時,telephone 類的行為完全取決于它當(dāng)前的狀態(tài),因此此時使用狀態(tài)機將是一個不錯的選擇。
游戲引擎是有限狀態(tài)機最成功的應(yīng)用領(lǐng)域之一。由于設(shè)計良好的狀態(tài)機可以用來代替部分人工智能算法,因此游戲中的每個角色或設(shè)備都可能嵌入了狀態(tài)機。考慮一個簡單的對象,例如rpg 游戲中的城門,它有四種狀態(tài):opened、closed、locked 和unlocked,如圖1 所示。當(dāng)玩家到達(dá)狀態(tài)為locked 的門時,如果他發(fā)現(xiàn)這個時候用鑰匙開門,那么他就可以用它把門的當(dāng)前狀態(tài)變成unlocked,再轉(zhuǎn)動門上的把手,把門的狀態(tài)變成opened,就可以順利進(jìn)城了。
圖1 控制城門的狀態(tài)機
在描述有限狀態(tài)機時,狀態(tài)、事件、轉(zhuǎn)移和動作是經(jīng)常遇到的幾個基本概念。
狀態(tài)(state)是指對象在其生命周期中的一種狀態(tài)。處于特定狀態(tài)的對象必須滿足特定條件、執(zhí)行特定操作或等待特定事件。 '
事件(event)是指那些在時間和空間上占據(jù)一定位置,對狀態(tài)機有意義的事物。事件通常會引起狀態(tài)轉(zhuǎn)換,促使?fàn)顟B(tài)機從一種狀態(tài)切換到另一種狀態(tài)。
transition是指兩種狀態(tài)之間的一種關(guān)系,表示對象在第一種狀態(tài)下會執(zhí)行某種動作,當(dāng)事件發(fā)生并滿足某種條件時會進(jìn)入第二種狀態(tài)。
動作(action)是指那些可以在狀態(tài)機中執(zhí)行的原子操作。所謂原子操作,就是在運行過程中不能被其他消息打斷,必須連續(xù)執(zhí)行。
2.手動寫狀態(tài)機
不同于其他常用的設(shè)計模式,編程
序員想要在自己的軟件系統(tǒng)中加入狀態(tài)機時,必須再額外編寫一部分用于邏輯控制的代碼,如果系統(tǒng)足夠復(fù)雜的話,這部分代碼實現(xiàn)和維護(hù)起來還是相當(dāng)困難的。在實現(xiàn)有限狀態(tài)機時,使用switch語句是最簡單也是最直接的一種方式,其基本思路是為狀態(tài)機中的每一種狀態(tài)都設(shè)置一個case分支,專門用于對該狀態(tài)進(jìn)行控制。下面的代碼示范了如何運用switch語句,來實現(xiàn)圖1中所示的狀態(tài)機:
switch (state) {
// 處理狀態(tài)opened的分支
case (opened): {
// 執(zhí)行動作open
open();
// 檢查是否有closedoor事件
if (closedoor()) {
// 當(dāng)前狀態(tài)轉(zhuǎn)換為closed
changestate(closed)
}
break;
}
// 處理狀態(tài)closed的分支
case (closed): {
// 執(zhí)行動作close
close();
// 檢查是否有opendoor事件
if (opendoor()) {
// 當(dāng)前狀態(tài)轉(zhuǎn)換為opened
changestate(opened);
}
// 檢查是否有l(wèi)ockdoor事件
if (lockdoor()) {
// 當(dāng)前狀態(tài)轉(zhuǎn)換為locked
changestate(locked);
}
break;
}
// 處理狀態(tài)locked的分支
case (locked): {
// 執(zhí)行動作lock
lock();
// 檢查是否有unlockdoor事件
if (unlockdoor()) {
// 當(dāng)前狀態(tài)轉(zhuǎn)換為unlocked
changestate(unlocked);
}
break;
}
// 處理狀態(tài)unlocked的分支
case (unlocked): {
// 執(zhí)行動作unlock
unlock();
// 檢查是否有l(wèi)ockdoor事件
if (lockdoor()) {
// 當(dāng)前狀態(tài)轉(zhuǎn)換為locked
changestate(locked)
}
// 檢查是否有opendoor事件
if (opendoor()) {
// 當(dāng)前狀態(tài)轉(zhuǎn)換為opened
changesate(opened);
}
break;
}
}
使用switch語句實現(xiàn)的有限狀態(tài)機的確能夠很好地工作,但代碼的可讀性并不十分理想,主要原因是在實現(xiàn)狀態(tài)之間的轉(zhuǎn)換時,檢查轉(zhuǎn)換條件和進(jìn)行狀態(tài)轉(zhuǎn)換都是混雜在當(dāng)前狀態(tài)中來完成的。例如,當(dāng)城門處于opened狀態(tài)時,需要在相應(yīng)的case中調(diào)用closedoor()函數(shù)來檢查是否有必要進(jìn)行狀態(tài)轉(zhuǎn)換,如果是的話則還需要調(diào)用changestate()函數(shù)將當(dāng)前狀態(tài)切換到closed。顯然,如果在每種狀態(tài)下都需要分別檢查多個不同的轉(zhuǎn)換條件,并且需要根據(jù)檢查結(jié)果讓狀態(tài)機切換到不同的狀態(tài),那么這樣的代碼將是枯燥而難懂的。從代碼重構(gòu)的角度來講,此時更好的做法是引入checkstatechange()和performstatechange()兩個函數(shù),專門用來對轉(zhuǎn)換條件進(jìn)行檢查,以及激活轉(zhuǎn)換時所需要執(zhí)行的各種動作。這樣一來,程序結(jié)構(gòu)將變得更加清晰:
switch (state) {
// 處理狀態(tài)opened的分支
case (opened): {
// 執(zhí)行動作open
open();
// 檢查是否有激發(fā)狀態(tài)轉(zhuǎn)換的事件產(chǎn)生
if (checkstatechange()) {
// 對狀態(tài)機的狀態(tài)進(jìn)行轉(zhuǎn)換
performstatechange();
}
break;
}
// 處理狀態(tài)closed的分支
case (closed): {
// 執(zhí)行動作close
close();
// 檢查是否有激發(fā)狀態(tài)轉(zhuǎn)換的事件產(chǎn)生
if (checkstatechange()) {
// 對狀態(tài)機的狀態(tài)進(jìn)行轉(zhuǎn)換
performstatechange();
}
break;
}
// 處理狀態(tài)locked的分支
case (locked): {
// 執(zhí)行動作lock
lock();
// 檢查是否有激發(fā)狀態(tài)轉(zhuǎn)換的事件產(chǎn)生
if (checkstatechange()) {
// 對狀態(tài)機的狀態(tài)進(jìn)行轉(zhuǎn)換
performstatechange();
}
break;
}
// 處理狀態(tài)unlocked的分支
case (unlocked): {
// 執(zhí)行動作lock
unlock();
// 檢查是否有激發(fā)狀態(tài)轉(zhuǎn)換的事件產(chǎn)生
if (checkstatechange()) {
// 對狀態(tài)機的狀態(tài)進(jìn)行轉(zhuǎn)換
performstatechange();
}
break;
}
}
但checkstatechange()和performstatechange()這兩個函數(shù)本身依然會在面對很復(fù)雜的狀態(tài)機時,內(nèi)部邏輯變得異常臃腫,甚至可能是難以實現(xiàn)。
在很長一段時期內(nèi),使用switch語句一直是實現(xiàn)有限狀態(tài)機的唯一方法,甚至像編譯器這樣復(fù)雜的軟件系統(tǒng),大部分也都直接采用這種實現(xiàn)方式。但之后隨著狀態(tài)機應(yīng)用的逐漸深入,構(gòu)造出來的狀態(tài)機越來越復(fù)雜,這種方法也開始面臨各種嚴(yán)峻的考驗,其中最令人頭痛的是如果狀態(tài)機中的狀態(tài)非常多,或者狀態(tài)之間的轉(zhuǎn)換關(guān)系異常復(fù)雜,那么簡單地使用switch語句構(gòu)造出來的狀態(tài)機將是不可維護(hù)的。
三、自動生成狀態(tài)機
為實用的軟件系統(tǒng)編寫狀態(tài)機并不是一件十分輕松的事情,特別是當(dāng)狀態(tài)機本身比較復(fù)雜的時候尤其如此,許多有過類似經(jīng)歷的程序員往往將其形容為毫無創(chuàng)意的過程,因為他們需要將大量的時間與精力傾注在如何管理好狀態(tài)機中的各種狀態(tài)上,而不是程序本身的運行邏輯。作為一種通用的軟件設(shè)計模式,各種軟件系統(tǒng)的狀態(tài)機之間肯定會或多或少地存在著一些共性,因此人們開始嘗試開發(fā)一些工具來自動生成有限狀態(tài)機的框架代碼,而在linux下就有一個挺不錯的選擇——fsme(finite state machine editor)。
圖2 可視化的fsme
fsme是一個基于qt的有限狀態(tài)機工具,它能夠讓用戶通過圖形化的方式來對程序中所需要的狀態(tài)機進(jìn)行建模,并且還能夠自動生成用c 或者python實現(xiàn)的狀態(tài)機框架代碼。下面就以圖1中城門的狀態(tài)機為例,來介紹如何利用fsme來自動生成程序中所需要的狀態(tài)機代碼。
3.1狀態(tài)機建模
首先運行fsme命令來啟動狀態(tài)機編輯器,然后單擊工具欄上 new按鈕來創(chuàng)建一個新的狀態(tài)機。fsme中用于構(gòu)建狀態(tài)機的基本元素一共有五種:事件(event)、輸入(input)、輸出(output)、狀態(tài)(state)和轉(zhuǎn)換(transition),在界面左邊的樹形列表中可以找到其中的四種。
狀態(tài)建模
在fsme界面左邊的樹形列表中選擇states項,然后按下鍵盤上的insert鍵來插入一個新的狀態(tài),接著在右下方的name文本框中輸入狀態(tài)的名稱,再在右上方的繪圖區(qū)域單擊該狀態(tài)所要放置的位置,一個新的狀態(tài)就創(chuàng)建好了。用同樣的辦法可以添加狀態(tài)機所需要的所有狀態(tài),如圖3所示。
圖3 狀態(tài)建模
事件建模
在fsme界面左邊的樹形列表中選 events項,然后按下鍵盤上的insert鍵來添加一個新的事件,接著在右下方的name文本框中輸入事件的名稱,再單擊apply按鈕,一個新的事件就創(chuàng)建好了。用同樣的辦法可以添加狀態(tài)機所需要的所有事件,如圖4所示。
圖4 事件建模
轉(zhuǎn)換建模
狀態(tài)轉(zhuǎn)換是整個建模過程中最重要的一個部分,它用來定義有限狀態(tài)機中的一個狀態(tài)是如何切換到另一個狀態(tài)的。例如,當(dāng)用來控制城門的狀態(tài)機處于opened狀態(tài)時,如果此時有close事件產(chǎn)生,那么狀態(tài)機的當(dāng)前狀態(tài)將切換到closed狀態(tài),這樣一個完整的過程在狀態(tài)機模型中可以用closedoor這樣一個轉(zhuǎn)換來進(jìn)行描述。
要在fsme中添加這樣一個轉(zhuǎn)換,首先需要在界面左邊的樹形列表中選 states下的opened項,然后按下鍵盤上的insert鍵來添加一個新的轉(zhuǎn)換,接著在右下角的name文本框中輸入轉(zhuǎn)換的名字closedoor,在condition文本框中輸入close表明觸發(fā)該轉(zhuǎn)換的條件是事件close的產(chǎn)生,在target下拉框中選擇closed項表明該轉(zhuǎn)換發(fā)生后狀態(tài)機將被切換到closed狀態(tài),最后再單擊apply按鈕,一個新的狀態(tài)轉(zhuǎn)換關(guān)系就定義好了,如圖5所示。用同樣的辦法可以添加狀態(tài)機所需要的所有轉(zhuǎn)換。
圖5 轉(zhuǎn)換建模
3.2 生成狀態(tài)機框架
使用fsme不僅能夠進(jìn)行可視化的狀態(tài)機建模,更重要的是它還可以根據(jù)得到的模型自動生成用c 或者python實現(xiàn)的狀態(tài)機框架。首先在fsme界面左邊的樹形列表中選擇root項,然后在右下角的name文本框中輸入狀態(tài)機的名字doorfsm,再從initial state下拉列表中選擇狀態(tài)opened作為狀態(tài)機的初始化狀態(tài),如圖6所示。
圖6 設(shè)置初始屬性
在將狀態(tài)機模型保存為door.fsm文件之后,使用下面的命令可以生成包含有狀態(tài)機定義的頭文件:
$ fsmc door.fsm -d -o doorfsm.
進(jìn)一步還可以生成包含有狀態(tài)機實現(xiàn)的框架代碼:
$ fsmc door.fsm -d -impl doorfsm.h -o doorfsm.cpp
如果想對生成的狀態(tài)機進(jìn)行驗證,只需要再手工編寫一段用于測試的代碼就可以了:
/*
* testfsm.cpp
* 測試生成的狀態(tài)機框架
*/
#include doorfsm.h
int main()
{
doorfsm door;
door.a(doorfsm::close);
door.a(doorfsm::lock);
door.a(doorfsm::unlock);
door.a(doorfsm::open);
}
有限狀態(tài)機是由事件來進(jìn)行驅(qū)動的,在fsme生成的狀態(tài)機框架代碼中,方法a()可以被用來向狀態(tài)機發(fā)送相應(yīng)的事件,從而提供狀態(tài)機正常運轉(zhuǎn)所需要的動力。狀態(tài)機負(fù)責(zé)在其內(nèi)部維護(hù)一個事件隊列,所有到達(dá)的事件都會先被放到事件隊列中進(jìn)行等候,從而能夠保證它們將按照到達(dá)的先后順序被依次處理。在處理每一個到達(dá)的事件時,狀態(tài)機都會根據(jù)自己當(dāng)前所處的狀態(tài),檢查與該狀態(tài)對應(yīng)的轉(zhuǎn)換條件是否已經(jīng)被滿足,如果滿足的話則激活相應(yīng)的狀態(tài)轉(zhuǎn)換過程。
使用下面的命令能夠?qū)⑸傻臓顟B(tài)機框架和測試代碼編譯成一個可執(zhí)行文件:
$ g doorfsm.cpp testfsm.cpp -o fsm
由于之前在用fsmc命令生成狀態(tài)機代碼時使用了-d選項,生成的狀態(tài)機框架中會包含一定的調(diào)試信息,包括狀態(tài)機中每次狀態(tài)轉(zhuǎn)換時的激活事件、轉(zhuǎn)換前的狀態(tài)、所經(jīng)歷的轉(zhuǎn)換、轉(zhuǎn)換后的狀態(tài)等,如下所示:
$ ./fsm
doorfsm:event:'close'
doorfsm:state:'opened'
doorfsm:transition:'closedoor'
doorfsm:new state:'closed'
doorfsm:event:'lock'
doorfsm:state:'closed'
doorfsm:transition:'lockdoor'
doorfsm:new state:'locked'
doorfsm:event:'unlock'
doorfsm:state:'locked'
doorfsm:transition:'unlockdoor'
doorfsm:new state:'unlocked'
doorfsm:event:'open'
doorfsm:state:'unlocked'
doorfsm:transition:'opendoor'
doorfsm:new state:'opened'
3.3 定制狀態(tài)機
目前得到的狀態(tài)機已經(jīng)能夠響應(yīng)來自外部的各種事件,并適當(dāng)?shù)卣{(diào)整自己當(dāng)前所處的狀態(tài),也就是說已經(jīng)實現(xiàn)了狀態(tài)機引擎的功能,接下來要做的就是根據(jù)應(yīng)用的具體需求來進(jìn)行定制,為狀態(tài)機加入與軟件系統(tǒng)本身相關(guān)的那些處理邏輯。在fsme中,與具體應(yīng)用相關(guān)的操作稱為輸出(output),它們實際上就是一些需要用戶給出具體實現(xiàn)的虛函數(shù),自動生成的狀態(tài)機引擎負(fù)責(zé)在進(jìn)入或者退出某個狀態(tài)時調(diào)用它們。
仍然以控制城門的那個狀態(tài)機為例,假設(shè)我們希望在進(jìn)入每個狀態(tài)時都添加一部分處理邏輯。首在fsme界面左邊的樹形列表選擇outputs項,然后按下鍵盤上的insert鍵來添加一個新的輸出,接著在右下方的name文本框中輸入相應(yīng)的名稱,再單擊apply按鈕,一個新的輸出就創(chuàng)建好了,如圖7所示。用同樣的辦法可以添加狀態(tài)機所需要的所有輸出。
圖7 添加輸出
當(dāng)所有的輸出都定義好之后,接下來就可以為狀態(tài)機中的每個狀態(tài)綁定相應(yīng)的輸出。首先在fsme界面左側(cè)的states項中選擇相應(yīng)的狀態(tài),然后從右下角的available列表框中選擇與該狀態(tài)對應(yīng)的輸出,再單擊按鈕將其添加到in列表中,如圖8所示。用同樣的辦法可以為狀態(tài)機中的所有狀態(tài)設(shè)置相應(yīng)的輸出,同一個狀態(tài)可以對應(yīng)有多個輸出,其中in列表中的輸出會在進(jìn)入該狀態(tài)時被調(diào)用,而out列表中的輸出則會在退出該狀態(tài)時被調(diào)用,輸出調(diào)用的順序是與其在in或者out列表中的順序相一致的。
圖8 為狀態(tài)設(shè)置輸出
由于對狀態(tài)機模型進(jìn)行了修改,我們需要再次生成狀態(tài)機的框架代碼,不過這次不需要加上-d參數(shù):
$ fsmc door.fsm -o doorfsm.h
$ fsmc door.fsm -d -impl doorfsm.h -o doorfsm.cpp
我們在新的狀態(tài)機模型中添加了enteropend、enterclosed、enterlocked和enterunlocked四個輸出,因此生成的類doorfsm中會包含如下幾個純虛函數(shù)
virtual void enteropened() = 0;
virtual void enterlocked() = 0;
virtual void enterunlocked() = 0;
virtual void enterclosed() = 0;
顯然,此時生成的狀態(tài)機框架不能夠再被直接編譯了,我們必須從類doorfsm派生出一個子類,并提供對這幾個純虛函數(shù)的具體實現(xiàn):
/*
* doorfsmlogic.h
* 狀態(tài)機控制邏輯的頭文件
*/
#include doorfsm.h
class doorfsmlogic : public doorfsm
{
protected:
virtual void enteropened();
virtual void enterlocked();
virtual void enterunlocked();
virtual void enterclosed();
};
正如前面所提到過的,這幾個函數(shù)實際上代表的正是應(yīng)用系統(tǒng)的處理邏輯,作為例子我們只是簡單地輸出一些提示信息:
/*
* doorfsmlogic.cpp
* 狀態(tài)機控制邏輯的實現(xiàn)文件
*/
#include doorfsmlogic.h
#include iostream
void doorfsmlogic::enteropened()
{
std::cout enter opened state. std::endl;
}
void doorfsmlogic::enterclosed()
{
std::cout enter closed state. std::endl;
}
void doorfsmlogic::enterlocked()
{
std::cout enter locked state. std::endl;
}
void doorfsmlogic::enterunlocked()
{
std::cout enter unlocked state. std::endl;
}
同樣,為了對生成的狀態(tài)機進(jìn)行驗證,我們還需要手工編寫一段測試代碼:
/*
* testfsm.cpp
* 測試狀態(tài)機邏輯
*/
#include doorfsmlogic.h
int main()
{
doorfsmlogic door;
door.a(doorfsm::close);
door.a(doorfsm::lock);
door.a(doorfsm::unlock);
door.a(doorfsm::open);
}
使用下面的命令能夠?qū)⑸傻臓顟B(tài)機框架和測試代碼編譯成一個可執(zhí)行文件:
$ g doorfsm.cpp doorfsmlogic.cpp testlogic.cpp -o logic
運行結(jié)果如下所示:
$ ./logic
enter closed state.
enter locked state.
enter unlocked state.
enter opened state.
四、小結(jié)
在面向?qū)ο蟮能浖到y(tǒng)中,有些對象具有非常復(fù)雜的生命周期模型,使用有限狀態(tài)機是描述這類對象最好的方法。作為一種軟件設(shè)計模式,有限狀態(tài)機的概念雖然不算復(fù)雜,實現(xiàn)起來也并不困難,但它的問題是當(dāng)狀態(tài)機的模型復(fù)雜到一定的程度之后,會帶來實現(xiàn)和維護(hù)上的困難。linux下的fsme是一個可視化的有限狀態(tài)機建模工具,而且支持狀態(tài)機框架代碼的自動生成,借助它可以更加輕松地構(gòu)建基于有限狀態(tài)機的應(yīng)用系統(tǒng)。
192.168.2.1路由器設(shè)置密碼?
路由器中有兩個密碼一個是無線密碼一個是登錄密碼,分別介紹各自的設(shè)置或者更改方法:
一、設(shè)置路由器登錄口令
1、路由器和電腦連接,打開瀏覽器,在地址欄輸入192.168.1.1(一般路由器地址是這個或者查看路由器背面的登錄信息)進(jìn)路由-輸入用戶名,密碼 ,(默認(rèn)一般是admin)。
2、更改登錄口令的選項一般在系統(tǒng)工具里面
3、在新的頁面中,填入要更改的用戶名和用戶密碼。前提是知道正確的原始用戶名和原始用戶密碼。修改完畢后,保存即可。
二、設(shè)置或者修改無線連接密碼
1、路由器和電腦連接,打開瀏覽器,在地址欄輸入192.168.1.1(一般路由器地址是這個或者查看路由器背面的登錄信息)進(jìn)路由-輸入用戶名,密碼 ,(默認(rèn)一般是admin)。
2、進(jìn)入后臺后選擇無線設(shè)置,然后選擇無線安全設(shè)置,就可以設(shè)置或者更改無線密碼了,如圖:
好了,好用的客戶管理系統(tǒng)軟件(免費的客戶關(guān)系管理系統(tǒng))的介紹到這里就結(jié)束了,想知道更多相關(guān)資料可以收藏我們的網(wǎng)站。