精品一区二区中文在线,无遮挡h肉动漫在线观看,国产99视频精品免视看9,成全免费高清大全

計算機系畢業論文(2)

學人智庫 時間:2018-02-10 我要投稿
【salifelink.com - 學人智庫】

  另外,數據表設計時一般都應該有一些標志字段,標志字段可以定義成CHAR(1)或BIT型。建議實際應用中定義成CHAR(1)字段可以存儲多種可能的狀態,在最初設計時,可能我們沒有考慮到的一些情況,在程序后來的開發中,可以通過設計標志字段為不同的 值來解決,這樣就避免了修改數據庫結構。

  數據庫初期設計時一定要謹慎,把所有可能的情況都考慮進去,即使當時沒有用到,也要將它留在數據庫中作為備用字段以便將來擴充。

  程序一旦開始編碼,就應該盡量避免再修改數據庫。因為如果數據庫結構一旦改變,

  所有與修改的數據表相關的業務都有可能受到影響,而某些影響還很難看到,這樣就容易形成一個惡性循環。錯誤越改越多,越改越亂,最終導致程序的失敗。PB的數據窗口與其他語言的數據控件不一樣,它的很多東西是預編譯的。即使你一個模塊已經調試無誤,但只要數據庫結構改動。相應的模塊就一定要重新修改,否則一定會出問題。

  圖書借閱管理系統數據庫中各個表的設計結果如下面幾個表格所示。每個表格表示為數據庫中的一個表。

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

  列名 數據類型 長度 允許為空

  圖書編號 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

  圖書狀態 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

  頁數 int 4

  關鍵詞 varchar 40

  簡介 varchar 255

  等級日期 smalldatetime 4

  封面 image 16

  備注 varchar 255

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

  列名 數據類型 長度 允許為空

  編號 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)

  列名 數據類型 長度 允許為空

  編號 tinyint 1 Not null

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

  列名 數據類型 長度 允許為空

  編號 int 4 Not null

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

  列名 數據類型 長度 允許為空

  編號 tinyint 1 Not null

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

  列名 數據類型 長度 允許為空

  登錄名 varchar 10 Not null

  密碼 varchar 10 Not null

  權限 tinyint 1 Not null

  姓名 varchar 10 Not null

  性別 tinyint 1

  出生日期 smalldatetime 4

  職務 varchar 10

  照片 image 16

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

  列名 數據類型 長度 允許為空

  編號 int 4 Not null

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

  列名 數據類型 長度 允許為空

  編號 int 4 Not null

  值 vrchar 10 Not null

  允許借書量 int 4 Not null

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

  列名 數據類型 長度 允許為空

  編號 tinyint 1 Not null

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

  1.在組合表的列中創建索引,包括主關鍵字和外部關鍵字所在的列。

  2.在列或類組合中創建唯一的索引能增強唯一性。

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

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

  5.考慮使用簇索引來支持排序和范圍化查詢。在為數據檢索優化表時,簇索引必須支持數據的分組索引。為簇關鍵字選擇列或列組,簇關鍵字以經常需要的順序排序數據或以必須被一起訪問的記錄而分組記錄。

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

  (2)使用約束實現數據的完整性

  PRIMARY KEY約束在表中定義了主關鍵字,它是行唯一的標識符,它可以強制實體完整性。在使用PRIMARY KEY約束時考慮以下事實:

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

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

  3.不允許有空值。

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

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

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

  1.允許有空值。

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

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

  4.通過在指定的列或列組中創建唯一的索引,可以使UNIQUE索引得到強制

  第五章 圖書管理系統的具體實施

  第一節 PowerBuilder開發工具簡介

  數據庫應用是當前計算機應用的一個非常重要的方面,而在目前的數據庫應用技術中普遍采用的就是客戶機/服務器體系結構,在這種體系結構中,所有的數據和數據庫管理系統都在服務器上,客戶機通過采用標準的SQL語句等方式來訪問服務器上數據庫中的數據。由于這種體系結構把數據和對數據的管理都統一放在了服務器上。就保證了數據的安全性和完整性,同時也可以充分利用服務器高性能的特點。正因為客戶機/服務器體系結構的這些優點,因而得到了非常廣泛的應用。

  PowerBuilder是完全按照客戶機/服務器體系結構研制設計,在客戶機/服務器結構中,它使用在客戶機中,作為數據庫應用程序的開發工具而存在。由于PowerBuilder采用了面向對象和可視化技術,提供可視化的應用開發環境,使得我們利用PowerBuilder,可以方便快捷地開發出利用后臺服務器中的數據和數據庫管理系統的數據庫應用程序。

  在當前,網絡技術迅速發展,隨之發展的還有OLE,OCX,跨平臺等技術,而在PowerBuilder的最新版PowerBuilder 9.0中提供了對這些技術的全面支持。總之在數據庫開發工具領域,PowerBuilder是其中非常優秀的一個,利用它我們可以開發出功能強大的數據庫應用程序。

  第二節 SQL Server后臺數據庫管理系統

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

  SQL Server 2000 是Microsoft 公司推出的SQL Server 數據庫管理系統的最新版本,該版本繼承了SQL Server 7.0 版本的優點,同時又比它增加了許多更先進的功能、具有使用方便、可伸縮性好與相關軟件集成程度高等優點。可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2000 的大型多處理器的服務器等多種平臺使用。MS SQL Server不但可以應用于大中型數據庫管理中,建立分布式關系數據庫,并且也可以開發桌面數據庫。事實上,SQL Server數據庫處理的基本結構,采取關系型數據庫模式,盡管如此,相信大家都可以輕易的發現,在SQL Server的數據庫處理方式,則是使用面向對象的操作方式與精神,也就是說,SQL Server的所有功能,都可以基于系統已經建立好的一些對象來達成,是相當OO(面向對象)的一個系統結構。

  SQL Server 企業管理器是 SQL Server 的主要管理工具,它提供了一個遵從 MMC 標準的用戶界面,使用戶得以:

  定義 SQL Server 實例組。

  將個別服務器注冊到組中。

  為每個已注冊的服務器配置所有 SQL Server 選項。

  在每個已注冊的服務器中創建并管理所有 SQL Server 數據庫、對象、登錄、用戶和權限。

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

  通過喚醒調用 SQL 查詢分析器,交互地設計并測試 SQL 語句、批處理和腳本。它支持中小型數據庫,多用戶的高性能和事物處理,支持分布式數據庫和分布處理,能夠實現安全性和完整性控制,具有可移植性、可兼容性和可聯結性,它具有良好的數據管理能力和良好的開發性。

  第三節 Powerbuilder 9應用程序開發的基本步驟

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

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

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

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

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

  (5)創建數據窗口。數據窗口可以檢索數據庫中的數據,可以建立各種報或統計表,可以修改數據庫。

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

  (7)運行與調試。可以在開發環境中隨時運行應用程序,發現錯誤后,可以用調試工具進行調試。

  (8)當應用程序開發完畢后,可以把它編譯成可執行的文件,讓用戶比較容易地建立應用系統的運行環境。

  第四節 編碼規范

  在軟件開發過程中 ,為了減少在軟件開發過程中的錯誤,應該遵守一定標準。

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

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

  第五節 創建祖先窗口和全局函數

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

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

  一、 函數setmenu(character lev)

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

  二、 函數countday

  countday (date date1,date date2)

  功能介紹:通過傳入的date1(起始日期)值與date2(結束日期)值,計算出中間相差的天數,返回值為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

  第六節 應用程序對象 App_librarain

  功能介紹:PB程序由一個應用程序開始,即每個PB程序在開始運行時,先執行應用程序對象的Open事件。在Open事件中連接數據庫,并打開登陸窗口w_login。

  代碼分析:

  SQLCA.DBMS = "MSS Microsoft SQL Server"

  SQLCA.Database = "ch4ckgl"

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

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

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

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

  SQLCA.LogId ="sa"

  SQLCA.AutoCommit = False

  SQLCA.DBParm = ""

  connect;

  open(w_login)

  第六章 具體窗口的實現

  第一節 登錄窗口

  圖6.1 登陸窗口

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

  操作方法:填寫“用戶名”與“密碼”后,點擊“登錄”按鈕進行驗證,點擊“取消”退出。

  第二節 主窗口

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

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

  圖6.2 主窗口界面

  第三節 新書入庫窗口

  圖6.3 新書入庫

  功能介紹:增加信息。

  操作方法:

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

  代碼分析:

  “保存”按扭事件:

  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) //不自動刷新數據窗口

  for ll_i=1 to il_amount

  ll_id=ll_id+1

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

  //必須對數據窗口的狀態進行設置才能多次插入數據

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

  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("錯誤","查找最大的圖書編號時出現錯誤!",stopsign!)

  end if

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

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

  cb_refresh.triggerevent( clicked!)

  this.enabled=false

  第四節 舊書出庫窗口

  圖6.4 圖書出庫窗口

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

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

  第五節讀者類型管理窗口

  圖6.5 讀者類型管理窗口

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

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

  代碼分析:

  “刪除”按扭事件:

  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

  第六節 借閱人管理窗口

  圖6.6 讀者維護管理窗口

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

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

  第七節 圖書維護窗口

  圖6.7圖書維護窗口

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

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