Oracle数据库课程设计报告学生成绩管理系统可编辑.docx
《Oracle数据库课程设计报告学生成绩管理系统可编辑.docx》由会员分享,可在线阅读,更多相关《Oracle数据库课程设计报告学生成绩管理系统可编辑.docx(25页珍藏版)》请在冰豆网上搜索。
Oracle数据库课程设计报告学生成绩管理系统可编辑
2014年Oracle数据库课程设计报告学生成绩管理系统(可编辑)
2014年Oracle数据库课程设计报告学生成绩管理系统
Oracle数据库课程设计题目学生考试管理系统班级11网工2班姓名马路瑶学号指导老师杨超峰
前言…………………………………………………2
需求分析……………………………………………3
系统设计……………………………………………5
数据库设计…………………………………………7
编程步骤……………………………………………19
测试…………………………………………………25
课程设计总结………………………………………33
参考资料……………………………………………34
附录…………………………………………………34
一、前言学生考试管理是一个学校必不可少的部分,随着计算机和计算机知识的普及,学生考试管理系统得到了更大的发展空间,通过对学生考试管理系统的开发,可以提高校务人员的工作效率。
学生成绩管理是一个学校不可缺少的部分,一个良好的学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。
学生考试管理系统对学校加强学生考试管理有着极其重要的作用.由于各个大学都在持续扩招,学生的数量日益庞大,对于如何管理如此庞大的学生考试数据显得更为复杂,传统的手工成绩管理不仅工作量大,而且容易出现问题,如:
效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
已不能适应时代的发展。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。
例:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高管理者管理的效率,也是学校走向科学化、正规化管理,与世界接轨的重要条件。
因此,开发设计这样一套学生成考试理软件成为很有必要的事情.
二、需求分析
1.功能需求
学生基本信息及所选科目成绩的录入或导入。
基本信息的查询分系、班级;分科目与修改。
对每系或每班各科成绩进行分析即求单科平均成绩、及格率和优秀率;
对所开课程的成绩分析求其平均成绩,最高分和最低分;
对学生考试成绩进行排名单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息
不及格情况的统计、导出、打印
2.系统需求该学生成绩管理系统采用java语言开发研制,JavaBean作为行为模型,servlet作为响应服务器,DIV+CSS+javascript设计网页,oracle作为数据存储。
在完成用户需求同时,完成条件查询等功能。
针对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、删除和输出等功能的计算机管理。
它能使学生成绩数据的工作人员从繁重的工作中解脱出来,大大减轻了
工作量,减少人为的工作失误,全面提高学生成绩管理的效率,从而使学校对于学
生成绩的管理水平和技术水平跃上一个新的台阶。
3.系统开发环境
1.开发语言:
java+jsp
2.开发工具:
IE8.0,Tomcat,jdk1.7,dreamweaver
3.数据库:
Oracle10g
4.文档编写工具:
word
5.服务器端运行环境:
oracle10g,Tomcat,jdk1.7
6.客户端运行环境:
浏览器
三、系统设计
1.功能模块
2.系统流程图
3.数据字典
1数据存储
数据表:
用户表
表组成:
用户名,密码
数据项:
用户名
数据类型:
varchar
数据长度:
50
数据项:
密码
数据类型:
varchar
数据长度:
50
2数据流定义:
登陆
名称:
登陆
简述:
用户登陆系统
数据来源:
用户
数据去向:
用户表
数据组成:
用户名+密码
四、数据库设计
1.数据库结构设计
院系表cs
字段名数据类型是否为空说明
Cs_classVarchar250Notnull班级名主键Cs_deptVarchar250Notnull系别Cs_gradeVarchar250Notnull年级成绩表gd
字段名数据类型是否为空说明
Gd_stu_noVarchar215Notnull学号联合主键、外键Gd_sub_subjectVarchar250Notnull科目联合主键、外键
Gd_gradeNumber3Notnull成绩科目表sub
字段名数据类型是否为空说明
Sub_subjectVarchar250Notnull科目名主键
Sub_teacher_nameVarchar210任课老师名
学生表student
字段名数据类型是否为空说明
Stu_noVarchar215Notnull学号主键
Stu_nameVarchar210Notnull学生名
Stu_cs_classVarchar250班级名外键
Stu_sexVarchar4Notnull性别约束
Stu_birthdayVarchar250出生日期
Stu_phoneVarchar2200
用户表user_
字段名数据类型是否为空说明
nameVarchar250Notnull用户名主键
PasswdVarchar250notnull密码
2.实体联系图
3.数据库源代码
selectuserenv'language'fromdual;shutdownimmediate
startupmount
ALTERSYSTEMENABLERESTRICTEDSESSION;ALTERSYSTEMSETJOB_QUEUE_PROCESSES0;ALTERSYSTEMSETAQ_TM_PROCESSES0;ALTERDATABASEOPEN;
alterdatabasecharactersetINTERNAL_USEUTF8;
shutdownimmediate
startup
createuserxz3identifiedbyxz/
grantdbatoxz
/
connxz3/xz
/
setserveroutputon
/
createtableuser_namevarchar50primarykey,passwdvarchar50not
null
/
insertintouser_values'xz','xz';/
Commit
/
createtablecs
cs_classvarchar50primarykey,cs_deptvarchar50notnull,cs_gradevarchar50notnull
/
createtablestudent
stu_novarchar15primarykey,stu_namevarchar10notnull,stu_sexvarchar4notnullcheckstu_sex'男'orstu_sex'女',stu_birthdayvarchar50,
stu_phonevarchar50,
stu_cs_classvarchar50,
constraintclass_fkforeignkeystu_cs_classreferencescscs_class
ondeletecascade
/
createtablesub
sub_subjectvarchar50primarykey,sub_teacher_namevarchar10
/
createtablegd
gd_stu_novarchar15,
gd_sub_subjectvarchar50,
gd_gradenumber3notnull,
primarykeygd_stu_no,gd_sub_subject,constraintfk_gd_stu_noforeignkeygd_stu_noreferences
studentstu_no,
constraintfk_gd_sub_subjectforeignkeygd_sub_subjectreferences
subsub_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
begininsertintostudent
stu_no,stu_name,stu_sex,stu_birthday,stu_phone,stu_cs_classvalues
p_stu_no,p_stu_name,p_stu_sex,p_stu_birthday,p_stu_phone,p_stu_cs_cla
ss;
ifsql%rowcount1
thens_state_values:
0;
endif;
exception
whenothersthens_state_values:
1;
commit;
end;
/
createorreplaceprocedurec_insert_stuc_stu_noinstudent.stu_no%type,c_state_valuesoutnumber
as
begin
selectcount*intoc_state_valuesfromstudentwherestu_noc_stu_no;
end;
/
createorreplaceprocedurec_insert_stu_fkc_cs_classincs.cs_class%type,
c_state_values_fkoutnumber
as
begin
selectcount*intoc_state_values_fkfromcswherecs_classc_cs_class;
end;
/
createorreplaceprocedurep_insert_csp_cs_deptincs.cs_dept%type,
p_cs_gradeincs.cs_grade%type,
p_cs_classincs.cs_class%type,
s_state_valuesoutnumber
as
begin
insertintocscs_dept,cs_grade,cs_classvaluesp_cs_dept,p_cs_grade,p_cs_class;ifsql%rowcount1
thens_state_values:
0;
endif;
exception
whenothersthens_state_values:
1;commit;
end;
/
createorreplaceprocedurec_insert_csc_cs_classincs.cs_class%type,c_state_valuesoutnumber
as
begin
selectcount*intoc_state_valuesfromcswherecs_classc_cs_class;
end;
/
createorreplaceprocedurep_insert_subp_sub_subjectinsub.sub_subject%type,p_sub_teacher_nameinsub.sub_teacher_name%type,s_state_valuesoutnumber
as
begin
insertintosubsub_subject,sub_teacher_namevaluesp_sub_subject,p_sub_teacher_name;ifsql%rowcount1
thens_state_values:
0;
endif;
exception
whenothersthens_state_values:
1;commit;
end;
/
createorreplaceprocedurec_insert_subc_sub_subjectinsub.sub_subject%type,c_state_valuesoutnumber
as
begin
selectcount*intoc_state_valuesfromsubwheresub_subjectc_sub_subject;
end;
/
createorreplaceprocedurep_insert_gdp_gd_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
insertintogdgd_stu_no,gd_sub_subject,gd_gradevaluesp_gd_stu_no,p_gd_sub_subject,p_gd_grade;ifsql%rowcount1
thens_state_values:
0;
endif;
exception
whenothersthens_state_values:
1;ifp_gd_gradenull
thens_state_values:
2;
endif;
commit;
end;
/
createorreplaceprocedurec_insert_gdp_gd_stu_noingd.gd_stu_no%type,p_gd_sub_subjectingd.gd_sub_subject%type,c_state_valuesoutnumber
as
begin
selectcount*intoc_state_valuesfromselectgd_stu_nofromgd
wheregd_sub_subjectp_gd_sub_subjectwheregd_stu_nop_gd_stu_no;
end;
/
createorreplaceprocedurec_insert_gd_fk1c_stu_noinstudent.stu_no%type,c_state_values_fk1outnumber
as
begin
selectcount*intoc_state_values_fk1fromstudent
wherestu_noc_stu_no;
end;
/
createorreplaceprocedurec_insert_gd_fk2c_sub_subjectinsub.sub_subject%type,c_state_values_fk2outnumber
as
begin
selectcount*intoc_state_values_fk2fromsubwheresub_subjectc_sub_subject;
end;
/
createorreplaceprocedurep_select_stu_no_infop_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
as
begin
c_state_values:
0;
selectstu_no,
stu_name,stu_sex,stu_birthday,stu_phone,stu_cs_class,cs_dept,cs_
gradeintop_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
wherestu_cs_classcs_classandstu_nop_stu_no;
exception
whenNO_DATA_FOUNDthenc_state_values:
1;
whenothersthenc_state_values:
2;
end;
/
createorreplaceprocedurep_select_stu_no_gdp_stu_noinstudent.stu_no%type,cursor_gdoutsys_refcursor
as
begin
opencursor_gdfor
selectgd_sub_subject,gd_grade
fromgd
wheregd_stu_nop_stu_no;
end;
/
createorreplaceprocedurep_select_stu_name
p_stu_nameinstudent.stu_name%type,cursor_stuoutsys_refcursor,
c_state_valuesoutnumber
as
begin
c_state_values:
0;
opencursor_stufor
selectstu_no,
stu_name,stu_sex,stu_birthday,stu_phone,stu_cs_class,cs_dept,cs_
grade
fromstudent,cs
wherestu_namep_stu_nameandstu_cs_classcs_class;
exception
whenothersthenc_state_values:
2;end;
/
createorreplaceprocedurep_pm_sumcursor_gd_sumoutsys_refcursoras
begin
opencursor_gd_sumfor
selectdistinctsno,stu_name,sumfromstudent,selectgd_stu_noassno,sumgd_gradeassum
fromgd
groupbygd_stu_no
wherestu_nosno
orderbysumdesc;
end;
/
createorreplaceprocedurep_pm_subp_gd_sub_subjectingd.gd_sub_subject%type,cursor_gd_suboutsys_refcursoras
begin
opencursor_gd_subfor
selectgd_stu_no,stu_name,gd_gradefromgd,student
wheregd_sub_subjectp_gd_sub_subjectandstu_nogd_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,sumgd_gradeassumfromgd
groupbygd_stu_no
wherestu_nosnoandstu_cs_classp_stu_cs_classorderbysumdesc;
end;
/
createorreplaceprocedurep_fx
cursor_fxoutsys_refcursor
as
begin
opencursor_fxfor
selectgd_sub_subject,gd_gradeaszuigao,mingd_gradeas
zuidi,avggd_gradeaspingjun,SUMCASEWHENgd_grade60THEN1ELSE0
END/COUNT**100ASjigelv,
SUMCASEWHENgd_grade80THEN1ELSE0END/COUNT**100ASyouxiulv
fromgd
groupbygd_sub_subject;
end;
/
createorreplaceprocedurep_