Oracle数据库课程设计题目学生考试管理系统班级11网工2班姓名马路瑶学号指导老师杨超峰目录一、前言…………………………………………………2二、需求分析……………………………………………3三、系统设计……………………………………………5四、数据库设计…………………………………………7五、编程步骤……………………………………………19六、测试…………………………………………………25七、课程设计总结………………………………………33八、参考资料……………………………………………34九、附录…………………………………………………34一、前言学生考试管理是一个学校必不可少的部分,随着计算机和计算机知识的普及,学生考试管理系统得到了更大的发展空间,通过对学生考试管理系统的开发,可以提高校务人员的工作效率。学生成绩管理是一个学校不可缺少的部分,一个良好的学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。学生考试管理系统对学校加强学生考试管理有着极其重要的作用.由于各个大学都在持续扩招,学生的数量日益庞大,对于如何管理如此庞大的学生考试数据显得更为复杂,传统的手工成绩管理不仅工作量大,而且容易出现问题,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。已不能适应时代的发展。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟的优点。例:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高管理者管理的效率,也是学校走向科学化、正规化管理,与世界接轨的重要条件。因此,开发设计这样一套学生成考试理软件成为很有必要的事情.二、需求分析1.功能需求1.学生基本信息及所选科目成绩的录入或导入。2.基本信息的查询(分系、班级;分科目)与修改。3.对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);4.对所开课程的成绩分析(求其平均成绩,最高分和最低分);5.对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息)6.不及格情况的统计、导出、打印2.系统需求该学生成绩管理系统采用java语言开发研制,JavaBean作为行为模型,servlet作为响应服务器,DIV+CSS+javascript设计网页,oracle作为数据存储。在完成用户需求同时,完成条件查询等功能。针对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、删除和输出等功能的计算机管理。它能使学生成绩数据的工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高学生成绩管理的效率,从而使学校对于学生成绩的管理水平和技术水平跃上一个新的台阶。3.系统开发环境1.开发语言:java+jsp2.开发工具:IE8.0,Tomcat,jdk1.7,dreamweaver3.数据库:Oracle10g4.文档编写工具:word5.服务器端运行环境:oracle10g,Tomcat,jdk1.76.客户端运行环境:浏览器三、系统设计1.功能模块2.系统流程图学生考试管理系统信息录入信息查询信息修改信息删除成绩统计分析班级信息录入科目信息录入学生信息录入班级内部排名按学号查询按姓名查询学生信息修改成绩信息修改学生信息删除成绩信息删除单科成绩排名单科成绩分析成绩信息录入不及格情况统计学生总成绩排名3.数据字典(1)数据存储数据表:用户表表组成:用户名,密码数据项:用户名数据类型:varchar数据长度:50开始登陆密码正确?是否进入系统修改密码控制面板退出系统?结束是否数据项:密码数据类型:varchar数据长度:50(2)数据流定义:登陆名称:登陆简述:用户登陆系统数据来源:用户数据去向:用户表数据组成:用户名+密码四、数据库设计1.数据库结构设计院系表(cs)字段名数据类型是否为空说明Cs_classVarchar2(50)Notnull班级名(主键)Cs_deptVarchar2(50)Notnull系别Cs_gradeVarchar2(50)Notnull年级成绩表(gd)字段名数据类型是否为空说明Gd_stu_noVarchar2(15)Notnull学号(联合主键、外键)Gd_sub_subjectVarchar2(50)Notnull科目(联合主键、外键)Gd_gradeNumber(3)Notnull成绩科目表(sub)字段名数据类型是否为空说明Sub_subjectVarchar2(50)Notnull科目名(主键)Sub_teacher_nameVarchar2(10)任课老师名学生表(student)字段名数据类型是否为空说明Stu_noVarchar2(15)Notnull学号(主键)Stu_nameVarchar2(10)Notnull学生名Stu_cs_classVarchar2(50)班级名(外键)Stu_sexVarchar(4)Notnull性别(约束)Stu_birthdayVarchar2(50)出生日期Stu_phoneVarchar2(200)联系电话用户表(user_)字段名数据类型是否为空说明nameVarchar2(50)Notnull用户名(主键)PasswdVarchar2(50)notnull密码2.实体联系图3.数据库源代码selectuserenv('language')fromdual;shutdownimmediatestartupmountALTERSYSTEMENABLERESTRICTEDSESSION;ALTERSYSTEMSETJOB_QUEUE_PROCESSES=0;ALTERSYSTEMSETAQ_TM_PROCESSES=0;ALTERDATABASEOPEN;alterdatabasecharactersetINTERNAL_USEUTF8;shutdownimmediate学生信息姓名出生日期性别学号联系电话所在班级成绩信息科目名学号成绩教师用户管理用户名密码班级信息班级名年级科目信息科目名任课老师系别管理管理管理startupcreateuserxz105151640043identifiedbyxz/grantdbatoxz/connxz105151640043/xz/setserveroutputon/createtableuser_(namevarchar(50)primarykey,passwdvarchar(50)notnull)/insertintouser_values('xz','xz');/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='男'orstu_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(10))/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)asbegininsertintostudent(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);ifsql%rowcount=1thens_state_values:=0;endif;exceptionwhenothersthens_state_values:=1;commit;end;/createorreplaceprocedurec_insert_stu(c_stu_noinstudent.stu_no%type,c_state_valuesoutnumber)asbeginselectcount(*)intoc_state_valuesfromstudentwherestu_no=c_stu_no;end;/createorreplaceprocedurec_insert_stu_fk(c_cs_classincs.cs_class%type,c_state_values_fkoutnumber)asbeginselectcount(*)intoc_state_values_fkfromcswherecs_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)asbegininsertintocs(cs_dept,cs_grade,cs_class)values(p_cs_dept,p_cs_grade,p_cs_class);ifsql%rowcount=1thens_state_values:=0;endif;exceptionwhenothersthens_state_values:=1;commit;end;/createorreplaceprocedurec_insert_cs(c_cs_classincs.cs_class%type,c_state_valuesoutnumber)asbeginselectcount(*)intoc_state_valuesfromcswherecs_class=c_cs_class;end;/createorreplaceprocedurep_insert_sub(p_sub_subjectinsu