聲明:本片課程設計只列舉了數據庫設計部分,系統實現部分省略了。如果單純只做數據庫課程設計還是有一定的參考價值的。
由於版權原因,這次源碼不能提供給大家了。
報告比較簡單,本博主寫的比較快,所以難免會有些小問題,請諒解哦。
目錄
1 相關技術介紹
1.1 SSM
SSM是Spring SpringMVC mybatis的合稱。其中,Spring框架就像裝配bean的大工廠,在配置文件中可以指定特定的參數去調用構造方法來實例化對象。因此,Spring框架能幫程序員直接New一個對象。SpringMVC中M:model(模型),接受用戶請求,調用Model處理,選擇合適的View給客戶。V:View(視圖),業務處理模型,接受Controller的調遣,處理業務,處理數據。C:controller(控制器),返回給客戶看的結果。
1.2 Tomcat
Tomcat是由Apache公司推出的一款免費開源Servlet容器,是配置JSP和JAVA系統必備的環境。Tomcat免費開放源代碼,屬於輕量級服務器。它在程序運行時佔用系統資源少,可拓展,成本低,因而廣受java愛好者的喜愛。
1.3 MySQL
MySQL是關係型數據庫管理系統,由瑞典的MySQL AB公司開發,目前屬於Oracle旗下產品。它是目前最流行的關係型數據庫管理系統之一。使用是SQL語言。SQL語言用於訪問數據庫,開發者使用 C和 C++編寫SQL語言,因此可移植性較高。因爲放源碼軟件,能大大降低成本,所以受大衆歡迎。
1.4 Layui
Layui 出於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<100)do
insert into company.t1 values(i,'test', test',null,null);
set i=i+1;
end while;
end$$
delimiter ; #把分隔符修改回來
call autoinsert(); #執行這個函數,開始插入數據
5.6 安全性設計
(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文件,最好異地也備份,防止數據庫崩潰),另外對配置二進制文件,數據庫產生故障可通過二進制文件進行恢復。這樣才能保障數據庫一定的安全性。
6 系統實現
………………
7 參考文獻
[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.