Tuesday, June 12, 2007

專題報告


題目:TMM資料庫連線與skype簡訊功能結合實做

摘要

1.前言

2.研究背景與文獻探討

3.研究方法

4.實驗結果與討論

5.結論

參考文獻

1.前言
大學一年級時,知道了大三下學期開始要作一年的專題,又分高專與普通專題。高專的難度大於普通專題,簡單地說,差別在於高專要做出成品,普通專題則否,普通專題以寫報告寫感想及meeting為主。大多數的人,在大三上學期或大二時就開始試圖了解這方面的相關訊息,例如:教授的專長,研究生的研究目標,專題生所需的能力等等。我也與他們相同,有在注意這方面的訊息,而在大學二年級下學期時,我正好有修張耀仁老師的Java程式設計,際網路應用系統,所以也就對老師的研究目標與其研究生產生了興趣。為了專題,我進一步地去接觸,了解老師對專題生的要求,也知曉了老師打算收三組專題生分並別由三位研究生帶領做各自的題目。之後,因為同學的感興趣,並在同學與研究生的討論下,決定參予了此計劃--崔媽媽基金會(TMM)

2.研究背景與文獻探討

研究背景:
大三下時我選擇了張耀仁老師為專題指導老師,其下有幾個題目,而我這個是與崔媽媽基金會(TMM)—租屋、搬家、公寓大廈 有關。目的在於為他們開發幾種應用程式以提昇工作效率以及令使用者更方便使用TMM的資源。

具體而言,TMM需要的是將他們的搜尋器所得到的結果以地圖的方式呈現。這至少扯到了幾個應用,包含URMAP,地址轉座標(這是由另一組人馬負責。)

在此,TMM有此構想(或學習),是正常的。因為地圖的功能在國外的某知名租屋網使用google maps來加強它的功能性,也得到了良好的成果,而台灣本身的地圖則也剛好有URMAP,所以萬事具備,只欠東風(如何結合彼此的問題)

另一個TMM需要的則是配合資料庫與skype的簡訊功能相結合。TMM希望能把配對成功的組別(配對指的是當使用者要求的房子有著落時的組別)以自動的方式通知使用者,包含房東與房客。(這同時也是我與另一位同學負責的部份。)

SKYPE則在這幾年大放光采,在他之前有ICQ,YAHOO Messenger,MSN等等,SKYPE能夠脫穎而出的原因是除了通話品質的良好,還有近來新增的許多功能。其中之一就是簡訊的服務,現在人手一機,用簡訊當然比EMAIL更能即時通知使用者。剛好,SKYPE的開發商大發慈悲地開放了API,所以相關的產品也不斷地出現。而我們的工作就是使用SKYPE API開發一個自動寄簡訊的應用程式。

我曾學習過VB,C++java三種程式語言,其中JAVA為近日所學,所以較為熟悉,因此當我知道要使用visual studio 2005 ,就決定挑選其中的c# 使用。因為JAVAC#皆為物件導向語言又感覺與C++是親戚,因此我認為我能直接沿用學JAVAC++時的經驗,減少上手的時間。

文獻探討:

關於我所研究的題目,為了完成它需要的分別是skype api,vs2005,c#,SQL資料庫連結,4個部份。最後則要將他們結合在一起。以下將就幾個部份做各別探討。

Visual studio 2005:

Vs2005中的主要語言都以.NET結合,來達到write once , run anywhere的特性。他們分別是visual c++ , visual basic .net , visual c# , visual j#,且都是物件導向語言,其語法都與java有一定的相似,而開發windows form等應用的易用性與方便性則可說與visual basic同樣容易。

四種語言在vs2005的環境下,可以彼此使用者已開發完成的應用程式,元件,web應用或各種現成的元件等等。使用者在visual studio2005中開發軟體,並藉由.net的特性,可以把所開發完成的程式使用放在任何一台電腦上工作,只要開平台有安裝.net

簡單地說, visual studio2005 就是一個具備簡單使用與效能高的特性的開發各種專案應用的軟體,它也是.NET計劃下重要的一部分。

c#(c sharp):

這是一個有C++VB特性的語言,結合了兩者的優點,刪除了不必要的語法與功能,也另外增加了新的語法可以在vs2005下使用以增進開發效率。

基本上,若有學習過c++java,那麼要熟悉C#就容易多了。例如:陣列的使用,迴圈的使用,switch的使用,判斷式的使用等等都與c++java很相似。

SKYPE API:

Application Programming Interface,簡稱APIAPI就是將各種軟體介面結合的規則,亦即藉由API我們能夠使用該API指向的軟體的各種功能,而不需要去了解開軟體如何運作。或說API就是各種函式庫的集合體,藉由它,我們可以呼叫軟體的各種功能。SKYPE API就是一個能夠使我們控制SKYPE的東西。

SKYPE:

skype是一個網路電話軟體。它不走傳統的電話線,而是走網際網路。訊息全被翻譯一個個的封包,在網路世界暢行無阻。它也從原本的網內互打進步為網外,也就是可以與一般電話機對講。

主要功能:

1.免費與全世界 Skype 使用者通話。

2.以較傳統低廉的費用撥打普通電話和行動電話。

3.使用視訊通話。

3.傳送手機簡訊。

3.創建會議室或聊天室

SQL:

結構化查詢語言-SQL,全名 Structured Query Language 他是一個用來search,updatemanage資料庫的語言。在此強調SQLSQL SERVER是兩種東西。前者是語言,後者是資料庫,會使人搞在一塊的理由是恰恰好,microsoft的資料庫軟體叫做SQL SERVER,佔了名字上的便宜而已。事實上,使用SQL語法的資料庫並不止SQL SERVER而已,此外還有AccessOracle等等多套軟體。

SQL並不像其他程式語言那麼複雜,它只有幾種指令,主要用來處理search,updatemanage幾種動作。在此,我們所需要用到只有search的部份。

3.研究方法
首先是搜尋資訊,包含查閱相關書籍,瀏覽網際網路。再來就是嘗試與討論,並試驗得到的資訊能否正確無誤地工作。我們使用的工具是visual studio2005,我所使用的語言是C#。我需要的則是C#語言的熟悉,VS2005的使用,SKYPE API的認識,連接資料庫的SQL語法。

首先要做的就是學習使用VS2005開發工具以及C#語言。所以我在寒假時以及開學後在學校圖書館借了數本書,也曾參考過外面書店的相關書籍,藉此增加對工具的熟悉。

再來就是SKYPE API的的部份,由於目的是傳簡訊,所以只注重在簡訊的部份。但是由於缺乏相關的書籍,所以只能從網路著手,SKYPE API則公佈在官方網站,並設有討論區。所以我為了將SKYPE APIVS2005結合,也花了一些時間,也成功寄出簡訊。

接下來則是連接資料庫,基本上vs2005中有許多現成的工具,可以直接點選,並按找指示一步步走即可連接資料庫

例如:datagridview,dataset,bindingsource,bindingnavigator…就是相關的工具。

其中可以直接用來連接資料庫並顯示結果的是datagridview。它能把得到的資料以表格的方式顯示在form上。最初原想使用它作為連接資料庫的方法,但後來打消了念頭,因為我沒能成功使用表格上看得到的資料。所以我另尋他法,再這裡我花了相當長一段時間,後來成功了,但隨之而來的資料重複或過濾的問題則有待解決。(事實上,我直覺地認為使用datagridview是可行的,也找到了相關資訊,但在實驗上卻失敗了數次,只好打消念頭。)


4.
實驗結果與討論
傳簡訊實例:

使用skype api之前要先在vs2005中把SKYPE4COMLib加入參考。

用到的api只有短短兩句,如下:

private SKYPE4COMLib.SkypeClass obsms = new SKYPE4COMLib.SkypeClass();

由於sendsms的功能屬於api中的一個class-skypeclass之下,所以要使用sendsms的功能,就須要以上的宣告。

obsms.SendSms(textBox2.Text,textBox2.Text,""):

第一個字串是目標的電話號碼,第二個字串是內容,第三可留白。

使用vs2005中的datagridview連結TMM資料庫實例:

說明:上圖為datagridview執行form的結果。在此碰上查詢工具不靈光的問題,也就是在下圖的查詢工具中所設定的條件式在實際執行form時並沒有如在查詢工具中模擬的相同。此問題一直沒解決,但由於後來不使用datagridview所以也就不是問題了。即使如此,模擬的功能倒是不錯用,速度也快,下方的sql語言也可以用在非datagridview的情況下。

說明:上圖為vs2005中查尋資料的工具,可以簡便地用滑鼠做出各種查詢的動作(例如:排序,分類,關聯性,條件),或在下方空白處寫入或修改現成的(工具自動輸入的)sql 語法。此工具可配合datagridview使用。(此圖從蕭宇宏處借得,感謝。)

我們所需的只有查詢的功能,所以用得到的語法簡述如下(藍色部分為語法):


SELECT "
欄位1" "欄位2" "欄位3" FROM "表格名1" "表格名2" "表格名3"

上述語法意為:選擇OO表格的XX欄位。

WHERE (條件1 and 條件2) or 條件3 ”欄位between某值and某值

上述語法可以直接加在SELECT FROM 之下來得到某條件下的結果。

And為交集,or為聯集。條件則為例如欄位A>100 欄位B<10,>欄位C=apple等等

Between用來查詢某範圍的資料。

倘若資料間有或沒有關聯性,亦即有或沒有共通的欄位,若要避免資料重複,此時則需要join語法來合併。

Joininner join, right join, left join 等等。

inner join:當兩欄位有共同的資料時才會顯示

right join:以右邊為主,右邊的欄位會完整顯示,左邊的只顯示符合右邊的

left join: 以左邊為主,左邊的欄位會完整顯示,右邊的只顯示符合左邊的

使用非datagridview的方法連接並下載資料實例:

上圖為我隨機選了幾個欄位做的測試,是執行form的結果。三個listbox就是三個欄位,裡面為欄位內的資料。其餘textbox被用來測試欄位的名稱或資料的數量。

要用此方法的緣故在於我使用datagridview,沒能成功使用其中資料格的資料。

使用此法應是做此專題中花了最長時間的部份,因為使用datagridview,如何連線到資料庫不是我們要在意的,我們只要照著說明輸入資料庫的IP位址,登入名稱,密碼,並選擇需要的資料欄位,剩下的動作datagridview皆會自動完成;但如果不用datagridview的話,那麼反過來說,所有的動作皆要由我們自己完成,code介面輸入指令一步步完成連線的動作。而問題就出在這裡,可能是因為vs2005是一個高效率與自動化的工具,所以相關的書籍也就沒有在這裡多做著墨。因此我們就只好查書與上網試圖找出相關的資訊,相關的資訊當然存在,但當我們實際測試在compile時總是不通過。

不過就如同拼圖般,線索一條條接起來了,而在vs2005有一個物件瀏覽器,它是一個查詢所有在vs2005中的namespace,class,function等等,它給了我很多方便。將網路與書中的資料與物件瀏覽器的得到的相結合,終於成功連上資料庫



5.結論

成果總結:

簡訊部份成功,經由非datagridview連結資料庫成功了,下載資料到本機處理也成功了,但查詢的部份與最後的結合仍在努力中。

查詢的部份由於TMM伺服器的故障,導致目前無法進一步確認資料重複的問題,也無法進一步解決過濾資料的問題(TMM的資料庫中,一個人可以有許多比成功配對的資料,但我們只會寄出一封簡訊給房客,或進一步寄給多位房東。)

此外,為了能夠自動化也必須加入計時器timer的功能,但也因TMM伺服器的故障,尚無法做出結論。


學習心得:

做此專題之初,曾有6次往台北TMM的據點,每次通勤的時間前前後後約要近90分鐘,那是我過去不曾有過的經驗。若說我從通勤過程得到了什麼,第一個我學到了看時刻表,與認識了台北車站捷運搭乘的方法。這是寶貴的經驗。

最大的成果不是到目前為止的進度,而是過程中學習到的耐性與堅持。做一個題目時,往往不像課本中的一般資料充足,而是需要靠自己去搜尋相關的訊息,再想辦法應用並完成題目的需求。我也認識到討論的重要性,要靠自己一個人完成實在是一個相當沒有效率的作法。

最大的興奮則是在突破瓶頸的時候,傳簡訊時是一次,成功以非datagridview連線資料庫也是一次,尤其是後者。

有人說:念碩士學到的不是別的,而是尋求解答的方法。我個人也認同這句話,事實上,研究所中研究生的研究成果在大多數的時候短時間內是難以有商業上的價值的,亦即缺乏實用性。而研究生畢業後的工作也不一定與自己的論文有相關,所以所學不一定能在職場上派上用場。當然作學問就是這麼一回事,各種理論中的東西要實用化都是要花不少時間的。然而,世事往往出人意表,常常不是所學無用,而是學得太少。我就是處在這一個階段,所學太少,而現在當專題生則算是進入研究所前的一個體驗吧。

這也進一步說明,考試考得好不代表做事做得好。尤其面對一個新的問題時,往往不是在課本中可以得到解答的;也說明了,在學校學得好,與將來能否在職場上與他人在時間上競爭時著著領先又是兩碼子事了。


參考文獻

書本:

用實例學ASP.NET 使用C#ADO.NET 章立民著

新一代ASP.NET 2.0網站開發實戰 使用C#以及VB2005 林昱翔著

ASPSQL資料庫 楊居易編著

Visual C# .NET程式設計之鑰 John Sharp, Jon Jagger 蘇文山譯

Visual C# 2005程式開發與介面設計秘訣 章立民硏究室著

輕輕鬆鬆學會VBScript & ActiveX 胡昭民編著

精通VB.NET程式設計 數位新知著

HTML易學易用專輯 李天啓編著

新一代ASP.NET 2.0網站開發實戰 使用C#以及VB2005 林昱翔著

Visual C++ .NET入門手册 使用.NET V1.0最新版本 Aravind Corera等著 黃珮茹譯

C#物件導向程式設計 黃聰明編著

Visual C++. NET入門進階 位元文化編著

C# .NET網際網路程式設計 TCP/IPInternet Programming(使用Microsoft Visual C# .NET 20022003 黃嘉輝編著

Visual C#.NET語法辭典 Microsoft Corporation原著 林煌章譯

網際網路:

Microsoft msdn

gooele

0 Comments:

Post a Comment

<< Home