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

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

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

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

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

      Oracle課程設(shè)計 圖書管理系統(tǒng)

      時間:2019-05-14 02:20:44下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《Oracle課程設(shè)計 圖書管理系統(tǒng)》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《Oracle課程設(shè)計 圖書管理系統(tǒng)》。

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

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

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

      組員:尚靖偉(122068)

      張紅凱(122072)班級:計G121班

      信息工程學院計算機系

      2013年6月27日

      “Oracle數(shù)據(jù)庫應用設(shè)計”指導書

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

      目 錄

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

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

      實驗1 實驗2 實驗3 實驗4 實驗5 實驗6 實驗7 實驗8 第2部分

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

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

      I

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

      前 言

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

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

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

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

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

      II

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

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

      實驗1 數(shù)據(jù)庫管理

      目的和要求

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

      實驗準備

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

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

      實驗內(nèi)容

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

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

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

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

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

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

      SHUTDOWN NORMAL

      (2)立即關(guān)閉?;赝嘶顒邮聞仗幚聿嚅_所有已連接的用戶,然后關(guān)閉數(shù)據(jù)庫。立即關(guān)閉的語句如下:

      SHUTDOWN IMMEDIATE

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

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

      SHUTDOWN TRANSACTIONAL

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

      SHUTDOWN ABORT

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

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

      STARTUP NOMOUNT

      (2)啟動數(shù)據(jù)庫實例,裝載數(shù)據(jù)庫,但不打開數(shù)據(jù)庫。通常在數(shù)據(jù)庫維護時執(zhí)行此操作,對應的命令如下:

      STARTUP MOUNT

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

      STARTUP OPEN

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

      (4)強制實例啟動。在遇到特殊異常的情況時,可以強制啟動實例。強制啟動實例的語句如下:

      STARTUP FORCE

      該語句將數(shù)據(jù)庫強行啟動到OPEN模式。

      (5)啟動后限制對數(shù)據(jù)庫實例的訪問。執(zhí)行此操作的命令如下:

      STARTUP RESTRICT

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

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

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

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

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

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

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

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

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

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

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

      (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ù)庫中最大的實例數(shù)量為1。(7)定義存儲數(shù)據(jù)的字符集為US7ASCII。

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

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

      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語句刪除數(shù)據(jù)庫

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

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

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

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

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

      DROP DATABASE;

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

      實驗2 角色和用戶管理

      目的和要求

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

      實驗準備

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

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

      實驗內(nèi)容

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

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

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

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

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

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

      CREATE ROLE UserManRole IDENTIFIED BY myrolepwd;

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

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

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

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

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

      GRANT CONNECT TO UserManRole;GRANT RESOURCE TO UserManRole;

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

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

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

      CREATE USER UserManAdmin IDENTIFIED BY UserPwd

      DEFAULT TABLESPACE USERS

      TEMPORARY TABLESPACE TEMP;

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

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

      GRANT UNLIMITED TABLESPACE TO UserManAdmin;

      4.使用SQL語句指定用戶角色

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

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

      GRANT UserManRole TO UserManAdmin;

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

      實驗3 表和視圖管理

      目的和要求

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

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

      實驗準備

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

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

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

      實驗內(nèi)容

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

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

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

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

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

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

      號 1 2 3 4 字段名稱 UserId UserName UserType UserPwd

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

      用戶編號 用戶名

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

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

      (1)以實驗2中創(chuàng)建的UserManAdmin用戶登錄到SQL*PLUS。(2)使用CREATE TABLE語句創(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語句創(chuàng)建用戶登錄信息表LoginInfo,結(jié)構(gòu)如表2所示。

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

      號 1 2

      字段名稱 UserId LoginTime

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

      明 用戶編號 登錄時間

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

      CREATE TABLE UserManAdmin.LoginInfo(UserId

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

      使用INSERT語句向表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 參照下面的步驟練習使用INSERT語句向表Users中插入數(shù)據(jù)。(1)以實驗2中創(chuàng)建的UserManAdmin用戶登錄到SQL*PLUS。(2)使用INSERT語句向表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語句向表LoginInfo中插入數(shù)據(jù)。內(nèi)容如表4所示。參照下面的步驟練習使用INSERT語句向表LoginInfo中插入數(shù)據(jù)。(1)以實驗2中創(chuàng)建的UserManAdmin用戶登錄到SQL*PLUS。(2)使用INSERT語句向表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語句修改表中的數(shù)據(jù)

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

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

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

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

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

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

      修改表

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

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

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

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

      DELETE FROM UserManAdmin.Users WHERE UserName=‘Zhangsan’

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

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

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

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

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

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

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

      以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)對查詢結(jié)果進行排序。

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

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

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

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

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

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

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

      使用CREATE VIEW語句創(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ù)

      實驗4 索引和序列管理

      目的和要求

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

      (3)學習使用SQL語句創(chuàng)建索引;(4)學習使用SQL語句創(chuàng)建序列。

      實驗準備

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

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

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

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

      實驗內(nèi)容

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

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

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

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

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

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

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

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

      號 1 2 3 4

      字段名稱 EmpId EmpName Sex UserId

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

      明 編號 姓名 性別 用戶編號

      代碼如下:

      CREATE TABLE UserManAdmin.Employees(EmpId

      EmpName Sex

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

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

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

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

      在使用INSERT語句向表Employees中插入數(shù)據(jù)時,可以使用序列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ù)

      實驗5 PL/SQL編程

      目的和要求

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

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

      實驗準備

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

      實驗內(nèi)容

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

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

      1.使用條件語句

      參照下面的步驟練習使用條件語句。

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

      SET ServerOutput ON;DECLARE

      Num INTEGER :=-11;BEGIN

      IF Num < 0 THEN

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

      ELSIF Num > 0 THEN

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

      ELSE

      dbms_output.put_line(‘0’);

      END IF;END;

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

      2.使用分支語句

      參照下面的步驟練習使用分支語句。

      (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 ‘數(shù)據(jù)越界’

      END;

      dbms_output.put_line(Result);END;

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

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

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

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

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

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

      (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ù)字表達式的絕對值。

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

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

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

      ·SYSDATE:返回當前日期和時間。·TO_CHAR:轉(zhuǎn)換日期為字符串。

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

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

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

      參照下面的步驟練習使用系統(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ù)

      實驗6 使用游標、存儲過程和觸發(fā)器

      目的和要求

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

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

      實驗準備

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

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

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

      實驗內(nèi)容

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

      (1)練習創(chuàng)建和使用游標的方法;

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

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

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

      /*打開顯示模式*/ 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 || ‘, 登錄時間:’ || var_LoginRecord.LoginTime);

      END LOOP;END;

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

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

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

      /*創(chuàng)建示例過程ResetPwd,此過程的功能是將表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)用過程。如,要將編號為1(用戶Admin)的用戶密碼重置*/ EXECUTE UserManAdmin.ResetPwd(1);SELECT UserName, UserPwd FROM Users;

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

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

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

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

      (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)建一個觸發(fā)器MyTrigger,它的作用是當表Users中的記錄被刪除后,自動刪除表LoginInfo中對應的用戶登錄記錄,從而保證數(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í)行下面的語句,觀察刪除用戶Users后,在表LoginInfo中是否還存在其登錄的記錄。

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

      SELECT * FROM UserManAdmin.LoginInfo

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

      實驗7 表空間管理

      目的和要求

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

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

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

      實驗準備

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

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

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

      實驗內(nèi)容

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

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

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

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

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

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

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

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

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

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

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

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

      select * from V$tablespace;

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

      3.改變表空間的可用性

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

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

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

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

      4.刪除表空間

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

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

      Drop tablespace newspace;

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

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

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

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

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

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

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

      下:

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

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

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

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

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

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

      select * from V$tablespace;

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

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

      實驗8 文件管理

      目的和要求

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

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

      (5)學習添加、移動、查詢和刪除數(shù)據(jù)文件。

      實驗準備

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

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

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

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

      實驗內(nèi)容

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

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

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

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

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

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

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

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

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

      from

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

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

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

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

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

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

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

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

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

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

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

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

      4.查詢控制文件信息

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

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

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

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

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

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

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

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

      6.使用LogMiner Viewer工具對重做日志文件進行分析

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

      (1)啟動OEM控制臺,登錄Oracle管理服務器。(2)啟動LogMiner Viewer。(3)設(shè)置查詢條件。

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

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

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

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

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

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

      8.移動單個數(shù)據(jù)文件

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

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

      ALTER TABLESPACE dtf offline;

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

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

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

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

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

      (2)通過OEM控制臺刪除某一數(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動態(tài)性能視圖獲得數(shù)據(jù)文件的信息。

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

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

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

      設(shè)計目的

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

      設(shè)計任務

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

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

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

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

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

      設(shè)計題目

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

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

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

      第2部分 Oracle開發(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開發(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開發(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開發(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ù)庫連接語句

      查詢圖書:

      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開發(fā)技術(shù)

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

      OracleDataReader dataReader = dataCommand.ExecuteReader();

      第2部分 Oracle開發(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ù)庫連接類 SqlCommand dataCommand;//數(shù)據(jù)庫命令類

      讀者信息:

      dataConnection.Open();

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

      第2部分 Oracle開發(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;}

      還書:

      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開發(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--;

      實驗總結(jié):

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

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

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

      reader

      SET

      ”UPDATE

      book

      SET

      第二篇:Oracle數(shù)據(jù)庫 圖書管理系統(tǒng)實驗報告

      圖書管理系統(tǒng)(Oracle)

      1、創(chuàng)建表空間student_library

      2、(1)創(chuàng)建表Administrator

      (2)創(chuàng)建表library

      (3)創(chuàng)建表student

      (4)創(chuàng)建表lent_library

      (5)創(chuàng)建表booktype

      3、(1)創(chuàng)建表空間student_library

      create tablespace student_library datafile 'C:oracleproduct10.2.0oradataorclstudent_library' size 100M autoextend on;

      (2)創(chuàng)建表Administrator create table Administrator(AdministratorID number(20)primary key,AdministratorName varchar2(25),sex varchar2(5),beizhu varchar2(30),bookID varchar2(20), foreign key(bookID)references library(bookID))tablespace student_library;

      向Administrator表插入數(shù)據(jù) insert into Administrator values(100421101,'張三','男',' ',100421)insert into Administrator values(100421102,'李四','女',' ',100422)insert into Administrator values(100421103,'王五','男',' ',100423)對Administrator表刪除數(shù)據(jù)

      delete from Administrator where AdministratorID=100421103 ——刪除Administrator表中管理員編號為‘100421103’的一行數(shù)據(jù) 對Administrator表查詢數(shù)據(jù)

      select * from Administrator order by AdministratorID ——按照管理員的ID號對Administrator表進行排列 向Administrator表修改數(shù)據(jù)

      update Administrator set AdministratorName=‘王明’where AdministratorID=100421101 ——對Administrator表中管理員編號為‘100421101’的姓名改為“王明” update Administrator set sex=‘女’where AdministratorID=100421103 ——對Administrator表中管理員編號為‘100421103’的性別改為“女”(3)創(chuàng)建表library create table library(bookID number(20)primary key,bookName varchar2(20),author varchar2(10),press varchar2(20),publishDate varchar2(50),price number(20),leibienumber number(20),state varchar2(8),studentID number(20),foreign key(studentID)references student(studentID))tablespace student_library;

      向library表插入數(shù)據(jù) insert into library

      values(100421,'Oracle數(shù)據(jù)庫管理','馬曉玉','清華大學出版社','2011-11-8',40,'013999',' ',100421203)insert into library

      values(100422,'ASP.NET網(wǎng)站設(shè)計','唐慧','南京大學出版社','2011-5-18',32,'165923',' ',100421205)insert into library

      values(100423,'JavaScript程序設(shè)計','徐元','蘇州大學出版社','2011-2-12',28,'265894',' ',100421207)對library表刪除數(shù)據(jù)

      delete from library where bookID=100422 ——刪除library表中書籍編號為‘100422’的一行數(shù)據(jù) 向library表查詢數(shù)據(jù)

      select bookID,bookName,author,press,publishDate,price from library order by bookID ——查詢library表中的bookID,bookName,author,press,publishDate,price的數(shù)據(jù)根據(jù)書籍的編號進行排序

      向library表修改數(shù)據(jù)

      update library set author=‘張敏’where bookID=100422 ——對library表中書籍編號為‘100422’的作者改為“張敏”

      (4)創(chuàng)建表student create table student(studentID number(20)primary key,studentName varchar2(50),sex varchar2(2),department varchar2(10),studentPhone number(15),borrowID number(20),password number(10))tablespace student_library;

      向student表插入數(shù)據(jù) insert into student values(100421203,'王逸','男','信電系','***','123456','521568')insert into student values(100421205,'劉娟','女','食品系','***','256302','269756')insert into student values(100421207,'張一凡','男','園林園藝系','***','687456','305621')對student表刪除數(shù)據(jù)

      delete from student where studentName=‘張一凡’

      ——刪除student表中學生姓名為‘張一凡’的一行數(shù)據(jù) 向student表修改數(shù)據(jù)

      update student set department=‘經(jīng)貿(mào)系’where studentID=100421205 ——對student表中學生學號為‘100421205’的系部名稱改為“經(jīng)貿(mào)系”

      (5)創(chuàng)建表lent_library create table lent_library(lentID number(20)primary key,bookID number(20),borrowbookID number(20),borrowDate varchar2(50),borrowState varchar2(30),foreign key(bookID)references library(bookID))tablespace student_library;

      向lent_library表插入數(shù)據(jù) insert into lent_library values(12345,'100421','1360','2012-3-15','還未歸還')insert into lent_library values(21350,'100422','2035','2012-1-6','已經(jīng)歸還')insert into lent_library values(13056,'100423','1503','2012-3-22','還未歸還')向lent_library表刪除數(shù)據(jù) delete from lent_library where bookID=‘100423’

      ——刪除lent_library表中書籍編號為‘100423’的一行數(shù)據(jù) 向lent_library表查詢數(shù)據(jù)

      select lentID,bookID,borrowbookID,borrowState from lent_library where bookID=‘10042%’ ——查詢lent_library表中的lentID,bookID,borrowbookID,borrowState數(shù)據(jù)根據(jù)書籍編號前五位數(shù)位‘10042’進行排序

      (6)創(chuàng)建表booktype create table booktype(Leibienumber number(20)primary key,booktype varchar2(20))tablespace student_library;

      向booktype表插入數(shù)據(jù) insert into booktype values('4630','文學類')insert into booktype values('1623','科普類')insert into booktype values('2412','理工科類')向booktype表刪除數(shù)據(jù)

      delete from booktype where leibienumber=‘1623’

      ——刪除booktype表中類別編號為‘1623’的一行數(shù)據(jù) 向booktype表修改數(shù)據(jù)

      update booktype set booktype=‘計算機類’where leibienumber=‘2412’ ——對booktype表中類別編號為‘2412’的書籍類型改為“計算機類”

      4、(1)創(chuàng)建索引

      【1】create index AdministratorID _index on Administrator(AdministratorID)tablespace users;

      —在Administrator表的AdministratorID列創(chuàng)建一個名為Aid_index的索引

      【2】create bitmap index studentName_index on student(studentName)tablespace users;—在student表的學生姓名列上創(chuàng)建位圖索引

      (2)創(chuàng)建視圖

      create or replace view view_library as select bookID,bookName,author,press,publishDate,price from library;—創(chuàng)建視圖view_library,查詢library表中的bookID,bookName,author,press,publishDate,price

      5、(1)創(chuàng)建匿名塊

      set serveroutput on declare out_text varchar2(50);begin out_text:='程序塊示例';dbms_output.put_line(out_text);exception when others then dbms_output.put_line('捕獲一個異常');end;

      (2)創(chuàng)建存儲過程

      create or replace procedure InsertAdministrator as begin insert into Administrator(AdministratorID,administratorName,sex)values(100421105,'李凡','男');exception when dup_val_on_index then

      dbms_output.put_line('重復的編號');when others then

      dbms_output.put_line('發(fā)生其他錯誤!');end InsertAdministrator;—創(chuàng)建一個存儲過程InsertAdministrator,向Administrator表的AdministratorID,administratorName和sex列分別插入數(shù)據(jù)100421105,李凡和男三個值。

      (3)創(chuàng)建函數(shù)

      create or replace function Factorial(n in number)return number as result number: =1;begin for i in 1...n loop result: =result*i;end loop;return(result);end Factorial;(4)創(chuàng)建觸發(fā)器 create table student_log(studentID number(20),studentName varchar2(50),sex varchar2(2),department varchar2(10));—創(chuàng)建一個日志表,記錄對student表所做的修改,日志表名為student_log create or replace trigger insertlog_trigger after insert on student begin insert into student_log values(100421230,'路奇', '女', '園林系');end;—在student表上創(chuàng)建一個語句級Insert觸發(fā)器

      6、用戶權(quán)限和角色管理

      (1)創(chuàng)建用戶user_student create user user_student identified by student default tablespace student_library

      (2)為用戶user_student設(shè)置系統(tǒng)權(quán)限 grant create session to user_student;

      (3)為用戶user_student撤銷系統(tǒng)權(quán)限

      revoke create session from user_student;

      (4)創(chuàng)建角色user_library

      create role user_library identified by student

      (5)為角色user_library授予權(quán)限

      grant user_library to public;

      (6)啟用角色user_library

      set role user_library identified by student

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

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

      課程設(shè)計報告書

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

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

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

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

      (一)管理員功能:

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

      ②添加新書:增加新的圖書資料,同時需檢查新書的圖書編號是否已存在于原圖書資料中,若已存在則應取消添加或提示重新輸入。

      ③修改圖書:通過編號查詢該圖書資料,若該編號存在,則顯示已有信息,允許修改,否則提示 無該圖書信息。

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

      ⑤查找圖書:

      A.按書號查找:通過編號查詢該圖書資料,若該編號存在,則顯示圖書信息,否則提示無該圖書信息。

      B.按書名查找:通過書名查詢該圖書資料,若該編號存在,則顯示圖書信息,否則提示無該圖書信息。

      C.按作者查找:通過作者查詢該圖書資料,若該編號存在,則顯示圖書信息,否則提示無該圖書信息。

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

      ⑦修改讀者:通過姓名查詢該讀者信息,若該姓名存在,則顯示已有信息,允許修改,否則提示無該讀者信息。

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

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

      (二)讀者功能:

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

      A.輸入所需圖書編號,判斷該編號是否存在,若不存在則提示重新輸入。

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

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

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

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

      A.按書號查找:通過編號查詢該圖書資料,若該編號存在,則顯示圖書信息,否則提示無該圖書信息。

      B.按書名查找:通過書名查詢該圖書資料,若該編號存在,則顯示圖書信息,否則提示無該圖書信息。

      C.按作者查找:通過作者查詢該圖書資料,若該編號存在,則顯示圖書信息,否則提示無該圖書信息。

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

      三.算法設(shè)計

      1.流程圖(部分示例)

      ①管理員登錄

      ②讀者登錄

      ③讀者借閱圖書

      ④管理員或讀者按書名查找圖書

      2.代碼實現(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ù),實現(xiàn)數(shù)據(jù)初始化

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

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

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

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

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

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

      {strcpy(rclass,rc);}

      char *get_rclass()

      //獲得班級

      {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)體,實現(xiàn)對讀者用戶的管理********* class ReaderManage {

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

      int length;

      void readFile()

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

      {

      ifstream fread;//定義輸入文件流對象fread

      length=0;

      //計數(shù)

      if(!fread)

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

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

      int i=0;

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

      i++;

      length=i;

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

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

      {

      ofstream fwrite;

      //定義輸出文件流對象fwrite

      if(!fwrite)

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

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

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

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

      } public:

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

      {readFile();}

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

      {saveFile();}

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

      {

      if(length>=50)

      {cout<<”對不起,注冊人數(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ù),相當于遍歷

      {

      for(int i=0;i

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

      return true;

      return false;

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

      {

      char n[10];

      //姓名name

      char c[10];

      //班級class

      char t[10];

      //電話tel

      Reader reader;

      cout<<”nt請輸入您的姓名:“;

      cin>>n;

      cout<<”nt請輸入您的所在班級:“;

      cin>>c;

      cout<<”nt請輸入您的聯(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è)置讀者班級函數(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注冊成功!“;} void show_reader()//不帶參的顯示讀者信息函數(shù)

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

      cout<<”姓名ttt班級ttt電話n“;

      for(int i=0;i

      {

      cout<

      cout<<”ttt“<

      cout<<”ttt“<

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

      {

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

      cout<<”姓名ttt班級ttt電話n“;

      cout<

      cout<<”ttt“<

      cout<<”ttt“<

      }

      };

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

      char bnum[10];

      //書號

      char bname[20];

      //書名

      char bauthor[10];

      //作者

      char rname[10];

      //借閱人 public: int tag;

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

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

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

      void set_bnum(char *no)

      //設(shè)置書號

      {strcpy(bnum,no);}

      //把字符串no中的字符復制到字符串bnum中

      char *get_bnum()

      //獲得書號

      {

      return bnum;}

      //返回值為bnum

      void set_bname(char *n)

      //設(shè)置書名

      {strcpy(bname,n);}

      char *get_bname()

      //獲得書名

      {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()

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

      {

      if(tag==1)

      {cout<<”已借“;}

      else

      {cout<<”在架“;}

      }

      void copy(Book m)

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

      {

      strcpy(bnum,m.get_bnum());

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

      strcpy(bname,m.get_bname());

      strcpy(bauthor,m.get_bauthor());

      tag=0;

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

      Book books[100];

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

      int length;

      void saveFile()

      //保存書籍文件

      {

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

      if(!fwrite)

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

      }

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

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

      fwrite.close();

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

      } void readFile()

      //讀取書籍文件

      {

      ifstream fread;//定義輸入文件流對象fread

      length=0;

      if(!fread)

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

      Book temp;

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

      int i=0;

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

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

      i++;

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

      length=i;

      fread.close();} public:

      BookManage()

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

      {

      length=0;

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

      readFile();

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

      }

      ~BookManage()

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

      {

      saveFile();

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

      }

      bool add(Book book)

      //添加圖書資料

      {

      if(length>=100)

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

      return-1;

      }

      else

      {

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

      length++;

      return(length-1);

      } } int bnu_search(char *bnu)

      //按書號查找書籍

      {

      for(int i=0;i

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

      return i;

      return-1;

      } int bna_search(char *bna)

      //按書名查找書籍

      {

      for(int i=0;i

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

      return i;

      return-1;

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

      {

      for(int i=0;i

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

      return i;

      return-1;

      }

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

      {

      for(int i=0;i

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

      return i;

      return-1;

      }

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

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

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

      {

      for(int i=index;i

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

      length--;

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

      {

      cout<<” ☆☆☆☆☆☆☆☆☆☆☆書★★籍★★信★★息★★列★★表☆☆☆☆☆☆☆☆☆☆☆nn“;

      cout<<”書號“;

      cout.width(10);

      cout<<”書名“;

      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ù)

      { cout<<” ☆☆☆☆☆☆☆☆☆☆☆書★★籍★★信★★息★★列★★表☆☆☆☆☆☆☆☆☆☆☆nn“;

      cout<<”書號“;

      cout.width(10);

      cout<<”書名“;

      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ù)

      {

      ReaderManage reader;

      int choi;//選擇

      int a;

      //圖書狀態(tài)指標(1已借2在架)

      char sh[10];//需要還書的書號

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

      cin>>sh;

      int index=bnu_search(sh);//定義一個變量等于查找到的書號

      if(index>=0)

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

      a=1;

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

      a=2;

      switch(a)

      { case 1:

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

      cout<<”nt請選擇您需要的服務:1:還書

      0:返回n“;

      cin>>choi;

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

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

      {

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

      return;

      }

      else if(choi==1)

      {

      cout<<”nt請輸入您的姓名:“;

      cin>>dz;

      cin.ignore();

      int index1=reader.search(dz);

      if(index1==-1)

      {

      cout<<”nt對不起,系統(tǒng)無該讀者記錄,新用戶請先注冊!“;

      return;

      }

      else

      {

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

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

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

      cout<<”nt還書成功!“<

      }

      }break;

      case 2:

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

      cout<<”nt請您需要的服務:1:借書

      0:返回n“;

      cin>>choi;

      cin.ignore();

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

      {

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

      return;

      }

      else if(choi==1)

      {

      cout<<”nt請輸入您的姓名:“;

      cin>>dz;

      int index1=reader.search(dz);

      if(index1==-1)

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

      return;

      }

      else

      {

      books[index].set_rname(dz);

      books[index].set_tag(1);

      cout<<”nt借書成功!“<

      }

      }break;

      }

      }

      else

      {

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

      }

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

      {

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

      return false;

      return true;

      }

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

      BookManage bm;

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

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

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

      //菜單序號選擇

      int key;

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

      //頁眉

      {

      system(”color fd“);

      cout<<”t

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

      cout<<”t

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      統(tǒng)

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

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

      //主界面登錄菜單

      {

      system(”color fd“);

      header();

      cout<<”nttt< 請

      份 >n“;

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

      者nntttt0: 退

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

      cin.ignore();

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

      switch(choice)

      {

      case 1:

      log_admin();

      //管理員登錄,需密碼驗證

      break;

      case 2:

      reader_lr();

      //讀者登錄或注冊

      break;

      case 0:

      exit(1);

      //退出系統(tǒng)

      break;

      default:

      cout<<”nt您的操作有誤,請重新選擇(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: 添加新的圖書資料

      2: 修改已有圖書資料

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      3: 刪除已有圖書資料

      4: 查找已有圖書資料

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      5: 查看所有圖書資料

      6: 修改讀者用戶信息

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      7: 刪除讀者用戶信息

      8: 查看所有讀者信息

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

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

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

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

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

      cout<<”nt請選擇您需要的服務序號: “;choice: cin>>choice;

      cin.ignore();

      switch(choice)

      {

      case 1:

      //添加圖書

      addBook();

      bm.~BookManage();

      break;

      case 2:

      //修改圖書

      reviseBook();

      bm.~BookManage();

      break;

      case 3:

      //刪除圖書

      delBook();

      bm.~BookManage();

      break;

      case 4:

      //查找圖書

      absearch_menu();

      break;

      case 5:

      //查看全部圖書

      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您的操作有誤,請重新選擇(0→7): “;

      goto choice;

      } } void reader_menu()

      //讀者服務菜單

      {

      system(”cls“);

      system(”color f9“);

      cout<<”t

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

      cout<<”t

      ☆n“;

      cout<<”t

      讀★者★服★務★界★面

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      1: 借 閱 圖 書

      2: 歸 還 圖 書

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      3: 查 找 圖 書

      4: 借 閱 情 況

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      5: 返 上 一 級

      0: 退 出 系 統(tǒng)

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

      ☆n“;

      cout<<”t

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

      cout<<”nt請選擇您需要的服務序號: “;choice: cin>>choice;

      cin.ignore();

      switch(choice)

      {

      case 1:

      cout<<”nt請輸入您欲借閱的圖書書號: “;

      bm.br_book();

      bm.~BookManage();

      break;

      case 2:

      cout<<”nt請輸入您欲歸還的圖書書號: “;

      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您的操作有誤,請重新選擇(0→5):

      goto choice;

      } } void bsearch_menu()

      //讀者查找書籍菜單

      {

      system(“color f2”);

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

      ☆n”;

      cout<<“ttt☆

      書★籍★查★找★界★面

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      1: 按 書號查找

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      2: 按 書名查找

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      3: 按 作者查找

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      4: 返 回 上 級

      ☆n”;

      cout<<“ttt☆

      ☆n”;

      cout<<“ttt☆

      0: 退 出 系 統(tǒng)

      ☆n”;cout<<“ttt☆

      ☆n”;

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

      int bsc;//book search choice cout<<“nt請輸入您需要的服務序號: ”;

      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操作有誤,請重新選擇<0→4>“;

      break;

      }

      }

      void absearch_menu()

      //管理員查找書籍菜單

      {

      system(”color f2“);

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

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      書★籍★查★找★界★面

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      1: 按 書號查找

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      2: 按 書名查找

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      3: 按 作者查找

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      4: 返 回 上 級

      ☆n“;

      cout<<”ttt☆

      ☆n“;

      cout<<”ttt☆

      0: 退 出 系 統(tǒng)

      ☆n“;

      cout<<”ttt☆

      ☆n“;

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

      int bsc;//book search choice

      cout<<”nt請輸入您需要的服務序號: “;

      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操作有誤,請重新選擇<0→4>“;

      break;

      }

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

      system(”cls“);

      header();

      system(”color f1“);

      cout<<”nttt< 讀

      面 >n“;

      cout<<”nttt

      1: 登

      錄t2: 注

      冊nnttt

      3: 返

      回t0: 退

      出nt您的選擇是: “;

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

      cin.ignore();

      switch(rlc)

      {

      case 1:

      //已注冊讀者登錄

      cout<<”nt請輸入您的姓名: “;

      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登錄失敗!新用戶請先注冊!“;

      system(”pause“);

      reader_lr();

      break;

      case 2:

      //新用戶注冊

      rm.reg_reader();

      rm.~ReaderManage();

      system(”pause“);

      reader_lr();

      break;

      case 3:

      system(”cls“);

      log_menu();

      case 0:

      exit(1);

      break;

      default:

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

      goto choice;

      } } void log_admin()

      //管理員登錄

      {

      cout<<“nt請輸入管理員密碼:”;

      int key;

      cin>>key;

      if(key==14125)

      {

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

      system(“pause”);

      admin_menu();

      //管理員操作菜單

      }

      else

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

      cout<<“nt請選擇 <1:返回上一級菜單

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

      cin>>choice;

      cin.ignore();

      switch(choice)

      ”;“;

      {

      case 1:

      system(”cls“);

      log_menu();

      break;

      case 0:

      exit(1);

      break;

      default:

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

      }

      } } void rn_search()

      //按書號查找函數(shù)

      {

      char rn[10];//reader name

      cout<<”nt請輸入您的姓名:“;

      cin>>rn;

      int index=bm.rn_search(rn);

      if(index>=0)

      bm.show_book(index);

      else

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

      cout<<”nt“;

      system(”pause“);

      reader_menu();

      } void bnu_search()

      //按書號查找函數(shù)

      {

      char bnu[10];

      cout<<”nt請輸入您要查找的書號:“;

      cin>>bnu;

      int index=bm.bnu_search(bnu);

      if(index>=0)

      bm.show_book(index);

      else

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

      cout<<”nt“;

      system(”pause“);

      bsearch_menu();

      }

      void bna_search()

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

      {

      cout<<”nt請輸入您要查找的書名:“<

      char bna[20];

      cin>>bna;

      int index=bm.bna_search(bna);

      if(index>=0)

      bm.show_book(index);

      else

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

      cout<<”nt“;

      system(”pause“);

      bsearch_menu();

      }

      void bau_search()

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

      {

      cout<<”nt請輸入您要查找的作者:“<

      char bau[10];

      cin>>bau;

      int index=bm.bau_search(bau);

      if(index>=0)

      bm.show_book(index);

      else

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

      cout<<”nt“;

      system(”pause“);

      bsearch_menu();

      }

      void addBook()

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

      { char numb[10];

      //書號

      char nameb[20];

      //書名

      char authorb[10];//作者

      Book book;

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

      int tag1;input1:cout<<”nt請輸入新書書號:“;

      cin>>numb;

      int index=bm.bnu_search(numb);

      if(index==-1)

      {

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

      cout<<”nt請輸入新書書名:“;

      cin>>nameb;

      cout<<”nt請輸入新書作者:“;

      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恭喜您!新書資料錄入成功!“;

      }

      else

      {

      cout<<”nt對不起,該書號紀錄已存在!請重新輸入!“;

      goto input1;

      }

      system(”pause“);

      admin_menu();} void reviseBook()

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

      {

      char numb[10];

      char nameb[20];

      char authorb[10];

      Book book;

      int index=-1;input2: cout<<”nt請輸入您要修改書籍的書號:“;

      cin>>numb;

      index=bm.bnu_search(numb);

      if(index==-1)

      {

      cout<<”nt對不起,您輸入的書號不存在,請重新輸入!“<

      goto input2;

      return;

      }

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

      if(sta)

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

      cout<<”nt請輸入更改后的書名:“;

      cin>>nameb;

      cout<<”nt請輸入更改后的作者:“;

      cin>>authorb;

      book.set_bnum(numb);

      book.set_bname(nameb);

      book.set_bauthor(authorb);

      bm.revise(book,index);

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

      else

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

      system(”pause“);

      admin_menu();

      } void delBook()

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

      {

      char numb[10];

      cout<<”nt請輸入您要刪除書籍的書號:“;

      cin>>numb;

      int index=bm.bnu_search(numb);

      if(index>=0)

      {

      cout<<”nt您確定要刪除該書記錄嗎(y/n)

      “;

      char y;

      cin>>y;

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

      {

      bm.deleteBook(index);

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

      }

      else

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

      }

      else

      cout<<”nt對不起,系統(tǒng)沒有該圖書記錄!“;

      system(”pause“);

      admin_menu();

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

      {

      char namer[10];

      Reader reader;get1:

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

      cin>>namer;

      int index=rm.search(namer);

      if(index==-1)

      {

      cout<<”nt對不起,系統(tǒng)無改讀者記錄,重新輸入請按1,返回請按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您的操作有誤,請重新選擇(0/1):

      ”;

      goto get2;

      }

      return;

      }

      “;

      else

      {

      char namer[10];

      char classr[10];

      char telr[10];

      Reader reader;

      cout<<”nt請輸入更改后的讀者姓名:“;

      cin>>namer;

      cout<<”nt請輸入更改后的班級名稱:“;

      cin>>classr;

      cout<<”nt請輸入更改后的聯(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請輸入您要刪除的讀者用戶的姓名:“<

      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對不起,系統(tǒng)尚無該讀者記錄!“;

      system(”pause“);

      admin_menu();

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

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

      cout<<”ttt 文計091-1 龐麗萍 200990514125

      “;cout<<”ttt

      當前日期:2011-6-22 星期三“;cout<<”ttt

      當前時間:08:00

      “;cout<<”nttt

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

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

      1主頁面

      2.管理員登陸頁面

      3.圖書添加

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

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

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

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

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

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

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

      摘要

      摘要

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

      者維護,圖書維護,管理員維護。

      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頁

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

      緒論

      1.1 課題背景意義

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

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

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

      3共30頁

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

      文檔為doc格式


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

      相關(guān)范文推薦

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

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

        C++課程設(shè)計(簡單圖書管理系統(tǒng))

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

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

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

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

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

        圖書管理系統(tǒng)大全

        圖書管理系統(tǒng)源代碼#include #include class Book{ // 書籍基類 protected: char Title[40]; // 書名 long Code; // 條碼 int Type; // 0表示書,1表示雜志 public: Book......

        圖書管理系統(tǒng)

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

        圖書管理系統(tǒng)

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

        圖書管理系統(tǒng)

        七個文件 1. book.txt存放書籍2.borrower.txt存放借閱信息3.chenwen.txt 存放開始信息 4. mima.txt存放密碼 5.qianyan.txt前言 6.student.txt存放學生信息7. yuyue.txt......