1.课设要求描述
●实现部门、 职务、职称等基本信息的管理;
●实现教师信息的管理;
●实现可以科研项目的申报、审批管理;
●实现科研项目的验收管理;
●创建默认,并邦定到科研项目的验收标志,使其默认值为“未验收”;
●创建触发器,验收项目时自动修改项目的验收标志为“验收通过”;
●创建存储过程统计个院 系科研项目的申报和完成数量;
●建立数据库相关表之 间的参照完整性约束。
2.制作思路及基础讲解
此项目主要是用于完成大二下半学期的数据库课设,随手记录。技术面大二下之前只学过Java,MySQL/SQLServer。所以此项目没有前端界面,只通过命令行的形式来操作该系统,制作思路:首先是数据库作为存储数据的地方,编写根据课设要求编写好对应的建表语句和存储过程,视图,触发器等。然后编写好对应系统的Java代码,最后通过JDBC将Java代码与数据库连接起来。
部分学生可能学的比较浅,不理解mysql,sqlserver,java,c等一堆名词之间的含义。之前有同学找我做过这类似的课设。问的问题都比较抽象,例如用mysql做一个系统之类的。在此简单说一下我对于这些的理解,mysql,sqlserver都是数据库的一种,只不过是外国的所以都是用英文表示,大部分上课不听的同学看到这一堆英文都会比较懵,其实只需简单把数据库(mysql,SQLServer)理解成存储数据的地方,而java,c等语言是用来编写系统逻辑功能的代码。当然在数据库中的存储过程或者触发器什么的,这些功能也能在代码编程语言中通过特定的逻辑实现类似的功能,只不过我们在数据库中写好的话,免去了Java中代码的编写量,并且查询时速度会更快。
3.使用工具及语言详解
不同的学校要求不同,有的是sqlserver,有的是mysql,但其实这两者的区别在我看来区别不大,大部分的语句格式都是一样的,所以我选择了我熟悉的一种,mysql来进行编写。在语言方面,我大一的时候学过c,但是当时没有认真听,后来也慢慢都忘了,大二时学了Java,并且之后又系统性的学了一遍,所以选择来用Java语言编写。对于编译器我使用的是IDEA,版本随意,这个不影响,但需要注意IDEA不是免费的,可以去试用30天,也可以自行网上找方法安装破解版。数据库可视化工具使用的是Navicat,这个工具同样也不是免费的,但提供14天试用期,有长期需求也需要各位自行找破解版。
PS:这里又提到两个新名词,IDEA和Navicat,这不是编程语言,而是工具的名字,大家需要慢慢熟悉这些名词,简单来说就是他能让你的编程之路变得更顺畅,提供了可视化的界面,不需要一直在黑窗口中输入代码
4.数据库建表代码(完整数据库文件请到主页资源处下载)
-- 创建部门表
CREATE TABLE Departments (
DepartmentID INT PRIMARY KEY AUTO_INCREMENT,
DepartmentName VARCHAR(255) NOT NULL,
Location VARCHAR(255)
);
-- 创建职务表
CREATE TABLE Positions (
PositionID INT PRIMARY KEY AUTO_INCREMENT,
PositionName VARCHAR(255) NOT NULL
);
-- 创建职称表
CREATE TABLE Titles (
TitleID INT PRIMARY KEY AUTO_INCREMENT,
TitleName VARCHAR(255) NOT NULL
);
-- 创建教师信息表
CREATE TABLE Teachers (
TeacherID INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(255) NOT NULL,
DepartmentID INT,
PositionID INT,
TitleID INT,
Email VARCHAR(255),
OfficePhone VARCHAR(20),
MobilePhone VARCHAR(20),
FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID),
FOREIGN KEY (PositionID) REFERENCES Positions(PositionID),
FOREIGN KEY (TitleID) REFERENCES Titles(TitleID)
);
-- 创建科研项目表
CREATE TABLE ResearchProjects (
ProjectID INT PRIMARY KEY AUTO_INCREMENT,
Title VARCHAR(255) NOT NULL,
StartDate DATE,
EndDate DATE,
Budget DECIMAL(10, 2),
TeacherInChargeID INT,
ApprovalStatus ENUM('Pending', 'Approved') DEFAULT 'Pending',
AcceptanceStatus ENUM('未验收', '验收通过') DEFAULT '未验收',
FOREIGN KEY (TeacherInChargeID) REFERENCES Teachers(TeacherID)
);
5.Java代码思路及结构
此处只放部分代码截图
6.效果运行实例