版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、圖書(shū)借閱管理系統(tǒng)本系統(tǒng)由VFP開(kāi)發(fā),實(shí)現(xiàn)了系統(tǒng)登錄、圖書(shū)管理、學(xué)生管理、圖書(shū)的借閱與歸還、圖書(shū)借閱排行榜和查看逾期未還圖書(shū)以及各種信息的打印等功能。在執(zhí)行本程序時(shí),首先彈出“系統(tǒng)登錄”表單,在輸入正確的賬號(hào)和密碼后即可登錄系統(tǒng),在此界面單擊“進(jìn)入”按鈕,進(jìn)入系統(tǒng)主表單。系統(tǒng)主表單由兩個(gè)頁(yè)框組成:“學(xué)生資料”頁(yè)框和“書(shū)籍資料”頁(yè)框。在兩個(gè)頁(yè)框中可以分別完成學(xué)生資料和書(shū)籍資料的添加、修改、刪除、查詢和打印等功能。在“學(xué)生資料”頁(yè)框中單擊“借還書(shū)”按鈕,打開(kāi)“讀者借書(shū)記錄”表單。在此表單中首先將顯示出在單擊“借還書(shū)”按鈕前“學(xué)生資料”頁(yè)框中顯示的學(xué)生的當(dāng)前借出未還記錄。如果需要查看其他學(xué)生的借書(shū)記錄
2、,可以單擊“”按鈕輸入要查看的學(xué)生的學(xué)號(hào)。單擊“借書(shū)”按鈕將彈出一個(gè)“輸入”表單,用來(lái)輸入要借出的圖書(shū)的編號(hào),如果該圖書(shū)在庫(kù)中而且該學(xué)生所借的圖書(shū)的數(shù)目未到規(guī)定的數(shù)目則為該學(xué)生辦理借出該圖書(shū)的手續(xù)。在此表單中單擊“過(guò)期”按鈕,打開(kāi)“過(guò)期圖書(shū)”表單。在此表單中顯示的是該系統(tǒng)的所有的逾期未還圖書(shū)的列表,在此表單中單擊“打印”按鈕可以將表單中列表的數(shù)據(jù)打印輸出。在“讀者借書(shū)記錄”表單中單擊“排行”按鈕,將打開(kāi)“書(shū)籍借閱排行榜”表單。目 錄一、 系統(tǒng)設(shè)計(jì)分析 -41、 需求分析-42、 模塊分析-4二、 分析與創(chuàng)建數(shù)據(jù)庫(kù)-61、 設(shè)計(jì)數(shù)據(jù)庫(kù)-62、 創(chuàng)建數(shù)據(jù)庫(kù)-6三、 創(chuàng)建系統(tǒng)主程序-8四、 創(chuàng)建系統(tǒng)
3、常用類-9五、 創(chuàng)建系統(tǒng)主表單-91、 系統(tǒng)主表單的功能-92、 創(chuàng)建系統(tǒng)主表單界面-93、 添加表單代碼-104、 創(chuàng)建系統(tǒng)主表單輔助表單-19六、 創(chuàng)建“讀者借書(shū)記錄”模塊-231、 主表單的功能-232、 創(chuàng)建主表單界面-233、 添加主表單代碼-244、 創(chuàng)建輔助表單-28七、 創(chuàng)建系統(tǒng)打印功能-30八、 連編與運(yùn)行-30九、 參考文獻(xiàn)-30一、系統(tǒng)分析與設(shè)計(jì)1、需求分析歷史已經(jīng)跨入了一個(gè)嶄新的21世紀(jì),面對(duì)新世紀(jì),人們最基本,也是最可見(jiàn)的一條設(shè)想是我們所生活的社會(huì)將徹底成為一個(gè)信息社會(huì)。現(xiàn)在我們所能感覺(jué)到隨著信息技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,周圍的各種信息每天都在急劇膨脹。在生活中,一般人
4、對(duì)大量的數(shù)據(jù)總有一種恐懼感,面對(duì)密密麻麻的數(shù)據(jù),的確很容易讓人望而卻步。 隨著計(jì)算機(jī)普及教育的不斷深入,有了它的幫助,人們就不用再去面對(duì)堆積如的文件。取而代之的是用信息管理中最核心的技術(shù)之一數(shù)據(jù)庫(kù)來(lái)系統(tǒng)管理。數(shù)據(jù)庫(kù)管理系統(tǒng)是處理數(shù)據(jù)的有效工具。而Visual FoxPro6.0關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)是新一代小型數(shù)據(jù)庫(kù)管理系統(tǒng)的杰出代表。它以功能強(qiáng)大,性能良好,工具豐富而易用,處理速度快,界面友好等特點(diǎn),深受廣大用戶的好評(píng)。在機(jī)關(guān),學(xué)校得到廣泛的應(yīng)用。它提供了創(chuàng)建和管理數(shù)據(jù)庫(kù)應(yīng)用程序及組件的工具。它所包含的強(qiáng)大工具和以數(shù)據(jù)為中心的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,使之成為一個(gè)創(chuàng)建結(jié)合客戶機(jī)/服務(wù)器處理的、現(xiàn)代的、
5、可伸縮的、多級(jí)應(yīng)用程序的理想選擇。在我們的生活中,一個(gè)圖書(shū)館或者圖書(shū)室中的圖書(shū)的數(shù)目必定是有一定的規(guī)模,而且來(lái)圖書(shū)館或者圖書(shū)室中借書(shū)的讀者也不只是某幾個(gè)特定的讀者,要管理這些圖書(shū)和學(xué)生的資料以及學(xué)生的借閱情況,如果僅僅憑手工操作其工作量很大的,而且很難對(duì)其實(shí)優(yōu)化管理。VFP具有強(qiáng)大的數(shù)據(jù)管理功能,可以利用VFP開(kāi)發(fā)一個(gè)能夠管理圖書(shū)數(shù)據(jù)、學(xué)生資料和學(xué)生借閱情況的“圖書(shū)借閱管理系統(tǒng)”來(lái)實(shí)現(xiàn)這些管理。2、模塊分析1)功能模塊圖如下圖所示。 圖書(shū)資料管理借還書(shū)操作2)模塊分析 (1)“圖書(shū)資料管理”模塊“圖書(shū)資料管理”模塊包括圖書(shū)資料的分條瀏覽、添加、修改、刪除、查詢和打印功能。在表單的“書(shū)籍資料”頁(yè)
6、框中可以通過(guò)“移動(dòng)記錄工具欄”分條查看系統(tǒng)內(nèi)所有的圖書(shū)的詳細(xì)資料,包括圖書(shū)的名稱、類別、作者、出版社、購(gòu)買日期等。單擊“命令按鈕工具欄”中的按鈕可以對(duì)“書(shū)籍資料”頁(yè)框中的記錄進(jìn)行相應(yīng)的操作。(2)“學(xué)生資料管理”模塊“學(xué)生資料管理”模塊包括學(xué)生資料的分條瀏覽、添加、修改、刪除、查詢和打印功能。在表單的“學(xué)生資料”頁(yè)框中可以通過(guò)“移動(dòng)記錄工具欄”分條查看系統(tǒng)內(nèi)所有的學(xué)生的詳細(xì)資料,包括學(xué)生姓名、性別、系別、班級(jí)等資料。單擊“命令按鈕工具欄”中的按鈕可以對(duì)“學(xué)生資料”頁(yè)框中的記錄進(jìn)行相應(yīng)的操作。(3)“借還書(shū)操作”模塊“借還書(shū)操作”模塊包括讀者借書(shū)記錄的查看、借還書(shū)操作、圖書(shū)借閱排行榜、查看逾期未
7、歸還圖書(shū)和記錄打印等功能。讀者借書(shū)記錄查看功能可以查看所有的借書(shū)記錄,也可以只查看目前尚未歸還的借書(shū)記錄。在“讀者借書(shū)記錄”表單中單擊“借書(shū)”按鈕,在打開(kāi)的“輸入”表單中,輸入要借出的圖書(shū)的圖書(shū)編號(hào),如果該圖書(shū)在館中而且該讀者還能借書(shū),則借書(shū)成功。在“讀者借書(shū)記錄”表單中單擊“還書(shū)”按鈕,在打開(kāi)的“輸入”表單中輸入要還入的圖書(shū)的圖書(shū)編號(hào),如果該圖書(shū)是被當(dāng)前讀者借出,則還書(shū)成功。當(dāng)表單中的顯示的是讀者未歸還的圖書(shū)列表時(shí),在列出借書(shū)記錄的表格中雙擊要?dú)w還的圖書(shū)的“圖書(shū)編號(hào)”欄即可將此圖書(shū)還入。在“讀者借書(shū)記錄”表單中,單擊“過(guò)期”按鈕,可以查看系統(tǒng)內(nèi)到了歸還日期而未歸還的圖書(shū)的借閱記錄。在“讀者借
8、書(shū)記錄”表單中,單擊“排行”按鈕,可以查看系統(tǒng)內(nèi)借閱次數(shù)在所有圖書(shū)內(nèi)排行前10名的圖書(shū)的列表。二、分析和創(chuàng)建數(shù)據(jù)庫(kù)1、設(shè)計(jì)數(shù)據(jù)庫(kù)本系統(tǒng)實(shí)現(xiàn)了系統(tǒng)登錄功能,而系統(tǒng)登錄需要賬號(hào)和密碼,這就需要?jiǎng)?chuàng)建一個(gè)“系統(tǒng)賬號(hào)”(Accounts)數(shù)據(jù)表,用來(lái)存儲(chǔ)系統(tǒng)登錄用的賬號(hào)和密碼。本系統(tǒng)要實(shí)現(xiàn)圖書(shū)資料和學(xué)生資料的管理,所以需要?jiǎng)?chuàng)建“學(xué)生信息”(Student)數(shù)據(jù)表和“圖書(shū)信息”(Book)數(shù)據(jù)表。由于系統(tǒng)要實(shí)現(xiàn)讀者借還書(shū)功能、還要實(shí)現(xiàn)讀者借還書(shū)記錄的查看,所以還需要?jiǎng)?chuàng)建一個(gè)“讀者借書(shū)記錄”(JyRec)數(shù)據(jù)表來(lái)保存讀者的借閱記錄。2、創(chuàng)建數(shù)據(jù)庫(kù)“圖書(shū)借閱管理系統(tǒng)”作為一個(gè)完整的數(shù)據(jù)庫(kù)管理系統(tǒng),在創(chuàng)建階段利
9、用項(xiàng)目管理器可以更好組織管理各種格式的文件,因此首先需要?jiǎng)?chuàng)建一個(gè)項(xiàng)目管理器,文件名為“Tushu”,然后在其中創(chuàng)建其它格式的文件。在項(xiàng)目管理器的“數(shù)據(jù)”選項(xiàng)卡中創(chuàng)建一個(gè)名為“Tushu”的數(shù)據(jù)庫(kù)。在此數(shù)據(jù)庫(kù)下創(chuàng)建數(shù)據(jù)表。本系統(tǒng)中要用到的數(shù)據(jù)表的字段的屬性設(shè)置分別如下。“系統(tǒng)賬號(hào)”(Account)數(shù)據(jù)表的字段屬性如表所示:字段名數(shù)據(jù)類型說(shuō)明賬號(hào)字符型字段寬度20,主索引字段,不能為空密碼字符型字段寬度20姓名字符型字段寬度20“系別信息”(Xibie)數(shù)據(jù)表的字段屬性如表所示:字段名數(shù)據(jù)類型說(shuō)明系編號(hào)字符型字段寬度4,主索引字段,輸入掩碼為“9999”名稱字符型字段寬度20“學(xué)生信息”(Stu
10、dent)數(shù)據(jù)表的字段屬性如表所示:字段名數(shù)據(jù)類型說(shuō)明學(xué)號(hào)字符型字段寬度6,主索引字段,輸入掩碼為“999999”姓名字符型字段寬度20性別字符型字段寬度2系別字符型字段寬度4,為普通索引班級(jí)字符型字段寬度10電話字符型字段寬度12,輸入掩碼為“999#9999999”郵件字符型字段寬度30地址字符型字段寬度30 “讀者借書(shū)記錄”(JyRec)數(shù)據(jù)表的字段屬性如表所示:字段名數(shù)據(jù)類型說(shuō)明學(xué)號(hào)字符型字段寬度6,普通索引字段,輸入掩碼為“999999”圖書(shū)編號(hào)字符型字段寬度6,普通索引字段,輸入掩碼為“AA9999”借閱日期日期型字段寬度8歸還日期日期型字段寬度8“圖書(shū)信息”(Book)數(shù)據(jù)表的字
11、段屬性如表所示:字段名數(shù)據(jù)類型說(shuō)明圖書(shū)編號(hào)字符型字段寬度6,主索引字段,輸入掩碼為“AA9999”圖書(shū)類別字符型字段寬度10圖書(shū)名稱字符型字段寬度40圖書(shū)作者字符型字段寬度20出版社字符型字段寬度40購(gòu)買日期日期型字段寬度8購(gòu)買價(jià)格貨幣型字段寬度8借閱次數(shù)數(shù)值型字段寬度4,默認(rèn)值0是否借出邏輯型字段寬度1,默認(rèn)值“.F.”三、創(chuàng)建系統(tǒng)主程序 VFP應(yīng)用程序系統(tǒng)需要?jiǎng)?chuàng)建一個(gè)主程序來(lái)驅(qū)動(dòng)各個(gè)表單,在項(xiàng)目管理器的“代碼”選項(xiàng)卡下創(chuàng)建一個(gè)名為“main.prg”程序,用來(lái)設(shè)置系統(tǒng)的工作環(huán)境,并驅(qū)動(dòng)其他的程序和表單。把該文件設(shè)為項(xiàng)目的主文件。main.prg程序的代碼為:SET TALK OFFSET
12、SAFETY OFF & 覆蓋時(shí)不要確認(rèn)SET STAT BAR OFF & 將狀態(tài)欄關(guān)閉SET SYSMENU OFF & 可關(guān)掉VFP系統(tǒng)菜單之區(qū)域SET SYSMENU TO & 關(guān)閉系統(tǒng)菜單SET CENTURY ON & 顯示四位年代_Screen. VISIBLE=.F.DO FORM LogonREAD EVENTS四、創(chuàng)建系統(tǒng)常用類1、創(chuàng)建“移動(dòng)記錄工具欄”類 “移動(dòng)記錄工具欄”類基于“CommandGroup”基類,存儲(chǔ)于“AadminButton”可視類庫(kù)中,命名為“MoveRecord”。此類包括“首記錄”、“上一個(gè)”、“下一個(gè)”和“末記錄”4個(gè)按鈕,在表單中可以利用這4
13、個(gè)按鈕定位數(shù)據(jù)表中的記錄指針。2、創(chuàng)建“命令按鈕工具欄”類“命令按鈕工具欄”類基于“CommandGroup”基類,存儲(chǔ)于“AadminButton”可視類庫(kù)中,命名為“AdmButGrp”。此類中包括“增加”、“修改”、“刪除”、“查詢”、“打印”、“保存”、“取消”和“退出”8個(gè)按鈕。五、創(chuàng)建系統(tǒng)主表單系統(tǒng)主表單由兩個(gè)選項(xiàng)卡組成,下面分別介紹這兩個(gè)選項(xiàng)卡的創(chuàng)建。1、系統(tǒng)主表單的功能系統(tǒng)主表單在提供系統(tǒng)界面的同時(shí)還包含一個(gè)含有兩個(gè)頁(yè)框的頁(yè)框控件,系統(tǒng)將利用這兩個(gè)頁(yè)框控件來(lái)管理“學(xué)生信息”(Student)數(shù)據(jù)表和“圖書(shū)信息”(Book)數(shù)據(jù)表中的數(shù)據(jù),利用這兩個(gè)頁(yè)框可以對(duì)這兩張數(shù)據(jù)表中的數(shù)據(jù)
14、進(jìn)行查看、添加、修改、刪除、查詢和打印等操作。同時(shí),系統(tǒng)主表單還將用來(lái)調(diào)用系統(tǒng)的借還書(shū)模塊。2、創(chuàng)建系統(tǒng)主表單界面在“表單設(shè)計(jì)器”中創(chuàng)建一個(gè)表單作為系統(tǒng)主表單,命名為“MainForm”。創(chuàng)建好的表單效果中有兩個(gè)頁(yè)框,其中“學(xué)生資料”頁(yè)框和“書(shū)籍資料”頁(yè)框如下圖所示。設(shè)置主表單、頁(yè)面及其控件的屬性。3、添加表單代碼(1)添加主表單中的代碼需要在系統(tǒng)主表單中添加4個(gè)屬性“StuFM”、“StuOR”、“BookFM”和“BookOR”,分別用來(lái)標(biāo)識(shí)表單中“學(xué)生信息”頁(yè)面的狀態(tài),頁(yè)面中的數(shù)據(jù)記錄的指針的位置,“書(shū)籍信息”頁(yè)面的狀態(tài)和頁(yè)面中數(shù)據(jù)記錄指針的位置。添加4個(gè)表單的方法屬性?!癝tuMode
15、Brse”方法屬性的代碼如下:*以下代碼使“移動(dòng)記錄工具欄”可用THISFORM.PF*以下代碼控制“命令按鈕工具欄”中按鈕的可用狀態(tài)*以下代碼用來(lái)控制“學(xué)生信息”頁(yè)面與數(shù)據(jù)綁定的控件狀態(tài)txt姓名.READONLY=.T.系別.ENABLED=.F.班級(jí).READONLY=.T.地址.READONLY=.T.電話.READONLY=.T.郵件.READONLY=.T.*以下代碼用來(lái)控制“借還書(shū)”按按鈕的可用狀態(tài)CmdJh.ENABLED=.T.*以下代碼用來(lái)控制表單中頁(yè)面的可用狀態(tài)THIS.ENABLED=.T.“StuModeMody”方法屬性的代碼如下:*以下代碼使“移動(dòng)記錄工具欄”不可
16、用*以下代碼控制“命令按鈕工具欄”中按鈕的可用狀態(tài)*以下代碼用來(lái)控制“學(xué)生信息”頁(yè)面與數(shù)據(jù)綁定的控件狀態(tài)姓名.READONLY=.F.系別.ENABLED=.T.班級(jí).READONLY=.F.地址.READONLY=.F.電話.READONLY=.F.郵件.READONLY=.F.*以下代碼用來(lái)控制“借還書(shū)”按按鈕的可用狀態(tài)*以下代碼用來(lái)控制表單中頁(yè)面的可用狀態(tài)THIS.ENABLED=.T.“SjModeBrse”方法屬性的代碼如下:*以下代碼使“移動(dòng)記錄工具欄”可用*以下代碼使“.”按鈕不可用*以下代碼控制“命令按鈕工具欄”中按鈕的狀態(tài).T.*以下代碼控制頁(yè)面中與數(shù)綁定的控件中數(shù)據(jù)的可編輯
17、狀態(tài)圖書(shū)編號(hào).READONLY=.T.圖書(shū)名稱.READONLY=.T.圖書(shū)類別.READONLY=.T.圖書(shū)作者.READONLY=.T.購(gòu)買日期.READONLY=.T.出版社.READONLY=.T.購(gòu)買價(jià)格.READONLY=.T.*以下代碼用來(lái)控制表單中頁(yè)面的可用狀態(tài)THIS.ENABLED=.T.“SjModeMody”方法屬性的代碼如下:*以下代碼使“移動(dòng)記錄工具欄”不可用*以下代碼使“.”按鈕可用*以下代碼控制“命令按鈕工具欄”中按鈕的狀態(tài)mdadd.ENABLED=.F.*以下代碼控制頁(yè)面中與數(shù)綁定的控件中數(shù)據(jù)的可編輯狀態(tài)圖書(shū)編號(hào).READONLY=.T.圖書(shū)名稱.READO
18、NLY=.F.圖書(shū)類別.READONLY=.F.圖書(shū)作者.READONLY=.F.購(gòu)買日期.READONLY=.F.txt出版社.READONLY=.F.購(gòu)買價(jià)格.READONLY=.F.*以下代碼用來(lái)控制表單中頁(yè)面的可用狀態(tài)THIS.ENABLED=.T.(2)添加“學(xué)生資料”頁(yè)面代碼在“學(xué)生信息”被激活時(shí),應(yīng)該將“學(xué)生信息”數(shù)據(jù)表所在的工作區(qū)作為表單的當(dāng)前工作區(qū),取消由其他表單設(shè)置的過(guò)濾條件,并且使頁(yè)面進(jìn)入瀏覽狀態(tài)。“增加”按鈕的Click事件代碼:SELECT StudentTHISFORM.StuOR=RECNO()GO BOTTOMAPPEND BLANKTHISFORM.StuMo
19、deMody()THISFORM.StuFM=cadd學(xué)號(hào).READONLY=.F.THISFORM.REFRESH()“修改”按鈕的Click事件代碼:THISFORM.StuFM=cmodTHISFORM.StuOR=RECNO()THISFORM.StuModeMody()THISFORM.REFRESH()“刪除”按鈕的Click事件代碼:YN=MESSAGEBOX(確定刪除,4+32,圖書(shū)借閱管理系統(tǒng)) &確認(rèn)對(duì)話框IF YN=6 &如果確認(rèn) THISFORM.StuOR=RECNO() &保存記錄指針位置 SET EXACT ON &嚴(yán)格比較 SELECT JyRec LOCATE
20、 FOR 學(xué)號(hào)學(xué)號(hào).VALUE) AND EMPTY(歸還日期) &查找是否有未還圖書(shū) IF FOUND() &如果有 MESSAGEBOX(該學(xué)生有未還書(shū),不能刪除,48,圖書(shū)借閱管理系統(tǒng))&彈出對(duì)話框 SELECT Student &回到原記錄 SET FILTER TO GO THISFORM.StuOR ELSE &如果沒(méi)有未還書(shū) SELECT JyRec &選擇“讀者借閱記錄”所在的工作區(qū) GO TOP &到數(shù)據(jù)表頂部 DO WHILE NOT EOF() &刪除與要?jiǎng)h除的學(xué)生有關(guān)的借閱記錄 IF 學(xué)號(hào)學(xué)號(hào).VALUE) DELETE PACK ENDIF SKIP ENDDO SE
21、LECT Student &在“學(xué)生信息”數(shù)據(jù)表中刪除記錄 DELETE PACK MESSAGEBOX(刪除成功,64,圖書(shū)借閱管理系統(tǒng)) &“刪除成功”對(duì)話框 SELECT Student GO TOP ENDIF THISFORM.REFRESH() SET EXACT OFFENDIF“保存”按鈕的Click事件代碼:LOCAL OK &聲明一個(gè)本地變量OK=.T. &假設(shè)各數(shù)據(jù)欄中數(shù)據(jù)無(wú)誤DO CASE學(xué)號(hào).VALUE) &如果學(xué)號(hào)為空 MESSAGEBOX(學(xué)號(hào)不能為空,48,圖書(shū)借閱管理系統(tǒng))學(xué)號(hào).SETFOCUS() OK=.F.姓名.VALUE)&如果姓名為空 MESSAGE
22、BOX(姓名不能為空,48,圖書(shū)借閱管理系統(tǒng))姓名.SETFOCUS() OK=.F.系別.VALUE) &如果系別為空 MESSAGEBOX(系別不能為空,48,圖書(shū)借閱管理系統(tǒng))系別.SETFOCUS() OK=.F.地址.VALUE) &如果地址為空 MESSAGEBOX(地址不能為空,48,圖書(shū)借閱管理系統(tǒng))地址.SETFOCUS() OK=.F.電話.VALUE) &如果電話為空 MESSAGEBOX(電話不能為空,48,圖書(shū)借閱管理系統(tǒng))姓名.SETFOCUS() OK=.F.ENDCASEIF OK=.T. &如果各數(shù)據(jù)欄無(wú)誤為空 YN=MESSAGEBOX(確定保存,4+32,
23、圖書(shū)借閱管理系統(tǒng)) &彈出確認(rèn)對(duì)話框 IF YN=6 &如果確認(rèn) CanSave=TABLEUPDATE(.F.) &試圖保存 IF CanSave=.F. &如果保存失敗 MESSAGEBOX(學(xué)號(hào)錯(cuò)誤,48,圖書(shū)借閱管理系統(tǒng))學(xué)號(hào).SETFOCUS() ELSE &如果保存成功 MESSAGEBOX(保存成功,64,圖書(shū)借閱管理系統(tǒng)) THISFORM.StuModeBrse() IF THISFORM.StuFM=cmod GO THISFORM.StuOR ELSE學(xué)號(hào).READONLY=.T. ENDIF ENDIF THISFORM.REFRESH() ENDIF ENDIF“取消
24、”按鈕的Click事件代碼:YN=MESSAGEBOX(確定取消,4+32,系統(tǒng)消息)IF YN=6 TABLEREVERT(.F.) IF THISFORM.StuFM=cadd GO THISFORM.StuOR ENDIF THISFORM.StuModeBrse()學(xué)號(hào).READONLY=.T. THISFORM.REFRESH()ENDIF(3)添加“書(shū)籍資料”頁(yè)面代碼在“書(shū)籍信息”頁(yè)面被激活時(shí),表單中的當(dāng)前數(shù)據(jù)工作期應(yīng)該變?yōu)椤皥D書(shū)信息”數(shù)據(jù)表所在的工作期,將可能由其他表單對(duì)該數(shù)據(jù)表設(shè)置的過(guò)濾條件去掉,同時(shí)要使該頁(yè)面進(jìn)入瀏覽狀態(tài)。添加該頁(yè)面的“Activate”事件代碼:SELECT
25、 BOOKSET FILTER TOGO TOPTHISFORM.SjFM=cbrowseTHISFORM.SjModeBrse()THISFORM.REFRESH() “增加”按鈕的Click事件代碼: SELECT BookTHISFORM.SjOR=RECNO()GO BOTTOMAPPEND BLANKTHISFORM.SjFM=caddTHISFORM.SjModeMody()圖書(shū)編號(hào).READONLY=.F.THISFORM.REFRESH() “修改”按鈕的Click事件代碼: THISFORM.SjOR=RECNO()THISFORM.SjFM=cmodTHISFORM.SjM
26、odeMody()THISFORM.REFRESH() “刪除”按鈕的Click事件代碼:YN=MESSAGEBOX(確定刪除,4+32,圖書(shū)借閱管理系統(tǒng)) &確認(rèn)對(duì)話框IF YN=6 &如果確認(rèn) THISFORM.SjOR=RECNO() &保存記錄號(hào)借出中&如果該圖書(shū)不在庫(kù)中 MESSAGEBOX(該圖書(shū)尚未歸還,48,圖書(shū)借閱管理系統(tǒng))&不能刪除 ELSE &如果在庫(kù)中 SELECT JyRec &對(duì)圖書(shū)借閱記錄表進(jìn)行修改 SET EXACT ON &精確比較 GO TOP &到數(shù)據(jù)表的頂部 DO WHILE NOT EOF() &刪除所有與要?jiǎng)h除的圖書(shū)有關(guān)的記錄 IF 圖書(shū)編號(hào)圖書(shū)編號(hào)
27、.VALUE) DELETE PACK ENDIF SKIP ENDDO SELECT Book &刪除圖書(shū)記錄 GO THISFORM.SjOR DELETE PACK MESSAGEBOX(刪除成功,64,圖書(shū)借閱管理系統(tǒng))&“刪除成功”對(duì)話框 SET EXACT OFF THISFORM.REFRESH() ENDIFENDIF “保存”按鈕的Click事件代碼:LOCAL OKOK=.T.DO CASE圖書(shū)編號(hào).VALUE) &如果圖書(shū)編號(hào)為空 MESSAGEBOX(圖書(shū)編號(hào)不能為空,48,圖書(shū)借閱管理系統(tǒng))圖書(shū)編號(hào).SETFOCUS() OK=.F.圖書(shū)名稱.VALUE) &如果圖書(shū)
28、名稱為空 MESSAGEBOX(圖書(shū)名稱不能為空,48,圖書(shū)借閱管理系統(tǒng))圖書(shū)名稱.SETFOCUS() OK=.F.圖書(shū)類別.VALUE) &如果圖書(shū)類別為空 MESSAGEBOX(圖書(shū)類別不能為空,48,圖書(shū)借閱管理系統(tǒng))圖書(shū)類別.SETFOCUS() OK=.F.圖書(shū)作者.VALUE) &如果圖書(shū)作者為空 MESSAGEBOX(圖書(shū)作者不能為空,48,圖書(shū)借閱管理系統(tǒng))圖書(shū)作者.SETFOCUS() OK=.F.購(gòu)買日期.VALUE) &如果購(gòu)買日期為空 MESSAGEBOX(購(gòu)買日期不能為空,48,圖書(shū)借閱管理系統(tǒng))購(gòu)買日期.SETFOCUS() OK=.F.出版社.VALUE) &如
29、果出版社為空 MESSAGEBOX(出版社不能為空,48,圖書(shū)借閱管理系統(tǒng))出版社.SETFOCUS() OK=.F.購(gòu)買價(jià)格.VALUE=0 &如果購(gòu)買價(jià)格小于或者為0 MESSAGEBOX(購(gòu)買價(jià)格錯(cuò)誤,48,圖書(shū)借閱管理系統(tǒng))購(gòu)買價(jià)格.SETFOCUS() OK=.F.ENDCASEIF OK=.T. &如果各數(shù)據(jù)項(xiàng)無(wú)誤 YN=MESSAGEBOX(確定保存,4+32,圖書(shū)借閱管理系統(tǒng)) IF YN=6 &如果確認(rèn) SaveOk=TABLEUPDATE(.F.) &試圖保存 IF SaveOk=.T. &如果保存成功 MESSAGEBOX(保存成功,64,圖書(shū)借閱管理系統(tǒng)) THISFO
30、RM.SjModeBrse()圖書(shū)編號(hào).READONLY=.T. ELSE &如果保存失敗 MESSAGEBOX(圖書(shū)編號(hào)錯(cuò)誤,48,圖書(shū)借閱管理系統(tǒng))圖書(shū)編號(hào).SETFOCUS() ENDIF ENDIFENDIF4、創(chuàng)建系統(tǒng)主表單輔助表單 系統(tǒng)主表單的輔助表單主要包括“學(xué)生資料”頁(yè)面和“圖書(shū)資料”頁(yè)面的查詢功能和一個(gè)“選擇打印類型”表單。(1)創(chuàng)建“學(xué)生資料”頁(yè)面查詢功能“學(xué)生資料”頁(yè)面的查詢功能由“輸入查詢條件”和“學(xué)生信息查詢結(jié)果”表單組成。1)創(chuàng)建“輸入查詢條件”表單“輸入查詢條件”表單用來(lái)向用戶收集要查詢的條件,查詢的條件可以是根據(jù)某一個(gè)字段進(jìn)行查詢,也可以指定多個(gè)查詢條件,這些條
31、件將以“AND”連接,然后根據(jù)條件查詢。 該表單中的作用是向用戶收集查詢條件,而這個(gè)作用也主要由“查詢”按鈕來(lái)完成,當(dāng)用戶單擊該按鈕時(shí)檢查表單的文本框中數(shù)據(jù)的輸入情況,如果文本框中有數(shù)據(jù)則將該文本框中的數(shù)據(jù)作一個(gè)查詢條件,如果有多個(gè)查詢條件則用“AND”將這些條件連接起來(lái),然后調(diào)用“學(xué)生信息查詢結(jié)果”表單?!安樵儭卑粹o的Click事件代碼:StuTJ=.T.IF NOT EMPTY(ALLTRIM(THISFORM.txt學(xué)號(hào).VALUE) &如果學(xué)號(hào)欄非空 StuTJ=+ALLTRIM(Thisform.txt學(xué)號(hào).Value)+$學(xué)號(hào)ENDIFIF NOT EMPTY(ALLTRIM(TH
32、ISFORM.txt姓名.VALUE) &如果姓名欄非空 StuTJ=StuTJ+AND+ALLTRIM(THISFORM.txt姓名.VALUE)+$姓名ENDIFIF NOT EMPTY(ALLTRIM(THISFORM.txt郵件.VALUE) &如果郵件欄非空 StuTJ=StuTJ+AND+ALLTRIM(THISFORM.txt郵件.VALUE)+$郵件ENDIFIF NOT EMPTY(ALLTRIM(THISFORM.txt地址.VALUE) &如果地址欄非空 StuTJ=StuTJ+AND+ALLTRIM(THISFORM.txt地址.VALUE)+$地址ENDIFTHISF
33、ORM.RELEASE()DO FORM StuSerout 2)創(chuàng)建“學(xué)生信息查詢結(jié)果”表單 “打印”按鈕不可用時(shí),表單的Init事件代碼:SELECT StudentSET FILTER TO &StuTJCOUNT FOR &StuTJ TO nNumberIF nNumber=0ENDIF(2)創(chuàng)建“書(shū)籍資料”頁(yè)面查詢功能 “書(shū)籍資料”頁(yè)面的查詢功能由“輸入查詢條件”表單和“圖書(shū)信息查詢結(jié)果”表單組成。1)創(chuàng)建“輸入查詢條件”表單“查詢”按鈕的Click事件代碼:BookTJ=.T.IF NOT EMPTY(ALLTRIM(THISFORM.txt圖書(shū)編號(hào).VALUE) &如果圖書(shū)編號(hào)
34、欄非空 BookTJ=BookTJ+AND 圖書(shū)編號(hào)=+ALLTRIM(THISFORM.txt圖書(shū)編號(hào).VALUE)+ENDIFIF NOT EMPTY(ALLTRIM(THISFORM.txt圖書(shū)名稱.VALUE) &如果圖書(shū)名稱欄非空 BookTJ=BookTJ+AND 圖書(shū)名稱=+ALLTRIM(THISFORM.txt圖書(shū)名稱.VALUE)+ENDIFIF NOT EMPTY(ALLTRIM(THISFORM.txt圖書(shū)作者.VALUE) &如果圖書(shū)作者欄非空 BookTJ=BookTJ+AND 圖書(shū)作者=+ALLTRIM(THISFORM.txt圖書(shū)作者.VALUE)+ENDIFI
35、F NOT EMPTY(ALLTRIM(THISFORM.txt出版社.VALUE) &如果出版社欄非空 BookTJ=BookTJ+AND 圖書(shū)作者=+ALLTRIM(THISFORM.txt出版社.VALUE)+ENDIFTHISFORM.RELEASE()DO FORM BookSerout2)創(chuàng)建“圖書(shū)信息查詢結(jié)果”表單“圖書(shū)信息查詢結(jié)果”表單用來(lái)顯示“圖書(shū)信息”數(shù)據(jù)表中符合查詢條件的記錄。要使表單中的表格控件中只顯示符合查詢條件的記錄,需要對(duì)表單的數(shù)據(jù)環(huán)境進(jìn)行設(shè)置,并且如果符合查詢條件的記錄數(shù)如果為0則“打印”按鈕不可用。添加表單的Init事件代碼:SELECT BookSET FI
36、LTER TO &BookTJCOUNT FOR &BookTJ TO nNumberIF nNumber=0ENDIF(3)創(chuàng)建“選擇打印類型”表單“選擇打印類型”表單用在當(dāng)在系統(tǒng)主表單中單擊“打印”按鈕時(shí),彈出來(lái)供用戶選擇是打印全部記錄還是只打印當(dāng)前記錄,用戶選擇后單擊“打印”按鈕即可以用預(yù)覽的方式查看打印結(jié)果。 “打印”按鈕的Click事件代碼:IF DbfName=StuDbf REPORT FORM StuInfo FOR 學(xué)號(hào)=StuNO PREVIEW ELSE REPORT FORM StuInfo PREVIEW ENDIFELSE REPORT FORM BookInfo
37、FOR 圖書(shū)編號(hào)=BookNO PREVIEW ELSE REPORT FORM BookInfo PREVIEW ENDIFENDIFTHISFORM.RELEASE()六、創(chuàng)建“讀者借書(shū)記錄”模塊“讀者借書(shū)記錄”模塊由1個(gè)主表單“讀者借書(shū)記錄”表單和3個(gè)輔助表單“輸入”表單、“過(guò)期圖書(shū)”表單和“圖書(shū)借閱排行榜”表單組成。1、主表單的功能“讀者借書(shū)記錄”表單首先用來(lái)顯示讀者借書(shū)的情況,可以顯示讀者當(dāng)前已經(jīng)借出并且尚未歸還的圖書(shū)的記錄,還可以顯示讀者所有的借書(shū)記錄。單擊“學(xué)號(hào)”后面的“”按鈕可以調(diào)用“輸入”表單輸入學(xué)號(hào)來(lái)改變表單中顯示的讀者。單擊“借書(shū)”按鈕,可以調(diào)用“輸入”表單用來(lái)輸入要借的
38、圖書(shū)編號(hào),如果該圖書(shū)在館中,而且該讀者所借的圖書(shū)的數(shù)目沒(méi)有到達(dá)規(guī)定的數(shù)目(這里設(shè)定為7本),則借書(shū)成功,否則借書(shū)失敗。單擊“還書(shū)”按鈕,可以調(diào)用“輸入”表單用來(lái)輸入要還入的圖書(shū)編號(hào),如果該圖書(shū)是被當(dāng)前讀者借出,則還書(shū)成功。另外,當(dāng)表單中的表格控件中顯示的是當(dāng)前讀者的“已借出”圖書(shū)記錄時(shí),可以通過(guò)雙擊列表中的某本書(shū)的“圖書(shū)編號(hào)”欄來(lái)快速還書(shū)。單擊“過(guò)期”按鈕可以查看系統(tǒng)中的逾期未歸還的圖書(shū)的借閱記錄。單擊“排行”按鈕,可以查看系統(tǒng)內(nèi)借閱次數(shù)在所有圖書(shū)內(nèi)排行前10名的圖書(shū)的列表。單擊“打印”按鈕可以將表單中的表格控件中數(shù)據(jù)打印出來(lái),并且以預(yù)覽的方式查看打印結(jié)果。2、創(chuàng)建主表單界面 在“表單設(shè)計(jì)器”
39、中創(chuàng)建一個(gè)表單作為“讀者借書(shū)記錄”表單,命名為“JyRec”。 利用“表格生成器”在表單中添加一個(gè)表格控件。利用“表格生成器”時(shí)要注意,用“表格生成器”生成的表格控件中只能出現(xiàn)一個(gè)數(shù)據(jù)中數(shù)據(jù),而本表單中的表格控件要求出現(xiàn)兩個(gè)數(shù)據(jù)表中數(shù)據(jù),所以在經(jīng)過(guò)“表格控件”生成后還要采用手工的方式向表格控件中添加列。在某種意義上來(lái)說(shuō),“表格生成器”在此只是充當(dāng)了一種設(shè)計(jì)外觀的作用。3、添加主表單代碼向表單添加一個(gè)表單屬性O(shè)ldRecord來(lái)保存數(shù)據(jù)表的記錄指針的位置,并將其初始值設(shè)置為0。在進(jìn)入表單時(shí),要顯示全局變量“StudentNO”傳遞過(guò)來(lái)的學(xué)號(hào)的學(xué)生的借書(shū)記錄,而且表單設(shè)定進(jìn)入時(shí)顯示已經(jīng)借出的圖書(shū)的
40、列表。表單中的選項(xiàng)按鈕組是用來(lái)讓用戶選擇表單中顯示的記錄的類別的,應(yīng)該在做出選擇后立即在表單中顯示出來(lái)。當(dāng)用戶單擊“已借出”按鈕時(shí),表單中只顯示當(dāng)前讀者的未歸還的圖書(shū)的列表。添加選項(xiàng)按鈕組的Valid事件代碼:IF THIS.VALUE=1 SELECT JyRec SET FILTER TO EMPTY(歸還日期)雙擊圖書(shū)編號(hào)可雙書(shū)ELSE SELECT JyRec SET FILTER TOENDIFTHISFORM.REFRESH()添加“”按鈕的Click事件代碼:SELECT StudentSET FILTER TOTHISFORM.OldRecord= RECNO() &將記錄編號(hào)
41、儲(chǔ)存DO FORM Input WITH 輸入學(xué)號(hào),999999 TO StuNO &調(diào)用輸入表單SET EXACT ON &改為精確比較IF StuNO &表示有輸入學(xué)號(hào) SELECT Student LOCATE FOR 學(xué)號(hào)=StuNO IF NOT FOUND() & 表示找不到時(shí) MESSAGEBOX(無(wú)此學(xué)號(hào),16,信息窗口) GO Thisform.OldRecord & 回到原記錄 ENDIFENDIFTHISFORM.Refresh() & 重新顯示表單上各對(duì)象的數(shù)據(jù)SET EXACT OFF & 改回模糊比較當(dāng)在表單中的選項(xiàng)按鈕組中選擇的“已借出”按鈕時(shí)雙擊表格控件中某條記錄的“圖書(shū)編號(hào)”列就可以還書(shū),所以還需要添加“圖書(shū)編號(hào)”列的DbClick事件代碼。一本書(shū)的還入需要進(jìn)行的操作是在“圖書(shū)信息”數(shù)據(jù)表中將所還圖書(shū)的“是否借出”字段更改為“.F.”,將“讀者借書(shū)記錄”數(shù)據(jù)表中該記錄的“還書(shū)日期”更改為當(dāng)前日期。添加“圖書(shū)編號(hào)”列的“Text1”的DblClick事件代碼: SELECT JyRec REPLACE 歸還日期 WITH DATE() FOR 圖書(shū)編號(hào)=THIS.VALUE AND EMPTY(歸還日期) SELECT Book REPLACE 是否借出 WITH .F. FOR 圖書(shū)編號(hào)=THIS.VAL
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度智能家居音響系統(tǒng)與家裝室內(nèi)裝修合同9篇
- 二零二五版大理石瓷磚研發(fā)與銷售合作合同范本3篇
- 二零二五版民營(yíng)企業(yè)股權(quán)激勵(lì)合同書(shū)3篇
- 教育局教師幼兒園專項(xiàng)2025年度勞動(dòng)合同規(guī)范文本3篇
- 二零二五年銷售代理合同:汽車銷售代理及區(qū)域獨(dú)家合作協(xié)議2篇
- 2025年科技孵化器場(chǎng)地租賃保證金合同范本2篇
- 二零二五版39上公司兜底協(xié)議:綠色環(huán)保項(xiàng)目投資風(fēng)險(xiǎn)控制合同3篇
- 二零二五年度鋼箱梁橋工程施工廢棄物處理與回收利用合同3篇
- 二零二五版綠色建筑項(xiàng)目基礎(chǔ)勞務(wù)分包合同2篇
- 二零二五年度高速公路隧道防雷安全防護(hù)合同3篇
- 不銹鋼伸縮縫安裝施工合同
- 水土保持監(jiān)理總結(jié)報(bào)告
- Android移動(dòng)開(kāi)發(fā)基礎(chǔ)案例教程(第2版)完整全套教學(xué)課件
- 醫(yī)保DRGDIP付費(fèi)基礎(chǔ)知識(shí)醫(yī)院內(nèi)培訓(xùn)課件
- 專題12 工藝流程綜合題- 三年(2022-2024)高考化學(xué)真題分類匯編(全國(guó)版)
- DB32T-經(jīng)成人中心靜脈通路裝置采血技術(shù)規(guī)范
- 【高空拋物侵權(quán)責(zé)任規(guī)定存在的問(wèn)題及優(yōu)化建議7100字(論文)】
- TDALN 033-2024 學(xué)生飲用奶安全規(guī)范入校管理標(biāo)準(zhǔn)
- 物流無(wú)人機(jī)垂直起降場(chǎng)選址與建設(shè)規(guī)范
- 冷庫(kù)存儲(chǔ)合同協(xié)議書(shū)范本
- AQ/T 4131-2023 煙花爆竹重大危險(xiǎn)源辨識(shí)(正式版)
評(píng)論
0/150
提交評(píng)論