版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課 程 設(shè) 計</b></p><p> 課程名稱___數(shù)據(jù)庫應(yīng)用課程設(shè)計_</p><p> 題目名稱 企業(yè)報刊管理系統(tǒng) </p><p> 2010 年 10 月 25 日</p><p><b> 目錄</b></p><p&g
2、t;<b> 概述 3</b></p><p><b> 一.需求分析3</b></p><p> 二.(數(shù)據(jù)庫)概念(模型)設(shè)計6</p><p> 三.(數(shù)據(jù)庫)邏輯(模型)設(shè)計8</p><p> 四.數(shù)據(jù)庫物理設(shè)計與數(shù)據(jù)庫保護設(shè)計12</p><p&g
3、t; 五.處理功能設(shè)計13</p><p> 六.數(shù)據(jù)庫物理設(shè)計與數(shù)據(jù)庫保護設(shè)計14</p><p> 七.數(shù)據(jù)庫應(yīng)用系統(tǒng)運行32</p><p> 八.數(shù)據(jù)庫課程設(shè)計總結(jié)34</p><p><b> 數(shù)據(jù)庫應(yīng)用課程設(shè)計</b></p><p><b> 概述<
4、;/b></p><p> 系統(tǒng)的基本任務(wù):為企業(yè)部門的職工用戶提供報刊訂閱功能。</p><p> 主要業(yè)務(wù):用戶訂閱各種報刊,企業(yè)管理員對系統(tǒng)進行維護。</p><p> 開發(fā)目標:設(shè)計一種智能化的管理系統(tǒng),面向所有用戶,具有比較高的安全性能。</p><p> 主要功能:它能夠?qū)崿F(xiàn)報刊訂閱的基本功能,如錄入功能:錄入訂閱人
5、員信息、報刊基本信息;</p><p> 訂閱功能:訂閱人員訂閱報刊(并計算出其金額);</p><p> 查詢功能:按人員查詢、按報刊查詢、按部門查詢有關(guān)訂閱信息,對查詢結(jié)果能進行預(yù)覽和打??;</p><p> 統(tǒng)計功能:能實現(xiàn)按報刊統(tǒng)計、按人員統(tǒng)計、按部門統(tǒng)計,對統(tǒng)計結(jié)果能進行預(yù)覽和打印;</p><p> 其他:操作員管理、權(quán)限
6、設(shè)置等,用戶合法注冊后必須輸入有效密碼才能成功進入此系統(tǒng),對于非法操作,系統(tǒng)有識別和防護措施。</p><p><b> 一. 需求分析</b></p><p><b> 1.1用戶需求: </b></p><p> 如今,互聯(lián)網(wǎng)飛速發(fā)展,科學(xué)技術(shù)的進步給我們的生活帶來了巨大的改變,以前,我們要訂閱報刊,可能需要親自
7、到訂閱機構(gòu)或者要打電話訂閱,而訂閱機構(gòu)也需要大量的工作人員,要手工抄寫訂閱單或記錄訂閱情況,整個過程不僅煩瑣,而且很容易出錯,甚至對企業(yè)或訂閱人員有不安全的因數(shù)存在,比如由于操作人員出錯,可能造成計帳方面的錯誤,使企業(yè)虧損,或使用戶造成損失,現(xiàn)在,這些問題都在不斷地被解決,針對報刊訂閱管理設(shè)計的系統(tǒng)已經(jīng)越來越多,也越來越完善。</p><p> 面向企業(yè)的報刊訂閱管理系統(tǒng),用戶可以通過該管理系統(tǒng)方便的進行報刊訂
8、閱;可以通過多種方式對報刊進行檢索;能快速的知道該報刊的價格,訂閱是否有優(yōu)惠;用戶可以查詢自己的訂閱紀錄,更改個人資料,修改密碼;用戶對自己的個人信息和訂閱紀錄可以設(shè)置權(quán)限,只有經(jīng)過允許,其他用戶方可查閱;用戶訂閱的時間達到一定時能夠獲得一定的優(yōu)惠;用戶訂閱后可以對系統(tǒng)的服務(wù)進行評價。系統(tǒng)可以為用戶提供方便的訂閱功能;當不能訂閱或沒有存貨時要給予用戶拒絕的理由;系統(tǒng)保存用戶以往的訂閱記錄,便于用戶查詢;系統(tǒng)能防止用戶利用其他用戶的名義訂
9、閱報刊。對于管理者:為了便于管理,管理員給用戶分配一個可以唯一標志用戶的ID號,用戶不能更改;管理員可以錄入報刊信息,對信息進行維護;管理員可以按人員、按報刊、按部門查詢有關(guān)訂閱信息,對查詢結(jié)果能進行預(yù)覽和打印;管理員具有統(tǒng)計功能可以按報刊、按人員、按部門統(tǒng)計,對統(tǒng)計結(jié)果能進行預(yù)覽和打印。 </p><p><b> 1.2業(yè)務(wù)流程分析</b></p><p>
10、本系統(tǒng)樹形用例圖如下:</p><p><b> 管理者:</b></p><p><b> 普通用戶:</b></p><p><b> 流程圖:</b></p><p><b> 1.3功能需求分析</b></p><p&g
11、t; 本系統(tǒng)主要面向訂閱報刊的用戶以及具有管理與維護系統(tǒng)權(quán)限的管理員。不同的角色有不同的權(quán)限。</p><p> 本系統(tǒng)主要實現(xiàn)以下功能:</p><p><b> 對于用戶:</b></p><p> 1)登錄功能:對于首次登錄系統(tǒng)的用戶,可以對報刊進行查詢但不能訂閱,只有注冊之后才可以擁有用戶權(quán)限,為了安全起見,所有用戶必須輸入有效
12、密碼才能使用用戶權(quán)限。</p><p> 2)錄入功能:“用戶注冊”需要用戶填寫個人信息,輸入密碼,以后通過此用戶名和密碼即可進入報刊訂閱系統(tǒng),用戶也可以對個人信息和密碼進行修改,保存后,系統(tǒng)會自動覆蓋掉原由信息。用戶在訂閱后可以發(fā)表自己的評論。</p><p> 3)訂閱功能:用戶可以訂閱報刊,系統(tǒng)會為用戶計算金額,并告知用戶。</p><p> 4)查詢功
13、能:用戶可以通過多種方式查詢自己所需要的報刊,比如報刊名,出版年限,類別,出版社,價格;用戶還可以查詢自己以前的訂閱記錄;對查詢結(jié)果能進行預(yù)覽和打印。但是不能對其他用戶的記錄進行查詢,除非獲得管理員的許可。</p><p><b> 對于管理者:</b></p><p> 1)登陸功能:管理員通過管理員名和密碼進入報刊訂閱管理界面。為了安全起見,必須輸入有效名和密
14、碼才可以行使管理者權(quán)限。但管理員不具有訂閱報刊的功能,必須以用戶身份訂閱報刊。</p><p> 2)錄入功能:管理員擁有錄入報刊信息的功能,將所有信息都入庫保存。</p><p> 3)查詢功能:管理員可以按人員、報刊、部門分類查詢用戶的訂閱情況。查詢出的信息顯示在界面上,對查詢結(jié)果能進行預(yù)覽和打印。</p><p> 4)統(tǒng)計功能:管理員可以按報刊、人員、
15、部門統(tǒng)計報刊的銷售情況,對統(tǒng)計結(jié)果能進行預(yù)覽和打印。 </p><p> 5)系統(tǒng)維護功能:管理員可以對用戶、報刊、部門、訂閱等信息進行添加、刪除、更改等維護工作。</p><p> 二. (數(shù)據(jù)庫)概念(模型)設(shè)計</p><p> 由基本項構(gòu)思ERD的四條原則及根據(jù)這些原則相應(yīng)得出的實體、聯(lián)系及其屬性如下:</p><p> 原則
16、1(確定實體):能獨立存在的事物,例如人、物、事、地、團體、機構(gòu)、活動、事項等等,在其有多個由基本項描述的特性需要關(guān)注時,就應(yīng)把它作為實體。</p><p> 原則2(確定聯(lián)系):兩個或多個實體間的關(guān)聯(lián)與結(jié)合,如主管,從屬,組成,占有,作用,配合,協(xié)同等等,當需要予以關(guān)注時,應(yīng)作為聯(lián)系。聯(lián)系通常是某類行為動作,ERD中關(guān)注的是其狀態(tài)與結(jié)果而非其過程。</p><p> 原則3(確定屬性
17、):實體的屬性是實體的本質(zhì)特征。實體應(yīng)有標識屬性(能把不同個體區(qū)分開來的屬性組),并指定其中一個作為主標識。聯(lián)系的屬性是聯(lián)系的結(jié)果或狀態(tài)。屬性具有如下幾個特點:①非多值性 ②非復(fù)合性 ③非導(dǎo)出性,④實體的屬性還應(yīng)有非關(guān)聯(lián)性,只是一個實體的基本特征,與其他實體無關(guān);聯(lián)系的屬性應(yīng)具有關(guān)聯(lián)性,是對聯(lián)系結(jié)果或狀態(tài)的描述。</p><p> 原則4(一事一地):信息分析中得到的基本項要在且僅在實體聯(lián)系圖中</p&g
18、t;<p> 的一個地方作為屬性出現(xiàn)。根據(jù)上述原則,所構(gòu)成的E-R圖如下:</p><p> 企業(yè)報刊訂閱管理系統(tǒng)E-R圖:</p><p> 三. (數(shù)據(jù)庫)邏輯(模型)設(shè)計</p><p> 3.1 一般邏輯模型設(shè)計: </p><p> 由ERD導(dǎo)出一般關(guān)系模型的四條原則如下:</p><p
19、> 原則1(實體轉(zhuǎn)換為關(guān)系模式):ERD中每個獨立的實體轉(zhuǎn)換為一個關(guān)系模式,實體的屬性組成關(guān)系的屬性,實體的主標識轉(zhuǎn)換成關(guān)系的主碼。</p><p> 比如:用戶(用戶名,真實姓名,性別,家庭住址,聯(lián)系方式,密碼,);</p><p> 管理員(管理員名,真實姓名,密碼);</p><p> 報刊(報刊號,報刊名,出版年限,類別,出版社,半年訂閱價,全
20、年訂閱價);</p><p> 部門(部門號,部門名);</p><p> 訂閱單(訂閱單編號,訂閱期限,訂閱數(shù)量,訂閱金額,訂閱起始時間,成交時間);</p><p> 原則2(從實體及其主從聯(lián)系轉(zhuǎn)換為關(guān)系模式):ERD中一個從實體及其主從聯(lián)系轉(zhuǎn)換為一個關(guān)系,從實體的屬性及其主實體關(guān)系的屬性組成該關(guān)系的屬性,其主實體關(guān)系的主碼,在主從聯(lián)系為一對多聯(lián)系時還要加
21、上可把同一主實體個體所對應(yīng)的從實體個體區(qū)分開來的、從實體的一組屬性,作為該關(guān)系的主碼。對子類實體可作類似一對一聯(lián)系的從實體的轉(zhuǎn)換。</p><p> 原則3(一對多聯(lián)系在關(guān)系模式中的表示):ERD中的一個一對多聯(lián)系通過在其“多”實體關(guān)系上增加“1”實體關(guān)系的主碼(作為外碼)和聯(lián)系本身的屬性來表示。</p><p> 比如:部門與用戶發(fā)生1對多關(guān)系,關(guān)系可以合并到多的那方用戶里,部門號作
22、用戶的外碼,用戶表改為:</p><p> 用戶(用戶名,真實姓名,性別,家庭住址,聯(lián)系方式,密碼,部門號)</p><p> 原則4(多對多聯(lián)系轉(zhuǎn)換為關(guān)系):ERD中的一個多對多聯(lián)系轉(zhuǎn)換為一個關(guān)系,其被聯(lián)系實體關(guān)系的主碼作為外碼和該聯(lián)系本身的屬性一起組成關(guān)系的屬性,被聯(lián)系關(guān)系的主碼組成該關(guān)系的復(fù)合主碼。</p><p> 比如:用戶與報刊發(fā)生多對多的關(guān)系,不
23、能合并,所以添加訂閱這個關(guān)系實體:訂閱單(訂閱單編號,用戶名,報刊號,訂閱期限,訂閱數(shù)量,訂閱金額,訂閱起始時間,成交時間)</p><p> 最后再根據(jù)四個原則確定最后的概念模型:</p><p> 用戶(用戶名,真實姓名,性別,家庭住址,聯(lián)系方式,密碼,部門號) </p><p> 管理員(管理員名,真實姓名,密碼)</p><
24、p> 報刊(報刊號,報刊名,出版年限,類別,出版社,半年訂閱價,全年訂閱價)</p><p> 部門(部門號,部門名)</p><p> 訂閱單(訂閱單編號,用戶名,報刊號,訂閱期限,訂閱數(shù)量,訂閱金額,訂閱起始時間,成交時間)</p><p> 3.2具體邏輯模型設(shè)計:</p><p> 按所用的DBMS要求,設(shè)計表(文件)
25、的具體結(jié)構(gòu),在關(guān)系框架下補充字段類型、長度、小數(shù)位數(shù)等行。</p><p> 本系統(tǒng)用的DBMS是SQL SERVER2005,具體表的設(shè)計如下:</p><p><b> (1)用戶表</b></p><p> ?。ū韈onsumer) uname為用戶名, realname為真實名,usex性別,upassword為密碼, uaddre
26、ss為地址,uphone為聯(lián)系方式,dnumber為部門號,idcard為身份證號碼</p><p> 索引:索引字段:用戶表.用戶名 類型:普通索引</p><p><b> ?。?)管理員表</b></p><p> ?。ū鞟dministrator)aname為管理員名,arealname為管理員真實姓名,apassword為密
27、碼</p><p> 索引:索引字段:管理員表.管理員名 類型:普通索引</p><p><b> ?。?)報刊表</b></p><p> (表magezine)mnumber為報刊號,mname為報刊名,mkind為報刊類型,mtime刊期為出版時間,mhalfprice為半年價,mwhole為全年價,munitprice為單價,
28、mmonthprice為月價,msesonprice為季價</p><p> 索引:索引字段:報刊表.報刊號 類型:普通索引</p><p><b> ?。?)訂閱表</b></p><p> (表subscribe)subid為訂閱單編號,uname用戶名,mnumber報刊號,syear訂閱期限,snumber訂閱數(shù)量,ssum為
29、金額,starttime為開始訂閱時間,currenttime為成交時間 </p><p> 索引:索引字段:訂閱單表.訂閱單編號 類型:普通索引</p><p><b> (5)部門表</b></p><p> 索引:索引字段:部門表.部門號 類型:普通索引</p><p> 四.數(shù)據(jù)庫物理設(shè)計與數(shù)
30、據(jù)庫保護設(shè)計</p><p> 設(shè)計索引:在表(文件)的具體結(jié)構(gòu)關(guān)系框架下補充字段索引行或在框架外補充索引說明,指出索引字段或索引表達式、索引類型。索引的設(shè)計和說明請參看上面3.2中表具體結(jié)構(gòu)關(guān)系框架外的字段索引行。</p><p> 設(shè)計表間關(guān)系:列出父表與子表的關(guān)聯(lián)索引,指出要建立的表間關(guān)系的類型。</p><p> 用戶表的部門號與部門表的部門號建立聯(lián)系
31、,訂閱表與報刊表的報刊號,用戶表的用戶名建立聯(lián)系</p><p> 完整性設(shè)計:列出主要字段完整性的字段名、完整性約束條件;列出記錄完整性約束及其約束條件;列出參照完整性表。</p><p> 有多個用戶操作時,考慮用戶授權(quán)與安全性控制。</p><p> 每個用戶在注冊時都會設(shè)置密碼,以后登錄系統(tǒng)時,無論是對本人還是其他用戶,系統(tǒng)都是通過輸入的用戶名和密碼確
32、認其身份,只有兩個都正確才能進入系統(tǒng),行使權(quán)限。</p><p><b> 五.處理功能設(shè)計</b></p><p> 主控模塊設(shè)計:包括系統(tǒng)環(huán)境初始化、歡迎畫面、用戶身份驗證、主控表單或菜單、告別畫面、系統(tǒng)退出的環(huán)境恢復(fù)等功能。</p><p> 子模塊設(shè)計:按系統(tǒng)業(yè)務(wù)要求設(shè)計各項業(yè)務(wù)模塊和系統(tǒng)管理模塊,要能完成系統(tǒng)業(yè)務(wù)和系統(tǒng)管理功能,
33、總體規(guī)模至少要達到5.2.1—5.2.2的要求。</p><p><b> 用戶業(yè)務(wù)模塊功能</b></p><p><b> ?。?)查詢報刊信息</b></p><p> ?。?)訂閱報刊以及退定</p><p><b> ?。?)查詢訂閱紀錄</b></p>
34、<p><b> ?。?)注冊</b></p><p><b> (5)修改個人信息</b></p><p><b> ?。?)修改密碼</b></p><p><b> 管理員系統(tǒng)管理功能</b></p><p> ?。?)按用戶查詢報
35、刊訂閱情況</p><p> ?。?)按部門查詢報刊訂閱情況</p><p> ?。?)按報刊查詢報刊訂閱情況</p><p> (4)按報刊統(tǒng)計訂閱情況</p><p> ?。?)按報刊統(tǒng)計訂閱情況</p><p> (6)按用戶統(tǒng)計訂閱情況</p><p> ?。?)按部門統(tǒng)計訂閱情況&
36、lt;/p><p><b> (8)報刊信息維護</b></p><p><b> ?。?)用戶信息維護</b></p><p> (10)訂閱信息維護</p><p> ?。?1)部門信息維護</p><p> (12)修改管理員信息</p><p&g
37、t;<b> ?。?3)修改密碼</b></p><p> 六.數(shù)據(jù)庫應(yīng)用系統(tǒng)的實現(xiàn)</p><p> 建立數(shù)據(jù)庫描述文件及用命令定義并建立其數(shù)據(jù)庫表),注意完整性、索引與永久關(guān)聯(lián)的實現(xiàn),并附打印出的源模式(CREATE TABLE命令)與作為命令執(zhí)行結(jié)果的數(shù)據(jù)庫表結(jié)構(gòu)及其關(guān)聯(lián)圖、參照完整性表。</p><p> 數(shù)據(jù)庫及其表結(jié)構(gòu)的建立:
38、</p><p> 6.1.1通過ASA創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)庫源名為baokandingyue</p><p> 6.1.2創(chuàng)建數(shù)據(jù)庫表(用SQL語句建立):</p><p><b> 建立部門表:</b></p><p> CREATE TABLE "dba"."depat&quo
39、t; </p><p> ("departnum" char(10) NOT NULL DEFAULT NULL, </p><p> "departname" char(10) NOT NULL DEFAULT NULL, </p><p> PRIMARY KEY ("departnum&quo
40、t;)) ;</p><p><b> 建立用戶表:</b></p><p> CREATE TABLE "dba"."user" </p><p> ("uname" char(20) NOT NULL DEFAULT NULL, </p><p>
41、; "upassword" char(20) NOT NULL DEFAULT NULL, </p><p> "urealname" char(20) NOT NULL DEFAULT NULL, </p><p> "sex" char(5) DEFAULT NULL, </p><p
42、> "dnumber" char(10) DEFAULT NULL, </p><p> "uphone" char(20) NOT NULL DEFAULT NULL,</p><p> "uaddress" char(20 ) NOT NULL DEFAULT NULL,</p>&l
43、t;p> "idcard" char(20 ) NOT NULL DEFAULT NULL,</p><p> PRIMARY KEY ("userid") , FOREIGN KEY "foreign key 1" ("departnum" ) REFERENCES "dba"."dep
44、art" ON DELETE RESTRICT ) ;</p><p> CREATE INDEX "dx3" ON "dba"."user" ("uname" ) ;</p><p><b> 建立管理員表</b></p><p> CREATE
45、 TABLE "dba"."Administrator" </p><p> ("aname" char(20) NOT NULL DEFAULT NULL, </p><p> "apassword" char(20) NOT NULL DEFAULT NULL, </p>
46、<p> "arealname" char(20) NOT NULL DEFAULT NULL, </p><p> PRIMARY KEY ("dnumber")) ;</p><p><b> 建立訂閱單表</b></p><p> CREATE TABLE "dba
47、"."subscribe" </p><p> ("subid" char(20) NOT NULL DEFAULT NULL, </p><p> "uname" char(20) NOT NULL DEFAULT NULL, </p><p> "mnumber&q
48、uot; char(20) DEFAULT NULL, </p><p> "syear" decimal(5) DEFAULT NULL, </p><p> "snumber" decimal(9) NOT NULL DEFAULT NULL,</p><p> "ssum" dec
49、imal(9) NOT NULL DEFAULT NULL,</p><p> "starttime" date NOT NULL DEFAULT NULL,</p><p> "currenttime" date DEFAULT NULL,</p><p> PRIMARY KEY ("su
50、bid")) ;</p><p> CREATE INDEX "dx8" ON "dba"." subscribe " ("subid " ) </p><p><b> 建立報刊表</b></p><p> CREATE TABLE "
51、dba"."magazine" </p><p> ("mnumber" char(20) NOT NULL DEFAULT NULL, </p><p> "mname" char(20) NOT NULL DEFAULT NULL, </p><p> "mkind
52、" char(10) DEFAULT NULL, </p><p> "mpress" char(30) DEFAULT NULL, </p><p> "mtime" char(10) DEFAULT NULL,</p><p> "mhalfprice" decimal(9
53、,2) DEFAULT NULL,</p><p> "mwhole" decimal(9,2) DEFAULT NULL,</p><p> "munitprice" decimal(9,2 ) DEFAULT NULL,</p><p> "mmongthtprice" dec
54、imal(9,2 ) DEFAULT NULL,</p><p> "msesonprice" decimal(9,2 ) DEFAULT NULL,</p><p> PRIMARY KEY ("mnumber")) ;</p><p> CREATE INDEX "dx5" ON "
55、;dba"."magazine" ("mnum" ) ;</p><p><b> 關(guān)系圖:</b></p><p> 數(shù)據(jù)輸入:實現(xiàn)5.2.1中的輸入程序后,用這些輸入程序或系統(tǒng)的追加插入命令錄入數(shù)據(jù),并打印出的各表的內(nèi)容。</p><p><b> 報刊表數(shù)據(jù):</b&
56、gt;</p><p> 報刊號 報刊名 報刊類型 出版社 刊期 月價 季價 半年價</p><p> 全年價 單價</p><p><b> 部門表:</b></p><p> 部門名
57、 部門號</p><p><b> 用戶表:</b></p><p> 用戶名 密碼 真實姓名 性別 聯(lián)系方式 地址 身份證號碼 部門號</p><p> 模塊實現(xiàn):用視窗菜單和/或程序編輯器實現(xiàn)各模塊,建議參考教材[2]采用菜單與多表單技術(shù),調(diào)試正確后打印實現(xiàn)的系統(tǒng)輸出結(jié)果。建議先實現(xiàn)輸入模塊,再實現(xiàn)其
58、他子模塊,然后實現(xiàn)主控模塊。最好建立項目,用項目管理器來管理整個系統(tǒng)。打印出實現(xiàn)結(jié)果(表單、源程序)。寫出實現(xiàn)的經(jīng)過與體會。</p><p><b> 應(yīng)用里的程序:</b></p><p> close(w_welcome) </p><p> // Profile baokandingyue</p><p>
59、 SQLCA.DBMS = "ODBC"</p><p> SQLCA.AutoCommit = False</p><p> SQLCA.DBParm = "ConnectString='DSN=baokandingyue;UID=dba;PWD=sql'"</p><p><b> conn
60、ect;</b></p><p> if sqlca.sqlcode<>0 then</p><p> messagebox("錯誤","數(shù)據(jù)庫連接錯誤,請檢查后重試!",stopsign!)</p><p> return end if </p><p> close(
61、w_welcome) open(w_login)</p><p> 6.3.1 登陸窗口</p><p> 全局變量定義:string gs_operator_id,gs_password</p><p> 登陸窗口:w_login</p><p><b> 確定按紐代碼:</b></p><
62、p> string id,password,getpassword</p><p> id=trim(sle_1.text)</p><p> getpassword=trim(sle_2.text)</p><p> if id="" or id='' then </p><p> M
63、essageBox("系統(tǒng)提示","請輸入用戶名!") return</p><p> elseif getpassword="" or getpassword='' then</p><p> MessageBox("系統(tǒng)提示","請輸入密碼!") return
64、</p><p><b> end if</b></p><p> if rb_1.checked=true then</p><p> select Aname,Apassword into :gs_operator_id,:gs_password</p><p> from administrator
65、where Aname=:id;</p><p> if sqlca.sqlcode<>0 then </p><p> messagebox("系統(tǒng)提示","無此管理員!")</p><p> sle_2.text="" sle_1.text="" sle_1.
66、setfocus() return</p><p><b> end if</b></p><p> if getpassword<>gs_password then</p><p> messagebox("警告","口令錯誤!") </p><p>
67、sle_2.text="" sle_2.setfocus() return</p><p><b> end if</b></p><p> open(w_main) close(w_login)</p><p> elseif rb_2.checked=true then</p><p>
68、; select Uname,Upassword</p><p> into :gs_operator_id,:gs_password</p><p> from consumer</p><p> where Uname=:id;</p><p> if sqlca.sqlcode<>0 then </p>
69、<p> messagebox("系統(tǒng)提示","無此用戶!")</p><p> sle_2.text=""sle_1.text=""sle_1.setfocus()return</p><p> elseif getpassword<>gs_password then</
70、p><p> messagebox("警告","口令錯誤!")</p><p> sle_2.text=""sle_2.setfocus()return</p><p><b> end if</b></p><p> gs_operator_id=id&l
71、t;/p><p> open(w_consumermain)close(w_login)</p><p> elseif rb_1.checked=false and rb_2.checked=false then</p><p> messagebox("系統(tǒng)提示","請選擇用戶類型!")return</p>
72、<p><b> end if</b></p><p><b> 注冊按紐:</b></p><p> open(w_enroll)</p><p><b> 取消按紐:</b></p><p> close(w_login)</p><
73、;p> 6.3.2用戶功能模塊</p><p> 6.3.2.1主窗口:</p><p> 6.3.2.2注冊窗口</p><p><b> 注冊按紐:</b></p><p> string name,realname,password,copypassword,sex,number,phone,add
74、ress,number1</p><p><b> string n</b></p><p> name=trim(sle_1.text)</p><p> password=trim(sle_2.text)</p><p> copypassword=trim(sle_3.text)</p>&l
75、t;p> realname=trim(sle_4.text)</p><p> if rb_1.checked=true then</p><p><b> sex="男"</b></p><p> elseif rb_2.checked=true then</p><p><b&
76、gt; sex="女"</b></p><p><b> end if</b></p><p> number=trim(sle_5.text)</p><p> phone=trim(sle_6.text)</p><p> address=trim(sle_7.text)&l
77、t;/p><p> if name="" or name='' then</p><p> MessageBox("系統(tǒng)提示","對不起!請輸入用戶名!否則無法注冊!")</p><p> sle_1.setfocus()return</p><p><b&g
78、t; end if</b></p><p> select Uname</p><p><b> into :n</b></p><p> from consumer</p><p> where Uname=:name;</p><p> if sqlca.sqlcode
79、=0 then</p><p> MessageBox("系統(tǒng)提示","對不起,此用戶名已被注冊!請另選一個試試!")</p><p> sle_1.text=""return</p><p><b> end if</b></p><p> if pa
80、ssword="" or password='' then</p><p> MessageBox("系統(tǒng)提示","對不起!請輸入登錄密碼!否則無法注冊!")</p><p> sle_2.setfocus()return</p><p><b> end if</b&
81、gt;</p><p> if copypassword="" or copypassword='' then</p><p> MessageBox("系統(tǒng)提示","對不起!請再次輸入登錄密碼!否則無法注冊!")</p><p> sle_3.setfocus()return<
82、/p><p><b> end if</b></p><p> if password<>copypassword then</p><p> MessageBox("系統(tǒng)提示","對不起!兩次輸入密碼必須一致!否則無法注冊!")</p><p> sle_3.se
83、tfocus()return</p><p><b> end if</b></p><p> if realname="" or realname='' then</p><p> MessageBox("系統(tǒng)提示","對不起!請輸入真實姓名!否則無法注冊!")
84、</p><p> sle_4.setfocus()return</p><p><b> end if</b></p><p> if number="" or number='' then</p><p> MessageBox("系統(tǒng)提示","
85、;對不起!請輸入部門號!否則無法注冊!")</p><p> sle_5.setfocus()return</p><p><b> end if</b></p><p> select Dnumber</p><p> into :number1</p><p> from
86、department</p><p> where Dnumber=:number;</p><p> if sqlca.sqlcode<>0 then </p><p> messagebox("警告","您輸入的部門號無效!無此部門!")</p><p> sle_5.text=
87、""sle_5.setfocus()return end if</p><p> INSERT INTO consumer</p><p> (Uname,Upassword,Urealname,Usex,Dnumber,Uphone,Uaddress) </p><p> VALUES(:name,:password,:realname,
88、:sex,:number,:phone,:address) ;</p><p> MessageBox("系統(tǒng)提示","恭喜!注冊成功!")</p><p> 6.3.2.3個人信息修改窗口</p><p><b> 確定按紐:</b></p><p> string na
89、me,realname,pass,sex,dept,phone,address</p><p> int b_select</p><p> b_select=messagebox("系統(tǒng)提示","確認修改?",exclamation!,yesno!)</p><p> if b_select=1 then</p&
90、gt;<p> name=trim(sle_1.text)</p><p> pass=trim(sle_2.text)</p><p> realname=trim(sle_3.text)</p><p> dept=trim(sle_4.text)</p><p> phone=trim(sle_5.text)&l
91、t;/p><p> address=trim(sle_6.text)</p><p> if rb_1.checked=true then </p><p><b> sex="男"</b></p><p> elseif rb_2.checked=true then </p>
92、<p><b> sex="女"</b></p><p><b> end if</b></p><p> if pass="" or pass='' then</p><p> MessageBox("系統(tǒng)提示","對
93、不起!密碼不能為空!") </p><p> sle_2.setfocus() return</p><p><b> end if</b></p><p> if realname="" or realname='' then</p><p> MessageB
94、ox("系統(tǒng)提示","對不起!真實姓名不能為空!")</p><p> sle_3.setfocus() return</p><p><b> end if</b></p><p> if sex="" or sex='' then</p>&
95、lt;p> MessageBox("系統(tǒng)提示","對不起!性別不能為空!") return</p><p> end if if dept="" or dept='' then</p><p> MessageBox("系統(tǒng)提示","對不起!部門號不能為空!"
96、) sle_2.setfocus() return</p><p><b> end if</b></p><p> update consumer</p><p> set Upassword=:pass,Urealname=:realname,</p><p> Usex=:sex,Dnumber=:dept
97、,Uphone=:phone,Uaddress=:address</p><p> where Uname=:name;</p><p> if sqlca.sqlcode<>0 then</p><p> messagebox("系統(tǒng)提示","更改錯誤!")return</p><p&g
98、t;<b> end if</b></p><p> messagebox("系統(tǒng)提示","更改成功!");</p><p><b> end if</b></p><p> 6.3.2.4訂閱窗口</p><p> 訂閱窗口: w_subscrib
99、e</p><p> 在此用戶只需要輸入報刊代號,訂閱數(shù)量,訂閱期限以及訂閱開始時間</p><p><b> 提交按紐:</b></p><p> string magazinenum,num,ctime,ttime,number1,money,subid1,stime,Is_price</p><p> do
100、uble halfprice,wholeprice,number,number2,summoney,unitprice,sesonprice,monthprice</p><p> string num1,name1,subid0</p><p><b> int ret</b></p><p> magazinenum=trim(sle
101、_2.text)</p><p> number2=double(trim(sle_10.text))</p><p> number1=trim(sle_4.text)</p><p> subid1=string(i)</p><p> stime=trim(em_1.text)</p><p> sub
102、id1=trim(sle_8.text)</p><p> if magazinenum="" or magazinenum='' then</p><p> messagebox("系統(tǒng)提示","對不起!請您輸入報刊號!")return</p><p><b> end i
103、f</b></p><p> if number1="" or number1='' then</p><p> messagebox("系統(tǒng)提示","對不起!請您輸入數(shù)量!")return</p><p><b> end if</b></p&
104、gt;<p> if stime="" or stime='' then</p><p> messagebox("系統(tǒng)提示","對不起!請您輸入訂閱起始時間!")return</p><p><b> end if</b></p><p> se
105、lect Munitprice,Msesonprice,Mmonthprice,Mhalfprice,Mwhole</p><p> into :unitprice,:sesonprice,:monthprice,:halfprice,:wholeprice</p><p> from magazine</p><p> where Mnumber=:maga
106、zinenum;</p><p> if sqlca.sqlcode<>0 then </p><p> messagebox("系統(tǒng)提示","該報刊未輸入價格!")return</p><p><b> end if</b></p><p> if ddlb_
107、1.text="none" then</p><p> messagebox("系統(tǒng)提示","對不起!請您選擇訂閱方式!")return</p><p><b> else </b></p><p> Is_price=trim(ddlb_1.text)</p>&
108、lt;p> number=double(number1)</p><p> choose case Is_price</p><p><b> case "單價"</b></p><p> sle_7.text=string(unitprice)</p><p> summoney=n
109、umber2*(unitprice*number)</p><p> sle_6.text=string(summoney)</p><p><b> case "月價"</b></p><p> if number<1 then</p><p> messagebox("系統(tǒng)
110、提示","您輸入的月數(shù)不足1個月!")</p><p> sle_4.text=""sle_4.setfocus()</p><p><b> else</b></p><p> sle_7.text=string(monthprice)</p><p> sum
111、money=number2*(monthprice*number)</p><p> sle_6.text=string(summoney)</p><p><b> end if</b></p><p><b> case "季價"</b></p><p> if nu
112、mber<3 then</p><p> messagebox("系統(tǒng)提示","對不起!您輸入的月數(shù)不足1個季!")</p><p> sle_4.text=""sle_4.setfocus()</p><p><b> else</b></p><p&
113、gt; sle_7.text=string(sesonprice)</p><p> summoney=number2*(sesonprice*(number/3)+monthprice*mod(number,3))</p><p> sle_6.text=string(summoney)</p><p><b> end if</b>
114、</p><p> case "半年價"</p><p> if number<6 then</p><p> messagebox("系統(tǒng)提示","對不起!您輸入的月數(shù)不足半年!")</p><p> sle_4.text=""sle_4.setf
115、ocus()</p><p><b> else</b></p><p> sle_7.text=string(halfprice)</p><p> summoney=number2*(halfprice*(number/6)+monthprice*mod(number,6))</p><p> sle_6.t
116、ext=string(summoney)</p><p><b> end if</b></p><p> case "全年價"</p><p> if number<1 then</p><p> messagebox("系統(tǒng)提示","對不起!您輸入的年數(shù)
117、不足1年!")</p><p> sle_4.text=""sle_4.setfocus()</p><p><b> else</b></p><p> summoney=wholeprice*number</p><p> sle_6.text=string(summoney)s
118、le_7.text=string(wholeprice)</p><p><b> end if</b></p><p> end choose</p><p><b> end if</b></p><p> select Mnumber</p><p><b
119、> into :num</b></p><p> from magazine</p><p> where Mnumber=:magazinenum;</p><p> if sqlca.sqlcode<>0 then </p><p> messagebox("系統(tǒng)提示",&quo
120、t;無此報刊!")</p><p> sle_2.text=""return</p><p><b> end if</b></p><p> select Uname,Mnumber</p><p> into :name1,:num1</p><p>
121、from subscribe</p><p> where Uname=:gs_operator_id and Mnumber=:magazinenum;</p><p> if sqlca.sqlcode=0 then</p><p> MessageBox("對不起,您已經(jīng)訂閱過此報!","是否還訂閱?",&
122、</p><p> Question!,YesNoCancel!,3)</p><p> if ret=2 then</p><p> sle_2.text="" sle_4.text="" sle_8.text="" sle_6.text=""</p><p
123、> sle_7.text="" em_1.text=""return</p><p><b> end if</b></p><p><b> end if</b></p><p> select Subid</p><p> into
124、 :subid0</p><p> from subscribe</p><p> where Subid=:subID1;</p><p> if sqlca.sqlcode=0 then </p><p> messagebox("系統(tǒng)提示","對不起,該訂閱號已有,請重新輸入!")<
125、/p><p> sle_8.text="" sle_8.setfocus()return</p><p><b> end if</b></p><p> INSERT INTO subscribe</p><p> (Subid,Uname,Mnumber,Syear,starttime,Snu
126、mber,Ssum) </p><p> VALUES(:subID1,:gs_operator_id,:magazinenum,:number1,:stime,:number2,:summoney;</p><p> select ssum,currenttime</p><p> into :money,:ttime</p><p>
127、; from "subscribe"</p><p> where Uname=:gs_operator_id and Mnumber=:magazinenum;</p><p> sle_9.text=ttime</p><p> MessageBox("系統(tǒng)提示","恭喜!訂閱成功!所需金額為"
128、+money)</p><p><b> 清空按紐:</b></p><p> sle_2.text="" sle_3.text=""sle_4.text=""sle_8.text="sle_6.text=""sle_7.text=""em_1.text=
129、""</p><p> sle_9.text=""sle_10.text=""ddlb_1.text=""</p><p><b> 返回按紐:</b></p><p> close(parent)</p><p> 6.3.2.5用
130、戶取消訂閱</p><p><b> 退訂按紐代碼:</b></p><p> int b_select</p><p> b_select=messagebox("系統(tǒng)提示","確定要取消訂閱該報刊?",exclamation!,yesno!)</p><p> if b
131、_select=1 thendw_1.deleterow(0)dw_1.update();</p><p> messagebox("提示","操作成功,該報刊已經(jīng)成功退訂!");end if</p><p> 6.3.2.6查詢訂閱記錄</p><p><b> 查詢按紐代碼:</b></p
132、><p> int b_select</p><p> b_select=messagebox("系統(tǒng)提示","確定要取消訂閱該報刊?",exclamation!,yesno!)</p><p> if b_select=1 then</p><p> dw_1.deleterow(0)</p
133、><p> dw_1.update();</p><p> messagebox("提示","操作成功,該報刊已經(jīng)成功退訂!");</p><p><b> end if</b></p><p> string Is_name5,gs_operator_id,gs_passwo
134、rd,Is_name6</p><p> Is_name5=trim(sle_userid.text)</p><p> Is_name6=trim(sle_password.text)</p><p> select Userid, Upsw</p><p> into :gs_operator_id,:gs_password<
135、;/p><p> from "user"</p><p> where userid=:Is_name5;</p><p> if sqlca.sqlcode<>0 then //不是普通用戶</p><p> messagebox("系統(tǒng)提示","無此用戶!"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫原理與應(yīng)用課程設(shè)計報告--企業(yè)報刊訂閱管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計---報刊訂閱管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計---企業(yè)資產(chǎn)管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--數(shù)據(jù)庫設(shè)計—公司管理系統(tǒng)
- 企業(yè)銷售管理系統(tǒng)數(shù)據(jù)庫設(shè)計課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計---機房管理系統(tǒng)數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--企業(yè)人事管理系統(tǒng)
- 企業(yè)人事管理系統(tǒng)(數(shù)據(jù)庫課程設(shè)計)
- 數(shù)據(jù)庫課程設(shè)計---圖書管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--工資管理系統(tǒng)數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--企業(yè)人事管理系統(tǒng)
- 企業(yè)人事管理系統(tǒng)(數(shù)據(jù)庫課程設(shè)計)
- 數(shù)據(jù)庫課程設(shè)計-酒店管理系統(tǒng)課程設(shè)計
- 數(shù)據(jù)庫原理課程設(shè)計---教室管理系統(tǒng)數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計 --企業(yè)人事管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--企業(yè)資產(chǎn)管理
- 數(shù)據(jù)庫課程設(shè)計--bbs系統(tǒng)數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計論文---汽車銷售管理系統(tǒng)數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫課程設(shè)計--超市會員管理系統(tǒng)的數(shù)據(jù)庫設(shè)計
- 數(shù)據(jù)庫原理課程設(shè)計---圖書管理系統(tǒng)數(shù)據(jù)庫設(shè)計
評論
0/150
提交評論