Oracle期末实习报告——VBOracle学生成绩管理系统_学生成绩管理实习报告

2020-02-27 实习报告 下载本文

Oracle期末实习报告——VBOracle学生成绩管理系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“学生成绩管理实习报告”。

Oracle期末实习报告

——VB/Oracle学生成绩管理系统

实习学期:班级: 学号: 姓名: 指导老师:

2014—2015第一学期

一、项目概述

使用学生成绩管理系统数据库XSCJ作为后台数据库,以Microsoft Visual Basic 6.0为前台开发工具,开发一个数据库应用系统。本系统的功能包括学生信息的查询;学生信息的录入、修改和删除;学生成绩的录入和删除。

二、总体设计

2.1 XSCJ数据库设计

1、学生成绩管理数据库中包含四个表:学生信息表(XSB)、学生照片表(XSZP)、课程表(KCB)、成绩表(CJB);

2、创建学生课程成绩视图(XS_KC_CJ);

3、使用触发器实现删除学生对应成绩和照片(xs_delete);

4、使用完整性约束实现删除对应成绩记录;

5、使用存储过程实现更新成绩和总学分(CJ_Data)。

2.2 前台设计

1、主窗体,包含本系统所有功能的选择;

2、学生信息查询窗体;

3、学生信息管理窗体;

4、学生成绩录入窗体。

三、详细设计

3.1 XSCJ数据库详细设计

3.1.1 表格设计

学生信息表(XSB)

包含学号(XH)、姓名(XM)、性别(XB)、出生时间(CCSJ)、专业(ZY)、总学分(ZXF)、备注(BZ)等列。

学生照片表(XSZP)

包含学号(XH)、照片(ZP)等列。课程表(KCB)

包含课程号(KCH)、课程名(KCM)、开课学期(KKXQ)、学时(XS)、学分(XF)等列。

成绩表(CJB)

包含学号(XH)、课程号(KCH)、成绩(CJ)等列。

3.1.2 学生课程成绩视图设计

通过学号将学生表和成绩表联系起来,通过课程号将成绩和课程表联系起来,包含学号、姓名、专业、课程号和成绩等列,所有学生的选课情况都保存在视图中,即任意一个学号和任意一个课程号都在视图中有对应的一条记录,如果成绩表(CJB)存在对应的记录则在成绩视图中显示成绩,不存在则显示为NULL。

3.1.3 触发器设计

通过创建学生表(XSB)的DELETE触发器实现当删除学生记录时,同步删除成绩表(CJB)中该学生的成绩记录和照片表(XSZP)中的照片记录。3.1.4 完整性约束的设计

用参照完整性约束实现当删除课程记录后,同步删除成绩表(CJB)中所有学生的该课程的成绩记录。

3.1.5 储存过程的设计

创建存储过程CJ_Data,参数包含:学号(in_xh)、课程号(in_kch)和成绩(in_cj)。根据课程号查询该课程对应的学分,根据学号和课程号查询该成绩记录,删除原来成绩记录。如果成绩>=60,则该学生总学分(ZXF)减去该课程的学分,如果新成绩=-1(表示删除该成绩记录),则存储过程结束。增加成绩记录,如果成绩>=60,则该学生总学分(ZXF)加上该课程的学分。

3.2 前台详细设计

3.2.1 主窗体的设计

主窗体包含本系统所有功能的选择,其他的所有功能界面都将作为主窗体的子窗体,运行时直接在主窗体中显示。包含主要功能有:学生信息查询、学生信息管理、学生成绩录入。

3.2.2 学生信息查询窗体设计

可以满足简单查询的需要,什么条件都不输入则显示所有记录。可以输入条件进行简单的模糊查询,各个条件之间为与的关系。在查询的结果中,鼠标单击一行记录时,可以查看此学生的备注和照片。

3.2.3 学生信息管理窗体设计

通过输入学生学号后单机“查询”按钮可以在窗口中的各个控件中显示当前学生的具体信息。单击“更新”按钮可以对学生信息进行添加和修改。单击“删除”按钮可以删除相应的学生记录。当删除一条学生记录时,触发器XS_DELETE会自动到CJB中删除此学生的成绩记录,并到XSZP表中删除此学生的照片记录,以保证数据的参照性完整。

3.2.4 学生成绩录入窗体设计

用户选择课程名和专业后,单击“查询”按钮,下方的表格中会从视图XS_KC_CJ中列出与课程名和专业都对应的学生的学号、姓名、课程号和所选课程的成绩。如果未选该课程则成绩为空。当移动表格中的记录集时,学号、姓名和成绩文本框中将列出对应的数据。在成绩文本框中输入新成绩或修改旧成绩,单击“更新”按钮则调用存储过程CJ_Data向CJB表中插入一行新成绩或修改原来的成绩。单击“删除”按钮则调用储存过程CJ_Data删除CJB表对应的一行成绩记录。

四、功能实现

4.1 XSCJ数据库功能实现

4.1.1 创建表空间

CREATE TABLESPACE STUDENT LOGGING DATAFILE 'D:apptaooradataXSCJSTUDENT01.DBF' SIZE 100M;

4.1.2 创建表

学生表(XSB)

CREATE TABLE XSB(XH char(6)

XM char(8)

XB char(2)NOT NULL PRIMARY KEY, NOT NULL, DEFAULT '1' NOT NULL, CSSJ date NOT NULL, NULL, NULL,NULL ZY char(12)

ZXF number(2)BZ varchar2(200));课程表(KCB)

CREATE TABLE KCB(NOT NULL PRIMARY KEY, NOT NULL,NULL, NULL, NOT NULL KCH char(3)

KCM char(16)

KKXQ XS

XF);number(1)number(2)number(1)

成绩表(CJB)

CREATE TABLE CJB(XH char(6)NOT NULL, KCH char(3)NOT NULL, CJ number(2)NULL, PRIMARY KEY(XH, KCH));学生照片表(XSZP)

CREATE TABLE XSZP(XH char(6)NOT NULL PRIMARY KEY, ZP blob NULL);4.1.3 插入样本数据

数据为课本后学生信息数据。

4.1.4 创建视图XS_KC_CJ CREATE VIEW XS_KC_CJ AS SELECT XSB.XH,XSB.XM, XSB.ZY, KCB.KCH,KCB.KCM,CJB.CJ FROM XSB CROSS JOIN KCB LEFT OUTER JOIN CJB ON CJB.XH=XSB.XH AND CJB.KCH=KCB.KCH;4.1.5 创建触发器

CREATE OR REPLACE TRIGGER xs_delete AFTER DELETE ON XSB FOR EACH ROW DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN DELETE FROM CJB WHERE XH=:OLD.XH;DELETE FROM XSZP WHERE XH=:OLD.XH;COMMIT;END;

/*声明自治事务*/ 4.1.6 创建存储过程CJ_Data CREATE OR REPLACE PROCEDURE CJ_Data(in_xh IN char, in_kch IN char, in_cj IN number)AS in_count number;in_xf number:=0;in_cjb_cj number:=0;BEGIN SELECT XF INTO in_xf FROM KCB WHERE KCH=in_kch;SELECT COUNT(*)INTO in_count FROM CJB WHERE XH=in_xh AND KCH=in_kch;IF in_count>0 THEN

SELECT CJ INTO in_cjb_cj FROM CJB WHERE XH=in_xh AND KCH=in_kch;DELETE FROM CJB WHERE XH=in_xh AND KCH=in_kch;IF in_cjb_cj>=60 THEN UPDATE XSB SET ZXF=ZXF-in_xf WHERE XH=in_xh;END IF;END IF;IF in_cj-1 THEN

INSERT INTO CJB VALUES(in_xh, in_kch, in_cj);IF in_cj>=60 THEN UPDATE XSB SET ZXF=ZXF + in_xf WHERE XH=in_xh;END IF;END IF;COMMIT;END;4.1.7 创建完整性约束

ALTER TABLE CJB ADD CONSTRAINT FK_KC FOREIGN KEY(KCH)REFERENCES KCB(KCH)ON DELETE CASCADE;4.2 前台功能实现

4.2.1 主窗体实现

代码:

Private Sub search_Click()stu_query.Show stu_query.ZOrder 0 End Sub Private Sub manage_Click()stu_manage.Show stu_manage.ZOrder 0 End Sub Private Sub insert_Click()cj_insert.Show cj_insert.ZOrder 0 End Sub 页面设计:

功能:

主窗体包含其他三个功能窗体,可以切换学生信息查询、学生信息管理、学生成绩录入功能子窗体

4.2.2 学生信息查询窗体

页面设计:

功能展示:

可以满足简单查询的需要,什么条件都不输入则显示所有记录。可以输入条件进行简单的模糊查询,各个条件之间为与的关系。在查询的结果中,鼠标单击一行记录时,可以查看此学生的备注和照片。

当查询学号为101101的学生时,展示该学生的各种信息。

4.2.3 学生信息管理窗体

页面设计:

功能展示:

通过输入学生学号后单机“查询”按钮可以在窗口中的各个控件中显示当前学生的具体信息。单击“更新”按钮可以对学生信息进行添加和修改。单击“删除”按钮可以删除相应的学生记录。当删除一条学生记录时,触发器XS_DELETE会自动到CJB中删除此学生的成绩记录,并到XSZP表中删除此学生的照片记录,以保证数据的参照性完整。

先查询到学号为101101的学生信息,然后载入图片,点击更新后数据库的信息就随之更新了。

4.2.4 学生成绩录入窗体

页面设计:

功能展示: 用户选择课程名和专业后,单击“查询”按钮,下方的表格中会从视图XS_KC_CJ中列出与课程名和专业都对应的学生的学号、姓名、课程号和所选课程的成绩。如果未选该课程则成绩为空。当移动表格中的记录集时,学号、姓名和成绩文本框中将列出对应的数据。在成绩文本框中输入新成绩或修改旧成绩,单击“更新”按钮则调用存储过程CJ_Data向CJB表中插入一行新成绩或修改原来的成绩。单击“删除”按钮则调用储存过程CJ_Data删除CJB表对应的一行成绩记录。

查询到学号为101101、课程名为离散数学的学生成绩,在成绩文本框更改成绩,点击更新后数据库里的成绩就随之更改了,相应的总学分也会通过储存过程更改。

五、小结与体会

这次实习让我收获非常大。在oracle数据库方面,我又复习巩固了数据库创建、表格创建、视图、触发器、储存过程、完整性约束等方面知识。而且更加深刻认识到这些知识在实际应用中的作用。在前台方面,第一次使用VB 6.0写前台程序,虽然具体设计和代码大多都是参考书上的讲解,但是,我还是学会了很多东西,特别是前台设计的思路。

在实习过程中我也遇到过很多问题。比如,在刚开始使用VB 6.0时,我一直无法实现和数据库关联。我明明是按照书上的代码来操作的,但是还是实现不了相应的功能。后来我通过上网查资料、和同学探讨等方式,终于明白原来是机房的电脑配置中出了点问题。在修改过一个配置文件后,我终于能让前台和数据库链接上了,仅这一个问题就花费了我一上午的时间,但是能够顺利解决让我感到非常兴奋。我觉得实习的意义就在于在犯错和解决错误的过程中成长。这种通过上网查资料、和小伙伴讨论的过程,也是提升自我学习能力的途径。所以,虽然过程比较艰辛,但是还是蛮开心的。

最后,我感觉在我完成的这个学生成绩管理系统中还存在一些设计不够合理的地方,一些功能也不够优化。但是限于目前知识水平有限、时间比较紧,只能先这样提交。但是我会利用以后的课余时间继续完善这个学生成绩管理系统的。学习就是在不断地完善中进步的嘛。

《Oracle期末实习报告——VBOracle学生成绩管理系统.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
Oracle期末实习报告——VBOracle学生成绩管理系统
点击下载文档
相关专题 学生成绩管理实习报告 学生 实习报告 期末 学生成绩管理实习报告 学生 实习报告 期末
[实习报告]相关推荐
    [实习报告]热门文章
      下载全文