Oracle数据库课程设计——学生考勤系统的Oracle实现1
发布时间:2024-10-30
发布时间:2024-10-30
Oracle数据库课程设计报告
学生考勤系统
目录
1学生考勤管理系统背景分析 (3)
2学生考勤管理系统需求分析 (3)
2.1 用户需求描述 (3)
2.2.1学生用户需求描述 (3)
2.2.2任课老师用户需求描述 (4)
2.2.3班主任用户需求描述 (4)
2.2.4院系领导用户需求描述 (4)
2.2.5学校领导用户需求描述 (4)
2.2.6系统管理员用户需求描述 (4)
2.3功能需求描述 (5)
2.4系统功能划分 (5)
2.4.1 请假系统模块 (5)
2.4.2 考勤系统模块 (5)
2.4.3 后台管理管理 (5)
3学生考勤系统的E-R模型 (6)
4数据字典设计 (7)
5数据库表的逻辑结构设计 (8)
6数据库表空间和表设计 (10)
6.1、设计表空间 (10)
6.2、创建表 (11)
6.3、创建其它数据库对象 (14)
7心得体会 (15)
8参考文献 (15)
2
Oracle数据库课程设计
——学生考勤系统的Oracle实现
1学生考勤管理系统背景分析
随着高校校园信息化的逐步完善,有效地借助网络、数据库等技术提高工作和管理效率。如今针对师生的成绩查询系统、教务管理系统、招生就业系统、BBS、校园网站等系统在各大高校纷纷出现,对全校师生的学习、生活、管理、办公带来了便利。因此学生考勤管理系统能进一步加强高校学风建设,维护正常的教学秩序,给学生创造一个优良的学习环境。
目前高校学生上课考勤管理都是以任课老师上课点名,记录学生上课情况,对于时间比较长的请假,需要通过递交请假申请让班主任、院系领导都批准方能生效。这种模式在目前高校管理中暴露了不可避免的弊端:
1、学生请假不方便;
2、学生请假对任课老师不透明;
3、学生对自己整个学期的上课出勤情况没有整体的统计信息;
4、班主任对本班学生整个学期的上课出勤情况不易查看;
5、院系领导、学校领导不容易把握学生上课的出勤情况。
因此一个好的学生考勤管理系统在一定程度上可以解决这些弊端,本系统主要针对目前高校学生在线请假以及学生上课出勤管理而设计的信息系统。本系统涉及到高校六大类用户:学生、任课老师、班主任、院系领导、学校领导、系统管理员。
2学生考勤管理系统需求分析
2.1 用户需求描述
用户是系统的最终使用者,根据分析,本系统应当包括学生、班主任、任课老师、院系领导、学校领导、系统管理员六类用户,这六类用户对系统的需求简要概括如下:
2.2.1学生用户需求描述
学生对本系统的主要需求是:在线请假以及查看在校期间所有的上课出勤信息。
在线请假需求:学生请假的全过程当中,学生可以随时查看请假的详细进展情况。
查看出勤信息需求:学生可以查看在校期间所有学期上课出勤的详细信息,如:查看“Oracle数据库管理与应用”这门课程在整个学期请假、旷课多少次等信息。
其它需求:查看本人的基本信息,如本人的所属的院系、年级、专业、班级、学号、姓名、性别等,以及修改个人用户密码。
3
2.2.2任课老师用户需求描述
任课老师对系统的主要需求是:管理所教班级学生的上课出勤信息以及查看所教班级学生的上课出勤信息。
管理学生上课出勤需求:随着时间的变化,自动列出还没有在网上公布的学生上课出勤信息,系统自动根据学生请假系统,决定学生上课出勤的最终结果。
查看学生出勤信息需求:查看所教班级学生整个学期出勤情况。
其它需求:本人基本信息以及修改个人用户密码。
2.2.3班主任用户需求描述
班主任对本系统的主要需求是:审批本班学生本学期的在线请假以及查看本班学生本学期所有课程的上课出勤信息。
审批学生请假需求:本班学生本学期在线请假申请后,自动提示班主任有等待审批的请假信息,班主任针对请假申请信息进行学生请假审批。
查看学生上课出勤信息需求:查看本班学生整个学期有关课程的出勤统计信息及详细信息。
其它需求:查看本班学生的基本信息、修改个人用户密码等。
2.2.4院系领导用户需求描述
院系领导对系统的主要需求是:审批本院系学生超过三天的请假以及查看本院系学生上课出勤信息。
审批请假需求:当学生请超过三天的假,经班主任审批同意后,系统自动提交给任何一个进入系统的院系领导审批请假。
查看本院系学生出勤信息需求:输入查询条件后,系统根据查询条件列出本院系学生相关的上课出勤信息。
其它需求:查看本院系有关基本信息以及修改个人用户密码等。
2.2.5学校领导用户需求描述
学校领导对系统的主要需求是:查看全校学生上课出勤信息。
查看出勤信息需求:输入查询条件后,系统根据查询条件列出本校学生相关的上课出勤信息。
其它需求:查看有关全校的基本信息以信修改个人用户密码等。
2.2.6系统管理员用户需求描述
系统管理员有系统的最高权限,负责系统所需所有数据的动态同步更新以及维护,根据系统针对各用户的设计,基本功能需求如下:
1、管理学校各院系、年级、专业、班级的添加、删除、修改等。
4
2、管理每个学期每个班级的课程安排及指定班主任和任课老师。
3、管理系统所有用户。
4、管理全校课表安排。
5、管理系统的请假、考勤信息。
2.3功能需求描述
根据各类用户的需求描述,系统应当具备请假系统、考勤管理系统、后台管理系统这三大主要功能。
请假系统功能需求:通过班主任以及院系领导批准请假信息。请假最长时间不能超过1个月,特殊情况除外。
考勤管理功能需求:任课老师通过考勤管理系统,对学生上课出勤信息进行公开。请假系统要借助班主任才能完成,考勤管理系统要借助请假系统、班级课表安排才能完成,然而每学年课表都在变化,班主任安排也有在变化,学生也在变化,因此必须要求后台管理系统能根据系统需求,动态的、准确的更新系统数据。
2.4系统功能划分
根据系统用户的需求,将本系统按功能划分成三大功能模块:请假系统、考勤系统、后台管理模块,涉及到六大类用户:学生、任课教师、班主任、院系领导、学校领导、系统管理员。
2.4.1 请假系统模块
本模块的功能是在线请假的实现及管理,主要涉及三大类用户:学生、班主任及院系领导用户,学生通过此功能模块进行在线请假及查看请假记录信息;班主任在线审批学生请假及查看请假记录信息;院系领导在线审批学生长时间的请假及查看请假记录信息。
2.4.2 考勤系统模块
本模块的功能是学生考勤信息统计的实现、查看及管理,涉及六大类用户中的所有用户。学生在线查看自己所有学年的出勤信息;任课老师在线管理学生出勤信息;班主任、院系领导、学校领导查看不同的范围的学生出勤信息。
2.4.3 后台管理管理
本模块的功能实现整个系统数据的同步更新及维护,只涉及系统管理员用户。系统管理员动态的管理学生信息、课表安排、学年安排等信息,是整个系统实现的基础。
5
3学生考勤系统的E-R模型
6
4数据字典设计
7
5数据库表的逻辑结构设计
(1)系统管理员表admin
字段名数据类型可否为空键引用备注admin_no char(5) 否主键管理员编号admin_name char(10) 否管理员姓名admin_sex char(2) 否性别
admin_title char(20) 否职称
admin_password varchar2(20) 否登入密码
(2)学生表student
字段名数据类型可否为空键引用备注stu_no char(10) 否主键学生学号
stu_name varchar(30) 否学生姓名
stu_sex char(2) 否性别
stu_class char(13) 否外键所属班级
stu_major char(30) 否外键所属专业
stu_faculty char(40) 否外键所属学院
(3)院系表faculty
字段名数据类型可否为空键引用备注faculty_id number 否主键院系编号faculty_name char(20) 否院系名称
(4)专业表major
字段名数据类型可否为空键引用备注major_id number 否主键专业编号major_name char(20) 否专业名称major_faculty number 否外键所属院系
(5)教师表teacher
字段名数据类型可否为空键引用备注tea_no char(10) 否主键任课老师编号tea_name char(20) 否任课老师姓名tea_sex char(2) 否性别
tea_faculty number 否外键所属学院
8
(6)班主任表classteacher
字段名数据类型可否为空键引用备注classtea_no char(5) 否主键任课老师编号classtea_name char(20) 否任课老师姓名classtea_sex char(2) 否性别
classtea_major number 否外键所属专业classtea_faculty number 否外键所属学院(7)院领导表collegeleader
字段名数据类型可否为空键引用备注collegeleader_no char(5) 否主键学院领导编号collegeleader_name char(20) 否学院领导姓名collegeleader_sex char(2) 否性别collegeleader_faculty number 否外键所属学院
title char(20) 否职称
(8)学校领导表schoolleader
字段名数据类型可否为空键引用备注schoolleader_no char(5) 否主键学校领导编号schoolleader_name char(20) 否学校领导姓名schoolleader_sex char(2) 否性别
dept char(20) 否所属部门
title char(25) 否职称
(9)学生上课出勤记录表kaoqin_record
字段名数据类型可否为空键引用备注kaoqin_id char(13) 否主键上课出勤编号
sk_time datetime 否上课时间
stu_number char(10) 否外键学生学号
stu_status char(10) 否学生上课考勤状态teacher_no char(10) 否外键教师编号
course_no char(13) 否外键课程编号
(10)课程信息表course
字段名数据类型可否为空键引用备注course_no char(13) 否主键课程编号
course_name char(20) 否课程名称course_xz char(4) 否课程性质
9
(11)班级表classes
字段名数据类型可否为空键引用备注
class_no char(10) 否主键课程编号
class_name char(20) 否课程名称
classtea_no char(5) 否外键课程性质
(12)请假信息表qingjia
字段名数据类型可否为空键引用备注
id number 否主键请假代号
class_id char(10) 否外键班级代号
stu_no varchar2 (20) 否外键学生学号
leave_reason varchar2 (200) 否请假原因
start_time datetime 否开始时间
end_time datetime 否结束时间
day_number number 否请假天数
qingjia_time datetime 否申请请假时间
class_tea_id char(5) 否外键
class_tea_sp_status char(10) 否班主任审批状态class_tea_sp_time datetime 否班主任审批时间
char(10) 否院系领导审批状态coll_leader_sp_stat
us
coll_leader_id char(5) 否外键院系领导代号
coll_leader_sp_time datetime 否院系领导审批时间备注:status 表示审批状态:0为等待审批,1为同意请假,2为不同意请假。
6数据库表空间和表设计
6.1、设计表空间
创建一般的字典管理类表空间,目的是为了方便利用SQL字典跟踪磁盘的使用情况。使用如下命令创建表空间:
create tablespace linpeng_data
datafile ‘/u01/oracle/oradata/tab01.dbf’ size 100M
default storage(initial 512K next 128K minextents 2 maxextents 999 pctincrease 0)
online;
10
6.2、创建表
1、创建系统管理员表admin
create table admin
(
admin_no char(5) not null,
admin_name char(10) not null,
admin_sex char(2) check (admin_sex='男' or admin_sex='女'),
admin_title char(20) not null,
admin_password varchar(20) not null,
constraint pk_admin primary key (admin_no)
)
tablespace linpeng_data;
2、学生表student
create table student
(
stu_no char(10) not null,
stu_name varchar(30) not null,
stu_sex char(2) check (stu_sex='男' or stu_sex='女'),
stu_class char(5) foreign key references classes(class_no),
stu_major number foreign key references major(major_id),
stu_faculty number foreign key references faculty(faculty_id),
constraint pk_student primary key(stu_no)
)
tablespace linpeng_data;
3、院系表faculty
create table faculty
(
faculty_id number not null,
faculty_name char(10) not null,
constraint pk_faculty primary key (faculty_id)
)
tablespace linpeng_data;
4、专业表major
create table major
(
major_id number not null,
major_name char(10) not null,
major_faculty number foreign key references faculty(faculty_id), constraint pk_major primary key (major_id)
)
11
tablespace linpeng_data;
5、教师表teacher
create table teacher
(
tea_no char(10) not null,
tea_name char(20) not null,
tea_sex char(2) check (tea_sex='男' or tea_sex='女'),
tea_faculty number foreign key references faculty(faculty_id),
constraint pk_teacher primary key (tea_no)
)
tablespace linpeng_data;
6、班主任表classteacher
create table classteacher
(
classtea_no char(5) not null,
classtea_name char(20) not null,
classtea_sex char(2) check (classtea_sex='男' or classtea_sex='女'),
classtea_major number foreign key references major(major_id),
classtea_faculty number foreign key references faculty(faculty_id),
constraint pk_classteacher primary key (classtea_no)
)
tablespace linpeng_data;
7、院领导表collegeleader
create table collegeleader
(
collegeleader_no char(5) primary key,
collegeleader_name char(20) not null,
collegeleader_sex char(2) check(collegeleader_sex in('男','女')),
collegeleader_faculty number foreign key references faculty(faculty_id), title char(20) not null
)
tablespace linpeng_data;
8、学校领导表schoolleader
create table schoolleader
(
schoolleader_no char(5) primary key not null,
schoolleader_name char(20) not null,
schoolleader_sex char(2) check(schoolleader_sex in('男','女')),
dept char(20) not null,
title char(20) not null
12
)
tablespace linpeng_data;
9、学生上课出勤记录表kaoqin_record
create table kaoqin_record
(
kaoqin_id char(13) primary key not null,
sk_time datetime not null,
stu_number char(10) foreign key references student(stu_no),
stu_status char(10) not null,
teacher_no char(10) foreign key references teacher(tea_no),
course_no char(13) foreign key references course(course_no)
)
tablespace linpeng_data;
10、课程信息表course
create table course
(
course_no char(13) primary key,
course_name char(20) not null,
course_xz char(4) not null
)
tablespace linpeng_data;
11、班级表classes
create table classes
(
class_no char(10) primary key,
class_name char(20) not null,
classtea_no char(5) foreign key references classteacher(classtea_no) )
tablespace linpeng_data;
12、请假信息表qingjia
create table qingjia
(
id number primary key,
class_id char(10) foreign key references classes(class_no),
stu_no char(10) foreign key references student(stu_no),
leave_reason varchar2(200) not null,
start_time datetime not null,
end_time datetime not null,
day_number nubmer not null,
qingjia_time datetime not null,
13
class_tea_id char(5) foreign key references classteacher(classtea_no),
class_tea_sp_status char(10),
class_tea_sp_time datetime,
coll_leader_sp_status char(10),
coll_leader_id char(5) foreign key references collegeleader(collegeleader_no),
coll_leader_sp_time datetime
)
tablespace linpeng_data;
6.3、创建其它数据库对象
1、创建存储过程用于统计学生查询某门课程的出勤情况
create or replace procedure getMessage(stu_no in varchar2, course_no in varchar2, total_times out number)
as
absence_times number;
begin
select count(*) in to absence_times from kaoqin_record where stu_number=stu_no and course_no=course_no;
total_times=absence_times;
end;
2、创建视图,使不同院系的领导只能查询到自己学院学生上课的考勤信息,假设软学院的ID为5,以下代码为创建一个用于给软件学院领导查看本学院学生考勤信息的视图。
create view rjxy as
select
kaoqin_record.kaoqin_id,kaoqin_record.sk_time,kaoqin_record.stu_number,kaoqin_record.stu_sta tus,kaoqin_record.teacher_no,kaoqin_record.course_no from kaoqin_record,student where student.stu_no=kaoqin_record.stu_number and student.stu_faculty=5;
3、创建触发器,当某学生某课程的缺勤次数超过一定次数时给出提示信息
create or replace trigger alertMessage
after insert on kaoqin_record for each row
declare
current_times number;
begin
select count(*) into current_times from kaoqin_record where stu_number=:new.stu_number and course_no=:new.course_no;
if(current_times >= 3) then
dbms_output.put_line('学号为:' || :new.stu_number || '的学生该门课程被取消考试资格!'); end if;
end;
14
7心得体会
通过本次Oracle数据库课程设计,将本学期所学的Oracle知识及数据库基础方面的知识得到了一综合性的应用,使我基本掌握了在软件项目的开发过程中数据库设计的基本流程,从需求分析到数据库的逻辑结构设计,再到数据库的物理结构设计等。
为了提高系统的效率和可靠性,一些比较关键的功能都采用存储过程或函数封装在数据库端,在其它程序设计语言中直接调用。
最后,感谢刘老师在这次课程设计中给予我支持和帮助。
8参考文献
[1] 王永贵.《Oracle数据库管理与应用》.中国矿业大学出版社.2009
[2] 赵文涛,数据库系统原理,中国矿业大学出版社,2006
[3] 安葳鹏,软件工程,中国矿业大学出版社,2007
[4] 张晓东,JSP+Oracle数据库开发与实例,清华大学出版社2008
[5] 向隅编数据库基础及应用邮电大学出版社2008
15