Oracle综训学生成绩管理系统_第1页
Oracle综训学生成绩管理系统_第2页
Oracle综训学生成绩管理系统_第3页
Oracle综训学生成绩管理系统_第4页
Oracle综训学生成绩管理系统_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件学院综合训练项目报告书课程名称Oracle 数据库项目名称 学生成绩管理系统专业班级 组别成员任课教师 刘腊梅2015年 6 月目录 TOC o 1-5 h z HYPERLINK l bookmark3 o Current Document 1.设计时间 3 HYPERLINK l bookmark5 o Current Document 2,设计任务 3 HYPERLINK l bookmark7 o Current Document .设计内容 3 HYPERLINK l bookmark9 o Current Document 系统设计 3系统功能概述3系统功能模块设计数据库设计

2、5数据库需求分析5数据库逻辑结构设计9 TOC o 1-5 h z 数据库实现 11创建用户 11 HYPERLINK l bookmark23 o Current Document 创建表和约束 11创建存储过程、函数及触发器13 HYPERLINK l bookmark35 o Current Document 测试与分析 16 HYPERLINK l bookmark37 o Current Document 测试 16 HYPERLINK l bookmark46 o Current Document 分析 19 HYPERLINK l bookmark48 o Current Doc

3、ument 代码 19.总结与展望 30.参考文献 311设计时间2015/6/12015/6/72设计任务信息管理系统一学生成绩管理系统掌握ORACLE据库的特点,熟悉SQ命令和PL/SQL勺编程特点,运用所学知识解决现 实问题,完成学生成绩管理系统的后台数据库设计,提高系统性能。在该项目中,不考虑需求分析过程,要求建立以下关系:院系信息:院系编号、院系名称、院系主管、地址、院系人数;学生基本信息:院系编号、学号、姓名、性别、学生类型、入学日期、籍贯、身份证号、详细地址、出生日期、所学专业、民族、电话 (家)、缴费总计、已修学分、备注; 课程信息:课程号、课程名称、开设年级、学时数、学分;成

4、绩单:学号、课程号、学期、成绩、备注。使用存储过程统计每个学生的已修学分。使用触发器实现当登记学生成绩(60分以上)时自动统计学生的已修学分。使用函数实现统计各课程的未及格人数,要求输入参数课程号后,返回各课程的人数 NUM并实现调用,查数据库系统设计的未及格人数。将上实验中的存储过程与本实验中函数创建包。3设计内容系统设计系统功能概述系统的功能模块图如下:信息查询模块信息输入、修改模块信息统计模块图3-1-1功能模块图统计课程未及格人数院系自2系统功能模块设计.信息查询模块信息查询模块可以查询院系信息、学生信息、课程信息以及成绩单信息.信息输入、修改模块信息输入、修改模块以修改院系信息、学生

5、信息、课程信息。.信息统计模块用于统计学生已修学分、课程人数及课程未及格人数。系统业务流程图如下:图3-1-2业务流程图3.2数据库设计数据库需求分析系统E-R图如下:表3-2-1实体及其属性表实体名称属性名称院系信息院系编号、院系名称、院系主管、地址、院系人数学生信息院系编号、学号、姓名、性别、学生类型、入学日期、籍贯、身份证号、详细地址、出生日期、所学专业、民族、电话(家)、缴费总计、已修学分、备注课程信息课程号、课程名称、开设年级、学时数、学分选修学号、课程号、学期、成绩、备注图3-2-4课程实体属性图数据流图如下:图 3-2-5 E-R 图学生信息小一_乙* 查询学生信息口查询课程、院

6、系信息,课程、院系信息:管理如删除学生信息+1更新学生信息4查成绩一学生成绩川学生信息数据库4图3-2-6 0层数据流图更新课程信息-更新院系信息+添加院系、课程管理口员4管理员一图3-2-7 1层数据流图院系信息3.2.2数据库逻辑结构设计表3-2-8学生成绩管理系统数据库结构表名称表信息表述College院系信息表Student学生信息表Course课程信息表Score成绩单表3-2-9院系信息表college描述字段院系编R (主键)Cnovarchar2(10)院系名称Cnamevarchar2(30)院系主管Managervarchar2(10)地址Addressvarchar2(5

7、0)院系人数Populationnumber(10)表3-2-10学生信息表student描述字段学号(主键)Snovarchar2(20)院系编号(外键)Cnovarchar2(10)姓名Snamevarchar2(10)性别Sexvarchar2(2)学生类型Typevarchar2(10)入学日期in_dateDate柿Jiguanvarchar2(10)身份证号Idvarchar2(20)详细地址Addressvarchar2(50)出生日期BirthDate所学专业Majorvarchar2(10)民族Nationvarchar2(10)电话(家)Televarchar2(11)缴费

8、总计Paymentnumber(10)已修学分Creditnumber(5)备注Remarkvarchar2(50)表3-2-11 课程信息表course描述字段课程号(主键)Cnovarchar2(10)课程名称Cnamevarchar2(30)开设年级Gradevarchar2(5)学时数study_timenumber(4)学分Credit表3-2-12成绩单scorenumber(4)描述字段回课程号(联合主键、外键)Cnovarchar2(10)学号(联合主键、外键)Snovarchar2(10)学期Termnumber(2)成绩Scoresnumber(10)备注Remarkvar

9、char2(50)3.3数据库实现3.3.1创建用户创建admin用户并授权。create user admin identified by adminSQL grant create procedure to admin;授权成功。SQL grant create trigger to admin;授权成功。3.3.2创建表和约束.创建院系信息表。create table college(cno varchar2(10) primary key,cname varchar2(10),manager varchar2(10),address varchar2(50),population nu

10、mber(10)7* )SQL /表已创建。.创建学生信息表create table student(sno varchar2(20) primary key,cno varchar2(10),sname varchar2(10),sex varchar2(2),type varchar2(10),in_date date,jiguan varchar2(10),id varchar2(20),address varchar2(50),birth date,major varchar2(10),nation varchar2(10),tele varchar2(11),payment numb

11、er(10),credit number(5),remark varchar2(50),foreign key (cno) references college(cno)19* )SQL /表已创建。.创建课程信息表create table course(cno varchar2(10) primary key,cname varchar2(30),grade varchar2(5),study_time number(4),credit number(4) not null7* )SQL /表已创建。.创建成绩单表create table score(cno varchar2(10),sno

12、 varchar2(10),term number(2),scores number(10),remark varchar2(50),primary key (cno,sno),foreign key (cno) references course(cno),foreign key (sno) references student(sno)10* )SQL /表已创建。3.3.3创建存储过程、函数及触发器.创建存储过程Statistic_credit ,用于统计每个学生的已修学分。create or replace procedure Statistic_creditiscursor c1is

13、 select * from student ;stu_info student%rowtype;beginopen c1;fetch cl into stu_info;while c1%foundloopdbms_output.put_line(stu_info.sno|stu_info.sname|stu_info.credit);fetch c1 into stu_info;end loop;close c1;15* end;SQL /过程已创建。.创建触发器t1 ,实现当登记学生成绩(60分以上)时自动统计学生的已修学分。create or replace trigger t1afte

14、r insert or update of scores on scorefor each rowbeginif :new.scores=60 thenupdate student set student.credit=student.credit+(select credit from course where o=:o)where student.sno=:new.sno;end if;* end;SQL /触发器已创建.创建函数statistc_num ,使用函数实现统计各课程的未及格人数,要求输入参数课 程号后,返回各课程的人数NUMcreate or replace function

15、 statistc_num(cno in o%type)return numberisnum number:=0;beginselect count(*) into num from scorewhere o=cno and scores /函数已创建。.创建存储过程db_num调用statistc_num函数来查数据库系统设计的未及格人 数。create or replace procedure db_numisnum number(4);v_cno o%type;beginselect cno into v_cno from coursewhere cname=数据库系统设计;num:=s

16、tatistic_num(v_cno);dbms_output.put_line( 未及格人数:|num);exceptionwhen no_data_found thendbms_output.put_line(没有这门课程!);13* end;SQL /过程已创建。3.4测试与分析测试现在向college表格中插入数据SQL insert into college(cno,cname) values(&c,&n);输入c的值:1输入n的值:软件学院原值 1: insert into college(cno,cname) values(&c,&n)新值 1: insert into coll

17、ege(cno,cname) values(1,软件学院)已创建1行。此时的college表:SQL select * from college;CNO CNAME MANAGER ADDRESSPOPULATIONIM IM i.B tB iMIiMIiH iMiiMi MB Mk Mh * iMi-1软件学院图3-4-1运行截图现在向college表格中插入数据SQLnsertinto student(cno,sno,sname,credit)values( 1,1220010311,0);SQLnsertintostudent(cno,sno,sname,credit)values( 1

18、,1220010315,刘畅,0);SQLnsertintostudent(cno,sno,sname,credit)values( 1,122001031g ,马明,0);SQLnsertintostudent(cno,sno,sname,credit)values( 1,1120010325,邢少强,0);SQL select FromstudentiSNDCNDSNANESE TYPEIN_DATEJIGUANIDADDRESSBIRTHMAJORNATIONTELEPAYMENTCREDITREMARK12200103191马明e112G01O3251邢少强o122G0103111胡芳

19、霞e12200103151刘畅o图3-4-2 运行截图向course表中添加学生所需要修的课程信息SQL insert into course(cno,cname,credit) values(1, oracle 数据库管理与应用,3);SQL insert into course(cno,cname,credit) values(2,编译原理,4)SQLnsert into course(cno,cname,credit) values(3,数据库系统设计,2)SQL insert into course(cno,cname,credit) values(4,日语,4)SQL select

20、、 from course;CNO CNAMEGRADE STUDV TIMECREDIT3 4 12计 段 统 系 库 据语 数日图3-4-3 运行截图向成绩表中录入成绩1220010311 , 1 ,90);SQL insert into score(sno,cno,scores) values(SQL insert into score(sno,cno,scores) values(1220010319 , 3 ,59);SQL select x from score;CNO $N0TERM SCORES REMARK112200103119031220O1Q31959图3-4-4 运行

21、截图插入90分的成绩后,自动更新已选修学分:SQL 3010ct m from student;SNOCN。SHAME SE TYPE IN_DATEJIGUPNIDADDRESSBIRTHMAJOR NATION TELEPAYMENT CREDIT REMARK122QQ1O3191马明11290103251邢少强012200103111胡芳霞12290103151刘畅图3-4-5 运行截图前面有插入一条59的成绩:SQL execute db_num;未及格人数:1PL/SQL过程已成功完成,图3-4-6 运行截图3.4.2分析在开始的时候,总会遇到这样或那样的问题,在做的过程中,慢慢摸

22、索和研究,把其 中的一个个问题逐个解决。为了更好地完成课程设计,我利用了软件工程的思想,对系统 进行需求分析,系统设计,数据库设计等。使程序设计的过程更加合理化、系统化,同时 也提高了我的编程思想和应用能力。对于这一次课程设计,我们小组分工完成。课程设计时间我们不是很充裕,这个过程 是艰苦的,但我从这个过程中,学到了很多的东西,更加巩固我的 Oracle数据库应用方 面的知识。提高了自己动手实践的能力,把书本的知识转化为实际应用中去,丰富了自己 的实践经验。3.5代码create table college(cno varchar2(10) primary key,cname varchar2

23、(10),manager varchar2(10),address varchar2(50),population number(10)* )SQL /表已创建。create table student(sno varchar2(20) primary key,cno varchar2(10),sname varchar2(10),sex varchar2(2),type varchar2(10),in_date date,jiguan varchar2(10),id varchar2(20),address varchar2(50),birth date,major varchar2(10)

24、,nation varchar2(10),tele varchar2(11),payment number(10),credit number(5),remark varchar2(50),foreign key (cno) references college(cno)19* )SQL /表已创建。create table course(cno varchar2(10) primary key,cname varchar2(30),grade varchar2(5),study_time number(4),credit number(4) not null* )SQL /表已创建。crea

25、te table score(cno varchar2(10),sno varchar2(10),term number(2),scores number(10),remark varchar2(50),primary key (cno,sno),foreign key (cno) references course(cno),foreign key (sno) references student(sno)10* )SQL /表已创建。SQL conn sys/admin as sysdba;已连接。SQL grant create procedure to admin;授权成功。SQL g

26、rant create trigger to admin;授权成功。SQL conn admin/admin;已连接。create or replace procedure Statistic_creditiscursor c1is select * from student ;stu_info student%rowtype;beginopen c1;fetch cl into stu_info;while c1%foundloopdbms_output.put_line(stu_info.sno|stu_info.sname|stu_info.credit);fetch c1 into s

27、tu_info;end loop;close c1;* end;SQL /过程已创建。create or replace trigger t1after insert or update of scores on scorefor each rowbeginif :new.scores=60 thenupdate student set student.credit=student.credit+(select credit from course where o=:o)where student.sno=:new.sno;end if;9* end;SQL /触发器已创建SQL conn s

28、ys 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,&n)新值 1: insert into college(cno,cname) values(1,软件学院)已创建1行。SQLinsertintostudent(cno,sno,sname,credi

29、t)values(&cno,&sno,&sname,&credit);输入cno的值:1输入 sno 的值:1220010311输入sname的值:胡芳霞输入credit 的值:0原 值1: insert into student(cno,sno,sname,credit)values(&cno,&sno,&sname,&credit)新值 1: insert into student(cno,sno,sname,credit) values(1,1220010311,胡芳霞,0)已创建1行。SQLinsertintostudent(cno,sno,sname,credit)values(&c

30、no,&sno,&sname,&credit); 输入cno的值:1 输入 sno 的值:1220010315 输入sname的值:刘畅 输入credit 的值:0 原 值1: insert into student(cno,sno,sname,credit)values(&cno,&sno,&sname,&credit)新值 1: insert into student(cno,sno,sname,credit) values(1,1220010315, 刘畅,0)已创建1行。SQL insert into course(cno,cname,credit) values(&cno,&cnam

31、e,&credit);输入cno的值:001输入cname的值:oracle数据库管理与应用输入credit 的值:3原值 1: insert into course(cno,cname,credit) values(&cno,&cname,&credit) 新值 1: insert into course(cno,cname,credit) values(001,oracle数据库管理与应用,3)已创建1行。SQL insert into course(cno,cname,credit) values(&cno,&cname,&credit);输入cno的值:002输入cname的值:编译原

32、理输入credit 的值:4原值 1: insert into course(cno,cname,credit) values(&cno,&cname,&credit) 新值 1: insert into course(cno,cname,credit) values(002,编译原理,4)已创建1行。SQL insert into score(sno,cno,scores) values(&sno,&cno,&scores);输入 sno 的值:1220010311输入cno的值:001输入scores 的值:90原值 1: insert into score(sno,cno,scores)

33、 values(&sno,&cno,&scores)新值 1: insert into score(sno,cno,scores) values(1220010311,001,90)已创建1行。SQL set serveroutput on;SQL select sno,credit from student;SNOCREDIT1220010311312200103150SQL execute statistic_credit;1220010311 胡芳霞 31220010315 刘畅 0create or replace function statistc_num(cno in o%type

34、)return numberisnum number:=0;beginselect count(*) into num from scorewhere o=cno and scores /函数已创建。create or replace procedure db_numisnum number(4);v_cno o%type;beginselect cno into v_cno from coursewhere cname=数据库系统设计;num:=statistic_num(v_cno);dbms_output.put_line(未及格人数:|num);exceptionwhen no_dat

35、a_found thendbms_output.put_line(没有这门课程!);* end;SQL /过程已创建。SQL execute db_num;没有这门课程!SQL ed已写入 file afiedt.bufcreate or replace package mypackageasprocedure Statistic_credit;function statistic_num(cno in o%type) return number;procedure db_num;6* end mypackage;SQL /程序包已创建。SQLinsertintostudent(sno,sna

36、me,cno,credit)values(&sno,&sname,&cno,&credit);输入 sno 的值:1220010319输入sname的值:马明输入cno的值:1输入credit 的值:0原 值1: insert into student(sno,sname,cno,credit)values(&sno,&sname,&cno,&credit)新值 1: insert into student(sno,sname,cno,credit) values(1220010319,马明,1,0)已创建1行。SQLinsertintostudent(sno,sname,cno,credit

37、)values(&sno,&sname,&cno,&credit);输入 sno 的值:1120010325输入sname的值:邢少强输入cno的值:1输入credit 的值:0原 值1: insert into student(sno,sname,cno,credit)values(&sno,&sname,&cno,&credit)新值 1: insert into student(sno,sname,cno,credit) values(1120010325,开B少强,1,0)已创建1行。1* insert into course(cno,cname,credit) values(&cno

38、,&cname,&credit)SQL /输入cno的值:003输入cname的值:数据库系统设计输入credit 的值:2原值 1: insert into course(cno,cname,credit) values(&cno,&cname,&credit)新值 1: insert into course(cno,cname,credit) values(003,数据库系统设计,2)已创建1行。1* insert into course(cno,cname,credit) values(&cno,&cname,&credit)SQL /输入cno的值:004输入cname的值:日语输入c

39、redit 的值:4原值 1: insert into course(cno,cname,credit) values(&cno,&cname,&credit)新值 1: insert into course(cno,cname,credit) values(004,日语,4)已创建1行。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) val

40、ues(&cno,&sno,&scores)新值 1: insert into score(cno,sno,scores) values(002,1220010319,59)已创建1行。1* insert into score(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)已创建1行。SQL select sname,credit from student ;SNAME CREDIT TOC o 1-5 h z 胡芳霞3刘畅4马明0邢少强0SQL execute db_num;未及格人数:1SQL execute statistic_credit;1220010311 胡芳霞 31220010315 刘畅 41220010319 马明 0112

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论