欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      圖書(shū)管理系統(tǒng)課程設(shè)計(jì)摘要

      時(shí)間:2019-05-14 19:11:00下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《圖書(shū)管理系統(tǒng)課程設(shè)計(jì)摘要》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《圖書(shū)管理系統(tǒng)課程設(shè)計(jì)摘要》。

      第一篇:圖書(shū)管理系統(tǒng)課程設(shè)計(jì)摘要

      摘要

      摘要

      隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,電子信息化慢慢替代了企業(yè)管理的傳統(tǒng)管理手法,采用管理系統(tǒng)是能夠有效提高管理效率的。圖書(shū)館作為一種信息資源的集散地,圖書(shū)和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書(shū)館都是初步開(kāi)始使用,甚至尚未使用計(jì)算機(jī)進(jìn)行信息管理。圖書(shū)館若采取手工方式對(duì)圖書(shū)資料和圖書(shū)借閱情況進(jìn)行人工管理,由于資料繁多,手工處理的工作量大,整體管理效率低下,也不方便讀者對(duì)圖書(shū)資料的查閱。為了提高日常的圖書(shū)管理效率,本文針對(duì)通常的圖書(shū)管理流程,設(shè)計(jì)了一個(gè)面向?qū)ο髨D書(shū)管理系統(tǒng)。本系統(tǒng)中包含六個(gè)功能模塊:圖書(shū)館基本信息,借書(shū),還書(shū),讀

      者維護(hù),圖書(shū)維護(hù),管理員維護(hù)。

      summary

      With the rapid development of computer technology, electronic information technology gradually replaced the traditional management of enterprise management methods, management system, can effectively improve the efficiency of management.Library as a kind of information resource collection and distribution center, library and user lending data is various, contains a lot of information data management, today, there are a lot of libraries are preliminary started using, hasn't even use a computer for information management.If libraries adopt manual approach to artificial management books and materials and library, because the material is various, manual processing workload is big, the overall management efficiency is low, also not convenient to readers of books and materials inspection.In order to improve the efficiency of books management, this paper usually books management processes, an

      object-oriented books management system management system is designed.This system contains six modules: basic information, library books, and books, the reader maintenance, maintenance, administrators to maintain.1共30頁(yè)

      第二篇:圖書(shū)管理系統(tǒng)課程設(shè)計(jì)緒論

      緒論

      1.1 課題背景意義

      在學(xué)?,F(xiàn)代化的管理中,圖書(shū)館管理系統(tǒng)也是其中非常重要的一部分,然而,用大型軟件系統(tǒng)來(lái)于小型的圖書(shū)管理,不啻于“殺雞用牛刀”,因此小型的的軟件對(duì)于這種管理自然有十分重要作用。某圖書(shū)館需要管理其各種人員信息和圖書(shū)信息,希望實(shí)現(xiàn)辦公的信息化,通過(guò)建立一個(gè)圖書(shū)管理系統(tǒng)來(lái)管理圖書(shū)館。

      1.2國(guó)內(nèi)外研究的現(xiàn)狀

      國(guó)內(nèi)在信息化這一方面做的沒(méi)有國(guó)外好,因此現(xiàn)在需要大量這樣的程序人員,圖書(shū)館管理系統(tǒng)這一塊也需要做大量改進(jìn)。

      3共30頁(yè)

      第三篇:Oracle課程設(shè)計(jì) 圖書(shū)管理系統(tǒng)

      數(shù)據(jù)庫(kù)課程設(shè)計(jì)

      設(shè)計(jì)名稱:圖書(shū)管理系統(tǒng)

      組員:尚靖?jìng)ィ?22068)

      張紅凱(122072)班級(jí):計(jì)G121班

      信息工程學(xué)院計(jì)算機(jī)系

      2013年6月27日

      “Oracle數(shù)據(jù)庫(kù)應(yīng)用設(shè)計(jì)”指導(dǎo)書(shū)

      Oracle數(shù)據(jù)庫(kù)管理與設(shè)計(jì)

      目 錄

      目錄.........................................................................................................................I 前言.......................................................................................................................II 第1部分

      Oracle管理技術(shù)........................................................................................1

      實(shí)驗(yàn)1 實(shí)驗(yàn)2 實(shí)驗(yàn)3 實(shí)驗(yàn)4 實(shí)驗(yàn)5 實(shí)驗(yàn)6 實(shí)驗(yàn)7 實(shí)驗(yàn)8 第2部分

      數(shù)據(jù)庫(kù)管理................................................................................................................1 角色和用戶管理........................................................................................................6 表和視圖管理............................................................................................................8 索引和序列管理......................................................................................................12 PL/SQL編程...........................................................................................................14 使用游標(biāo)、存儲(chǔ)過(guò)程和觸發(fā)器..............................................................................22 表空間管理..............................................................................................................26 文件管理..................................................................................................................30

      Oracle開(kāi)發(fā)技術(shù)......................................................................................36

      I

      Oracle數(shù)據(jù)庫(kù)管理與設(shè)計(jì)

      前 言

      數(shù)據(jù)庫(kù)技術(shù)是計(jì)算機(jī)科學(xué)中發(fā)展最快的領(lǐng)域之一。隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,數(shù)據(jù)庫(kù)技術(shù)與網(wǎng)絡(luò)技術(shù)相結(jié)合,已經(jīng)廣泛應(yīng)用于工作和生活的各個(gè)領(lǐng)域。同時(shí),數(shù)據(jù)庫(kù)技術(shù)及其應(yīng)用已經(jīng)成為國(guó)內(nèi)外高校計(jì)算機(jī)專業(yè)和許多非計(jì)算機(jī)專業(yè)的必修或選修課程。

      Oracle是當(dāng)前最流行的大型關(guān)系數(shù)據(jù)庫(kù)之一,支持包括32位Windows、64位Windows、OS、HP-UX、AIX5L、Solaris和Linux等多種操作系統(tǒng),擁有廣泛的用戶和大量的應(yīng)用案例,已成為大型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的首選后臺(tái)數(shù)據(jù)庫(kù)系統(tǒng)。

      本實(shí)驗(yàn)課程要求學(xué)生全面了解Oracle數(shù)據(jù)庫(kù)的特點(diǎn)和功能。從安裝配置、安全性、可用性、互操作性、PL/SQL、可開(kāi)發(fā)性、商業(yè)智能等多個(gè)方面,對(duì)Oracle數(shù)據(jù)庫(kù)的各項(xiàng)技術(shù)進(jìn)行學(xué)習(xí)和實(shí)驗(yàn)。

      通過(guò)學(xué)習(xí)Oracle數(shù)據(jù)庫(kù)安裝、管理及開(kāi)發(fā),為今后從事Oracle數(shù)據(jù)庫(kù)管理和開(kāi)發(fā)工作打下良好的基礎(chǔ)。

      本實(shí)驗(yàn)課程共分2個(gè)部分。第1部分為Oracle的管理技術(shù),由實(shí)驗(yàn)1至實(shí)驗(yàn)8組成,內(nèi)容包括:(1)數(shù)據(jù)庫(kù)管理;(2)角色和用戶管理;(3)表和視圖管理;(4)索引和序列管理;(5)PL/SQL編程;(6)使用游標(biāo)、存儲(chǔ)過(guò)程和觸發(fā)器;(7)表空間;(8)文件管理。第2部分為Oracle開(kāi)發(fā)技術(shù),要求完成基于一定背景的管理信息系統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì),如學(xué)生信息管理系統(tǒng)、圖書(shū)管理系統(tǒng)、人事信息管理系統(tǒng)、網(wǎng)上購(gòu)物系統(tǒng)等。

      II

      第1部分 Oracle管理技術(shù)

      第1部分 Oracle管理技術(shù)

      實(shí)驗(yàn)1 數(shù)據(jù)庫(kù)管理

      目的和要求

      (1)了解Oracle數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu);(2)了解Oracle Enterprise Manager的使用情況;(3)學(xué)習(xí)關(guān)閉和啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例的方法;(4)學(xué)習(xí)使用SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)的方法;(5)學(xué)習(xí)使用SQL語(yǔ)句刪除數(shù)據(jù)庫(kù)的方法。

      實(shí)驗(yàn)準(zhǔn)備

      首先要了解Oracle數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu),包括方案(schema)對(duì)象、數(shù)據(jù)塊(data block)、區(qū)間(extent)、段(segment)和表空間(tablespace)等。數(shù)據(jù)庫(kù)由若干個(gè)表空間組成,表空間由表組成,段由區(qū)間組成,區(qū)間則由數(shù)據(jù)塊組成。Oracle數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)由構(gòu)成數(shù)據(jù)庫(kù)的操作系統(tǒng)文件所決定。每個(gè)Oracle數(shù)據(jù)庫(kù)都由3種類型的文件組成:數(shù)據(jù)文件、日志文件和控制文件。這些數(shù)據(jù)庫(kù)文件為數(shù)據(jù)庫(kù)信息提供真正的物理存儲(chǔ)。

      Enterprise Manager 9i是Oracle 9i提供的新的管理工具,簡(jiǎn)稱EM。使用它可以完成啟動(dòng)、關(guān)閉數(shù)據(jù)庫(kù),創(chuàng)建、刪除數(shù)據(jù)庫(kù)等功能。只有系統(tǒng)管理員或擁有CREATE DATABASE權(quán)限的用戶才能創(chuàng)建數(shù)據(jù)庫(kù)??梢栽贓nterprise Manager中通過(guò)圖形界面創(chuàng)建數(shù)據(jù)庫(kù),也可以使用CREATE DATABASE語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)。

      實(shí)驗(yàn)內(nèi)容

      本實(shí)驗(yàn)主要包括以下內(nèi)容。

      (1)練習(xí)使用不同方法啟動(dòng)和關(guān)閉數(shù)據(jù)庫(kù)實(shí)例。

      (2)練習(xí)使用不同方法創(chuàng)建和刪除數(shù)據(jù)庫(kù),要使操作的數(shù)據(jù)庫(kù)為用戶管理數(shù)據(jù)庫(kù)UserMan。

      1.使用SHUTDOWN命令關(guān)閉數(shù)據(jù)庫(kù)實(shí)例

      練習(xí)使用SHUTDOWN命令關(guān)閉數(shù)據(jù)庫(kù)實(shí)例,分別按以下方式啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例。

      (1)正常關(guān)閉。等待當(dāng)前所有已連接的用戶斷開(kāi)與數(shù)據(jù)庫(kù)的連接,然后關(guān)閉數(shù)據(jù)庫(kù)。正常關(guān)閉的語(yǔ)句如下:

      SHUTDOWN NORMAL

      (2)立即關(guān)閉?;赝嘶顒?dòng)事務(wù)處理并斷開(kāi)所有已連接的用戶,然后關(guān)閉數(shù)據(jù)庫(kù)。立即關(guān)閉的語(yǔ)句如下:

      SHUTDOWN IMMEDIATE

      第1部分 Oracle管理技術(shù)

      (3)事務(wù)處理關(guān)閉。完成事務(wù)處理后斷開(kāi)所有已連接的用戶,然后關(guān)閉數(shù)據(jù)庫(kù)。事務(wù)處理關(guān)閉的語(yǔ)句如下:

      SHUTDOWN TRANSACTIONAL

      (4)中止關(guān)閉。中止數(shù)據(jù)庫(kù)實(shí)例,立即關(guān)閉數(shù)據(jù)庫(kù)。中止關(guān)閉的語(yǔ)句如下:

      SHUTDOWN ABORT

      每次執(zhí)行SHUTDOWN語(yǔ)句關(guān)閉數(shù)據(jù)庫(kù)實(shí)例之前,請(qǐng)執(zhí)行STARTUP命令啟動(dòng)數(shù)據(jù)庫(kù)。2.使用STARTUP命令啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例

      練習(xí)使用STARTUP命令啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例,分別按以下方式啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例。(1)啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例時(shí)不裝載數(shù)據(jù)庫(kù)。執(zhí)行此操作的命令如下:

      STARTUP NOMOUNT

      (2)啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例,裝載數(shù)據(jù)庫(kù),但不打開(kāi)數(shù)據(jù)庫(kù)。通常在數(shù)據(jù)庫(kù)維護(hù)時(shí)執(zhí)行此操作,對(duì)應(yīng)的命令如下:

      STARTUP MOUNT

      (3)啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例,裝載數(shù)據(jù)庫(kù),打開(kāi)數(shù)據(jù)庫(kù)。執(zhí)行此操作的命令如下:

      STARTUP OPEN

      第1部分 Oracle管理技術(shù)

      (4)強(qiáng)制實(shí)例啟動(dòng)。在遇到特殊異常的情況時(shí),可以強(qiáng)制啟動(dòng)實(shí)例。強(qiáng)制啟動(dòng)實(shí)例的語(yǔ)句如下:

      STARTUP FORCE

      該語(yǔ)句將數(shù)據(jù)庫(kù)強(qiáng)行啟動(dòng)到OPEN模式。

      (5)啟動(dòng)后限制對(duì)數(shù)據(jù)庫(kù)實(shí)例的訪問(wèn)。執(zhí)行此操作的命令如下:

      STARTUP RESTRICT

      每次執(zhí)行STARTUP語(yǔ)句啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例之前,請(qǐng)執(zhí)行SHUTDOWN命令關(guān)閉數(shù)據(jù)庫(kù)。3.使用ORACLE Enterprise Manager關(guān)閉數(shù)據(jù)庫(kù)實(shí)例 按照下面的步驟關(guān)閉數(shù)據(jù)庫(kù)實(shí)例。

      (1)在數(shù)據(jù)庫(kù)處于打開(kāi)狀態(tài)時(shí),使用SYS用戶以SYSDBA身份登錄到Enterprise Manager。在主目錄頁(yè)面的“一般信息”欄目中,可以看到“關(guān)閉”按鈕。

      (2)單擊“關(guān)閉”按鈕,可以打開(kāi)“主機(jī)和目標(biāo)數(shù)據(jù)庫(kù)身份證明”頁(yè)面。用戶需要擁有管理員的權(quán)限才能關(guān)閉數(shù)據(jù)庫(kù)實(shí)例,包括主機(jī)操作系統(tǒng)的管理員和當(dāng)前數(shù)據(jù)庫(kù)實(shí)例的SYSDBA用戶。

      (3)輸入完成后,單擊“確定”按鈕,打開(kāi)“確認(rèn)關(guān)閉”頁(yè)面。

      (4)單擊“是”按鈕,開(kāi)始關(guān)閉數(shù)據(jù)庫(kù)。關(guān)閉操作完成后,單擊“刷新”按鈕,打開(kāi)“啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例”頁(yè)面。

      4.使用ORACLE Enterprise Manager啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例 按照下面的步驟啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例。

      第1部分 Oracle管理技術(shù)

      (1)使用SYS用戶以SYSDBA身份登錄到Enterprise Manager。

      (2)單擊“啟動(dòng)”按鈕,打開(kāi)“主機(jī)和目標(biāo)數(shù)據(jù)庫(kù)身份證明”頁(yè)面。用戶需要擁有管理員的權(quán)限才能啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例,包括主機(jī)操作系統(tǒng)的管理員和當(dāng)前數(shù)據(jù)庫(kù)實(shí)例的SYSDBA用戶。

      (3)輸入完成后,單擊“確定”按鈕,打開(kāi)“確認(rèn)打開(kāi)”頁(yè)面。(4)單擊“是”按鈕,開(kāi)始打開(kāi)數(shù)據(jù)庫(kù)。5.使用SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)

      按照如下條件創(chuàng)建數(shù)據(jù)庫(kù)OracleDB(以SYSDBA的用戶身份連接到數(shù)據(jù)庫(kù))。

      (1)設(shè)置SYS用戶的密碼為SYSPWD,設(shè)置SYSTEM用戶的密碼為SYSTEMPWD。(2)使用已有的控制文件。

      (3)指定日志文件組redo01.log,大小為100MB;指定日志文件組redo02.log,大小為100MB。設(shè)置最大的日志文件數(shù)量為10。

      (4)定義日志文件組中最大的日志文件數(shù)量為5。(5)定義最大的數(shù)據(jù)文件數(shù)量為100。(6)定義數(shù)據(jù)庫(kù)中最大的實(shí)例數(shù)量為1。(7)定義存儲(chǔ)數(shù)據(jù)的字符集為US7ASCII。

      (8)定義數(shù)據(jù)文件名稱為SYS01.dbf,初始大小為100MB。(9)定義默認(rèn)的表空間為tbs_1。(10)定義臨時(shí)表空間為tempts1。

      (11)定義臨時(shí)文件為temp01.dbf,大小為10MB。CREATE DATABASE語(yǔ)句實(shí)例:

      CREATE DATABASE OracleDB

      USER SYS IDENTIFIED BY bipt123

      USER SYSTEM IDENTIFIED BY bipt123

      CONTROLFILE REUSE MAXLOGFILES 10

      MAXLOGMEMBERS 5

      MAXDATAFILES 100

      MAXINSTANCES 1

      LOGFILE GROUP 1(‘E:redo01.log’)SIZE 100M ,GROUP 2(E:redo02.log’)SIZE 100M ,CHARACTER SET US7ASCII

      DATAFILE ‘E:sys01.dbf’ SIZE 100M REUSE

      EXTENT MANAGEMENT LOCAL

      DEFAULT TABLESPACE tbs_1

      DEFAULT TEMPORARY TABLESPACE tempts1

      TEMPFILE ‘E:temp01.dbf’ SIZE 10M REUSE;6.使用SQL語(yǔ)句刪除數(shù)據(jù)庫(kù)

      按照如下步驟刪除數(shù)據(jù)庫(kù)UserMan。

      (1)在刪除數(shù)據(jù)庫(kù)之前,需要用戶以SYSDBA或SYSOPER身份登錄,代碼如下:

      CONNECT SYS/SYSPWD AS SYSDBA;其中SYSPWD為SYS用戶的密碼,請(qǐng)根據(jù)實(shí)際情況輸入。(2)關(guān)閉數(shù)據(jù)庫(kù),再以MOUNT模式啟動(dòng)數(shù)據(jù)庫(kù),代碼如下:

      第1部分 Oracle管理技術(shù)

      SHUTDOWN IMMEDIATE;STARTUP MOUNT;(3)刪除數(shù)據(jù)庫(kù),代碼如下:

      DROP DATABASE;

      第1部分 Oracle管理技術(shù)

      實(shí)驗(yàn)2 角色和用戶管理

      目的和要求

      (1)了解Oracle數(shù)據(jù)庫(kù)用戶和角色的概念;(2)學(xué)習(xí)使用SQL語(yǔ)句創(chuàng)建Oracle用戶;(3)學(xué)習(xí)使用SQL語(yǔ)句創(chuàng)建Oracle角色;(4)學(xué)習(xí)使用SQL語(yǔ)句指定用戶的角色。

      實(shí)驗(yàn)準(zhǔn)備

      (1)了解Oracle數(shù)據(jù)庫(kù)用戶可以分為6種類型,即數(shù)據(jù)庫(kù)管理員、安全官員、網(wǎng)絡(luò)管理員、應(yīng)用程序開(kāi)發(fā)員、應(yīng)用程序管理員和數(shù)據(jù)庫(kù)用戶;

      (2)了解角色是對(duì)用戶的一種分類管理辦法,不同權(quán)限的用戶可以分為不同的角色;(3)了解使用CREATE ROLE語(yǔ)句創(chuàng)建角色的方法;(4)了解使用DROP ROLE語(yǔ)句刪除角色的方法;(5)了解使用GRANT語(yǔ)句指定用戶角色的方法;(5)了解使用CREATE USER語(yǔ)句創(chuàng)建用戶的方法;(4)了解使用DROP USER語(yǔ)句刪除用戶的方法。

      實(shí)驗(yàn)內(nèi)容

      本實(shí)驗(yàn)主要包括以下內(nèi)容。

      (1)練習(xí)使用SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)角色;

      (2)練習(xí)使用SQL語(yǔ)句為數(shù)據(jù)庫(kù)角色授予權(quán)限;(3)練習(xí)使用SQL語(yǔ)句指定用戶角色;(4)練習(xí)使用SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)用戶。

      1.使用SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)角色

      參照下面的步驟練習(xí)使用CREATE ROLE語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)角色。(1)以SYSTEM用戶登錄到SQL*PLUS。

      (2)使用CREATE ROLE語(yǔ)句創(chuàng)建角色UserManRole,密碼為myrolepwd,代碼如下:

      CREATE ROLE UserManRole IDENTIFIED BY myrolepwd;

      2.使用SQL語(yǔ)句為數(shù)據(jù)庫(kù)角色授權(quán)

      參照下面的步驟練習(xí)使用GRANT語(yǔ)句為數(shù)據(jù)庫(kù)角色授權(quán)。(1)以SYSTEM用戶登錄到SQL*PLUS。

      第1部分 Oracle管理技術(shù)

      (2)使用GRANT語(yǔ)句將角色UserManRole授予CONNECT和RESOURCE權(quán)限,代碼如下:

      --設(shè)置角色權(quán)限

      GRANT CONNECT TO UserManRole;GRANT RESOURCE TO UserManRole;

      3.使用SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)用戶

      參照下面的步驟練習(xí)使用CREATE USER語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)用戶。(1)以SYSTEM用戶登錄到SQL*PLUS。

      (2)使用CREATE USER語(yǔ)句創(chuàng)建用戶UserManAdmin,密碼為UserPwd,代碼如下:

      CREATE USER UserManAdmin IDENTIFIED BY UserPwd

      DEFAULT TABLESPACE USERS

      TEMPORARY TABLESPACE TEMP;

      (3)使用GRANT語(yǔ)句對(duì)用戶UserManAdmin授予系統(tǒng)權(quán)限UNLIMITED TABLESPACE,代碼如下:

      --設(shè)置系統(tǒng)權(quán)限

      GRANT UNLIMITED TABLESPACE TO UserManAdmin;

      4.使用SQL語(yǔ)句指定用戶角色

      參照下面的步驟將用戶UserMan指定為角色UserManRole。(1)以SYSTEM用戶登錄到SQL*PLUS。

      (2)使用GRANT語(yǔ)句將用戶UserMan指定為角色UserManRole,代碼如下:

      GRANT UserManRole TO UserManAdmin;

      第1部分 Oracle管理技術(shù)

      實(shí)驗(yàn)3 表和視圖管理

      目的和要求

      (1)了解Oracle表和視圖的概念;(2)學(xué)習(xí)使用SQL語(yǔ)句創(chuàng)建表;

      (3)學(xué)習(xí)使用SELECT語(yǔ)句查詢數(shù)據(jù);(4)學(xué)習(xí)使用SQL語(yǔ)句創(chuàng)建視圖。

      實(shí)驗(yàn)準(zhǔn)備

      (1)了解表是數(shù)據(jù)庫(kù)中最常用的數(shù)據(jù)存儲(chǔ)單元,它包括所有用戶可以訪問(wèn)的數(shù)據(jù)。作為關(guān)系型數(shù)據(jù)庫(kù),Oracle表由行和列組成。

      (2)視圖是一個(gè)虛擬的表,它在物理上并不存在。視圖可以把表或其它視圖的數(shù)據(jù)按照一定的條件組合起來(lái),所以也可以把它看成是一個(gè)存儲(chǔ)的查詢。視圖并不包含數(shù)據(jù),它只是從基表中讀取數(shù)據(jù)。

      (3)了解使用CREATE TABLE語(yǔ)句創(chuàng)建表的方法。(4)了解使用SELECT語(yǔ)句查詢數(shù)據(jù)的方法。(5)了解使用SQL語(yǔ)句創(chuàng)建視圖的方法。

      實(shí)驗(yàn)內(nèi)容

      本實(shí)驗(yàn)主要包括以下內(nèi)容。

      (1)練習(xí)使用SQL語(yǔ)句創(chuàng)建表;

      (2)練習(xí)使用SQL語(yǔ)句向表中插入數(shù)據(jù);(3)練習(xí)使用SQL語(yǔ)句修改表中的數(shù)據(jù);(4)練習(xí)使用SQL語(yǔ)句刪除表中的數(shù)據(jù);(5)練習(xí)使用SELECT語(yǔ)句查詢數(shù)據(jù);(6)練習(xí)使用SQL語(yǔ)句創(chuàng)建視圖。

      1.使用SQL語(yǔ)句創(chuàng)建表

      使用CREATE TABLE語(yǔ)句創(chuàng)建用戶信息表Users,結(jié)構(gòu)如表1所示。

      表1 表Users的結(jié)構(gòu)

      號(hào) 1 2 3 4 字段名稱 UserId UserName UserType UserPwd

      數(shù)據(jù)結(jié)構(gòu) NUMBER VARCHAR2 40 NUMBER 1 VARCHAR2 40

      用戶編號(hào) 用戶名

      用戶類型(1 管理員用戶,2 普通用戶)

      說(shuō)

      參照下面的步驟練習(xí)使用CREATE TABLE語(yǔ)句創(chuàng)建表Users。

      (1)以實(shí)驗(yàn)2中創(chuàng)建的UserManAdmin用戶登錄到SQL*PLUS。(2)使用CREATE TABLE語(yǔ)句創(chuàng)建表Users,代碼如下:

      CREATE TABLE UserManAdmin.Users(UserId

      UserName UserType

      Number Primary Key, Varchar2(40)NOT NULL, Number(1),第1部分 Oracle管理技術(shù)

      UserPwd);Varchar2(40)使用CREATE TABLE語(yǔ)句創(chuàng)建用戶登錄信息表LoginInfo,結(jié)構(gòu)如表2所示。

      表2 表LoginInfo的結(jié)構(gòu)

      號(hào) 1 2

      字段名稱 UserId LoginTime

      數(shù)據(jù)結(jié)構(gòu) NUMBER CHAR(20)

      說(shuō)

      明 用戶編號(hào) 登錄時(shí)間

      參照下面的步驟練習(xí)使用CREATE TABLE語(yǔ)句創(chuàng)建表LoginInfo。(1)以實(shí)驗(yàn)2中創(chuàng)建的UserManAdmin用戶登錄到SQL*PLUS。(2)使用CREATE TABLE語(yǔ)句創(chuàng)建表LoginInfo,代碼如下:

      CREATE TABLE UserManAdmin.LoginInfo(UserId

      LoginTime);Number, CHAR(20)NOT NULL 2.使用SQL語(yǔ)句向表中插入數(shù)據(jù)

      使用INSERT語(yǔ)句向表Users中插入用戶數(shù)據(jù),內(nèi)容如表3所示。

      表3 表Users中的數(shù)據(jù)

      UserId 1 2 3 4

      UserName Admin User Zhangsan Lisi

      UserType 2 2 2

      UserPwd AdminPwd UserPwd ZhangsanPwd LisiPwd 參照下面的步驟練習(xí)使用INSERT語(yǔ)句向表Users中插入數(shù)據(jù)。(1)以實(shí)驗(yàn)2中創(chuàng)建的UserManAdmin用戶登錄到SQL*PLUS。(2)使用INSERT語(yǔ)句向表Users中插入數(shù)據(jù),代碼如下:

      INSERT INTO UserManAdmin.Users VALUES(1, ‘Admin’, 1, ‘AdminPwd’);INSERT INTO UserManAdmin.Users VALUES(2, ‘User’, 2, ‘UserPwd’);INSERT INTO UserManAdmin.Users VALUES(3, ‘Zhangsan’, 2, ‘ZhangsanPwd’);INSERT INTO UserManAdmin.Users VALUES(4, ‘Lisi’, 2, ‘LisiPwd’);COMMIT;使用INSERT語(yǔ)句向表LoginInfo中插入數(shù)據(jù)。內(nèi)容如表4所示。參照下面的步驟練習(xí)使用INSERT語(yǔ)句向表LoginInfo中插入數(shù)據(jù)。(1)以實(shí)驗(yàn)2中創(chuàng)建的UserManAdmin用戶登錄到SQL*PLUS。(2)使用INSERT語(yǔ)句向表LoginInfo中插入數(shù)據(jù),代碼如下:

      INSERT INTO UserManAdmin.LoginInfo VALUES(1, ‘2012-5-15 10:33:02’);INSERT INTO UserManAdmin.LoginInfo VALUES(1, ‘2012-5-16 08:34:13’);INSERT INTO UserManAdmin.LoginInfo VALUES(1, ‘2012-5-17 09:13:11’);INSERT INTO UserManAdmin.LoginInfo VALUES(2, ‘2012-5-15 07:35:02’);INSERT INTO UserManAdmin.LoginInfo VALUES(2, ‘2012-5-16 08:11:54’);INSERT INTO UserManAdmin.LoginInfo VALUES(2, ‘2012-5-17 09:13:11’);INSERT INTO UserManAdmin.LoginInfo VALUES(3, ‘2012-5-15 08:34:02’);INSERT INTO UserManAdmin.LoginInfo VALUES(3, ‘2012-5-16 09:34:13’);

      第1部分 Oracle管理技術(shù)

      INSERT INTO UserManAdmin.LoginInfo VALUES(3, ‘2012-5-17 10:13:09’);INSERT INTO UserManAdmin.LoginInfo VALUES(4, ‘2012-5-15 11:34:02’);INSERT INTO UserManAdmin.LoginInfo VALUES(4, ‘2012-5-16 13:34:13’);INSERT INTO UserManAdmin.LoginInfo VALUES(4, ‘2012-5-17 15:13:12’);COMMIT;

      表4 表LoginInfo中的數(shù)據(jù)

      UserId 1 1 1 2 2 2 3 3 3 4 4 4

      LoginTime 2012-5-15 10:33:02 2012-5-16 08:34:13 2012-5-17 09:13:11 2012-5-15 07:35:02 2012-5-16 08:11:54 2012-5-17 09:13:11 2012-5-15 08:34:02 2012-5-16 09:34:13 2012-5-17 10:13:09 2012-5-15 11:34:02 2012-5-16 13:34:13 2012-5-17 15:13:12 3.使用SQL語(yǔ)句修改表中的數(shù)據(jù)

      使用UPDATE語(yǔ)句可以修改表Users中的數(shù)據(jù)。參照下面的步驟練習(xí)將表Users中Admin用戶的密碼修改為AdminPassword。

      (1)以SYSTEM用戶登錄到SQL*PLUS。

      (2)使用UPDATE語(yǔ)句將表Users中Admin用戶的密碼修改為AdminPassword,代碼如下:

      UPDATE UserManAdmin.Users SET UserPwd=‘AdminPassword’ WHERE UserName=‘Admin’

      (3)使用SELECT語(yǔ)句查看用戶Admin的密碼,代碼如下:

      SELECT UserPwd FROM UserManAdmin.Users WHERE UserName=‘Admin’

      修改表

      ALTER TABLE USERMANADMIN.LOGININFO MODIFY(LOGINTIME DATE)4.使用SQL語(yǔ)句刪除表中的數(shù)據(jù)

      使用DELETE語(yǔ)句可以刪除表Users中的數(shù)據(jù)。參照下面的步驟練習(xí)將表Users中Zhansan用戶的記錄刪除。

      (1)以SYSTEM用戶登錄到SQL*PLUS。

      (2)使用DELETE語(yǔ)句將表Users中Zhangsan用戶的記錄刪除,代碼如下:

      DELETE FROM UserManAdmin.Users WHERE UserName=‘Zhangsan’

      (3)使用SELECT語(yǔ)句查看表Users中的數(shù)據(jù),確認(rèn)用戶Zhangsan的記錄是否被刪除,代碼如下:

      SELECT * FROM UserManAdmin.Users 5.使用SELECT語(yǔ)句查詢數(shù)據(jù)

      使用SELECT語(yǔ)句查詢數(shù)據(jù)庫(kù)中的用戶數(shù)據(jù),分別按以下方式查詢數(shù)據(jù)庫(kù)。

      第1部分 Oracle管理技術(shù)

      (1)查詢表Users中的所有數(shù)據(jù)。

      以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:

      SELECT * FROM UserManAdmin.Users *代表UserManAdmin.Users中的所有字段。(2)在返回結(jié)果中使用自定義標(biāo)題。

      以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:

      SELECT UserName AS 用戶名, UserPwd AS 密碼 FROM UserManAdmin.Users(3)設(shè)置查詢條件。

      查詢所有普通用戶的信息。以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:

      SELECT * FROM UserManAdmin.Users WHERE UserType=2 查詢用戶Admin的密碼信息。以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:

      SELECT UserPwd FROM UserManAdmin.Users WHERE UserName=‘Admin’

      (4)對(duì)查詢結(jié)果進(jìn)行排序。

      查詢所有普通用戶的信息,并按用戶名的降序排列結(jié)果集。以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:

      SELECT * FROM UserManAdmin.Users ORDER BY UserName DESC(5)對(duì)記錄進(jìn)行統(tǒng)計(jì)。

      統(tǒng)計(jì)表Users中共有多少個(gè)用戶記錄。以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:

      SELECT COUNT(*)FROM UserManAdmin.Users(6)實(shí)現(xiàn)連接查詢。

      查看每個(gè)用戶的登錄記錄。以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:

      SELECT u.UserName, 1.LoginTime FROM Users u INNER JOIN LoginInfo 1 ON u.UserId=1.UserID 在上面的SELECT語(yǔ)句中涉及兩個(gè)表:表Users和表LoginInfo。在FROM子句中,為每個(gè)表指定一個(gè)別名,表Users的別名為u,表LoginInfo的別名為1。

      6.使用SQL語(yǔ)句創(chuàng)建視圖

      使用CREATE VIEW語(yǔ)句創(chuàng)建用戶登錄信息表UserLogin,代碼如下:

      CREATE VIEW UserLogin AS SELECT u.UserName,l.LoginTime

      FROM

      UserManAdmin.Users

      u

      INNER

      JOIN UserManAdmin.LoginInfo l ON u.UserId=l.UserID;

      SELECT * FROM UserLogin;

      第1部分 Oracle管理技術(shù)

      實(shí)驗(yàn)4 索引和序列管理

      目的和要求

      (1)了解索引的概念和作用;(2)了解序列的概念和作用;

      (3)學(xué)習(xí)使用SQL語(yǔ)句創(chuàng)建索引;(4)學(xué)習(xí)使用SQL語(yǔ)句創(chuàng)建序列。

      實(shí)驗(yàn)準(zhǔn)備

      (1)了解索引是對(duì)數(shù)據(jù)庫(kù)表中一個(gè)或多個(gè)列的值進(jìn)行排序的結(jié)構(gòu)??梢岳盟饕焖僭L問(wèn)數(shù)據(jù)庫(kù)表中的特定信息。

      (2)了解序列號(hào)是一個(gè)Oracle整數(shù),最多可有38個(gè)數(shù)字。序列的作用是自動(dòng)生成整型數(shù)值,作為表中標(biāo)識(shí)字段的值。有許多表在創(chuàng)建時(shí)定義了一個(gè)標(biāo)識(shí)字段,此字段的值需要由系統(tǒng)自動(dòng)生成,每當(dāng)插入一條新記錄時(shí),此字段的值自動(dòng)加1。在Oracle中,這個(gè)功能由序列來(lái)實(shí)現(xiàn)。

      (3)了解使用CREATE INDEX語(yǔ)句創(chuàng)建索引的方法。

      (4)了解使用CREATE SEQUENCE語(yǔ)句創(chuàng)建序列的方法。

      實(shí)驗(yàn)內(nèi)容

      本實(shí)驗(yàn)主要包括以下內(nèi)容。

      (1)練習(xí)使用SQL語(yǔ)句創(chuàng)建索引;(2)練習(xí)使用SQL語(yǔ)句創(chuàng)建序列;

      1.使用SQL語(yǔ)句創(chuàng)建索引

      使用CREATE INDEX語(yǔ)句在Users表的UserName字段上創(chuàng)建索引。代碼如下:

      CREATE INDEX index_username ON UserManAdmin.Users(UserName)TABLESPACE Users;

      2.在創(chuàng)建表的同時(shí)創(chuàng)建索引

      在使用CREATE TABLE語(yǔ)句創(chuàng)建表的同時(shí),可以為指定字段創(chuàng)建索引。創(chuàng)建表Employees,在字段EmpName上創(chuàng)建索引。表Employees的結(jié)構(gòu)如表5所示。

      表5 表Employees的結(jié)構(gòu)

      號(hào) 1 2 3 4

      字段名稱 EmpId EmpName Sex UserId

      數(shù)據(jù)結(jié)構(gòu) NUMBER VARCHAR2(50)CHAR(2)NUMBER

      說(shuō)

      明 編號(hào) 姓名 性別 用戶編號(hào)

      代碼如下:

      CREATE TABLE UserManAdmin.Employees(EmpId

      EmpName Sex

      Number, VARCHAR2(50)UNIQUE, CHAR(2),第1部分 Oracle管理技術(shù)

      UserId);Number 3.使用SQL語(yǔ)句創(chuàng)建序列

      使用CREATE SEQUENCE語(yǔ)句創(chuàng)建序列。序列的最小值為1,并且沒(méi)有最大值限制。序列的初始值為1,序列間隔為1。代碼如下:

      CREATE SEQUENCE EMP_S MINVALUE 1 NOMAXVALUE START WITH 1 INCREMENT BY 1 NOCYCLE CACHE 20;2.在插入數(shù)據(jù)時(shí)使用序列

      在使用INSERT語(yǔ)句向表Employees中插入數(shù)據(jù)時(shí),可以使用序列EMP_S生成字段EmpId的值,代碼如下:

      INSERT INTO UserManAdmin.Employees(EmpId, EmpName)VALUES(EMP_S.NEXTVAL, ‘Employee1’);INSERT INTO UserManAdmin.Employees(EmpId, EmpName)VALUES(EMP_S.NEXTVAL, ‘Employee2’);INSERT INTO UserManAdmin.Employees(EmpId, EmpName)VALUES(EMP_S.NEXTVAL, ‘Employee3’);COMMIT;SELECT * FROM UserManAdmin.Employees

      第1部分 Oracle管理技術(shù)

      實(shí)驗(yàn)5 PL/SQL編程

      目的和要求

      (1)了解PL/SQL語(yǔ)言的結(jié)構(gòu);

      (2)了解PL/SQL變量和常量的聲明和使用方法;(3)學(xué)習(xí)條件語(yǔ)句的使用方法;(4)學(xué)習(xí)分支語(yǔ)句的使用方法;(5)學(xué)習(xí)循環(huán)語(yǔ)句的使用方法;(6)學(xué)習(xí)使用Oracle系統(tǒng)函數(shù)。

      實(shí)驗(yàn)準(zhǔn)備

      首先要了解PL/SQL語(yǔ)言是結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言。塊(Block)是PL/SQL程序中最基本的結(jié)構(gòu),所有PL/SQL程序都是由塊組成的。PL/SQL的塊由變量聲明、程序代碼和異常處理代碼3部分組成。在PL/SQL中,常量和變量在使用前必須聲明,可以使用DECLARE對(duì)變量進(jìn)行聲明。

      實(shí)驗(yàn)內(nèi)容

      本實(shí)驗(yàn)主要包括以下內(nèi)容。

      (1)練習(xí)條件語(yǔ)句的使用方法;(2)練習(xí)分支語(yǔ)句的使用方法;(3)練習(xí)循環(huán)語(yǔ)句的使用方法;(4)練習(xí)使用Oracle系統(tǒng)函數(shù)。

      1.使用條件語(yǔ)句

      參照下面的步驟練習(xí)使用條件語(yǔ)句。

      (1)以SYSTEM用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序,觀察結(jié)果。

      SET ServerOutput ON;DECLARE

      Num INTEGER :=-11;BEGIN

      IF Num < 0 THEN

      dbms_output.put_line(‘負(fù)數(shù)’);

      ELSIF Num > 0 THEN

      dbms_output.put_line(‘正數(shù)’);

      ELSE

      dbms_output.put_line(‘0’);

      END IF;END;

      第1部分 Oracle管理技術(shù)

      2.使用分支語(yǔ)句

      參照下面的步驟練習(xí)使用分支語(yǔ)句。

      (1)以SYSTEM用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序,觀察結(jié)果。

      SET ServerOutput ON;DECLARE

      varDAY INTEGER := 3;

      Result VARCHAR(20);BEGIN

      Result := CASE varDAY

      WHEN 1 THEN ‘星期一’

      WHEN 2 THEN ‘星期二’

      WHEN 3 THEN ‘星期三’

      WHEN 4 THEN ‘星期四’

      WHEN 5 THEN ‘星期五’

      WHEN 6 THEN ‘星期六’

      WHEN 7 THEN ‘星期日’

      ELSE ‘?dāng)?shù)據(jù)越界’

      END;

      dbms_output.put_line(Result);END;

      第1部分 Oracle管理技術(shù)

      3.使用循環(huán)語(yǔ)句

      LOOP…EXIT…END語(yǔ)句:此語(yǔ)句的功能是重復(fù)執(zhí)行循環(huán)體中的程序塊,直到執(zhí)行EXIT語(yǔ)句,退出循環(huán)。

      LOOP…EXIT WHEN…END:此語(yǔ)句的功能是重復(fù)執(zhí)行循環(huán)體中的程序塊,直到滿足EXIT WHEN后面的判斷語(yǔ)句時(shí),退出循環(huán)。

      WHILE…LOOP…END LOOP語(yǔ)句:此語(yǔ)句的功能是當(dāng)WHILE后面的條件語(yǔ)句成立時(shí),重復(fù)執(zhí)行循環(huán)體中的程序塊。

      參照下面的步驟練習(xí)使用循環(huán)語(yǔ)句。

      (1)以SYSTEM用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序,觀察結(jié)果。

      程序一:

      SET ServerOutput ON;DECLARE

      v_Num INTEGER := 1;

      v_Sum INTEGER := 0;BEGIN

      LOOP

      v_Sum := v_Sum + v_Num;

      dbms_output.put_line(v_Num);

      IF v_Num = 3 THEN

      EXIT;

      END IF;

      dbms_output.put_line(‘+’);

      v_Num := v_Num + 1;

      END LOOP;

      dbms_output.put_line(‘=’);

      dbms_output.put_line(v_Sum);END;

      程序二:

      SET ServerOutput ON;DECLARE

      v_Num INTEGER := 1;

      v_Sum INTEGER := 0;BEGIN

      LOOP

      v_Sum := v_Sum + v_Num;

      第1部分 Oracle管理技術(shù)

      dbms_output.put_line(v_Num);

      EXIT WHEN v_Num = 3;

      dbms_output.put_line(‘+’);

      v_Num := v_Num + 1;

      END LOOP;

      dbms_output.put_line(‘=’);

      dbms_output.put_line(v_Sum);END;

      程序三:

      SET ServerOutput ON;DECLARE

      v_Num INTEGER := 1;

      v_Sum INTEGER := 0;BEGIN

      WHILE v_Num <=3

      LOOP

      v_Sum := v_Sum + v_Num;

      dbms_output.put_line(v_Num);

      IF v_Num < 3 THEN

      dbms_output.put_line(‘+’);

      END IF;

      v_Num := v_Num + 1;

      END LOOP;

      dbms_output.put_line(‘=’);

      dbms_output.put_line(v_Sum);END;

      第1部分 Oracle管理技術(shù)

      4.使用系統(tǒng)函數(shù)(1)數(shù)值型函數(shù)

      ·ABS:返回給定數(shù)字表達(dá)式的絕對(duì)值。

      ·CEIL:返回大于或等于所給數(shù)字表達(dá)式的最小整數(shù)?!LOOR:返回小于或等于所給數(shù)字表達(dá)式的最大整數(shù)。·POWER:返回給定表達(dá)式指定次方的值。

      ·ROUND:返回?cái)?shù)字表達(dá)式并四舍五入為指定的長(zhǎng)度或精度。(2)字符型函數(shù)

      ·ASCII:返回字符表達(dá)式最左端字符的ASCII代碼值?!ENGTH:返回給定字符串表達(dá)式的字符(而不是字節(jié))個(gè)數(shù),其中不包含尾隨空格。·UPPER:返回將小寫(xiě)字符數(shù)據(jù)轉(zhuǎn)換為大寫(xiě)的字符表達(dá)式。(3)日期型函數(shù)

      ·SYSDATE:返回當(dāng)前日期和時(shí)間?!O_CHAR:轉(zhuǎn)換日期為字符串。

      ·LAST_DAY:返回指定日期所在月份的最后一天的日期。這個(gè)函數(shù)可以被用來(lái)確定當(dāng)前月中還剩下多少天。

      ·MONTHS_BETWEEN:返回兩個(gè)日期之間月的數(shù)目。(4)統(tǒng)計(jì)函數(shù)

      ·COUNT:返回組中項(xiàng)目的數(shù)量?!AX:返回表達(dá)式的最大值?!IN:返回表達(dá)式的最小值。

      參照下面的步驟練習(xí)使用系統(tǒng)函數(shù)。

      (1)以SYSTEM用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序,觀察結(jié)果。

      程序一:

      SET ServerOutput ON;BEGIN

      dbms_output.put_line(ABS(-4));END;

      程序二:

      SET ServerOutput ON;BEGIN

      dbms_output.put_line(CEIL(116.24));

      dbms_output.put_line(CEIL(-112.75));

      dbms_output.put_line(CEIL(0));END;

      第1部分 Oracle管理技術(shù)

      程序三:

      SET ServerOutput ON;BEGIN

      dbms_output.put_line(FLOOR(116.24));

      dbms_output.put_line(FLOOR(-112.75));

      dbms_output.put_line(FLOOR(0));END;

      程序四:

      SET ServerOutput ON;BEGIN

      dbms_output.put_line(POWER(15, 4));END;

      程序五:

      SET ServerOutput ON;BEGIN

      dbms_output.put_line(ROUND(123.456, 2));

      dbms_output.put_line(ROUND(123.456, 1));

      dbms_output.put_line(ROUND(123.456, 0));

      dbms_output.put_line(ROUND(123.456,-1));

      dbms_output.put_line(ROUND(123.456,-2));

      dbms_output.put_line(ROUND(123.456,-3));END;

      程序六:

      SET ServerOutput ON;BEGIN

      dbms_output.put_line(ASCII(‘ABC’));END;

      第1部分 Oracle管理技術(shù)

      程序七:

      SELECT UserName, LENGTH(UserName)FROM UserManAdmin.Users WHERE UserType = 1;程序八:

      SET ServerOutput ON;BEGIN

      dbms_output.put_line(UPPER(‘a(chǎn)bc’));END;

      程序九:

      SET ServerOutput ON;BEGIN

      dbms_output.put_line(SYSDATE);END;

      程序十:

      SET ServerOutput ON;BEGIN

      dbms_output.put_line(TO_CHAR(SYSDATE));END;

      程序十一:

      SET ServerOutput ON;BEGIN

      dbms_output.put_line(LAST_DAY(SYSDATE));END;

      第1部分 Oracle管理技術(shù)

      程序十二:

      SET ServerOutput ON;DECLARE

      date1 VARCHAR(20):= ‘2010-05-17’;

      date2 VARCHAR(20):= ‘2010-10-17’;BEGIN

      dbms_output.put_line(END;

      MONTHS_BETWEEN(TO_DATE(date2,‘yyyy-mm-dd’), TO_DATE(date1, ‘yyyy-mm-dd’)));

      程序十三:

      SELECT COUNT(UserName)FROM UserManAdmin.Users;

      程序十四:

      SELECT MAX(UserId)FROM UserManAdmin.Users;

      程序十五:

      SELECT MIN(UserId)FROM UserManAdmin.Users;

      第1部分 Oracle管理技術(shù)

      實(shí)驗(yàn)6 使用游標(biāo)、存儲(chǔ)過(guò)程和觸發(fā)器

      目的和要求

      (1)了解游標(biāo)的概念和工作原理;(2)了解存儲(chǔ)過(guò)程的分類和使用方法;(3)了解觸發(fā)器的概念;

      (4)學(xué)習(xí)編寫(xiě)和執(zhí)行自定義過(guò)程;(5)學(xué)習(xí)編寫(xiě)和執(zhí)行自定義函數(shù);(6)學(xué)習(xí)創(chuàng)建和使用觸發(fā)器。

      實(shí)驗(yàn)準(zhǔn)備

      首先要了解游標(biāo)是映射在結(jié)果集中一行數(shù)據(jù)上的位置實(shí)體,有了游標(biāo),用戶就可以訪問(wèn)結(jié)果集中的任意一行數(shù)據(jù)了。將游標(biāo)放置到某行后,即可對(duì)該行數(shù)據(jù)進(jìn)行操作,最常見(jiàn)的操作是提取當(dāng)前行數(shù)據(jù)。

      了解PL/SQL包括3種存儲(chǔ)過(guò)程,即過(guò)程、函數(shù)和程序包。

      了解觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程,當(dāng)指定表中的數(shù)據(jù)發(fā)生變化時(shí)自動(dòng)運(yùn)行。

      實(shí)驗(yàn)內(nèi)容

      本實(shí)驗(yàn)主要包括以下內(nèi)容。

      (1)練習(xí)創(chuàng)建和使用游標(biāo)的方法;

      (2)練習(xí)編寫(xiě)和執(zhí)行自定義過(guò)程的方法;(3)練習(xí)編寫(xiě)和執(zhí)行自定義函數(shù)的方法;(4)練習(xí)創(chuàng)建和使用觸發(fā)器的方法。

      1.創(chuàng)建和使用游標(biāo)

      創(chuàng)建游標(biāo)MyCursor,從表LoginInfo中讀取指定用戶的登錄信息,操作步驟如下:(1)以UserManAdmin用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序:

      /*打開(kāi)顯示模式*/ SET ServerOutput ON;DECLARE

      CURSOR Mycursor(varUserName VARCHAR2)IS

      SELECT u.UserName,l.LoginTime

      FROM

      UserManAdmin.Users

      u, UserManAdmin.LoginInfo l

      WHERE u.UserId =l.UserId;BEGIN

      FOR var_LoginRecord IN MyCursor(‘Admin’)LOOP

      dbms_output.put_line(‘用戶名:’ || var_LoginRecord.UserName || ‘, 登錄時(shí)間:’ || var_LoginRecord.LoginTime);

      END LOOP;END;

      第1部分 Oracle管理技術(shù)

      2.編寫(xiě)和執(zhí)行自定義過(guò)程

      參照下面的步驟練習(xí)編寫(xiě)和執(zhí)行自定義過(guò)程:(1)以UserManAdmin用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序,觀察結(jié)果。

      /*創(chuàng)建示例過(guò)程ResetPwd,此過(guò)程的功能是將表User中指定用戶的密碼重置為111111*/ CREATE OR REPLACE PROCEDURE UserManAdmin.ResetPwd(u_UserId IN NUMBER)AS BEGIN UPDATE UserManAdmin.Users SET UserPwd = ‘111111’ WHERE UserId = u_UserId;END;

      /*使用EXEXUTE命令可以調(diào)用過(guò)程。如,要將編號(hào)為1(用戶Admin)的用戶密碼重置*/ EXECUTE UserManAdmin.ResetPwd(1);SELECT UserName, UserPwd FROM Users;

      第1部分 Oracle管理技術(shù)

      /*使用DROP PROCEDURE命令可以刪除過(guò)程*/ DROP PROCEDURE UserManAdmin.ResetPwd;

      3.編寫(xiě)和執(zhí)行自定義函數(shù)

      參照下面的步驟練習(xí)編寫(xiě)和執(zhí)行自定義函數(shù)GetLastLogin,獲取指定用戶最后一次登錄的時(shí)間。

      (1)以SYSTEM用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序:

      CREATE OR REPLACE FUNCTION GetLastLogin(n_name IN UserManAdmin.Users.UserName%Type)RETURN UserManAdmin.LoginInfo.LoginTime%Type AS outTime UserManAdmin.LoginInfo.LoginTime%Type;BEGIN

      SELECT MAX(l.LoginTime)INTO outTime FROM UserManAdmin.Users u join UserManAdmin.LoginInfo l on u.UserId = l.UserId

      WHERE u.UserName = ‘’|| n_name ||’’

      ORDER BY l.LoginTime DESC;

      RETURN outTime;END;

      4.創(chuàng)建和使用觸發(fā)器

      參照下面的步驟創(chuàng)建一個(gè)觸發(fā)器MyTrigger,它的作用是當(dāng)表Users中的記錄被刪除后,自動(dòng)刪除表LoginInfo中對(duì)應(yīng)的用戶登錄記錄,從而保證數(shù)據(jù)的完整性。

      (1)以SYSTEM用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序,觀察結(jié)果。

      CREATE OR REPLACE TRIGGER UserManAdmin.MyTrigger AFTER DELETE ON UserManAdmin.Users FOR EACH ROW BEGIN

      DELETE FROM UserManAdmin.LoginInfo WHERE UserId = :old.UserId;END;

      第1部分 Oracle管理技術(shù)

      (3)執(zhí)行下面的語(yǔ)句,觀察刪除用戶Users后,在表LoginInfo中是否還存在其登錄的記錄。

      DELETE FROM UserManAdmin.Users WHERE UserName =’User’;

      SELECT * FROM UserManAdmin.LoginInfo

      第1部分 Oracle管理技術(shù)

      實(shí)驗(yàn)7 表空間管理

      目的和要求

      (1)了解表空間的概念和工作原理;

      (2)學(xué)習(xí)創(chuàng)建、修改、查詢和刪除用戶表空間;

      (3)學(xué)習(xí)創(chuàng)建、修改、查詢、切換和刪除撤銷表空間。

      實(shí)驗(yàn)準(zhǔn)備

      首先要了解表空間是Oracle數(shù)據(jù)庫(kù)最高層次的邏輯存儲(chǔ)結(jié)構(gòu),其中保存著由段、區(qū)和塊等邏輯存儲(chǔ)結(jié)構(gòu)描述的各種模式對(duì)象。

      Oracle表空間分為系統(tǒng)表空間、臨時(shí)表空間、撤銷表空間和用戶表空間4種類型。用戶表空間主要用來(lái)保存用戶數(shù)據(jù),其包含的數(shù)據(jù)文件稱為用戶數(shù)據(jù)文件,是DBA管理的主要表空間。

      保存撤銷記錄的存儲(chǔ)空間是撤銷表空間。利用撤銷表空間可以實(shí)現(xiàn)撤銷事務(wù)、數(shù)據(jù)庫(kù)恢復(fù)和數(shù)據(jù)的讀一致性等功能。

      實(shí)驗(yàn)內(nèi)容

      本實(shí)驗(yàn)主要包括以下內(nèi)容。

      (1)練習(xí)創(chuàng)建和使用用戶表空間的方法;(2)練習(xí)創(chuàng)建和使用撤銷表空間的方法。

      1.創(chuàng)建本地管理方式的用戶表空間

      為Oracle數(shù)據(jù)庫(kù)新建一個(gè)用戶表空間,該表空間中包括2個(gè)數(shù)據(jù)文件,區(qū)的分配管理方式為AUTOALLOCATE或UNIFORM,段的存儲(chǔ)管理方式為MANUAL或AUTO。操作步驟如下:

      (1)在SQL*Plus中執(zhí)行CREATE TABLESPACE語(yǔ)句創(chuàng)建新的用戶表空間,并通過(guò)查詢V$TABLESPACE視圖查看新建用戶表空間情況。

      Create tablespace newspace Datafile ‘D:oracleoradatanew01.dbf’ size 10m

      第1部分 Oracle管理技術(shù)

      (2)通過(guò)OEM控制臺(tái)創(chuàng)建新的臨時(shí)表空間,并查看新建用戶表空間情況。

      2.創(chuàng)建本地管理方式的臨時(shí)表空間

      為Oracle數(shù)據(jù)庫(kù)新建一個(gè)臨時(shí)表空間,該表空間中包括1個(gè)數(shù)據(jù)文件,并設(shè)置該表空間為默認(rèn)臨時(shí)表空間。操作步驟如下:

      (1)在SQL*Plus中執(zhí)行CREATE TEMPORARY TABLESPACE語(yǔ)句創(chuàng)建新的臨時(shí)表空間,設(shè)置該表空間為默認(rèn)臨時(shí)表空間,并通過(guò)查詢V$TABLESPACE視圖查看新建臨時(shí)表空間情況。

      CREATE TEMPORARY TABLESPACE newtemp tempfile 'D:oracleoradatanewtemp01.dbf' size 10m;

      select * from V$tablespace;

      (2)通過(guò)OEM控制臺(tái)創(chuàng)建新的臨時(shí)表空間,設(shè)置該表空間為默認(rèn)臨時(shí)表空間,并查看新建臨時(shí)表空間情況。

      3.改變表空間的可用性

      將新建的用戶表空間設(shè)置為脫機(jī)狀態(tài),之后再將其改為聯(lián)機(jī)狀態(tài)。操作步驟如下:(1)在SQL*Plus中執(zhí)行ALTER TABLESPACE語(yǔ)句設(shè)置表空間為脫機(jī)狀態(tài),并通過(guò)查詢DBA_TABLESPACES視圖查看表空間的狀態(tài),之后再執(zhí)行ALTER TABLESPACE語(yǔ)句設(shè)置表空間為聯(lián)機(jī)狀態(tài)。

      Alter tablespace newspace Add datafile ‘D:oracleoradatanew02.dbf’ size 10m

      第1部分 Oracle管理技術(shù)

      (2)通過(guò)OEM控制臺(tái)設(shè)置表空間為脫機(jī)狀態(tài)或聯(lián)機(jī)狀態(tài),并查看修改之后的表空間狀態(tài)。

      4.刪除表空間

      刪除無(wú)用的表空間及其在磁盤(pán)上的數(shù)據(jù)文件。操作步驟如下:

      (1)在SQL*Plus中執(zhí)行DROP TABLESPACE語(yǔ)句刪除表空間及其在磁盤(pán)上的數(shù)據(jù)文件。

      Drop tablespace newspace;

      (2)通過(guò)OEM控制臺(tái)刪除表空間及其在磁盤(pán)上的數(shù)據(jù)文件。

      5.查詢表空間的各種信息

      查詢表空間的各種信息。操作步驟如下:(1)在SQL*Plus中查詢V$TABLESPACE、DBA_TABLESPACES、DBA_SEGMENTS、DBA_EXTENTS、DBA_FREE_SPACE、V_$DATAFILE和V$TEMPFILE動(dòng)態(tài)性能視圖獲得表空間的信息。

      (2)在OEM控制臺(tái)中查詢表空間的信息。

      6.創(chuàng)建撤銷表空間

      在數(shù)據(jù)庫(kù)建立后創(chuàng)建一個(gè)撤銷表空間,并設(shè)置該表空間為默認(rèn)撤銷表空間。操作步驟如

      第1部分 Oracle管理技術(shù)

      下:

      (1)在SQL*Plus中執(zhí)行CREATE UNDO TABLESPACE語(yǔ)句創(chuàng)建一個(gè)撤銷表空間,并執(zhí)行ALTER SYSTEM語(yǔ)句修改初始化參數(shù)UNDO_TABLESPACE,設(shè)置該撤銷表空間為默認(rèn)撤銷表空間。

      CREATE UNDO TABLESPACE undotb datafile 'D:oracleoradataundotb01.dbf' size 2m reuse;

      (2)通過(guò)OEM控制臺(tái)向某一撤銷表空間中添加新的數(shù)據(jù)文件,并查看新的數(shù)據(jù)文件情況。

      7.查詢撤銷表空間的各種信息

      查詢表空間的各種信息。操作步驟如下:

      (1)在SQL*Plus中查詢V$UNDOSTAT、V$ROLLSTAT、V$TRANSACTION、DBA_UNDO_EXTENTS動(dòng)態(tài)性能視圖獲得撤銷表空間的信息。

      select * from V$tablespace;

      (2)利用V$UNDOSTAT動(dòng)態(tài)性能視圖計(jì)算撤銷表空間所需要的存儲(chǔ)空間。

      第1部分 Oracle管理技術(shù)

      實(shí)驗(yàn)8 文件管理

      目的和要求

      (1)了解初始化參數(shù)文件、控制文件、重做日志文件和數(shù)據(jù)文件的概念;(2)學(xué)習(xí)創(chuàng)建和使用初始化參數(shù)文件;

      (3)學(xué)習(xí)創(chuàng)建、備份、查詢和刪除控制文件;(4)學(xué)習(xí)創(chuàng)建和使用重做日志文件;

      (5)學(xué)習(xí)添加、移動(dòng)、查詢和刪除數(shù)據(jù)文件。

      實(shí)驗(yàn)準(zhǔn)備

      首先要了解初始化參數(shù)文件是Oracle實(shí)例運(yùn)行所需的參數(shù)配置文件,Oracle數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)、實(shí)例中的內(nèi)存結(jié)構(gòu),以及啟動(dòng)后臺(tái)進(jìn)程的種類和數(shù)量等參數(shù),都需要在初始化參數(shù)文件中設(shè)置,是數(shù)據(jù)庫(kù)運(yùn)行和性能調(diào)整的重要文件。初始化參數(shù)文件分為兩類:PFILE和SPFILE。PFILE是文本形式的初始化參數(shù)文件,可以利用任何文本編輯器對(duì)它進(jìn)行查看或編輯。SPFILE的作用同PFILE一樣,但是該文件是二進(jìn)制的,無(wú)法用文本編輯器查看或修改。

      控制文件是一個(gè)非常小的二進(jìn)制文件,其中存放有Oracle數(shù)據(jù)庫(kù)物理結(jié)構(gòu)(數(shù)據(jù)文件和重做日志文件等)的信息,是Oracle啟動(dòng)和運(yùn)行必備的文件。

      重做日志文件中保存著事物對(duì)數(shù)據(jù)庫(kù)進(jìn)行的修改的重做項(xiàng),是數(shù)據(jù)庫(kù)進(jìn)行恢復(fù)的必要部分。重做日志文件分為聯(lián)機(jī)重做日志文件和歸檔重做日志文件。

      數(shù)據(jù)文件是Oracle主要的物理存儲(chǔ)結(jié)構(gòu)之一。一個(gè)表空間可以有多個(gè)數(shù)據(jù)文件,一個(gè)數(shù)據(jù)文件只屬于一個(gè)表空間。數(shù)據(jù)文件可分成系統(tǒng)數(shù)據(jù)文件、撤銷數(shù)據(jù)文件、臨時(shí)數(shù)據(jù)文件和用戶數(shù)據(jù)文件。

      實(shí)驗(yàn)內(nèi)容

      本實(shí)驗(yàn)主要包括以下內(nèi)容。

      (1)練習(xí)創(chuàng)建和使用初始化參數(shù)文件;(2)練習(xí)創(chuàng)建和使用控制文件;(3)練習(xí)創(chuàng)建和使用重做日志文件;(4)練習(xí)添加和使用數(shù)據(jù)文件。

      1.創(chuàng)建初始化參數(shù)文件

      創(chuàng)建PFILE和SPFILE文件。操作步驟如下:

      (1)找到已有的PFILE文件,使用COPY或者在Windows資源管理器中使用復(fù)制/粘貼功能,創(chuàng)建一個(gè)新的PFILE文件。

      (2)使用CREATE PFILE FROM SPFILE命令創(chuàng)建一個(gè)新的PFILE文件。

      第1部分 Oracle管理技術(shù)

      (3)利用OEM創(chuàng)建一個(gè)新的PFILE文件。

      (4)使用CREATE SPFILE FROM PFILE命令創(chuàng)建一個(gè)新的SPFILE文件。create spfile='D:oracleora92databaseininew01.ora' pfile='D:oracleadminBIPT921pfile init.ora.23201322748';

      from

      (5)利用OEM創(chuàng)建一個(gè)新的SPFILE文件。

      2.修改初始化參數(shù)

      修改SPFILE文件中的初始化參數(shù)。操作步驟如下:

      (1)在SQL*Plus中使用動(dòng)態(tài)性能視圖V$SYSTEM_PARAMETER查看初始化參數(shù)值和屬性。

      (2)使用ALTER SYSTEM SET 參數(shù)名=參數(shù)值 SCOPE=SPFILE | MEMORY | BOTH

      第1部分 Oracle管理技術(shù)

      命令修改其中的動(dòng)態(tài)或靜態(tài)的初始化參數(shù)。

      (3)再使用動(dòng)態(tài)性能視圖V$SYSTEM_PARAMETER或在OEM中查看初始化參數(shù)值是否被修改。

      (4)或者在OEM中修改其中的初始化參數(shù),并查看初始化參數(shù)值和屬性。3.備份控制文件

      為Oracle數(shù)據(jù)庫(kù)備份一個(gè)控制文件。操作步驟如下:

      (1)使用ALTER DATABASE BACKUP CONTROLFILE TO命令備份控制文件。

      (2)在OEM控制臺(tái)中備份控制文件。

      4.查詢控制文件信息

      查詢控制文件中的各種信息。操作步驟如下:(1)在SQL*Plus中查詢V$CONTROLFILE、V$CONTROLFILE_RECORD_SECTION、V$PARAMETER動(dòng)態(tài)性能視圖獲得控制文件的基本信息和記錄文檔段信息。

      第1部分 Oracle管理技術(shù)

      (2)在OEM控制臺(tái)中查詢控制文件的基本信息和記錄文檔段信息。

      5.創(chuàng)建多路聯(lián)機(jī)重做日志文件組

      為Oracle數(shù)據(jù)庫(kù)新建一個(gè)聯(lián)機(jī)重做日志組,該組包含2個(gè)成員。操作步驟如下:(1)使用SYSDBA身份登錄SQL*Plus。

      (2)查詢V$LOGLFILE視圖,了解目前的重做日志文件組情況。

      (3)執(zhí)行ALTER DATABASE ADD LOGFILE命令增加一個(gè)重做日志文件組,該組包含2個(gè)成員。

      (4)重新查詢V$LOGLFILE視圖,查看新建重做日志文件組情況。

      6.使用LogMiner Viewer工具對(duì)重做日志文件進(jìn)行分析

      使用LogMiner Viewer工具分析重做日志文件,獲得指定用戶在規(guī)定的時(shí)間段內(nèi)對(duì)數(shù)據(jù)庫(kù)所進(jìn)行的更改。操作步驟如下:

      (1)啟動(dòng)OEM控制臺(tái),登錄Oracle管理服務(wù)器。(2)啟動(dòng)LogMiner Viewer。(3)設(shè)置查詢條件。

      (4)執(zhí)行并分析查詢結(jié)果。(5)保存分析結(jié)果。

      7.向表空間中添加數(shù)據(jù)文件

      向表空間中添加一個(gè)新的數(shù)據(jù)文件。操作步驟如下:(1)在SQL*Plus中使用ALTER TABLESPACE...ADD DATAFILE語(yǔ)句向某一表空間中添加一個(gè)數(shù)據(jù)文件,并通過(guò)查詢DBA_DATA_FILES視圖查看新建數(shù)據(jù)文件的情況。

      ALTER TABLESPACE dtf add datafile 'D:oracleadminBIPT921pfileinit.ora.23201322748' size 10m reuse;

      第1部分 Oracle管理技術(shù)

      (2)通過(guò)OEM控制臺(tái)添加新的數(shù)據(jù)文件,并查看新的數(shù)據(jù)文件情況。

      8.移動(dòng)單個(gè)數(shù)據(jù)文件

      將表空間中某個(gè)數(shù)據(jù)文件從一個(gè)物理磁盤(pán)移動(dòng)到另一個(gè)磁盤(pán)。操作步驟如下:

      (1)在SQL*Plus中使用ALTER TABLESPACE語(yǔ)句將包含有需要移動(dòng)數(shù)據(jù)文件的表空間脫機(jī)。

      ALTER TABLESPACE dtf offline;

      (2)在操作系統(tǒng)中,將數(shù)據(jù)文件復(fù)制到另一個(gè)磁盤(pán)上。

      (3)使用ALTER TABLESPACE語(yǔ)句對(duì)表空間中的數(shù)據(jù)文件重命名。alter tablespace XDB rename datafile'XDB01.DBF'to'XDB02.DBF'(4)使用ALTER TABLESPACE語(yǔ)句重新使該表空間聯(lián)機(jī)。ALTER TABLESPACE dtf online;

      (5)通過(guò)查詢DBA_DATA_FILES視圖獲得移動(dòng)后的數(shù)據(jù)文件信息。9.刪除數(shù)據(jù)文件

      刪除無(wú)用的數(shù)據(jù)文件。操作步驟如下:

      (1)在SQL*Plus中使用ALTER DATABASE語(yǔ)句刪除某一數(shù)據(jù)文件。

      (2)通過(guò)OEM控制臺(tái)刪除某一數(shù)據(jù)文件。

      10.查詢數(shù)據(jù)文件的各種信息

      查詢數(shù)據(jù)文件的各種信息。操作步驟如下:

      第1部分 Oracle管理技術(shù)

      (1)在SQL*Plus中查詢DBA_DATA_FILES、DBA_EXTENTS、DBA_FREE_SPACE、V$DATAFILE、V$DATAFILE_HEADER動(dòng)態(tài)性能視圖獲得數(shù)據(jù)文件的信息。

      (2)在OEM控制臺(tái)中查詢數(shù)據(jù)文件的信息。

      第2部分 Oracle開(kāi)發(fā)技術(shù)

      第2部分 Oracle開(kāi)發(fā)技術(shù)

      設(shè)計(jì)目的

      利用所學(xué)的有關(guān)數(shù)據(jù)庫(kù)設(shè)計(jì)知識(shí),設(shè)計(jì)一個(gè)基于Oracle數(shù)據(jù)庫(kù)的信息管理系統(tǒng)。通過(guò)該部分的操作與實(shí)踐,使學(xué)生能夠在完成第一部分任務(wù)的基礎(chǔ)上,進(jìn)一步鞏固O(píng)racle數(shù)據(jù)庫(kù)應(yīng)用的方法和技術(shù),提高基于Oracle數(shù)據(jù)庫(kù)的應(yīng)用程序綜合設(shè)計(jì)能力。

      設(shè)計(jì)任務(wù)

      ? 數(shù)據(jù)庫(kù)設(shè)計(jì):

      (1)通過(guò)對(duì)應(yīng)用系統(tǒng)的數(shù)據(jù)庫(kù)需求分析,確定系統(tǒng)的服務(wù)范圍,繪制系統(tǒng)業(yè)務(wù)流程圖,設(shè)計(jì)系統(tǒng)功能和繪制系統(tǒng)功能圖,設(shè)計(jì)數(shù)據(jù)流圖和數(shù)據(jù)字典;

      (2)采用自底向上的方法設(shè)計(jì)E-R圖;

      (3)依據(jù)關(guān)系規(guī)范化原則設(shè)計(jì)應(yīng)用系統(tǒng)數(shù)據(jù)庫(kù)全局關(guān)系模式;(4)依照數(shù)據(jù)庫(kù)全局關(guān)系模式設(shè)計(jì)數(shù)據(jù)庫(kù)中各表的表結(jié)構(gòu)。? 界面設(shè)計(jì):(1)數(shù)據(jù)庫(kù)準(zhǔn)備;

      (2)創(chuàng)建工程并添加所需控件;(3)主要功能模塊的界面設(shè)計(jì)。

      設(shè)計(jì)題目

      1.圖書(shū)管理系統(tǒng)

      圖書(shū)管理系統(tǒng)包括對(duì)所有圖書(shū)基本信息的維護(hù),實(shí)現(xiàn)圖書(shū)管理的需求,包括圖書(shū)檔案、圖書(shū)查詢、圖書(shū)資料統(tǒng)計(jì)和圖書(shū)借閱、歸還等功能。

      圖書(shū)管理系統(tǒng)讀者信息用戶圖書(shū)信息管理圖書(shū)借閱管理讀者號(hào)讀者名已借數(shù)量最大借閱數(shù)量用戶名密碼ISBN書(shū)名作者出版社數(shù)量圖書(shū)借閱圖書(shū)歸還

      第2部分 Oracle開(kāi)發(fā)技術(shù)

      建立角色:

      CREATE ROLE br IDENTIFIED BY asd;GRANT CONNECT TO br;GRANT RESOURCE TO br;

      建立用戶:

      CREATE USER Book IDENTIFIED BY asd DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;授權(quán):

      GRANT UNLIMITED TABLESPACE TO Book;GRANT br TO Book;

      建立bookusers表

      CREATE TABLE Book.BookUsers(UserId Number Primary Key, UserName Varchar2(40)NOT NULL, UserType Number(10), UserPwd Varchar2(40));

      create table book.reader

      第2部分 Oracle開(kāi)發(fā)技術(shù)

      (reader_id varchar(20)primary key, reader_name varchar(20), maxlend int, alreadylen int)

      create table borrow(reader_id varchar(20), ISBN varchar(20), lendtime date, returntime date, primary key(reader_id,ISBN))foreign key(reader_id)references book.reader(reader_id), foreign key(ISBN)references book(ISBN)

      插入數(shù)據(jù):

      INSERT INTO Book.BookUsers VALUES(1, ‘shang’, 1, ‘123’);INSERT INTO Book.BookUsers VALUES(2, ‘zhang’, 2, ‘456’);

      INSERT INTO Book.BookUsers VALUES(3, ‘shangjingwei’, 2, ‘a(chǎn)sd123’);INSERT INTO Book.BookUsers VALUES(4, ‘zhanghongkai’, 2, ‘a(chǎn)sd123’);COMMIT;

      第2部分 Oracle開(kāi)發(fā)技術(shù)

      //創(chuàng)建序列

      CREATE SEQUENCE userid MINVALUE 1 NOMAXVALUE START WITH 1 INCREMENT BY 1 NOCYCLE NOCACHE

      //觸發(fā)器創(chuàng)建

      CREATE OR REPLACE TRIGGER Book.NewMyTrigger before Insert ON Book.BookUsers FOR each row begin select userid.nextval into :new.userid from dual;END;

      string cmdString = “insert into Book.BookUsers(UserId,UserName,UserPwd)(xl_1.nextval,'” + student_numer.Text + “','” + password.Text + “')”;登錄窗口:

      values 第2部分 Oracle開(kāi)發(fā)技術(shù)

      String oraString = “ Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=BOOK)));User ID=system;Password=asd”;//數(shù)據(jù)庫(kù)連接語(yǔ)句

      查詢圖書(shū):

      String bookname = “";String bookisbn = ”“;String bmark = ”“;if(textBox1.Text!= ”“)bookisbn =(”ISBN = '“ + textBox1.Text + ”'“);if((textBox2.Text!= ”“)&&(textBox1.Text!= ”“))bookname =(”AND book_name='“ + textBox2.Text + ”'“);else if(textBox2.Text!= ”“)bookname =(”book_name='“ + textBox2.Text + ”'“);bmark = bookname + bookisbn;

      if(radioButton2.Checked){ //添加精確查詢的代碼 if(bmark!= ”“)dataCommand.CommandText = ”SELECT * FROM book.book WHERE “ + bmark;else if(bmark == ”“)

      第2部分 Oracle開(kāi)發(fā)技術(shù)

      MessageBox.Show(”請(qǐng)輸入查詢數(shù)據(jù)!“);} else if(radioButton1.Checked){ if(textBox1.Text!= ”“)MessageBox.Show(”不支持ISBN的模糊查詢!“);else { //添加模糊查詢的代碼 if(textBox2.Text!= ”“){ bookname =(”書(shū)名 like '%“ + textBox2.Text + ”%'“);dataCommand.CommandText = ”SELECT * FROM book.book WHERE “ + bookname;} else//查詢所有圖書(shū) { dataCommand.CommandText = ”SELECT * FROM book.book“;} } } else MessageBox.Show(”請(qǐng)選擇查詢方式!“);

      OracleDataReader dataReader = dataCommand.ExecuteReader();

      第2部分 Oracle開(kāi)發(fā)技術(shù)

      BindingSource bs = new BindingSource();bs.DataSource = dataReader;this.dataGridView1.DataSource = bs;if(dataReader.Read()){ lnum = dataReader.GetInt32(3);ynum = dataReader.GetInt32(6);} dataConnection.Close();}

      SqlConnection dataConnection;//數(shù)據(jù)庫(kù)連接類 SqlCommand dataCommand;//數(shù)據(jù)庫(kù)命令類

      讀者信息:

      dataConnection.Open();

      dataCommand.CommandText = ”SELECT * FROM book.reader WHERE reader_id='“ + uID + ”'“;OracleDataReader dataReader = dataCommand.ExecuteReader();

      第2部分 Oracle開(kāi)發(fā)技術(shù)

      BindingSource bs = new BindingSource();bs.DataSource = dataReader;this.dataGridView4.DataSource = bs;dataReader.Close();dataConnection.Close();

      maxnum =(int)dataGridView4.Rows[0].Cells[”maxlend“].Value;dnum =(int)dataGridView4.Rows[0].Cells[”alredylend“].Value;ymaxnum =(int)dataGridView4.Rows[0].Cells[”maxyuyue“].Value;ydnum =(int)dataGridView4.Rows[0].Cells[”yiyuyue“].Value;}

      還書(shū):

      dataConnection.Open();String bookisbn;bookisbn = textBox5.Text;if(bookisbn!= ”“){ dataCommand.CommandText = ”DELETE FROM book.borrow WHERE ISBN='“ + bookisbn + ”'“;dataCommand.ExecuteNonQuery();dataCommand.CommandText = ”UPDATE book SET incount=incount+1 WHERE ISBN='“ + bookisbn + ”'“;

      第2部分 Oracle開(kāi)發(fā)技術(shù)

      dataCommand.ExecuteNonQuery();dataCommand.CommandText = maxyuyue=maxyuyue-1 WHERE ISBN='” + bookisbn + “'”;dataCommand.ExecuteNonQuery();dataCommand.CommandText = “UPDATE alredylend=alredylend-1 WHERE reader_id='” + uID + “'”;dataCommand.ExecuteNonQuery();textBox5.Text = “";MessageBox.Show(”歸還成功!“);dnum--;

      實(shí)驗(yàn)總結(jié):

      通過(guò)這次課程設(shè)計(jì),我收獲了很多,對(duì)oracle數(shù)據(jù)庫(kù)從一片空白到現(xiàn)在的有所了解。界面設(shè)計(jì)和代碼用的是C#通過(guò)本次課程設(shè)計(jì),我們對(duì)數(shù)據(jù)庫(kù)的應(yīng)用有了更深刻的體會(huì)。網(wǎng)絡(luò)系統(tǒng)都是離不開(kāi)數(shù)據(jù)庫(kù)的支持的。數(shù)據(jù)庫(kù)設(shè)計(jì)的是否合理,直接影響到系統(tǒng)的性能。數(shù)據(jù)庫(kù)理論對(duì)于實(shí)際應(yīng)用有很大的指導(dǎo)意義。

      本次課程設(shè)計(jì)的名稱是圖書(shū)管理系統(tǒng),由于我們能力有限,加之近期課程任務(wù)比較緊迫,所以我們負(fù)責(zé)的這個(gè)項(xiàng)目還有許多不完善的地方??梢哉f(shuō)我們的這次系統(tǒng)是做的比較丑陋,功能還有很多不完善的地方。但是總的來(lái)說(shuō)還是收獲很大的,因?yàn)橥ㄟ^(guò)這次的團(tuán)隊(duì)合作,首先對(duì)數(shù)據(jù)庫(kù)和C#有了進(jìn)一步的了解,并且深深體會(huì)到團(tuán)隊(duì)合作的重要性,還有合理的團(tuán)隊(duì)分工是非常重要的。并且能在最后將前臺(tái)程序和后臺(tái)數(shù)據(jù)庫(kù)連接起來(lái)運(yùn)行,也對(duì)我們是一個(gè)比較大的挑戰(zhàn),而且我們也成功的做到了這一點(diǎn)。本次的圖書(shū)管理系統(tǒng),在功能上僅實(shí)現(xiàn)了圖書(shū),用戶,圖書(shū)類別和用戶的注冊(cè)管理,只是一些非?;A(chǔ)的功能,沒(méi)有設(shè)計(jì)添加圖書(shū)的功能。此外,該系統(tǒng)原先計(jì)劃設(shè)計(jì)的一些功能也沒(méi)有實(shí)現(xiàn)。系統(tǒng)完全實(shí)現(xiàn)的功能實(shí)現(xiàn)圖書(shū)信息的刪除、更改和查看等。

      最后也非常感謝向勝軍老師對(duì)我們本次課程設(shè)計(jì)的指導(dǎo)及最后驗(yàn)收的評(píng)價(jià)。我們也會(huì)吸取本次設(shè)計(jì)經(jīng)驗(yàn),為以后的設(shè)計(jì)繼續(xù)努力。

      reader

      SET

      ”UPDATE

      book

      SET

      第四篇:圖書(shū)管理系統(tǒng) 數(shù)據(jù)結(jié)構(gòu) 課程設(shè)計(jì)

      《數(shù)據(jù)結(jié)構(gòu)》

      課程設(shè)計(jì)報(bào)告書(shū)

      一.課程設(shè)計(jì)題目

      圖書(shū)借閱管理系統(tǒng)

      二.課程設(shè)計(jì)內(nèi)容

      實(shí)現(xiàn)圖書(shū)管理信息系統(tǒng)的設(shè)計(jì)

      (一)管理員功能:

      ①登錄:輸入管理員密碼,若密碼錯(cuò)誤則不得執(zhí)行管理員操作。

      ②添加新書(shū):增加新的圖書(shū)資料,同時(shí)需檢查新書(shū)的圖書(shū)編號(hào)是否已存在于原圖書(shū)資料中,若已存在則應(yīng)取消添加或提示重新輸入。

      ③修改圖書(shū):通過(guò)編號(hào)查詢?cè)搱D書(shū)資料,若該編號(hào)存在,則顯示已有信息,允許修改,否則提示 無(wú)該圖書(shū)信息。

      ④刪除圖書(shū):通過(guò)編號(hào)查詢?cè)搱D書(shū)資料,若該編號(hào)存在,則顯示已有信息,允許刪除,否則提示無(wú)該圖書(shū)信息。刪除對(duì)象包括該圖書(shū)資料以及“圖書(shū)狀態(tài)”和“借閱人”中與此書(shū)相關(guān)的所有記錄。

      ⑤查找圖書(shū):

      A.按書(shū)號(hào)查找:通過(guò)編號(hào)查詢?cè)搱D書(shū)資料,若該編號(hào)存在,則顯示圖書(shū)信息,否則提示無(wú)該圖書(shū)信息。

      B.按書(shū)名查找:通過(guò)書(shū)名查詢?cè)搱D書(shū)資料,若該編號(hào)存在,則顯示圖書(shū)信息,否則提示無(wú)該圖書(shū)信息。

      C.按作者查找:通過(guò)作者查詢?cè)搱D書(shū)資料,若該編號(hào)存在,則顯示圖書(shū)信息,否則提示無(wú)該圖書(shū)信息。

      ⑥查看全部圖書(shū):顯示所有圖書(shū)資料,包括書(shū)號(hào)、書(shū)名、作者、狀態(tài)和借閱人等信息。

      ⑦修改讀者:通過(guò)姓名查詢?cè)撟x者信息,若該姓名存在,則顯示已有信息,允許修改,否則提示無(wú)該讀者信息。

      ⑧刪除讀者:通過(guò)姓名查詢?cè)撟x者信息,若該姓名存在,則顯示已有信息,允許刪除,否則提示無(wú)該讀者信息。刪除對(duì)象包括該讀者姓名、班級(jí)、電話以及“圖書(shū)狀態(tài)”和“借閱人”中與此人相關(guān)的所有記錄。

      ⑨查看所有讀者:顯示所有讀者資料,包括姓名、班級(jí)、電話等信息。

      (二)讀者功能:

      ①登錄:輸入讀者姓名,若未經(jīng)注冊(cè)則不得進(jìn)入讀者服務(wù)界面。②注冊(cè):新用戶經(jīng)注冊(cè)方可登錄系統(tǒng)并使用讀者服務(wù)功能。③借書(shū):

      A.輸入所需圖書(shū)編號(hào),判斷該編號(hào)是否存在,若不存在則提示重新輸入。

      B.若所輸入圖書(shū)編號(hào)存在,則判斷該書(shū)籍是否已被借出,若已借則不允許執(zhí)行借書(shū)操作。

      C.若所輸入圖書(shū)未借,則提示輸入讀者姓名,判斷所輸入讀者姓名是否存在,若不存在則提示重新輸入。D.若讀者姓名存在,則允許執(zhí)行借書(shū)操作。

      E.借書(shū)處理包括在“圖書(shū)狀態(tài)”中加上“已借”標(biāo)記。④還書(shū):

      A.輸入所借書(shū)編號(hào),判斷該編號(hào)是否存在,若不存在則提示重新輸入。B.判斷該書(shū)是否已借出,若未借則不允許執(zhí)行還書(shū)操作。C.借書(shū)處理包括在“圖書(shū)狀態(tài)”中加上“未借”標(biāo)記。⑤查詢圖書(shū):

      A.按書(shū)號(hào)查找:通過(guò)編號(hào)查詢?cè)搱D書(shū)資料,若該編號(hào)存在,則顯示圖書(shū)信息,否則提示無(wú)該圖書(shū)信息。

      B.按書(shū)名查找:通過(guò)書(shū)名查詢?cè)搱D書(shū)資料,若該編號(hào)存在,則顯示圖書(shū)信息,否則提示無(wú)該圖書(shū)信息。

      C.按作者查找:通過(guò)作者查詢?cè)搱D書(shū)資料,若該編號(hào)存在,則顯示圖書(shū)信息,否則提示無(wú)該圖書(shū)信息。

      ⑥查看借閱情況:輸入讀者姓名,若該姓名不存在則提示重新輸入,若該姓名存在則顯示該讀者借閱信息。

      三.算法設(shè)計(jì)

      1.流程圖(部分示例)

      ①管理員登錄

      ②讀者登錄

      ③讀者借閱圖書(shū)

      ④管理員或讀者按書(shū)名查找圖書(shū)

      2.代碼實(shí)現(xiàn)

      #include #include

      #include #include //文件流 #include #define BookFile “book.txt”

      //將字符串BookFile替換原文件中的宏名稱book #define ReaderFile “reader.txt” using namespace std;//**********讀者結(jié)構(gòu)體,用于存放讀者基本信息********** class Reader {

      private:

      char rname[10];

      char rclass[10];

      char rtel[10];public:

      Reader()//構(gòu)造函數(shù),實(shí)現(xiàn)數(shù)據(jù)初始化

      {strcpy(rname,“");strcpy(rclass,”“);strcpy(rtel,”“);} //初始化

      void set_rname(char *rn)//設(shè)置讀者姓名

      {strcpy(rname,rn);} //將rn的字符復(fù)制給rname

      char * get_rname()//獲得讀者姓名

      {return rname;} //返回rname的值

      void set_rclass(char *rc)//設(shè)置班級(jí)

      {strcpy(rclass,rc);}

      char *get_rclass()

      //獲得班級(jí)

      {return rclass;}

      void set_rtel(char *rt)

      //設(shè)置電話

      {strcpy(rtel,rt);}

      char *get_rtel()

      //獲得電話

      {return rtel;}

      void copy(Reader m)//讀者Reader結(jié)構(gòu)體copy函數(shù)

      {strcpy(rname,m.get_rname());strcpy(rclass,m.get_rclass());strcpy(rtel,m.get_rtel());} };//*********讀者管理結(jié)構(gòu)體,實(shí)現(xiàn)對(duì)讀者用戶的管理********* class ReaderManage {

      Reader readers[50];//定義讀者結(jié)構(gòu)體數(shù)組對(duì)象,最多50位

      int length;

      void readFile()

      //讀取讀者文件函數(shù)

      {

      ifstream fread;//定義輸入文件流對(duì)象fread

      length=0;

      //計(jì)數(shù)

      if(!fread)

      {cout<<”讀取磁盤(pán)文件失敗!“<

      fread.open(ReaderFile,ios::binary);//使文件流與文件關(guān)聯(lián),以二進(jìn)制方式打開(kāi)

      int i=0;

      while((fread.read((char *)&readers[i],sizeof(Reader))))//計(jì)算并返回所占字節(jié)數(shù)

      i++;

      length=i;

      fread.close();//關(guān)閉磁盤(pán)文件

      } void saveFile()//保存讀者文件

      {

      ofstream fwrite;

      //定義輸出文件流對(duì)象fwrite

      if(!fwrite)

      {cout<<”文件保存失敗!n“;exit(1);}

      fwrite.open(ReaderFile,ios::binary);//使文件流與文件關(guān)聯(lián),以二進(jìn)制方式打開(kāi)

      fwrite.write((char *)readers,length*sizeof(Reader));//計(jì)算并返回所占字節(jié)數(shù)

      fwrite.close();//關(guān)閉磁盤(pán)文件

      } public:

      ReaderManage()//構(gòu)造函數(shù),讀取讀者文件

      {readFile();}

      ~ReaderManage()//析構(gòu)函數(shù),保存讀者文件

      {saveFile();}

      void add_reader(Reader r)//添加讀者用戶函數(shù)

      {

      if(length>=50)

      {cout<<”對(duì)不起,注冊(cè)人數(shù)已滿!n“;return;}

      readers[length].copy(r);//調(diào)用讀者結(jié)構(gòu)體copy函數(shù)

      length++;} int search(char *rn)//按姓名查找讀者函數(shù)

      {

      for(int i=0;i

      if(strcmp(readers[i].get_rname(),rn)==0)//判斷是否相等

      return i;

      return-1;

      } bool revise(Reader reader,int i)//修改讀者資料函數(shù)

      {

      readers[i].copy(reader);//調(diào)用讀者結(jié)構(gòu)體cpoy函數(shù)

      return true;} void delete_reader(int index)//刪除讀者函數(shù)

      {

      for(int i=index;i

      readers[i].copy(readers[i+1]);//用后面的地址覆蓋前面的地址

      length--;} bool log_reader(Reader r)//登錄時(shí)判斷讀者用戶是否存在函數(shù),相當(dāng)于遍歷

      {

      for(int i=0;i

      if(strcmp(readers[i].get_rname(),r.get_rname())==0)

      return true;

      return false;

      } void reg_reader()//注冊(cè)用戶函數(shù)

      {

      char n[10];

      //姓名name

      char c[10];

      //班級(jí)class

      char t[10];

      //電話tel

      Reader reader;

      cout<<”nt請(qǐng)輸入您的姓名:“;

      cin>>n;

      cout<<”nt請(qǐng)輸入您的所在班級(jí):“;

      cin>>c;

      cout<<”nt請(qǐng)輸入您的聯(lián)系電話:“;

      cin>>t;

      reader.set_rname(n);//調(diào)用讀者結(jié)構(gòu)體設(shè)置讀者姓名函數(shù)

      reader.set_rclass(c);//調(diào)用讀者結(jié)構(gòu)體設(shè)置讀者班級(jí)函數(shù)

      reader.set_rtel(t);//調(diào)用讀者結(jié)構(gòu)體設(shè)置聯(lián)系電話函數(shù)

      add_reader(reader);//調(diào)用讀者結(jié)構(gòu)體添加讀者函數(shù)

      cout<<”nt注冊(cè)成功!“;} void show_reader()//不帶參的顯示讀者信息函數(shù)

      { cout<<”n ☆☆☆☆☆☆☆☆☆☆☆☆讀★★者★★信★★息★★列★★表☆☆☆☆☆☆☆☆☆☆☆nn“;

      cout<<”姓名ttt班級(jí)ttt電話n“;

      for(int i=0;i

      {

      cout<

      cout<<”ttt“<

      cout<<”ttt“<

      } } void show_reader(int i)//帶參的顯示讀者信息函數(shù)

      {

      cout<<”n ☆☆☆☆☆☆☆☆☆☆☆☆讀★★者★★信★★息★★列★★表☆☆☆☆☆☆☆☆☆☆nn“;

      cout<<”姓名ttt班級(jí)ttt電話n“;

      cout<

      cout<<”ttt“<

      cout<<”ttt“<

      }

      };

      //********書(shū)籍結(jié)構(gòu)體,用于存放書(shū)籍基本信息******** class Book { private:

      char bnum[10];

      //書(shū)號(hào)

      char bname[20];

      //書(shū)名

      char bauthor[10];

      //作者

      char rname[10];

      //借閱人 public: int tag;

      //狀態(tài)標(biāo)記判斷指標(biāo)(已借/在架)Book()

      //構(gòu)造函數(shù)初始化信息

      {strcpy(bnum,”“);strcpy(bname,”“);strcpy(bauthor,”“);strcpy(rname,”“);tag=0;}

      void set_bnum(char *no)

      //設(shè)置書(shū)號(hào)

      {strcpy(bnum,no);}

      //把字符串no中的字符復(fù)制到字符串bnum中

      char *get_bnum()

      //獲得書(shū)號(hào)

      {

      return bnum;}

      //返回值為bnum

      void set_bname(char *n)

      //設(shè)置書(shū)名

      {strcpy(bname,n);}

      char *get_bname()

      //獲得書(shū)名

      {return bname;}

      void set_bauthor(char *a)

      //設(shè)置作者

      {strcpy(bauthor,a);}

      char * get_bauthor()

      //獲得作者姓名

      {return bauthor;}

      void set_tag(int t)

      //狀態(tài)設(shè)置

      {tag=t;}

      void set_rname(char *rn)

      //設(shè)置借閱人

      {strcpy(rname,rn);}

      char *get_rname()

      //獲得借閱人姓名

      {return rname;}

      void show_tag()

      //顯示圖書(shū)狀態(tài)

      {

      if(tag==1)

      {cout<<”已借“;}

      else

      {cout<<”在架“;}

      }

      void copy(Book m)

      //Book結(jié)構(gòu)體copy函數(shù)

      {

      strcpy(bnum,m.get_bnum());

      //將獲得書(shū)號(hào)函數(shù)里的返回值里的字符復(fù)制到bnum

      strcpy(bname,m.get_bname());

      strcpy(bauthor,m.get_bauthor());

      tag=0;

      } };//**********書(shū)籍管理結(jié)構(gòu)體,實(shí)現(xiàn)管理書(shū)籍功能********** class BookManage { private:

      Book books[100];

      //定義Book書(shū)籍結(jié)構(gòu)體數(shù)組對(duì)象,最大容量100本

      int length;

      void saveFile()

      //保存書(shū)籍文件

      {

      ofstream fwrite;//定義輸出文件流ofstream結(jié)構(gòu)體對(duì)象fwrite

      if(!fwrite)

      {cout<<”文件保存失敗!n“;exit(1);

      }

      fwrite.open(BookFile,ios::binary);//使文件流與文件建立關(guān)聯(lián),以二進(jìn)制方式打開(kāi)

      fwrite.write((char *)books,length*sizeof(Book));//計(jì)算并返回所占字節(jié)數(shù)

      fwrite.close();

      //關(guān)閉磁盤(pán)文件

      } void readFile()

      //讀取書(shū)籍文件

      {

      ifstream fread;//定義輸入文件流對(duì)象fread

      length=0;

      if(!fread)

      {cout<<”文件讀取失敗!“<

      Book temp;

      //定義書(shū)籍結(jié)構(gòu)體臨時(shí)對(duì)象temp

      int i=0;

      fread.open(BookFile ,ios::binary);//使文件流與文件建立關(guān)聯(lián),以二進(jìn)制方式打開(kāi)

      while((fread.read((char *)&books[i],sizeof(Book))))

      i++;

      //每讀完一次,指針后移一位,直到不能讀出正確結(jié)果為止

      length=i;

      fread.close();} public:

      BookManage()

      //構(gòu)造函數(shù),讀取磁盤(pán)文件

      {

      length=0;

      //從頭讀起,計(jì)數(shù),最大100

      readFile();

      //調(diào)用讀取文件函數(shù)

      }

      ~BookManage()

      //析構(gòu)函數(shù),保存磁盤(pán)文件

      {

      saveFile();

      //調(diào)用保存文件函數(shù)

      }

      bool add(Book book)

      //添加圖書(shū)資料

      {

      if(length>=100)

      { cout<<”對(duì)不起,儲(chǔ)存已滿,您無(wú)法繼續(xù)添加!n“;

      return-1;

      }

      else

      {

      books[length].copy(book);//調(diào)用書(shū)籍結(jié)構(gòu)體copy函數(shù)

      length++;

      return(length-1);

      } } int bnu_search(char *bnu)

      //按書(shū)號(hào)查找書(shū)籍

      {

      for(int i=0;i

      if(strcmp(books[i].get_bnum(),bnu)==0)//字符串比較,判斷是否相等

      return i;

      return-1;

      } int bna_search(char *bna)

      //按書(shū)名查找書(shū)籍

      {

      for(int i=0;i

      if(strcmp(books[i].get_bname(),bna)==0)//判斷

      return i;

      return-1;

      } int bau_search(char *bau)//按作者查找書(shū)籍

      {

      for(int i=0;i

      if(strcmp(books[i].get_bauthor(),bau)==0)//判斷

      return i;

      return-1;

      }

      int rn_search(char *rn)//按借閱人查找書(shū)籍

      {

      for(int i=0;i

      if(strcmp(books[i].get_rname(),rn)==0)//判斷

      return i;

      return-1;

      }

      void revise(Book book,int i)//帶參的修改書(shū)籍函數(shù)

      {books[i].copy(book);} //調(diào)用Book結(jié)構(gòu)體copy函數(shù)

      void deleteBook(int index)//帶參的刪除書(shū)籍資料函數(shù)

      {

      for(int i=index;i

      books[i].copy(books[i+1]);//用后面的地址將當(dāng)前的地址覆蓋

      length--;

      } void show_book()//不帶參的顯示書(shū)籍函數(shù)

      {

      cout<<” ☆☆☆☆☆☆☆☆☆☆☆書(shū)★★籍★★信★★息★★列★★表☆☆☆☆☆☆☆☆☆☆☆nn“;

      cout<<”書(shū)號(hào)“;

      cout.width(10);

      cout<<”書(shū)名“;

      cout.width(10);

      cout<<”作者“;

      cout.width(17);

      cout<<”狀態(tài)“;

      cout.width(25);

      cout<<”借閱人n“;

      for(int i=0;i

      { cout<

      cout.width(10);

      cout<

      cout.width(10);

      cout<

      cout.width(20);

      books[i].show_tag();

      cout.width(20);

      cout<

      }

      } void show_book(int i)//帶參的顯示書(shū)籍函數(shù)

      { cout<<” ☆☆☆☆☆☆☆☆☆☆☆書(shū)★★籍★★信★★息★★列★★表☆☆☆☆☆☆☆☆☆☆☆nn“;

      cout<<”書(shū)號(hào)“;

      cout.width(10);

      cout<<”書(shū)名“;

      cout.width(10);

      cout<<”作者“;

      cout.width(17);

      cout<<”狀態(tài)“;

      cout.width(25);

      cout<<”借閱人n“;

      cout<

      cout.width(10);

      cout<

      cout.width(10);

      cout<

      cout.width(20);

      books[i].show_tag();

      cout.width(20);

      cout<

      }

      void br_book()//讀者借、還書(shū)功能函數(shù)

      {

      ReaderManage reader;

      int choi;//選擇

      int a;

      //圖書(shū)狀態(tài)指標(biāo)(1已借2在架)

      char sh[10];//需要還書(shū)的書(shū)號(hào)

      char dz[10];//讀者姓名

      cin>>sh;

      int index=bnu_search(sh);//定義一個(gè)變量等于查找到的書(shū)號(hào)

      if(index>=0)

      { if(books[index].tag==1)//已借

      a=1;

      if(books[index].tag==0)//在架

      a=2;

      switch(a)

      { case 1:

      cout<<”nt該書(shū)目前狀態(tài)為<已借出>n“;

      cout<<”nt請(qǐng)選擇您需要的服務(wù):1:還書(shū)

      0:返回n“;

      cin>>choi;

      cin.ignore();//清除以回車結(jié)束的輸入緩沖區(qū)的內(nèi)容,消除上一次輸入對(duì)下一次輸入的影響

      if(choi!=1&&choi!=0)

      {

      cout<<”nt操作有誤,請(qǐng)重新選擇(0/1)!n“;

      return;

      }

      else if(choi==1)

      {

      cout<<”nt請(qǐng)輸入您的姓名:“;

      cin>>dz;

      cin.ignore();

      int index1=reader.search(dz);

      if(index1==-1)

      {

      cout<<”nt對(duì)不起,系統(tǒng)無(wú)該讀者記錄,新用戶請(qǐng)先注冊(cè)!“;

      return;

      }

      else

      {

      strcpy(dz,”“);//將讀者姓名已空白代替

      books[index].set_rname(dz);//借閱人一項(xiàng)變?yōu)榭瞻?/p>

      books[index].set_tag(0);//圖書(shū)狀態(tài)變?yōu)樵诩?/p>

      cout<<”nt還書(shū)成功!“<

      }

      }break;

      case 2:

      cout<<”nt該書(shū)目前狀態(tài)為<在館>n“;

      cout<<”nt請(qǐng)您需要的服務(wù):1:借書(shū)

      0:返回n“;

      cin>>choi;

      cin.ignore();

      if(choi!=1&&choi!=0)

      {

      cout<<”nt操作有誤,請(qǐng)重新選擇(0/1)!n“;

      return;

      }

      else if(choi==1)

      {

      cout<<”nt請(qǐng)輸入您的姓名:“;

      cin>>dz;

      int index1=reader.search(dz);

      if(index1==-1)

      { cout<<”nt對(duì)不起,系統(tǒng)無(wú)改讀者記錄,新用戶請(qǐng)先注冊(cè)!“;

      return;

      }

      else

      {

      books[index].set_rname(dz);

      books[index].set_tag(1);

      cout<<”nt借書(shū)成功!“<

      }

      }break;

      }

      }

      else

      {

      cout<<”nt對(duì)不起,系統(tǒng)無(wú)該書(shū)記錄!“;}

      }

      bool in(int i)//判斷圖書(shū)是否在架函數(shù)

      {

      if(books[i].tag==1)

      return false;

      return true;

      }

      };//**********菜單結(jié)構(gòu)體,實(shí)現(xiàn)界面引導(dǎo)********** class Menu {

      BookManage bm;

      //定義書(shū)籍管理結(jié)構(gòu)體對(duì)象bm ReaderManage rm;

      //定義讀者管理結(jié)構(gòu)體對(duì)象rm Reader r;

      //定義讀者結(jié)構(gòu)體對(duì)象r private: int choice;

      //菜單序號(hào)選擇

      int key;

      //管理員密碼 public: void header()

      //頁(yè)眉

      {

      system(”color fd“);

      cout<<”t

      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      書(shū)

      統(tǒng)

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;} void log_menu()

      //主界面登錄菜單

      {

      system(”color fd“);

      header();

      cout<<”nttt< 請(qǐng)

      份 >n“;

      cout<<”ntttt1: 管理員nntttt2: 讀

      者nntttt0: 退

      出nt您的選擇是: “;choice: cin>>choice;

      cin.ignore();

      //清除以回車結(jié)束的輸入緩沖區(qū)的內(nèi)容,消除上一次輸入對(duì)下一次輸入的影響

      switch(choice)

      {

      case 1:

      log_admin();

      //管理員登錄,需密碼驗(yàn)證

      break;

      case 2:

      reader_lr();

      //讀者登錄或注冊(cè)

      break;

      case 0:

      exit(1);

      //退出系統(tǒng)

      break;

      default:

      cout<<”nt您的操作有誤,請(qǐng)重新選擇(0→2): “;

      goto choice;

      } } void admin_menu()

      //管理員管理菜單

      {

      system(”cls“);

      system(”color f9“);

      cout<<”t

      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      系★統(tǒng)★管★理★界★面

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      1: 添加新的圖書(shū)資料

      2: 修改已有圖書(shū)資料

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      3: 刪除已有圖書(shū)資料

      4: 查找已有圖書(shū)資料

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      5: 查看所有圖書(shū)資料

      6: 修改讀者用戶信息

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      7: 刪除讀者用戶信息

      8: 查看所有讀者信息

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      9: 返回系統(tǒng)登錄界面

      0: 退出圖書(shū)管理系統(tǒng)

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      cout<<”nt請(qǐng)選擇您需要的服務(wù)序號(hào): “;choice: cin>>choice;

      cin.ignore();

      switch(choice)

      {

      case 1:

      //添加圖書(shū)

      addBook();

      bm.~BookManage();

      break;

      case 2:

      //修改圖書(shū)

      reviseBook();

      bm.~BookManage();

      break;

      case 3:

      //刪除圖書(shū)

      delBook();

      bm.~BookManage();

      break;

      case 4:

      //查找圖書(shū)

      absearch_menu();

      break;

      case 5:

      //查看全部圖書(shū)

      bm.show_book();

      cout<<”nt顯示完畢!“;

      system(”pause“);

      admin_menu();

      break;

      case 6:

      //修改讀者

      reviseReader();

      rm.~ReaderManage();

      break;

      case 7:

      //刪除讀者

      delReader();

      rm.~ReaderManage();

      break;

      case 8: //查看所有讀者

      rm.show_reader();

      cout<<”nt顯示完畢!“;

      system(”pause“);

      admin_menu();

      break;

      case 9: //返回系統(tǒng)登錄界面

      system(”cls“);

      log_menu();

      case 0: //退出系統(tǒng)

      exit(1);

      break;

      default:

      cout<<”nt您的操作有誤,請(qǐng)重新選擇(0→7): “;

      goto choice;

      } } void reader_menu()

      //讀者服務(wù)菜單

      {

      system(”cls“);

      system(”color f9“);

      cout<<”t

      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      讀★者★服★務(wù)★界★面

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      1: 借 閱 圖 書(shū)

      2: 歸 還 圖 書(shū)

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      3: 查 找 圖 書(shū)

      4: 借 閱 情 況

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      5: 返 上 一 級(jí)

      0: 退 出 系 統(tǒng)

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      cout<<”nt請(qǐng)選擇您需要的服務(wù)序號(hào): “;choice: cin>>choice;

      cin.ignore();

      switch(choice)

      {

      case 1:

      cout<<”nt請(qǐng)輸入您欲借閱的圖書(shū)書(shū)號(hào): “;

      bm.br_book();

      bm.~BookManage();

      break;

      case 2:

      cout<<”nt請(qǐng)輸入您欲歸還的圖書(shū)書(shū)號(hào): “;

      bm.br_book();

      bm.~BookManage();

      break;

      case 3:

      bsearch_menu();

      break;

      case 4:

      rn_search();

      break;

      case 5:

      system(”cls“);

      reader_lr();

      break;

      case 0:

      exit(1);

      break;

      default:

      cout<<”nt您的操作有誤,請(qǐng)重新選擇(0→5):

      goto choice;

      } } void bsearch_menu()

      //讀者查找書(shū)籍菜單

      {

      system(“color f2”);

      cout<<“ttt☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n”;cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      書(shū)★籍★查★找★界★面

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      1: 按 書(shū)號(hào)查找

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      2: 按 書(shū)名查找

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      3: 按 作者查找

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      4: 返 回 上 級(jí)

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      0: 退 出 系 統(tǒng)

      ☆n”;cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n”;

      int bsc;//book search choice cout<<“nt請(qǐng)輸入您需要的服務(wù)序號(hào): ”;

      cin>>bsc;

      cin.ignore();

      switch(bsc){

      case 1:

      bnu_search();

      break;

      case 2:

      bna_search();

      “;

      break;

      case 3:

      bau_search();

      break;

      case 4:

      reader_menu();

      break;

      case 5:

      exit(1);

      default:

      cout<<”nt操作有誤,請(qǐng)重新選擇<0→4>“;

      break;

      }

      }

      void absearch_menu()

      //管理員查找書(shū)籍菜單

      {

      system(”color f2“);

      cout<<”ttt☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      書(shū)★籍★查★找★界★面

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      1: 按 書(shū)號(hào)查找

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      2: 按 書(shū)名查找

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      3: 按 作者查找

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      4: 返 回 上 級(jí)

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      0: 退 出 系 統(tǒng)

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆n“;

      int bsc;//book search choice

      cout<<”nt請(qǐng)輸入您需要的服務(wù)序號(hào): “;

      cin>>bsc;

      cin.ignore();

      switch(bsc)

      {

      case 1:

      bnu_search();

      break;

      case 2:

      bna_search();

      break;

      case 3:

      bau_search();

      break;

      case 4:

      admin_menu();

      break;

      case 5:

      exit(1);

      default:

      cout<<”nt操作有誤,請(qǐng)重新選擇<0→4>“;

      break;

      }

      } void reader_lr()//讀者登錄或注冊(cè)菜單 {

      system(”cls“);

      header();

      system(”color f1“);

      cout<<”nttt< 讀

      面 >n“;

      cout<<”nttt

      1: 登

      錄t2: 注

      冊(cè)nnttt

      3: 返

      回t0: 退

      出nt您的選擇是: “;

      int rlc;//reader login choice choice: cin>>rlc;

      cin.ignore();

      switch(rlc)

      {

      case 1:

      //已注冊(cè)讀者登錄

      cout<<”nt請(qǐng)輸入您的姓名: “;

      char rn[10];//reader name

      cin>>rn;

      r.set_rname(rn);

      if(rm.log_reader(r))

      {

      cout<<”nt登錄成功!“;

      system(”pause“);

      reader_menu();

      }

      else

      cout<<”nt登錄失敗!新用戶請(qǐng)先注冊(cè)!“;

      system(”pause“);

      reader_lr();

      break;

      case 2:

      //新用戶注冊(cè)

      rm.reg_reader();

      rm.~ReaderManage();

      system(”pause“);

      reader_lr();

      break;

      case 3:

      system(”cls“);

      log_menu();

      case 0:

      exit(1);

      break;

      default:

      cout<<”nt您的操作有誤,請(qǐng)重新選擇(0→2):

      goto choice;

      } } void log_admin()

      //管理員登錄

      {

      cout<<“nt請(qǐng)輸入管理員密碼:”;

      int key;

      cin>>key;

      if(key==14125)

      {

      cout<<“nt登錄成功!nnt”;

      system(“pause”);

      admin_menu();

      //管理員操作菜單

      }

      else

      {cout<<“nt登錄失敗!原因是密碼錯(cuò)誤!n”;

      cout<<“nt請(qǐng)選擇 <1:返回上一級(jí)菜單

      0:退出系統(tǒng)>

      cin>>choice;

      cin.ignore();

      switch(choice)

      ”;“;

      {

      case 1:

      system(”cls“);

      log_menu();

      break;

      case 0:

      exit(1);

      break;

      default:

      cout<<”nt操作有誤,請(qǐng)重新選擇(0/1)“;

      }

      } } void rn_search()

      //按書(shū)號(hào)查找函數(shù)

      {

      char rn[10];//reader name

      cout<<”nt請(qǐng)輸入您的姓名:“;

      cin>>rn;

      int index=bm.rn_search(rn);

      if(index>=0)

      bm.show_book(index);

      else

      cout<<”nt對(duì)不起,系統(tǒng)無(wú)您的借閱記錄!“;

      cout<<”nt“;

      system(”pause“);

      reader_menu();

      } void bnu_search()

      //按書(shū)號(hào)查找函數(shù)

      {

      char bnu[10];

      cout<<”nt請(qǐng)輸入您要查找的書(shū)號(hào):“;

      cin>>bnu;

      int index=bm.bnu_search(bnu);

      if(index>=0)

      bm.show_book(index);

      else

      cout<<”nt對(duì)不起,系統(tǒng)無(wú)該書(shū)籍記錄!“;

      cout<<”nt“;

      system(”pause“);

      bsearch_menu();

      }

      void bna_search()

      //按書(shū)名查找函數(shù)

      {

      cout<<”nt請(qǐng)輸入您要查找的書(shū)名:“<

      char bna[20];

      cin>>bna;

      int index=bm.bna_search(bna);

      if(index>=0)

      bm.show_book(index);

      else

      cout<<”nt對(duì)不起,系統(tǒng)無(wú)該書(shū)籍記錄!“;

      cout<<”nt“;

      system(”pause“);

      bsearch_menu();

      }

      void bau_search()

      //按作者查找函數(shù)

      {

      cout<<”nt請(qǐng)輸入您要查找的作者:“<

      char bau[10];

      cin>>bau;

      int index=bm.bau_search(bau);

      if(index>=0)

      bm.show_book(index);

      else

      cout<<”nt對(duì)不起,系統(tǒng)無(wú)該書(shū)籍記錄!“;

      cout<<”nt“;

      system(”pause“);

      bsearch_menu();

      }

      void addBook()

      //新增書(shū)籍函數(shù)

      { char numb[10];

      //書(shū)號(hào)

      char nameb[20];

      //書(shū)名

      char authorb[10];//作者

      Book book;

      //書(shū)籍結(jié)構(gòu)體對(duì)象book

      int tag1;input1:cout<<”nt請(qǐng)輸入新書(shū)書(shū)號(hào):“;

      cin>>numb;

      int index=bm.bnu_search(numb);

      if(index==-1)

      {

      cout<<”nt系統(tǒng)目前尚無(wú)該書(shū)記錄,您可以繼續(xù)操作!n“;

      cout<<”nt請(qǐng)輸入新書(shū)書(shū)名:“;

      cin>>nameb;

      cout<<”nt請(qǐng)輸入新書(shū)作者:“;

      cin>>authorb;

      tag1=0;

      book.set_bnum(numb);

      book.set_bname(nameb);

      book.set_bauthor(authorb);

      book.set_tag(tag1);

      bm.add(book);

      cout<<”nt恭喜您!新書(shū)資料錄入成功!“;

      }

      else

      {

      cout<<”nt對(duì)不起,該書(shū)號(hào)紀(jì)錄已存在!請(qǐng)重新輸入!“;

      goto input1;

      }

      system(”pause“);

      admin_menu();} void reviseBook()

      //修改書(shū)籍函數(shù)

      {

      char numb[10];

      char nameb[20];

      char authorb[10];

      Book book;

      int index=-1;input2: cout<<”nt請(qǐng)輸入您要修改書(shū)籍的書(shū)號(hào):“;

      cin>>numb;

      index=bm.bnu_search(numb);

      if(index==-1)

      {

      cout<<”nt對(duì)不起,您輸入的書(shū)號(hào)不存在,請(qǐng)重新輸入!“<

      goto input2;

      return;

      }

      bool sta=bm.in(index);//判斷是否在館

      if(sta)

      { cout<<”nt該書(shū)目前處于<在架>狀態(tài),您可以繼續(xù)操作!“;

      cout<<”nt請(qǐng)輸入更改后的書(shū)名:“;

      cin>>nameb;

      cout<<”nt請(qǐng)輸入更改后的作者:“;

      cin>>authorb;

      book.set_bnum(numb);

      book.set_bname(nameb);

      book.set_bauthor(authorb);

      bm.revise(book,index);

      cout<<”nt恭喜您!書(shū)籍資料修改成功!“;}

      else

      cout<<”nt該書(shū)已被借出,請(qǐng)于讀者歸還后再進(jìn)行相關(guān)操作!“<

      system(”pause“);

      admin_menu();

      } void delBook()

      //刪除書(shū)籍函數(shù)

      {

      char numb[10];

      cout<<”nt請(qǐng)輸入您要?jiǎng)h除書(shū)籍的書(shū)號(hào):“;

      cin>>numb;

      int index=bm.bnu_search(numb);

      if(index>=0)

      {

      cout<<”nt您確定要?jiǎng)h除該書(shū)記錄嗎(y/n)

      “;

      char y;

      cin>>y;

      if(y=='y'||y=='Y')

      {

      bm.deleteBook(index);

      cout<<”nt刪除成功!“;

      }

      else

      cout<<”nt刪除取消!“;

      }

      else

      cout<<”nt對(duì)不起,系統(tǒng)沒(méi)有該圖書(shū)記錄!“;

      system(”pause“);

      admin_menu();

      } void reviseReader()//修改讀者用戶函數(shù)

      {

      char namer[10];

      Reader reader;get1:

      cout<<”nt請(qǐng)輸入你要修改讀者用戶的姓名: “;

      cin>>namer;

      int index=rm.search(namer);

      if(index==-1)

      {

      cout<<”nt對(duì)不起,系統(tǒng)無(wú)改讀者記錄,重新輸入請(qǐng)按1,返回請(qǐng)按0:

      int a;

      cin>>a;get2:

      cin.ignore();

      switch(a)

      {

      case 1:

      goto get1;

      break;

      case 0:

      system(“pause”);

      admin_menu();

      break;

      default:

      cout<<“nt您的操作有誤,請(qǐng)重新選擇(0/1):

      ”;

      goto get2;

      }

      return;

      }

      “;

      else

      {

      char namer[10];

      char classr[10];

      char telr[10];

      Reader reader;

      cout<<”nt請(qǐng)輸入更改后的讀者姓名:“;

      cin>>namer;

      cout<<”nt請(qǐng)輸入更改后的班級(jí)名稱:“;

      cin>>classr;

      cout<<”nt請(qǐng)輸入更改后的聯(lián)系電話:“;

      cin>>telr;

      reader.set_rname(namer);

      reader.set_rclass(classr);

      reader.set_rtel(telr);

      cout<<”nt是否真的修改該記錄(y/n?):“;

      char y;

      cin>>y;

      if(y=='y'||y=='Y')

      { rm.revise(reader,index);

      cout<<”nt修改成功!n“;

      }

      else

      cout<<”nt操作取消!n“;

      }

      system(”pause“);

      admin_menu();

      }

      void delReader()

      //刪除讀者用戶函數(shù)

      {

      cout<<”nt請(qǐng)輸入您要?jiǎng)h除的讀者用戶的姓名:“<

      char namer[10];

      cin>>namer;

      int index=rm.search(namer);

      if(index>=0)

      {

      cout<<”nt是否真的刪除該記錄(y/n?): “;

      char y;

      cin>>y;

      if(y=='y'||y=='Y')

      {

      rm.delete_reader(index);

      cout<<”nt刪除成功!n“;

      }

      else

      cout<<”nt操作取消!n“;

      }

      else

      cout<<”nt對(duì)不起,系統(tǒng)尚無(wú)該讀者記錄!“;

      system(”pause“);

      admin_menu();

      } };//********主函數(shù)******** int main(){

      system(”color fd“);Menu menu;//定義菜單結(jié)構(gòu)體對(duì)象menu

      cout<<”ttt 文計(jì)091-1 龐麗萍 200990514125

      “;cout<<”ttt

      當(dāng)前日期:2011-6-22 星期三“;cout<<”ttt

      當(dāng)前時(shí)間:08:00

      “;cout<<”nttt

      ★ 歡 “;cout<<”★ 迎 “;

      } cout<<”★ 進(jìn) “;cout<<”★ 入 ★nn";menu.log_menu();return 0;四.程序正確性驗(yàn)證

      1主頁(yè)面

      2.管理員登陸頁(yè)面

      3.圖書(shū)添加

      五.課程設(shè)計(jì)過(guò)程中出現(xiàn)的問(wèn)題、原因及解決方法

      1.用戶登錄密碼時(shí),不能使用暗碼來(lái)保護(hù)密碼。(未解決成功)2.每個(gè)界面都能退出到主頁(yè)面,而不是直接跳出系統(tǒng)。(以解決)3.書(shū)名字長(zhǎng)太多影響書(shū)籍、作者、數(shù)量等之間的一一對(duì)應(yīng)關(guān)系。(為解決成功)

      六.課程設(shè)計(jì)的主要收獲

      通過(guò)這幾天學(xué)習(xí)設(shè)計(jì)圖書(shū)信息管理系統(tǒng),認(rèn)識(shí)到一切看似簡(jiǎn)單的事情只有自己動(dòng)手做,明白了其中的原理才會(huì)更好的把它變成自己的東西。圖書(shū)管理系統(tǒng)主要用到了文件的輸入輸出,以及利用簡(jiǎn)單的順序查找知識(shí),加深了對(duì)數(shù)據(jù)結(jié)構(gòu)的理解與應(yīng)用。對(duì)于這次的課程設(shè)計(jì),首先,許多知識(shí)不僅僅只是課本上的,需要我們自己去圖書(shū)館或網(wǎng)上收集資料。其次,編程過(guò)程終遇到各種錯(cuò)誤,需要我們耐心分析,討論,最后得出正確結(jié)果。第三,程序無(wú)錯(cuò),進(jìn)行調(diào)試,然后進(jìn)行加工修改優(yōu)化。

      七.對(duì)今后課程設(shè)計(jì)的建議

      希望老師可以分小組做課程設(shè)計(jì),題目可以相應(yīng)的增大難度。分組可以鍛煉團(tuán)對(duì)合作能力,隊(duì)員可以相互討論解決問(wèn)題,彼此能夠激發(fā)更多的思想,做出更完善的作品,同時(shí)也防止了互相拷貝的情況,讓每個(gè)同學(xué)都積極的參與到設(shè)計(jì)中,而不是坐享其成。

      第五篇:圖書(shū)管理系統(tǒng)_畢業(yè)設(shè)計(jì)論文_摘要

      畢業(yè)設(shè)計(jì)論文

      圖書(shū)管理系統(tǒng)

      學(xué)生姓名:班級(jí):學(xué)號(hào):指導(dǎo)教師: 指導(dǎo)單位:

      [摘要]

      隨著管理系統(tǒng)的不斷發(fā)展,計(jì)算機(jī)在管理系統(tǒng)中起著舉足輕重的作用。為了減輕人工操作管理圖書(shū)的負(fù)擔(dān),提高圖書(shū)管理工作的效率,本文利用Visual FoxPro6.0為開(kāi)發(fā)工具開(kāi)發(fā)了一個(gè)適用于高校的圖書(shū)管理系統(tǒng),該系統(tǒng)能完成不同級(jí)別人員的圖書(shū)管理工作。并以ASP為開(kāi)發(fā)工具建立了圖書(shū)借閱信息的網(wǎng)絡(luò)查詢功能。

      [Abstract]

      Along with the development of management system,computer plays a very important role in management system.For reducing the burden of people’s operation and improving the efficiency of people’s management, this thesis makes use of the tool of Visual FoxPro6.0 to create a book management system, which can be used by people of all ranks.And this system links a powerful inquiring program through the Internet created by ASP.關(guān)鍵字:

      Book management system圖書(shū)管理系統(tǒng)

      Date-base數(shù)據(jù)庫(kù)

      Table表

      Menu菜單

      Inquire查詢

      縮略語(yǔ):

      VFP 6.0Visual FoxPro 6.0

      ASPActive Server Pages活動(dòng)服務(wù)器主頁(yè)

      ODBCOpen Database Connectivity開(kāi)放式數(shù)據(jù)庫(kù)連接性HTMLHyper Text Markup Language超文件標(biāo)記語(yǔ)言

      I

      下載圖書(shū)管理系統(tǒng)課程設(shè)計(jì)摘要word格式文檔
      下載圖書(shū)管理系統(tǒng)課程設(shè)計(jì)摘要.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        C++課程設(shè)計(jì)(簡(jiǎn)單圖書(shū)管理系統(tǒng))

        課 程 設(shè) 計(jì) 課程名稱C++課程設(shè)計(jì) 題目名稱圖書(shū)管理系統(tǒng) 2016 年6 月 29 日目錄 一.設(shè)計(jì)內(nèi)容與要求 .......................................................................

        數(shù)據(jù)庫(kù)課程設(shè)計(jì) 圖書(shū)管理系統(tǒng)(精選)

        課 程 設(shè) 計(jì) 軟件工程與數(shù)據(jù)庫(kù) 課程設(shè)計(jì) 任務(wù)書(shū) 學(xué)院名稱:數(shù)學(xué)與計(jì)算機(jī)學(xué)院 課程代碼:_6014419_ 專業(yè): 年級(jí):一、設(shè)計(jì)題目 圖書(shū)管理系統(tǒng) 二、主要內(nèi)容 一個(gè)簡(jiǎn)單的圖書(shū)管理系統(tǒng)......

        圖書(shū)管理系統(tǒng)課程設(shè)計(jì)(5篇范文)

        秦皇島職業(yè)技術(shù)學(xué)院課程設(shè)計(jì)論文設(shè)計(jì)題目: 圖書(shū)管理系統(tǒng) 學(xué)生姓名:蔡昆 指導(dǎo)教師:劉學(xué)超,李旺彥 專業(yè)名稱: 計(jì)算機(jī)應(yīng)用技術(shù)專業(yè) 所在院系:信息工程系2007 年 7 月5日 摘要 隨著人......

        數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—西文圖書(shū)管理系統(tǒng)

        數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告 課程名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)課設(shè)題目: 西文圖書(shū)管理系統(tǒng) 教師姓名: 郭艷本科生姓名: 王瑞林本科生學(xué)號(hào): 20121002932 班號(hào):191124 日期:2014年6月20日 題號(hào)......

        圖書(shū)管理系統(tǒng)

        七個(gè)文件 1. book.txt存放書(shū)籍2.borrower.txt存放借閱信息3.chenwen.txt 存放開(kāi)始信息 4. mima.txt存放密碼 5.qianyan.txt前言 6.student.txt存放學(xué)生信息7. yuyue.txt......

        圖書(shū)管理系統(tǒng)

        圖書(shū)管理系統(tǒng) 背景:當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代,在各行各業(yè)中離不開(kāi)信息處理,這正是計(jì)算機(jī)被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計(jì)算機(jī)的最大好處在于利用它能夠進(jìn)行信息管理。......

        圖書(shū)管理系統(tǒng)

        經(jīng)過(guò)大學(xué)四年理論課程的學(xué)習(xí),以及校內(nèi)校外的實(shí)踐,極大的豐富了自身的理論基礎(chǔ),并且也具備了一些處理簡(jiǎn)單問(wèn)題的能力,但即將踏上社會(huì)的我深知這還遠(yuǎn)遠(yuǎn)不夠,因此我利用了畢業(yè)設(shè)計(jì)的......

        圖書(shū)管理系統(tǒng)

        目錄 第一章 緒論 ..................................................................................................................................... 1 第二章......