Oracle课程设计.docx

上传人:b****1 文档编号:17643056 上传时间:2023-04-24 格式:DOCX 页数:23 大小:237.63KB
下载 相关 举报
Oracle课程设计.docx_第1页
第1页 / 共23页
Oracle课程设计.docx_第2页
第2页 / 共23页
Oracle课程设计.docx_第3页
第3页 / 共23页
Oracle课程设计.docx_第4页
第4页 / 共23页
Oracle课程设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

Oracle课程设计.docx

《Oracle课程设计.docx》由会员分享,可在线阅读,更多相关《Oracle课程设计.docx(23页珍藏版)》请在冰豆网上搜索。

Oracle课程设计.docx

Oracle课程设计

HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGY

Oracle数据库系统应用

课程设计报告

课设题目:

学生成绩管理系统

专业:

软件工程

班级:

K1373-4

姓名:

汪敏

成绩:

完成日期:

2016年6月20日-2016年6月26日

指导教师:

徐洪胜

一、前言…………………………………………………2

二、需求分析……………………………………………3

三、系统设计……………………………………………4

四、数据库设计…………………………………………6

五、程序运行……………………………………………17

六、实习总结……………………………………………18

七、附录…………………………………………………34

一、前言

学生成绩管理是一个学校必不可少的部分,随着计算机和计算机知识的普及,学生成绩管理系统得到了更大的发展空间,通过对学生考试管理系统的开发,可以提高校务人员的工作效率。

学生成绩管理是一个学校不可缺少的部分,一个良好的学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。

学生考试管理系统对学校加强学生考试管理有着极其重要的作用.由于各个大学都在持续扩招,学生的数量日益庞大,对于如何管理如此庞大的学生考试数据显得更为复杂,传统的手工成绩管理不仅工作量大,而且容易出现问题,如:

效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。

已不能适应时代的发展。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。

例:

检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高管理者管理的效率,也是学校走向科学化、正规化管理,与世界接轨的重要条件。

因此,开发设计这样一套学生成考试理软件成为很有必要的事情.

二、需求分析

1.功能需求

1.学生基本信息及所选科目成绩的录入或导入。

2.基本信息的查询(分系、班级;分科目)与修改。

3.对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);

4.对所开课程的成绩分析(求其平均成绩,最高分和最低分);

5.对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息)

6.不及格情况的统计、导出、打印

2.系统需求

该学生成绩管理系统采用java语言开发研制,JavaBean作为行为模型,servlet作为响应服务器,DIV+CSS+javascript设计网页,oracle作为数据存储。

在完成用户需求同时,完成条件查询等功能。

针对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、删除和输出等功能的计算机管理。

它能使学生成绩数据的工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高学生成绩管理的效率,从而使学校对于学生成绩的管理水平和技术水平跃上一个新的台阶。

3.系统开发环境

1.开发语言:

java+jsp

2.开发工具:

,Tomcat,,dreamweaver

3.数据库:

Oracle10g

4.文档编写工具:

word

5.服务器端运行环境:

oracle10g,Tomcat,

6.客户端运行环境:

浏览器

三、系统设计

1.功能模块

 

2.系统流程图

 

四、数据库设计

1.数据库结构设计

学生表(XSB)

字段名

数据类型

是否为空

说明

XH

char(6)

Notnull

学号(主键)

XM

char(10)

Notnull

姓名

XB

char(4)

Notnull

性别

CSSJ

date

出生日期

ZY

char(12)

null

专业

ZXF

Number

(2)

null

总学分

BZ

Varchar2(200)

NULL

备注

课程表(KSB)

字段名

数据类型

是否为空

说明

KCH

Char(3)

Notnull

课程号(主键)

KCM

char(23)

Notnull

课程名

KKXQ

Number

(1)

NULLl

开课学期

XS

Number

(2)

NULL

学时

XF

Number

(1)

Notnull

学分

成绩表(CJB)

字段名

数据类型

是否为空

说明

XH

char(6)

Notnull

学号(联合主键)

KCH

char(3)

Notnull

课程号(联合主键)

CJ

Nummber

(2)

NULL

成绩

2.实体联系图

3.数据库源代码

/*创建表XSCP*/

DROPTABLEXSZP

CREATETABLEXSZP

XHchar(6)NOTNULLPRIMARYKEY,

ZPblobNULL

);

/*创建表KCB*/

DROPTABLEKCB

CREATETABLEKCB

KCHchar(3)NOTNULLPRIMARYKEY,

KCMchar(23)NOTNULL,

KKXQnumber

(1)NULL,

XSnumber

(2)NULL,

XFnumber

(1)NOTNULL

);

select*fromKCB

InsertintoKCB(KCH,KCM,KKXQ,XS,XF)values('101','计算机基础',1,80,5);

InsertintoKCB(KCH,KCM,KKXQ,XS,XF)values('102','程序设计与语言',2,68,4);

InsertintoKCB(KCH,KCM,KKXQ,XS,XF)values('206','离散数学',4,68,4);

InsertintoKCB(KCH,KCM,KKXQ,XS,XF)values('208','数据结构',5,68,4);

InsertintoKCB(KCH,KCM,KKXQ,XS,XF)values('210','计算机原理',5,85,5);

InsertintoKCB(KCH,KCM,KKXQ,XS,XF)values('209','操作系统',6,68,4);

InsertintoKCB(KCH,KCM,KKXQ,XS,XF)values('212','数据库原理',7,68,4);

InsertintoKCB(KCH,KCM,KKXQ,XS,XF)values('301','计算机网络',7,51,3);

InsertintoKCB(KCH,KCM,KKXQ,XS,XF)values('302','软件工程',7,51,3);

/*创建表CJB*/

DROPTABLECJB

CREATETABLECJB

XHchar(6)NOTNULL,

KCHchar(3)NOTNULL,

CJnumber

(2)NULL,

PRIMARYKEY(XH,KCH)

);

select*fromCJB

InsertintoCJB(XH,KCH,CJ)values('101101','101',80);

InsertintoCJB(XH,KCH,CJ)values('101101','102',78);

InsertintoCJB(XH,KCH,CJ)values('101101','206',76);

InsertintoCJB(XH,KCH,CJ)values('101103','101',62);

InsertintoCJB(XH,KCH,CJ)values('101103','102',70);

InsertintoCJB(XH,KCH,CJ)values('101103','206',81);

InsertintoCJB(XH,KCH,CJ)values('101104','101',90);

InsertintoCJB(XH,KCH,CJ)values('101104','102',84);

InsertintoCJB(XH,KCH,CJ)values('101104','206',65);

InsertintoCJB(XH,KCH,CJ)values('101102','102',78);

InsertintoCJB(XH,KCH,CJ)values('101102','206',78);

InsertintoCJB(XH,KCH,CJ)values('101106','101',65);

InsertintoCJB(XH,KCH,CJ)values('101106','102',71);

InsertintoCJB(XH,KCH,CJ)values('101106','206',80);

InsertintoCJB(XH,KCH,CJ)values('101107','101',78);

InsertintoCJB(XH,KCH,CJ)values('101107','102',80);

InsertintoCJB(XH,KCH,CJ)values('101107','206',68);

InsertintoCJB(XH,KCH,CJ)values('101108','101',85);

InsertintoCJB(XH,KCH,CJ)values('101108','102',64);

InsertintoCJB(XH,KCH,CJ)values('101108','206',87);

InsertintoCJB(XH,KCH,CJ)values('101109','101',66);

InsertintoCJB(XH,KCH,CJ)values('101109','102',83);

InsertintoCJB(XH,KCH,CJ)values('101109','206',70);

InsertintoCJB(XH,KCH,CJ)values('101110','101',95);

InsertintoCJB(XH,KCH,CJ)values('101110','102',90);

InsertintoCJB(XH,KCH,CJ)values('101110','206',89);

InsertintoCJB(XH,KCH,CJ)values('101111','101',91);

InsertintoCJB(XH,KCH,CJ)values('101111','102',70);

InsertintoCJB(XH,KCH,CJ)values('101111','206',76);

InsertintoCJB(XH,KCH,CJ)values('101113','101',63);

InsertintoCJB(XH,KCH,CJ)values('101113','102',79);

InsertintoCJB(XH,KCH,CJ)values('101113','206',60);

InsertintoCJB(XH,KCH,CJ)values('101201','101',80);

InsertintoCJB(XH,KCH,CJ)values('101202','101',65);

InsertintoCJB(XH,KCH,CJ)values('101203','101',87);

InsertintoCJB(XH,KCH,CJ)values('101204','101',91);

InsertintoCJB(XH,KCH,CJ)values('101210','101',76);

InsertintoCJB(XH,KCH,CJ)values('101216','101',81);

InsertintoCJB(XH,KCH,CJ)values('101218','101',70);

InsertintoCJB(XH,KCH,CJ)values('101220','101',82);

InsertintoCJB(XH,KCH,CJ)values('101221','101',76);

InsertintoCJB(XH,KCH,CJ)values('101241','101',90);

/*创建视图XS_KC_CJ*/

CREATEVIEWXS_KC_CJ

AS

,,,,

FROMXSBCROSSJOINKCB

=创建触发器*/

CREATEORREPLACETRIGGERxs_delete

AFTERDELETEONXSBFOREACHROW

DECLARE

PRAGMAAUTONOMOUS_TRANSACTION;/*声明自治事务*/

BEGIN

DELETEFROMCJBWHEREXH=:

;

DELETEFROMXSZPWHEREXH=:

;

COMMIT;

END;

/*创建完整性约束*/

ALTERTABLECJB

ADDCONSTRAINTFK_KCFOREIGNKEY(KCH)

REFERENCESKCB(KCH)

ONDELETECASCADE;

/*创建存储过程CJ_Data*/

CREATEORREPLACEPROCEDURECJ_Data

(in_xhINchar,in_kchINchar,in_cjINnumber)

AS

in_countnumber;

in_xfnumber:

=0;

in_cjb_cjnumber:

=0;

BEGIN

SELECTXFINTOin_xfFROMKCBWHEREKCH=in_kch;

SELECTCOUNT(*)INTOin_countFROMCJBWHEREXH=in_xhANDKCH=in_kch;

IFin_count>0THEN

SELECTCJINTOin_cjb_cjFROMCJBWHEREXH=in_xhANDKCH=in_kch;

DELETEFROMCJBWHEREXH=in_xhANDKCH=in_kch;

IFin_cjb_cj>=60THEN

UPDATEXSBSETZXF=ZXF-in_xfWHEREXH=in_xh;

ENDIF;

ENDIF;

IFin_cj<>-1THEN

INSERTINTOCJBVALUES(in_xh,in_kch,in_cj);

IFin_cj>=60THEN

UPDATEXSBSETZXF=ZXF+in_xfWHEREXH=in_xh;

ENDIF;

ENDIF;

COMMIT;

END;

5、程序运行

1、表的建立

①学生表

②课程表

③成绩表

6、实验总结

虽然只是很小很简单的系统,但是不仅仅是对这阶段学习的知识的一个巩固,对项目的开发又多增了一层了解和领悟。

经过这次课程设计的锻炼,我对数据库存储过程、触发器、PL/SQL编程掌握的更加牢固,对oracle10g的体系结构有了更深的理解,对sql语句进行了一次复习,对jsp学习也有很大提升,受益匪浅。

在这次课程设计中,我也发现了许多不足之处:

1.前期的准备还不足,需求分析不完善,这就导致了在项目开发过程中还出现了功能反复修改的情况。

2.数据库设计不够完善,没多方面的考虑完善,导致在编码过程中还多次的修改数据库。

3.整体项目框架没规划好,项目的前期就应该把项目的整体框架和包类,列出和规范分类,这样能使在其后编码阶段统一的模块化的编码,也能给整合项目的时候节省时间。

4.数据库文字编码和项目开发工具文字编码不一致,导致中期测试时输入数据库的中文数据变成乱码,经老师指导统一改为utf-8后解决

5.系统还存在许多问题,如界面不够友好,美化不好,不符合软件工程的要求等

最后感谢老师对我的指导和建议,在实训期间我遇到了许多困难,老师总是很认真的为我解答,通过老师的细心指导使我们在数据库设计方面的知识得到了扩充,懂得了许多以前不知道的知识,使我学习到了许多专业知识及数据库设计方面的宝贵经验。

通过本次课程设计,我从指导老师身上学到了很多东西,老师认真负责的工作态度,严谨的治学的精神和深厚的理论水平都使我收益匪浅,并给我留下了深刻的印象。

老师在整个设计过程中,帮助我解决了不少的难题,给予了我巨大的帮助和鼓励,并细心的为我介绍在数据库设计方面的知识,这使我得到不少的长进,这对于我以后的工作和学习都起着巨大的影响。

附录:

程序代码

;

.*;

publicclassDBConn{

privateConnectionconn=null;

publicDBConn(){

=();;

.*;

.*;

publicclassScoreJdbc{

privateConnectionconn=null;

privateResultSetrs=null;

privatePreparedStatementpsmt=null;

publicScoreJdbc(){

}

publicConnectiongetConn(){

try{

if==null||{

DBConnmc=newDBConn();repareStatement(sql);

rs=();

/*读出所有课程号和课程名放入studentLis中*/

while()){

Coursecourse=newCourse();

("kch"));

("kcm"));

(course);repareStatement(sql);

rs=();

/*读出所有学生学号和姓名放入studentLis中*/

while()){

Studentstudent=newStudent();

("xh"));

("xm"));

(student);

}

returnstudentList;;

import

import

.*;

publicclassStudentJdbc{

privateConnectionconn=null;

privatePreparedStatementpsmt=null;

privateResultSetrs=null;

publicStudentJdbc(){

}

/**获取数据库连接*/

publicConnectiongetConn(){

try{

if==null||{

DBConnmc=newDBConn();repareStatement(sql1);etTime()));repareStatement(sql2);repareStatement(sql);

rs=();repareStatement(sql1);

rs=();

/**查询一个学生*/

while()){

("xh"));

("xm"));

("xb"));

("cssj"));

("zy"));

("zxf"));

("bz"));

}

psmt=().prepareStatement(sql2);

rs=();

while())

{

("zp"));

}

}catch(Exceptione){

();

}finally{

try{

();

}catch(SQLExceptione){

();

}

try{

();

}catch(SQLExceptione){

();

}

}

returnstudent;

}

/**删除一个学生*/

publicvoiddeleteStudent(Stringxh){

Stringsql="deletefromXSBwherexh="+xh;

try{

psmt=().prepareStatement(sql);

();repareStatement(sql1);

(1,());

(2,());

(3,());

(4,newTimestamp().getTime()));

(5,());

(6,());

(7,());

();repareStatement(sql2);

(1,());

(2,());

();//更新学生照片信息

}

catch(Exceptione){

();

}finally{

try{

();

}catch(SQLExceptione){

();

}

try{

();

}catch(SQLExceptione){

();

}

}

returnstudent;//返回给控制器

}

}

Struts2配置文件:

xmlversion=""encoding="utf-8"?

>

DOCTYPEstrutsPUBLIC

"-//ApacheSoftwareFoundation///EN"

--添加学生信息-->

/

/

/

--查询所有学生-->

/

--查询一个学生-->

/

--删除学生-->

/

--查询要更新的学生信息-->

/

--更新学生信息-->

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1