数据库课程设计报告(毕业生管理系统) |
您所在的位置:网站首页 › 结构设计类毕业设计论文题目怎么写 › 数据库课程设计报告(毕业生管理系统) |
声明:本片课程设计只列举了数据库设计部分,系统实现部分省略了。如果单纯只做数据库课程设计还是有一定的参考价值的。 由于版权原因,这次源码不能提供给大家了。 报告比较简单,本博主写的比较快,所以难免会有些小问题,请谅解哦。
目录 1 相关技术介绍 2 需求分析 2.1 功能需求分析 2.2 数据字典设计 2.3 数据流图 3 概念结构设计 3.1 各模块E-R图 3.2 总体E-R图 4 逻辑结构设计 4.1 系统总体设计 4.2 数据库设计 4.2.1 数据库中的表 4.2.2 数据库表详细设计 4.2.3 安全性和完整性要求 5 数据库实施 5.1 创建数据库 5.2 建表并添加完整性约束 5.3 索引和视图设计 5.4 触发器设计 5.5 存储过程和函数 5.6 安全性设计 6 系统实现 7 参考文献
1 相关技术介绍 1.1 SSM SSM是Spring SpringMVC mybatis的合称。其中,Spring框架就像装配bean的大工厂,在配置文件中可以指定特定的参数去调用构造方法来实例化对象。因此,Spring框架能帮程序员直接New一个对象。SpringMVC中M:model(模型),接受用户请求,调用Model处理,选择合适的View给客户。V:View(视图),业务处理模型,接受Controller的调遣,处理业务,处理数据。C:controller(控制器),返回给客户看的结果。 1.2 TomcatTomcat是由Apache公司推出的一款免费开源Servlet容器,是配置JSP和JAVA系统必备的环境。Tomcat免费开放源代码,属于轻量级服务器。它在程序运行时占用系统资源少,可拓展,成本低,因而广受java爱好者的喜爱。 1.3 MySQLMySQL是关系型数据库管理系统,由瑞典的MySQL AB公司开发,目前属于Oracle旗下产品。它是目前最流行的关系型数据库管理系统之一。使用是SQL语言。SQL语言用于访问数据库,开发者使用 C和 C++编写SQL语言,因此可移植性较高。因为放源码软件,能大大降低成本,所以受大众欢迎。 1.4 LayuiLayui 出于2016年金秋,是一款带着浓烈情怀的国产前端UI框架,她追求极简,又不失丰盈的内在,说她是史上最轻量的结晶,似乎并不为过。一切都源自于她对原生态的执着,对前端社区的那些噪杂声音的过滤,以及她本身的精心雕琢。layui属于轻量级框架,简单美观。适用于开发后端模式,它在服务端页面上有非常好的效果。layui是提供给后端开发人员最好的ui框架,基于DOM驱动,只要不涉及到交互layui还是很不错的。 2 需求分析 2.1 功能需求分析 2.2.1 学生功能需求 (1):学生登录功能:学生账号是学校统一以学号为基础给学生注册的,因此本系统不支持用户自己注册。初始密码为123456,学生可以在第一次登陆后自己修改密码。 (2):简历上传功能:毕业生使用此系统可以在平台上找工作,通过上传自己的简历,在投递给招聘公司的时候可以快速地让对方了解学生信息。 (3):应聘工作功能:毕业生在上传自己的简历后,在‘招聘详情’界面可以选择自己心仪的公司,并投递简历。投递之后可以在新的页面查看自己所有的投递信息。 (4):问题管理功能:学生可以对平台的使用、招聘公司的情况等提出自己的意见发布至平台公共页面。 (5):个人管理:因为账号是学校自动按照学号分配的,因此为了账号安全,第一次登陆账号需要修改自己的密码。同时此功能还可以查看自己的信息。 2.2.2 教师功能需求 (1):登陆功能:教师账号是学校统一以学号为基础给学生注册的,因此本系统不支持用户自己注册。初始密码为123456,教师可以在第一次登陆后自己修改密码。 (2):学生管理功能:每个教师都有对应的自己班级的学生,教师可以随时修改自己每一个学生的信息,包括添加新的学生、删除已有学生、查询和修改学生情况。 (3):问题管理功能:教师和学生一样都可以对平台提出自己的建议。 (4):学生应聘情况功能:所有选择就业并且投递简历成功,找到工作的学生都会出现在此页面,教师以此作为参考,对学生进行观察。 (5):个人管理:因为账号是学校自动按照教师职工号分配的,因此为了账号安全,第一次登陆账号需要修改自己的密码。同时此功能还可以查看自己的信息。 2.2.3 招聘者功能需求 (1):登陆功能:招聘者作为特殊的登录身份,和学生用户和教师用户完全不一样。企业招聘者需要找到本系统的管理员,向管理员提出申请,让管理员帮忙注册自己公司的专属账号。之后才能登录。 (2):招聘管理功能:招聘者在获得账号之后,为自己的公司修改信息,包括企业规模、招聘要求等信息,之后发布至平台首页,功毕业生参考选择应聘。当有毕业生选择本公司并投递简历后,可以选择筛选合适的毕业生做出选择。 (3):账号管理:招聘者账号是申请获得的,初始密码为123456,因此为了账号安全,第一次登陆账号需要改自己的密码。同时此功能还可以查看招聘者的信息。 2.2.4 管理员功能需求 (1):登陆功能:管理员登录。 (2):学生管理功能:毕业生账号是管理员一个一个个添加到数据库中的。管理员有权利修改所有学生用户的信息,并可以随时添加学生账号,删除学生账号,也能精确查找学生。管理员拥有最高权力。 (3):教师管理功能:教师账号是管理员一个一个个添加到数据库中的。管理员有权利修改所有教师用户的信息,并可以随时添加教师账号,修改教师信息,删除教师账号,精确查找教师。 (4):公司管理功能:外部招聘者一开始没有账号,在招聘者提出申请账号后,管理员为招聘者创建账号,并能随时修改招聘公司的信息,甚至删除此账号。 (5):咨询管理功能:管理员随时查看学生和教师在问题管理模块提出的意见,在收到意见后对相关意见做出回应。 (6):密码修改功能:管理员可以修改自己账号的密码来提高系统的安全性。
2.2 数据字典设计 常见的数据字典由数据项名、数据结构、长度、约束控制以及说明组成。具体的数据库字典设计如表2-1所示: 表2-1 数据库字典设计 数据项名 数据结构
长度 约束控制 说明 StudentId Int
11 主键 编号 StudentName Varchar
255 非空 账号 Password Varchar
255 非空 密码 Student_TcId int
11 外键 学生所属教师 Telephone Varchar
11 非空 联系电话 Status Int
11 非空 就业状态 StudentResume1 Varchar
50
个人简历 StudentResume2 Varchar
50
实习报告 Img Varchar
255 非空 头像 TeacherId Int
11 主键 编号 TeacherName Varchar
255 非空 账号 Password Varchar
255 非空 密码 Img Varchar
255 非空 头像 CompanyId Int
11 主键 编号 CompanyName Varchar
255 非空 账号名 Password Varchar
255 非空 密码 CompanyScale Varchar
255
公司规模 CompanyIdusty Varchar
255
公司类型 CompanyInfo Varchar
255
公司描述 QusId Int
11 主键 编号 QusName Varchar
255
问题名称 QusAnswer Varchar
255
问题答复 InfoID Int
11 主键 咨询编号 InfoTitle Varchar
255
咨询名称 Information Varchar
255
咨询内容 Internship_id Int
11 主键 实习编号 Internship_stuId Int
11 外键 实习生学号 Internship_comId Int
11 外键 实习单位编号 Internship_stuResume Varchar
255
实习生简历 Internship_status Varchar
255
实习状态 Internship_data date
Not null 入职日期 2.3 数据流图 (1)毕业生管理模块数据流图如图2.5所示: 图2.5 毕业生管理模块数据流图
(2)指导老师模块数据流图如图2.6所示 图2.6 指导老师管理模块数据流图
(3)招聘单位模块数据流图如图2.7所示 图2.7 招聘单位管理模块数据流图 3 概念结构设计 3.1 各模块E-R图 (1)学生管理模块E-R图如图3.1所示: 图3.1 学生管理模块E-R图 (2)教师管理模块E-R图如图3.2所示: 图3.2 教师管理模块E-R图 (3)招聘公司管理模块E-R图如图3.3所示: 图3.3 招聘公司管理模块E-R图 (4)咨询管理模块E-R图如图3.4所示: 图3.4 咨询管理E-R图 (5)问题管理E-R图如图3.5所示: 图3.5 问题管理模块E-R图 (6)管理员E-R图如图3.6所示: 图3.6 管理员E-R图 3.2 总体E-R图 具体E-R图如图3.7所示: 图3.7 总体E-R图 4 逻辑结构设计 4.1 系统总体设计毕业生管理系统最主要是为学生使用而设计的,但是同时又能受益教师和招聘公司。教师只需要使用本系统就能方便地去管理自己的学生,减少了一些不必要的麻烦。而招聘公司为了招收人才进自己的公司,正好借此机会,节省时间,充分利用资源。其系统功能模块图如下: 图4.1 系统总体功能模块图 4.2 数据库设计 根据以上各模块的E-R图以及系统总体功能模块来设计数据库对应的表。 4.2.1 数据库中的表具体的表格如图4.2所示: 4.2.2 数据库表详细设计数据库表格的详细设计如下所示: (1)学生个人信息数据库设计: 表4-1学生个人管理数据库信息表 字段号 字段名称 字段类型 字段大小 索引 字段说明 1 StudentId Int 11 主键 编号 2 StudentName Varchar2 20 非空 账号 3 Password Varchar2 20 非空 密码 4 Student_TcId int 10 非空 学生所属的教师 5 Telephone Varchar2 11 非空 联系电话 6 Status Int 11 非空 就业状态 7 StudentResume1 Varchar 50 非空 个人简历 7 StudentResume2 Varchar 50 非空 实习报告 8 Img Varchar 255 非空 头像 (2)教师个人管理数据库信息表: 表4-2 教师个人管理数据库信息表 字段号 字段名称 字段类型 字段大小 索引 字段说明 1 TeacherId Number 10 主键 编号 2 TeacherName Varchar2 20 非空 账号 3 Password Varchar2 20 非空 密码 4 Img Varchar 255 非空 头像 (3)招聘者账号数据库信息表: 表4-3 招聘者账号数据库信息表 字段号 字段名称 字段类型 字段大小 索引 字段说明 1 CompanyId Number 10 主键 编号 2 CompanyName Varchar2 20 非空 账号名 3 Password Varchar2 20 非空 密码 4 CompanyScale Varchar 255 非空 公司规模 5 CompanyIdusty Varchar 255 非空 公司类型 6 CompanyInfo Varchar 255 非空 公司描述 (4)问题管理数据库信息表: 表4-4 问题管理数据库信息表 字段号 字段名称 字段类型 字段大小 索引 字段说明 1 QusId Number 10 主键 编号 2 QusName Varchar2 255 非空 问题名称 3 QusAnswer Varchar2 255 非空 问题答复 (5)咨询管理数据库信息表: 表4-5 咨询管理数据库信息表 字段号 字段名称 字段类型 字段大小 索引 字段说明 1 InfoID Number 10 主键 咨询编号 2 InfoTitle Varchar2 255 非空 咨询名称 3 Information Varchar2 255 非空 咨询内容 (6)实习数据库信息表: 表4-6 实习数据库信息表 Internship_id Int 11 主键 实习编号 Internship_stuId Int 11 外键 实习生学号 Internship_comId Int 11 外键 实习单位编号 Internship_stuResume Varchar 255 Not null 实习生简历 Internship_status Varchar 255 Not null 实习状态 Internship_data date
Not null 入职日期 4.2.3 安全性和完整性要求 (1)安全性要求 可以定义视图、为用户授权以及SQL文件备份来保证数据库的安全性,首先在admin表中新建管理员账号以及密码,密码应该满足复杂性要求,这样就保证了数据库系统管理的安全问题。另外需要额外创建数据库用户分别授予相对应的管理权限:例如授予stu1管理student表的权限,teacher1管理teacher表,com1管理company表。 (2)完整性要求 为每张表设置primary key以及foreign key可保证实体完整性和参照完整性。 5 数据库实施 5.1 创建数据库 CREATE DATABASE graduate; 5.2 建表并添加完整性约束(1)创建管理用户 CREATE TABLE `admins` ( `admin_id` int(11) NOT NULL AUTO_INCREMENT, `admin_name` varchar(255) DEFAULT NULL, `admin_password` varchar(255) NOT NULL, PRIMARY KEY (`admin_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; (2)创建student表 CREATE TABLE `student` ( `student_id` int(11) NOT NULL AUTO_INCREMENT, `student_name` varchar(255) DEFAULT NULL, `student_phone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `student_image` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `student_password` varchar(255) DEFAULT NULL, `student_status` int(11) DEFAULT '1', `student_teacherid` int(11) DEFAULT NULL, `student_resume` varchar(255) DEFAULT NULL, PRIMARY KEY (`student_id`), foreign key(student_teacherid) references teacher(teacher_id) on update cascade on delete cascade ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; (3)创建teacher表 CREATE TABLE `teacher` ( `teacher_id` int(11) NOT NULL, `teacher_name` varchar(255) DEFAULT NULL, `teacher_password` varchar(255) DEFAULT NULL, `teacher_status` int(11) DEFAULT '1', `teacher_image` varchar(255) DEFAULT NULL, PRIMARY KEY (`teacher_id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; (4)创建company表: CREATE TABLE `company` ( `company_id` int(11) NOT NULL AUTO_INCREMENT, `company_name` varchar(255) DEFAULT NULL, `company_scale` varchar(255) DEFAULT NULL, `company_industry` varchar(255) DEFAULT NULL, `company_about` varchar(255) DEFAULT NULL, `company_detail` varchar(255) DEFAULT NULL, `company_password` varchar(255) DEFAULT NULL, PRIMARY KEY (`company_id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; (5)创建information表: CREATE TABLE `information` ( `information_id` int(11) NOT NULL AUTO_INCREMENT, `information_about` varchar(255) DEFAULT NULL, `information_detail` varchar(255) DEFAULT NULL, `information1` varchar(255) DEFAULT NULL, `information2` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, PRIMARY KEY (`information_id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; (6)创建question表 CREATE TABLE `question` `question_id` int(11) NOT NULL AUTO_INCREMENT, `question_name` varchar(255) DEFAULT NULL, `question_answer` varchar(255) DEFAULT NULL, `question1` varchar(255) DEFAULT NULL, `question2` varchar(255) DEFAULT NULL, PRIMARY KEY (`question_id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; (7)创建实习internship表: CREATE TABLE `internship` ( `internship_id` int(11) NOT NULL AUTO_INCREMENT, `internship_stuId` int(11) DEFAULT NULL, `internship_comId` int(11) DEFAULT NULL, `internship_stuResume` varchar(255) DEFAULT NULL, `internship_status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '1', `internship_date` date DEFAULT NULL, foreign key(internship_comId) references company(company_id) on update cascade on delete cascade, foreign key(internship_stuResume) references student(student_resume) on update cascade on delete cascade, foreign key(internship_stuId) references student(student_id) on update cascade on delete cascade ) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8; 5.3 索引和视图设计(1)索引设计 CREATE INDEX index_stu1 ON student (student_name); CREATE UNIQUE INDEX index stu2 ON student (student_id); CREATE FULLTEXT INDEX index_ stu3 ON student(student_teacherid); CREATE INDEX index_teacher ON teacher (teacher_id,teacher_name); CREATE INDEX index_com ON company (company_id,company_name); (2)视图设计 create view view_stu_tea as select student_id,student_name,student_teacherid from student; create view view_stu_tea1 as select student_id,student_name,student_teacherid,teacher_name from student,teacher; create view view_stu_com as select student_id,student_name,student_status,company_name,company_about from student,company; 5.4 触发器设计触发器( trigger )是一个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert , delete,update )时就会激活它执行。下面对internship表设置对应的触发器,以便以student和company表格发生更新时产生相应的变化。具体实现如下: delimiter $; create trigger internship_insert after insert on student for each row begin insert into internship values (); end$ create trigger internship_delete after delete on student for each row begin delete from internship where internship_stuId=old.id; end$ create trigger internship_update after update on student for each row begin update internship set internship_stuId=new.internship_stuId,internship_comId=new.internship_comId where internship_stuId =old. internship_stuId; end$; delimiter ; 5.5 存储过程和函数下面创建存储过程,实现批量插入数据(系统实现之前可以通过创建存储过程并调用函数对数据库系统做一个简单的测试)。 create procedure autoinsert() begin declare i int default 1; while(i |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |