| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> other >> 第四講 數據庫應用程序實例設計(下)
 

第四講 數據庫應用程序實例設計(下)

2006-12-16 17:27:51  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  在上一講中我們已經將程序方案設計出來,包括程序要具備的功能及數據庫結構,本講將進行其余的幾步工作,讓我們接著來吧。

  一、編寫初步程序流程

  關于編寫程序流程這個問題,可能對高手來說不屑一顧,直接上機寫程序就行了,無需先寫個什麽程序流程之類的。不過心鈴認爲,對于功能比較簡單的軟件可以直接寫程序,而對于複雜一些的軟件,最好還是先寫一個流程,寫流程的目的主要是把要實現的功能細化一下,在寫程序之前仔細考慮一個大綱,這樣以後寫起程序來會有系統、有條理。那麽接下來我們根據本軟件要實現的功能來寫程序流程。由于篇幅所限,心鈴不采用流程圖的形式來寫,也不能寫的很詳細。程序流程應該按功能單獨寫。

  員工錄入功能。采用DbEdit或Edit輸入數據,心鈴喜歡用EDIT及COMBOBOX組件。部門名稱采用讓用戶選擇的方式,自動顯示部門編號。用戶輸入姓名後要自動顯示姓名的拼音首字母,並允許用戶修改,因爲對多音字電腦無法知道在姓名中該讀哪個音。性別讓用戶選擇,有規格的勞保用品讓用戶選擇規格,考慮男式女式,在保存記錄時檢測用戶是否將一些關鍵信息如部門、姓名、員工代碼、工種等錄入了,若爲空則給出警告信息並拒絕保存等。保存後根據員工工種自動給出一個初始勞保用品發放記錄,讓用戶根據實際情況進行適當修改等。

  勞保發放。讓用戶選擇部門,輸入本次發放日期,然後在發放記錄中逐個查找此部門的員工發放記錄,根據上次發放日期和本次發放日期時間差和發放周期計算是否應該發及該發數量,對于有規格的勞保用品則到員工信息表中查詢規格,並將這些信息保存了一個臨時表中,然後彙總計算。從這裏看出,我們還需要一個臨時表。以後我們再講這個臨時表應該有什麽的結構。計算所有單位勞保用品的一個總彙總數據;考慮是否會重複發放;發放記錄輸出到文件,打印等。

  員工工種改變。讓用戶輸入新、老工種的代碼,先查詢原工種的勞保用品發放情況,並讓用戶做必要記錄,然後刪除原工種發放記錄,到工種勞保用品庫中查詢新工種對應的勞保用品及發放周期,生成一個新的初始發放記錄並允許用戶根據實際情況調整。

  發放記錄查詢。讓用戶選擇部門,從發放記錄中查詢到所有本部門員工的發放記錄。對單個員工的發放記錄查詢,讓用戶輸入姓名拼音,由于存在姓名重複問題,如果沒有重複直接查詢發放記錄,如果有重複則列出所有相同名字的員工,用戶可逐個查看,這裏就需要同時顯示員工基本信息和發放記錄,通過單位、性別等其他信息判斷重名的幾名員工中哪個是所要查詢的。

  員工信息修改及刪除。輸入姓名或員工編號,如果有相同名字的員工要按上面的辦法處理,查詢出員工基本信息後供用戶修改,同時考慮到一些特殊之處,提示用戶工種不可在此修改,因爲這些信息在發放記錄中也存在,在上面的功能中實現。部門名稱修改同時也要將發放記錄中的部門編號進行修改。刪除員工要把此員工的所有發放記錄也全部刪除,以防留下垃圾數據。

  勞保用品發放周期修改。讓用戶輸入工種、勞保用品名稱、新的發放周期,修改工種勞保用品庫中的發放周期,同時將發放記錄中所有屬于此工種、此種勞保用品的員工的發放記錄全部修改。

  增加和刪除勞保用品。增加:要先在工種勞保對應表中增加一條記錄,讓用戶輸入工種、新增勞保名稱和發放初始時間,爲所有此工種的員工的增加此勞保用品的發放記錄,由于是新增勞保用品,故初始發放時間應該都是一樣的。刪除:和上面類似,刪除工種勞保用品數據表中的對應記錄和發放記錄中所有符合條件的員工記錄即可。

  刪除工種。要刪除工種勞保用品對應數據表中所有此工種的對應記錄,並刪除發放記錄中所有符合條件的記錄。一般說來這種情況較少發生,原此工種的員工都轉爲別的工種。

  增加工種。根據公司規定,在工種勞保用品對應數據表中添加新工種及對應的勞保名稱及發放周期,應該在錄入員工或有員工工種更換爲此工種前進行。

  工種改名。這裏的工種改名並不改變工種編號,讓用戶輸入原工種名和新工種名,修改工種數據表。

  勞保用品改名。讓用戶輸入原勞保名稱和新勞保名稱,修改工種勞保用品對應數據表中的記錄,同時將所有發放記錄中的原勞保名稱改爲新勞保名稱。

  部門名稱修改。這裏不改變部門編號,所以無需修改發放記錄。讓用戶輸入原部門名稱和新部門名稱,修改部門名稱數據表。

  部門合並。將被合並部門的所有員工基本信息中的部門名稱和代碼修改爲要合並到的部門名稱和代碼,同時修改所有發放記錄中的部門代碼,這裏沒有名稱。

  數據庫管理。對ACCESS庫利用DAO引擎提供修複、壓縮功能,讓用戶輸入備份路徑進行數據庫備份;讓用戶輸入備份路徑後還原數據庫;考慮缺省備份路徑。

  幫助信息。寫成CHM文件最好,現在比較流行,在軟件完成後編寫。

  二、准備資料

  首先我們要准備的是用戶提供的資料,就本程序而言,大家應該知道用戶必須提供的就是不同工種對應的勞保用品名稱和發放周期的資料,拿到此資料後如果已經建立了數據庫可以將此資料直接錄入。

  其次,准備編程資料,下面從程序流程來分析一下吧。在錄入功能中,要實現漢字拼音首字母的提取,需要一個模塊,心鈴在原來編程時已寫了一個單元文件專門處理此事,現在把它找出來。數據庫管理中的修複、壓縮功能,自己寫起來麻煩一些,心鈴找到一個有源碼的組件單元來實現。關于打印,心鈴不喜歡用QuickReport,于是到網上找了一圈,找到了一個免費組件,用于打印DBGrid等內容,可滿足需要。數據庫備份中會用到文件拷貝功能,心鈴找到了一個組件用來完成此功能,雖然自己寫也可以,但要處理各種異常比較麻煩,還是重分利用現有資源效率高。充分使用現有組件可以提高程序編寫效率,但也有一定缺點,那就是人可能變懶惰了,所以適可而止吧。使用別人的組件可能會有一定風險,如存在的BUG等,爲了便于調試和發現問題,心鈴寫程序用組件的原則是只用有源碼的組件,這樣即使出現問題也可跟蹤找原因。

  另外,准備一些收集的數據庫編程方面的電子版資料和手頭能找到的、估計程序中能用到的報刊雜志等資料,備在案頭,方便及時查閱、參考。

  三、設計初步界面。

  在上面的工作做完之後,可以在紙上勾畫一下大致程序界面了。心鈴不太喜歡MDI介面,又不想每個功能都打開一個窗口,所以采用的是PageControl組件,在每個頁面上實現一組功能,用戶使用中切換很方便。在每個頁面上,根據所要實現的功能、空間和要顯示的數據,將大概用到的標簽、文本框、按鈕、數據表格等組件排列一下,盡量做到整齊、使用方便等,這類應用程序界面最好不要象一些小工具軟件那樣使用奇形怪狀的界面。

  界面在實際的編寫過程還會有許多變動,所以這裏只能勾畫一個大致輪廓,高手可以直接在編寫程序時設計界面。由于界面的設計也是一個比較化時間的工作,所以事先有個輪廓應該能爲以後的設計節約一些時間。

  四、分析難點和解決方案。

  分析難點和解決方案是爲了能提高程序的編寫效率,高手也許不需要了。就本程序而言,雖然從前面功能及流程來看,比較複雜,但難度不是太大。事實上,一般來說,除了功能很複雜的程序外,難點不會很多,之所以有時侯寫的很費勁,只能說明自己的編程水平還需提高。就本程序,心鈴分析了難點和解決方案,下面簡單說明一下。

  由于員工編號和部門編號心鈴采用的是由數字組成的字符串,所以需要對此給予檢測,雖然不是很困難,但心鈴並不能馬上寫出代碼,所以還是找點資料,在空白窗體上放置一個EDIT組件寫代碼驗證,在OnChange事件中對輸入的字符過濾,通過後,將代碼保存備用。對用戶在文本框中輸入的發放日期,由于在EDIT組件中是當做字符串來處理的,所以要考慮如何檢測輸入的字符串是合法的日期。爲了避免千年蟲問題,應該要求輸入的日期中年份爲四位,也就存在對輸入的即使合法的日期也要如何檢測年份是否是4位的問題;還有將兩個日期的差值換算爲多少個月的問題,這些有關日期方面問題的心鈴都認爲是難點,化了些時間都解決了,當然有些問題讀者可能有更高明的解決辦法如用MASKEDIT組件解決輸入格式問題等,心鈴在這裏沒有使用,卻可以多學一點東西。另外,從流程分析,對數據庫操作了解的悉讀者可能都會感到SQL語句一定會用到許多,其中有查詢、刪除、更新等操作,心鈴便將有關SQL語法找來熟悉一下並找個數據庫驗證,做到心中有數。對于在上面提到的第三方組件,由于以前沒用過,所以也視爲難點,要研究怎麽安裝,安裝後要進行使用驗證,看看有沒有什麽問題等等。總之,找出難點並都找到了解決方案。

  到此爲止,心鈴用了接近兩講的篇幅,爲大家講解如何來進行程序編寫前的工作,有的讀者可能感到有點煩瑣了吧。不過心鈴認爲,對于初學數據庫編程者來說應該是很有益處的,心鈴喜歡講思路,告訴大家怎麽去考慮問題,比單單給大家寫出結果或代碼要好吧。心鈴在後續的講座中也將本著這個思想,希望大家能喜歡這種風格。接下來我們就開始進入關鍵的一步,寫程序!不過大家可要耐著性子呀,心鈴在第一講中已經說了,由于在程序中要穿插講解數據庫組件及其他有關內容,所以寫程序的戰線要拉得比較長。

  要寫程序了,先應該做點什麽呢?當然應該先設計界面了。心鈴對設計界面不內行,設計的界面有點土,還好本講座不是講界面設計的,對界面有研究的讀者可自己精心設計,心鈴建議大家多看看流行軟件的界面風格,多學習,取長補短,吸取別人精華,設計出自己的風格。心鈴首先設計了三個窗體,一個爲主窗體,其中有一個菜單欄,只有三個菜單項,但菜單項並沒有子菜單,其實就相當于兩個按鈕,一個是「進入系統」,第二個是「數據維護」,第三個是「關于」。從流行的方式來看,「幫助」應該做到菜單中,但心鈴爲本程序只寫了簡單的幫助,沒有寫成單獨的文件,就用了一個PageCtrol的頁面,直接寫在上面了,優點是查看幫助非常方便。第二個窗體是用來完成各種功能的,從功能上來說應該是主窗體,但在delphi中主窗體不是這個意思喲。另外兩個分別是「數據維護」和「關于」窗體,以後再詳細介紹。

  既然作爲主窗體,除了三個菜單項外,總得還有點什麽吧。心鈴在上放置了兩個圖片組件,制做了一幅軟件名稱圖片,下面還有那麽多空間呢,另一副圖片就大一點充滿剩余空間,選擇了一幅藍天、白雲、雪山、綠草的風景畫放上,給我的同事領領略一下大自然風光!下面是主界面圖,見圖4-1,不滿意也別說呀,給留個面子!心鈴將主窗體設計成了不可改變大小,右上角只有一個關閉按鈕的窗體,你應該會做吧。

  我們來簡單研究一下主窗體。除了兩個圖片組件外,重要的就是菜單組件了。在窗體中放置一個MainMenu,雙擊後就可以設計菜單項和子菜單了,這個就不用詳細說了吧。在設計菜單時,可能有的初學者讀者會碰到一點小問題,就是在設計後發現Delphi自動爲菜單項和子菜單增加快捷鍵,帶下劃線的X、Y、Z之類。心鈴告訴大家這個小技巧:在設計菜單界面中,有AutoHotKeys屬性,將其設定爲maManual會不管用,因爲這裏操作的對象是Menuitem,只在這裏設定了AutoHotKeys屬性還不行,退出菜單設計界面,會發現MainMenu1自身還有一個AutoHotKeys屬性,將此屬性也設定爲maManual就可以了。

  設計好我們的菜單後,雙擊菜單項「關于」,寫本程序的第一行代碼:form2.showModal;

  此行代碼用于打開「關于」窗體。心鈴解釋一下「showModal」這個窗體的方法,此方法一般用在顯示一些系統信息和關于軟件的信息等窗口中,用此方法打開的窗口不允許用戶轉移焦點,即不允許激活本系統的其他窗體,直到本窗口關閉爲止!雙擊菜單項「進入系統」,寫本程序的第二行代碼:form3.show;就是打開我們最重要的窗口了,以後再講此最重要的窗口。雙擊菜單項「數據維護」,寫代碼如下:form4.show,這裏打開的是用戶數據庫整理、備份等的窗口。

  對于主窗體,我們還有什麽工作要做嗎?可以不做了,但有些影響程序以後操作的一些全局代碼還是寫在這裏比較好,我們先寫兩句。前面我們提到,爲防止千年蟲問題,應該使用四位年份,這裏我們用代碼來實現,將下面的兩行代碼寫在窗體的ONSHOW事件中或ONCREATE事件中都可以:

  DateSeparator := '-';

  ShortDateFormat:='yyyy-mm-dd';

  第一句強制使用「—「作爲分隔符,第二行強制使用四位年份並且采用年—月—日這種符合國人習慣的日期顯示格式。

  下一講再講主窗體中放置的另一個組件。
 
 
 
上一篇《第三講 數據庫應用程序實例設計(上)》
下一篇《FreeTextBox在線編輯器的改進版》
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

 
 
 
在上一講中我們已經將程序方案設計出來,包括程序要具備的功能及數據庫結構,本講將進行其余的幾步工作,讓我們接著來吧。 一、編寫初步程序流程 關于編寫程序流程這個問題,可能對高手來說不屑一顧,直接上機寫程序就行了,無需先寫個什麽程序流程之類的。不過心鈴認爲,對于功能比較簡單的軟件可以直接寫程序,而對于複雜一些的軟件,最好還是先寫一個流程,寫流程的目的主要是把要實現的功能細化一下,在寫程序之前仔細考慮一個大綱,這樣以後寫起程序來會有系統、有條理。那麽接下來我們根據本軟件要實現的功能來寫程序流程。由于篇幅所限,心鈴不采用流程圖的形式來寫,也不能寫的很詳細。程序流程應該按功能單獨寫。 員工錄入功能。采用DbEdit或Edit輸入數據,心鈴喜歡用EDIT及COMBOBOX組件。部門名稱采用讓用戶選擇的方式,自動顯示部門編號。用戶輸入姓名後要自動顯示姓名的拼音首字母,並允許用戶修改,因爲對多音字電腦無法知道在姓名中該讀哪個音。性別讓用戶選擇,有規格的勞保用品讓用戶選擇規格,考慮男式女式,在保存記錄時檢測用戶是否將一些關鍵信息如部門、姓名、員工代碼、工種等錄入了,若爲空則給出警告信息並拒絕保存等。保存後根據員工工種自動給出一個初始勞保用品發放記錄,讓用戶根據實際情況進行適當修改等。 勞保發放。讓用戶選擇部門,輸入本次發放日期,然後在發放記錄中逐個查找此部門的員工發放記錄,根據上次發放日期和本次發放日期時間差和發放周期計算是否應該發及該發數量,對于有規格的勞保用品則到員工信息表中查詢規格,並將這些信息保存了一個臨時表中,然後彙總計算。從這裏看出,我們還需要一個臨時表。以後我們再講這個臨時表應該有什麽的結構。計算所有單位勞保用品的一個總彙總數據;考慮是否會重複發放;發放記錄輸出到文件,打印等。 員工工種改變。讓用戶輸入新、老工種的代碼,先查詢原工種的勞保用品發放情況,並讓用戶做必要記錄,然後刪除原工種發放記錄,到工種勞保用品庫中查詢新工種對應的勞保用品及發放周期,生成一個新的初始發放記錄並允許用戶根據實際情況調整。 發放記錄查詢。讓用戶選擇部門,從發放記錄中查詢到所有本部門員工的發放記錄。對單個員工的發放記錄查詢,讓用戶輸入姓名拼音,由于存在姓名重複問題,如果沒有重複直接查詢發放記錄,如果有重複則列出所有相同名字的員工,用戶可逐個查看,這裏就需要同時顯示員工基本信息和發放記錄,通過單位、性別等其他信息判斷重名的幾名員工中哪個是所要查詢的。 員工信息修改及刪除。輸入姓名或員工編號,如果有相同名字的員工要按上面的辦法處理,查詢出員工基本信息後供用戶修改,同時考慮到一些特殊之處,提示用戶工種不可在此修改,因爲這些信息在發放記錄中也存在,在上面的功能中實現。部門名稱修改同時也要將發放記錄中的部門編號進行修改。刪除員工要把此員工的所有發放記錄也全部刪除,以防留下垃圾數據。 勞保用品發放周期修改。讓用戶輸入工種、勞保用品名稱、新的發放周期,修改工種勞保用品庫中的發放周期,同時將發放記錄中所有屬于此工種、此種勞保用品的員工的發放記錄全部修改。 增加和刪除勞保用品。增加:要先在工種勞保對應表中增加一條記錄,讓用戶輸入工種、新增勞保名稱和發放初始時間,爲所有此工種的員工的增加此勞保用品的發放記錄,由于是新增勞保用品,故初始發放時間應該都是一樣的。刪除:和上面類似,刪除工種勞保用品數據表中的對應記錄和發放記錄中所有符合條件的員工記錄即可。 刪除工種。要刪除工種勞保用品對應數據表中所有此工種的對應記錄,並刪除發放記錄中所有符合條件的記錄。一般說來這種情況較少發生,原此工種的員工都轉爲別的工種。 增加工種。根據公司規定,在工種勞保用品對應數據表中添加新工種及對應的勞保名稱及發放周期,應該在錄入員工或有員工工種更換爲此工種前進行。 工種改名。這裏的工種改名並不改變工種編號,讓用戶輸入原工種名和新工種名,修改工種數據表。 勞保用品改名。讓用戶輸入原勞保名稱和新勞保名稱,修改工種勞保用品對應數據表中的記錄,同時將所有發放記錄中的原勞保名稱改爲新勞保名稱。 部門名稱修改。這裏不改變部門編號,所以無需修改發放記錄。讓用戶輸入原部門名稱和新部門名稱,修改部門名稱數據表。 部門合並。將被合並部門的所有員工基本信息中的部門名稱和代碼修改爲要合並到的部門名稱和代碼,同時修改所有發放記錄中的部門代碼,這裏沒有名稱。 數據庫管理。對ACCESS庫利用DAO引擎提供修複、壓縮功能,讓用戶輸入備份路徑進行數據庫備份;讓用戶輸入備份路徑後還原數據庫;考慮缺省備份路徑。 幫助信息。寫成CHM文件最好,現在比較流行,在軟件完成後編寫。 二、准備資料 首先我們要准備的是用戶提供的資料,就本程序而言,大家應該知道用戶必須提供的就是不同工種對應的勞保用品名稱和發放周期的資料,拿到此資料後如果已經建立了數據庫可以將此資料直接錄入。 其次,准備編程資料,下面從程序流程來分析一下吧。在錄入功能中,要實現漢字拼音首字母的提取,需要一個模塊,心鈴在原來編程時已寫了一個單元文件專門處理此事,現在把它找出來。數據庫管理中的修複、壓縮功能,自己寫起來麻煩一些,心鈴找到一個有源碼的組件單元來實現。關于打印,心鈴不喜歡用QuickReport,于是到網上找了一圈,找到了一個免費組件,用于打印DBGrid等內容,可滿足需要。數據庫備份中會用到文件拷貝功能,心鈴找到了一個組件用來完成此功能,雖然自己寫也可以,但要處理各種異常比較麻煩,還是重分利用現有資源效率高。充分使用現有組件可以提高程序編寫效率,但也有一定缺點,那就是人可能變懶惰了,所以適可而止吧。使用別人的組件可能會有一定風險,如存在的BUG等,爲了便于調試和發現問題,心鈴寫程序用組件的原則是只用有源碼的組件,這樣即使出現問題也可跟蹤找原因。 另外,准備一些收集的數據庫編程方面的電子版資料和手頭能找到的、估計程序中能用到的報刊雜志等資料,備在案頭,方便及時查閱、參考。 三、設計初步界面。 在上面的工作做完之後,可以在紙上勾畫一下大致程序界面了。心鈴不太喜歡MDI介面,又不想每個功能都打開一個窗口,所以采用的是PageControl組件,在每個頁面上實現一組功能,用戶使用中切換很方便。在每個頁面上,根據所要實現的功能、空間和要顯示的數據,將大概用到的標簽、文本框、按鈕、數據表格等組件排列一下,盡量做到整齊、使用方便等,這類應用程序界面最好不要象一些小工具軟件那樣使用奇形怪狀的界面。 界面在實際的編寫過程還會有許多變動,所以這裏只能勾畫一個大致輪廓,高手可以直接在編寫程序時設計界面。由于界面的設計也是一個比較化時間的工作,所以事先有個輪廓應該能爲以後的設計節約一些時間。 四、分析難點和解決方案。 分析難點和解決方案是爲了能提高程序的編寫效率,高手也許不需要了。就本程序而言,雖然從前面功能及流程來看,比較複雜,但難度不是太大。事實上,一般來說,除了功能很複雜的程序外,難點不會很多,之所以有時侯寫的很費勁,只能說明自己的編程水平還需提高。就本程序,心鈴分析了難點和解決方案,下面簡單說明一下。 由于員工編號和部門編號心鈴采用的是由數字組成的字符串,所以需要對此給予檢測,雖然不是很困難,但心鈴並不能馬上寫出代碼,所以還是找點資料,在空白窗體上放置一個EDIT組件寫代碼驗證,在OnChange事件中對輸入的字符過濾,通過後,將代碼保存備用。對用戶在文本框中輸入的發放日期,由于在EDIT組件中是當做字符串來處理的,所以要考慮如何檢測輸入的字符串是合法的日期。爲了避免千年蟲問題,應該要求輸入的日期中年份爲四位,也就存在對輸入的即使合法的日期也要如何檢測年份是否是4位的問題;還有將兩個日期的差值換算爲多少個月的問題,這些有關日期方面問題的心鈴都認爲是難點,化了些時間都解決了,當然有些問題讀者可能有更高明的解決辦法如用MASKEDIT組件解決輸入格式問題等,心鈴在這裏沒有使用,卻可以多學一點東西。另外,從流程分析,對數據庫操作了解的悉讀者可能都會感到SQL語句一定會用到許多,其中有查詢、刪除、更新等操作,心鈴便將有關SQL語法找來熟悉一下並找個數據庫驗證,做到心中有數。對于在上面提到的第三方組件,由于以前沒用過,所以也視爲難點,要研究怎麽安裝,安裝後要進行使用驗證,看看有沒有什麽問題等等。總之,找出難點並都找到了解決方案。 到此爲止,心鈴用了接近兩講的篇幅,爲大家講解如何來進行程序編寫前的工作,有的讀者可能感到有點煩瑣了吧。不過心鈴認爲,對于初學數據庫編程者來說應該是很有益處的,心鈴喜歡講思路,告訴大家怎麽去考慮問題,比單單給大家寫出結果或代碼要好吧。心鈴在後續的講座中也將本著這個思想,希望大家能喜歡這種風格。接下來我們就開始進入關鍵的一步,寫程序!不過大家可要耐著性子呀,心鈴在第一講中已經說了,由于在程序中要穿插講解數據庫組件及其他有關內容,所以寫程序的戰線要拉得比較長。 要寫程序了,先應該做點什麽呢?當然應該先設計界面了。心鈴對設計界面不內行,設計的界面有點土,還好本講座不是講界面設計的,對界面有研究的讀者可自己精心設計,心鈴建議大家多看看流行軟件的界面風格,多學習,取長補短,吸取別人精華,設計出自己的風格。心鈴首先設計了三個窗體,一個爲主窗體,其中有一個菜單欄,只有三個菜單項,但菜單項並沒有子菜單,其實就相當于兩個按鈕,一個是「進入系統」,第二個是「數據維護」,第三個是「關于」。從流行的方式來看,「幫助」應該做到菜單中,但心鈴爲本程序只寫了簡單的幫助,沒有寫成單獨的文件,就用了一個PageCtrol的頁面,直接寫在上面了,優點是查看幫助非常方便。第二個窗體是用來完成各種功能的,從功能上來說應該是主窗體,但在delphi中主窗體不是這個意思喲。另外兩個分別是「數據維護」和「關于」窗體,以後再詳細介紹。 既然作爲主窗體,除了三個菜單項外,總得還有點什麽吧。心鈴在上放置了兩個圖片組件,制做了一幅軟件名稱圖片,下面還有那麽多空間呢,另一副圖片就大一點充滿剩余空間,選擇了一幅藍天、白雲、雪山、綠草的風景畫放上,給我的同事領領略一下大自然風光!下面是主界面圖,見圖4-1,不滿意也別說呀,給留個面子!心鈴將主窗體設計成了不可改變大小,右上角只有一個關閉按鈕的窗體,你應該會做吧。 我們來簡單研究一下主窗體。除了兩個圖片組件外,重要的就是菜單組件了。在窗體中放置一個MainMenu,雙擊後就可以設計菜單項和子菜單了,這個就不用詳細說了吧。在設計菜單時,可能有的初學者讀者會碰到一點小問題,就是在設計後發現Delphi自動爲菜單項和子菜單增加快捷鍵,帶下劃線的X、Y、Z之類。心鈴告訴大家這個小技巧:在設計菜單界面中,有AutoHotKeys屬性,將其設定爲maManual會不管用,因爲這裏操作的對象是Menuitem,只在這裏設定了AutoHotKeys屬性還不行,退出菜單設計界面,會發現MainMenu1自身還有一個AutoHotKeys屬性,將此屬性也設定爲maManual就可以了。 設計好我們的菜單後,雙擊菜單項「關于」,寫本程序的第一行代碼:form2.showModal; 此行代碼用于打開「關于」窗體。心鈴解釋一下「showModal」這個窗體的方法,此方法一般用在顯示一些系統信息和關于軟件的信息等窗口中,用此方法打開的窗口不允許用戶轉移焦點,即不允許激活本系統的其他窗體,直到本窗口關閉爲止!雙擊菜單項「進入系統」,寫本程序的第二行代碼:form3.show;就是打開我們最重要的窗口了,以後再講此最重要的窗口。雙擊菜單項「數據維護」,寫代碼如下:form4.show,這裏打開的是用戶數據庫整理、備份等的窗口。 對于主窗體,我們還有什麽工作要做嗎?可以不做了,但有些影響程序以後操作的一些全局代碼還是寫在這裏比較好,我們先寫兩句。前面我們提到,爲防止千年蟲問題,應該使用四位年份,這裏我們用代碼來實現,將下面的兩行代碼寫在窗體的ONSHOW事件中或ONCREATE事件中都可以: DateSeparator := '-'; ShortDateFormat:='yyyy-mm-dd'; 第一句強制使用「—「作爲分隔符,第二行強制使用四位年份並且采用年—月—日這種符合國人習慣的日期顯示格式。 下一講再講主窗體中放置的另一個組件。
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
Afternoon Girl
精致的外景拍攝
零點一公分的距離
俏麗迷人 視覺享受
北海老城隨拍(二)
夢中的郭河
Gassin(法國最美麗小鎮之一) part
瑤池夕照
 
>>返回首頁<<
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有