pb課程設(shè)計(jì)報(bào)刊訂閱系統(tǒng)_第1頁
pb課程設(shè)計(jì)報(bào)刊訂閱系統(tǒng)_第2頁
pb課程設(shè)計(jì)報(bào)刊訂閱系統(tǒng)_第3頁
pb課程設(shè)計(jì)報(bào)刊訂閱系統(tǒng)_第4頁
pb課程設(shè)計(jì)報(bào)刊訂閱系統(tǒng)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄概述 11.需求分析 11.1系統(tǒng)需求和功能 11.2安全性要求 11.3一致性要求 21.4完整性要求 22.數(shù)據(jù)庫概念設(shè)計(jì) 22.1設(shè)計(jì)方法和步驟 22.2E-R圖設(shè)計(jì) 23.數(shù)據(jù)庫邏輯設(shè)計(jì) 43.1一般邏輯模型設(shè)計(jì) 43.2模塊設(shè)計(jì) 54.數(shù)據(jù)庫物理設(shè)計(jì)與數(shù)據(jù)庫保護(hù)設(shè)計(jì) 54.1設(shè)計(jì)索引 54.2設(shè)計(jì)表間關(guān)系 64.3完整性設(shè)計(jì) 64.4用戶授權(quán)與安全性控制。 65.詳細(xì)設(shè)計(jì) 75.1系統(tǒng)設(shè)計(jì)過程 75.3運(yùn)行結(jié)果及調(diào)試 146.認(rèn)識(shí)體會(huì) 177.參考文獻(xiàn) 17報(bào)刊訂閱管理系統(tǒng)概述隨著社會(huì)不斷的發(fā)展,人們的生活水平越來越高,對(duì)知識(shí)的和對(duì)時(shí)事的渴求也越來越高,人們希望能夠方便快捷地訂閱各種報(bào)刊雜志。但是各種各樣的報(bào)刊名目和詳細(xì)信息以及訂閱,為相關(guān)企業(yè)的管理造成很大的麻煩。因此網(wǎng)上訂閱成為不可或缺的一部分。本系統(tǒng)就是面向一個(gè)企業(yè)的報(bào)刊訂閱管理系統(tǒng)。此系統(tǒng)是一種比較智能化的管理系統(tǒng),它面向所有企業(yè)部門的職工用戶,但具有比較高的安全性能。它能夠?qū)崿F(xiàn)報(bào)刊訂閱的基本功能,包括新報(bào)刊信息的錄入、訂閱、查詢等操作以及后臺(tái)數(shù)據(jù)庫的備份和恢復(fù)。用戶合法注冊(cè)后必須輸入有效密碼才能成功進(jìn)入此系統(tǒng),可以進(jìn)行訂閱報(bào)刊,查詢信息,統(tǒng)計(jì)信息等操作。對(duì)于非法操作,系統(tǒng)有識(shí)別和防護(hù)措施。1.需求分析1.1系統(tǒng)需求和功能設(shè)計(jì)一個(gè)報(bào)刊訂閱應(yīng)用系統(tǒng),使系統(tǒng)滿足以下功能和需求:1)a一個(gè)訂戶可訂多種報(bào)刊;一種報(bào)刊可被多個(gè)用戶訂閱;訂單只能訂閱現(xiàn)有報(bào)刊目錄內(nèi)容;b投遞時(shí),必須根據(jù)訂單的情況進(jìn)行投遞,不得超出訂單的訂閱品種、數(shù)量;2)、系統(tǒng)功能包括:A訂戶管理:訂戶添加、修改、刪除;b

目錄管理:目錄添加、修改、刪除;c訂單管理:完成訂戶訂閱數(shù)據(jù)的管理(包括添加、修改、刪除);d

訂單查詢:按訂戶或者訂單號(hào)查詢訂單詳細(xì)情況;e統(tǒng)計(jì)查詢:按報(bào)刊目錄統(tǒng)計(jì)各類報(bào)刊的訂閱數(shù)量及金額;f表單生成:根據(jù)統(tǒng)計(jì)查詢結(jié)果導(dǎo)出統(tǒng)計(jì)信息到文件(.xls)1.2安全性要求訪問數(shù)據(jù)庫時(shí)需要輸入登陸帳號(hào)和密碼。在數(shù)據(jù)庫內(nèi)設(shè)有管理員表,登陸系統(tǒng)時(shí)會(huì)要求輸入管理員帳號(hào)和密碼。登陸模塊根據(jù)輸入帳號(hào)和密碼查管理員表,查到匹配記錄則允許其登陸系統(tǒng)。管理員帳號(hào)和密碼可以在系統(tǒng)中添加和修改。1.3一致性要求在管理系統(tǒng)相關(guān)的表之間,有較強(qiáng)的關(guān)聯(lián)性。為了實(shí)現(xiàn)一致性的需求,各個(gè)表之間均建立起了相應(yīng)的一致性約束。1.4完整性要求根據(jù)報(bào)刊訂閱管理系統(tǒng)的要求,為保持?jǐn)?shù)據(jù)的完整性,采用了數(shù)據(jù)庫的事務(wù)機(jī)制,防止出現(xiàn)操作故障引起的數(shù)據(jù)不一致。2.數(shù)據(jù)庫概念設(shè)計(jì)2.1設(shè)計(jì)方法和步驟基本項(xiàng)構(gòu)思ERD的四條基本原則:①原則1(確定實(shí)體):能獨(dú)立存在的事物,例如人、物、事、地、團(tuán)體、機(jī)構(gòu)、活動(dòng)、事項(xiàng)等等,在其有多個(gè)由基本項(xiàng)描述的特性需要關(guān)注時(shí),就應(yīng)把它作為實(shí)體。②原則2(確定聯(lián)系):兩個(gè)或多個(gè)實(shí)體間的關(guān)聯(lián)與結(jié)合,如主管,從屬,組成,占有,作用,配合,協(xié)同等等,當(dāng)需要予以關(guān)注時(shí),應(yīng)作為聯(lián)系。實(shí)體間的聯(lián)系可分為一對(duì)一、一對(duì)多、多對(duì)多等三類,在確定聯(lián)系時(shí)還要確定其類型。③原則3(確定屬性):實(shí)體的屬性是實(shí)體的本質(zhì)特征。實(shí)體應(yīng)有標(biāo)識(shí)屬性(能把不同個(gè)體區(qū)分開來的屬性組),并指定其中一個(gè)作為主標(biāo)識(shí)。聯(lián)系的屬性是聯(lián)系的結(jié)果或狀態(tài)。④原則4(一事一地):信息分析中得到的基本項(xiàng)要在且僅在實(shí)體聯(lián)系圖中的一個(gè)地方作為屬性出現(xiàn)。2.2E-R圖設(shè)計(jì)經(jīng)過上述系統(tǒng)功能分析和需求總結(jié),設(shè)計(jì)如下面所示的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)。管理員表(Adminuser):用于存放管理員的數(shù)據(jù)記錄,包括數(shù)據(jù)項(xiàng):管理員名、密碼。部門表(Department):用來存放部門的相關(guān)記錄,包括數(shù)據(jù)項(xiàng):部門號(hào),部門名。用戶表(Users):用于存放注冊(cè)用戶的記錄,包括數(shù)據(jù)項(xiàng):用戶賬號(hào)、密碼、真實(shí)姓名、身份證號(hào)、聯(lián)系電話,聯(lián)系地址,部門號(hào)(和部門表有關(guān))等。報(bào)刊類別表(NewspaperClass):用于存放初始的報(bào)刊類別記錄,包括數(shù)據(jù)項(xiàng):分類編號(hào)、分類名稱。報(bào)刊信息表(Newspaper):用于存放報(bào)刊記錄,包括數(shù)據(jù)項(xiàng):報(bào)刊代號(hào)、報(bào)刊名稱、出版報(bào)社、出版周期、季度報(bào)價(jià)、內(nèi)容介紹、分類編號(hào)(和報(bào)刊類別表有關(guān))等。訂單表(Order):用于存放用戶下達(dá)的訂閱報(bào)刊的基本信息,包括數(shù)據(jù)項(xiàng):訂單編號(hào)、用戶編號(hào)(用戶表的主碼)、報(bào)刊代號(hào)(報(bào)刊信息表的主碼)、訂閱份數(shù)、訂閱月數(shù)等。根據(jù)上面的設(shè)計(jì)規(guī)劃出來的實(shí)體有部門實(shí)體、管理員實(shí)體、用戶實(shí)體、報(bào)刊類別實(shí)體、報(bào)刊信息實(shí)體和訂單實(shí)體。部門實(shí)體的E-R圖如下圖所示:管理員實(shí)體的E-R圖如下圖所示:用戶實(shí)體的E-R圖如下圖所示:報(bào)刊信息實(shí)體的E-R圖如下圖所示:訂單實(shí)體的E-R圖如下圖所示:報(bào)刊類別實(shí)體的E-R圖如下圖所示:所有實(shí)體之間的的關(guān)系E-R圖如下圖所示:3.數(shù)據(jù)庫邏輯設(shè)計(jì)3.1一般邏輯模型設(shè)計(jì)關(guān)系模型的邏輯結(jié)構(gòu)是一組關(guān)系模式的集合。將E-R圖轉(zhuǎn)換為關(guān)系模型就是要將實(shí)體型、實(shí)體的屬性和實(shí)體型之間的聯(lián)系轉(zhuǎn)換為關(guān)系模式。由ERD導(dǎo)出一般關(guān)系模型的四條原則;①一個(gè)1:1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一端對(duì)應(yīng)的關(guān)系模式合并。如果軟換為一個(gè)獨(dú)立的關(guān)系模式,則與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,每個(gè)實(shí)體的碼均是該關(guān)系的候選碼。如果與某一端實(shí)體對(duì)應(yīng)的關(guān)系模式何明,則需要在該關(guān)系模式的屬性中加入另一個(gè)關(guān)系模式的碼和聯(lián)系本身的屬性。②一個(gè)1:n聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與n端對(duì)應(yīng)的關(guān)系模式合并。如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,則與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,而關(guān)系的碼為n端實(shí)體的碼。③一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式。與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,各實(shí)體的碼組成關(guān)系的碼或關(guān)系碼的一部分。④3個(gè)或3個(gè)以上實(shí)體間的一個(gè)多元聯(lián)系可以轉(zhuǎn)換為一個(gè)關(guān)系模式。與該多元聯(lián)系項(xiàng)鏈呢的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,各實(shí)體的碼組成關(guān)系的碼或關(guān)系碼的一部分。根據(jù)以上原則將E-R圖轉(zhuǎn)換成的關(guān)系模式如下:部門(部門號(hào),部門名稱)用戶(用戶賬號(hào),密碼,用戶真實(shí)姓名,聯(lián)系電話,聯(lián)系地址,部門號(hào))管理員(管理員名,密碼)報(bào)刊類別(分類編號(hào),分類名稱)報(bào)刊(報(bào)刊代號(hào),報(bào)刊名稱,出版報(bào)社,出版周期,每月訂價(jià),內(nèi)容介紹,分類編號(hào))訂單(用戶編號(hào),報(bào)刊代號(hào),訂閱份數(shù),訂閱月數(shù),訂閱總額)3.2模塊設(shè)計(jì)使用本系統(tǒng),首先它會(huì)自動(dòng)彈出“歡迎使用本系統(tǒng)”的歡迎界面,然后跳轉(zhuǎn)到用戶身份驗(yàn)證界面,選擇管理員的身份進(jìn)入,有錄入(錄入報(bào)刊信息、錄入用戶信息),查詢,統(tǒng)計(jì)(統(tǒng)計(jì)用戶、統(tǒng)計(jì)、報(bào)刊訂單),系統(tǒng)維護(hù)(備份數(shù)據(jù)庫、恢復(fù)數(shù)據(jù)庫),注銷,退出等菜單可使用,沒注冊(cè)的用戶可進(jìn)入注冊(cè)界面進(jìn)行注冊(cè),然后返回登錄界面登錄,進(jìn)入后有歡迎界面,有訂閱、查詢、統(tǒng)計(jì)、修改、注銷、退出等菜單可使用。4.數(shù)據(jù)庫物理設(shè)計(jì)與數(shù)據(jù)庫保護(hù)設(shè)計(jì)4.1設(shè)計(jì)索引我們可以在最經(jīng)常查詢的列上建立索引以提高查詢效率。而在這個(gè)系統(tǒng)中,我們經(jīng)常要按用戶賬號(hào),按報(bào)刊代號(hào),按部門查詢,所以,我們可以為這三個(gè)表建立索引,建立所以的SQL語句如下,這幾個(gè)都是字符型CreateuniqueindexuserNumonusers(userNo)CreateuniqueindexdepartNumondepartment(depNumber)CreateuniqueindexnewsNumonnewspaper(newsNO)4.2設(shè)計(jì)表間關(guān)系4.3完整性設(shè)計(jì)列出主要字段完整性的字段名、完整性約束條件;列出記錄完整性約束及其約束條件;列出參照完整性表。主要字段的完整性字段名和參照完整性表可以參照上圖各個(gè)表之間的關(guān)系來看。比如建立報(bào)刊表newspaper時(shí),要求報(bào)刊代號(hào)在100~99999之間,報(bào)刊名稱和每月定價(jià)不能取空值,報(bào)刊類別是報(bào)刊類別表的主鍵,則Createtableuser(userNochar(10)constraintC1check(newsNobetween100and99999),newsNamechar(40)constraintC2notnull,classidint(4)constraintC3notnull,publishchar(150),pubPeriodchar(30),contentchar(4000),pricefloat(8)notnull,constraintC4foreignkey(classid)referencesnewspaperclass(classid))4.4用戶授權(quán)與安全性控制。因?yàn)檫@個(gè)報(bào)刊訂閱系統(tǒng)由多個(gè)用戶使用,分為管理員和用戶,他們擁有不同的權(quán)限和安全性控制。所以在權(quán)限設(shè)置方面,采用管理員和用戶分別使用用戶名和密碼進(jìn)入他們能使用權(quán)限范圍里的界面。管理員登陸系統(tǒng)后,可以添加、修改用戶和報(bào)刊的信息,可以對(duì)訂單進(jìn)行查詢和統(tǒng)計(jì),并且可以把查詢統(tǒng)計(jì)的結(jié)果進(jìn)行預(yù)覽和打印出來,還要對(duì)數(shù)據(jù)庫系統(tǒng)進(jìn)行維護(hù),適時(shí)備份數(shù)據(jù)庫,一旦數(shù)據(jù)庫遇到問題,可以恢復(fù)到最近備份的狀態(tài),減少不必要的損失。用戶登錄,用戶使用該系統(tǒng)前需要進(jìn)行注冊(cè),他應(yīng)該是該企業(yè)某個(gè)部門下面的員工,所以他需要輸入他的部門號(hào)等信息,注冊(cè)成功后,登錄到系統(tǒng),可以修改自己的信息還有訂閱報(bào)刊,但由于權(quán)限的限制,他只能查看和統(tǒng)計(jì)自己的訂單信息.5.詳細(xì)設(shè)計(jì)以下是我負(fù)責(zé)設(shè)計(jì)的部分,以及登錄注冊(cè)頁面5.1系統(tǒng)設(shè)計(jì)過程(1)打開PowerBuilder,新建一個(gè)工作區(qū),命名為newspaper(2)新建一個(gè)Application,取名newspaper,然后點(diǎn)擊工具欄上的DBProfile,新建一個(gè)MSSMicrosoftSQLServer,填入ProfileName,服務(wù)器名,用戶名,密碼,數(shù)據(jù)庫,如下圖,然后輸入連接數(shù)據(jù)庫的主要代碼:open(w_welcome)//ProfilenewspaperSQLCA.DBMS="MSSMicrosoftSQLServer"SQLCA.Database="newspaper"SQLCA.ServerName="CHINA-41CD782EF"SQLCA.LogId="sa"SQLCA.LogPass=""SQLCA.AutoCommit=FalseSQLCA.DBParm=""connect;ifsqlca.sqlcode<>0then messagebox("錯(cuò)誤","數(shù)據(jù)庫連接錯(cuò)誤,程序?qū)㈥P(guān)閉!",stopsign!) returnendifclose(w_welcome)open(w_login)(3)制作登錄頁面w_login,在“登錄”按鈕輸入如下:stringid,password,checkpass,checkidid=trim(sle_1.text)password=trim(sle_2.text)ifid=""orid=''orpassword=""orpassword=''then MessageBox("系統(tǒng)提示","請(qǐng)輸入用戶名和密碼!")endififrb_1.checked=truethen selectadminUser,adminPassinto:checkid,:checkpassfromadminuserwhereadminUser=:id; ifsqlca.sqlcode<>0then messagebox("系統(tǒng)提示","無此管理員!") sle_2.text="" sle_1.text="" sle_1.setfocus() return endif ifpassword<>checkpassthen messagebox("警告","密碼錯(cuò)誤!") sle_2.text="" sle_2.setfocus() return endif open(w_adminview) close(w_login)elseifrb_2.checked=truethen selectuserNo,passwordinto:checkid,:checkpassfromuserswhereuserNo=:id; ifsqlca.sqlcode<>0then messagebox("系統(tǒng)提示","無此用戶!") sle_2.text="" sle_1.text="" sle_1.setfocus() return endif ifpassword<>checkpassthen messagebox("警告","密碼錯(cuò)誤!") sle_2.text="" sle_2.setfocus() return endif open(w_userview) gs_userid=checkidw_userview.st_2.text=checkid close(w_login)endif(4)制作注冊(cè)窗口w_register,在“注冊(cè)”按鈕的代碼如下:stringname,realname,password,copypassword,number,phone,address,number1stringnname=trim(sle_1.text)realname=trim(sle_2.text)password=trim(sle_3.text)copypassword=trim(sle_4.text)number=trim(sle_5.text)phone=trim(sle_6.text)address=trim(sle_7.text)ifname=""orname=''then MessageBox("系統(tǒng)提示","對(duì)不起!請(qǐng)輸入用戶名!否則無法注冊(cè)!") sle_1.setfocus() returnendifselectuserNointo:nfromuserswhereuserNo=:name;ifsqlca.sqlcode=0thenMessageBox("系統(tǒng)提示","對(duì)不起,此用戶名已被注冊(cè)!請(qǐng)另選一個(gè)試試!") sle_1.text="" returnendififpassword=""orpassword=''then MessageBox("系統(tǒng)提示","對(duì)不起!請(qǐng)輸入登錄密碼!否則無法注冊(cè)!") sle_3.setfocus() returnendififcopypassword=""orcopypassword=''then MessageBox("系統(tǒng)提示","對(duì)不起!請(qǐng)?jiān)俅屋斎氲卿浢艽a!否則無法注冊(cè)!") sle_4.setfocus() returnendififpassword<>copypasswordthen MessageBox("系統(tǒng)提示","對(duì)不起!兩次輸入密碼必須一致!否則無法注冊(cè)!") sle_4.setfocus() returnendififnumber=""ornumber=''then MessageBox("系統(tǒng)提示","對(duì)不起!請(qǐng)輸入部門號(hào)!否則無法注冊(cè)!") sle_5.setfocus() returnendifselectdepNumberinto:number1fromdepartmentwheredepNumber=:number;ifsqlca.sqlcode<>0then messagebox("警告","您輸入的部門號(hào)無效!無此部門!") sle_5.text="" sle_5.setfocus() returnendifINSERTINTOusers(userNo,userName,passWord,address,phone,depNumber)VALUES(:name,:realname,:password,:address,:phone,:number);MessageBox("系統(tǒng)提示","恭喜!注冊(cè)成功!")close(parent)(5)制作管理員主菜單w_adminview,建管理員主界面w_adminview,將該菜單放到窗口中(6)制作用戶主菜單w_userview,建用戶主界面w_userview,將菜單放到窗口中(7)制作管理員主菜單里的錄入部門信息窗口w_indepartment,制作數(shù)據(jù)窗口dw_departgrid,dw_departfree,在數(shù)據(jù)窗口調(diào)整好外觀,添加控件,并設(shè)定相應(yīng)的動(dòng)作,分別放到這兩個(gè)窗口中這兩個(gè)窗口功能相識(shí),在窗口中輸入:dw_1.settransobject(sqlca)dw_1.retrieve()dw_2.settransobject(sqlca)dw_2.retrieve()(8)制作管理員主菜單中的查詢訂閱信息窗口w_searchorder,制作數(shù)據(jù)窗口dw_booksearch,將其放入窗體中,在窗口中輸入代碼:dw_1.settransobject(sqlca)dw_1.retrieve()sle_1.setfocus()在“查詢”按鈕中輸入代碼:stringordern,usern,newsn,a,b,clongll_rowiftrim(sle_1.text)=""ortrim(sle_1.text)=''then MessageBox("系統(tǒng)提示","對(duì)不起!輸入不能為空!") sle_1.setfocus() returnendififrb_1.checked=truethen ordern=trim(sle_1.text)selectdepNumberinto:afromdepartmentwheredepNumber=:ordern;ifsqlca.sqlcode<>0then messagebox("系統(tǒng)提示","無此記錄!") sle_1.text="" sle_1.setfocus() returnendifdw_1.setfilter("department_depnumber='"+ordern+"'")dw_1.filter()elseifrb_2.checked=truethen usern=trim(sle_1.text)selectuserNointo:bfrombookwhereuserNo=:usern;ifsqlca.sqlcode<>0then messagebox("系統(tǒng)提示","無此記錄!") sle_1.text="" sle_1.setfocus() returnendifdw_1.setfilter("users_userNo='"+usern+"'")dw_1.filter()elseifrb_3.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論