1. 程式人生 > >基於區域網的超簡易即時通訊軟體(一)

基於區域網的超簡易即時通訊軟體(一)

  開博也那麼多天了,一直沒有放什麼上來,今天心血來潮,就放一個之前用C#寫的,基於區域網即時通訊的簡易版QQ吧。

  首先呢,得了解,既然是能實現區域網的即時通訊,就必定是有伺服器和客戶端的,是基於C/S結構的。當時想的是為易於後期維護所以用了三層架構編寫。開發軟體用的是Microsoft Visual Studio 2010,資料庫用的是SQL Server 2008,程式基本實現註冊、登入、忘記密碼、新增好友、查詢好友、編輯個性簽名、即時聊天等一系列功能。接下來就簡單的介紹一下程式吧。

  三層架構大致是這麼擺放的(如圖1-1),主要就是BLL(業務邏輯層)、DB(資料訪問層)、UI(介面層)。DB主要就是放對資料庫增刪改查之類的操作語句;而BLL則是資料進行傳遞和資料處理的,這層依賴於DB層;UI層就是對介面的設計,給使用者展示的一層。

  

圖1-1 三層架構示意圖

  好了接下來就寫寫客戶端吧,主介面呢是仿QQ寫的(如圖2-1),不是仿的特別像,將就著看吧,哈哈哈哈哈哈~~~~  介面的上部是從QQ上截下來的動圖(#捂臉),在執行的時候也像QQ一樣是會動的,實現呢就很簡單了,一個 pictureBox就搞定了。不知道看不看的出,介面是有點半透明狀態的,這個的實現也非常的簡單,就在程式初始化的時候執行  this.Opacity = 0.9;  然後登入按鈕的事件下寫的就更、、、RZ?好吧,簡單到爆的判斷語句,就判斷QQ號密碼框是否為空,為空提示,不為空則查詢與資料庫中的使用者名稱密碼是否匹配,不匹配則提示賬號密碼錯誤,匹配跳轉好友列表。

  

圖2-1 主介面

  嗯~接下來說說註冊吧,在主介面點選註冊賬號這個按鈕跳轉註冊介面(如圖2-2),同樣的,介面也是半透明的,好像所有介面都是這樣的,,,(也不知道我當時咋想的。。。)然後背景主體採用了一個漸變色,恩,對,所有介面的主題色都是這個(#捂臉)。弱雞的判斷語句就不詳細說了,主要就是全部不能為空,然後兩個密碼要輸入一致。驗證碼這塊是個難點,不過其實也還好,主要就是將26個英文字母和10個數字隨機抽選4個進行組合,然後用GDI將隨機組合的字母和數字繪製成一張圖片,同時呢,將隨機組合的字母和數字儲存到一個String欄位中,判斷使用者在驗證碼文字框輸入的和這個欄位是否匹配,哦對了,當時在寫這個的時候,,,在網上參考了許多,,,看到說有軟體可以識別圖片中的文字從而惡意註冊,所以將這個隨機組合的字母和數字又隨機左右翻轉45度,畢竟驗證碼主要的作用就是為了防止機器批量惡意註冊嘛。。。好吧,雖然我這個程式完全沒必要,反倒讓我測試軟體的時候煩了很多(再#捂臉)略略略。。。哦哦哦,還有重要的一點忘記說了,註冊成功是會跳出一個QQ號的,QQ號則是資料庫中自動生成的,在資訊全部輸入正確後,儲存到資料庫中,資料庫自動生成對應的QQ號,當時想的是為了QQ號不那麼連續,所以在資料庫中用了一個標識規範,標識種子是1000000,標識增量設定了231(這個數字閉著眼睛隨便按的。。。)。恩,這就生成了專屬的QQ號,然後程式從資料庫中讀取這個QQ號,在註冊成功介面彈出,恩~基本就是這樣了啦。

圖2-2 註冊介面

   忘記密碼這塊就不過多描述了,同樣是通過主介面跳轉,主要作用。。。>->用於忘記密碼時重置密碼。功能實現?匹配資料庫中QQ號所對應的密保問題和答案,匹配成功把使用者重置的密碼更新到資料庫中,就只用到了簡單的資料庫的改、查功能。對了,在這個介面和註冊介面都還有一個簡單但是實用的的的的的,關閉?對,關閉視窗後的跳轉,寫在FormClosed事件中,在主介面跳轉到本介面時,主介面用了一個this.Visible=false;方法,將主介面隱藏,然後在重置密碼成功,或者關閉本視窗時,再將登入介面在本介面例項化,重新將主介面的Visible設定為true;同時將本介面釋放掉(Dispose),註冊介面也是一樣實現的。

  圖2-3 重置密碼

   看了看時間。。。學習好像要斷網了,那今天就先介紹這幾個小功能吧,雖然很基礎,很弱雞,但也算是自己寫的第一個完整的程式,雖然覺得不會有太多人注意到這篇小文章,但還是歡迎各位來噴~~~有大牛什麼的也請不要吝嗇的多多指導(大牛-_-我會不會想太多)。無論如何,第一篇部落格(好吧好吧,半篇半篇>_>)就先寫到這吧。

恩~還有就是現在在自學JAVA,也希望可以有人一起相互交流學習。