久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

Oracle課程設計 圖書管理系統

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

第一篇:Oracle課程設計 圖書管理系統

數據庫課程設計

設計名稱:圖書管理系統

組員:尚靖偉(122068)

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

信息工程學院計算機系

2013年6月27日

“Oracle數據庫應用設計”指導書

Oracle數據庫管理與設計

目 錄

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

Oracle管理技術........................................................................................1

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

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

Oracle開發技術......................................................................................36

I

Oracle數據庫管理與設計

前 言

數據庫技術是計算機科學中發展最快的領域之一。隨著網絡技術的不斷發展,數據庫技術與網絡技術相結合,已經廣泛應用于工作和生活的各個領域。同時,數據庫技術及其應用已經成為國內外高校計算機專業和許多非計算機專業的必修或選修課程。

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

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

通過學習Oracle數據庫安裝、管理及開發,為今后從事Oracle數據庫管理和開發工作打下良好的基礎。

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

II

第1部分 Oracle管理技術

第1部分 Oracle管理技術

實驗1 數據庫管理

目的和要求

(1)了解Oracle數據庫的邏輯結構和物理結構;(2)了解Oracle Enterprise Manager的使用情況;(3)學習關閉和啟動數據庫實例的方法;(4)學習使用SQL語句創建數據庫的方法;(5)學習使用SQL語句刪除數據庫的方法。

實驗準備

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

Enterprise Manager 9i是Oracle 9i提供的新的管理工具,簡稱EM。使用它可以完成啟動、關閉數據庫,創建、刪除數據庫等功能。只有系統管理員或擁有CREATE DATABASE權限的用戶才能創建數據庫。可以在Enterprise Manager中通過圖形界面創建數據庫,也可以使用CREATE DATABASE語句創建數據庫。

實驗內容

本實驗主要包括以下內容。

(1)練習使用不同方法啟動和關閉數據庫實例。

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

1.使用SHUTDOWN命令關閉數據庫實例

練習使用SHUTDOWN命令關閉數據庫實例,分別按以下方式啟動數據庫實例。

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

SHUTDOWN NORMAL

(2)立即關閉。回退活動事務處理并斷開所有已連接的用戶,然后關閉數據庫。立即關閉的語句如下:

SHUTDOWN IMMEDIATE

第1部分 Oracle管理技術

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

SHUTDOWN TRANSACTIONAL

(4)中止關閉。中止數據庫實例,立即關閉數據庫。中止關閉的語句如下:

SHUTDOWN ABORT

每次執行SHUTDOWN語句關閉數據庫實例之前,請執行STARTUP命令啟動數據庫。2.使用STARTUP命令啟動數據庫實例

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

STARTUP NOMOUNT

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

STARTUP MOUNT

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

STARTUP OPEN

第1部分 Oracle管理技術

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

STARTUP FORCE

該語句將數據庫強行啟動到OPEN模式。

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

STARTUP RESTRICT

每次執行STARTUP語句啟動數據庫實例之前,請執行SHUTDOWN命令關閉數據庫。3.使用ORACLE Enterprise Manager關閉數據庫實例 按照下面的步驟關閉數據庫實例。

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

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

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

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

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

第1部分 Oracle管理技術

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

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

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

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

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

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

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

(8)定義數據文件名稱為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語句刪除數據庫

按照如下步驟刪除數據庫UserMan。

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

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

第1部分 Oracle管理技術

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

DROP DATABASE;

第1部分 Oracle管理技術

實驗2 角色和用戶管理

目的和要求

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

實驗準備

(1)了解Oracle數據庫用戶可以分為6種類型,即數據庫管理員、安全官員、網絡管理員、應用程序開發員、應用程序管理員和數據庫用戶;

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

實驗內容

本實驗主要包括以下內容。

(1)練習使用SQL語句創建數據庫角色;

(2)練習使用SQL語句為數據庫角色授予權限;(3)練習使用SQL語句指定用戶角色;(4)練習使用SQL語句創建數據庫用戶。

1.使用SQL語句創建數據庫角色

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

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

CREATE ROLE UserManRole IDENTIFIED BY myrolepwd;

2.使用SQL語句為數據庫角色授權

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

第1部分 Oracle管理技術

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

--設置角色權限

GRANT CONNECT TO UserManRole;GRANT RESOURCE TO UserManRole;

3.使用SQL語句創建數據庫用戶

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

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

CREATE USER UserManAdmin IDENTIFIED BY UserPwd

DEFAULT TABLESPACE USERS

TEMPORARY TABLESPACE TEMP;

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

--設置系統權限

GRANT UNLIMITED TABLESPACE TO UserManAdmin;

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

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

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

GRANT UserManRole TO UserManAdmin;

第1部分 Oracle管理技術

實驗3 表和視圖管理

目的和要求

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

(3)學習使用SELECT語句查詢數據;(4)學習使用SQL語句創建視圖。

實驗準備

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

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

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

實驗內容

本實驗主要包括以下內容。

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

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

1.使用SQL語句創建表

使用CREATE TABLE語句創建用戶信息表Users,結構如表1所示。

表1 表Users的結構

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

數據結構 NUMBER VARCHAR2 40 NUMBER 1 VARCHAR2 40

用戶編號 用戶名

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

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

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

CREATE TABLE UserManAdmin.Users(UserId

UserName UserType

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

UserPwd);Varchar2(40)使用CREATE TABLE語句創建用戶登錄信息表LoginInfo,結構如表2所示。

表2 表LoginInfo的結構

號 1 2

字段名稱 UserId LoginTime

數據結構 NUMBER CHAR(20)

明 用戶編號 登錄時間

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

CREATE TABLE UserManAdmin.LoginInfo(UserId

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

使用INSERT語句向表Users中插入用戶數據,內容如表3所示。

表3 表Users中的數據

UserId 1 2 3 4

UserName Admin User Zhangsan Lisi

UserType 2 2 2

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

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中插入數據。內容如表4所示。參照下面的步驟練習使用INSERT語句向表LoginInfo中插入數據。(1)以實驗2中創建的UserManAdmin用戶登錄到SQL*PLUS。(2)使用INSERT語句向表LoginInfo中插入數據,代碼如下:

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管理技術

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中的數據

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語句修改表中的數據

使用UPDATE語句可以修改表Users中的數據。參照下面的步驟練習將表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語句刪除表中的數據

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

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

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

DELETE FROM UserManAdmin.Users WHERE UserName=‘Zhangsan’

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

SELECT * FROM UserManAdmin.Users 5.使用SELECT語句查詢數據

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

第1部分 Oracle管理技術

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

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

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

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

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

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

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

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

(4)對查詢結果進行排序。

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

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

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

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

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

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語句創建視圖

使用CREATE VIEW語句創建用戶登錄信息表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管理技術

實驗4 索引和序列管理

目的和要求

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

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

實驗準備

(1)了解索引是對數據庫表中一個或多個列的值進行排序的結構。可以利用索引快速訪問數據庫表中的特定信息。

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

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

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

實驗內容

本實驗主要包括以下內容。

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

1.使用SQL語句創建索引

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

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

2.在創建表的同時創建索引

在使用CREATE TABLE語句創建表的同時,可以為指定字段創建索引。創建表Employees,在字段EmpName上創建索引。表Employees的結構如表5所示。

表5 表Employees的結構

號 1 2 3 4

字段名稱 EmpId EmpName Sex UserId

數據結構 NUMBER VARCHAR2(50)CHAR(2)NUMBER

明 編號 姓名 性別 用戶編號

代碼如下:

CREATE TABLE UserManAdmin.Employees(EmpId

EmpName Sex

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

UserId);Number 3.使用SQL語句創建序列

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

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

在使用INSERT語句向表Employees中插入數據時,可以使用序列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管理技術

實驗5 PL/SQL編程

目的和要求

(1)了解PL/SQL語言的結構;

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

實驗準備

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

實驗內容

本實驗主要包括以下內容。

(1)練習條件語句的使用方法;(2)練習分支語句的使用方法;(3)練習循環語句的使用方法;(4)練習使用Oracle系統函數。

1.使用條件語句

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

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

SET ServerOutput ON;DECLARE

Num INTEGER :=-11;BEGIN

IF Num < 0 THEN

dbms_output.put_line(‘負數’);

ELSIF Num > 0 THEN

dbms_output.put_line(‘正數’);

ELSE

dbms_output.put_line(‘0’);

END IF;END;

第1部分 Oracle管理技術

2.使用分支語句

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

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

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 ‘數據越界’

END;

dbms_output.put_line(Result);END;

第1部分 Oracle管理技術

3.使用循環語句

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

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

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

參照下面的步驟練習使用循環語句。

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

程序一:

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管理技術

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管理技術

4.使用系統函數(1)數值型函數

·ABS:返回給定數字表達式的絕對值。

·CEIL:返回大于或等于所給數字表達式的最小整數。·FLOOR:返回小于或等于所給數字表達式的最大整數。·POWER:返回給定表達式指定次方的值。

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

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

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

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

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

·COUNT:返回組中項目的數量。·MAX:返回表達式的最大值。·MIN:返回表達式的最小值。

參照下面的步驟練習使用系統函數。

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

程序一:

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管理技術

程序三:

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管理技術

程序七:

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

SET ServerOutput ON;BEGIN

dbms_output.put_line(UPPER(‘abc’));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管理技術

程序十二:

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管理技術

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

目的和要求

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

(4)學習編寫和執行自定義過程;(5)學習編寫和執行自定義函數;(6)學習創建和使用觸發器。

實驗準備

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

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

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

實驗內容

本實驗主要包括以下內容。

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

(2)練習編寫和執行自定義過程的方法;(3)練習編寫和執行自定義函數的方法;(4)練習創建和使用觸發器的方法。

1.創建和使用游標

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

/*打開顯示模式*/ 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管理技術

2.編寫和執行自定義過程

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

/*創建示例過程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命令可以調用過程。如,要將編號為1(用戶Admin)的用戶密碼重置*/ EXECUTE UserManAdmin.ResetPwd(1);SELECT UserName, UserPwd FROM Users;

第1部分 Oracle管理技術

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

3.編寫和執行自定義函數

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

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

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.創建和使用觸發器

參照下面的步驟創建一個觸發器MyTrigger,它的作用是當表Users中的記錄被刪除后,自動刪除表LoginInfo中對應的用戶登錄記錄,從而保證數據的完整性。

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

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管理技術

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

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

SELECT * FROM UserManAdmin.LoginInfo

第1部分 Oracle管理技術

實驗7 表空間管理

目的和要求

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

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

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

實驗準備

首先要了解表空間是Oracle數據庫最高層次的邏輯存儲結構,其中保存著由段、區和塊等邏輯存儲結構描述的各種模式對象。

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

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

實驗內容

本實驗主要包括以下內容。

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

1.創建本地管理方式的用戶表空間

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

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

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

第1部分 Oracle管理技術

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

2.創建本地管理方式的臨時表空間

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

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

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

select * from V$tablespace;

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

3.改變表空間的可用性

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

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

第1部分 Oracle管理技術

(2)通過OEM控制臺設置表空間為脫機狀態或聯機狀態,并查看修改之后的表空間狀態。

4.刪除表空間

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

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

Drop tablespace newspace;

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

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

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

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

6.創建撤銷表空間

在數據庫建立后創建一個撤銷表空間,并設置該表空間為默認撤銷表空間。操作步驟如

第1部分 Oracle管理技術

下:

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

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

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

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

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

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

select * from V$tablespace;

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

第1部分 Oracle管理技術

實驗8 文件管理

目的和要求

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

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

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

實驗準備

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

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

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

數據文件是Oracle主要的物理存儲結構之一。一個表空間可以有多個數據文件,一個數據文件只屬于一個表空間。數據文件可分成系統數據文件、撤銷數據文件、臨時數據文件和用戶數據文件。

實驗內容

本實驗主要包括以下內容。

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

1.創建初始化參數文件

創建PFILE和SPFILE文件。操作步驟如下:

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

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

第1部分 Oracle管理技術

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

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

from

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

2.修改初始化參數

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

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

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

第1部分 Oracle管理技術

命令修改其中的動態或靜態的初始化參數。

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

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

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

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

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

4.查詢控制文件信息

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

第1部分 Oracle管理技術

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

5.創建多路聯機重做日志文件組

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

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

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

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

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

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

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

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

7.向表空間中添加數據文件

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

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

第1部分 Oracle管理技術

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

8.移動單個數據文件

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

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

ALTER TABLESPACE dtf offline;

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

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

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

刪除無用的數據文件。操作步驟如下:

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

(2)通過OEM控制臺刪除某一數據文件。

10.查詢數據文件的各種信息

查詢數據文件的各種信息。操作步驟如下:

第1部分 Oracle管理技術

(1)在SQL*Plus中查詢DBA_DATA_FILES、DBA_EXTENTS、DBA_FREE_SPACE、V$DATAFILE、V$DATAFILE_HEADER動態性能視圖獲得數據文件的信息。

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

第2部分 Oracle開發技術

第2部分 Oracle開發技術

設計目的

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

設計任務

? 數據庫設計:

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

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

(3)依據關系規范化原則設計應用系統數據庫全局關系模式;(4)依照數據庫全局關系模式設計數據庫中各表的表結構。? 界面設計:(1)數據庫準備;

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

設計題目

1.圖書管理系統

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

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

第2部分 Oracle開發技術

建立角色:

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;授權:

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開發技術

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

插入數據:

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, ‘asd123’);INSERT INTO Book.BookUsers VALUES(4, ‘zhanghongkai’, 2, ‘asd123’);COMMIT;

第2部分 Oracle開發技術

//創建序列

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

//觸發器創建

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開發技術

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”;//數據庫連接語句

查詢圖書:

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開發技術

MessageBox.Show(”請輸入查詢數據!“);} 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開發技術

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;//數據庫連接類 SqlCommand dataCommand;//數據庫命令類

讀者信息:

dataConnection.Open();

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

第2部分 Oracle開發技術

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開發技術

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--;

實驗總結:

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

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

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

reader

SET

”UPDATE

book

SET

第二篇:Oracle數據庫 圖書管理系統實驗報告

圖書管理系統(Oracle)

1、創建表空間student_library

2、(1)創建表Administrator

(2)創建表library

(3)創建表student

(4)創建表lent_library

(5)創建表booktype

3、(1)創建表空間student_library

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

(2)創建表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表插入數據 insert into Administrator values(100421101,'張三','男',' ',100421)insert into Administrator values(100421102,'李四','女',' ',100422)insert into Administrator values(100421103,'王五','男',' ',100423)對Administrator表刪除數據

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

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

update Administrator set AdministratorName=‘王明’where AdministratorID=100421101 ——對Administrator表中管理員編號為‘100421101’的姓名改為“王明” update Administrator set sex=‘女’where AdministratorID=100421103 ——對Administrator表中管理員編號為‘100421103’的性別改為“女”(3)創建表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表插入數據 insert into library

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

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

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

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

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

向library表修改數據

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

(4)創建表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表插入數據 insert into student values(100421203,'王逸','男','信電系','***','123456','521568')insert into student values(100421205,'劉娟','女','食品系','***','256302','269756')insert into student values(100421207,'張一凡','男','園林園藝系','***','687456','305621')對student表刪除數據

delete from student where studentName=‘張一凡’

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

update student set department=‘經貿系’where studentID=100421205 ——對student表中學生學號為‘100421205’的系部名稱改為“經貿系”

(5)創建表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表插入數據 insert into lent_library values(12345,'100421','1360','2012-3-15','還未歸還')insert into lent_library values(21350,'100422','2035','2012-1-6','已經歸還')insert into lent_library values(13056,'100423','1503','2012-3-22','還未歸還')向lent_library表刪除數據 delete from lent_library where bookID=‘100423’

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

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

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

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

delete from booktype where leibienumber=‘1623’

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

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

4、(1)創建索引

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

—在Administrator表的AdministratorID列創建一個名為Aid_index的索引

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

(2)創建視圖

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

5、(1)創建匿名塊

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)創建存儲過程

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('發生其他錯誤!');end InsertAdministrator;—創建一個存儲過程InsertAdministrator,向Administrator表的AdministratorID,administratorName和sex列分別插入數據100421105,李凡和男三個值。

(3)創建函數

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)創建觸發器 create table student_log(studentID number(20),studentName varchar2(50),sex varchar2(2),department varchar2(10));—創建一個日志表,記錄對student表所做的修改,日志表名為student_log create or replace trigger insertlog_trigger after insert on student begin insert into student_log values(100421230,'路奇', '女', '園林系');end;—在student表上創建一個語句級Insert觸發器

6、用戶權限和角色管理

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

(2)為用戶user_student設置系統權限 grant create session to user_student;

(3)為用戶user_student撤銷系統權限

revoke create session from user_student;

(4)創建角色user_library

create role user_library identified by student

(5)為角色user_library授予權限

grant user_library to public;

(6)啟用角色user_library

set role user_library identified by student

第三篇:圖書管理系統 數據結構 課程設計

《數據結構》

課程設計報告書

一.課程設計題目

圖書借閱管理系統

二.課程設計內容

實現圖書管理信息系統的設計

(一)管理員功能:

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

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

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

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

⑤查找圖書:

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

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

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

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

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

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

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

(二)讀者功能:

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

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

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

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

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

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

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

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

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

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

三.算法設計

1.流程圖(部分示例)

①管理員登錄

②讀者登錄

③讀者借閱圖書

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

2.代碼實現

#include #include

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

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

private:

char rname[10];

char rclass[10];

char rtel[10];public:

Reader()//構造函數,實現數據初始化

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

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

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

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

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

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

{strcpy(rclass,rc);}

char *get_rclass()

//獲得班級

{return rclass;}

void set_rtel(char *rt)

//設置電話

{strcpy(rtel,rt);}

char *get_rtel()

//獲得電話

{return rtel;}

void copy(Reader m)//讀者Reader結構體copy函數

{strcpy(rname,m.get_rname());strcpy(rclass,m.get_rclass());strcpy(rtel,m.get_rtel());} };//*********讀者管理結構體,實現對讀者用戶的管理********* class ReaderManage {

Reader readers[50];//定義讀者結構體數組對象,最多50位

int length;

void readFile()

//讀取讀者文件函數

{

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

length=0;

//計數

if(!fread)

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

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

int i=0;

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

i++;

length=i;

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

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

{

ofstream fwrite;

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

if(!fwrite)

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

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

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

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

} public:

ReaderManage()//構造函數,讀取讀者文件

{readFile();}

~ReaderManage()//析構函數,保存讀者文件

{saveFile();}

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

{

if(length>=50)

{cout<<”對不起,注冊人數已滿!n“;return;}

readers[length].copy(r);//調用讀者結構體copy函數

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

{

for(int i=0;i

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

return i;

return-1;

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

{

readers[i].copy(reader);//調用讀者結構體cpoy函數

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

{

for(int i=index;i

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

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

{

for(int i=0;i

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

return true;

return false;

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

{

char n[10];

//姓名name

char c[10];

//班級class

char t[10];

//電話tel

Reader reader;

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

cin>>n;

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

cin>>c;

cout<<”nt請輸入您的聯系電話:“;

cin>>t;

reader.set_rname(n);//調用讀者結構體設置讀者姓名函數

reader.set_rclass(c);//調用讀者結構體設置讀者班級函數

reader.set_rtel(t);//調用讀者結構體設置聯系電話函數

add_reader(reader);//調用讀者結構體添加讀者函數

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

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

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

for(int i=0;i

{

cout<

cout<<”ttt“<

cout<<”ttt“<

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

{

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

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

cout<

cout<<”ttt“<

cout<<”ttt“<

}

};

//********書籍結構體,用于存放書籍基本信息******** class Book { private:

char bnum[10];

//書號

char bname[20];

//書名

char bauthor[10];

//作者

char rname[10];

//借閱人 public: int tag;

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

//構造函數初始化信息

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

void set_bnum(char *no)

//設置書號

{strcpy(bnum,no);}

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

char *get_bnum()

//獲得書號

{

return bnum;}

//返回值為bnum

void set_bname(char *n)

//設置書名

{strcpy(bname,n);}

char *get_bname()

//獲得書名

{return bname;}

void set_bauthor(char *a)

//設置作者

{strcpy(bauthor,a);}

char * get_bauthor()

//獲得作者姓名

{return bauthor;}

void set_tag(int t)

//狀態設置

{tag=t;}

void set_rname(char *rn)

//設置借閱人

{strcpy(rname,rn);}

char *get_rname()

//獲得借閱人姓名

{return rname;}

void show_tag()

//顯示圖書狀態

{

if(tag==1)

{cout<<”已借“;}

else

{cout<<”在架“;}

}

void copy(Book m)

//Book結構體copy函數

{

strcpy(bnum,m.get_bnum());

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

strcpy(bname,m.get_bname());

strcpy(bauthor,m.get_bauthor());

tag=0;

} };//**********書籍管理結構體,實現管理書籍功能********** class BookManage { private:

Book books[100];

//定義Book書籍結構體數組對象,最大容量100本

int length;

void saveFile()

//保存書籍文件

{

ofstream fwrite;//定義輸出文件流ofstream結構體對象fwrite

if(!fwrite)

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

}

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

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

fwrite.close();

//關閉磁盤文件

} void readFile()

//讀取書籍文件

{

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

length=0;

if(!fread)

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

Book temp;

//定義書籍結構體臨時對象temp

int i=0;

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

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

i++;

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

length=i;

fread.close();} public:

BookManage()

//構造函數,讀取磁盤文件

{

length=0;

//從頭讀起,計數,最大100

readFile();

//調用讀取文件函數

}

~BookManage()

//析構函數,保存磁盤文件

{

saveFile();

//調用保存文件函數

}

bool add(Book book)

//添加圖書資料

{

if(length>=100)

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

return-1;

}

else

{

books[length].copy(book);//調用書籍結構體copy函數

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)//帶參的修改書籍函數

{books[i].copy(book);} //調用Book結構體copy函數

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

{

for(int i=index;i

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

length--;

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

{

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

cout<<”書號“;

cout.width(10);

cout<<”書名“;

cout.width(10);

cout<<”作者“;

cout.width(17);

cout<<”狀態“;

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)//帶參的顯示書籍函數

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

cout<<”書號“;

cout.width(10);

cout<<”書名“;

cout.width(10);

cout<<”作者“;

cout.width(17);

cout<<”狀態“;

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()//讀者借、還書功能函數

{

ReaderManage reader;

int choi;//選擇

int a;

//圖書狀態指標(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該書目前狀態為<已借出>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;

cin.ignore();

int index1=reader.search(dz);

if(index1==-1)

{

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

return;

}

else

{

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

books[index].set_rname(dz);//借閱人一項變為空白

books[index].set_tag(0);//圖書狀態變為在架

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

}

}break;

case 2:

cout<<”nt該書目前狀態為<在館>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對不起,系統無改讀者記錄,新用戶請先注冊!“;

return;

}

else

{

books[index].set_rname(dz);

books[index].set_tag(1);

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

}

}break;

}

}

else

{

cout<<”nt對不起,系統無該書記錄!“;}

}

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

{

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

return false;

return true;

}

};//**********菜單結構體,實現界面引導********** class Menu {

BookManage bm;

//定義書籍管理結構體對象bm ReaderManage rm;

//定義讀者管理結構體對象rm Reader r;

//定義讀者結構體對象r private: int choice;

//菜單序號選擇

int key;

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

//頁眉

{

system(”color fd“);

cout<<”t

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

cout<<”t

☆n“;

cout<<”t

☆n“;

cout<<”t

☆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();

//清除以回車結束的輸入緩沖區的內容,消除上一次輸入對下一次輸入的影響

switch(choice)

{

case 1:

log_admin();

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

break;

case 2:

reader_lr();

//讀者登錄或注冊

break;

case 0:

exit(1);

//退出系統

break;

default:

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

goto choice;

} } void admin_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: 查看所有圖書資料

6: 修改讀者用戶信息

☆n“;

cout<<”t

☆n“;

cout<<”t

7: 刪除讀者用戶信息

8: 查看所有讀者信息

☆n“;

cout<<”t

☆n“;

cout<<”t

9: 返回系統登錄界面

0: 退出圖書管理系統

☆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: //返回系統登錄界面

system(”cls“);

log_menu();

case 0: //退出系統

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: 退 出 系 統

☆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: 退 出 系 統

☆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: 退 出 系 統

☆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:退出系統>

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

//按書號查找函數

{

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對不起,系統無您的借閱記錄!“;

cout<<”nt“;

system(”pause“);

reader_menu();

} void bnu_search()

//按書號查找函數

{

char bnu[10];

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

cin>>bnu;

int index=bm.bnu_search(bnu);

if(index>=0)

bm.show_book(index);

else

cout<<”nt對不起,系統無該書籍記錄!“;

cout<<”nt“;

system(”pause“);

bsearch_menu();

}

void bna_search()

//按書名查找函數

{

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

char bna[20];

cin>>bna;

int index=bm.bna_search(bna);

if(index>=0)

bm.show_book(index);

else

cout<<”nt對不起,系統無該書籍記錄!“;

cout<<”nt“;

system(”pause“);

bsearch_menu();

}

void bau_search()

//按作者查找函數

{

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

char bau[10];

cin>>bau;

int index=bm.bau_search(bau);

if(index>=0)

bm.show_book(index);

else

cout<<”nt對不起,系統無該書籍記錄!“;

cout<<”nt“;

system(”pause“);

bsearch_menu();

}

void addBook()

//新增書籍函數

{ char numb[10];

//書號

char nameb[20];

//書名

char authorb[10];//作者

Book book;

//書籍結構體對象book

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

cin>>numb;

int index=bm.bnu_search(numb);

if(index==-1)

{

cout<<”nt系統目前尚無該書記錄,您可以繼續操作!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()

//修改書籍函數

{

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該書目前處于<在架>狀態,您可以繼續操作!“;

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該書已被借出,請于讀者歸還后再進行相關操作!“<

system(”pause“);

admin_menu();

} void delBook()

//刪除書籍函數

{

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對不起,系統沒有該圖書記錄!“;

system(”pause“);

admin_menu();

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

{

char namer[10];

Reader reader;get1:

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

cin>>namer;

int index=rm.search(namer);

if(index==-1)

{

cout<<”nt對不起,系統無改讀者記錄,重新輸入請按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請輸入更改后的聯系電話:“;

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

//刪除讀者用戶函數

{

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

system(”pause“);

admin_menu();

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

system(”color fd“);Menu menu;//定義菜單結構體對象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.圖書添加

五.課程設計過程中出現的問題、原因及解決方法

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

六.課程設計的主要收獲

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

七.對今后課程設計的建議

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

第四篇:圖書管理系統課程設計摘要

摘要

摘要

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

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

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頁

第五篇:圖書管理系統課程設計緒論

緒論

1.1 課題背景意義

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

1.2國內外研究的現狀

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

3共30頁

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

文檔為doc格式


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

相關范文推薦

    圖書管理系統課程設計(5篇范文)

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

    C++課程設計(簡單圖書管理系統)

    課 程 設 計 課程名稱C++課程設計 題目名稱圖書管理系統 2016 年6 月 29 日目錄 一.設計內容與要求 .......................................................................

    數據庫課程設計 圖書管理系統(精選)

    課 程 設 計 軟件工程與數據庫 課程設計 任務書 學院名稱:數學與計算機學院 課程代碼:_6014419_ 專業: 年級:一、設計題目 圖書管理系統 二、主要內容 一個簡單的圖書管理系統......

    數據結構課程設計—西文圖書管理系統

    數據結構課程設計報告 課程名稱:數據結構課程設計課設題目: 西文圖書管理系統 教師姓名: 郭艷本科生姓名: 王瑞林本科生學號: 20121002932 班號:191124 日期:2014年6月20日 題號......

    圖書管理系統大全

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

    圖書管理系統

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

    圖書管理系統

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

    圖書管理系統

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

主站蜘蛛池模板: 人妻aⅴ无码一区二区三区| 秋霞鲁丝片av无码| 国产欧美另类精品久久久| 国模大胆无码私拍啪啪av| 精品国产综合成人亚洲区2022| 乱子伦一区二区三区| 色综合亚洲一区二区小说性色aⅴ| 国产精品熟妇视频国产偷人| 国产99视频精品专区| 亚洲欧美另类精品二区| 性中国妓女毛茸茸视频| 狠狠色丁香婷婷久久综合五月| 成人aaa片一区国产精品| 亚洲成av人无码综合在线观看| 精品国偷自产在线| 国产无套护士在线观看| 丰满的人妻hd高清日本| 黑人巨茎大战欧美白妇| 玩弄丰满少妇xxxxx性多毛| 最新国模无码国产在线视频| 肉大榛一进一出免费视频| 久久国产精品免费一区| 欧美成人精品午夜免费影视| 国产亚洲欧美一区二区三区在线播放| 国产精品免费久久久久影院仙踪林| 亚洲成a人片在线不卡一二三区| 国产精品一区二区av片| 国产后入又长又硬| 精品人妻无码一区二区三区抖音| 欧美午夜精品久久久久久浪潮| 国产人妻高清国产拍精品| 国产日韩制服丝袜第一页| 情人伊人久久综合亚洲| 久久亚洲中文字幕无码| 日本夜爽爽一区二区三区| 8x国产精品视频| 久久综合色一综合色88欧美| 成人国内精品久久久久影院| 亚洲人成色7777在线观看| 成年丰满熟妇午夜免费视频| 久久天天躁狠狠躁夜夜avapp|