1、Oracle课程设计HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGYOracle数据库系统应用课程设计报告课设题目:学生成绩管理系统专业:软件工程班级:K1373-4姓名:汪敏成绩:完成日期:2016年6月20日2016年6月26日指导教师:徐洪胜一、 前言2二、 需求分析3三、 系统设计4四、 数据库设计6五、 程序运行17六、 实习总结18七、 附录34一、前言学生成绩管理是一个学校必不可少的部分,随着计算机和计算机知识的普及,学生成绩管理系统得到了更大的发展空间,通过对学生考试管理系统的开发,可以提高校务人员的工作效率。学生成绩管理是一个学校不可缺少的部分,一个
2、良好的学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。学生考试管理系统对学校加强学生考试管理有着极其重要的作用.由于各个大学都在持续扩招,学生的数量日益庞大,对于如何管理如此庞大的学生考试数据显得更为复杂,传统的手工成绩管理不仅工作量大,而且容易出现问题,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。已不能适应时代的发展。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,具有手工管理所无法比拟
3、的优点。例:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高管理者管理的效率,也是学校走向科学化、正规化管理,与世界接轨的重要条件。因此,开发设计这样一套学生成考试理软件成为很有必要的事情.二、需求分析1.功能需求1. 学生基本信息及所选科目成绩的录入或导入。2. 基本信息的查询(分系、班级;分科目)与修改。3. 对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);4. 对所开课程的成绩分析(求其平均成绩,最高分和最低分);5. 对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信
4、息)6. 不及格情况的统计、导出、打印2.系统需求该学生成绩管理系统采用java语言开发研制,JavaBean作为行为模型,servlet作为响应服务器,DIV+CSS+javascript设计网页,oracle作为数据存储。在完成用户需求同时,完成条件查询等功能。针对学生成绩及其数据特点,可以全面实现对学生成绩的插入、查询、修改、删除和输出等功能的计算机管理。它能使学生成绩数据的工作人员从繁重的工作中解脱出来,大大减轻了工作量,减少人为的工作失误,全面提高学生成绩管理的效率,从而使学校对于学生成绩的管理水平和技术水平跃上一个新的台阶。3.系统开发环境1.开发语言:java+jsp2.开发工具
5、:,Tomcat,dreamweaver3.数据库:Oracle10g4.文档编写工具:word5.服务器端运行环境:oracle10g,Tomcat,6.客户端运行环境:浏览器三、系统设计1.功能模块2.系统流程图四、数据库设计1.数据库结构设计学生表(XSB)字段名数据类型是否为空说明XHchar(6)Notnull学号(主键)XMchar(10)Notnull姓名XBchar(4)Notnull性别CSSJdate出生日期ZYchar(12)null专业ZXFNumber(2)null总学分BZVarchar2(200)NULL备注课程表(KSB)字段名数据类型是否为空说明KCHChar
6、(3)Notnull课程号(主键)KCMchar(23)Notnull课程名KKXQNumber(1)NULLl开课学期XSNumber(2)NULL学时XFNumber(1)Notnull学分成绩表(CJB)字段名数据类型是否为空说明XHchar(6)Notnull学号(联合主键)KCHchar(3)Notnull课程号(联合主键)CJNummber(2)NULL成绩2.实体联系图3.数据库源代码/*创建表XSCP*/DROPTABLEXSZPCREATETABLEXSZP(XHchar(6)NOTNULLPRIMARYKEY,ZPblobNULL);/*创建表KCB*/DROPTABLEK
7、CBCREATETABLEKCB(KCHchar(3)NOTNULLPRIMARYKEY,KCMchar(23)NOTNULL,KKXQnumber(1)NULL,XSnumber(2)NULL,XFnumber(1)NOTNULL);select*fromKCBInsertintoKCB(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
8、,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);Inser
9、tintoKCB(KCH,KCM,KKXQ,XS,XF)values(302,软件工程,7,51,3);/*创建表CJB*/DROPTABLECJBCREATETABLECJB(XHchar(6)NOTNULL,KCHchar(3)NOTNULL,CJnumber(2)NULL,PRIMARYKEY(XH,KCH);select*fromCJBInsertintoCJB(XH,KCH,CJ)values(101101,101,80);InsertintoCJB(XH,KCH,CJ)values(101101,102,78);InsertintoCJB(XH,KCH,CJ)values(1011
10、01,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
11、(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
12、,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(X
13、H,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,2
14、06,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,
15、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
16、,90);/*创建视图XS_KC_CJ*/CREATEVIEWXS_KC_CJAS,FROMXSBCROSSJOINKCB=创建触发器*/CREATEORREPLACETRIGGERxs_deleteAFTERDELETEONXSBFOREACHROWDECLAREPRAGMAAUTONOMOUS_TRANSACTION;/*声明自治事务*/BEGINDELETEFROMCJBWHEREXH=:;DELETEFROMXSZPWHEREXH=:;COMMIT;END;/*创建完整性约束*/ALTERTABLECJBADDCONSTRAINTFK_KCFOREIGNKEY(KCH)REFERENC
17、ESKCB(KCH)ONDELETECASCADE;/*创建存储过程CJ_Data*/CREATEORREPLACEPROCEDURECJ_Data(in_xhINchar,in_kchINchar,in_cjINnumber)ASin_countnumber;in_xfnumber:=0;in_cjb_cjnumber:=0;BEGINSELECTXFINTOin_xfFROMKCBWHEREKCH=in_kch;SELECTCOUNT(*)INTOin_countFROMCJBWHEREXH=in_xhANDKCH=in_kch;IFin_count0THENSELECTCJINTOin_
18、cjb_cjFROMCJBWHEREXH=in_xhANDKCH=in_kch;DELETEFROMCJBWHEREXH=in_xhANDKCH=in_kch;IFin_cjb_cj=60THENUPDATEXSBSETZXF=ZXF-in_xfWHEREXH=in_xh;ENDIF;ENDIF;IFin_cj-1THENINSERTINTOCJBVALUES(in_xh,in_kch,in_cj);IFin_cj=60THENUPDATEXSBSETZXF=ZXF+in_xfWHEREXH=in_xh;ENDIF;ENDIF;COMMIT;END;5、程序运行1、表的建立学生表课程表成绩表6
19、、实验总结虽然只是很小很简单的系统,但是不仅仅是对这阶段学习的知识的一个巩固,对项目的开发又多增了一层了解和领悟。经过这次课程设计的锻炼,我对数据库存储过程、触发器、PL/SQL编程掌握的更加牢固,对oracle10g的体系结构有了更深的理解,对sql语句进行了一次复习,对jsp学习也有很大提升,受益匪浅。在这次课程设计中,我也发现了许多不足之处:1. 前期的准备还不足,需求分析不完善,这就导致了在项目开发过程中还出现了功能反复修改的情况。2. 数据库设计不够完善,没多方面的考虑完善,导致在编码过程中还多次的修改数据库。3. 整体项目框架没规划好,项目的前期就应该把项目的整体框架和包类,列出和
20、规范分类,这样能使在其后编码阶段统一的模块化的编码,也能给整合项目的时候节省时间。4. 数据库文字编码和项目开发工具文字编码不一致,导致中期测试时输入数据库的中文数据变成乱码,经老师指导统一改为utf-8后解决5. 系统还存在许多问题,如界面不够友好,美化不好,不符合软件工程的要求等最后感谢老师对我的指导和建议,在实训期间我遇到了许多困难,老师总是很认真的为我解答,通过老师的细心指导使我们在数据库设计方面的知识得到了扩充,懂得了许多以前不知道的知识,使我学习到了许多专业知识及数据库设计方面的宝贵经验。通过本次课程设计,我从指导老师身上学到了很多东西,老师认真负责的工作态度,严谨的治学的精神和深
21、厚的理论水平都使我收益匪浅,并给我留下了深刻的印象。老师在整个设计过程中,帮助我解决了不少的难题,给予了我巨大的帮助和鼓励,并细心的为我介绍在数据库设计方面的知识,这使我得到不少的长进,这对于我以后的工作和学习都起着巨大的影响。附录:程序代码;.*;publicclassDBConn privateConnectionconn=null; publicDBConn() =(); ;.*;.*;publicclassScoreJdbc privateConnectionconn=null; privateResultSetrs=null; privatePreparedStatementpsmt
22、=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
23、); (xm); (student); returnstudentList; ;importimport.*;publicclassStudentJdbc privateConnectionconn=null; privatePreparedStatementpsmt=null; privateResultSetrs=null; publicStudentJdbc() /*获取数据库连接*/ publicConnectiongetConn() try if=null| DBConnmc=newDBConn(); repareStatement(sql1); etTime(); repareSt
24、atement(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
25、; /*删除一个学生*/ 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配置文件:!DOCTYPEstrutsPUBLIC -/ApacheSoftwareFoundation/EN actionname=addStudent / / / / / / /actionname=updateSaveS
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1