Oracle数据库课程设计报告班级:浦计软1303姓名:***学号:P********** 学期:2014 上半学期1.数据项和数据结构(1)学生基本信息组成:学号、姓名、班级、性别、出生日期、所在年级、所在班级、联系电话(2)课程基本信息组成:课程编号、课程名称、授课教师、学分、学时、课程简介(3)学生成绩信息组成:考试编号、所在班级、学生学号、课程名称、考试分数(4)课程设置信息组成:年级、课程名称数据库结构2.系统功能(1)课程管理功能:完成课程信息的录入、修改、删除、查询等功能,基本信息包括:课程编号,课程名称,任课教师、学分、学时和课程内容简介等。
(2)成绩录入功能:主要功能用来对学生的成绩进行收集和修改。
具体包括学生成绩录入、修改、删除、查询、打印等功能,由于一些资料可以Word文档或Excel表格输入,故需要增加导入、导出数据功能。
成绩录入需要分班级、分年级以及考试时间。
修改要与成绩录入相对应。
查询条件设置应该齐全,可以班级查询,年级查询,也可以姓名查询,学号查询等等。
要实现打印功能。
(3)班级统计功能:主要用于对学生的成绩以班级为单位进行处理。
具体包括各班学生总成绩、平均成绩、统计班级某分数段内的学生人数及班级内排名。
各项统计仅对于某学期某次考试而言。
(4)用户信息管理功能:本系统包括三类使用用户:系统管理员,学生和教师。
管理员具有最高权限,但不能修改成绩。
教师只能录入和修改自己所教课程的成绩。
成绩一旦录入完成,教师也不可轻易修改,除非向管理员申请。
学生只有查询自己成绩的权限。
所有用户必须注册登录后方可使用本管理系统。
所有用户都可以修改自己登录的密码。
学生的信息包括:学号、姓名、性别、出生日期、班级、年级等。
教师的信息包括:编号、姓名、性别、职称等。
(5)系统维护功能:数据备份、数据恢复,帮助信息,用户注册、登陆及退出。
3.实现过程创建学生基本信息表create table Student_info(Student_ID Varchar2(15) primary key,Student_Name Varchar2(30) not null,Student_Sex char(4) check(Student_Sex in('男','女')),student_Birthday date not null,Class_No varchar2(20),Grade_No varchar2(20),Student_Tele Varchar2(15),Student_Address Varchar2(50));创建课程信息表create table Course_info(Course_ID varchar2(10) primary key,Course_Name varchar2(32) not null,Course_Hour number(2) not null,Course_Credit number(2) not null,Teacher_Name Varchar2(30),Course_Intro Varchar2(200),);创建年级课程设置表create table GCourse_Setting(Grade_No varchar2(20),Course_Name varchar2(32),Constraint PRI_GCourse primary key (Grade_No,Course_Name)constraint PR_Mark primary key (Exam_No,Student_ID,Course_Name,Class_No));创建学生成绩信息表create table Student_Mark(Exam_No varchar2(10) not null,Student_ID Varchar2(15) not null,Course_Name varchar2(32) not null,Course_Mark number(15,2) check(Course_Mark between 0 and 100),Class_No varchar2(20),constraint FK_StuID foreign key (Student_ID) references Student_info(Student_ID) );常见用户信息表Create table User_info(User_Name varchar2(10) primary key,User_Type varchar2(10) not null,Passward varchar2(8));创建视图Static(用于统计各班成绩)create view Staticasselect Exam_no,Class_No,Student_ID,sum(Course_Mark) as SumMark,avg(Course_Mark) as AvgMarkfrom Student_Markgroup by Student_ID,Class_No,Exam_No;为表Course_info建立触发器(当删除一项或几项课程信息的时候,GCourse_Setting中相应的课程设置将被删除)create or replace trigger trg_Course_infobeforedelete or update of Course_Nameon Course_infofor each rowbeginif deleting thendelete from Gcourse_Settingwhere Course_Name = :old.Course_Name;elsif updating thenupdate GCourse_Settingset Course_Name=:new.Course_Namewhere Course_Name =:old.Course_Name;end if;end trg_Course_info;为表GCourse_Setting建立触发器(当删除某年级的一项或几项课程信息的时候,成绩表中对应的学生成绩将被删除)create or replace trigger trg_GCourse_Settingbeforedelete or update of Course _Nameon GCourse_Settingfor each rowbeginif deleting thendelete from Student_Markwhere Course_Name = :old.Course_Name;elsif updating thenupdate Student_Markset Course_Name=:new.Course_Namewhere Course_Name=:old.Course_Name;end if;end trg_GCourse_Setting;为学生表创建触发器trg_Student_Studentcreate or replace trigger trg_Student_Userbeforedelete or inserton Student_infofor each rowbeginif deleting thendelete from Student_Markwhere Student_ID=:old.Student_ID;delete from User_infowhere User_Name=:old.Student_ID;elsif inserting theninsert into User_info values(:new.Student_ID,'学生',:new.Student_ID); end if;end trg_Student_User;为各表创建索引Create unique index index_1 on Course_info(Course_Name);Create unique index index_2 on User_info(User_Name);Create unique index index_3 on Student_info(Student_Tele);Create index index_4 on Student_Mark(Class_no,Student_ID)4.课程设计的体会与心得经过几天的奋战,这个课程设计终于渐近尾声,至此本系统已经具备了1.课程的录入、修改、删除查询功能;2.成绩的录入,查询,修改、删除功能;3.帮助信息、用户注册、登陆及退出功能4.以班级为单位的成绩统计功能未实现的功能有:1.数据备份、恢复2.成绩的导入及打印功能3.班级统计功能通过此次数据库的课程设计,真正体验了学与用的结合,增强了对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,对数据库设计理念及思想上有了更高的认识,从需求分析,到概念设计和逻辑设计,E-R图的表示,数据字典的创建,懂得了不少有关数据库开发过程中的知识,在学习过程中,我也能过上网查了不少资料,也看了一些别人设计的管理信息系统的设计报告,学以致用,独立完成了这份自己的报告;遗憾的是,由于能力所限,对数据库的整体设计不尽合理,导致最后在编码过程中出现了没有预计到的困难,加之时间的仓促,不可能对每一项功能及格部分之间的关系仔细推敲,故虽然几经努力,该管理系统还是没有最终完全实现,期望能在考试过后闲下来时好好补一补这方面的知识,完全实现这个倾注了心力的课程设计。