《数据库课程设计学生考勤.doc》由会员分享,可在线阅读,更多相关《数据库课程设计学生考勤.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、. .XX文理学院数据库原理与应用报告专业班级:电信12101班 学生XX:学生学号:指导教师:X长青 设计时间:2015.1.4-2015.1.10 目录一、 需求分析1、 数据需求2、 数据流图3、 数据字典二、 概念结构设计三、 逻辑结构设计四、 物理结构设计五、 数据库的实施1、 创建数据库2、 数据表的维护与创建3、 数据库索引和视图4、 查询操作六、 数据库触发器的规划和设计七、 数据库的安全管理与维护八、结论学生考勤管理系统一、 需求分析为物电学院设计一个学生考勤管理系统,该系统主要实现对学生基本信息、教师基本信息、学生考勤等的管理,学生考勤管理系统功能需求包括:学生基本信息表,
2、教师基本信息表,班级表,专业表,课程表,班主任表,请假信息表,上课出勤记录表。1、 数据需求:(1) 学生基本信息表:学号,性别,班级,专业,院系(2) 教师基本信息表:,性别,编号(3) 班级表:班主任,名称,编号(4) 专业表:专业名称,编号(5) 课程表:课程号,课程名,课程性质(6) 班主任表:编号,性别(7) 请假信息表:编号,学号,原因,开始时间,结束时间,请假天数,申请请假时间,班主任审批状态,班主任审批时间(8) 上课出勤记录表:编号,上课时间,学号2、 数据流图:学生考勤学生信息课程教师请假信息表学号课程编号编号3、数据字典(1)数据项数据项:学号别名:学生编号含义说明:唯一
3、标识每个学生类型:字符型长度:9位取值X围:00000099取值含义:前四位表示学年,第5,6,7位表示专业和班级,第8,9,表示学号(2)数据结构数据结构:学生含义说明:学生考勤管理系统子系统的主体结构数据,定义了一个学生的有关信息组成:学号、性别、班级、专业、(3)数据流数据流名:请假信息表说明:学生请假信息及相关课程数据流来源:学生基本信息表,教师基本信息表、课程信息表数据流去向:请假学生、课程、组成:请假原因+学生学号+请假时间平均流量:500条/年高峰流量:50/天(4)数据存储数据存储:学生基本信息表说明:记录学生的基本信息写文件的处理:新生入学报到后从学院新生登记表中获取信息输入
4、流出数据流:为请假信息表提供学生基本信息组成:学号、性别、班级、专业、手机、数据量:平均每年2000条存取方式:随机存取二、概念结构设计E-R模型:学生学号XX性别专业班级院系专业班级班主任属于管理请假考勤课程授课教师假条课程号课程名课程性质XX性别编号编号学号原因编号专业名称编号名称班主任编号XX性别1属于111nnnnnnmm三、逻辑结构设计1、学生表student字段名数据类型可否为空键引用备注stu_nochar(10)否主键学生学号stu_namevarchar(30)否学生XXstu_sexchar(2)否性别stu_classchar(13)否外键所属班级stu_majorcha
5、r(30)否外键所属专业Stu_tellvarchar(20)否2、专业表major字段名数据类型可否为空键引用备注major_idnumber否主键专业编号major_namechar(20)否专业名称3、教师表teacher字段名数据类型可否为空键引用备注tea_nochar(10)否主键任课老师编号tea_namechar(20)否任课老师XXtea_sexchar(2)否性别tea_tellVarchar(20)否4、班主任表classteacher字段名数据类型可否为空键引用备注classtea_nochar(5)否主键任课老师编号classtea_namechar(20)否任课老师
6、XXclasstea_sexchar(2)否性别classtea_majornumber否外键所属专业classtea_tellVarchar(20)否5、学生上课出勤记录表kaoqin_record字段名数据类型可否为空键引用备注kaoqin_idchar(13)否主键上课出勤编号sk_timedate否上课时间stu_numberchar(10)否外键学生学号stu_statuschar(10)否学生上课考勤状态teacher_nochar(10)否外键教师编号course_nochar(13)否外键课程编号6、课程信息表course字段名数据类型可否为空键引用备注course_nocha
7、r(13)否主键课程编号course_namechar(20)否课程名称course_xzchar(4)否课程性质7、班级表classes字段名数据类型可否为空键引用备注class_nochar(10)否主键课程编号class_namechar(20)否课程名称classtea_nochar(5)否外键课程性质8、请假信息表qingjia字段名数据类型可否为空键引用备注idnumber否主键请假代号class_idchar(10)否外键班级代号stu_novarchar2 (20)否外键学生学号leave_reasonvarchar2 (200)否请假原因start_timedate否开始时间
8、end_timedate否结束时间day_numbernumber否请假天数qingjia_timedate否申请请假时间class_tea_idchar(5)否外键class_tea_sp_statuschar(10)否班主任审批状态class_tea_sp_timedate否班主任审批时间备注:status 表示审批状态:0为等待审批,1为同意请假,2为不同意请假。四、物理结构设计确定数据库的物理结构整个数据库包括八个表,每个表都有不同的联接关系,还有创建的视图也将表联系起来。 存取途径:索引存取方法 (1)按学生所在班级建立索引,可提高查询速度。 (2)查询常用到的字段(学生学号、学生X
9、X、课程编号、教师XX),可创建索引。五、数据库的实施1、 创建数据库CREATEDATABASE studentkaoqin ONPRIMARY(NAME= Nstudentkaoqin,FILENAME= NE:fsfsqlstudentkaoqin.mdf)(NAME= Nstudentkaoqin_log,FILENAME= NE:fsfsqlstudentkaoqin_log.ldf)2、 数据表的创建和维护(1) 表的创建- 专业表major createtable major(major_id intnotnull,major_name char(10)notnull,const
10、raint pk_major primarykey(major_id)- 教师表teachercreatetable teacher(tea_no char(10)notnull,tea_name char(20)notnull,tea_sex char(2)check(tea_sex=男or tea_sex=女),tea_tell varchar(20)notnull,constraint pk_teacher primarykey(tea_no)- 班级表classescreatetable classes(class_no char(10)primarykey,class_name ch
11、ar(20)notnull,)- 学生表studentcreatetable student(stu_no char(10)notnull,stu_name varchar(30)notnull,stu_sex char(2)check(stu_sex=男or stu_sex=女),stu_tell varchar(20)notnull,stu_class char(10)references classes(class_no),stu_major intreferences major(major_id),constraint pk_student primarykey(stu_no)- 课
12、程信息表coursecreatetable course(course_no char(13)primarykey,course_name char(20)notnull,course_xz char(4)notnull)- 学生上课出勤记录表kaoqin_recordcreatetable kaoqin_record(kaoqin_id char(13)primarykeynotnull,sk_time datetimenotnull,stu_number char(10)references student(stu_no),stu_status char(10)notnull,teache
13、r_no char(10)references teacher(tea_no),course_no char(13)references course(course_no)- 请假信息表qingjiacreatetable qingjia(id intprimarykey,class_id char(10)references classes(class_no),stu_no char(10)references student(stu_no),leave_reason varchar(200)notnull,start_time datetimenotnull,end_time dateti
14、menotnull,day_number intnotnull,qingjia_time datetimenotnull,class_tea_id char(5)references classteacher(classtea_no),class_tea_sp_status char(10),class_tea_sp_time datetime,)- 班主任表classteachercreatetable classteacher(classtea_no char(5)notnull,classtea_name char(20)notnull,classtea_sex char(2)check
15、(classtea_sex=男or classtea_sex=女 )classtea_tell varchar(20)notnull,classtea_major intreferences major(major_id),constraint pk_classteacher primarykey(classtea_no)(2)添加约束手机的限制altertablestudentaddconstraint ck_telphone1check(Telphone like0-90-90-90-90-90-90-90-90-90-90-9)altertableclassteacheraddconst
16、raint ck_telphone2check(Telphone like0-90-90-90-90-90-90-90-90-90-90-9)altertableteacheraddconstraint ck_telphone2check(Telphone like0-90-90-90-90-90-90-90-90-90-90-9)(3)添加内容-1、学生表student 添加内容insertintostudentvalues(201210101, 黄小明,男,2012101,1,)insertintostudentvalues(201210102, X乐,男,2012101,1,)inser
17、tintostudentvalues(201220101, X丹,男,2012201,2,)insertintostudentvalues(201220102, 程冬冬,男,2012201,2,)insertintostudentvalues(201230101, 胡雪露,男,2012301,3,)insertintostudentvalues(201230102, X亮,男,2012301,3,)-2、班主任表classteacher 添加内容insertintoclassteachervalues(01, X敏,女,1,)insertintoclassteachervalues(02, X
18、圆圆,女,1,)insertintoclassteachervalues(03, X峰,女,2,)insertintoclassteachervalues(04, 胡学达,女,2,)-3、课程表course 添加内容insertintocoursevalues(01, 单片机原理及应用,考试)insertintocoursevalues(02, 大学物理,考试)insertintocoursevalues(03, 数据库原理及应用,考察)insertintocoursevalues(04, 模拟电子技术,考试)insertintocoursevalues(05, 高等数学,考试)inserti
19、ntocoursevalues(06, 大学英语,考试)insertintocoursevalues(07, 大学体育,考察)-4、考勤记录表kaoqin_record 添加内容insertintokaoqin_recordvalues(01, 2015/1/8 8:00,201210101,缺课,01,01)insertintokaoqin_recordvalues(02, 2015/1/9 14:30,201220102,请假,06,02)insertintokaoqin_recordvalues(03, 2015/1/9 14:30,201230101,缺课,04,05)insertin
20、tokaoqin_recordvalues(04, 2015/1/10 9:00,201230102,缺课,05,03)insertintokaoqin_recordvalues(05, 2015/1/10 14:30,201210102,请假,05,03)insertintokaoqin_recordvalues(06, 2015/1/11 7:00,201220101,缺课,02,06)-5、专业表major 添加内容insertintomajorvalues(1, 电子信息)insertintomajorvalues(2, 光电技术)insertintomajorvalues(3, 物理
21、)-6、请假表qingjia 添加内容insertintoqingjiavalues(1,2012201,201220102,生病, 2015/1/8 0:00, 2015/1/10 0:00,3,2015/1/7 0:00,01,1, 2015/1/8 0:00,)insertintoqingjiavalues(2,2012101,201210102,考驾照, 2015/1/10 0:00, 2015/1/11 0:00,1,2015/1/9 0:00,02,1, 2015/1/9 0:00,)insertintoqingjiavalues(3,2012201,201220101,兼职, 2
22、015/1/11 7:00, 2015/1/11 18:00,1,2015/1/10 0:00,04,2, 2015/1/10 0:00,)-7、班级表classes 添加内容insertintoclassesvalues(2012101, 电信)insertintoclassesvalues(2012201, 光电)insertintoclassesvalues(2012301, 物理)-8、教师表teacher 添加内容insertintoteachervalues(01, X大磊,男,)insertintoteachervalues(02, 赵霞,男,)insertintoteacher
23、values(03, X天,男,)insertintoteachervalues(04, X雪艳,女,)insertintoteachervalues(05, X涛,女,)insertintoteachervalues(06, 陈龙,男,)3、 数据库索引和视图(1) 创建索引-为表student 和teacher 中的Telphone 字段创建一个唯一索引PK_telphonecreateuniqueindex unq_ stu_tell 1 ONstudent(stu_tell)createuniqueindex unq_ tea_tell 2 ONteacher(tea_tell)-为表
24、course中的course_no字段创建升序的聚集索引createclusteredindexclu_ course_no on student(course_no)(2) 创建视图学生考勤视图:CREATEVIEW dbo.考勤ASSELECT dbo.student.stu_name AS 学生XX,dbo.kaoqin_record.stu_status AS 考勤状态, dbo.course.course_name AS 课程名, dbo.kaoqin_record.sk_time AS 上课时间, dbo.teacher.tea_name AS 教师XX, dbo.teacher.
25、tea_tel AS 教师FROM student,kaoqin_record, course,teacher 请假视图:CREATEVIEW dbo.请假ASSELECT dbo.classes.class_name AS 班级, dbo.student.stu_name AS 学生, dbo.qingjia.leave_reason AS 请假原因, dbo.qingjia.day_number AS 请假天数, dbo.classteacher.classtea_name AS 班主任, dbo.qingjia.class_tea_sp_status AS 审批状态FROM dbo.cl
26、asses, dbo.classteacher , dbo.student , dbo.qingjia4、查询操作(1)基本查询-1查询student表中所有学生的全部信息SELECT*from student(2) 条件查询-1、查询电信班,男学生select*from studentwhere stu_sex=男and stu_class=2012101(3) 排序查询- 查询考试的课程并按降序排列SELECT course_no,course_name,course_xz FROM courseWHERE course_xz=考试ORDERBY course_no DESC(4) 筛选和
27、分组查询-查询请假天数小于2天的学生学号SELECT stu_no,day_number FROM qingjiaGROUPBY stu_no,day_numberHAVING day_number2(5) 联结查询-查询学生专业SELECTDISTINCT student.*,major.*FROM student,majorWHERE student.stu_major=major.major_id(6) 嵌套查询-查询电信专业的学生SELECT stu_name FROM studentWHERE stu_major =1六、数据库触发器的规划和设计-为数据表qingjia创建一个触发器
28、qingjia_t1,实现在更新操作中禁止修改请假天数CREATETRIGGER qinjia_t1 on qingjiaforupdateasifupdate(day_number)beginprint请假天数不允许修改!ROLLBACKTRANSACTIONEND七、数据库的安全管理与维护-创建stu_admin 登录账号,密码为123,默认数据库为student_kaoqincreatelogin stu_adminwith password=123, default_database=student_kaoqin-在student_kaoqin数据库中为登录账号stu_admin 创建
29、用户账号,并取名为U_1createuser U_1 forlogin stu_admin-将kaoqin 的查询权限授予用户U_1grantselecton kaoqin_recordto U_1八、 结论两个星期的时间非常快就过去了,这两个星期不敢说自己有多大的进步,获得了多少知识,但起码是了解了项目开发的部分过程。虽说上过数据库上过管理信息系统等相关的课程,但是没有亲身经历过相关的设计工作细节。这次实习证实提供了一个很好的机会。 通过这次课程设计发现这其中需要的很多知识我们没有接触过,去图书馆查资料的时候发现我们前边所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道。同时也发现有很多已经学过的东西我们没有理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要我们不断的大量的实践,通过不断的自学,不断地发现问题,思考问题,进而解决问题。在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。总之,这次课程设计使我收获很多、学会很多、比以往更有耐心很多。感谢学校及老师给我们这次课程设计的机会,最真挚的感谢我们的X长青老师 ,在设计过程中,老师精心的辅导和不厌其烦地的态度才使得我们以顺利的完成这次设计,他那无私的奉献的精神照耀着我们对学习的热爱,同时也增加我们对知识的追求和欲望度。. .word.
限制150内