首页 > 数据库 >高校教师信息管理系统(数据库课设)

高校教师信息管理系统(数据库课设)

时间:2024-06-11 22:58:00浏览次数:18  
标签:VARCHAR 课设 -- 高校教师 INT DepartmentID KEY 信息管理系统 NULL

 1.课设要求描述 

●实现部门、职称、职务的基本信息的管理;

●实现教师信息的管理;

●实现教师家庭关系和教育经历的管 理;

●实现教师的奖惩管理;

●创建规则使得教师的 E-Mail必须符合电子邮箱的格式;

●创建触发器,实现修改教师所在部门时自动修改相应部门的教师人数:

●创建存储过程统计各 部门各种职称的人数;

●建立数据库相关表之间的参照完整性约束

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 PROCEDURE CountTitlesByDepartment()
BEGIN
    -- 临时表存储统计结果
    DROP TEMPORARY TABLE IF EXISTS DepartmentTitleCounts;
    CREATE TEMPORARY TABLE DepartmentTitleCounts (
        DepartmentName VARCHAR(255),
        TitleName VARCHAR(255),
        Count INT
    );

    -- 插入统计结果
    INSERT INTO DepartmentTitleCounts (DepartmentName, TitleName, Count)
    SELECT 
        d.DepartmentName, 
        t.TitleName, 
        COUNT(t2.TitleID)
    FROM 
        Teachers t
    JOIN 
        Departments d ON t.DepartmentID = d.DepartmentID
    JOIN 
        Titles t2 ON t.TitleID = t2.TitleID
    GROUP BY 
        d.DepartmentName, 
        t2.TitleName;
    
    -- 选择临时表中的数据,以便查看结果
    SELECT * FROM DepartmentTitleCounts;
END




-- 创建触发器,实现修改教师所在部门时自动修改相应部门的教师人数:

CREATE TRIGGER AfterTeacherDepartmentUpdate
AFTER UPDATE ON Teachers
FOR EACH ROW
BEGIN
    -- 如果教师的部门ID发生了变化
    IF OLD.DepartmentID <> NEW.DepartmentID THEN
        -- 减少原部门的教师人数
        UPDATE Departments SET TeacherCount = TeacherCount - 1
        WHERE DepartmentID = OLD.DepartmentID;
        
        -- 增加新部门的教师人数
        UPDATE Departments SET TeacherCount = TeacherCount + 1
        WHERE DepartmentID = NEW.DepartmentID;
    END IF;
END



-- 创建部门表
CREATE TABLE Departments (
    DepartmentID INT AUTO_INCREMENT PRIMARY KEY,
    DepartmentName VARCHAR(255) NOT NULL,
    Description TEXT
);


-- 创建职称表
CREATE TABLE Titles (
    TitleID INT AUTO_INCREMENT PRIMARY KEY,
    TitleName VARCHAR(255) NOT NULL
);


-- 创建职务表
CREATE TABLE Positions (
    PositionID INT AUTO_INCREMENT PRIMARY KEY,
    PositionName VARCHAR(255) NOT NULL
);


-- 创建教师信息表
CREATE TABLE Teachers (
    TeacherID INT AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(255) NOT NULL,
    Gender VARCHAR(10),
    BirthDate DATE,
    Email VARCHAR(255) NOT NULL CHECK (Email LIKE '%_@_%.__%'),
    DepartmentID INT,
    TitleID INT,
    PositionID INT,
    FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID),
    FOREIGN KEY (TitleID) REFERENCES Titles(TitleID),
    FOREIGN KEY (PositionID) REFERENCES Positions(PositionID)
);


-- 创建家庭关系表
CREATE TABLE FamilyRelations (
    RelationID INT AUTO_INCREMENT PRIMARY KEY,
    TeacherID INT NOT NULL,
    RelationType VARCHAR(100) NOT NULL,
    RelationName VARCHAR(255) NOT NULL,
    RelationBirthDate DATE,
    FOREIGN KEY (TeacherID) REFERENCES Teachers(TeacherID)
);


-- 创建教育经历表
CREATE TABLE EducationalExperiences (
    ExperienceID INT AUTO_INCREMENT PRIMARY KEY,
    TeacherID INT NOT NULL,
    InstitutionName VARCHAR(255) NOT NULL,
    DegreeObtained VARCHAR(255),
    StartDate DATE NOT NULL,
    EndDate DATE,
    FOREIGN KEY (TeacherID) REFERENCES Teachers(TeacherID)
);


-- 创建奖惩信息表
CREATE TABLE RewardsPunishments (
    RewardPunishmentID INT AUTO_INCREMENT PRIMARY KEY,
    TeacherID INT NOT NULL,
    Description TEXT NOT NULL,
    Date DATE NOT NULL,
    Type VARCHAR(50) NOT NULL,  -- 改为VARCHAR类型
    FOREIGN KEY (TeacherID) REFERENCES Teachers(TeacherID)
);

5.Java代码思路及结构

此处只放部分代码截图

6.效果运行实例 

 附带说明书,任务书,sql文件及源码,需要后台私信 

标签:VARCHAR,课设,--,高校教师,INT,DepartmentID,KEY,信息管理系统,NULL
From: https://blog.csdn.net/weixin_64922330/article/details/139610617

相关文章

  • 自助餐管理系统(数据库课设)
    1.课设要求描述语义如下:某公司为了提高职工的福利待遇,规定每个员工每天可以在职工食堂用餐两次,可以中午用餐一次,下午用餐一次;也可以集中到中午或下午一次用餐两次。月底进行核算,如果用餐次数不足,餐费不退还职工。公司根据实际的用餐次数支付食堂餐费。要求如下:●创建一个......
  • C# WinForm 实现学生成绩信息管理系统,连接SQL数据库,完整代码
    C#WinForm实现学生成绩信息管理系统《面向对象程序设计》实验功能介绍1、学生信息查询2、学生选课信息3、学生信息修改4、学生成绩录入实验分析遇到的问题解决方法主要问题嗨,我是射手座的程序媛,期待与大家更多的交流与学习,欢迎添加:3512724768《面向对象程序设计......
  • springboot高校运动会信息管理系统设计与实现-计算机毕业设计源码92968
    摘 要本论文介绍了一个高校运动会信息管理系统的设计和实现过程。首先是高校运动会的需求分析和可行性分析,通过比较运动会的各个工作流程,确定了系统的数据流程和数据库结构,然后介绍了高校运动会信息管理系统开发所使用的软件开发工具,最后描述了系统的详细设计与实现。本系统......
  • 【计算机论文指导】基于Spring boot食品安全信息管理系统
    摘要食品安全信息管理系统设计的目的是为用户提供食品信息、科普专栏、食品检测、检测结果、交流论坛等方面的平台。与PC端应用程序相比,食品安全信息管理系统的设计主要面向于用户,旨在为管理员和用户提供一个食品安全信息管理系统。用户可以通过APP及时查看食品信息、新......
  • 基于java ssm vue mysql农业信息管理系统(源码+lw+部署文档+讲解等)
    前言......
  • Java基于SSM的员工信息管理系统设计实现
    现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本龙腾公司员工信息管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高......
  • 基于springboot实现疫情信息管理系统项目【项目源码+论文说明】计算机毕业设计
    基于springboot实现疫情信息管理系统演示摘要近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定疫情信息管理系统的总体功能模块。然后,详细设计系统的主要功能模块,通......
  • 第一个简易ssh项目分析,基于ssh的简易教师信息管理系统
    #这是一个关于新手的ssh项目,以及首次对ssh的配置启动复盘#1.项目结构介绍1.1大致结构图展示1.2整体说明1.2.1:配置ssh项目使用maven,在pom.xml中将ssh相关插件进行配置,当然,不管使 用maven还是直接下载ssh三部分的相关插件通过导入的方式进行ssh环境配置,其最终结果都是ss......
  • 基于Python语言的图书馆信息管理系统的设计与实现
    随着信息技术和我国教育产业的飞速发展,各高校的学生数量日益增多并且在这种全新的信息化时代下,传统的管理技术已经无法为我们带来高效、便捷的管理模式。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,图书馆管理系统就是信息时代变革中......
  • 【期末网页设计】基于HTML学生信息管理系统网页项目的设计与实现
    ......