




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库课程设计报告学生信息管理系统一、 设计时间2013年12月22日12月27日二、 设计地点四川大学江安校区实验楼三、 设计目的1、巩固学习Oracle基础知识方面的基本算法,进一步熟悉基本概念。2、熟练在Oralce中的操作,了解基本的流程。3、培养查阅资料,独立思考问题的能力。四、 设计小组成员五、 指导老师六、 设计课题经过小组组员的讨论,决定选取:学生信息管理系统理由:1、综合度高,有利于大家熟练掌握和运用Oracle中的存储过程、函数、触发器、索引等功能的编写。2、整个系统简洁明了,是我们常接触的数据库,适于现在阶段的我们。3、代码编写涉及面广,利用提高综合应用能力,加强Oracle理论知识的掌握, 全面学习Oracle。七、 基本思路及关键问题的解决方法1基本思路:新生开学首先进行注册报到,办理登记手续,根据学生被录专业到所在 的系进行注册;注册完毕后根据选报的专业进行分班;学期期末学生参加期末考试;考试结束由管理员将学生考试成绩以及其他相关信息录入学生档案。2学生信息管理系统大体可以分成三部分:一是学生的基本信息,里面应该包含学生的各方面的基本信息;再者便是课程管理模块,在该模块中应该包含有对学生成绩信息的查询和处理课程等相关信息的模块;二是管理员登陆。此系统功能安排合理,操作使用方便。三是功能扩充部分,方便日后对系统的升级和更新使用。如图所示:管理员登录学生登录基本信息查询模块基本信息添加模块基本信息删除模块成绩添加与删除登陆密码修改信息查询模块(含成绩)课程信息查询登陆密码修改功能扩充部分学生信息管理系统 学生信息管理系统层次结构图3学生信息管理系统的功能(1)信息管理员 可以修改、删除、添加学生信息;(2)班级信息管理可以添加、修改、删除班级信息;(3)学籍信息管理可以添加、查询、修改、删除学籍;(4)课程信息管理可以查看各班的课程信息;(5)成绩信息管理可以用一个或几个条件查询、添加、删除,修改成绩;4.ER图sexmajordeptclassnameNum_Pnum学生管理管理员成绩课程Manager_passwordclasscreditteachersubjectstudent(num,name,sex,class,dept,major,num_password)grade(num,subject,point)course(class,subject,teacher,credit)depart(dept,major,class)manager(manager_id,manager_password)八、 数据库各对象及作用a) Tablespace and datafile(表空间和数据文件) 数据库、表空间和数据文件紧密关联,但是它们还是有重要的区别:u一个Oracle由一个或多个逻辑存储单位组成,这些单位叫做表空间,表空间负责保存数据库所有的数据。uOracle数据库的每个表空间由一个或多个叫做数据文件的文件组成,数据文件是Oracle所运行的操作系统上的文件。u一个数据库的数据存储在构成数据库中表空间的数据文件上。例如,一个最简单的数据库可能只有一个表空间和一个数据文件。另一个数据库可能拥有三个表空间,每个有两个数据文件(整体上就是六个数据文件)。create tablespace test1 datafile H:oracletest1.dbf;size 20mextent management local autoallocate;b) Table(表) 用于存放数据l STUDENT Name Null? Type - - - NUM NOT NULL NUMBER(10) NAME NOT NULL VARCHAR2(20) SEX CHAR(2) CLASS NOT NULL NUMBER(38) DEPT VARCHAR2(20) MAJOR VARCHAR2(20) NUM_PASSWORD VARCHAR2(20)l GRADEName Null? Type- - -NUM NUMBER(10)SUBJECT VARCHAR2(20)POINT NUMBER(38)CLASS NUMBER(38)l COURSEName Null? Type- - -CLASS NOT NULL NUMBER(38)SUBJECT VARCHAR2(20)TEACHER VARCHAR2(20)CREDIT NUMBER(38)l DEPARTName Null? Type - - - DEPT VARCHAR2(20) MAJOR VARCHAR2(20) CLASS NOT NULL NUMBER(38)l MANAGER Name Null? Type - - - MANAGER_ID NOT NULL CHAR(10) MANAGER_PASSWORD VARCHAR2(20)c) Constraints(约束)约束作用:用来保持数据的完整性,防止无效数据进入到数据库中。oracle数据库中提供的5种约束,都是限定某个列或者列的组合的。1、主键约束(PRIMARY KEY):在一个表中能唯一的标识一行。主键可以限定在多个列上。2、唯一键约束(UNIQUE key):在一个表中能唯一的标识一行,唯一键也可以限定在多个列上。主键和唯一键的区别:a、一个表中最多只能有一个主键。可以多个唯一键。b、主键所限定的列不能为null,唯一键所限定的列可以为null.3、外键约束(FOREIGN key):引用表:有外键约束的列所在的表。被引用表:外键所引用的列。被引用的列只能是主键或者唯一键。4、非空约束(NOT null):表示该列上的数据不能有null值。5、检查性约束(check):表示该列上的数据必须满足某一个条件表达式。d) Index(索引)建立索引的目的是加快对表中记录的查找或排序,为表设置索引要付出代价的:一是增加了数据库的存储空间;二是在插入和修改数据时要花费较多的时间(因为索引也要随着而动)。e) View(视图)视图是从一个或几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。 视图使用的时候跟表一样。主要作用是不让所有的人都能看到整张表。比如有个员工信息表,里面有联系方式,薪资等,可能只希望HR能看到薪资,其他人只能看到联系方式,那么就可以使用视图来实现。合理地使用视图能够带来许多好处:1、单源表视图 视图的数据可以只取自一个基本表的部分行、列,这样的视图行列与基本表行列对应。这样定义的视图一般可以进行查询和更改数据操作。2、多源表视图 视图的数据可以来自多个表中,这样定义的视图一般只用于查询,不用于修改数据。3、在已有视图上定义的新视图 可以在视图上再建立视图,这时作为数据源的视图必须是已经建立好的。4、带表达式的视图 在定义基本表时,为减少数据库中的冗余数据,表中只存放基本数据,由基本数据经过各种计算派生出的数据一般是不存储的。但由于视图中的数据并不实际存储,所以定义视图时可以根据需要设置一些派生属性列,在这些派生属性列中保存经过计算的值。这些派生属性由于在基本表中并不实际存在,因此,也称它们为虚拟列。包含虚拟列的视图也称为带表达式的视图。5、含分组统计信息的视图 含分组统计信息的视图是指定义视图的查询语句中含有GROUP BY子句,这样的视图只能用于查询,不能用于修改数据。f) Sequence(序列)序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。九、 调试过程中出现的问题及相应解决方法 在调试过程中,主要出现的问题在于存储过程、游标、函数以及触发器的建立时出现的编译性错误。通过资料的查询问题得以解决。十、 课程设计心得体会通过两周的设计和开发,我们终于完成了学生信息管理系统,在此过程中,我们学会了很多有用的东西,综合能力提高许多。在编程的过程中,回顾了以前所学的知识,通过这个课程设计,把学到的知识充分应用了,检验了自我,并且通过和别人一起合作,学到了新的知识,特别是团队精神。因为一个人所学的知识不可能面面俱到的,只有通过合作,发挥自己的优点,体现团队精神,才能使任务完成的更加出色,通过这次设计,我们感觉到了团队合作在软件开发过程中的重要性,一个人是没有办法完成一个号的项目的,通过这次设计,亲身体验了系统开发的全过程,在实践中了解系统设计开发的步骤、流程以及思路,增长了系统开发方面的见识,我们深刻认识到以前所学的基础课程的重要性,也使我们掌握了很多新的知识,特别是课堂上无法学到的东西,体会到了理论和实践相结合的重要性。由于设计时间较短,且受知识和技术水平的限制,所以该系统还会有很多不尽人意的地方,比如功能不全,出错处理不够等多方面问题。系统开发是一个不断完善的过程,只有在实际的使用过程中才能不断的发现问题,从而再加以改进升级。而在系统设计过程中,难免会出现一些预测不到的异常,这些异常可能在系统测试阶段检测不出,只有用户在使用过程中才能发现。总的来说,尽管这次作业还存在很多问题,但是通过这次设计,我们学到了许多书本上学不到的知识,增强了自己的动手能力和自信心,为我们以后的工作积累了宝贵的财富,而且让我们明白了团队合作的重要性。十一、 源程序(每句语言要详细解释)1. 库的创建/Tablespace test1创建,大小20mcreate tablespace test1 datafile H:oracletest1.dbf;size 20mextent management local autoallocate; /建立数据库用户,数据库名(tingxins/tingxins)默认表空间为users,临时 表空间为tempcreate user tingxins identified by tingxinsdefault tablespace userstemporary tablespace tempquota 20m on test1;grant dba to tingxins;/授予tingxins用户dba权限2. 表创建Student表:create table Student(num number(10) not null,name varchar2(20) not null,sex char(2),class int not null,dept varchar2(20),major varchar2(20),num_password varchar(20),primary key (num); 插入数据如下:SQL insert into Student(num,name,sex,class,dept,major,num_password) values(110610101,周昂,m,1106101,信息科学与工程学院,网络工程,8888888);SQL insert into Student(num,name,sex,class,dept,major,num_password) 2 values(110610102,小东,m,1106101,信息科学与工程学院,网络工程,888888);已创建 1 行。SQL insert into Student(num,name,sex,class,dept,major,num_password) 2 values(110610103,杨浩,m,1106101,信息科学与工程学院,网络工程,888888);已创建 1 行。SQL insert into Student(num,name,sex,class,dept,major,num_password) 2 values(110610201,小斌,m,1106102,信息科学与工程学院,网络工程,888888);已创建 1 行。SQL insert into Student(num,name,sex,class,dept,major,num_password) 2 values(110610202,李生,m,1106102,信息科学与工程学院,网络工程,888888);已创建 1 行。SQL insert into Student(num,name,sex,class,dept,major,num_password) 2 values(110410101,阿乐,f,1104101,商学院,会计专业,888888);已创建 1 行。SQL insert into Student(num,name,sex,class,dept,major,num_password) 2 values(110410102,王飞,m,1104101,商学院,会计专业,888888);已创建 1 行。Grade表:create table grade(num number(10),subject varchar(20),point int,class int);插入数据如下:insert into grade(num,subject,point,credit) values(110410101,微观经济学,90,3);Course表:create table course(class int not null,subject varchar(20),teacher varchar(20),credit int);插入数据如下:insert into course(class,subject,teacher,credit) values(1106101,操作系统,陈伟春,3);Depart表:create table depart(dept varchar(20),major varchar(20),class int not null);插入数据如下:Insert into depart values(信息科学与工程学院,网络工程,1106101);Manager表:Create table(Manager_id char(10) not null,Manager_password varchar2(20),Primary key(manager_id);插入数据如下:Insert into manager values(designer,987654321);3. 索引学生成绩按学号大小建立索引:create index num_b on grade(num asc);如图所示:4. 查询a) 简单查询:查询单科成绩90分以上的学生的学号b) 连接查询查询低于任意课程成绩低于70分以下的学生的基本信息c) 聚合查询查询每个学生的平均成绩:查询每个班的平均成绩:d) 嵌套查询查询与杨浩在同一个系学习的学生:Select num,name,deptFrom studentWhere dept in(Select deptFrom student Where name=杨浩);找出每个学生超过110610103平均成绩的课程号以及其他信息:select g.num,g.subjectfrom grade gwhere g.point(select avg(t.point)from grade twhere t.num=110610103); 5. 存储过程1添加学生信息:create or replace procedure insert_student(num_student in number,name_student in varchar2,sex_student in char,class_student in int,dept_student in varchar2,major_student in varchar2,password_student in varchar2)isbegininsert into studentvalues(num_student,name_student,sex_student,class_student,dept_student,major_student,password_student);commit;end insert_student; /如:begininsert_student(110410201,小灿,m,1104102,商学院,会计专业,888888);end;/2.添加学生成绩:create or replace procedure insert_grade(num_grade in number,subject_grade in varchar2,point_grade in int,class_grade in number)isbegininsert into gradevalues(num_grade,subject_grade,point_grade,class_grade);commit;end insert_grade;/Procedure created.如:begininsert_grade(110410201,微观经济学,90,1104102);end;/3.添加某班级课程信息以及授课老师:create or replace procedure insert_course( class_course in int, subject_course in varchar, teacher_course in varchar)is begin insert into coursevalues(class_course,subject_course,teacher_course);commit;end insert_course;/Procedure created.如:给1104101班添加 会计课,授课老师:杨海begin insert_course(1104102,会计,杨海); end; /4.输入某个学生的学号,输出该生的平均成绩和总分:create or replace procedure avg_grade_s(num_grade_s in number,avg_s in out int,sum_s in out int)isbeginselect avg(g.point),sum(g.point)into avg_s,sum_sfrom grade gwhere g.num=num_grade_s;exceptionwhen no_data_found thendbms_output.put_line(该学生不存在!);end avg_grade_s;/如:学号为110610201学生的平均成绩和总分set serveroutput ondeclareavg_s int;sum_s int; begin avg_grade_s(110610201,avg_s,sum_s); dbms_output.put_line(该生的平均成绩:|avg_s|总分:|sum_s); end; /该生的平均成绩:83总分:2486. 视图视图名:创建视图:1.查看信息科学与工程学院的专业和班级:create or replace view depart_view1 as select dept,major,class from depart where dept=信息科学与工程学院;2.查看1106101班的学生信息,包括学号,姓名,性别,直属院系以及专业:create or replace view student_view1 asselect num,name,sex,class,dept,majorfrom studentwhere class=1106101;3.查询1106102班的学生信息,包括学号,姓名,性别,直属院系以及专业:create or replace view student_view2 asselect num,name,sex,class,dept,majorfrom studentwhere class=1106102;4.查询1104101班的学生信息,包括学号,姓名,性别,直属院系以及专业:create or replace view student_view3 asselect num,name,sex,class,dept,majorfrom studentwhere class=1104101;5.查询某学生的课程成绩信息create or replace view grade_view1 asselect num,subject,pointfrom gradewhere num=110610101;补充:修改信息语句:Update or Set Where 7. 触发器1.创建一个tri_student的触发器,记录student表信息的添加、修改、删除的记录:create table student_log(operate_tag varchar2(10),operate_time date);/首先创建记录表create or replace trigger tri_studentbefore insert or update or deleteon studentdeclarevar_tag varchar2(10);beginif inserting thenvar_tag:=插入;elsif updating thenvar_tag:=修改;elsif deleting thenvar_tag:=删除;end if;insert into student_logvalues(var_tag,sysdate);end tri_student;/Trigger created.2.从学生表中删除一个学生信息,分别自动的在学生成绩表以及其他相关的表中删除该学生记录:create or replace trigger trg_deleteafter delete on studentfor each rowbegindelete from grade where num=:old.num;end;/Trigger created.SQL delete from student where name=孙美;1 row deleted.8. 函数1.输入学生的学号,输出学生的平均成绩create or replace function get_avg_grade(who_num number) return number is who_avg_grade number; begin select avg(point) into who_avg_grade from grade where num=who_num; return(round(who_avg_grade,2); exception when no_data_found then dbms_output.put_line(该学生不存在); return(0); end; /Function created.如:set serveroutput ondeclareavg_grade number;beginavg_grade:=get_avg_grade(110410201);dbms_output.put_line(该学生平均成绩为:|avg_grade);end;/该学生平均成绩为:84.33PL/SQL procedure successfully completed.2.输入班级班号,输出班级的平均成绩create function get_avg_class(who_class number) return number iswho_avg_class number;beginselect avg(point) into who_avg_class from grade where class=who_class;return(round(who_avg_class);exceptionwhen no_d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 英语小学五年级下册期末复习综合试卷测试题(附答案)
- 生物人教版八年级上册期中生物非选择综合题测试题
- (完整版)新初一分班数学质量测试试卷(比较难)及答案解析
- 人教六年级下册期末数学模拟试题A卷
- 2025年一级建造师建筑工程模拟试题和答案完整版
- 部门工作管理奖罚制度
- 2025年水利监理工程师案例真题及答案
- 2025年电工技师证考试题库附答案
- 2024年全省死因监测培训试题含答案
- 学车招生活动策划方案模板
- 生产主管转正工作总结
- 2025至2030中国高纯铝行业发展趋势与行业发展研究与产业战略规划分析评估报告
- 2025年期货从业资格之《期货法律法规》真题附答案详解【巩固】
- 幼儿园各项安全管理制度汇编
- 2025年“安全生产年”工作总结(2篇)
- GB/T 2481.1-2025固结磨具用磨料粒度组成的检测和标记第1部分:粗磨粒F4~F220
- 2025-2026秋学生国旗下演讲稿:第4周涵养文明习惯点亮成长底色-养成教育
- 配电电缆故障定位试卷与答案
- 四川日普精化有限公司年产3000吨脂肪酸酰胺与1000吨有机硅树脂涂剂配套设施改造项目环评报告
- 2025年教育督导员督导知识试卷及答案
- 职业技能竞赛-园林绿化工理知识试题库
评论
0/150
提交评论