当前位置:首页 > 开发 > 数据库 > 正文

Oracle显示根据高考分数模拟录取

发表于: 2014-11-04   作者:百合不是茶   来源:转载   浏览:
摘要: 题目要求: 1,创建student表和result表 2,pl/sql对学生的成绩数据进行处理 3,处理的逻辑是根据每门专业课的最低分线和总分的最低分数线自动的将录取和落选     1,创建student表,和result表 学生信息表; create table student( student_id number primary key,--学生id

题目要求:

1,创建student表和result表
2,pl/sql对学生的成绩数据进行处理
3,处理的逻辑是根据每门专业课的最低分线和总分的最低分数线自动的将录取和落选

 

 

1,创建student表,和result表

学生信息表;

create table student(
   student_id number primary key,--学生id
   math  number,--数学分数
   chinaese number,--语文分数
   en number,--英语分数
   wenke number,--文科学分
  likenumber number,--理科分数
  zhuanyeke number,--专业分数
  student_sum number --总分
);

 

学生录取状态表;

create table result(
  student_id number,
  enrollresult number 
);

 

2.插入一些考生的数据

student表插入数据;

理科
insert into student(student_id,math,chinaese,en,likenumber,STUDNET_SUM) values(4307211993,120,130,140,260,650);
insert into student(student_id,math,chinaese,en,likenumber,STUDNET_SUM) values(4307211997,20,30,40,260,350);
insert into student(student_id,math,chinaese,en,likenumber,STUDNET_SUM) values(4307211998,120,30,240,130,520);

理科专业
insert into student(student_id,math,chinaese,en,likenumber,zhuanyeke,STUDNET_SUM) values(4307211994,128,128,138,260,200,844);
insert into student(student_id,math,chinaese,en,likenumber,zhuanyeke,STUDNET_SUM) values(4307211999,120,30,40,130,180,500);
insert into student(student_id,math,chinaese,en,likenumber,zhuanyeke,STUDNET_SUM) values(4307211100,20,30,13,157,180,400);

文科
insert into student(student_id,math,chinaese,en,wenke,STUDNET_SUM) values(4307211995,110,140,50,270,550);
insert into student(student_id,math,chinaese,en,wenke,STUDNET_SUM) values(4307211101,90,80,50,180,400);
insert into student(student_id,math,chinaese,en,wenke,STUDNET_SUM) values(4307211102,110,120,80,230,540);

文科专业
insert into student(student_id,math,chinaese,en,wenke,zhuanyeke,STUDNET_SUM) values(4307211996,120,30,40,160,180,530);

 

result表插入数据;

insert into result values(4307211993);
insert into rasult values(4307211997);
insert into rasult values(4307211998);
insert into rasult values(4307211994);
insert into rasult values(4307211999);
insert into rasult values(4307211100);

 

3,编写带参数的存储过程,记录考生的分数以及保存考生的录取状态 0表示落选,1表示录取

create or replace procedure pro_score(v_id number) is
v_student_id student.student_id%type;
v_math student.math%type;
v_chinaese student.chinaese%type;
v_en student.en%type;
v_wenke student.wenke%type;
v_like student.likenumber%type;
v_zhuanye student.zhuanyeke%type;
  v_score number(7);
begin
  select STUDENT_ID, MATH ,CHINAESE,EN ,WENKE ,LIKENUMBER ,ZHUANYEKE  into v_student_id , v_math,v_chinaese,v_en ,v_wenke,v_like,v_zhuanye from student where student_id=v_id; 
   v_score := v_math + v_chinaese + v_en + v_wenke + v_like + v_zhuanye;
    dbms_output.put_line('总分'||v_score);
  if v_score>500 then
  update result set ENROLLRESULT=1 where STUDENT_ID=v_id;
   dbms_output.put_line(v_student_id||'被录取了');
  else
  update result set ENROLLRESULT=0 where STUDENT_ID=v_id;
  dbms_output.put_line(v_student_id||'落榜了');
  
  end if;
end;
 

 

 

4,创建游标,用于从student表中查询数据,并加入一个异常机制  0表示落选,1表示录取

set serveroutput on;
create or replace procedure pro_score is
  myrow student%rowtype;
  v_score number(7);
  type type_cursor is ref cursor;
  rowcursor type_cursor ;
begin
  open  rowcursor for select * from student;

  loop
      fetch rowcursor into myrow ;
   v_score := myrow.math + myrow.chinaese + myrow.en + nvl(myrow.wenke,0) + nvl(myrow.likenumber,0) +nvl( myrow.zhuanyeke,0);
   dbms_output.put_line('总分'||v_score);
   
   exit when rowcursor%notfound;
  
  if v_score>500 then
  update result set ENROLLRESULT=1 where STUDENT_ID=myrow.student_id;
   dbms_output.put_line(myrow.student_id||'被录取了');
  else
  update result set ENROLLRESULT=0 where STUDENT_ID=myrow.student_id;
  dbms_output.put_line(myrow.student_id||'落榜了'); 
  end if;
end loop;
end;
/

 exec pro_score;

总分650
4307211993被录取了
总分350
4307211997落榜了
总分520
4307211998被录取了
总分854
4307211994被录取了
总分500
4307211999落榜了
总分400
4307211100落榜了
总分570
4307211995被录取了
总分400
4307211101落榜了
总分540
4307211102被录取了
总分530
4307211996被录取了
总分530

 

 

 

在游标中添加异常机制,实在是不知道怎么添加了,所以把代码和思路贴出来让大家帮我看一下;怎么解决这个问题

 

Oracle显示根据高考分数模拟录取

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
1 分数
/* * 程序的版权和版本声明部分 * Copyright (c)2012, 烟台大学计算机学院学生 * All rightsreserve
方法如下: select decode(TEST_RESULT,null,'N/A','<a target = "_blank" href="'||REPORT_URL|
我很早就想做一个模拟时钟了,网上也有很多C语言写的模拟时钟的代码,不过是基于TC的。后来我找到一
CVPR2011论文录取已经结束了,虽然论文都还没有在线公布出来,不过相信http://www.cvpapers.com/会
要实现的功能:cognos开发用reportstudio实现根据一个下拉列表显示不用列表;PS:1:订单金额 2:订
我们都知道,DataGridView可以直接绑定数据源,显示数据库中的数据。但是我想做的是可以对他进行条
对SilverLight与WPF不熟,连带着Windows Phone7的教程看了几天之后打算做一个模拟LED点阵文字显示的
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生
/* * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reser
哈佛设计学院2007级毕业生(照片:K. Harris) 每年的三、四月份,都是全美各个大学发出新生录取通
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号