午夜精品福利视频,亚洲激情专区,免费看a网站,aa毛片,亚洲色图激情小说,亚洲一级毛片,免费一级毛片一级毛片aa

計(jì)算機(jī)系畢業(yè)論文(2)

學(xué)人智庫 時間:2018-02-10 我要投稿
【www.stanzs.com - 學(xué)人智庫】

  另外,數(shù)據(jù)表設(shè)計(jì)時一般都應(yīng)該有一些標(biāo)志字段,標(biāo)志字段可以定義成CHAR(1)或BIT型。建議實(shí)際應(yīng)用中定義成CHAR(1)字段可以存儲多種可能的狀態(tài),在最初設(shè)計(jì)時,可能我們沒有考慮到的一些情況,在程序后來的開發(fā)中,可以通過設(shè)計(jì)標(biāo)志字段為不同的 值來解決,這樣就避免了修改數(shù)據(jù)庫結(jié)構(gòu)。

  數(shù)據(jù)庫初期設(shè)計(jì)時一定要謹(jǐn)慎,把所有可能的情況都考慮進(jìn)去,即使當(dāng)時沒有用到,也要將它留在數(shù)據(jù)庫中作為備用字段以便將來擴(kuò)充。

  程序一旦開始編碼,就應(yīng)該盡量避免再修改數(shù)據(jù)庫。因?yàn)槿绻麛?shù)據(jù)庫結(jié)構(gòu)一旦改變,

  所有與修改的數(shù)據(jù)表相關(guān)的業(yè)務(wù)都有可能受到影響,而某些影響還很難看到,這樣就容易形成一個惡性循環(huán)。錯誤越改越多,越改越亂,最終導(dǎo)致程序的失敗。PB的數(shù)據(jù)窗口與其他語言的數(shù)據(jù)控件不一樣,它的很多東西是預(yù)編譯的。即使你一個模塊已經(jīng)調(diào)試無誤,但只要數(shù)據(jù)庫結(jié)構(gòu)改動。相應(yīng)的模塊就一定要重新修改,否則一定會出問題。

  圖書借閱管理系統(tǒng)數(shù)據(jù)庫中各個表的設(shè)計(jì)結(jié)果如下面幾個表格所示。每個表格表示為數(shù)據(jù)庫中的一個表。

  一、 圖書基本信息表(book)

  列名 數(shù)據(jù)類型 長度 允許為空

  圖書編號 decimal 9 Not null

  ISBN varchar 50 Not null

  載體形式 tinyint 1 Not null

  圖書名稱 varchar 40 Not null

  圖書語言 tinyint 1 Not null

  圖書類別 int 4 Not null

  圖書狀態(tài) tinyint 1 Not null

  操作員 varchar 10 Not null

  存放位置 int 4

  讀者 int 4

  借出日期 smalldatetime 4

  歸還日期 smalldatetime 4

  圖書作者1 varchar 20

  圖書作者2 varchar 20

  出版社名稱 varchar 50

  出版日期 smalldatetime 4

  頁數(shù) int 4

  關(guān)鍵詞 varchar 40

  簡介 varchar 255

  等級日期 smalldatetime 4

  封面 image 16

  備注 varchar 255

  2、讀者基本信息表(people)

  列名 數(shù)據(jù)類型 長度 允許為空

  編號 int 4 Not null

  姓名 varchar 10 Not null

  密碼 varchar 10 Not null

  類別 int 4 Not null

  允許借書量 int 4 Not null

  已借書量 int 4 Not null

  性別 tinyint 1

  工作單位 varchar 40

  住址 varchar 40

  電話 varchar 15

  登記日期 smalldatetime 4

  照片 image 16

  備注 varchar 255

  3、圖書形式基本信息表(form)

  列名 數(shù)據(jù)類型 長度 允許為空

  編號 tinyint 1 Not null

  值 varchar 10 Not null4、圖書類別基本信息表(kind)

  列名 數(shù)據(jù)類型 長度 允許為空

  編號 int 4 Not null

  值 varchar 10 Not null5、圖書語言基本信息表(lang)

  列名 數(shù)據(jù)類型 長度 允許為空

  編號 tinyint 1 Not null

  值 varchar 10 Not null6、圖書管理員基本信息表(librarian)

  列名 數(shù)據(jù)類型 長度 允許為空

  登錄名 varchar 10 Not null

  密碼 varchar 10 Not null

  權(quán)限 tinyint 1 Not null

  姓名 varchar 10 Not null

  性別 tinyint 1

  出生日期 smalldatetime 4

  職務(wù) varchar 10

  照片 image 16

  備注 varchar 255 7、圖書館地點(diǎn)基本信息表(place)

  列名 數(shù)據(jù)類型 長度 允許為空

  編號 int 4 Not null

  值 varchar 10 Not null8、讀者種類基本信息表(readerkind)

  列名 數(shù)據(jù)類型 長度 允許為空

  編號 int 4 Not null

  值 vrchar 10 Not null

  允許借書量 int 4 Not null

  借閱天數(shù) int 4 Not null9、圖書狀態(tài)基本信息表(state)

  列名 數(shù)據(jù)類型 長度 允許為空

  編號 tinyint 1 Not null

  值 varchar 10 Not null(1)規(guī)劃有效的索引

  1.在組合表的列中創(chuàng)建索引,包括主關(guān)鍵字和外部關(guān)鍵字所在的列。

  2.在列或類組合中創(chuàng)建唯一的索引能增強(qiáng)唯一性。

  3.瀏覽索引并卸載不使用的索引。索引需要一定硬盤空間和時間來維護(hù)。具有較高數(shù)據(jù)插入操作頻率的數(shù)據(jù)庫最好不要索引。有較高讀操作頻率的數(shù)據(jù)庫應(yīng)該有更多的索引。

  4.避免在簇索引中包括不必要的列。在可能的情況下,使用較小的數(shù)據(jù)類型,例如用varchar替代char。

  5.考慮使用簇索引來支持排序和范圍化查詢。在為數(shù)據(jù)檢索優(yōu)化表時,簇索引必須支持?jǐn)?shù)據(jù)的分組索引。為簇關(guān)鍵字選擇列或列組,簇關(guān)鍵字以經(jīng)常需要的順序排序數(shù)據(jù)或以必須被一起訪問的記錄而分組記錄。

  6.創(chuàng)建支持一般查詢的查找參數(shù)索引。具有高選擇性的列是索引的最好候選列。具有高密度的列是索引糟糕的候選列。

  (2)使用約束實(shí)現(xiàn)數(shù)據(jù)的完整性

  PRIMARY KEY約束在表中定義了主關(guān)鍵字,它是行唯一的標(biāo)識符,它可以強(qiáng)制實(shí)體完整性。在使用PRIMARY KEY約束時考慮以下事實(shí):

  1.每個表只能有一個PRIMARY KEY約束。

  2.鍵入的值必須是唯一的。

  3.不允許有空值。

  4.PRIMARY KEY約束在指定的列創(chuàng)建唯一的索引,可以指定簇索引和非

  索引(如果 非簇索引先前并不存在,簇索引是默認(rèn)的)。

  UNIQUE約束指定,在一列中的兩行不能有相同的值。該約束使用唯一的索引來強(qiáng)制實(shí)體的完整性。在已有一個主關(guān)鍵字時UNIQUE約束很有用,例如雇員號,但是必須保證其他標(biāo)識符(例如,雇員駕駛證號)也是唯一的。在使用UNIQUE約束時,考慮以下事實(shí);

  1.允許有空值。

  2.在一個表中可以設(shè)置多個UNIQUE約束。

  3.可以將UNIQUE約束運(yùn)用于具有唯一值的單列或多列,但不能用于表的主關(guān)鍵字。

  4.通過在指定的列或列組中創(chuàng)建唯一的索引,可以使UNIQUE索引得到強(qiáng)制

  第五章 圖書管理系統(tǒng)的具體實(shí)施

  第一節(jié) PowerBuilder開發(fā)工具簡介

  數(shù)據(jù)庫應(yīng)用是當(dāng)前計(jì)算機(jī)應(yīng)用的一個非常重要的方面,而在目前的數(shù)據(jù)庫應(yīng)用技術(shù)中普遍采用的就是客戶機(jī)/服務(wù)器體系結(jié)構(gòu),在這種體系結(jié)構(gòu)中,所有的數(shù)據(jù)和數(shù)據(jù)庫管理系統(tǒng)都在服務(wù)器上,客戶機(jī)通過采用標(biāo)準(zhǔn)的SQL語句等方式來訪問服務(wù)器上數(shù)據(jù)庫中的數(shù)據(jù)。由于這種體系結(jié)構(gòu)把數(shù)據(jù)和對數(shù)據(jù)的管理都統(tǒng)一放在了服務(wù)器上。就保證了數(shù)據(jù)的安全性和完整性,同時也可以充分利用服務(wù)器高性能的特點(diǎn)。正因?yàn)榭蛻魴C(jī)/服務(wù)器體系結(jié)構(gòu)的這些優(yōu)點(diǎn),因而得到了非常廣泛的應(yīng)用。

  PowerBuilder是完全按照客戶機(jī)/服務(wù)器體系結(jié)構(gòu)研制設(shè)計(jì),在客戶機(jī)/服務(wù)器結(jié)構(gòu)中,它使用在客戶機(jī)中,作為數(shù)據(jù)庫應(yīng)用程序的開發(fā)工具而存在。由于PowerBuilder采用了面向?qū)ο蠛涂梢暬夹g(shù),提供可視化的應(yīng)用開發(fā)環(huán)境,使得我們利用PowerBuilder,可以方便快捷地開發(fā)出利用后臺服務(wù)器中的數(shù)據(jù)和數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)庫應(yīng)用程序。

  在當(dāng)前,網(wǎng)絡(luò)技術(shù)迅速發(fā)展,隨之發(fā)展的還有OLE,OCX,跨平臺等技術(shù),而在PowerBuilder的最新版PowerBuilder 9.0中提供了對這些技術(shù)的全面支持?傊跀(shù)據(jù)庫開發(fā)工具領(lǐng)域,PowerBuilder是其中非常優(yōu)秀的一個,利用它我們可以開發(fā)出功能強(qiáng)大的數(shù)據(jù)庫應(yīng)用程序。

  第二節(jié) SQL Server后臺數(shù)據(jù)庫管理系統(tǒng)

  本系統(tǒng)的開發(fā)選擇了SQL數(shù)據(jù)庫。SQL是MS SQL Server的簡述,是世界上及國內(nèi)比較流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它適用于中小型事物處理及客戶端/服務(wù)端結(jié)構(gòu)的應(yīng)用系統(tǒng)。它功能強(qiáng)大操作簡便,日益為廣大數(shù)據(jù)庫用戶所喜愛。越來越多的開發(fā)工具提供了與SQL Server的接口。SQL Server 是一個關(guān)系數(shù)據(jù)庫管理系統(tǒng),它最初是由Microsoft、Sybase 和Ashton-Tate三家公司共同開發(fā)的。于1988 年推出了第一個OS/2 版本,在Windows NT 推出后,Microsoft與Sybase 在SQL Server 的開發(fā)上就分道揚(yáng)鑣了,Microsoft 將SQL Server 移植到Windows NT系統(tǒng)上,專注于開發(fā)推廣SQL Server 的Windows NT 版本。

  SQL Server 2000 是Microsoft 公司推出的SQL Server 數(shù)據(jù)庫管理系統(tǒng)的最新版本,該版本繼承了SQL Server 7.0 版本的優(yōu)點(diǎn),同時又比它增加了許多更先進(jìn)的功能、具有使用方便、可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn)?煽缭綇倪\(yùn)行Microsoft Windows 98 的膝上型電腦到運(yùn)行Microsoft Windows 2000 的大型多處理器的服務(wù)器等多種平臺使用。MS SQL Server不但可以應(yīng)用于大中型數(shù)據(jù)庫管理中,建立分布式關(guān)系數(shù)據(jù)庫,并且也可以開發(fā)桌面數(shù)據(jù)庫。事實(shí)上,SQL Server數(shù)據(jù)庫處理的基本結(jié)構(gòu),采取關(guān)系型數(shù)據(jù)庫模式,盡管如此,相信大家都可以輕易的發(fā)現(xiàn),在SQL Server的數(shù)據(jù)庫處理方式,則是使用面向?qū)ο蟮牟僮鞣绞脚c精神,也就是說,SQL Server的所有功能,都可以基于系統(tǒng)已經(jīng)建立好的一些對象來達(dá)成,是相當(dāng)OO(面向?qū)ο?的一個系統(tǒng)結(jié)構(gòu)。

  SQL Server 企業(yè)管理器是 SQL Server 的主要管理工具,它提供了一個遵從 MMC 標(biāo)準(zhǔn)的用戶界面,使用戶得以:

  定義 SQL Server 實(shí)例組。

  將個別服務(wù)器注冊到組中。

  為每個已注冊的服務(wù)器配置所有 SQL Server 選項(xiàng)。

  在每個已注冊的服務(wù)器中創(chuàng)建并管理所有 SQL Server 數(shù)據(jù)庫、對象、登錄、用戶和權(quán)限。

  在每個已注冊的服務(wù)器上定義并執(zhí)行所有 SQL Server 管理任務(wù)。

  通過喚醒調(diào)用 SQL 查詢分析器,交互地設(shè)計(jì)并測試 SQL 語句、批處理和腳本。它支持中小型數(shù)據(jù)庫,多用戶的高性能和事物處理,支持分布式數(shù)據(jù)庫和分布處理,能夠?qū)崿F(xiàn)安全性和完整性控制,具有可移植性、可兼容性和可聯(lián)結(jié)性,它具有良好的數(shù)據(jù)管理能力和良好的開發(fā)性。

  第三節(jié) Powerbuilder 9應(yīng)用程序開發(fā)的基本步驟

  我們要開發(fā)應(yīng)用程序時,首先要對它進(jìn)行分析。無論哪種、哪方面的應(yīng)用程序,都要先建立一個應(yīng)用對象。下面我們介紹以下PowerBuilder 9應(yīng)用程序開發(fā)的基本步驟:

  (1)首先要建立應(yīng)用對象。

  (2)創(chuàng)建窗口。在窗口里放置各種控件和編寫事件響應(yīng)的腳本。

  (3)創(chuàng)建菜單。窗口里的菜單可包括菜單條,下拉式菜單,級聯(lián)菜單和彈出式菜單為菜單編寫事件響應(yīng)的腳本。

  (4)創(chuàng)建用戶對象。如果想要重復(fù)使用某個控件的功能,可以把窗口上經(jīng)常放置的控件定義為用戶對象。

  (5)創(chuàng)建數(shù)據(jù)窗口。數(shù)據(jù)窗口可以檢索數(shù)據(jù)庫中的數(shù)據(jù),可以建立各種報或統(tǒng)計(jì)表,可以修改數(shù)據(jù)庫。

  (6)創(chuàng)建函數(shù)、結(jié)構(gòu)、事件。為了能夠更好地支持腳本,編寫自定義的函數(shù),定義結(jié)構(gòu)類型變量,也可以為對象和控件定義自己的事件。

  (7)運(yùn)行與調(diào)試?梢栽陂_發(fā)環(huán)境中隨時運(yùn)行應(yīng)用程序,發(fā)現(xiàn)錯誤后,可以用調(diào)試工具進(jìn)行調(diào)試。

  (8)當(dāng)應(yīng)用程序開發(fā)完畢后,可以把它編譯成可執(zhí)行的文件,讓用戶比較容易地建立應(yīng)用系統(tǒng)的運(yùn)行環(huán)境。

  第四節(jié) 編碼規(guī)范

  在軟件開發(fā)過程中 ,為了減少在軟件開發(fā)過程中的錯誤,應(yīng)該遵守一定標(biāo)準(zhǔn)。

  給對象命名要有一定的規(guī)范,部件名稱可以達(dá)到40個字符,窗口的命名:W_功能代碼_功能描述。數(shù)據(jù)窗口的命名:DW_功能代碼_功能描述。菜單命名:W_功能代碼_功能描述。

  標(biāo)識符命名時,應(yīng)該使標(biāo)識符有一定的字面含義,有助于程序的調(diào)試和腳本的可讀性的提高。本系統(tǒng)中使用的命名規(guī)范為:變量作用域+變量類型+”_”+具有一定字面含義的名稱。例如:li_selectrow反映出的含義:”l”代表是本地變量,是local的縮寫,”i”代表是integer類型的變量,selectrow表示該變量是用來記錄一個行號的計(jì)數(shù)器。

  第五節(jié) 創(chuàng)建祖先窗口和全局函數(shù)

  為充分利用PB的面向?qū)ο蟮奶匦。程序開發(fā)時一般創(chuàng)建幾個模板窗口。將功能窗口上的某些常用功能封裝在模板窗口中。然后將這些模板窗口作為祖先窗口。所有的子孫窗口都可以通過繼承的方法來生成。這樣就減少了代碼的書寫量。使得整個程序界面保持整齊。當(dāng)修改祖先窗口時,所有的子孫窗口都會自動修改。所以,祖先窗口的確定要十分謹(jǐn)慎。

  全局函數(shù)與局部函數(shù)的作用類似。唯一不同的是全局函數(shù)的作用域是整個程序周期。不論你在任何一個模塊的代碼中都可以調(diào)用它。所以我們可以把某些常用功能寫成全局函數(shù)。在程序的其他地方反復(fù)調(diào)用。

  一、 函數(shù)setmenu(character lev)

  功能介紹:通過傳入的gi_right值,將某些菜單項(xiàng)設(shè)為“非使能”,以限制某些功能的使用。gi_right值即不同職責(zé)的權(quán)限(讀者-1、普通圖書管理員1、高級圖書管理員 2、 超級管理員3)。

  二、 函數(shù)countday

  countday (date date1,date date2)

  功能介紹:通過傳入的date1(起始日期)值與date2(結(jié)束日期)值,計(jì)算出中間相差的天數(shù),返回值為integer型。

  代碼分析:

  int day

  day=(integer(year(date2)) - integer(year(date1)))*365 +&

  (integer(month(date2)) - integer(month(date1)))*30 +&

  (integer(day(date2)) - integer(day(date1)))*1

  return day

  第六節(jié) 應(yīng)用程序?qū)ο?App_librarain

  功能介紹:PB程序由一個應(yīng)用程序開始,即每個PB程序在開始運(yùn)行時,先執(zhí)行應(yīng)用程序?qū)ο蟮腛pen事件。在Open事件中連接數(shù)據(jù)庫,并打開登陸窗口w_login。

  代碼分析:

  SQLCA.DBMS = "MSS Microsoft SQL Server"

  SQLCA.Database = "ch4ckgl"

  SQLCA.LogPass =ProfileString(".\data.dat",&

  "SQLCA","LogPass","super1234") //從參數(shù)文件得到登錄密碼

  SQLCA.ServerName = ProfileString(".\data.dat",&

  "SQLCA","ServerName","localhost") //從參數(shù)文件得到數(shù)據(jù)庫服務(wù)器名

  SQLCA.LogId ="sa"

  SQLCA.AutoCommit = False

  SQLCA.DBParm = ""

  connect;

  open(w_login)

  第六章 具體窗口的實(shí)現(xiàn)

  第一節(jié) 登錄窗口

  圖6.1 登陸窗口

  功能介紹:本窗口主要是檢查操作員輸入的用戶名及密碼是否正確,如果正確,允許登錄。如果錯誤,顯示出錯誤提示。

  操作方法:填寫“用戶名”與“密碼”后,點(diǎn)擊“登錄”按鈕進(jìn)行驗(yàn)證,點(diǎn)擊“取消”退出。

  第二節(jié) 主窗口

  功能介紹:本窗口作為菜單及其他子窗口的容器。

  窗口設(shè)置;本窗口為容器窗口。表示本窗口為多文檔界面,可以有菜單、工具欄與狀態(tài)欄。

  圖6.2 主窗口界面

  第三節(jié) 新書入庫窗口

  圖6.3 新書入庫

  功能介紹:增加信息。

  操作方法:

  點(diǎn)擊“出庫入庫”按鈕,填寫圖書信息,完成后點(diǎn)擊“保存”按鈕

  代碼分析:

  “保存”按扭事件:

  long ll_id,ll_i

  //得到最大的圖書編號

  select max(圖書編號) into :ll_id from book;

  if sqlca.sqlcode=0 then //成功

  il_amount=dw_2.getitemnumber( 1,"圖書編號")

  dw_2.setredraw( false) //不自動刷新數(shù)據(jù)窗口

  for ll_i=1 to il_amount

  ll_id=ll_id+1

  dw_2.setitem( 1,"圖書編號", ll_id)

  //必須對數(shù)據(jù)窗口的狀態(tài)進(jìn)行設(shè)置才能多次插入數(shù)據(jù)

  //只有將行設(shè)置為NewModified!才能插入,設(shè)置列列不行的

  dw_2.setitemstatus( 1,0, Primary!,NewModified!)

  if dw_2.update( )<>1 then

  messagebox("錯誤","插入圖書記錄失敗!",stopsign!)

  rollback;

  return //退出

  end if

  commit;

  next

  dw_2.setitem( 1,"圖書編號",il_amount)

  dw_2.setredraw( true)

  else

  messagebox("錯誤","查找最大的圖書編號時出現(xiàn)錯誤!",stopsign!)

  end if

  il_startid=(ll_id - il_amount)+1 //如果沒有出現(xiàn)錯誤,則得到起始編號

  messagebox("成功","圖書入庫成功!")

  cb_refresh.triggerevent( clicked!)

  this.enabled=false

  第四節(jié) 舊書出庫窗口

  圖6.4 圖書出庫窗口

  功能介紹:刪除圖書信息。

  操作方法:首先通過圖書編號檢索出圖書信息,然后點(diǎn)擊“出庫”按鈕注銷圖書。

  第五節(jié)讀者類型管理窗口

  圖6.5 讀者類型管理窗口

  功能介紹:管理讀者類型信息。

  操作方法:可以通過”添加”、“刪除“、“保存”等按扭對讀者類型做相應(yīng)的操作。

  代碼分析:

  “刪除”按扭事件:

  integer li_row,li_re

  string ls_name

  li_row=dw_1.getrow( )

  ls_name=dw_1.getitemstring( li_row, "值")

  li_re=messagebox("提示","是否刪除用戶類型:"+ls_name+"?",Question!,YesNO!)

  if li_re=1 then

  dw_1.deleterow( li_row)

  li_re=dw_1.update( )

  if li_re=1 then

  commit;

  else

  messagebox("提示","刪除用戶類型:"+ls_name+"失敗!")

  rollback;

  end if

  end if

  第六節(jié) 借閱人管理窗口

  圖6.6 讀者維護(hù)管理窗口

  功能介紹:增加、查詢、刪除、修改借閱人等信息

  操作方法:其中添加按扭類同“新書入庫窗口”的入庫按扭,其它都是對圖書做簡單的修改、查詢和刪除按扭。詳細(xì)代碼在此不一一列舉。

  第七節(jié) 圖書維護(hù)窗口

  圖6.7圖書維護(hù)窗口

  功能介紹:查詢、添加、修改、刪除圖書基本信息。

  操作方法:類同其它信息添加、修改和刪除功能。