Oracle数据库课程设计报告学生成绩管理系统样本.docx
《Oracle数据库课程设计报告学生成绩管理系统样本.docx》由会员分享,可在线阅读,更多相关《Oracle数据库课程设计报告学生成绩管理系统样本.docx(37页珍藏版)》请在冰点文库上搜索。
Oracle数据库课程设计报告学生成绩管理系统样本
Oracle数据库课程设计
顾曰学生考试管理系统
班级11网工2班
姓名马路瑶
学号
指导老师杨超峰
一、前言2
二、需求分析3
三、系统设计5
四、数据库设计7
五、编程步骤19
六、测试25
七、课程设计总结33
八、参考资料34
九、附录34
—.前言
学生考试管理杲一个学校必不可少的部分,随着计算机和计算机知识的普及,学生考试管理系统得到了更大的发展空间,经过对学生考试管理系统的开发,能够提高校务人员的工作效率。
学生成绩管理是一个学校不可缺少的部分,一个良好的学生成绩管理系统应该能够为用户提供充分的信息和快捷的查询手段。
学生考试管理系统对学校加强学生考试管理有着极其重要的作用.由于各个大学都在持续扩招,学生的数量日益庞大,对于如何管理如此庞大的学生考试数据显得更为复杂,传统的手工成绩管理不但工作量大,而且容易出现冋题,如:
效率低、保密性差,另外时间—长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
已不能适应时代的发展。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能己为人们深刻认识,它已进入人类社合的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。
例:
检索迅速、查找方便.可靠性高.存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高管理者管理的效率,也是学校走向科学化、正规化管理,与世界接轨的重要条件。
因此,开发设计这样一套学生成考试理软件成为很有必要的事情.
2.需求分析
1•功能需求
1.学生基本信息及所选科目成绩的录入或导入。
2.基本信息的查询(分系、班级;分科目)与修改。
3.对每系或每班各科成绩逬行分析(即求单科平均成绩、及格率和优秀率);
4.对所开课程的成绩分析(求其平均成绩,最高分和最低分);
5.对学生考试成绩进行排名(单科按系别或班级进行排名,对每—个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息)
6.不及格情况的统计、导出.打印
2•系统需求
该学生成绩管理系统采用java语言开发研制,JavaBean作为行为模型,servlet作为响应服务器,DIV+CSS+javascript设计网页,oracle作为数据存储。
在完成用户需求同时,完成条件查询等功能。
针对学生成绩及其数据特点,能够全直实现对学生成绩的插入.查询.修改.删除和输出等功能的计算机管理。
它能使学生成绩数据的工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高学生成绩管理的效率,从而使学校对于学生成绩的管理水平和技术水平跃上一个新的台阶。
3•系统开发环境
1•开发语言:
java+jsp
3.数据库:
Oracle10g
4.文档编写工具:
word
5.服务器端运行环境:
oracle10g,Tomcat,jdk1.7
6.客户端运行环境:
浏览器
3.系统设计
1•功能模块
2•系统流程图
121/TGTtz?
缺牛II笛
♦
3•数据字典
(1)数据存储
数据表:
用户表
表组成:
用户名,密码
数据项:
用户名
数据类型:
varchar
数据长度:
50数据项:
密码
数据类型:
varchar
数据长度:
50
(2)数据流定义:
登陆
名称:
登陆
简述:
用户登陆系统
数据来源:
用户
数据去向:
用户表
数据组成:
用户名+密码
4.数据库设计
1•数据库结构设计
院系表(cs)
字段名
数据类型
是否为空
说明
Csclass
Varchar2(50)
Notnull
班级名(主键)
Cs.dept
Varchar2(50)
Notnull
系别
Csgrade
Varchar2(50)
Notnull
年级
成绩表(gd)
字段名
数据类型
是否为空
说明
Gd_stu_no
Varchar2(15)
Notnull
学号(联合主键、外键)
Gd_sub_subject
Varchar2(50)
Notnull
科目(联合主键.外键)
Gdgrade
Number(3)
Notnull
成绩
科目表(sub)
字段名
数据类型
是否为空
说明
Subsubject
Varchar2(50)
Notnull
科目名(主键)
Subteachername
Varchar2(10)
任课老师名
学生表(student)
字段名
数据类型
是否为空
说明
Stuno
Varchar2(15)
Notnull
学号(主键)
Stu_name
Varchar2(10)
Notnull
学生名
Stucsclass
Varchar2(50)
班级名(外键)
Stu.sex
Varchar(4)
Notnull
性别(约束)
Stubirthday
Varchar2(50)
出生日期
Stuphone
Varchar2(200)
联系电话
用户表(userj
字段名
数据类型
是否为空
说明
name
Varchar2(50)
Notnull
用户名(主键)
Passwd
Varchar2(50)
notnull
密码
2•实体联系图
3•数据库源代码selectuserenv(rlanguage,)fromdual;
shutdownimmediatestartupmount
ALTERSYSTEMENABLERESTRICTEDSESSION;
ALTERSYSTEMSETJOB_QUEUE_PROCESSES=0;
ALTERDATABASEOPEN;
alterdatabasecharactersetINTERNAL_USEUTF8;
shutdownimmediate
startup
createuserxzidentifiedbyxz
/
grantdbatoxz
/
connxz/xz
/
setserveroutputon
/
createtableuser_(namevarchar(50)primarykey.passwdvarchar(50)
notnull)
/
insertintouser_valuesCxzTxz');
/
Commit
/
createtablecs(
cs_classvarchar(50)primarykey,
cs_deptvarchar(50)notnull,
cs_gradevarchar(50)notnull
)
/
createtablestudent(
stu_novarchar(15)primarykey,
stu_namevarchar(10)notnull,
stu_sexvarchar(4)notnullcheck(stu_sex=*®orsUi_sex=‘女stu_birthdayvarchar(50),
stu_phonevarchar(50),
stu_cs_classvarchar(50),
constraintclass_fkforeignkey(stu_cs_class)referencescs(cs_class)
ondeletecascade
)
/
createtablesub(
sub_subjectvarchar(50)primarykey,
sub_teacher_namevarchar(lO)
)
/
createtablegd(
gd_stu_novarchar(15),
gd_sub_subjectvarchar(50),
gd_gradenumber(3)notnull,
primarykey(gd_stu_no,gd_sub_subject),
constraintfk_gd_stu_noforeignkey(gd_stu_no)referencesstudent(stu_no),
constraintfk_gd_sub_subjectforeignkey(gd_sub_subject)referencessub(sub_subject)
)
/
createorreplaceprocedurep_insert_stu(
p_stu_noinstudent.stu_no%type,
p_stu_nameinstudent.stu_name%type,
p_stu_sexinstudent.stu_sex%type,
p_stu_birthdayinstudent.stu_birthday%type,
p_stu_phoneinstudent.stu_phone%type,
p_stu_cs_classinstudent.stu_cs_class%type,s_state_valuesoutnumber
)as
begin
insertintostudent
(stu_no,stu_name,stu_sex,stu_birthday,stu_phone,stu_cs_class)
values
(p_stu_no,p_stu_name,p_stu_sex,p_stu_birthday,p_stu_phone,p_stu_cs
_class);
讦sql%rowcount=l
thens_state_values:
=O;
endif;
exception
whenothersthens_state_values:
=l;
commit;
end;
/
createorreplaceprocedurec_insert_stu(
c_stu_noinstudent.stu_no%type,
c_state_valuesoutnumber)
as
begin
selectcount(*)intoc_state_valuesfromstudent
wherestu_no=c_stu_no;
end;
/
createorreplaceprocedurec_insert_stu_fk(
c_cs_classincs.cs_class%type,c_state_values_fkoutnumber)as
begin
selectcount(*)intoc_state_values_fkfromcs
wherecs_class=c_cs_class;
end;
/
createorreplaceprocedurep_insert_cs(p_cs_deptincs.cs_dept%type,
P_cs_gradeincs.cs_grade%type,
p_cs_classincs.cs_class%type,s_state_valuesoutnumber)as
begin
insertintocs(cs_dept,cs_grade,cs_class)values(p_cs_dept,p_cs_grade,p_cs_class);讦sql%rowcount=l
thens_state_values:
=O;
endif;
exception
whenothersthens_state_values:
=l;
commit;
createorreplaceprocedurec_insert_cs(
c_cs_classincs.cs_class%type,c_state_valuesoutnumber)
as
begin
selectcount(*)intoc_state_valuesfromcs
wherecs_class=c_cs_class;
end;
/
createorreplaceprocedurep_insert_sub(
p_sub_subjectinsub.sub_subject%type,
p_sub_teacher_nameinsub.sub_teacher_name%type,s_state_valuesoutnumber)
as
begin
insertintosub(sub_subject,sub_teacher_name)values(p_sub_subject,p_sub_teacher_name);
ifsql%rowcount=l
thens_state_values:
=O;
endif;
exception
whenothersthens_state_values:
=l;
commit;
end;
/
createorreplaceprocedurec_insert_sub(c_sub_subjectinsub.sub_subject%type,c_state_valuesoutnumber)as
begin
selectcount(*)intoc_state_valuesfromsub
wheresub_subject=c_sub_subject;
end;
/
createorreplaceprocedurep_insert_gd(
P_gcl_stu_noingd.gd_stu_no%type,
P_gd_sub_subjectingd.gd_sub_subject%type,
P_gd_gradeingd.gd_grade%type,s_state_valuesoutnumber)as
begin
values(p_gd_stu_no,p_gd_sub_subject,p_gd_grade);ifsql%rowcount=l
thens_state_values:
=O;
endif;
exception
whenothersthens_state_values:
=l;
ifp_gd_grade=null
thens_state_values:
=2;
endif;
commit;
end;
/
createorreplaceprocedurec_insert_gd(
P_gd_stu_noingd.gd_stu_no%type,
P_gd_sub_subjectingd.gd_sub_subject%type,c_state_valuesoutnumber)as
begin
selectcount(*)intoc_state_valuesfrom(
selectgd_stu_nofromgd
wheregd_sub_subject=p_gd_sub_subject
)
wheregd_stu_no=p_gd_stu_no;
end;
/
createorreplaceprocedurec_insert_gd_fkl(
c_stu_noinstudent.stu_no%type,
c_state_values_fk1outnumber)
as
begin
selectcount(*)intoc_state_values_fk1fromstudent
wherestu_no=c_stu_no;
end;
/
createorreplaceprocedurec」nsert_gd_fk2(c_sub_subjectinsub.sub_subject%type,c_state_values_fk2outnumber)
as
begin
selectcount(*)intoc_state_values_fk2fromsub
wheresub_subject=c_sub_subject;
end;
p_stu_noinoutstudent.stu_no%type,p_stu_nameoutstudent.stu_name%type,p_stu_sexoutstudent.stu_sex%type,p_stu_birthdayoutstudent.stu_birthday%type,p_stu_phoneoutstudent.stu_phone%type,p_stu_cs_classoutstudent.stu_cs_class%type,p_cs_deptoutcs.cs_dept%type,
P_cs_gradeoutcs.cs_grade%type,c_state_valuesoutnumber)begin
c_state_values:
=O;
selectstu_no,
stu_name,stu_sex,stu_birthday,stu_phone,stu_cs_class,cs_dept,cs_grade
intop_stu_no,p_stu_name,p_stu_sex,p_stu_birthday,p_stu_phone,p_stu_cs_class,p_cs_dept,p_cs_grade
fromstudent,cs
wherestucsclass=csclassandstuno=pstuno;
exceptionwhenothersthenc_state_values:
=2;
createorreplaceprocedurep_select_stu_no_gd(p_stu_noinstudent.stu_no%type,cursor_gdoutsys_refcursor)
as
begin
opencursor_gdfor
selectgd_sub_subject,gd_grade
fromgd
wheregd_stu_no=p_stu_no;
end;
/
createorreplaceprocedurep_select_stu_name(
p_stu_nameinstudent.stu_name%type,
cursor_stuoutsys_refcursor,
c_state_valuesoutnumber)begin
c_state_values:
=O;opencursor_stuforselectstu_name,stu_sex,stu_birthday,stu_phone,stu_cs_class,cs_dept,cs_g
rade
fromstudent,cs
wherestuname=pstunameandstucsclass=csclass;
exception
whenothersthenc_state_values:
=2;
end;
/
createorreplaceprocedurep_pm_sum(
cursor_gd_sumoutsys_refcursor
)
as
begin
opencursor_gd_sumfor
selectdistinctsno,stu_name,sum
fromstudent,(selectgd_stu_noassno,sum(gd_grade)assum
fromgd
groupbygd_stu_no
)
wherestu_no=sno
orderbysumdesc;
createorreplaceprocedurep_pm_sub(
P_gd_sub_subjectingd.gd_sub_subject%type,
cursor_gd_suboutsys_refcursor
)begin
opencursor_gd_subfor
selectgd_stu_no,stu_name,gd_grade
fromgd,student
wheregd_sub_subject=p_gd_sub_subjectandstu_no=gd_stu_no
orderbygd_gradedesc;
end;
/
createorreplaceprocedurep_pm_class(
p_stu_cs_classinstudent.stu_cs_class%type,
cursor_gd_classoutsys_refcursor
)
as
begin
opencursor_gd_classfor
selectdistinctsno,stu_name,sum
fromstudent,(selectgd_stu_noassno,sum(gd_grade)assum
fromgd
groupbygd_stu_no
)
wherestuno=snoandstucsclass=pstucsclass
orderbysumdesc;
end;
createorreplaceprocedurep_fx(cursor_fxoutsys_refcursorbegin
opencursor_fxfor
selectgd_sub_subject,max(gd_grade)aszuigao,min(gd_grade)aszuidi,avg(gd_grade)aspingjun,SUM(CASEWHENgd_grade>=60
THEN1ELSE0END)/COUNT(*)*100ASjigelv,
SUM(CASEWHENgd_grade>=80THEN1ELSE0
END)/COUNT(*)*100ASyouxiulv
fromgd
groupbygd_sub_subject;
createorreplaceprocedurep_bujige(cursor_bujigeoutsys_refcursor)
as
begin
opencursor_bujigefor
selectgd_stu_no,gd_sub_subject,gd_grade
fromgd
wheregd_grade<60;
end;
/
createorreplaceprocedurep_update_stu(p_stu_noinstudent.stu_no%type,p_stu_name