




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Oracle数据库课程设计学生考勤系统的Oracle实现1学生考勤管理系统背景分析随着高校校园信息化的逐步完善,有效地借助网络、数据库等技术提高工作和管理效率。如今针对师生的成绩查询系统、教务管理系统、招生就业系统、BBS、校园网站等系统在各大高校纷纷出现,对全校师生的学习、生活、管理、办公带来了便利。因此学生考勤管理系统为进一步加强高校学风建设,维护正常的教学秩序,给学生创造一个优良的学习环境,从而应运而生。目前高校学生上课考勤管理都是以任课老师上课点名,签到等等记录学生上课情况,对于时间比较长的请假,需要通过递交请假申请让班导师、院系领导都批准方能生效。这种模式在目前高校管理中暴露了不可避免的弊端,这主要体现在如下几个方面:1、学生请假不方便;2、学生之间有冒名顶替签到的情况3、学生请假对任课老师不透明; 4、学生对自己整个学期的上课出勤情况没有整体的统计信息;5、班导师对本班学生整个学期的上课出勤情况不易查看;6、院系领导、学校领导不容易把握学生上课的出勤情况。因此一个好的学生考勤管理系统在一定程度上可以解决这些弊端,本系统主要针对目前高校学生在线请假以及学生上课出勤管理当中所暴露出来的问题而设计的信息系统。本系统涉及到高校六大类用户:学生、任课老师、班导师、院系领导、学校领导、系统管理员。2学生考勤管理系统需求分析2.1 用户需求描述用户是系统的最终使用者,根据分析,本系统应当包括学生、班导师、任课老师、院系领导、学校领导、系统管理员六类用户,这六类用户对系统的需求简要概括如下:2.2.1学生用户需求描述学生对本系统的主要需求是:在线请假以及查看在校期间所有的上课出勤信息。在线请假需求:学生请假的全过程当中,学生可以随时查看请假的详细进展情况。查看出勤信息需求:学生可以查看在校期间所有学期上课出勤的详细信息,如:查看“数据库课程设计”这门课程在整个学期请假、旷课多少次等信息。其它需求:查看本人的基本信息,如本人的所属的院系、年级、专业、班级、学号、姓名、性别等,以及修改个人用户密码。2.2.2任课老师用户需求描述任课老师对系统的主要需求是:管理所教班级学生的上课出勤信息以及查看所教班级学生的上课出勤信息。管理学生上课出勤需求:随着时间的变化,自动列出还没有在网上公布的学生上课出勤信息,系统自动根据学生请假系统,决定学生上课出勤的最终结果。查看学生出勤信息需求:查看所教班级学生整个学期出勤情况。其它需求:本人基本信息以及修改个人用户密码。2.2.3班导师用户需求描述班导师对本系统的主要需求是:审批本班学生本学期的在线请假以及查看本班学生本学期所有课程的上课出勤信息。审批学生请假需求:本班学生本学期在线请假申请后,自动提示班导师有等待审批的请假信息,班导师针对请假申请信息进行学生请假审批。查看学生上课出勤信息需求:查看本班学生整个学期有关课程的出勤统计信息及详细信息。其它需求:查看本班学生的基本信息、修改个人用户密码等。2.2.4院系领导用户需求描述院系领导对系统的主要需求是:审批本院系学生超过三天的请假以及查看本院系学生上课出勤信息。审批请假需求:当学生请超过三天的假,经班导师审批同意后,系统自动提交给任何一个进入系统的院系领导审批请假。查看本院系学生出勤信息需求:输入查询条件后,系统根据查询条件列出本院系学生相关的上课出勤信息。其它需求:查看本院系有关基本信息以及修改个人用户密码等。2.2.5学校领导用户需求描述学校领导对系统的主要需求是:查看全校学生上课出勤信息。查看出勤信息需求:输入查询条件后,系统根据查询条件列出本校学生相关的上课出勤信息。其它需求:查看有关全校的基本信息以信修改个人用户密码等。2.2.6系统管理员用户需求描述系统管理员有系统的最高权限,负责系统所需所有数据的动态同步更新以及维护,根据系统针对各用户的设计,基本功能需求如下:1、管理学校各院系、年级、专业、班级的添加、删除、修改等。2、管理每个学期每个班级的课程安排及指定班导师和任课老师。3、管理系统所有用户。4、管理全校课表安排。5、管理系统的请假、考勤信息。2.3功能需求描述根据各类用户的需求描述,系统应当具备请假系统、考勤管理系统、后台管理系统这三大主要功能。请假系统功能需求:通过班导师以及院系领导批准请假信息。请假最长时间不能超过1个月,特殊情况除外。考勤管理功能需求:任课老师通过考勤管理系统,对学生上课出勤信息进行公开。请假系统要借助班导师才能完成,考勤管理系统要借助请假系统、班级课表安排才能完成,然而每学年课表都在变化,班导师安排也有在变化,学生也在变化,因此必须要求后台管理系统能根据系统需求,动态的、准确的更新系统数据。2.4系统功能划分根据系统用户的需求,将本系统按功能划分成三大功能模块:请假系统、考勤系统、后台管理模块,涉及到六大类用户:学生、任课教师、班导师、院系领导、学校领导、系统管理员。2.4.1 请假系统模块本模块的功能是在线请假的实现及管理,主要涉及三大类用户:学生、班导师及院系领导用户,学生通过此功能模块进行在线请假及查看请假记录信息;班导师在线审批学生请假及查看请假记录信息;院系领导在线审批学生长时间的请假及查看请假记录信息。2.4.2 考勤系统模块本模块的功能是学生考勤信息统计的实现、查看及管理,涉及六大类用户中的所有用户。学生在线查看自己所有学年的出勤信息;任课老师在线管理学生出勤信息;班导师、院系领导、学校领导查看不同的范围的学生出勤信息。2.4.3 后台管理管理本模块的功能实现整个系统数据的同步更新及维护,只涉及系统管理员用户。系统管理员动态的管理学生信息、课表安排、学年安排等信息,是整个系统实现的基础。3学生考勤系统的E-R模型n1n1nmn1n1m1nnn1教师班级学生学院领导学院专业课程假条开设考勤属于属于授课聘请班导师管理请假学号姓名性别班级专业院系编号名称编号专业名称所属学院编号姓名性别所属院系课程号课程名课程性质编号名称编号姓名性别所属院系职称编号姓名性别所属专业所属学院班导师编号学号原因4数据字典设计名字:管理员信息描述:每一位管理员的具体信息定义:管理员信息=编号+姓名+性别+职称+密码名字:学院领导信息描述:每一位学院领导的具体信息定义:学院领导信息=编号+姓名+性别+职称+所属学院名字:院系信息描述:每一个学院的具体信息定义:院系信息=编号+院系名称名字:专业信息描述:每一位管理员的具体信息定义:专业信息=编号+姓名+所属院系名字:课程信息描述:每一门课程的具体信息定义:课程信息=课程号+课程名+课程性质名字:教师信息描述:每一位教师的具体信息定义:教师信息=编号+姓名+性别+所属院系名字:班级信息描述:每一个班级的具体信息定义:班级信息=编号+班级名称+班导师名字:班导师信息描述:每一位班导师的具体信息定义:班导师信息=编号+姓名+性别+所属学院+所属专业名字:学生信息描述:每一位学生的具体信息定义:学生信息=学号+姓名+性别+专业+院系+班级名字:请假条信息描述:每一请假条的具体信息定义:请假条信息=请假代号+班级代号+学生学号+请假原因+开始时间+结束时间+请假天数+申请请假时间+班导师审批状态+班导师审批时间+院系领导审批状态+院系领导代号+院系领导审批时间5数据库表的逻辑结构设计(1)系统管理员表admin字段名数据类型可否为空键引用备注admin_nochar(5)否主键管理员编号admin_namechar(10)否管理员姓名admin_sexchar(2)否性别admin_titlechar(20)否职称admin_passwordvarchar2(20)否登入密码(2)学生表student字段名数据类型可否为空键引用备注stu_nochar(10)否主键学生学号stu_namevarchar(30)否学生姓名stu_sexchar(2)否性别stu_classchar(13)否外键所属班级stu_majorchar(30)否外键所属专业stu_facultychar(40)否外键所属学院(3)院系表faculty字段名数据类型可否为空键引用备注faculty_idnumber否主键院系编号faculty_namechar(20)否院系名称(4)专业表major字段名数据类型可否为空键引用备注major_idnumber否主键专业编号major_namechar(20)否专业名称major_facultynumber否外键所属院系(5)教师表teacher字段名数据类型可否为空键引用备注tea_nochar(10)否主键任课老师编号tea_namechar(20)否任课老师姓名tea_sexchar(2)否性别tea_facultynumber否外键所属学院(6)班导师表classteacher字段名数据类型可否为空键引用备注classtea_nochar(5)否主键任课老师编号classtea_namechar(20)否任课老师姓名classtea_sexchar(2)否性别classtea_majornumber否外键所属专业classtea_facultynumber否外键所属学院(7)院领导表collegeleader字段名数据类型可否为空键引用备注collegeleader_nochar(5)否主键学院领导编号collegeleader_namechar(20)否学院领导姓名collegeleader_sexchar(2)否性别collegeleader_facultynumber否外键所属学院titlechar(20)否职称(8)学校领导表schoolleader字段名数据类型可否为空键引用备注schoolleader_nochar(5)否主键学校领导编号schoolleader_namechar(20)否学校领导姓名schoolleader_sexchar(2)否性别deptchar(20)否所属部门titlechar(25)否职称(9)学生上课出勤记录表kaoqin_record字段名数据类型可否为空键引用备注kaoqin_idchar(13)否主键上课出勤编号sk_timedatetime否上课时间stu_numberchar(10)否外键学生学号stu_statuschar(10)否学生上课考勤状态teacher_nochar(10)否外键教师编号course_nochar(13)否外键课程编号(10)课程信息表course字段名数据类型可否为空键引用备注course_nochar(13)否主键课程编号course_namechar(20)否课程名称course_xzchar(4)否课程性质(11)班级表classes字段名数据类型可否为空键引用备注class_nochar(10)否主键课程编号class_namechar(20)否课程名称classtea_nochar(5)否外键课程性质(12)请假信息表qingjia字段名数据类型可否为空键引用备注idnumber否主键请假代号class_idchar(10)否外键班级代号stu_novarchar2 (20)否外键学生学号leave_reasonvarchar2 (200)否请假原因start_timedatetime否开始时间end_timedatetime否结束时间day_numbernumber否请假天数qingjia_timedatetime否申请请假时间class_tea_idchar(5)否外键class_tea_sp_statuschar(10)否班导师审批状态class_tea_sp_timedatetime否班导师审批时间coll_leader_sp_statuschar(10)否院系领导审批状态coll_leader_idchar(5)否外键院系领导代号coll_leader_sp_timedatetime否院系领导审批时间备注:status 表示审批状态:0为等待审批,1为同意请假,2为不同意请假。6数据库表空间和表设计6.1、设计表空间及用户创建一般的字典管理类表空间,目的是为了方便利用SQL字典跟踪磁盘的使用情况。使用如下命令创建表空间:connect system/myPassword;create user dyzidentified by duanyuzhao;grant create session,dba to dyz;create tablespace tabs datafile C:dyzoracletabstabsduanyuzhao.dbf size 100Malter USER dyz default tablespace tabs;6.2、创建表1、创建系统管理员表admincreate 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 tabs;2、学生表studentcreate 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 tabs;3、院系表facultycreate table faculty(faculty_id number not null,faculty_name char(10) not null,constraint pk_faculty primary key (faculty_id)tablespace tabs;4、专业表majorcreate 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)tablespace tabs;5、教师表teachercreate 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 tabs;6、班导师表classteachercreate 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 tabs;7、院领导表collegeleadercreate 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 tabs;8、学校领导表schoolleadercreate 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)tablespace tabs;9、学生上课出勤记录表kaoqin_recordcreate 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 tabs;10、课程信息表coursecreate table course(course_no char(13) primary key,course_name char(20) not null,course_xz char(4) not null)tablespace tabs;11、班级表classescreate 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 tabs;12、请假信息表qingjiacreate 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,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 tabs;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_status,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 alertMessageafter insert on kaoqin_record for each rowdeclare 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;4、创建索引CREATE INDEX index_KaoQin ON kaoqin_record (stu_number);CREATE INDEX index_QingJia ON qingjia (stu_no); 7对于课程设计要求的一些问题的回答1. 为了完成管理数据库对象的工作,DBA应该能够很好地回答诸如下面的一些问题:l 系统应该包括哪些数据?系统应该包含的数据如上面的12张表的数据,另外,还有相应的视图数据等等在内 l 应该怎样存储这些数据? 关于数据的存储请见下面的叙述.l 应该在系统中创建哪些表?所应该创建的表如附带建表脚本所示l 应该在这些表中创建哪些索引,以便加速对表中数据的检索? 在创建索引时要做到三个适当,即在适当的表上、适当的列上创建适当数量的索引. 一、 根据表的大小来创建索引。二、 根据列的特征来创建索引。三、 在一个表上创建合适数目的索引.根据以上几点,我觉得应该在 学生上课出勤记录表kaoqin_record以及请假信息表qingjia上创建一个索引。理由是他们的使用频率较之于其他表的使用频率来说还是算高的。创建的索引见上面的创建所以呢语句。l 是否应该创建创建视图?为什么要创建这些视图? 应该创建视图,使不同院系的领导只能查询到自己学院学生上课的考勤信息, 这样可以让不同学院的领导针对自己学院的学生的出勤情况来有效的采取措施。l 应该创建哪些过程、函数、程序包? 本数据库只是创建了存储过程getMessage(stu_no in varchar2, course_no in varchar2, total_times out number)。创建的理由就是查看出勤情况时的操作借助于这个存储过程可以节省很多时间以及服务器资源,减少网络流量。,用于统计学生查询某门课程的出勤情况l 应该在哪些表上创建触发器?这些触发器的类型是什么?应该创建触发器,尤其是当某学生某课程的缺勤次数超过一定次数时要给出提示信息,此触发器是create or replace trigger alertMessageafter insert on kaoqin_record for each rowdeclare current_times number;beginselect 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;针对表kaoqin_record的current_times(次数),当插入后判断该学生的缺勤次数是否已经超过学校规定次数了:若是超过,则给出提示信息,引起相关授课教师以及学生本人的注意。故我觉得在该表上创建一个触发器是很有必要的。是否应该创建同义词?根据Oracle数据库课程中学习的理论中有关同义词的使用范围来讲,创建同义词拥有如下好处:节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;同义词可以创建在不同一个数据库服务器上,通过网络实现连接。但是考虑到该数据库主要是为了供校园网用户使用,不要求特表高的权限设置以及数据库权限的授权与收权的问题,另外就是我的数据库对象也不是很多,而且仅有的那些对象也不复杂。故我觉得我的数据库没必要创建同义词2. 存储空间管理任务包括为数据分配空间、保持空间可以满足数据的不断增长。随着业务量的继续和扩大,数据库中的数据也会逐渐增加,重做事务日志也不断地增加。存储空间为了完成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水库设备更新改造工程节能评估报告
- 音乐分析考试试题及答案
- 选煤厂电工考试题及答案
- 水库扩建工程节能评估报告
- 低品位铁精粉提纯项目技术方案
- 智能叉车自动化控制方案
- 电子薄膜生产线项目建筑工程方案
- 智算中心能源管理与节能优化方案
- 离婚后子女探望权及费用支付补充合同
- 知识产权贯标认证辅导与知识产权评估合同
- T/CCS 071-2023井工煤矿智能化带式输送机运维管理规范
- 排水管道工程施工组织设计
- 合作建房框架协议书
- 高三毕业班会课件
- 客服岗位职责培训
- 高一下学期《学生宿舍卫生和内务》主题班会课件
- 露营基地管理制度调查
- 在第五章学习活动的基础上-针对案例《送别组诗教学实录》中教师运用教学策略的效果撰写600字评析文章
- 食品防护知识培训
- 格拉斯哥(GCS)昏迷评估量表(详xi操作)
- 2025年北京中考英语阅读考纲外高频词汇(复习必背)
评论
0/150
提交评论