音像店管理系統(tǒng)畢業(yè)設計論文_第1頁
音像店管理系統(tǒng)畢業(yè)設計論文_第2頁
音像店管理系統(tǒng)畢業(yè)設計論文_第3頁
音像店管理系統(tǒng)畢業(yè)設計論文_第4頁
音像店管理系統(tǒng)畢業(yè)設計論文_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、一、引言就一般情況而言,音像店主要經(jīng)營售碟和租碟業(yè)務,日常業(yè)務中信息簡單但數(shù)量眾多,單靠人工進行這種大量信息的處理工作,難免會造成信息統(tǒng)計及業(yè)務管理上的不便,為此,受一位音像店業(yè)主的委托,本文作者設計了這套系統(tǒng)。本系統(tǒng)由進貨、售碟、租碟、還碟、數(shù)據(jù)維護和決策支持等六個主要子系統(tǒng)組成,可實現(xiàn)查詢、插入、刪除和修改等對數(shù)據(jù)庫的基本操作,并可完成報表打印及業(yè)務統(tǒng)計(包括財務統(tǒng)計)等業(yè)務管理功能,為業(yè)主管理和決策提供方便。本系統(tǒng)用Delphi語言設計和實現(xiàn)。Delphi是著名的Borland公司開發(fā)的可視化軟件開發(fā)工具,“真正的程序員用C,聰明的程序員用Delphi”,這句話是對Delphi最經(jīng)典、最

2、實在的描述。Delphi被稱為第4代編程語言,它具有簡單、高效、功能強大的特點。和VC相比,Delphi更簡單、更易于掌握,而在功能上卻毫不遜色;和VB相比,Delphi則功能更強大、更實用。可以說Delphi同時兼?zhèn)淞薞C功能強大和VB簡單易學的特點,所以它一直是程序員至愛的編程工具。Delphi發(fā)展至今,從Delphi 1 、Delphi 2到現(xiàn)在的Delphi 7,不斷添加和改進各種特性,功能也越來越強大,這也是我選擇Delphi語言作為開發(fā)工具的重要原因。由于本文作者是第一次接觸實際項目,水平和經(jīng)驗有限,在設計中難免漏洞百出,遇到許多始料不及的困難和問題,在老師、同學們和單位科技科同志

3、們的指導和幫助下,大部分問題都已經(jīng)解決,但不可避免地仍存在著一些不足之處。具體情況見后文詳述。二、VSMS設計2.1需求分析2.1.1 組織機構(gòu)情況該音像店規(guī)模不大,店面面積30平方米左右,其中營業(yè)區(qū)面積約占2/3,業(yè)主夫婦二人共同經(jīng)營,店內(nèi)僅有一臺計算機,且近期內(nèi)無再購買計算機之計劃,故本系統(tǒng)可設計為PC版。該店經(jīng)營的音像業(yè)務主要是租碟和售碟,碟片種類包括各種VCD、DVD和CD碟片;業(yè)務對象包括當?shù)氐碾娨暸_和電臺(贊助形式),更多的是零買零租的顧客;日常業(yè)務記錄本主要有四個,分別用于進貨、售碟、租碟和碟片編號。店內(nèi)有兩個大貨架,分別用于存放銷售用的碟片和租閱用的碟片;營業(yè)區(qū)內(nèi)有幾個大展板(

4、展臺),用于展放店內(nèi)已有的所有碟片的宣傳資料,資料上都貼有該碟片的編號,方便業(yè)主和顧客的查找和存取。2.1.2 業(yè)務活動情況平時由男業(yè)主外出進貨,回來后先作進貨登記,同時對新進的店內(nèi)原來沒有的碟片進行編號(已有碟片無需再編號),然后再分發(fā)到租碟用和售碟用的兩個大貨架上。售碟和租碟時,通常是顧客說出碟片名稱,店主根據(jù)記憶或翻看編號本查出碟片的相應編號,或者顧客從展板資料上直接查出碟片編號告訴業(yè)主,業(yè)主然后根據(jù)編號從貨架相應位置上取碟片。還碟時,顧客說出租碟日期和自己的姓名,業(yè)主根據(jù)租碟業(yè)務本查找相應記錄,辦理還碟手續(xù)。2.1.3 對新系統(tǒng)的各種要求a.進貨登記時,應記錄所進碟片的名稱、種類、進價

5、、進量、總額、進貨日期及租售分配情況等,還可包括貨源情況(如供應商、地址、聯(lián)系方式等)。b.售碟時,應記錄所售碟片的名稱、種類、單價、銷量、總額及出售日期等,顧客情況可記可不記。c.租碟時,應記錄所租碟片的名稱、數(shù)量、押金、客戶及出租日期等,碟片編號可記可不記。d.還碟時,應能快速查找出相應記錄,并作已歸還標志。e.當發(fā)現(xiàn)登記的信息有誤或根據(jù)實際情況需要更改或刪除某些記錄信息時,應能方便、安全地進行記錄的修改和刪除。f.應能對業(yè)務情況有所統(tǒng)計,包括銷售情況、租還情況和賬目情況(或資金流動情況),比如說哪幾部碟片銷量最好,哪幾部碟片出租次數(shù)最多,哪些碟片尚未歸還,每天的收支情況如何等等,為以后的

6、進貨計劃提供依據(jù)。2.1.4 確定新系統(tǒng)的邊界通過調(diào)查分析,最終確定除了存取碟片、向碟片貼編號標簽及通過鍵盤向系統(tǒng)輸入一些必要的信息這些操作由人工來完成之外,其他功能均由系統(tǒng)來完成,通過鼠標點擊即可完成決大多部分功能,比如查詢、插入、刪除和修改記錄,財務統(tǒng)計,租售統(tǒng)計,檢索和排序等等。整個系統(tǒng)大致可分為六個子系統(tǒng),即進貨子系統(tǒng)、銷售子系統(tǒng)、租碟子系統(tǒng)、還碟子系統(tǒng)、數(shù)據(jù)維護子系統(tǒng)和決策支持子系統(tǒng)等。2.2 概念結(jié)構(gòu)設計2.2.1 系統(tǒng)說明書 該系統(tǒng)由以下各子系統(tǒng)組成:(見圖一)音像店管理系統(tǒng)進貨子系統(tǒng)銷售子系統(tǒng)租碟子系統(tǒng)還碟子系統(tǒng)數(shù)據(jù)維護子系統(tǒng)決策支持子系統(tǒng)圖一、系統(tǒng)功能結(jié)構(gòu)其中各子系統(tǒng)主要功能

7、為:進貨子系統(tǒng):除了登記進貨信息,還要給新碟片編號,建立新記錄,并確定其分別用于銷售和租閱的分配量;若已有該碟編號,則只需修改其相應可售量和可租量即可。具備查詢功能,用于查看店內(nèi)是否已有該碟記錄。另外,對財務支出進行統(tǒng)計。銷售子系統(tǒng):登記銷售信息,并具備查詢功能,在銷售之前能先確認店內(nèi)是否有客戶所欲購之碟片,若有,其數(shù)量能否滿足客戶之欲購量等等。交易完成之后記錄銷售收入。租碟子系統(tǒng):登記租碟信息,并能查詢是否有客戶之欲租碟供租。記錄押金收入。還碟子系統(tǒng):根據(jù)客戶提供的信息(碟名、客戶名或出租日期等)查找相應租碟記錄,辦理還碟手續(xù),記錄租金收入和押金支出。 數(shù)據(jù)維護子系統(tǒng):根據(jù)業(yè)主需要,查找相應

8、記錄并修改或刪除之。決策支持子系統(tǒng):主要有業(yè)務統(tǒng)計和報表打印兩大功能。業(yè)務統(tǒng)計包括進貨統(tǒng)計、銷售統(tǒng)計、租還統(tǒng)計及最重要的財務統(tǒng)計,業(yè)主根據(jù)多種統(tǒng)計和排序方式,可方便地搜集和整理出多種業(yè)務信息,供業(yè)主決策之用。另外可打印店內(nèi)各種業(yè)務報表,如進貨、銷售、租還、庫存及財務等。 2.2.2 概念模型的建立和表示 概念模型的建立:本系統(tǒng)涉及到的實體有:碟片、進貨表、銷售表、租還表和財務表,其中: 碟片:即店內(nèi)所有庫存碟片,屬性包括編號、名稱、種類、單價、單位、可售量、已售量、可租量、已租量、出租次數(shù)等。 進貨表:每次進貨后登記所進貨物的業(yè)務表,屬性包括項目編號、碟片名稱、種類、進價、單位、進量、總額、日

9、期等。 銷售表:登記每次銷售情況的業(yè)務表,屬性包括項目編號、碟片編號、碟片名稱、單價、單位、銷量、總額、日期等。 租還表:登記每次租碟和還碟情況的業(yè)務表,屬性包括項目編號、碟片編號、碟片名稱、租量、押金、客戶、出租日期、歸還日期、受否已還標志、租金收入等。 財務表:統(tǒng)計每日財務收支情況,屬性包括日期、銷售收入、租金收入、押金收入、進貨支出、押金支出等。這些實體之間的聯(lián)系如下:a 一次進貨可進多種碟片,一種碟片可多次進貨,因此碟片和進貨表具有多對多的聯(lián)系(m:n)。b 一次銷售可售多種碟片,一種碟片可被多次銷售(量足的話),因此碟片和銷售表是多對多的聯(lián)系(m:n)c 一次租碟可租多種碟片,一種碟

10、片可被多次租閱,因此碟片和租還表是多對多的聯(lián)系(m:n)。d 每日財務最終統(tǒng)計為一項紀錄,而每日進貨、銷售、租還業(yè)務均可多次,因此財務表和進貨表、銷售表、租還表均為一對多的聯(lián)系(1:n)。 概念模型的表示:概念模型的表示方法很多,此處用E-R方法(Entity-Relationship Approach)表示,并用E-R圖來表示,方法為: 實體型:用矩形表示,矩形框內(nèi)寫明實體名。 屬性:用橢圓形表示,并用無向邊將其與相應的實體連接起來。 聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關(guān)實體連接起來,同時在無向邊旁標上聯(lián)系的類型(1:1,1:n或m:n )。本系統(tǒng)E-R圖為:(見下頁圖

11、二)2.3 邏輯結(jié)構(gòu)設計 2.3.1 E-R圖向關(guān)系模型的轉(zhuǎn)換 將本系統(tǒng)的E-R圖轉(zhuǎn)換為關(guān)系模型,如下所示:(關(guān)系的碼用下劃線標出) 進貨碟片進貨表銷售表租還表銷售租還進貨支出銷售收入租金押金財務表 m m m n n n nn n 1 1 1 圖二、系統(tǒng)E-R圖(因篇幅原因,各實體的屬性未列出) 碟片實體對應的關(guān)系模式為:碟片(碟片編號,碟片名稱,種類,單價,單位,可售量,已售量,可租量,已租量,出租次數(shù)) 進貨表實體對應的關(guān)系模式為:進貨表(項目編號,碟片名稱,種類,進價,單位,進量,總額,日期) 銷售表實體對應的關(guān)系模式為:銷售表(項目編號,碟片編號,碟片名稱,單價,單位,銷量,總額,日

12、期) 租還表實體對應的關(guān)系模式為:租還表(項目編號,碟片編號,碟片名稱,租量,押金,客戶,出租日期,歸還日期,是否已還,租金收入) 財務表實體對應的關(guān)系模式為:財務表(日期,銷售收入,租金收入,押金收入,進貨支出,押金支出)2.3.2 數(shù)據(jù)表的設計和建立用sVcd表來代替“碟片”實體,具體設計為:屬性數(shù)據(jù)類型規(guī)格說明碟片編號長整型主鍵碟片名稱字符串20種類字符串8單價貨幣單位字符串4可售量整型已售量整型默認值為0可租量整型已租量整型默認值為0出租次數(shù)整型默認值為0用stock表來代替“進貨表”實體,具體設計為:屬性數(shù)據(jù)類型規(guī)格說明項目編號長整型主鍵碟片名稱字符串20種類字符串8進價貨幣單位字符

13、串4進量整型總額貨幣日期日期用sell表來代替“銷售表”實體,具體設計為:屬性數(shù)據(jù)類型規(guī)格說明項目編號長整型主鍵碟片編號長整形碟片名稱字符串20單價貨幣單位字符串4銷量整型總額貨幣日期日期用hire表來代替“租還表”實體,具體設計為:屬性數(shù)據(jù)類型規(guī)格說明項目編號長整型主鍵碟片編號長整型碟片名稱字符串20租量整型押金貨幣客戶字符串10出租日期日期是否已還字符串2若已還,設為“是”,否則為“否”歸還日期日期默認值為空租金收入貨幣默認值為0用finance表來代替“財務表”實體,具體設計為:屬性數(shù)據(jù)類型規(guī)格說明日期日期主鍵銷售收入貨幣默認值為0租金收入貨幣默認值為0押金收入貨幣默認值為0進貨支出貨幣

14、默認值為0押金支出貨幣默認值為02.4 數(shù)據(jù)庫的具體設計2.4.1 進貨子系統(tǒng)的實現(xiàn):設計思路: 該功能模塊要記錄的信息有項目編號、碟片名稱、種類、進價、單位、進量、總額及進貨日期,其中碟片名稱、進價和進量由人工輸入,其他由系統(tǒng)自動完成: 項目編號由系統(tǒng)自動無重復編號,種類和單位由系統(tǒng)提供可選項,總額由系統(tǒng)自動計算,日期由系統(tǒng)自動顯示.進行碟片編號的時候,要先查詢店內(nèi)是否已有該碟編號,此時可人工查詢,也可由系統(tǒng)提供模糊查詢功能,用戶只需向系統(tǒng)提供碟名關(guān)鍵字和種類這兩個條件中的一個或兩個,系統(tǒng)即可完成模糊查詢,并將結(jié)果顯示于窗體界面上.若無已存記錄,則系統(tǒng)自動為該碟片進行編號.當將該項進貨記錄插

15、入進貨表之后,系統(tǒng)將自動將該項記錄的進貨總額統(tǒng)計進財務表中的當日財務記錄上.具體實現(xiàn): 項目自動編號和碟片自動編號的實現(xiàn):加入兩個Ttable組件,分別用于連接進貨表(stock.db)和碟片表(sVcd.db),其中對進貨表的操作為:table1.active:=true; 打開表 with table1 do if not eof then last; 找到最后一條記錄edit1.text:=inttostr(table1.fields.fields0.value+1); 最后一條記錄的編號加1,并把結(jié)果顯示出來table1.active:=false; 關(guān)閉表對碟片表的操作類似,只需將t

16、able1 換為table2, edit1 換為edit2即可. 總額計算和日期顯示:if (edit5.text=) or (edit6.text=) then 確保進價和數(shù)量均非空 showmessage(請將進價和數(shù)量填寫完整)else edit7.text:=inttostr(strtoint(edit5.text)*strtoint(edit6.text); 計算總額并顯示 edit9.text:=datetostr(now); 顯示日期對碟片信息的模糊查詢功能: 用一個Tedit組件輸入碟名關(guān)鍵字,用一個TComboBox組件選擇碟片種類,用一個Tquery組件實現(xiàn)SQL查詢,用一

17、個TDBGrid組件顯示查詢結(jié)果。 SQL語句的生成:if (edit1.text=) and (combobox1.text= ) then 若沒有輸入查詢條件 str:=select * from svcd 則默認為顯示所有記錄 else if (combobox1.text=) then 若“種類”為空 str:=select * from svcd where 碟片名稱 like +%+trim(edit1.text)+%+ 則按碟名關(guān)鍵字模糊查詢 else if (edit1.text=) then 若碟名為空,則按種類搜索 str:=select * from svcd where

18、 種類=+trim(combobox1.text)+else 若兩者均非空 str:=select * from svcd where碟片名稱 like +%+trim(edit1.text)+%+ and種類=+trim(combobox1.text)+ 則按兩個條件復合查詢SQL語句的執(zhí)行: With Query1 do Begin close ; clear ; sql.text:=str ; ExecSql ; open ; end ;查詢結(jié)果的顯示: 只需將DBGrid1組件的數(shù)據(jù)源設為query1 即可。根據(jù)查詢結(jié)果建立新記錄: 如果查詢結(jié)果數(shù)為0(dbgrid1.RecordCo

19、unt=0),則為該碟片自動生成一個新編號即可(碟片自動編號如本模塊所示)。在進貨表中插入記錄: table1.active:=true; 打開表 table1.InsertRecord(strtoint(edit1.text),.各個字段值,略); 插入記錄的各個字段值 table1.active:=false; 關(guān)閉表 在財務表中統(tǒng)計支出: table2.active:=true; 打開表 with table2 do if locate(日期,edit9.text,lopartialKey)=false 搜索,若無當日財務記錄then 則插入新記錄 InsertRecord(strtod

20、ate(edit9.text),0,0,0,strtocurr(edit7.text),0) else 否則,修改當日財務記錄 begin edit ; fields4.value:=fields4.value+strtocurr(edit7.text); post; end; table2.active:=false; 關(guān)閉表2.4.2 銷售子系統(tǒng)的實現(xiàn):設計思路:該模塊要記錄的信息有項目編號、碟片編號、碟片名稱、單價、單位、銷量、總額和日期等,其中項目編號由系統(tǒng)自動生成,碟片編號、碟片名稱、單價和單位通過查詢由系統(tǒng)自動顯示,銷量由人工輸入,總額由系統(tǒng)計算,日期由系統(tǒng)自動顯示。系統(tǒng)提供模糊查

21、詢功能,用戶只需提供碟名關(guān)鍵字和種類這兩個條件中的一個或兩個,便可得到該碟片的各種庫存信息,包括碟片編號、碟片名稱、種類、單價、單位、可售量和已售量等。在向銷售表插入記錄的同時,將本次銷售收入統(tǒng)計入財務表中。具體實現(xiàn):除操作的表對象不同外,其余類似進貨子系統(tǒng)。2.4.3 租碟子系統(tǒng)的實現(xiàn):設計思路:該模塊要記錄的信息有項目編號、碟片編號、碟片名稱、租量、押金、客戶和出租日期等,除租量和押金由人工輸入外,其他信息均由系統(tǒng)自動提供。系統(tǒng)提供模糊查詢功能,用戶只需提供碟名關(guān)鍵字和種類這兩個條件中的一個或兩個,便可得到該碟片的庫存信息,包括碟片編號、碟片名稱、種類、單位、可租量、已租量和出租次數(shù)等。將

22、本次記錄插入租還表的同時,將本次押金收入統(tǒng)計進財務表中。具體實現(xiàn):除操作的表對象不同外,其余類似進貨子系統(tǒng)。2.4.4 還碟子系統(tǒng)的實現(xiàn):設計思路:本功能模塊要記錄的信息有項目編號、歸還日期、租金收入和押金支出等,無需人工輸入,全部由系統(tǒng)提供。本模塊的關(guān)鍵是找到以前相應的租碟記錄,因此系統(tǒng)提供了模糊查詢功能,用戶只需提供碟名關(guān)鍵字和客戶名關(guān)鍵字這兩個條件中的一個或兩個,便和得到相應的一條或多條租碟記錄供用戶查詢和選擇,并顯示相應的租碟信息,包括項目編號、碟片編號、碟片名稱、租量、押金、客戶和出租日期等,供用戶計算租金收入和辦理還碟手續(xù)。在租還表中記錄歸還信息并設置相應的已還標志后,將本次租金收

23、入和押金支出統(tǒng)計進財務表中。具體實現(xiàn):模糊查詢的實現(xiàn):同進貨子系統(tǒng)略微不同的是,此處用兩個Tedit組件提供查詢條件,生成SQL語句 if (edit1.text=) and (edit2.text= ) then str:=select * from hire else if (edit2.text=) then str:=select * from hire where 碟片名稱 like +%+trim(edit1.text)+% + else if (edit1.text=) then str:=select * from hire where 客戶 like +%+trim(edit

24、2.text) +%+ else str:=select * from hire where碟片名稱 like +%+trim(edit1.text) +%+ and客戶 like +%+trim(edit2.text)+%+; SQL語句的執(zhí)行同進貨子系統(tǒng)。對租還表的操作不是插入記錄,而是修改記錄: table1.active:=true; with table1 do begin edit; fields7.value:=是; fields8.value:=strtodate(edit8.text);post; end;對財務表的操作同進貨子系統(tǒng),也是先查詢是否有當日財務記錄,若有,則修改

25、當日財務記錄中的租金收入和押金支出;否則建立新記錄。2.4.5 數(shù)據(jù)維護子系統(tǒng)的實現(xiàn):設計思路:為方便管理和維護,本模塊能在一個窗體內(nèi)實現(xiàn)對整個系統(tǒng)內(nèi)所有數(shù)據(jù)表的修改和刪除。本模塊要實現(xiàn)的功能是修改和刪除記錄,此處提供了兩種操作模式直接和間接模式,既可在原表上直接進行修改和刪除,也可先將所選定的記錄的信息全部另外單獨顯示出來,在表外進行修改和刪除,最后再將操作后的新信息返回表中。除刪除操作外,修改操作應設置權(quán)限,不能所有信息都可修改,此處設置為各表的主碼不能修改。系統(tǒng)提供模糊查詢功能,能快速查到所要修改或刪除的記錄,因為四個數(shù)據(jù)表(進貨表、銷售表、租碟表、庫存表)都要用到此功能,為方便起見,用

26、其共有屬性“碟片名稱”作為查詢條件,用戶只需提供碟名關(guān)鍵字即可;財務表可用主碼“日期”作為查詢條件。具體實現(xiàn): 選擇數(shù)據(jù)表對象:利用一個Ttable組件和五個Tradiobutton組件,分別實現(xiàn)對整個系統(tǒng)的五個數(shù)據(jù)表的連接,并將各個表的屬性名都單獨顯示出來(因為各個表的屬性個數(shù)不同,為方便起見,按最多的十個為限,設置了10個TLabel組件和10個TEdit組件用于顯示,屬性個數(shù)少的表顯示時可將剩余的組件都隱藏起來),以便用間接模式對數(shù)據(jù)表進行操作。五個Tradiobutton組件實現(xiàn)的功能類似,現(xiàn)以連接進貨表(stock.db)的Radiobutton1組件為例,其所要實現(xiàn)的功能為: 表的

27、連接self.Table1.Active:=false; self.Table1.TableName:='stock.db' self.Table1.Active:=true; 顯示屬性名 label1.Caption:='項目編號' label2.Caption:='碟片編號' label3.Caption:='種類' label4.Caption:='進價' label5.Caption:='單位' label6.Caption:='進量' label7.Caption:=

28、9;總額 ' label8.Caption:='日期' label9.Caption:='' label10.Caption:='' 輸入框清空edit1.Text:='' edit2.Text:='' edit3.Text:='' edit4.Text:='' edit5.Text:='' edit6.Text:='' edit7.Visible:=true; edit7.Text:=''edit8.Visible:=true

29、; edit8.Text:='' edit9.Visible:=false; edit10.Visible:=false;直接模式(在原表上直接進行修改或刪除)的實現(xiàn):本子系統(tǒng)用一個TDBGrid組件顯示查詢結(jié)果,在此模式下只需將TDBGrid組件的ReadOnly屬性值改為false即可。間接模式(先將所要修改或刪除的記錄信息顯示于表外,進行修改或刪除后再返回表中)的實現(xiàn):先將TDBGrid組件的ReadOnly屬性值改為true,然后再進行相應操作,以進貨表為例(即點擊了Radiobutton1組件),“修改記錄”操作為if radiobutton1.checked=tru

30、e thenbegin with table1 do if Locate(str2,edit1.Text,lopartialkey)=true 查找記錄then begin 設置為編輯狀態(tài)edit; 修改記錄 fields1.value:=edit2.text; fields2.value:=edit3.text;fields3.value:=strtocurr(edit4.text); fields4.value:=edit5.text;fields5.value:=strtoint(edit6.text); fields6.value:=strtocurr(edit7.text); fie

31、lds7.value:=strtodate(edit8.text); 狀態(tài)返回 post; end else showmessage('無此記錄')end;“刪除記錄”操作為:with table1 do if Locate(str2,edit1.Text,lopartialkey)=true then delete 刪除記錄 else showmessage(無此記錄);模糊查詢功能的實現(xiàn):同進貨子系統(tǒng)類似,此處更為簡單,只有碟名關(guān)鍵字一個條件。2.4.6 決策支持子系統(tǒng)的實現(xiàn):設計思路:此模塊主要功能之一是統(tǒng)計和排序,操作對象是整個系統(tǒng)的所有五個表,可按多種方式進行統(tǒng)計和排

32、序,比如對租還情況可按“已還”和“未還”兩種情況統(tǒng)計,對庫存情況可按“可售量”、“已售量”、“可租量”、“已租量”等幾種情況進行排序等等,排序方式可選“升序”和“降序”兩種。此模塊另一功能是報表打印,可將所有的業(yè)務登記表打印出來供業(yè)主參考決策和存儲備份。具體實現(xiàn):統(tǒng)計和排序功能的實現(xiàn):此處用了多個TRadioButton組件、一個TQuery組件和一個TDBGrid組件,分別用于選擇方式、生成和執(zhí)行SQL語句、顯示結(jié)果。SQL語句比較簡單,統(tǒng)計功能用的基本語句是select * from xxx where yyy=zzz ,排序功能用的基本語句是select * from xxx order

33、 by yyy desc (asc),在具體的統(tǒng)計和排序操作中只需將表名和屬性名更改一下即可。報表打印功能的實現(xiàn):此處用一個TTable組件、一個TQuickRep組件、多個TQRLabel組件和TQRExpr組件共同來實現(xiàn),在打印具體的業(yè)務表時,只需修改一下TTable組件和TQRExpr組件的數(shù)據(jù)表連接和TQRLabel組件的屬性名顯示即可。2.5 系統(tǒng)的調(diào)試和試運行在系統(tǒng)的設計、調(diào)試和試運行過程中,遇到許多意想不到的問題,現(xiàn)總結(jié)如下:數(shù)據(jù)庫的連接和操作問題:數(shù)據(jù)庫連接問題:本系統(tǒng)建的數(shù)據(jù)表類型都是Delphi自帶的默認的Paradox類型,在建立數(shù)據(jù)庫時,最初是直接利用Delphi自帶的

34、DBDEMOS數(shù)據(jù)庫,把所建的表都直接放在其中,在程序中各組件的“數(shù)據(jù)源”、“數(shù)據(jù)集”屬性都直接設為DBDEMOS數(shù)據(jù)庫,對各數(shù)據(jù)表的訪問和操作也都很方便。但是當把該系統(tǒng)移植到其他計算機上時,若主機未裝有Delphi軟件工具,則該程序無法運行。解決方法:把數(shù)據(jù)表和系統(tǒng)源程序放在同一個文件夾里,利用開放式數(shù)據(jù)庫連接驅(qū)動引擎ODBC建立一個驅(qū)動程序為“Driver to Microsoft Paradox(*.db)”的數(shù)據(jù)源My database ,并選擇其目錄,將其指向該文件夾,然后把源程序里各組件的“數(shù)據(jù)源”、“數(shù)據(jù)集”屬性都改為My database 。數(shù)據(jù)庫操作問題:在設計過程中,對數(shù)據(jù)

35、庫進行插入、修改、刪除操作時,經(jīng)常遇到“cannot operate on a closed dataset”的提示信息,經(jīng)分析,原因是對各個TTable組件的Active屬性值設置不一,有的為true,有的為false,造成操作時不知其Active值到底為何值而導致錯誤。解決方法:將各個TTable組件的Active屬性初始值均設為false,每次具體操作時都先設為true,操作完畢再恢復為false。SQL語句的生成和執(zhí)行問題:SQL語句的生成問題:問題之一,在好多模塊的SQL語句中均需要單引號,剛開始時在源程序中我一直用雙引號以便能在最終的SQL語句中生成單引號,結(jié)果以失敗告終。解決方法

36、:在源程序中用四個連續(xù)的單引號,可在最終的SQL語句中生成單引號。問題之二:在好多模塊中都是把對多個數(shù)據(jù)表的操作集中放在一起,比如數(shù)據(jù)維護子系統(tǒng)中的修改和刪除操作、決策支持子系統(tǒng)中的統(tǒng)計和排序操作等等,這時通常是用一個TQuery組件來生成和執(zhí)行所有的SQL語句,作者在設計系統(tǒng)的時候,開始時是以SQL語句一次性完整生成為目標,結(jié)果因為判斷語句的多重嵌套使用,造成系統(tǒng)工作量的增加和運行效率的降低。解決方法:因為在這些模塊的操作中SQL語句的基本骨架是相同的,區(qū)別僅在于表名和屬性名的不同,所以以表名和屬性名為界,將一個SQL語句分為幾部分,將相同的部分設為字符串常量,將表名和屬性名設為字符串變量,

37、在選擇數(shù)據(jù)表的時候就給這兩個變量賦值,最后到生成SQL語句的時候只需將這些字符串常量和變量聯(lián)接在一起即可。SQL語句的執(zhí)行問題:經(jīng)常遇到的問題是類型不匹配。例如,在還碟子系統(tǒng)中,在為查找相應租碟記錄而實現(xiàn)模糊查詢功能的時候,原本設想是提供碟名關(guān)鍵字、客戶名關(guān)鍵字和出租日期三個條件中的一個或多個來實現(xiàn)模糊查詢,結(jié)果運行的時候,是只要牽涉到日期,就會出現(xiàn)“Type mismatch in expression”的提示信息,當時的實際過程為:租還表(hire.db)中屬性“出租日期”、“歸還日期”的類型均定義為日期類型,在該模塊中查詢條件“出租日期”由TDateTimePicker組件提供(設當前日期為20

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論