《大学生就业管理系统》课外实践报告.doc
数据库原理及应用课外实践报告实 践 选 题: 大学生就业管理系统 专 业 班 级: 2011级计科本一班 指 导 教 师: 周宏宇 姓名及 学号: 王幸 张小洛 成 绩 评 定: 82 项目基本信息项目名称大学生就业管理系统项目简介该项目设计的是个大学生就业管理系统,是在实现如今越来越多的大学生提供就业资源,方便大学生,同时也实现企业寻求人才,通过建立一个job数据库,并在该数据库中建立六个不同功能的表,最终的目的是用人单位可将就业信息在网上进行发布,方便毕业生进行就业信息检索。小组成员王幸(组长) 张小洛任务分工王幸主要负责项目整体的分析及数据库的设计和代码的编写,以及实践心得的总结。张小洛主要负责项目中逻辑结构等模型的设计,并查阅资料,并对整体项目加以完善和总结一、 系统分析1.1 背景 当今社会的大学生都面临“就业即失业的窘境”,然而随着社会和经济不断的发展,数据和信息也随之告诉增长起来,为有效地组织和管理庞大的数据和信息,严密科学合理的数据管理技术也就成为迫切的技术问题之一。数据库技术是20世纪60年代末在文件系统基础上发展起来的数据管理新技术,它解决了过去对数据管理和组织中存在的数据冗余和独立性问题,实现了数据的共享性、完整性、安全性、有效性目标。数据库技术的发展和广泛使用,为人类社会进入信息化社会奠定了坚实的基础。大学生就业管理系统是在实现如今为越来越多的大学生提供就业资源,方便大学生,同时也实现企业寻求人才的搜索,该系统最终的目的是方便毕业生进行就业信息检索,可将就业信息在网上进行发布。1.2 目标针对以上的功能分析,对数据库的设计做了以下分析。考虑到就业查询的特殊要求,数据库的设计应该能够完成以下功能:(1)能实现对用人单位的基本信息进行录入、修改、删除等。(2)实现毕业生专业信息的维护。(3)能发布用人单位的毕业生需求信息。(4)方便的实现对人才需求信息的检索。(5)具有数据备份和数据恢复功能。二、数据库系统设计 2.1 概念结构设计大学生就业管理系统在我们负责的管理员这一模块上创建了一个数据库job,并在该数据库中创建了六张表用来存储所有的用人单位信息和招聘信息:company表(包含属性:单位号码、单位名称、电话号码)、major表(包含属性:专业信息、专业号码)、region表(包含属性:地区号码、地区名称)、belong表(包含属性:用人单位号码、地区号)、request表(包含属性:用人单位号码、专业号码、年份、人数、专业、学历),student表(包含属性:姓名,学号,年龄,专业,性别)。并为每个表设置了能唯一确定各个表的属性。其中company表里设置属性(单位号码)为主关键字,并在major表里设置属性(专业号码)为主关键字,在region表里设置属性(地区号码)为主关键字,在belong表里设置属性(用人单位号码)为主关键字,在request表里设置属性(用人单位号码)为主关键字,student中(学号)为关键字。用人地区图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)单位单位号码电话号码单位名称表间对应的局部和整体E-R图如下:图1用人单位属性图(company)地区地区号码地区名称 图2地区属性(region)学生姓名性别年龄电话专业学号图3 学生属性图(student)要求用人单位号码专业号码年份人数专业学历 图4 单位要求图(request)专业信息专业号码专业名称图5 专业信息属性图(major)用人地区图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)图2地区属性图(region)单位单位号码地区号码图6用人单位信息(belong)用人单位要求专业信息地区属于nnmm人数年份学历专业招聘学生图7 整体E-R图学生学生信息判断用人单位信息查询学生信息发布 大学生就业查询流图 用人单位(单位号码,单位名称,电话号码); 要求(用人单位好号码,专业号码,年份,人数,专业,学历); 专业信息(专业号码,专业名称); 属于(用人单位号码,地区号码); 地区(地区号码,地区名称);学生(学号,姓名,年龄,专业,电话)2.2 逻辑结构设计1)下面是将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定:1) company表,如表1所示。 表1 company表字段名数据类型主关键字外部关键字参照的表取值说明单位号码nchar(10)Yes不允许为空单位名称nchar(10)不允许为空电话号码nchar(10)不允许为空2)belong表,如表2所示。表2 belong表字段名数据类型主关键字外部关键字参照的表取值说明用人单位号码nchar(10)Yes不允许为空地区号码nrchar(10)不允许为空3)major表,如表3所示。表3 major表字段名数据类型主关键字外部关键字参照的表取值说明专业号码nchar(10)Yes不允许为空专业信息nrchar(10)不允许为空 4)region表,如表4所示。表4 region表字段名数据类型主关键字外部关键字参照的表取值说明地区号码nchar(10)Yes不允许为空地区名称nrchar(10)不允许为空5)request表,如表5所示。表5 request表字段名数据类型主关键字外部关键字参照的表取值说明专业号码nchar(10)不允许为空用人单位号码nrchar(10)Yes不允许为空年份nrchar(10)不允许为空人数nrchar(10)不允许为空专业nrchar(10)不允许为空学历nrchar(10)不允许为空6)student 表,如表6所示 表6 student表字段名数据类型主关键字外部关键字参照的表取值说明姓名nchar(10)不允许为空学号nchar(10)yes不允许为空年龄nchar(10)不允许为空专业nchar(10)不允许为空性别nchar(10)不允许为空2.3 物理设计根据以上的逻辑分析所得到表的关系,我们使用T-SQL语言设计得到数据库和数据表。create database jobon( name='job_data',filename='e:job.mdf',size=5mb,maxsize=50mb,filegrowth=10%)log on(name='job_log', filename='e:job_log.ldf',size=2mb,maxsize=5mb,filegrowth=1mb)gouse jobcreate table company(单位号码 nchar(10) not null primary key, 单位名称 nchar(10) not null, 电话号码 nchar(10) not null ) go create table belong (用人单位号码 nchar(10) not null primary key, 地区号码 nchar(10) not null ) go create table major (专业号码 nchar(10) not null primary key, 专业信息 nchar(10) not null ) go create table region (地区号码 nchar(10) not null primary key, 地区名称 nchar(10) not null ) go create table requst (专业号码 nchar(10) not null , 用人单位号码 nchar(10) not null primary key, 年份 nchar(10) not null, 人数 nchar(10) not null, 专业 nchar(10) not null, 学历 nchar(10) not null ) go create table student (姓名 nchar(10) not null, 学号 nchar(10) not null primary key, 年龄 nchar(10) not null , 专业 nchar(10) not null, 性别 nchar(10) not null ) go insert into company values('003','安阳市丹尼斯商场','') insert into company values('004','安阳市家教中心','') insert into belong values('003','5423') insert into belong values('004','6542') insert into major values('03','计算机') insert into major values('04','国际经济与贸易') insert into region values('5423','弦歌大道') insert into region values('6542','文化宫') insert into requst values('03','003',2013,500,'计算机','本科') insert into requst values('04','004',2013,800,'英语','本科') insert into student values('李','003',23,'经济','nan') insert into student values('wang','005',23,'计算机','男') insert into student values('li','002',24,'经济','女') insert into student values('zhang''004',23,'计算机','男') go -建立存储过程:create procedure dbo.b地区名称 nchar(10)asbeginselect 单位名称,电话号码,地区名称,专业信息,学历,人数,年份from belong,company,region,major,requestwhere 地区名称=地区名称 and belong.用人单位号码 =request.用人单位号码 and belong.用人单位号码 =company.单位号码 and company .单位号码 =request .用人单位号码 and belong .地区号 =region .地区号码 and major .专业号码 =request .专业号码endGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOcreate procedure dbo.a单位名称 nchar(10)asbeginselect 单位名称,电话号码,地区名称,专业信息,学历,人数,年份from belong,company,region,major,requestwhere 单位名称=单位名称 and belong.用人单位号码 =request.用人单位号码 and belong.用人单位号码 =company.单位号码 and company .单位号码 =request .用人单位号码 and belong .地区号 =region .地区号码 and major .专业号码 =request .专业号码endGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOcreate procedure dbo.c专业信息 nchar(10)asbeginselect 单位名称,电话号码,地区名称,专业信息,学历,人数,年份from belong,company,region,major,requestwhere 专业信息=专业信息 and belong.用人单位号码 =request.用人单位号码 and belong.用人单位号码 =company.单位号码 and company .单位号码 =request .用人单位号码 and belong .地区号 =region .地区号码 and major .专业号码 =request .专业号码endGO-删除存储过程DROP PROCEDURE dbo.bgo-对的major的专业号码创建唯一索引create unique index stunumber on major(专业号码)go-查询学生信息select * from student where 学号='002' go-建立触发器:在company表上建立触发器:create trigger danweihaomaon companyafter updateasbegin update request set 单位号码=(select 单位号码 from inserted) where 单位号码 in ( select 单位号码 from deleted) ENDgo-在belong表上插入触发器create trigger yongrendanweihaoma on belong for update as begin select '该项为主键内容,修改不成功!' end go-创建belong1视图包括用人单位号码,地区号码CREATE VIEW belong1 WITH ENCRYPTION AS SELECT belong.用人单位号码,地区号码 FROM belong,region WHERE belong.地区号码 = region.地区号码 WITH CHECK OPTIONgo-查询视图中的地区号码SELECT 地区号码 FROM belong1go-删除belong1视图DROP VIEW belong1go-定义一个函数实现以下功能:-判断学生是否存在,若存在则输出该学生对应的所有信息,若不存在,则输出无此人create function selected_sno1(a char(10)returns char(20)as begin declare b char(20), x char(10) set b ='002' if exists( select * from student where 学号 =b ) set x ='不存在此人' else return x end go三、问题及解决方法在设计的过程中我们遇到的问题也挺多的,例如在设计整体架构设计各表之间的关系时,总是考虑不够周到,数据的完整性和一致性把握不准。理论不够规范化,关系模式不够优越。为了实现这些,我也参阅了很多关于数据库设计方面的书,从中受益匪浅。在这次课程设计过程中,也有很多没有想到的地方,通过和同学交流完善了不少的功能。在此表示感谢。而且在设计过程中发现我们对T-SQL语句的细节问题上还有好多欠缺之处,例如去建表的时候老是出错,在解决此问题时我们通过参考老师上课讲的学生管理系统xscj那个数据库中建表的方法不断完善我们的建表过程。还有触发器的应用,我们也不够熟练,为此我们要进一步练习加强。四、课外实践总结通过这次实践设计培养了我们综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。通过这次课程设计增加很多认识,在拿到课程设计题目时,没有像以前一样马上开始动手写代码,我们先做了整体的分析,把要设计的表,表的属性,表间的关系全部弄清楚,并画了相应的关系图和E-R图,从而也就基本形成了基本的框架结构。同时使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。在做报告的过程中遇到很多问题,但是我们并没有因此而放弃,而是小组成员各自集中智慧并相互交流,最重要的是我们集思广益,通过查阅各种资料,去尽力解决问题。在这个过程中,每解决一个问题都会让我们感觉很欣慰,在此过程我们认识到了团队合作的重要性,同时提高了我们的团队合作能力。