Oracle-综训学生成绩管理系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件学院综合训练项目报告书课程名称Oracle数据库项目名称学生成绩管理系统专业班级组别成员任课教师刘腊梅2015年6月目录1.设计时间……………………………………………………………32.设计任务……………………………………………………………33.设计内容………………………………………………………………33.1系统设计……………………………………………………………33.1.1系统功能概述…………………………………………………………33.1.2系统功能模块设计……………………………………………………43.2数据库设计…………………………………………………………53.2.1数据库需求分析………………………………………………………53.2.2数据库逻辑结构设计…………………………………………………93.3数据库实现……………………………………………………………113.3.1创建用户……………………………………………………………113.3.2创建表和约束………………………………………………………113.3.3创建存储过程、函数及触发器………………………………………133.4测试与分析……………………………………………………………163.4.1测试…………………………………………………………………163.4.2分析…………………………………………………………………193.5代码……………………………………………………………………194.总结与展望……………………………………………………………305.参考文献……………………………………………………………311设计时间2015/6/1~2015/6/72设计任务信息管理系统—学生成绩管理系统掌握ORACLE数据库的特点,熟悉SQL命令和PL/SQL的编程特点,运用所学知识解决现实问题,完成学生成绩管理系统的后台数据库设计,提高系统性能。在该项目中,不考虑需求分析过程,要求建立以下关系:院系信息:院系编号、院系名称、院系主管、地址、院系人数;学生基本信息:院系编号、学号、姓名、性别、学生类型、入学日期、籍贯、身份证号、详细地址、出生日期、所学专业、民族、电话(家)、缴费总计、已修学分、备注;课程信息:课程号、课程名称、开设年级、学时数、学分;成绩单:学号、课程号、学期、成绩、备注。使用存储过程统计每个学生的‘已修学分’。使用触发器实现当登记学生成绩(60分以上)时自动统计学生的‘已修学分’。使用函数实现统计各课程的未及格人数,要求输入参数课程号后,返回各课程的人数NUM。并实现调用,查‘数据库系统设计’的未及格人数。将上实验中的存储过程与本实验中函数创建包。3设计内容3.1系统设计3.1.1系统功能概述系统的功能模块图如下:图3-1-1功能模块图3.1.2系统功能模块设计1.信息查询模块信息查询模块可以查询院系信息、学生信息、课程信息以及成绩单信息。2.信息输入、修改模块信息输入、修改模块以修改院系信息、学生信息、课程信息。3.信息统计模块用于统计学生已修学分、课程人数及课程未及格人数。系统业务流程图如下:学生成绩管理系统信息查询模块信息输入、修改模块信息统计模块院系信息学生信息课程信息院系信息学生信息课程信息成绩单信息统计学生已修学分统计课程人数统计课程未及格人数图3-1-2业务流程图3.2数据库设计3.2.1数据库需求分析系统E-R图如下:表3-2-1实体及其属性表实体名称属性名称院系信息院系编号、院系名称、院系主管、地址、院系人数学生信息院系编号、学号、姓名、性别、学生类型、入学日期、籍贯、身份证号、详细地址、出生日期、所学专业、民族、电话(家)、缴费总计、已修学分、备注课程信息课程号、课程名称、开设年级、学时数、学分选修学号、课程号、学期、成绩、备注图3-2-2院系实体属性图院系院系名称院系编号院系人数地址院系主管图3-2-3学生实体属性图图3-2-4课程实体属性图课程课程名称课程号学分学时数开设年级学生院系编号学号性别学生类型入学日期籍贯身份证号详细地址出生日期所学专业民族电话(家)缴费总计已修学分备注姓名图3-2-5E-R图数据流图如下:院系所属学生1n选修课程nn学号课程号学期成绩备注图3-2-60层数据流图图3-2-71层数据流图3.2.2数据库逻辑结构设计表3-2-8学生成绩管理系统数据库结构表名称表信息表述College院系信息表Student学生信息表Course课程信息表Score成绩单表3-2-9院系信息表college描述字段类型院系编号(主键)Cnovarchar2(10)院系名称Cnamevarchar2(30)院系主管Managervarchar2(10)地址Addressvarchar2(50)院系人数Populationnumber(10)表3-2-10学生信息表student描述字段类型学号(主键)Snovarchar2(20)院系编号(外键)Cnovarchar2(10)姓名Snamevarchar2(10)性别Sexvarchar2(2)学生类型Typevarchar2(10)入学日期in_dateDate籍贯Jiguanvarchar2(10)身份证号Idvarchar2(20)详细地址Addressvarchar2(50)出生日期BirthDate所学专业Majorvarchar2(10)民族Nationvarchar2(10)电话(家)Televarchar2(11)缴费总计Paymentnumber(10)已修学分Creditnumber(5)备注Remarkvarchar2(50)表3-2-11课程信息表course描述字段类型课程号(主键)Cnovarchar2(10)课程名称Cnamevarchar2(30)开设年级Gradevarchar2(5)学时数study_timenumber(4)学分Creditnumber(4)表3-2-12成绩单score描述字段类型课程号(联合主键、外键)Cnovarchar2(10)学号(联合主键、外键)Snovarchar2(10)学期Termnumber(2)成绩Scoresnumber(10)备注Remarkvarchar2(50)3.3数据库实现3.3.1创建用户创建admin用户并授权。createuseradminidentifiedbyadmin;SQLgrantcreateproceduretoadmin;授权成功。SQLgrantcreatetriggertoadmin;授权成功。3.3.2创建表和约束1.创建院系信息表。1createtablecollege(2cnovarchar2(10)primarykey,3cnamevarchar2(10),4managervarchar2(10),5addressvarchar2(50),6populationnumber(10)7*)SQL/表已创建。2.创建学生信息表1createtablestudent(2snovarchar2(20)primarykey,3cnovarchar2(10),4snamevarchar2(10),5sexvarchar2(2),6typevarchar2(10),7in_datedate,8jiguanvarchar2(10),9idvarchar2(20),10addressvarchar2(50),11birthdate,12majorvarchar2(10),13nationvarchar2(10),14televarchar2(11),15paymentnumber(10),16creditnumber(5),17remarkvarchar2(50),18foreignkey(cno)referencescollege(cno)19*)SQL/表已创建。3.创建课程信息表1createtablecourse(2cnovarchar2(10)primarykey,3cnamevarchar2(30),4gradevarchar2(5),5study_timenumber(4),6creditnumber(4)notnull7*)SQL/表已创建。4.创建成绩单表1createtablescore(2cnovarchar2(10),3snovarchar2(10),4termnumber(2),5scoresnumber(10),6remarkvarchar2(50),7primarykey(cno,sno),8foreignkey(cno)referencescourse(cno),9foreignkey(sno)referencesstudent(sno)10*)SQL/表已创建。3.3.3创建存储过程、函数及触发器1.创建存储过程Statistic_credit,用于统计每个学生的‘已修学分’。1createorreplaceprocedureStatistic_credit2is3cursorc14isselect*fromstudent;5stu_infostudent%rowtype;6begin7openc1;8fetchc1intostu_info;9whilec1%found10loop11dbms_output.put_line(stu_info.sno||''||stu_info.sname||''||stu_info.credit);12fetchc1intostu_info;13endloop;14closec1;15*end;SQL/过程已创建。2.创建触发器t1,实现当登记学生成绩(60分以上)时自动统计学生的‘已修学分’。1createorreplacetriggert12afterinsertorupdateofscoresonscore3foreachrow4begin5if:new.scores=60then6updatestudentsetstudent.credit=student.credit+(selectcreditfromcoursewherecourse.cno=:new.cno)7wherestudent.sno=:new.sno;8endif;9*end;SQL/触发器已创建3.创建函数statistc_num,使用函数实现统计各课程的未及格人数,要求输入参数课程号后,返回各课程的人数NUM。1createorreplacefunctionstatistc_num(cnoincourse.cno%type)2returnnumber3is4numnumber:=0;5begin6selectcount(*)intonumfromscore7wherescore.cno=cnoandscores60;8returnnum;9*end;SQL/函数已创建。4.创建存储过程db_num,调用statistc_num函数来查‘数据库系统设计’的未及格人数。1createorreplaceproceduredb_num2is3numnumber(4);4v_cnocourse.cno%type;5begin6selectcnointov_cnofromcourse7wherecname='数据库系统设计';8num:=statistic_num(v_cno);9dbms_output.put_line('未及格人数:'||num);10exception11whenno_data_foundthen12dbms_output.put_line('没有这门课程!');13*end;SQL/过程已创建。3.4测试与分析3.4.1测试现在向college表格中插入数据SQLinsertintocollege(cno,cname)values(&c,&n);输入c的值:1输入n的值:'软件学院'原值1:insertintocollege(cno,cname)values(&c,&n)新值1:insertintoco

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功