


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.軟件學院綜合訓練項目報告書課程名稱Oracle數(shù)據(jù)庫項目名稱學生成績管理系統(tǒng)專業(yè)班級組別成員任課教師劉臘梅2015年6月.目 錄1.32.33.33.133.1.133.1.243.253.2.153.2.293.3113.3.1113.3.2113.3.3 1 33.4163.4.1163.4.2193.519.4.305.31.1 設計時間2015/6/12015/6/72 設計任務信息管理系統(tǒng)學生成績管理系統(tǒng)掌握 ORACLE數(shù)據(jù)庫的特點,熟悉 SQL命令和 PL/SQL的編程特點,運用所學知識解決現(xiàn)實問題,完成學生成績管理系統(tǒng)的后臺數(shù)據(jù)庫設計,提高系統(tǒng)性能。在該項目中,不考慮需求分析
2、過程,要求建立以下關系:院系信息:院系編號、院系名稱、院系主管、地址、院系人數(shù);學生基本信息:院系編號、學號、姓名、性別、學生類型、入學日期、籍貫、身份證號、詳細地址、出生日期、所學專業(yè)、民族、電話 ( 家) 、繳費總計、已修學分、備注;課程信息:課程號、課程名稱、開設年級、學時數(shù)、學分;成績單:學號、課程號、學期、成績、備注。使用存儲過程統(tǒng)計每個學生的已修學分。使用觸發(fā)器實現(xiàn)當?shù)怯泴W生成績( 60分以上)時自動統(tǒng)計學生的已修學分。使用函數(shù)實現(xiàn)統(tǒng)計各課程的未及格人數(shù),要求輸入?yún)?shù)課程號后,返回各課程的人數(shù)NUM。并實現(xiàn)調用,查數(shù)據(jù)庫系統(tǒng)設計的未及格人數(shù)。將上實驗中的存儲過程與本實驗中函數(shù)創(chuàng)建包
3、。3 設計內容3.1 系統(tǒng)設計3.1.1 系統(tǒng)功能概述系統(tǒng)的功能模塊圖如下:.學生成績管理系統(tǒng)信息查詢模塊信息輸入、修改模塊信息統(tǒng)計模塊院學課成院學課統(tǒng)統(tǒng)統(tǒng)系生程績系生程計計計信信信單信信信學課課息息息信息息息生程程息已人未修數(shù)及學格分人數(shù)圖3-1-1功能模塊圖3.1.2 系統(tǒng)功能模塊設計1. 信息查詢模塊信息查詢模塊可以查詢院系信息、學生信息、課程信息以及成績單信息。2. 信息輸入、修改模塊信息輸入、修改模塊以修改院系信息、學生信息、課程信息。3. 信息統(tǒng)計模塊用于統(tǒng)計學生已修學分、課程人數(shù)及課程未及格人數(shù)。系統(tǒng)業(yè)務流程圖如下:.圖3-1-2業(yè)務流程圖3.2 數(shù)據(jù)庫設計3.2.1 數(shù)據(jù)庫需求
4、分析系統(tǒng) E-R圖如下:.表 3-2-1實體及其屬性表實體名稱屬性名稱院系信息院系編號、院系名稱、院系主管、地址、院系人數(shù)學生信息院系編號、學號、姓名、性別、學生類型、入學日期、籍貫、身份證號、詳細地址、出生日期、所學專業(yè)、民族、電話(家)、繳費總計、已修學分、備注課程信息課程號、課程名稱、開設年級、學時數(shù)、學分選修學號、課程號、學期、成績、備注院系院系編院系名院系主地址院系人號稱管數(shù)圖 3-2-2院系實體屬性圖.院系編學號姓名性別號學生類備注型入學日已修學期分學生繳費總計籍貫身份證電話號(家)民族所學專出生日詳細地業(yè)期址圖 3-2-3 學生實體屬性圖課程課程號課程名開設年學時數(shù)學分稱級圖 3
5、-2-4課程實體屬性圖.學號課程號學期數(shù)據(jù)流圖如下:院系1所屬n學生成績n備注選修n課程圖 3-2-5 E-R 圖.圖 3-2-6 0層數(shù)據(jù)流圖圖 3-2-7 1層數(shù)據(jù)流圖3.2.2 數(shù)據(jù)庫邏輯結構設計表 3-2-8學生成績管理系統(tǒng)數(shù)據(jù)庫結構.表名稱表信息表述College院系信息表Student學生信息表Course課程信息表Score成績單表 3-2-9院系信息表 college描述字段類型院系編號(主鍵)Cnovarchar2(10)院系名稱Cnamevarchar2(30)院系主管Managervarchar2(10)地址Addressvarchar2(50)院系人數(shù)Populatio
6、nnumber(10)表 3-2-10學生信息表 student描述字段類型學號(主鍵)Snovarchar2(20)院系編號(外鍵)Cnovarchar2(10)姓名Snamevarchar2(10)性別Sexvarchar2(2)學生類型Typevarchar2(10)入學日期in_dateDate籍貫Jiguanvarchar2(10)身份證號Idvarchar2(20)詳細地址Addressvarchar2(50).出生日期BirthDate所學專業(yè)Majorvarchar2(10)民族Nationvarchar2(10)電話(家)Televarchar2(11)繳費總計Payment
7、number(10)已修學分Creditnumber(5)備注Remarkvarchar2(50)表 3-2-11課程信息表 course描述字段類型課程號(主鍵)Cnovarchar2(10)課程名稱Cnamevarchar2(30)開設年級Gradevarchar2(5)學時數(shù)study_timenumber(4)學分Creditnumber(4)表 3-2-12成績單 score描述字段類型課程號(聯(lián)合主鍵、外鍵)Cnovarchar2(10)學號(聯(lián)合主鍵、外鍵)Snovarchar2(10)學期Termnumber(2)成績Scoresnumber(10)備注Remarkvarcha
8、r2(50)3.3 數(shù)據(jù)庫實現(xiàn)3.3.1 創(chuàng)建用戶.創(chuàng)建 admin用戶并授權。create user admin identified by admin;SQL> grant create procedure to admin;授權成功。SQL> grant create trigger to admin;授權成功。3.3.2 創(chuàng)建表和約束1. 創(chuàng)建院系信息表。1 create table college(2 cno varchar2(10) primary key,3 cname varchar2(10),4 manager varchar2(10),5 address var
9、char2(50),6 population number(10)7* )SQL> /表已創(chuàng)建。2. 創(chuàng)建學生信息表1 create table student(2 sno varchar2(20) primary key,3 cno varchar2(10),4 sname varchar2(10),5 sex varchar2(2),6 type varchar2(10),7 in_date date,8 jiguan varchar2(10),.9 id varchar2(20),10 address varchar2(50),11 birth date,12 major varc
10、har2(10),13 nation varchar2(10),14 tele varchar2(11),15 payment number(10),16 credit number(5),17 remark varchar2(50),18 foreign key (cno) references college(cno)19* )SQL> /表已創(chuàng)建。3. 創(chuàng)建課程信息表1 create table course(2 cno varchar2(10) primary key,3 cname varchar2(30),4 grade varchar2(5),5 study_time nu
11、mber(4),6 credit number(4) not null7* )SQL> /表已創(chuàng)建。4. 創(chuàng)建成績單表1 create table score(.2 cno varchar2(10),3 sno varchar2(10),4 term number(2),5 scores number(10),6 remark varchar2(50),7 primary key (cno,sno),8 foreign key (cno) references course(cno),9 foreign key (sno) references student(sno) 10* )SQL
12、> /表已創(chuàng)建。3.3.3 創(chuàng)建存儲過程、函數(shù)及觸發(fā)器1. 創(chuàng)建存儲過程 Statistic_credit,用于統(tǒng)計每個學生的已修學分。1 create or replace procedure Statistic_credit 2 is3 cursor c14 is select * from student ;5 stu_info student%rowtype;6 begin7 open c1;8 fetch c1 into stu_info;9 while c1%found10loop11dbms_output.put_line(stu_info.sno|''|s
13、tu_info.sname|''|stu_info.credit);12fetch c1 into stu_info;.13 end loop;14 close c1;15* end;SQL> /過程已創(chuàng)建。2. 創(chuàng)建觸發(fā)器 t1 ,實現(xiàn)當?shù)怯泴W生成績 (60分以上)時自動統(tǒng)計學生的已修學分。1 create or replace trigger t12 after insert or update of scores on score3 for each row4 begin5 if :new.scores>=60 then6updatestudentset st
14、udent.credit=student.credit+(selectcreditfromcourse where o=:o)7 where student.sno=:new.sno;8 end if;9* end;SQL> /觸發(fā)器已創(chuàng)建3. 創(chuàng)建函數(shù) statistc_num ,使用函數(shù)實現(xiàn)統(tǒng)計各課程的未及格人數(shù),要求輸入?yún)?shù)課程號后,返回各課程的人數(shù) NUM。1 create or replace function statistc_num(cno in o%type)2 return number3 is4 num number:=0;5 begin.6 select count
15、(*) into num from score7 where o=cno and scores<60;8 return num;9* end;SQL> /函數(shù)已創(chuàng)建。4. 創(chuàng)建存儲過程 db_num,調用 statistc_num 函數(shù)來查數(shù)據(jù)庫系統(tǒng)設計的未及格人數(shù)。1 create or replace procedure db_num2 is3 num number(4);4 v_cno o%type;5 begin6 select cno into v_cno from course7where cname=' 數(shù)據(jù)庫系統(tǒng)設計 '8num:=statistic
16、_num(v_cno);9dbms_output.put_line('未及格人數(shù): '|num);10 exception11 when no_data_found then12 dbms_output.put_line('沒有這門課程! ');13* end;SQL> /過程已創(chuàng)建。3.4 測試與分析3.4.1 測試.現(xiàn)在向 college 表格中插入數(shù)據(jù)SQL> insert into college(cno,cname) values(&c,&n);輸入 c的值 : 1輸入 n的值 : '軟件學院 '原值1: i
17、nsert into college(cno,cname) values(&c,&n)新值1: insert into college(cno,cname) values(1,'軟件學院 ')已創(chuàng)建 1行。此時的 college 表:圖3-4-1運行截圖現(xiàn)在向 college 表格中插入數(shù)據(jù)SQL>insertintostudent(cno,sno,sname,credit)values( 1,1220010311,0);SQL>insertintostudent(cno,sno,sname,credit)values( 1,1220010315,劉
18、暢 ',0);SQL>insertintostudent(cno,sno,sname,credit)values( 1,1220010319,馬明 ',0);SQL>insertintostudent(cno,sno,sname,credit)values( 1,1120010325,邢少強 ',0);.圖3-4-2 運行截圖向course 表中添加學生所需要修的課程信息SQL> insert into course(cno,cname,credit) values( 1 ,'oracle數(shù)據(jù)庫管理與應用 ',3);SQL> in
19、sert into course(cno,cname,credit) values(2,' 編譯原理 ',4)SQL>insertintocourse(cno,cname,credit)values( 3, 數(shù)據(jù)庫系統(tǒng)設計 ,2)SQL> insert into course(cno,cname,credit) values(4, 日語 ',4)圖3-4-3運行截圖.向成績表中錄入成績SQL> insert into score(sno,cno,scores) values( 1220010311, 1,90);SQL> insert into
20、score(sno,cno,scores) values( 1220010319, 3,59);圖3-4-4 運行截圖插入 90分的成績后,自動更新已選修學分:圖3-4-5運行截圖.前面有插入一條 59的成績:圖3-4-6運行截圖3.4.2 分析在開始的時候,總會遇到這樣或那樣的問題,在做的過程中,慢慢摸索和研究,把其中的一個個問題逐個解決。為了更好地完成課程設計,我利用了軟件工程的思想,對系統(tǒng)進行需求分析,系統(tǒng)設計,數(shù)據(jù)庫設計等。使程序設計的過程更加合理化、系統(tǒng)化,同時也提高了我的編程思想和應用能力。對于這一次課程設計,我們小組分工完成。課程設計時間我們不是很充裕,這個過程是艱苦的,但我從這
21、個過程中,學到了很多的東西,更加鞏固我的Oracle 數(shù)據(jù)庫應用方面的知識。提高了自己動手實踐的能力,把書本的知識轉化為實際應用中去,豐富了自己的實踐經驗。3.5 代碼1 create table college(2 cno varchar2(10) primary key,3 cname varchar2(10),4 manager varchar2(10),5 address varchar2(50),6 population number(10)7* )SQL> /表已創(chuàng)建。1 create table student(.2 sno varchar2(20) primary key
22、,3 cno varchar2(10),4 sname varchar2(10),5 sex varchar2(2),6 type varchar2(10),7 in_date date,8 jiguan varchar2(10),9 id varchar2(20),10 address varchar2(50),11 birth date,12 major varchar2(10),13 nation varchar2(10),14 tele varchar2(11),15 payment number(10),16 credit number(5),17 remark varchar2(5
23、0),18 foreign key (cno) references college(cno)19* )SQL> /表已創(chuàng)建。1 create table course(2 cno varchar2(10) primary key,3 cname varchar2(30),4 grade varchar2(5),5 study_time number(4),6 credit number(4) not null.7* )SQL> /表已創(chuàng)建。1 create table score(2 cno varchar2(10),3 sno varchar2(10),4 term numbe
24、r(2),5 scores number(10),6 remark varchar2(50),7 primary key (cno,sno),8 foreign key (cno) references course(cno),9 foreign key (sno) references student(sno) 10* )SQL> /表已創(chuàng)建。SQL> conn sys/admin as sysdba;已連接。SQL> grant create procedure to admin;授權成功。SQL> grant create trigger to admin;授權成
25、功。SQL> conn admin/admin;已連接。1 create or replace procedure Statistic_credit.2 is3 cursor c14 is select * from student ;5 stu_info student%rowtype;6 begin7 open c1;8 fetch c1 into stu_info;9 while c1%found10loop11dbms_output.put_line(stu_info.sno|''|stu_info.sname|''|stu_info.credit
26、);12 fetch c1 into stu_info;13 end loop;14 close c1;15* end;SQL> /過程已創(chuàng)建。1 create or replace trigger t12 after insert or update of scores on score3 for each row4 begin5 if :new.scores>=60 then6updatestudentset student.credit=student.credit+(selectcreditfromcourse where o=:o)7 where student.sno=
27、:new.sno;8 end if;.9* end;SQL> /觸發(fā)器已創(chuàng)建SQL> conn sys as sysdba;已連接。SQL> grant unlimited tablespace to admin;授權成功。SQL> conn admin/admin;已連接。SQL> insert into college(cno,cname) values(&c,&n);輸入 c的值 : 1輸入 n的值 : '軟件學院 '原值1: insert into college(cno,cname) values(&c,&
28、n)新值1: insert into college(cno,cname) values(1,'軟件學院 ')已創(chuàng)建 1行。SQL>insertintostudent(cno,sno,sname,credit)values(&cno,&sno,&sname,&credit);輸入 cno的值 : 1輸入 sno的值 : 1220010311輸入 sname 的值 : '胡芳霞 '輸入 credit的值 : 0原值1:insertintostudent(cno,sno,sname,credit)values(&cno,
29、&sno,&sname,&credit).新值1: insert into student(cno,sno,sname,credit) values(1,1220010311,'胡芳霞 ',0)已創(chuàng)建 1行。SQL>insertintostudent(cno,sno,sname,credit)values(&cno,&sno,&sname,&credit);輸入 cno的值 : 1輸入 sno的值 : 1220010315輸入 sname 的值 : '劉暢 '輸入 credit的值 : 0原值1:in
30、sertintostudent(cno,sno,sname,credit)values(&cno,&sno,&sname,&credit)新值1: insert into student(cno,sno,sname,credit) values(1,1220010315,'劉暢 ',0)已創(chuàng)建 1行。SQL> insert into course(cno,cname,credit) values(&cno,&cname,&credit); 輸入 cno 的值 : 001輸入 cname 的值 : 'oracl
31、e數(shù)據(jù)庫管理與應用 '輸入 credit的值 : 3原值1:insertintocourse(cno,cname,credit)values(&cno,&cname,&credit)新值1: insert into course(cno,cname,credit) values(001,'oracle數(shù)據(jù)庫管理與應用 ',3).已創(chuàng)建 1行。SQL> insert into course(cno,cname,credit) values(&cno,&cname,&credit);輸入 cno的值 : 002輸入 cn
32、ame 的值 : '編譯原理 '輸入 credit的值 : 4原值1:insertintocourse(cno,cname,credit)values(&cno,&cname,&credit)新值1: insert into course(cno,cname,credit) values(002,'編譯原理 ',4)已創(chuàng)建 1行。SQL> insert into score(sno,cno,scores) values(&sno,&cno,&scores);輸入 sno的值 : 1220010311輸入 cn
33、o的值 : 001輸入 scores的值 : 90原值1: insert into score(sno,cno,scores) values(&sno,&cno,&scores)新值1: insert into score(sno,cno,scores) values(1220010311,001,90)已創(chuàng)建 1行。SQL> set serveroutput on;SQL> select sno,credit from student;SNOCREDIT-1220010311312200103150.SQL> execute statistic_cr
34、edit;1220010311胡芳霞31220010315劉暢 01 create or replace function statistc_num(cno in o%type)2 return number3 is4 num number:=0;5 begin6 select count(*) into num from score7 where o=cno and scores<60;8 return num;9* end;SQL> /函數(shù)已創(chuàng)建。1 create or replace procedure db_num2 is3 num number(4);4 v_cno o%
35、type;5 begin6 select cno into v_cno from course7where cname=' 數(shù)據(jù)庫系統(tǒng)設計 '8num:=statistic_num(v_cno);9dbms_output.put_line('未及格人數(shù): '|num);10exception.11 when no_data_found then12 dbms_output.put_line('沒有這門課程! ');13* end;SQL> /過程已創(chuàng)建。SQL> execute db_num;沒有這門課程!SQL> ed已寫入
36、file afiedt.buf1 create or replace package mypackage2 as3 procedure Statistic_credit;4 function statistic_num(cno in o%type) return number;5 procedure db_num;6* end mypackage;SQL> /程序包已創(chuàng)建。SQL>insertintostudent(sno,sname,cno,credit)values(&sno,&sname,&cno,&credit);輸入 sno的值 : 122
37、0010319輸入 sname 的值 : '馬明 '輸入 cno的值 : 1輸入 credit的值 : 0.原值1:insertintostudent(sno,sname,cno,credit)values(&sno,&sname,&cno,&credit)新值1: insert into student(sno,sname,cno,credit) values(1220010319,'馬明 ',1,0)已創(chuàng)建 1行。SQL>insertintostudent(sno,sname,cno,credit)values(&
38、;sno,&sname,&cno,&credit);輸入 sno的值 : 1120010325輸入 sname 的值 : '邢少強 '輸入 cno的值 : 1輸入 credit的值 : 0原值1:insertintostudent(sno,sname,cno,credit)values(&sno,&sname,&cno,&credit)新值1: insert into student(sno,sname,cno,credit) values(1120010325,'邢少強 ',1,0)已創(chuàng)建 1行。1* i
39、nsert into course(cno,cname,credit) values(&cno,&cname,&credit)SQL> /輸入 cno的值 : 003輸入 cname 的值 : '數(shù)據(jù)庫系統(tǒng)設計 '輸入 credit的值 : 2原值1:insertintocourse(cno,cname,credit)values(&cno,&cname,&credit)新值1: insert into course(cno,cname,credit) values(003,'數(shù)據(jù)庫系統(tǒng)設計.',2)已創(chuàng)建
40、1行。1* insert into course(cno,cname,credit) values(&cno,&cname,&credit)SQL> /輸入 cno的值 : 004輸入 cname 的值 : '日語 '輸入 credit的值 : 4原值1:insertintocourse(cno,cname,credit)values(&cno,&cname,&credit)新值1: insert into course(cno,cname,credit) values(004,'日語 ',4)已創(chuàng)建 1行。
41、1* insert into score(cno,sno,scores) values(&cno,&sno,&scores)SQL> /輸入 cno的值 : 002輸入 sno的值 : 1220010319輸入 scores的值 : 59原值1: insert into score(cno,sno,scores) values(&cno,&sno,&scores)新值1: insert into score(cno,sno,scores) values(002,1220010319,59)已創(chuàng)建 1行。1* insert into scor
42、e(cno,sno,scores) values(&cno,&sno,&scores)SQL> /輸入 cno的值 : 004.輸入 sno的值 : 1220010315輸入 scores的值 : 100原值1: insert into score(cno,sno,scores) values(&cno,&sno,&scores)新值1: insert into score(cno,sno,scores) values(004,1220010315,100)已創(chuàng)建 1行。SQL> select sname,credit from student ;SNAMECREDIT- -胡芳霞3劉暢4馬明0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合伙承包山林協(xié)議書
- 合同養(yǎng)殖加盟協(xié)議書
- 化肥代理銷售協(xié)議書
- 動物孤兒收養(yǎng)協(xié)議書
- 合伙企業(yè)解散協(xié)議書
- 公司贈送股份協(xié)議書
- 合作建分公司協(xié)議書
- 水利水電工程信息化進程試題及答案
- 2025年財務管理考試全新體驗試題及答案
- 行政管理中的戰(zhàn)略公共關系學試題及答案
- 中國鐵路武漢局集團有限公司招聘筆試沖刺題2025
- 2023年高考物理試卷(廣東)含答案解析
- DB45T 1750-2018 液化石油氣儲罐檢修安全規(guī)程
- 2025年中考數(shù)學復習:二次函數(shù)綜合 壓軸題匯編(含答案)
- 安全風險隱患舉報獎勵制度
- 家庭防火教育課件
- 華中師范大學第一附中2025屆高考仿真模擬數(shù)學試卷含解析
- 急診科運用PDCA循環(huán)降低急診危重患者院內轉運風險品管圈QCC專案結題
- 新時代青年的使命與擔當2
- JJF 1375-2024機動車發(fā)動機轉速測量儀校準規(guī)范
- 現(xiàn)金日記賬模板(出納版)
評論
0/150
提交評論