职业性格测评专家系统

发布时间:2017-07-01 23:02:45   来源:文档文库   
字号:

源代码地址:http://pan.baidu.com/s/1dEFQNh3

专家系统:职业性格测试推荐系统

专业:智能科学与技术 年级:2014级 姓名:逸尘白狼 学号: 22920142203809

一、 作品简介

之所以做这样一个职业性格测试的系统,是因为我即将毕业需要考虑工作的事情,但发现自己身无长物倍感沮丧。造成这种情况的原因我觉得分两方面,一方面是不了解职场,更重要的一方面是不了解自己。通过做这个系统,我希望自己能对各方面的职业有所了解,也对自身有一个清晰的认识。当然,如果能够帮助其他人那就更好了。

二、相关作品介绍

目前网络上有好几种关于职业性格测试的系统,其中比较流行的主要有两大类:MBTI职业性格测试和霍兰德职业性格测试系统。其中,MBTI归纳提炼出4个关键要素—动力、信息收集、决策方式、生活方式,进行分析判断,从而把不同个性的人区别开来。外向(E)和内向(I)感觉(S)和直觉(N)

思考(T)和情感(F)判断(J)和知觉(P)总共将个性分为16类,并对不同类给予特定的描述,推荐相关职业。

霍兰德职业性格测试根据兴趣的不同,将人格分为研究型(I)、艺术型(A)、社会型(S)、管理型(E)、传统型(C)、现实型(R)六个维度,每个人的性格都是这六个维度的不同程度组合。针对每个人格类型设置特定的问题,测试者测试之后,根据其各个类型的分数高低来判定测试者的类型。

这两大类都有各自基本的测试原理,许多系统在其基础上进行扩展,比如设计自己的测定量表,设计测试结果的不同分析方法等。其测试量表的问题有多有少,分析方法各具特色,总体来说都还不错。有点遗憾的是比较智能的测试系统一般作为引流工具,基本上都只能测试一次或者功能有限制。测试结果推荐的职业种类太多令人眼花缭乱,其实许多职业由于我们自身条件限制都无法从事不具备可行性。分析结果多以文字描述为主,过于单调不够直观。

三、作品设计架构

1、用户端:

用户端主要包含执行测试和修改规则两个功能。用户端开始测试时,从数据库的测试量表中获取问题供用户填写。填写完毕后用户端对测试结果进行分析,并结合数据库端的类型表、职业推荐表将测试结果展现给用户。当用户修改规则时,访问数据库端的职业推荐表和类型表更具用户提交的规则描述进行修改,并返回修改提示。

2、数据库端:

数据库端主要用来存储测试量表、性格类型特征、相关类型职业推荐等知识,为用户端提供数据支持。

四、作品中实现方法

该职业性格测试推荐系统主要由C#语言编写,采用WPF(windows Presentaiton Framework)框架完成用户端的设计(逻辑和界面)。采用SQLServer2016数据库系统作为后端提供知识库。

用户端包含四个界面,起始界面start.xaml,测试界面test.xaml,分析结果界面result.xaml,规则修改界面modify.xaml,并在其对应的.cs文件中实现对应的逻辑。

测试结果展示中,我使用了一个六边形来直观地表现被测者的性格特点,每个定点代表一个类型,从中心点到改点的连线代表其对应的性格强度。

public StreamGeometry BuildIrregularPolygon(int numSides, int[] r)

{

Point c = new Point(100, 250);

StreamGeometry geometry = new StreamGeometry();

using (StreamGeometryContext ctx = geometry.Open())

{

Point c1 = c;

double step = 2 * Math.PI / Math.Max(numSides, 3);

double a = step;

for (int i = 0; i < numSides; i++, a += step)

{

c1.X = c.X + r[i] * Math.Cos(a);

c1.Y = c.Y + r[i] * Math.Sin(a);

if (i == 0)

{

ctx.BeginFigure(c1, true, true);

}

else

{

ctx.LineTo(c1, true, false);

}

}

for (int i = 0; i < numSides; i++, a += step)

{

c1.X = c.X + r[i] * Math.Cos(a);

c1.Y = c.Y + r[i] * Math.Sin(a);

Point[] pp = { c, c1 };

ctx.PolyLineTo(pp, true, true);

}

}

return geometry;

}

对于类型得分最高两种性格类型,用图片将其推荐的职业展示出来,若图片资源中没有对应的职业则用木头人图片替代。

if (s.Contains("诗人"))//s包含“诗人”

{

re.job1.Source = new BitmapImage(new Uri("poet.png", UriKind.RelativeOrAbsolute));//读取图片并设置

}

用户在规则修改界面输入相应的规则描述之后,点击提交按钮,会将新的规则插入数据库中,或者更新数据库已有的数据。

string insert = "insert into type_job (type,job1,job2,job3,job4,job5,job6,job7,job8,job9,job10) values ("

+ "'"+textBoxjtype.Text.ToString().Trim()+"'," + "'" + textBoxj1.Text.ToString() + " '," + "'" + textBoxj2.Text.ToString().Trim() + " ',"

+ "'" + textBoxj3.Text.ToString().Trim() + " '," + "'" + textBoxj4.Text.ToString().Trim() + " ',"

+ "'" + textBoxj5.Text.ToString().Trim() + " '," + "'" + textBoxj6.Text.ToString().Trim() + " ',"

+ "'" + textBoxj7.Text.ToString().Trim() + " '," + "'" + textBoxj8.Text.ToString().Trim() + " ',"

+ "'" + textBoxj9.Text.ToString().Trim() + " '," + "'" + textBoxj10.Text.ToString().Trim() + " ')";

SqlCommand insertcmd = new SqlCommand(insert, conn);

insertcmd.ExecuteNonQuery();

五、对比实验分析

(1) 程序开始界面,用户需要填写相应的服务器、数据库信息

以便正常访问知识库。

(2) 点击开始测试后,跳出测试量表,用户只需选择是或者否:

(3) 测试量表填写完毕之后,给出分析结果,包括各性格类型

得分,最高分和次高分性格类型的详细描述和典型职业,具体的职业推荐

该系统和现有的职业测评系统相比最大的一个特点就是用户可以自行修改规则,在多种职业选择中缩小范围填写比较符合自己客观条件职业在测试之后再进一步确定自己适合的职业。测试量表也经过精心选择,问题质量较高切数目适中。在分析结果展示方面六边形的设计、职业图片的设计都使展示结果更加有趣生动。

六、结论

该系统在设计之初选择使用C#作为编程语言,并采用WPF框架,这两种技术我以前只听说过。所以边学边做,虽然费了好大劲把系统做出来了,但是代码比较冗余不够简洁,界面控件的使用也比较笨拙,我觉得代码简洁度和界面优化都有很大的改进余地。

使用典型职业的图片展示,时间有限我只做了18张,很多职业都没有对应的图片,可以考虑扩展图片资源集。

对于特定类型的职业推荐,按理来说应该有216条数据,而我能力有限只找了100多条数据,尽管用户可以通过修改规则来添加,但更好的是系统本身就自带完整的知识库。

本文来源:https://www.2haoxitong.net/k/doc/cfe835c2d1d233d4b14e852458fb770bf78a3b96.html

《职业性格测评专家系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式