赞
踩
声明:本片课程设计只列举了数据库设计部分,系统实现部分省略了。如果单纯只做数据库课程设计还是有一定的参考价值的。
由于版权原因,这次源码不能提供给大家了。
报告比较简单,本博主写的比较快,所以难免会有些小问题,请谅解哦。
目录
SSM是Spring SpringMVC mybatis的合称。其中,Spring框架就像装配bean的大工厂,在配置文件中可以指定特定的参数去调用构造方法来实例化对象。因此,Spring框架能帮程序员直接New一个对象。SpringMVC中M:model(模型),接受用户请求,调用Model处理,选择合适的View给客户。V:View(视图),业务处理模型,接受Controller的调遣,处理业务,处理数据。C:controller(控制器),返回给客户看的结果。
Tomcat是由Apache公司推出的一款免费开源Servlet容器,是配置JSP和JAVA系统必备的环境。Tomcat免费开放源代码,属于轻量级服务器。它在程序运行时占用系统资源少,可拓展,成本低,因而广受java爱好者的喜爱。
MySQL是关系型数据库管理系统,由瑞典的MySQL AB公司开发,目前属于Oracle旗下产品。它是目前最流行的关系型数据库管理系统之一。使用是SQL语言。SQL语言用于访问数据库,开发者使用 C和 C++编写SQL语言,因此可移植性较高。因为放源码软件,能大大降低成本,所以受大众欢迎。
Layui 出于2016年金秋,是一款带着浓烈情怀的国产前端UI框架,她追求极简,又不失丰盈的内在,说她是史上最轻量的结晶,似乎并不为过。一切都源自于她对原生态的执着,对前端社区的那些噪杂声音的过滤,以及她本身的精心雕琢。layui属于轻量级框架,简单美观。适用于开发后端模式,它在服务端页面上有非常好的效果。layui是提供给后端开发人员最好的ui框架,基于DOM驱动,只要不涉及到交互layui还是很不错的。
(1):学生登录功能:学生账号是学校统一以学号为基础给学生注册的,因此本系统不支持用户自己注册。初始密码为123456,学生可以在第一次登陆后自己修改密码。
(2):简历上传功能:毕业生使用此系统可以在平台上找工作,通过上传自己的简历,在投递给招聘公司的时候可以快速地让对方了解学生信息。
(3):应聘工作功能:毕业生在上传自己的简历后,在‘招聘详情’界面可以选择自己心仪的公司,并投递简历。投递之后可以在新的页面查看自己所有的投递信息。
(4):问题管理功能:学生可以对平台的使用、招聘公司的情况等提出自己的意见发布至平台公共页面。
(5):个人管理:因为账号是学校自动按照学号分配的,因此为了账号安全,第一次登陆账号需要修改自己的密码。同时此功能还可以查看自己的信息。
(1):登陆功能:教师账号是学校统一以学号为基础给学生注册的,因此本系统不支持用户自己注册。初始密码为123456,教师可以在第一次登陆后自己修改密码。
(2):学生管理功能:每个教师都有对应的自己班级的学生,教师可以随时修改自己每一个学生的信息,包括添加新的学生、删除已有学生、查询和修改学生情况。
(3):问题管理功能:教师和学生一样都可以对平台提出自己的建议。
(4):学生应聘情况功能:所有选择就业并且投递简历成功,找到工作的学生都会出现在此页面,教师以此作为参考,对学生进行观察。
(5):个人管理:因为账号是学校自动按照教师职工号分配的,因此为了账号安全,第一次登陆账号需要修改自己的密码。同时此功能还可以查看自己的信息。
(1):登陆功能:招聘者作为特殊的登录身份,和学生用户和教师用户完全不一样。企业招聘者需要找到本系统的管理员,向管理员提出申请,让管理员帮忙注册自己公司的专属账号。之后才能登录。
(2):招聘管理功能:招聘者在获得账号之后,为自己的公司修改信息,包括企业规模、招聘要求等信息,之后发布至平台首页,功毕业生参考选择应聘。当有毕业生选择本公司并投递简历后,可以选择筛选合适的毕业生做出选择。
(3):账号管理:招聘者账号是申请获得的,初始密码为123456,因此为了账号安全,第一次登陆账号需要改自己的密码。同时此功能还可以查看招聘者的信息。
(1):登陆功能:管理员登录。
(2):学生管理功能:毕业生账号是管理员一个一个个添加到数据库中的。管理员有权利修改所有学生用户的信息,并可以随时添加学生账号,删除学生账号,也能精确查找学生。管理员拥有最高权力。
(3):教师管理功能:教师账号是管理员一个一个个添加到数据库中的。管理员有权利修改所有教师用户的信息,并可以随时添加教师账号,修改教师信息,删除教师账号,精确查找教师。
(4):公司管理功能:外部招聘者一开始没有账号,在招聘者提出申请账号后,管理员为招聘者创建账号,并能随时修改招聘公司的信息,甚至删除此账号。
(5):咨询管理功能:管理员随时查看学生和教师在问题管理模块提出的意见,在收到意见后对相关意见做出回应。
(6):密码修改功能:管理员可以修改自己账号的密码来提高系统的安全性。
常见的数据字典由数据项名、数据结构、长度、约束控制以及说明组成。具体的数据库字典设计如表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 | 入职日期 |
(1)毕业生管理模块数据流图如图2.5所示:
图2.5 毕业生管理模块数据流图
(2)指导老师模块数据流图如图2.6所示
图2.6 指导老师管理模块数据流图
(3)招聘单位模块数据流图如图2.7所示
图2.7 招聘单位管理模块数据流图
(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图
具体E-R图如图3.7所示:
图3.7 总体E-R图
毕业生管理系统最主要是为学生使用而设计的,但是同时又能受益教师和招聘公司。教师只需要使用本系统就能方便地去管理自己的学生,减少了一些不必要的麻烦。而招聘公司为了招收人才进自己的公司,正好借此机会,节省时间,充分利用资源。其系统功能模块图如下:
图4.1 系统总体功能模块图
根据以上各模块的E-R图以及系统总体功能模块来设计数据库对应的表。
具体的表格如图4.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 | 入职日期 |
(1)安全性要求
可以定义视图、为用户授权以及SQL文件备份来保证数据库的安全性,首先在admin表中新建管理员账号以及密码,密码应该满足复杂性要求,这样就保证了数据库系统管理的安全问题。另外需要额外创建数据库用户分别授予相对应的管理权限:例如授予stu1管理student表的权限,teacher1管理teacher表,com1管理company表。
(2)完整性要求
为每张表设置primary key以及foreign key可保证实体完整性和参照完整性。
CREATE DATABASE graduate;
(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;
(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;
触发器( 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 ;
下面创建存储过程,实现批量插入数据(系统实现之前可以通过创建存储过程并调用函数对数据库系统做一个简单的测试)。
create procedure autoinsert()
begin
declare i int default 1;
while(i<100)do
insert into company.t1 values(i,'test', test',null,null);
set i=i+1;
end while;
end$$
delimiter ; #把分隔符修改回来
call autoinsert(); #执行这个函数,开始插入数据
(1)对用户授权来保证数据库的安全性,首先在admin表中新建管理员账号以及密码,密码应该满足复杂性要求,这样就保证了数据库系统管理的安全问题。具体如下:
INSERT INTO `admins` VALUES ('1', 'admin', 'Root@1234$!');
另外需要额外创建数据库用户分别授予相对应的管理权限:例如授予stu1管理student表的权限,teacher1管理teacher表,com1管理tcompany表,具体实现如下:
create user 'stu1'@'localhost' identified with mysql_native_password by 'Root@123';
create user 'tea1'@' localhost' identified with mysql_native_password by 'Root@123';
create user 'com1'@' localhost' identified with mysql_native_password by 'Root@123';
grant all on graduate.student to stu1'@'localhost ' ;
grant all on graduate.teacher to tea1'@'localhost ';
grant all on graduate.company to com1'@'localhost ';
(2)对数据库做定期备份(保存SQL文件,最好异地也备份,防止数据库崩溃),另外对配置二进制文件,数据库产生故障可通过二进制文件进行恢复。这样才能保障数据库一定的安全性。
………………
[1] 王越. JAVA编程语言在计算机软件开发中的应用[J]. 电子技术与软件工程,2019(01):36.
[2] 陈俊伟. 高职学院《Java程序设计》课程翻转课堂教学设计探讨[J]. 电脑迷,2019(01):103.
[3] 夏曦,李洪,贾香恩,谢涵风,杨颖. 基于Java Web的“大学印迹”网站的设计与实现[J]. 电脑知识与技术,2018,14(23):120-122.
[4] 曹文渊. JAVA语言在计算机软件开发中的应用[J]. 电子技术与软件工程,2019(02):63-64.
[5] 王红伟,李会凯. 计算机软件开发的Java编程语言探究[J]. 无线互联科技,2018,16(10):66-67.
[6] 肖成金,吕冬梅. Java程序开发数据库与框架应用[J]. 科技展望,2017.06:19.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。