第一篇:oracle上機(jī)實(shí)驗(yàn)報告格式規(guī)范
Oracle上機(jī)實(shí)驗(yàn)報告
學(xué)生姓名:學(xué)號:班級:實(shí)驗(yàn)日期:
實(shí)驗(yàn)名稱:
實(shí)驗(yàn)?zāi)康模?/p>
實(shí)驗(yàn)內(nèi)容:
實(shí)驗(yàn)步驟及分析:(此部分為關(guān)鍵內(nèi)容:要求整理實(shí)驗(yàn)主要步驟,總結(jié)編寫實(shí)驗(yàn)過程中遇到哪些問題,如何解決的,若未解決也應(yīng)總結(jié),回答思考題的答案)
第二篇:操作系統(tǒng)上機(jī)實(shí)驗(yàn)報告格式規(guī)范
操作系統(tǒng)上機(jī)實(shí)驗(yàn)報告
學(xué)生姓名:學(xué)號:學(xué)院:
實(shí)驗(yàn)日期:
實(shí)驗(yàn)名稱:
實(shí)驗(yàn)?zāi)康模?/p>
實(shí)驗(yàn)內(nèi)容:
實(shí)驗(yàn)步驟及分析:
(此部分為關(guān)鍵內(nèi)容。要求總結(jié)編寫實(shí)驗(yàn)過程中遇到哪些問題,如何解決的,若未解決也應(yīng)總結(jié))
第三篇:Oracle實(shí)驗(yàn)報告
Oracle數(shù)據(jù)庫實(shí)驗(yàn)報告
實(shí)驗(yàn)一:Oracle 10g安裝卸載及相關(guān)工具配置
一、實(shí)驗(yàn)?zāi)繕?biāo):
安裝Oracle 10g,了解OEM,通過DBCA安裝數(shù)據(jù)庫,通過DBCA刪除數(shù)據(jù)庫,sqldeveloper連接數(shù)據(jù)庫,卸載oracle 10g。
二、實(shí)驗(yàn)學(xué)時數(shù) 2學(xué)時
三、實(shí)驗(yàn)步驟和內(nèi)容:
1、安裝Oracle10g(默認(rèn)安裝數(shù)據(jù)庫)雙擊setup.exe,選擇基本安裝,安裝目錄D:盤,標(biāo)準(zhǔn)版,默認(rèn)數(shù)據(jù)庫orcl,口令bhbh。進(jìn)入先決條件檢查界面時:網(wǎng)絡(luò)配置需求選項(xiàng)不用打勾,直接下一步,是。直到安裝成功。
2、登陸和了解OEM 主要是已網(wǎng)頁的形式來對數(shù)據(jù)庫進(jìn)行管理。
第1頁 http://主機(jī)IP:1158/em 用戶名:sys 口令:bhbh 身份:sysdba 或者
用戶名:system 口令:bhbh 身份:normal
3、通過DBCA刪除已安裝的默認(rèn)數(shù)據(jù)庫orcl 程序->OracleOraDb10g_home1->配置和移植工具->Database Configuration Assistant->創(chuàng)建數(shù)據(jù)庫->……
5、sqldeveloper連接數(shù)據(jù)庫 打開sqldeveloper,新建連接 連接名:system_ora 用戶名:system 口令:bhbh 主機(jī)名:本機(jī)計算機(jī)名 SID:xscj 測試,顯示成功,連接,保存。
第2頁
6、卸載oracle 10g Windows下
1>停止所有Oracle服務(wù),點(diǎn)Universal Installer卸載
2>刪除注冊表中的所有關(guān)于Oracle項(xiàng)
在HKEY_LOCAL_MACHINESOFTWARE下,刪除Oracle目錄
3>刪除硬盤上所有Oracle文件。(1)Oracle安裝文件
(2)系統(tǒng)目錄下,在Program files文件夾中的Oracle文件
四、上機(jī)作業(yè)
根據(jù)實(shí)驗(yàn)步驟完成逐個實(shí)驗(yàn)?zāi)繕?biāo)中的任務(wù)。
五、心得體會
通過這次的實(shí)驗(yàn),我了解了oracle數(shù)據(jù)庫的情況。懂得了數(shù)據(jù)庫就是把數(shù)據(jù)存儲在一個類似與倉庫的地方,需要用時才從數(shù)據(jù)庫里調(diào)出來。通過上機(jī)實(shí)踐,知道了裝數(shù)據(jù)庫和卸載數(shù)據(jù)庫,并且學(xué)會了怎樣連數(shù)據(jù)庫。
實(shí)驗(yàn)二:Oracle 10g手工建數(shù)據(jù)庫
一、實(shí)驗(yàn)?zāi)繕?biāo):
安裝Oracle 10g數(shù)據(jù)庫環(huán)境,手工建立數(shù)據(jù)庫;通過Net Configuration Assistant建立監(jiān)聽,使用sqldeveloper連接數(shù)據(jù)庫測試。
二、實(shí)驗(yàn)學(xué)時數(shù) 2學(xué)時
三、實(shí)驗(yàn)步驟和內(nèi)容:
先安裝好Oracle 10g數(shù)據(jù)庫環(huán)境(不安裝默認(rèn)數(shù)據(jù)庫)。1.創(chuàng)建好相關(guān)的目錄
第3頁 假設(shè)oracle安裝在D盤,打開命令行,運(yùn)行->cmd-> md D:oracleproduct10.2.0adminmydbpfile md D:oracleproduct10.2.0adminmydbbdump md D:oracleproduct10.2.0adminmydbcdump md D:oracleproduct10.2.0adminmydbudump md D:oracleproduct10.2.0oradatamydb md D:oracleproduct10.2.0flash_recovery_areamydb 2.創(chuàng)建數(shù)據(jù)庫實(shí)例
(1)設(shè)置環(huán)境變量SID(注:以后每打開一次CMD都要運(yùn)行此句)set ORACLE_SID=mydb(2)創(chuàng)建口令文件
orapwd file=D:oracleproduct10.2.0oradatamydbPWDmydb.ora Password=bhbh entries=5(3)使用oradim命令創(chuàng)建數(shù)據(jù)庫實(shí)例mydb oradim-new-sid mydb-startmode manual-pfile “D:oracleproduct10.2.adminmydbpfileinitmydb.ora” 3.用sys賬戶以sysdba的身份登錄 輸入sqlplus sys/bhbh as sysdba 4.創(chuàng)建實(shí)例初始化參數(shù)文件initmydb.ora,并將其放到D:oracleproduct10.2.adminmydbpfile路徑下。
initmydb.ora # Copyright(c)1991, 2001, 2002 by Oracle Corporation
第4頁 job_queue_processes=10 # Job Queues # Shared Server dispatchers=“(PROTOCOL=TCP)(SERVICE=mydbXDB)” # Miscellaneous compatible=10.2.0.1.0 # Security and Auditing remote_login_passwordfile=EXCLUSIVE # Sort, Hash Joins, Bitmap Indexes pga_aggregate_target=25165824 sort_area_size=65536 # Database Identification db_domain=“" db_name=mydb # File Configuration control_files=(”D:oracleproduct10.2.0oradatamydbcontrol01.ctl“, ”D:oracleproduct10.2.0oradatamydbcontrol02.ctl“,”D:oracleproduct10.2.0oradatamydbcontrol03.ctl“)db_recovery_file_dest=D:oracleproduct10.2.0flash_recovery_area db_recovery_file_dest_size=2147483648 # Pools
第5頁 java_pool_size=50331648 large_pool_size=8388608 shared_pool_size=83886080 # Cursors and Library Cache open_cursors=300 # System Managed Undo and Rollback Segments undo_management=AUTO undo_tablespace=UNDOTBS1 # Diagnostics and Statistics background_dump_dest=D:oracleproduct10.2.0adminmydbbdump core_dump_dest=D:oracleproduct10.2.0adminmydbcdump user_dump_dest=D:oracleproduct10.2.0adminmydbudump # Processes and Sessions processes=150 # Cache and I/O db_block_size=8192 db_cache_size=25165824 db_file_multiblock_read_count=16
5.運(yùn)行命令實(shí)例初始化 STARTUP NOMOUNT
第6頁 pfile=”D:oracleproduct10.2.0adminmydbpfileinitmydb.ora“;6.運(yùn)行創(chuàng)建數(shù)據(jù)庫SQL命令 CREATE DATABASE mydb MAXINSTANCES 1 MAXLOGHISTORY 1 MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXDATAFILES 100 DATAFILE 'D:oracleproduct10.2.0oradatamydbsystem01.dbf' SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED SYSAUX DATAFILE 'D:oracleproduct10.2.0oradatamydbsysaux01.dbf' size 20M UNDO TABLESPACE UNDOTBS1 DATAFILE 'D:oracleproduct10.2.0oradatamydbundotbs01.dbf' SIZE 150M REUSE AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE TEMP1 TEMPFILE 'D:oracleproduct10.2.0oradatamydbtemp01.dbf' SIZE 100M REUSE CHARACTER SET ZHS16GBK NATIONAL CHARACTER SET AL16UTF16 LOGFILE 'D:oracleproduct10.2.0oradatamydbredo01.log' SIZE 50M,第7頁
'D:oracleproduct10.2.0oradatamydbredo02.log' SIZE 50M,'D:oracleproduct10.2.0oradatamydbredo03.log' SIZE 50M;7.創(chuàng)建用戶表空間USERS CREATE TABLESPACE USERS DATAFILE 'D:oracleproduct10.2.0oradatamydbusers01.dbf' SIZE 128M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED;8.創(chuàng)建數(shù)據(jù)字典(需要幾分鐘,報錯不要緊)
@D:oracleproduct10.2.0db_1RDBMSADMINcatalog.sql;9.創(chuàng)建內(nèi)部包(需要幾分鐘,報錯不要緊)
@D:oracleproduct10.2.0db_1RDBMSADMINcatproc.sql;10.創(chuàng)建自啟動文件,以便以后不用每次打開數(shù)據(jù)庫實(shí)例都要運(yùn)行一次第5步。
create spfile FROM pfile='D:oracleproduct10.2.0adminmydbpfileinitmydb.ora';11.重啟數(shù)據(jù)庫,即關(guān)閉再打開。shutdown;connect sys/bhbh as sysdba;startup;12.授權(quán)用戶system為dba,置密碼為bhbh
第8頁 grant dba to system identified by bhbh;13.使用system用戶登錄 conn system/bhbh;14.為system用戶創(chuàng)建一張KC表 CREATE TABLE KC(KCH CHAR(3)NOT NULL, KCM CHAR(16)NOT NULL, KKXQ NUMBER(1)NOT NULL, XS NUMBER(2)NOT NULL, XF NUMBER(2), CONSTRAINT CH_KKXQ CHECK(kkxq between 1 and 8), CONSTRAINT ”PK_KCH“ PRIMARY KEY(”KCH“))TABLESPACE USERS;15.給KC表插入一條數(shù)據(jù),并提交。
INSERT INTO KC VALUES('001','數(shù)據(jù)庫',7,68,4);commit;16.測試查詢 Select * from kc;17.使用Net Configuration Assistant添加監(jiān)聽器,并重啟監(jiān)聽器(運(yùn)行cmd->netca也一樣)。
第9頁 18.創(chuàng)建Em資料檔案庫(這一步可以省略,只為創(chuàng)建OEM,我們以后學(xué)習(xí)用不到)。
cmd->emca-config dbcontrol db-repos create 19.打開SQLDeveloper,并新建數(shù)據(jù)庫連接并測試是否成功。
20.若之前手工安裝數(shù)據(jù)庫出現(xiàn)差錯,可使用以下命令刪除數(shù)據(jù)庫實(shí)例: cmd->oradim-delete-sid mydb 然后刪除第1步所建目錄即可。
四、上機(jī)作業(yè)
根據(jù)實(shí)驗(yàn)步驟完成逐個實(shí)驗(yàn)?zāi)繕?biāo)中的任務(wù)。
五、心得體會:
通過這次的實(shí)驗(yàn),明白了手動建數(shù)據(jù)庫,建表空間等。還知道了運(yùn)行數(shù)據(jù)庫的命令,授權(quán)命令插表等等。這次學(xué)習(xí)讓我對數(shù)據(jù)庫的了解和運(yùn)用又新的體會。
實(shí)驗(yàn)三:數(shù)據(jù)庫修改
一、實(shí)驗(yàn)?zāi)繕?biāo):
學(xué)習(xí)簡化實(shí)驗(yàn)二里的實(shí)驗(yàn)步驟,學(xué)習(xí)修改數(shù)據(jù)庫某些屬性,完成數(shù)據(jù)庫作業(yè)1:手工快速創(chuàng)建數(shù)據(jù)庫實(shí)例XSCJ和數(shù)據(jù)庫XSCJ。
二、實(shí)驗(yàn)學(xué)時數(shù) 2學(xué)時
三、實(shí)驗(yàn)步驟和內(nèi)容:
第10頁 1.安裝好ORACLE 10g,(不需要安裝數(shù)據(jù)庫)。
2.快速安裝數(shù)據(jù)庫實(shí)例mydb和數(shù)據(jù)庫mydb需要3個文件:init.bat,initmydb.ora,ctreatedb.sql。
(1)雙擊運(yùn)行init.bat文件;
(2)將initmydb.ora放到正確的路徑下(參考實(shí)驗(yàn)二);(3)在sqlplus環(huán)境下運(yùn)行ctreatedb.sql
3.了解startup nomount,startup mount和startup三種狀態(tài)的使用情況的區(qū)別,即打開實(shí)例不裝載數(shù)據(jù)庫、打開實(shí)例裝載數(shù)據(jù)庫但不打開數(shù)據(jù)庫和打開實(shí)例裝載數(shù)據(jù)庫同時打開數(shù)據(jù)庫。
(1)運(yùn)行P45頁例子2-7修改數(shù)據(jù)庫(提示:startup;)ALTER DATABASE mydb DATAFILE 'D:oracleproduct10.2.0oradatamydbusers01.dbf' RESIZE 200M;(2)運(yùn)行P45頁例子2-9刪除數(shù)據(jù)庫(提示:startup mount;)取消數(shù)據(jù)庫的受限制狀態(tài):
alter system enable restricted session;刪除數(shù)據(jù)庫: DROP DATABASE;(3)重建數(shù)據(jù)庫
sys重新登錄,運(yùn)行ctreatedb.sql。
4.刪除數(shù)據(jù)庫實(shí)例mydb和數(shù)據(jù)庫mydb。使用命令 oradim-delete-sid mydb 以及刪除相關(guān)文件夾。
四、上機(jī)作業(yè)
第11頁 適當(dāng)?shù)匦薷慕◣焖玫降?個文件里的參數(shù),手工安裝數(shù)據(jù)庫實(shí)例xscj和數(shù)據(jù)庫xscj(快速安裝),用戶表空間myts。
五、心得體會
這次學(xué)習(xí),讓我明白了怎樣修改數(shù)據(jù)庫某些屬性,手工快速創(chuàng)建數(shù)據(jù)庫實(shí)例XSCJ和數(shù)據(jù)庫XSCJ。DROP DATABASE命令可以刪除數(shù)據(jù)庫…
實(shí)驗(yàn)四:表的創(chuàng)建、修改和刪除 以及表數(shù)據(jù)的插入、修改和刪除
一、實(shí)驗(yàn)?zāi)繕?biāo):
學(xué)習(xí)表的創(chuàng)建、插入、修改和刪除以及表數(shù)據(jù)的插入、修改和刪除。
二、實(shí)驗(yàn)學(xué)時數(shù) 4學(xué)時
三、實(shí)驗(yàn)步驟和內(nèi)容: 1.手工創(chuàng)建好數(shù)據(jù)庫XSCJ。
2.為用戶system創(chuàng)建3個表XSB、KCB和CJB(P66-67 例子3.7-3.9,create table用法,自己照書完成)。
CREATE TABLE XSB(XH char(6)NOT NULL PRIMARY KEY, XM char(8)NOT NULL, XB char(2)DEFAULT '1' NOT NULL,第12頁
CSSJ date NOT NULL, ZY char(12)NULL, ZXF number(2)NULL, BZ varchar2(200)NULL)TABLESPACE myts;CREATE TABLE KCB(KCH char(3)NOT NULL PRIMARY KEY,KCM char(16)NOT NULL, KKXQ number(1)NULL, XS number(2)NULL, XF number(1)NOT NULL)TABLESPACE myts;CREATE TABLE CJB(XH CHAR(6)NOT NULL, KCH CHAR(3)NOT NULL, CJ NUMBER(2), XF NUMBER(1), PRIMARY KEY(XH,KCH))TABLESPACE myts;3.學(xué)習(xí)修改表結(jié)構(gòu)(P70 例子3.11(1)-(3)alter table用法)。(1)在表XSB中增加兩列:JXJ(獎學(xué)金等級)、DJSM(獎學(xué)金等級說明)。
第13頁 ALTER TABLE XSB ADD(JXJ number(1), DJSM varchar2(40)DEFAULT '獎金1000元');(2)在表XSB中修改名為DJSM的列的默認(rèn)值。ALTER TABLE XSB MODIFY(DJSM DEFAULT '獎金800元');(3)在表XSB中刪除名為JXJ和DJSM的列。ALTER TABLE XSB DROP COLUMN JXJ;ALTER TABLE XSB DROP COLUMN DJSM;修改好可用命令:describe table_name;查看。4.刪除表(P71 drop table用法)。DROP TABLE table_name;5.向XSCJ數(shù)據(jù)庫的表XSB中插入一行(P75 例子3.12 insert用法)。INSERT INTO XSB(XH, XM, XB, CSSJ, ZY, ZXF)VALUES('101101', '王林', '男',TO_DATE('19900210','YYYYMMDD'), '計算機(jī)', 50);提交數(shù)據(jù): Commit;
插入后可用命令:select * from table_name;查看。
第14頁 6.學(xué)習(xí)刪除表數(shù)據(jù)(P78 DELETE和TRUNCATE的用法)。將XSCJ數(shù)據(jù)庫的XSB表中總學(xué)分小于50的行刪除: DELETE FROM XSB WHERE ZXF<50;使用TRUNCATE TABLE語句刪除表中的所有數(shù)據(jù),且不能恢復(fù)。TRUNCATE TABLE table_name;插入后可用命令:select * from table_name;查看。7.為3個表XSB、KCB和CJB插入數(shù)據(jù)(使用insert.sql)8.學(xué)習(xí)修改表數(shù)據(jù)(P78-79 例子3.17-3.20 UPDATE 用法)。UPDATE XSB SET BZ='三好' WHERE XH='101110';UPDATE XSB SET ZXF=ZXF+10;
UPDATE XSB SET ZY='通信工程', BZ='轉(zhuǎn)專業(yè)學(xué)習(xí)', XH='101241' WHERE XM= '羅林琳';
UPDATE XS
第15頁 SET ZXF=ZXF+ 4, BZ= '提前修完《數(shù)據(jù)結(jié)構(gòu)》,并獲得學(xué)分'
插入后可用命令:select * from table_name where(條件);查看。9.將數(shù)據(jù)恢復(fù)到剛插入時的狀態(tài)(即把修改過的表清空再插入)。10.了解一下同義詞,知道同義詞的作用(不作重點(diǎn))。
四、上機(jī)作業(yè)
手工安裝數(shù)據(jù)庫實(shí)例xscj和數(shù)據(jù)庫xscj(快速安裝),用戶表空間myts后,為用戶system創(chuàng)建3個表XSB、KCB和CJB,并插入所有數(shù)據(jù)。
五、心得體會
這次學(xué)習(xí)的表創(chuàng)建,刪除和修改的學(xué)習(xí)使我對數(shù)據(jù)庫的表的認(rèn)識更進(jìn)一步。通過這次的學(xué)習(xí),學(xué)會對表的創(chuàng)建、修改、刪除。創(chuàng)建表就是按格式寫些代碼;修改(UPDATE+表名+需修改的內(nèi)容)和刪除(DROP TABLE + 表名)就是使用指定的指令對表進(jìn)行操作,使之完成想要的目的。
WHERE XM='李明';
實(shí)驗(yàn)五:數(shù)據(jù)庫查詢練習(xí)
一、實(shí)驗(yàn)?zāi)繕?biāo):
學(xué)習(xí)數(shù)據(jù)庫數(shù)據(jù)查詢語句的基本方法以及視圖的使用方法。
二、實(shí)驗(yàn)學(xué)時數(shù)
第16頁 6學(xué)時
三、實(shí)驗(yàn)步驟和內(nèi)容:
課本例子:4.5,4.6,4.8,4.9,4.12(2),4.14,4.15(2),4.16,4.17 4.18,4.19,4.28,4.29,4.37,4.39(1),(3),4.42,4.43,4.46
(一)學(xué)習(xí)和掌握課本查詢語句的基本語法和使用方法,完成下面練習(xí)(*為必做,@為選做)。
*
1、查詢所有計算機(jī)系學(xué)生的信息。Select * from xsb;*
2、查詢王同學(xué)所修的學(xué)號
Select kch from xsb where xm like '王%';*
3、查詢出生于85和86年的女同學(xué)的學(xué)號和姓名。Select xh,xm from xsb where cssj between to_date('19900101','yyyymmdd')and to_date('19911231','yyyymmdd')and xb='女';*
4、查詢學(xué)號為101104所選修的全部課程成績。Select cj from cjb where xh='101104';*
5、檢索每個學(xué)生的姓名和年齡。
Select xm,to_char(sysdate,'yyyy')-to_char(cssj,'yyyy')as 年齡 from xsb;*
6、在XS表中檢索學(xué)生的姓名和出生年份,輸出的列名為姓名和生年 Select xm,to_char(cssj,'yyyy')as 出生時間 from xsb;*
7、在XS_KC表中,求選修課程206的學(xué)生的學(xué)號和得分,并將結(jié)果按分?jǐn)?shù)降序排序。
第17頁 Select xh,cj from cjb where kch=’206’ order by cj desc;*
8、把課程名為軟件工程的成績從學(xué)生選課數(shù)據(jù)表XS_KC中刪除。Delete from kcb where kcm=(select kch from kcb where kcm=‘軟件工程’);*
9、把女同學(xué)的成績提高10%。
Update cjb set cj=cj*1.1 where xh in(select xh from xsb where xb='女')and cj<=90;*
10、如果學(xué)號為061106的學(xué)生的成績少于90,則加上10分。Update cjb set cj=cj+10 where xh=’061106’and cj<90;*
11、查詢學(xué)號為061104的學(xué)生選修的課程號和課程名。
Select xh,xm from xsb where xh in(select xh from cjb where kcb=’061104’;
*
12、檢索學(xué)習(xí)課程號為206的學(xué)生學(xué)號與姓名。Select xm,xh from xsb where kch=’206’;*
13、檢索‘李明’所選修的全部課程名稱。
Select kcm from kch where xm=(select xm from xsb where xm=’李明’);*
14、查找每個同學(xué)的學(xué)號及選修課程的平均成績情況。Select xh,avg as 課程號平均成績 from cjb;*
15、求選修了各課程的學(xué)生的人數(shù)。
Select count(distinct xh)as 選修課程總?cè)藬?shù) from cjb;Select kch as課程號 ,count(xh)as 選修人數(shù) group by kch;
第18頁 *
16、查詢平均成績都在80分以上的學(xué)生學(xué)號及平均成績。Select xh,cj from cjb group by xh having avg(cj)>80;Select xh,cj from cjb group by xh having avg(cj)>80 order by avg(cj);Select xh,cj from cjb group by xh having avg(cj)>80 order by avg(cj)desc;*
17、查詢至少有6人選修的課程號。
Select kch as 課程號 from cjb group by having count(*)>=6;*
18、檢索選修課程號為101或102的學(xué)生學(xué)號,姓名和所在系
Select xh,xm,zy from kch=(select kch from kcb where kch=’101’and kch= ‘102’;
*
19、統(tǒng)計被學(xué)生選修的課程門數(shù)。Select cjb 每個學(xué)生情況以及選修課程情況
Select * from xsb inner join cjb on xsb.xh=cjb.xh Select xsb.*,cjb.* from xsb,cjb where xsb.xh=cjb.xh *20、查詢沒有選修數(shù)據(jù)庫的學(xué)生學(xué)號,姓名和專業(yè)名。
@
21、取出選修‘操作系統(tǒng)’課程的學(xué)生姓名。
@
22、檢索至少選修課程“數(shù)據(jù)結(jié)構(gòu)”和“計算機(jī)基礎(chǔ)”的學(xué)生學(xué)號。@
23、檢索至少選修課程號為101和206的學(xué)生姓名。@
24、列出學(xué)生所有可能的選課情況。@
25、查詢101號課程得最高分的學(xué)生的學(xué)號
@
26、‘計算機(jī)基礎(chǔ)’課程得最高分的學(xué)生的姓名、性別、所在系。
第19頁 @
27、將成績最低的學(xué)生的成績加上10分。@
28、所有成績都在70分以上的學(xué)生姓名及所在系。@
29、列出選修課程超過3門的學(xué)生姓名及選修門數(shù)。@30、至少選修了兩門課及以上的學(xué)生的姓名和性別 @
31、檢索至少有兩名男生選修的課程名。
@
32、統(tǒng)計每門課程的學(xué)生選修人數(shù)(超過10人的課程才統(tǒng)計)。@
33、計算機(jī)基礎(chǔ)成績比離散數(shù)學(xué)成績好的學(xué)生
@
34、列出每個同學(xué)的學(xué)號、姓名及選修課程的平均成績情況,沒有選修的同學(xué)也列出。
@
35、列出每個同學(xué)的學(xué)號及選修課程號,沒有選修的同學(xué)也列出
(二)視圖
1、創(chuàng)建一個名為zy_view的視圖,該視圖可以用來查看每個系名稱和學(xué)生人
Create or replace view zy_view(專業(yè),專業(yè)人數(shù))as select zy,count(xh)from xsb group by zy;
2、創(chuàng)建一名為xs_view的視圖,該視圖可以用來查看每個學(xué)生的姓名、選修的課程名和成績。查看視圖。
Create or replace view xs_view(姓名,課程名,成績)as select xm kcm cj from xsb,kcb,cjb where xsb.xh=cjb.xh and cjb.kch=kcb.kch;
3、創(chuàng)建一個名為kc_view的視圖,該視圖可以用來查看每門課的課程號,課程名,選修人數(shù)和平均成績。
Create or replace view kc_view(課程號,課程名,選修人數(shù),平均成績)as select kcb.kch,kcm,count(xh),avg(cj)from cjb,kcb where cjb.kch=kcb.kch group by kcb.kch,kcm;
4、利用kc_view視圖,查看平均成績最高的課程名。
Select 課程名 from kc_view where平均成績=(select max(平均成績)from kc_view);
5、修改xs_view視圖,將視圖重定義為每個學(xué)生的姓名、選課門數(shù)和平均
第20頁 成績。
Create or replace view xs_view(姓名,選課門數(shù),平均成績)as select xm,count(kch),avg(cj)from cjb,xsb where xsb.xh=cjb.xh group by xsb.xh,xm;
6、刪除zy_view視圖。Drop view zy_view;
四、上機(jī)作業(yè)
完成實(shí)驗(yàn)內(nèi)容中的任務(wù),并把語句記錄在每道題的下面。
五、心得體會
這次學(xué)習(xí),我知道了對表的內(nèi)容的查詢,修改的操作,并通過實(shí)踐對這次操作命令進(jìn)一步的熟悉,運(yùn)用和掌握。還學(xué)會了怎么建立視圖,視圖是可以快速的查詢多個表的不同的信息的圖表,它使我們更方便。
實(shí)驗(yàn)六:索引和約束
一、實(shí)驗(yàn)?zāi)繕?biāo):
(1)掌握索引的使用方法。
(2)掌握各種約束即數(shù)據(jù)完整性的實(shí)現(xiàn)方法。
二、實(shí)驗(yàn)學(xué)時數(shù) 2學(xué)時
三、實(shí)驗(yàn)步驟和內(nèi)容: 1.關(guān)于索引
第21頁 建立索引的最大好處是快速存取數(shù)據(jù)。
假設(shè)有10個學(xué)生,10門課,則成績表會有100條記錄,對于成績表中某人某門課成績的查找,最壞情況是逐行查找100次,即最后一行。而如果對成績表中的學(xué)號和課程號創(chuàng)建索引,則最壞情況只需查找20次(先查找學(xué)號,再查找課程號)。
建立索引的原則:(1)先插數(shù)據(jù)再建索引。
(2)如果經(jīng)常檢索的內(nèi)容僅為包含大量數(shù)據(jù)的表中少于15%的行,就需要創(chuàng)建索引。
(3)建立索引的先后順序會影響查詢的性能。2.創(chuàng)建索引表空間 CREATE TABLESPACE INDX DATAFILE 'D:oracleproduct10.2.0oradataxscjindx01.dbf' SIZE 32M REUSE AUTOEXTEND ON NEXT 1280K MINIMUM EXTENT 128K DEFAULT STORAGE(INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);2.創(chuàng)建索引
CREATE INDEX kc_name_idx ON KCB(KCM)TABLESPACE ”INDX";3.維護(hù)索引
第22頁 ALTER INDEX kc_name_idx
4.刪除索引 DROP INDEX kc_idx;5.數(shù)據(jù)完整性
生活中有些數(shù)據(jù)除了數(shù)據(jù)類型和寬度,還必須要定義其他規(guī)則的,比如學(xué)生學(xué)號必須是唯一的,不能重復(fù)的;性別必須是男或女,成績必須是0-100的范圍等。因此必須使用一些方法對數(shù)據(jù)進(jìn)行約束,才得以保持?jǐn)?shù)據(jù)完整性。
6.約束
(1)建表同時添加約束: XSB表: 主鍵為學(xué)號。KCB表: 課程號為主鍵,開課學(xué)期默認(rèn)值為1,且只能為1-8。CJB表
主鍵為學(xué)號和課程號,存在外鍵XH參照XSB表的XH,存在外鍵KCH參照KCB表的KCH。(2)建表后時添加約束 XSB表:
第23頁 RENAME TO kc_idx;性別必須為“男”或者“女”。CJB表:
成績必須>=0且<=100或者為空。7.插入數(shù)據(jù)驗(yàn)證。8.思考題
(1)建KCB表時添加約束,使課程號必須為三位0-9數(shù)字
(2)建XSB表時添加約束,使學(xué)號為101開頭,后三位為0-9數(shù)字
四、上機(jī)作業(yè)
完成實(shí)驗(yàn)內(nèi)容中的任務(wù),并把語句記錄在每道題的下面。
五、心得體會
通過這次的學(xué)習(xí),我知道了索引的最大好處是快速存取數(shù)據(jù)。1:先插數(shù)據(jù)再建索引。2:如果經(jīng)常檢索的內(nèi)容僅為包含大量數(shù)據(jù)的表中少于15%的行,就需要創(chuàng)建索引。3:建立索引的先后順序會影響查詢的性能。這3條是建立索引的原則。
我還知道了可以增加約束,就是制約范圍。
實(shí)驗(yàn)七:PL/SQL編程
一、實(shí)驗(yàn)?zāi)繕?biāo):
(1)掌握變量、運(yùn)算符以及控制語句的使用。(2)掌握系統(tǒng)函數(shù)和自定義函數(shù)的使用。
二、實(shí)驗(yàn)學(xué)時數(shù) 4學(xué)時
三、實(shí)驗(yàn)步驟和內(nèi)容: SYS登錄,先導(dǎo)入數(shù)據(jù)字典:
第24頁 @D:oracleproduct10.2.0db_1RDBMSADMINcatalog.sql;@D:oracleproduct10.2.0db_1RDBMSADMINcatproc.sql;(1)定義變量
例子1:定義一個長度為10的變量count,其初始值為1,是varchar2類型。
count varchar2(10):= '1';例子2:在表XSB中包含XH列,為了聲明一個變量my_xh與XH列具有相同的數(shù)據(jù)類型,聲明時可使用點(diǎn)和%TYPE屬性,格式如下:
my_xh XSB.XH%TYPE;例子3:可以使用%ROWTYPE屬性聲明描述表的行數(shù)據(jù)的記錄。
如:聲明一個記錄名為cj_rec,它與CJB表具有相同的名稱和數(shù)據(jù)類型,格式如下:
DECLARE cj_rec CJB%ROWTYPE;對于用戶定義的記錄,必須聲明自己的域: DECLARE TYPE TimeRec IS RECORD(HH number(2),MM number(2));(2)程序塊
例子6.6:查詢總學(xué)分大于50的學(xué)生人數(shù) set serveroutput on DECLARE v_num number(3);
第25頁 BEGIN SELECT COUNT(*)INTO v_num
FROM xsb
WHERE zxf>50;
IF v_num<>0 THEN dbms_output.put_line('總學(xué)分>:50的人數(shù)為:'|| TO_CHAR(v_num));END IF;END;/ 例子6.9:求10的階乘。DECLARE n number:=1;count1 number:=2;BEGIN LOOP
n:=n*count1;
count1:=count1+1;
IF count1>10 THEN
EXIT;END IF;
第26頁 END LOOP;DBMS_OUTPUT.PUT_LINE(to_char(n));END;/(3)函數(shù)
系統(tǒng)函數(shù):例子6.20、6.21、6.22、6.23、6.24 自定義函數(shù):例子6.26、6.27、6.28
如果李明同學(xué)的年齡大于20歲,則顯示“李明同學(xué)年齡為X歲”,否則打印“李明同學(xué)不符合條件” set serveroutput on declare age number(2);begin select to_char(sysdate, 'yyyy')-to_char(cssj, 'yyyy')into age from xsb where xm='李明';if age>20 then dbms_output.put_line('李明同學(xué)年齡為'||to_char(age)||'歲');else dbms_output.put_line('李明同學(xué)不符合條件');end if;end;/
2.計算1+3+5+……+99的和,并顯示結(jié)果。
declare s number:=0;i number:=1;begin loop
第27頁 s:=s+i;i:=i+2;exit when i>99;end loop;dbms_output.put_line(to_char(s));end;/
3.編寫一個函數(shù)f_age,可以在xs表中根據(jù)姓名求出某人的年齡。
create or replace function f_age(sname in char)return number as age number;begin select to_char(sysdate,'yyyy')-to_char(cssj,'yyyy')into age from xsb where xm=sname;return(age);end;/
4.改寫第1題的程序塊,調(diào)用函數(shù)f_age來求年齡。set serveroutput on;declare age number(2);begin age:=f_age('李明');if age>20 then dbms_output.put_line('李明同學(xué)年齡為'||to_char(age)||'歲');else dbms_output.put_line('李明同學(xué)不符合條件');end if;end;/
第28頁
四、上機(jī)作業(yè)
完成實(shí)驗(yàn)內(nèi)容中的任務(wù),并把語句記錄在每道題的下面。
五、心得體會
通過這次的學(xué)習(xí),學(xué)會了用sql語言編寫簡單的程序,定義和調(diào)用簡單函數(shù)。在此基礎(chǔ)上還鞏固了sql語句查詢的方法。在以后的學(xué)習(xí)中要多加理解,上機(jī)練習(xí)。
實(shí)驗(yàn)八:游標(biāo)與存儲過程
一、實(shí)驗(yàn)?zāi)繕?biāo):
(1)掌握游標(biāo)的使用方法。(2)掌握存儲過程的使用方法。
二、實(shí)驗(yàn)學(xué)時數(shù) 6學(xué)時
三、實(shí)驗(yàn)步驟和內(nèi)容: 游標(biāo) 例子:
set serveroutput on DECLARE v_xh char(6);v_zxf number(2);CURSOR XS_CUR3
第29頁 IS SELECT XH,ZXF FROM XSB WHERE ZYM='計算機(jī)';BEGIN OPEN XS_CUR3;FETCH XS_CUR3 INTO v_xh,v_zxf;WHILE XS_CUR3%FOUND LOOP dbms_output.put_line(v_xh||' '||TO_CHAR(v_zxf));FETCH XS_CUR3 INTO v_xh,v_zxf;END LOOP;CLOSE XS_CUR3;END;1.使用游標(biāo),將平均分大于75分的學(xué)生的學(xué)號、姓名、平均分逐行輸出。
set serveroutput on DECLARE v_xh char(12);v_xm char(12);v_cj number(38);CURSOR XS_CUR3 IS SELECT CJB.XH,XSB.XM,avg(CJ)FROM XSB,CJB WHERE xsb.xh=cjb.xh group by CJB.XH,XSB.XM having avg(cj)>75;
第30頁 BEGIN OPEN XS_CUR3;FETCH XS_CUR3 INTO v_xh,v_xm,v_cj;WHILE XS_CUR3%FOUND LOOP dbms_output.put_line(v_xh||' '||TO_CHAR(v_xm)||v_cj);FETCH XS_CUR3 INTO v_xh,v_xm,v_cj;END LOOP;CLOSE XS_CUR3;END;存儲過程 例子1:
CREATE OR REPLACE PROCEDURE update_info(xname in char)AS xf number;BEGIN SELECT ZXF INTO xf FROM XS WHERE XM=xname;IF XF>60 THEN UPDATE XSB SET BZ='三好學(xué)生' WHERE XM= xname;
第31頁
END IF;IF XF<35 THEN UPDATE XS SET BZ='學(xué)分未修滿' WHERE XM=xname;END IF;END update_info;執(zhí)行:
(1)EXECUTE update_info('李明');(2)begin update_info('李明');end;例子2: CREATE OR REPLACE PROCEDURE count_grade(zym in char,person_num out number)AS BEGIN
SELECT COUNT(XH)
INTO person_num
FROM XS WHERE ZYM=zym;END count_grade;
第32頁 執(zhí)行:
set serveroutput on DECLARE v_num number;BEGIN count_grade('計算機(jī)',v_num);dbms_output.put_line(v_num);END;/ 1.創(chuàng)建一個存儲過程p_delete可以刪除CJB表的信息。CREATE OR REPLACE PROCEDURE p_delete AS
BEGIN delete FROM CJB;END p_delete;執(zhí)行
EXECUTE p_delete;
2.創(chuàng)建一個存儲過程p_insert,可以給學(xué)生表添加一條記錄。CREATE OR REPLACE PROCEDURE p_insert(XH IN CHAR,XM IN CHAR,XB IN CHAR,CSSJ IN DATE,ZY IN CHAR,ZXF IN NUMBER,BZ IN CHAR)AS BEGIN insert into xsb values(XH,XM,XB,CSSJ,ZY,ZXF,BZ);END p_insert;執(zhí)行:
execute p_insert('102222','羅','女',to_date('19860310','yyyymmdd'),'通信工程',50,'轉(zhuǎn)專業(yè)學(xué)習(xí)');
第33頁
3.創(chuàng)建一個存儲過程p_count,輸入?yún)?shù)為姓名,輸出參數(shù)為選課門數(shù),平均成績。CREATE OR REPLACE PROCEDURE p_count(XNO IN CHAR,K_COUNT OUT NUMBER,AVG_CJ OUT NUMBER)BEGIN SELECT count(kch),avg(cj)INTO K_COUNT,AVG_CJ FROM XSB,CJB WHERE XSB.XH=CJB.XH AND XSB.XH=XNO;END p_count;
set serveroutput on DECLARE v_num1 number;v_num2 number(4,2);BEGIN p_count('101104',v_num1,v_num2);dbms_output.put_line(v_num1||' '||v_num2);END;
四、上機(jī)作業(yè)
完成實(shí)驗(yàn)內(nèi)容中的任務(wù),并把語句記錄在每道題的下面。
五、心得體會
通過這次學(xué)習(xí),我知道了游標(biāo)和存儲過程,還知道了游標(biāo)和存儲過程的使用方法,并且掌握了它們的使用方法,為以后打下基礎(chǔ)。
實(shí)驗(yàn)九:觸發(fā)器、用戶角色創(chuàng)建和邏輯備份
第34頁
一、實(shí)驗(yàn)?zāi)繕?biāo):
(1)掌握觸發(fā)器的使用。
(2)掌握用戶和角色的創(chuàng)建和使用。(3)掌握數(shù)據(jù)表的導(dǎo)入導(dǎo)出。
二、實(shí)驗(yàn)學(xué)時數(shù) 2學(xué)時
三、實(shí)驗(yàn)步驟和內(nèi)容:
(一)觸發(fā)器
例子1: 假設(shè)XSCJ數(shù)據(jù)庫中增加一個新表XSB_HIS,表結(jié)構(gòu)和表XSB相同,用來存放從XSB表中刪除的記錄。創(chuàng)建一個觸發(fā)器,當(dāng)XSB表被刪除一行,把刪除的記錄寫到日志表XSB_HIS中。
CREATE OR REPLACE TRIGGER del_xs BEFORE DELETE ON XSB FOR EACH ROW BEGIN INSERT INTO XSB_HIS(XH,XM, XB,CSSJ, ZY, ZXF,BZ)VALUES(:OLD.XH,:OLD.XM, :OLD.XB, :OLD.CSSJ, :OLD.ZY, :OLD.ZXF, :OLD.BZ);END;1.創(chuàng)建一個觸發(fā)器,當(dāng)XSB表刪除一個人時,把這個人的選課信息也刪掉。CREATE OR REPLACE TRIGGER del_xs BEFORE DELETE ON XSB FOR EACH ROW BEGIN
第35頁 DELETE FROM CJB WHERE XH=:OLD.XH;END del_xs;
(二)用戶和角色
1.創(chuàng)建一個用戶tom,密碼為cat。該用戶角色為dba。使用該用戶建表,插入數(shù)據(jù)。
CREATE USER tom identified by cat default tablespace users;grant dba to tom;導(dǎo)入table.sql和insert.sql drop user tom cascade;
(三)數(shù)據(jù)庫邏輯備份 exp和imp的使用
(1)將XSB,KCB和CJB表導(dǎo)出成為DMP文件
(2)將XSB,KCB和CJB表刪除
(3)將剛導(dǎo)出DMP文件導(dǎo)入恢復(fù)3個表
(1)將用戶tom導(dǎo)出成為DMP文件
(2)將用戶tom刪除再重建
(3)將剛導(dǎo)出DMP文件導(dǎo)入恢復(fù)用戶tom
四、上機(jī)作業(yè)
完成實(shí)驗(yàn)內(nèi)容中的任務(wù)。
五、心得體會
第36頁 通過這次實(shí)踐,我明白了什么是觸發(fā)器,并掌握的它的使用方法,還掌握了用戶和角色的創(chuàng)建和使用。還學(xué)會了數(shù)據(jù)表的導(dǎo)入導(dǎo)出,使保存數(shù)據(jù)變的很容易。
第37頁
第四篇:上機(jī)實(shí)驗(yàn)報告格式
請各位同學(xué)按照下列格式寫:否則按照0分記
上機(jī)實(shí)驗(yàn)報告格式
Matlab學(xué)習(xí)第?次上機(jī)實(shí)驗(yàn)報告(第?次)
姓名:???班級:???上機(jī)時間:??????
1.上機(jī)內(nèi)容
2.建模及算法分析
3.程序
4.小結(jié)
5.參考文獻(xiàn)
將文檔發(fā)到我的郵箱里面
learn_matlab@163.com
第五篇:上機(jī)實(shí)驗(yàn)報告
一. 題目1. 建立一個學(xué)生檔案,內(nèi)容包括學(xué)號,姓名,年齡,性別,數(shù)學(xué),物理和英語3門功課成績。要求實(shí)現(xiàn)以下功能:1)數(shù)據(jù)輸入;2)查詢某個學(xué)生的成績;3)按平均排列輸出;4)統(tǒng)計某門課各分?jǐn)?shù)段人數(shù);5)刪除某個學(xué)生記錄;2. 編程實(shí)現(xiàn)對二位數(shù)進(jìn)行加,減,乘運(yùn)算,每運(yùn)行一次程序做10道題,完成后給出成績(每題10分)。二. 設(shè)計思想和模塊劃分1.1.先定義所需要的條件,例如,姓名,學(xué)號,性別,三門功課的成績,平均分等。2.輸入姓名,學(xué)號,性別,年齡,三門功課的成績后,就輸出相應(yīng)的姓名,學(xué)號,性別,年齡,三門功課的成績。3.打印表頭;4.在求出平均分,并打印出平均分。5.在查找學(xué)生,并打印出學(xué)生的相關(guān)資料;并按照平均分的高低排列;6.在統(tǒng)計學(xué)生各科成績是否》=60分,如果是就是通過,否就是沒通過,最后打印出最后的結(jié)果。7.刪除學(xué)生,選中刪除的學(xué)生,如果確定要,那么該學(xué)生的一切記錄就變?yōu)?;2.1.隨機(jī)調(diào)用函數(shù),產(chǎn)生兩個其值為10到99的隨機(jī)整數(shù)分別放在c,d中用作運(yùn)算時的運(yùn)算數(shù)。2.隨機(jī)調(diào)用函數(shù),產(chǎn)生一個值為1到3 的隨機(jī)整數(shù)放入b中,用來選擇不同的運(yùn)算。根據(jù)b的值選擇不同的運(yùn)算。當(dāng)b=1時,去進(jìn)行c+d的運(yùn)算練習(xí);當(dāng)b=2 時,去進(jìn)行c-d的運(yùn)算練習(xí);當(dāng)b=3時,去進(jìn)行c×d的運(yùn)算練習(xí)。每完成一個算題就給出是否正確的信息。3.根據(jù)答案正確與否統(tǒng)計。正確時,顯示’right’;錯誤時,顯示’wrong’。4.步驟1.2.3.4.重復(fù)10次。5.輸出學(xué)生成績。三. 運(yùn)行結(jié)果1.Input the 1 student :num:03name:wfage:18sex:fmath:98phy:75eng:65Input the 2 student :num:06name:scage:17sex:fmath:78phy:45eng:65Input the 3 student :num:09name:ytage:17sex:mmath:69phy:75eng:501.readin 2.finds 3.del 4.tj 5.exit1-----------------------------table----num name age sex math phy eng ave------3 wf 18 f 98.0 75.0 65.0 79.3------9 yt 17 m 69.0 75.0 50.0 64.7-------6 sc 17 f 78.0 45.0 65.0 62.7-------1.readin 2.finds 3.del 4.tj 5.exit2Into number:3---num name age sex math phy eng ave---3 wf 18 f 98.0 75.0 65.0 79.3----1.readin 2.finds 3.del 4.tj 5.exit3Into number:6---num name age sex math phy eng ave---6 sc 17 f 78.0 45.0 65.0 62.6---true? Y/Ny1----------------table------------------num name age sex math phy eng ave----3 wf 18 f 98.0 75.0 65.0 79.3-----9 yt 17 m 69.0 75.0 50.0 64.7-----0 0 0 f 0.0 0.0 0.0 0.0-----1.readin 2.finds 3.del 4.tj 5.exit4 1.input the math 2.input the phy 3.input the eng 1math: pass num is :3 no pass num is :02.32+82=114right!97*15=1455right!99-58=41right!76-66=10right!58+13=71right!37+49=86right!99+52=151right!49*69=5462wrong!73-38=31wrong!86+34=120right!mark is 80四. 主要錯誤改正方法1.在本題的編寫過程中常出現(xiàn)begin 和end 不配對,只要始它們的個數(shù)相同就可以了,就可以了。在程序中常出現(xiàn)的’unknown identifier’沒有定義的錯誤,只要在程序前加上定義,就可以了。還有就是type mismatch’的類型不匹配,只要根據(jù)前后內(nèi)容,重新定義,就可以了。2.在本題編寫中,題目要求是兩個兩位數(shù)運(yùn)算,如果寫成c:=random(100)在運(yùn)行過程中,就會出現(xiàn)一位數(shù)運(yùn)算,只要把它寫成c:=random(90)+10,就可以了。五. 實(shí)習(xí)小結(jié)1.第一題的程序編寫比較復(fù)雜,需要較多的定義,因而在后面的程序部分,就常出現(xiàn)標(biāo)識符重復(fù),而導(dǎo)致的類型不匹配。還有就是每個部分編好后,上下不能連接,而無法調(diào)用。2.第二題較第一題簡單,和書上的例題類似,所以,比較簡單,但從中也出現(xiàn)一些不問題。以上兩大題中出現(xiàn)的問題,要在同學(xué)的幫助下,才能完成。總的來說兩題程序比較困難六. 程序清單1.program twins;const m=3;n=3;typestudent=recordnum:integer;name:string[3];age:integer;sex:char;s:array[1..n] of real;math,eng,phy:real;ave:real;end;sarr=array[1..m] of student;ta=array [1..m] of student;f=string[6];varstu:sarr;ct:ta;k,d:integer;procedure readin(var stu:sarr);const wrong='0<=data<=100 ,again!';var j,i:integer;a:student;beginwriteln;writeln('Input ',m,' num name sex math phy eng',' of student.');for j:=1 to m dobeginwriteln;writeln('Input the ',j,' student :');with a dobeginwrite('num:');readln(num);write('name:');readln(name);write('age:');readln(age);write('sex:');readln(sex);while(sex<>'m')and(sex<>'f')dobeginwrite('sex:');readln(sex)end;for i:=1 to n do begincase i of1:begin write('math:');readln(s[i]);while(s[i]<0)or(s[i]>100)dobeginwriteln(wrong);write('math:');readln(s[i]);end;end;2:begin write('phy:');readln(s[i]);while(s[i]<0)or(s[i]>100)dobeginwriteln(wrong);write('phy:');readln(s[i]);end;end;3:begin write('eng:');readln(s[i]);while(s[i]<0)or(s[i]>100)dobeginwriteln(wrong);write('eng:');readln(s[i]);end;end;end;end;stu[j]:=a;end;writeln;end;end;procedure ave(var stu:sarr);var j,i:integer;k:real;beginfor j:=1 to m dobegink:=0;with stu[j] dobeginfor i:=1 to n do k:=k+s[i];ave:=k/nend;end;end;procedure px(var stu:sarr);var tm:ta;j,i,p:integer;beginfor j:=1 to m dobeginp:=j;for i:=j+1 to m doif stu[i].ave>stu[p].ave then p:=i;tm[1]:=stu[p];stu[p]:=stu[j];stu[j]:=tm[1];end;end;procedure head(ct:ta);var i:integer;beginwrite(' ');for i:=1 to 72 do write('-');writeln;write('',' num':4,' ','name':9,' ','age':8,' ','sex':5,' ','math':6,' ','phy':9,' ','eng':8,' ');writeln('ave':6,' ');write(' ');for i:=1 to 72 do write('-');writeln;with ct[1] dobeginwrite('',num:7,' ',name:8,' ',age:8,' ',sex:5,' ');for i:=1 to n do write(s[i]:7,' ');write(ave:10,' ');writeln;end;write(' ');for i:=1 to 72 do write('-');writeln;end;procedure find(var stu:sarr);var n,i:integer;u:boolean;beginu:=true;while u dobeginwrite('Into number:');readln(n);for i:=1 to m dobeginif stu[i].num=n then beginct[1]:=stu[i];u:=false;d:=iend;end;end;end;procedure del(var stu:sarr);var i:integer;b:char;beginhead(ct);write('true? Y/N');readln(b);if b='y' then begin write('1');with stu[d] dobeginnum:=0;name:='0';age:=0;sex:='f';for i:=1 to n do s[i]:=0;ave:=0end;endelseend;procedure tj(var stu:sarr);var w1,q1,q2,num,j:integer;h1,h2,h3:boolean;beginh1:=false;h2:=false;h3:=false;q1:=0;q2:=0;writeln(' ':30,'1.input the math 2.input the phy 3.input the eng ');readln(w1);case w1 of1:h1:=true;2:h2:=true;3:h3:=true;end;if h1 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j].math>=60 thenq1:=q1+1elseq2:=q2+1;writeln('math:');end;if h2 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j].phy>=60 thenq1:=q1+1elseq2:=q2+1;writeln('phy:');end;if h3 thenbeginbeginfor j:=1 to m dowith stu[j] doif stu[j].eng>=60 thenq1:=q1+1elseq2:=q2+1;writeln('eng:');end;end;end;end;writeln(' ':5,'pass num is :',q1);writeln(' ':5,'no pass num is :',q2);end;procedure head1(var stu:sarr);var j,i:integer;beginwriteln('----------------table--------------':60);writeln;write(' ');for i:=1 to 72 do write('-');writeln;write('',' num':4,' ','name':9,' ','age':8,' ','sex':5,' ','math':6,' ','phy':9,' ','eng':8,' ');writeln('ave':6,' ');write(' ');for i:=1 to 72 do write('-');writeln;for j:=1 to m do beginwith stu[j] dobeginwrite('',num:7,' ',name:8,' ',age:8,' ',sex:5,' ');for i:=1 to n do write(s[i]:7:1,' ');write(ave:10:1,' ');writeln;end;write(' ');for i:=1 to 72 do write('-');writeln;end;end;beginreadin(stu);ave(stu);k:=0;while k<>5 dobeginwriteln('1.readin 2.finds 3.del 4.tj 5.exit');read(k);readln;while(k<>1)and(k<>2)and(k<>3)and(k<>4)and(k<>5)dobeginwriteln(' mistake,please again');read(k)end;case k of1: begin px(stu);head1(stu)end;2: begin find(stu);head(ct)end;3: begin find(stu);del(stu);px(stu);head1(stu)end;4: begin tj(stu);end;5: writeln('exit!');end;end;end..2.program shadow;var a,b,c,d,e:integer;right:boolean;procedure s1;beginwriteln('right!');right:=trueend;procedure s2;beginwriteln('wrong!');right:=falseend;procedure s3(x,y:integer);var h:integer;beginwrite(x,'+',y,'=');readln(h);if h=x+y then s1else s2 end;procedure s4(x,y:integer);var h,w:integer;beginif x