学生就业管理系统

发布时间:2025-12-10 11:19:39 浏览次数:14

目  录

一、 题目概述

二、 总体设计思想

三、 需求分析

四、 系统设计 2

五、概念结构设计

数据模型(E-R图)

六、逻辑结构设计

关系模型

七、物理结构设计

八、数据库实施

  • 题目概述

内容及要求:高校学生就业管理系统实现院系、专业、毕业生信息管理(设有就业标志,初值为“待业”);实现职业类型、职业信息(职业号、类型号、需求数量、聘用数量、用人单位)登记; 实现毕业生就业登记(学号、职业号),自动修改相应学生的就业标志和职业的聘用数量,并保证聘用数量不大于需求数量;创建存储过程查询毕业生的人数、待业人数、就业人数和就业率; 创建存储过程查询各专业的毕业生就业率;创建 check 约束限制毕业生性别必须为‘男’或‘女’; 建立表间关系。

  • 总体设计思想

   在本次设计中,先进行小组集体分析了要完成的项目,在纸上进行了初步规划,为了后续小组合作SQL语句及其他方面的合作,小组集体讨论先对数据库和各个表的建立命名以及主键等约束性条件进行了统一,小组在完成SQL语句的编写后,进行了自我编写数据的硕写,并做了数据的表格,详细数据的建立可见附录。随后进行小组画ER图的统一,小组每个成员按照自己的理解各自画了ER图,最后在集体讨论后,确定了最终ER图的设计,用visio进行了实现。最后完成了关系模型的编写。在合作过程中,充分发挥了集体的作用,并对一系列相关知识点进行了复习。

  • 需求分析

3.1 信息要求

高校就业管理系统可以完成对学生信息的修改、查询(毕业生的人数、待业人数、就业人数和就业率以及各专业的毕业生就业率)、添加(学生基本信息、院系信息、公司信息等)。初步完成了对高校学生就业信息的管理,使用简单。

3.2 处理功能及要求

3.3 安全性和完整性

安全性:系统安全性要求体现在数据库安全性,信息安全性和系统平台的安全性等方面。安全性通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作,来提高数据库的安全性。

完整性:系统完整性要求系统中数据的正确性以及相容性,通过建立主键、外键、check约束,并且使用触发器和级联操作。

四、系统设计

能够存储一定数量的学生信息、职业信息等,并方便有效的进行相应的学生数据操作和管理,这主要包括:

  • 学生等相关信息的录入、删除和修改。
  • 毕业生就业情况的查询等。
  • 能够提供一定的安全机制,提供数据信息访问权限,防止随意更改。对查询、统计的结果能够列表显示出来。

    五、概念结构设计

    数据模型(E-R图)

                                         

     院系分ER图

                                          

    专业分ER图

                                          

     职业信息分ER图

                                         

                                         

    学生信息分ER图

                                     职业类型分ER图

                                        

    就业信息分ER图

                                          

    合并ER图

    六、逻辑结构设计

    关系模型

    tb_College(CollegeId,CollegeName)

    规则:实体转换成关系。

    tb_Sdept(SdeptId,SdeptName,CollegeId)

    规则:实体转换成关系。1:n的联系合并到n,在n方加一个外键:学院号。

    tb_Employment(Sno,JobId)

    tb_JobInformation(JobId,TypeId,DemandNum,HireNum,Company)

    tb_Student(Sno,Name,Sex,BirthDate,SdeptId,CollegeId,EmploymentSign,TypeId)

    规则:实体转换成关系。1:n的联系合并到n方,在n方加两个外键:专业号、职业类型号。

    tb_JobType(TypeId,TypeName,JobId)

    规则:实体转换成关系。1:n的联系合并到n,在n方加一个外键:职业号。

    七、物理结构设计

    数据库名称:db_Graduation

    表格 1 tb_College

    列名

    数据类型

    是否为空

    说明

    CollegeId

    char(4)

    Not null

    Primary key

    CollegeName

    varchar(20)

    Null

    表格 2 tb_Sdept

    列名

    数据类型

    是否为空

    说明

    SdeptId

    char(4)

    Not null

    Primary

    SdeptName

    varchar(20)

    null

    CollegeId

    Char(4)

    Foreign key

    表格 3 tb_Employment

    列名

    数据类型

    是否为空

    说明

    Sno

    Char(11)

    Nut null

    Primary key

    JobId

    Char(4)

    null

    表格 4 tb_JobInformation

    列名

    数据类型

    是否为空

    说明

    JobId

    Char(4)

    Nut null

    Primary key

    TypeId

    Char(2)

    Foreign key

    DemandNum

    int

    null

    HireNum

    Int

    null

    Company

    Varchar(20)

    null

    表格 5 tb_Student

    列名

    数据类型

    是否为空

    说明

    Sno

    Char(11)

    Nut null

    Primary

    Name

    Varchar(10)

    null

    Sex

    Char(2)

    Nut null

    Check(男,女)

    BirthDate

    datetime

    Null

    SdeptId

    Char(4)

    Nut null

    Foreign key

    CollegeId

    Char(4)

    Nut null

    Foreign key

    EmploymentSign

    Varchar(6)

    初值为’待业’

    表格 6 tb_JobType

    列名

    数据类型

    是否为空

    说明

    TypeId

    Char(4)

    Nut null

    Primary key

    TypeName

    Varchar(10)

    Null

    八、数据库实施

       

    CREATE database db_Graduation

    on primary

    (

    name=db_Graduation_data,

    filename='D:\高校学生就业管理系统\db_Graduation_data.mdf',

    size=10MB,

    MAXSIZE=300MB,

    filegrowth=10%

    )

    LOG ON

    (

    name=db_Graduation_log,

    filename='D:\高校学生就业管理系统\db_Graduation_data.ldf',

    size=5MB,

    MAXSIZE=200MB, 

    filegrowth=2MB

    )

    use

    db_Graduation

    go

    --创建学院信息表

    create table tb_College

    (

    CollegeId char(4) primary key,

    CollegeName varchar(20)

    )

    --创建专业信息表

    create table tb_Sdept

    (

    SdeptId char(4) primary key,

    SdeptName varchar(24),

    CollegeId char(4),

    foreign key(CollegeId)references tb_College(CollegeId)

    )

    --创建职业类型表

    create table tb_JobType

    (

    TypeId char(2) primary key,

    TypeName varchar(20)

    )

    --创建学生信息表

    create table tb_Student

    (

    Sno char(11) primary key,

    Name varchar(10),

    Sex varchar(2),

    BirthDate datetime,

    SdeptId char(4),

    CollegeId char(4),

    EmploymentSign varchar(6),

    foreign key(SdeptId)references tb_Sdept(SdeptId),

    foreign key(CollegeId)references tb_College(CollegeId),

    constraint C1 check(Sex='男' or Sex='女')

    )

    --创建就业信息表

    create table tb_Employment 

    (

    Sno char(11) primary key,

    JobId char(4),

    foreign key(Sno)references tb_Student(Sno)

    )

    --创建职业信息表

    create table tb_JobInformation

    (

    JobId char(4) primary key,

    TypeId char(2),

    DemandNum int,

    HireNum int,

    Company varchar(20),

    foreign key(TypeId)references tb_JobType(TypeId)

    )

    创建完表之后截图

    图 2

    --验证插入性别不为男女时

    insert 

    into tb_Student(Sno,Sex) 

    values('20164051112','王')

    验证插入学生表性别不为“男或女时”

    图 3

    --创建毕业生信息视图

    go

    create view 毕业生信息_VIEW(学号,姓名,性别,出生年月,专业,学院,就业标志)

    as

    select Sno,Name,Sex,BirthDate,SdeptName,CollegeName,EmploymentSign

    from tb_Student,tb_Sdept,tb_College

    where tb_Student.SdeptId=tb_Sdept.SdeptId and tb_Student.CollegeId=tb_College.CollegeId

    创建视图的原因:学生表中无专业名称与学院名称,而设置了专业编号与学院编号,为了使数据库存储数据不冗余。

    图 4

    视图打开后:

    图 5

    --创建毕业生就业登记触发器

    go

    create trigger 毕业生就业登记插入_TRIG

    on tb_Employment

    after insert

    as

    begin

      declare @DemandNum int,@Sno char(11),@JobId char(4)

      select @DemandNum=DemandNum,@Sno=Sno,@JobId=tb_JobInformation.JobId 

      from tb_Employment,tb_JobInformation

      where tb_Employment.JobId=tb_JobInformation.JobId

      update tb_Student

      set EmploymentSign='就业'

      where Sno=@Sno

      if(@DemandNum>0)

        begin

      update tb_JobInformation

          set DemandNum=DemandNum-1

      where JobId=@JobId

    end

      else

        begin

      rollback

    end

    End

    在tb_Employment表中插入信息创建触发器

    图 6

    --验证触发器

    insert 

    into tb_Employment

    values('20164051109','0210')

    插入之前:tb_JobInformation表

    图 7

    tb_Employment表

    图 8

    Tb_Student

    图 9

    验证之后:

    图 10

    tb_JobInformation表

    图 11

    tb_Employment表

    图 12

    Tb_Student

    图 13

    --创建存储过程

    --查询毕业生的人数、待业人数、就业人数和就业率

    GO

    Create Proc proc_就业情况

    @allstudents int out,

    @unemployed int out,

    @employed int out

    as

    begin

    select @allstudents=COUNT(*)

    from tb_Student

    select @unemployed=COUNT(*)

    from tb_Student

    where EmploymentSign='待业'

    select @employed=COUNT(*)

    from tb_Student

    where EmploymentSign='就业'

    end

    GO

    Declare @allstudents1 int,@unemployed1 int,@employed1 int,@employeementRate varchar(6)

    exec proc_就业情况 @allstudents1 output,@unemployed1 output,@employed1 output

    select @employeementRate=@employed1/@allstudents1*100

    print'毕业生中人数为'+convert(char,@allstudents1)

    print'毕业生待业人数为'+convert(char,@unemployed1)

    print'毕业生就业人数为'+convert(char,@employed1)

    print'毕业生就业率为'+convert(varchar,convert(decimal(10,2),@employed1*1.0/@allstudents1*100))+'%' 

    存储过程方式一:

    毕业学生信息:

    图 14

    各个专业学生信息:

    图 15

    --各专业毕业生就业率

    Go

    create Proc proc_本专业学生就业率

    @sdept varchar(24),

    @allstudents int out,

    @employed int out

    as

    begin

    select @allstudents=COUNT(*)

    from tb_Student,tb_Sdept

    where tb_Student.SdeptId=tb_Sdept.SdeptId and SdeptName=@sdept

    select @employed=COUNT(*)

    from tb_Student,tb_Sdept

    where EmploymentSign='就业' and tb_Student.SdeptId=tb_Sdept.SdeptId and SdeptName=@sdept

    end

    GO

    Declare @allstudents2 int,@employed2 int,@employeementRate1 varchar(6)

    exec proc_本专业学生就业率 '财务管理',@allstudents2 output,@employed2 output

    select @employeementRate1=@employed2/@allstudents2*100

    print'该专业的毕业生就业率为'+convert(varchar,convert(decimal(10,2),@employed2*1.0/@allstudents2*100))+'%'

    毕业学生信息:

    图 16

    GO

    Create Proc proc_就业情况

    @allstudents int out,

    @unemployed int out,

    @employed int out

    as

    begin

    select @allstudents=COUNT(*)

    from tb_Student

    select @unemployed=COUNT(*)

    from tb_Student

    where EmploymentSign='待业'

    select @employed=COUNT(*)

    from tb_Student

    where EmploymentSign='就业'

    end

    GO

    Declare @allstudents1 int,@unemployed1 int,@employed1 int,@employeementRate1 varchar(6)

    exec proc_就业情况 @allstudents1 output,@unemployed1 output,@employed1 output

    select @employeementRate1=convert(varchar,convert(decimal(10,2),@employed1*1.0/@allstudents1*100))+'%' 

    select @allstudents1 毕业生人数,@unemployed1 待业人数,@employed1 就业人数,@employeementRate1 就业率

    --创建存储过程

    --查询各专业的毕业生就业率

    Go

    create Proc proc_本专业学生就业率

    @sdept varchar(24),

    @sdept1 varchar(24) out,

    @allstudents int out,

    @employed int out

    as

    begin

    select @sdept1=@sdept

    select @allstudents=COUNT(*)

    from tb_Student,tb_Sdept

    where tb_Student.SdeptId=tb_Sdept.SdeptId and SdeptName=@sdept

    select @employed=COUNT(*)

    from tb_Student,tb_Sdept

    where EmploymentSign='就业' and tb_Student.SdeptId=tb_Sdept.SdeptId and SdeptName=@sdept

    end

    GO

    Declare @allstudents2 int,@employed2 int,@sdeptemployeementRate1 varchar(6),@sdept2 varchar(24)

    exec proc_本专业学生就业率 '财务管理',@sdept2 output,@allstudents2 output,@employed2 output

    select @sdeptemployeementRate1=convert(varchar,convert(decimal(10,2),@employed2*1.0/@allstudents2*100))+'%'

    select @sdept2 专业,@allstudents2 总人数,@employed2 就业人数,@sdeptemployeementRate1 就业率

    各个专业学生信息:

    需要做网站?需要网络推广?欢迎咨询客户经理 13272073477