4.5 系统改进
至此完成了高校招生模拟的全部工作。该系统在以下方面还有待于改进:
(1) 可按照模块功能以包的形式对模块进行分类,比如可以分为投档包、查询包和公用包。 (2) 可以设立多个应用账户,通过授予不同的系统权限对象及包的访问权限,来限定对数据的访问和操作。
(3) 进一步完成调剂投档的程序。
以上工作,有兴趣的读者可以进一步完善。
小编不才,完成了要求1的改进工作,设立了插入学生和院校的插入包,投档包,查询包。其他的要求有待其他读者改进。废话不多说,看代码:
--创建插入包
--此处为包头
create or replace package insert_package
as
PROCEDURE INPUT_COLLEGE(V_YXBH IN NUMBER,V_YXMC IN VARCHAR2,V_LQFSX IN NUMBER,V_ZSRS IN NUMBER);
PROCEDURE INPUT_STUDENT
(V_ID IN NUMBER ,V_KSXM IN VARCHAR2,V_XB IN VARCHAR2,V_ZF IN NUMBER,V_ZY1 IN NUMBER,V_ZY2 IN NUMBER,V_TYTJ IN VARCHAR2);
end insert_package;
--包体在这里
create or replace package body insert_package as
PROCEDURE INPUT_COLLEGE
(V_YXBH IN NUMBER,V_YXMC IN VARCHAR2,V_LQFSX IN NUMBER,V_ZSRS IN NUMBER)
AS
R NUMBER;
BEGIN
SELECT COUNT(*) INTO R FROM COLLEGE WHERE 院校编号=V_YXBH;
IF R>0 THEN
DBMS_OUTPUT.PUT_LINE('院校' || V_YXBH || '已经存在!');
ELSE
INSERT INTO COLLEGE
VALUES(V_YXBH,V_YXMC,V_LQFSX,V_ZSRS,0);
COMMIT;
DBMS_OUTPUT.PUT_LINE('院校' || V_YXMC || '插入成功!');
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('院校' || V_YXMC || '插入失败!');
END INPUT_COLLEGE;
PROCEDURE INPUT_STUDENT
(V_ID IN NUMBER ,V_KSXM IN VARCHAR2,V_XB IN VARCHAR2,V_ZF IN NUMBER,V_ZY1 IN NUMBER,V_ZY2 IN NUMBER,V_TYTJ IN VARCHAR2)
AS
R NUMBER;
BEGIN
SELECT COUNT(*) INTO R FROM STUDENT WHERE 编号=V_ID;
IF R>0 THEN
DBMS_OUTPUT.PUT_LINE('考生' || V_ID || '已经存在!');
ELSE
INSERT INTO STUDENT(编号,姓名,性别,总分,一志愿,二志愿,同意调剂)
VALUES(STUNO_SQU.NEXTVAL,V_KSXM,V_XB,V_ZF,V_ZY1,V_ZY2,V_TYTJ);
COMMIT;
DBMS_OUTPUT.PUT_LINE('考生' || V_KSXM || '插入成功!');
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('考生' || V_KSXM || '插入失败!');
END INPUT_STUDENT;
END insert_package;
执行程序:
exec insert_package.INPUT_STUDENT(STUNO_SQ