system: [SYSTEM]

user: 4. 系统功能设计与实现 4.1. 系统结构设计 线上文件调查系统主要分为四大模块，其主要功能如下所示。 1) 问卷调查模块：主要面向的是问卷参与方，参与方可以对已经发布的调查问卷进行填写并提交。 2) 问卷管理模块：主要面向的是问卷管理方，管理方可以对系统内中的问卷进行创建、修改、发布、统计问卷等操作。 3) 问卷分析模块：这部分主要是对问卷的数据进行统计和分析，从而得到一些结论和规律。 4) 用户管理模块：主要面向的是系统维护方，维护方可以对系统内中的账户进行创建、修改、删除等操作。系统逻辑结构示意图如图3所示。 图3. 系统功能模块 4.2. 系统主要功能设计 4.2.1. 问卷调查模块 问卷调查模块功能包含浏览问卷、填写问卷等功能，如图4所示。 图4. 问卷调查模块 1) 浏览问卷：本系统可以将已经发布的问卷显示在无需登录的浏览问卷中。方便被参与人员浏览问卷，参与人员可以挑选自己感兴趣的问卷进行填写。主要代码如下。 2) 填写问卷：参与人员根据浏览问卷页面选择需要填写的问卷，单击“填写”按钮，进入填写调查问卷页面，该页面将显示对应发布的问卷内容，用户可以选择回答题目，也可以全都不回答，当回答完毕后，需要填写参与人员个人信息，如姓名、性别、年龄、联系方式后，选择提交功能。提交后，系统会判断是否是有效问卷，如果问卷中没有回答任何一道题，系统后台对此问卷归类为垃圾问卷，不进行入库操作。 代码说明： call login(user，pwd)//登录操作 访问数据库 if 浏览问卷 then paperId←填写问卷的ID，questiontitle←问卷题目，questionvalue←问卷答案 flag←call checkResult(questiontitle，questionvalue) if flag=无效 then return end if ret←call insertResult(paperId，questiontile，questionvalue) Return if 填写问卷 then paperId←填写问卷的ID，num←题目数量，questiontitle←问卷题目，questionvalue←问卷答案 flag←call input(n，，questionvalue) if flag=拒绝 then return end if ret←call insertResult(paperId，questiontile，questionvalue) Return 4.2.2. 问卷管理模块 问卷管理功能模块包含创建问卷、发布问卷、查看调查问卷报告、导出问卷报告等功能 [ 10 ]，如图5所示。 1) 创建问卷：用户登陆系统后，可以在系统中创建调查问卷，数据库将问卷题目人性化地设计成可变字符类型，方便用户在创建调查问卷可以添加自定义类型问题，而非老旧的固定选择问卷题目，增强了系统的创新力。 2) 发布问卷：用户登陆系统后，可以对系统中已经创建好的问卷进行发布，发布问卷需要配置发布调查问卷的结束时间，单击发布问卷，该问卷会进入到问卷调查模块中，可以给予其他非登录本系统用户进行调查问卷填写操作。 图5. 问卷管理 3) 问卷报告：用户登陆系统后，可以对系统中已经发布的问卷进行查看，该功能具有统计参与问卷人数、回答最多题目TOP10、查阅整理问卷回答情况等功能。此功能应用了Echars开源图表框架来进行统计中的饼图与柱图显示，方便用户聚焦重点数据，提升用户使用体验 [ 11 ]。 4) 导出问卷：用户登陆系统后，可以在问卷报告页面查看数据后导出多种格式的报告，导出问卷功能，支持的格式有：excel、pdf、html等主流报告格式，数据内容丰富。用户将导出的报告可以进行二次数据分析、汇报工作使用。 代码说明： call login(user，pwd)//登录操作 访问数据库 if 创建问卷 then papername←问卷名称，papertitle←问卷题目，paperclass←问卷类型，pubtime←发布时间 call addpaper(papername，papertile，paperclass，papercreatetime，pubtime) return paperid else if 发布问卷 then paperid←发布问卷ID，pubtime←发布时间，pubtime←发布时间，endtime←问卷结束时间 call pubpaper(paperid，pubtime，endtime) return 成功 else if 导出问卷 then paperid←导出问卷ID sdf←shape(paperif)//导出类型 paper←call export_paper(paperid) return paper 4.2.3. 问卷分析模块 该模块主要是对用户提交的问卷信息进行统计分析，进而得出适当结论。分析的内容主要针对于调查结果的信度以及用户的回复度和选择度。首先信度代表整个问卷的可信度，这是我们进行统计分析的基础，一个可信度很低的问卷所得出的结论往往也是差强人意的。其次用户的回复度可以说明问卷题目设置的合理性，如果一个问卷的回复度极低这说明用户对题目的设置不认可，问卷对用户的吸引力不足，需要重新设置。最后选择度是我们进行分析的主要目的，以一个带有四个选项的题目为例，我们可以根据统计看出每个选项的用户支持度，进而可以看出大众对于这个问题的看法，这也是我们进行调查的目的。 本文对信度的分析采用重测信度法。即在对问卷的测验环节，用相同的问卷在不同的时间里对同一组测试者进行测试然后计算两次测验的一致性进而算出信度α。采用的算法如下： ① 令第一次测验结果为X，第二次测验结果为Y，两次结果之间的不可控误差记为Z，它们有一定的关系如公式(1)所示。 X = Y + Z (1) ② 对于不可控误差它的期望值往往设置为0，即E(Z) = 0，代表两次测验结果相互独立。所以第一次与第二次测验结果的期望值相同，如公式(2)所示。 E ( X ) = E ( Y ) (2) ③ 第一次测量得分的方差等于第二次得分的方差加上误差的方差，如公式(3)所示。 σ x 2 = σ Y 2 + σ Z 2 (3) ④ 信度的规定第二次的方差在第一次方差中所占比例，如公式(4)所示。 α = σ Y 2 / σ x 2 ( 1 － σ Z 2 / σ x 2 ) (4) 信度在理想化的情况是1，但这往往是不切实际的。在问卷调查中我们规定信度介于0.8到0.85之间的问卷是适当的，如若低于0.7则需要重新设置问卷。 对于回复度和选择度的分析本文采用了直观的统计图表。图表的绘制采用了基于数据库的图表自动生成技术，实现这一技术首先要完成与数据库的连接，本文改进了以往对数据的直接导入，采用了依据数据库实现数据表的连接减少了数据的冗余 [ 12 ]。导入后的数据保存在selfAllDate中，根据选择要绘制的统计图系统调用相应的函数自动生成如图6所示。本系统中提供了大量的图表种类如折线图、饼状图、柱形图等，具有很强的直观性，为后续的分析提供了帮助。 图6. 柱状图 4.2.4. 用户管理模块 用户管理功能模块包含，添加用户、修改用户、删除用户等功能，如图7所示。 图7. 用户管理 1) 添加用户：管理员可以对本系统添加多个负责管理问卷的用户，创建用户除必须要填写用户名、密码、姓名、性别外，可以选填年龄、办公室电话、移动电话、邮箱等数据。填写完毕后，单击添加用户按钮，系统会对用户名进行验证是否已存在，如果存在，提示用户该用户名已存在，请重新创建。 为了提高用户安全性，本系统对新用户数据进行加密 [ 13 ]，将账号 + 密码 + 创建时间 + 创建者通过MD5技术混淆加密，然后进行入库操作。 2) 修改用户：管理员可以对本系统已经添加的用户进行修改操作，修改内容除必须要填写用户名、密码、姓名、性别外，可以选填年龄、办公室电话、移动电话、邮箱等数据。修改完毕后，单击修改按钮，系统会根据该用户ID，更新对应的数据项内容。更新成功后返回成功提示。 3) 删除用户：管理员可以对本系统已经添加的用户进行删除操作，选中需要删除的用户，单击删除用户按钮，系统会根据用户ID，将用户表内对应数据的status字段更新为1。代表用户已经删除。不直接删除数据表内容，只更新状态标记为已删除这样带来的好处是，将来我们可以针对已删除用户做一个扩展功能叫做恢复误删除用户功能。 用户界面示例如图8所示。 图8. 统计情况 代码说明： call login(user，pwd) //登录操作 访问数据库 if 进入添加用户界面 then username←用户名，pwd←密码，infos←用户信息，age←年龄，phone←用户电话 if 信息已存在 then 返回上一界面 else val←call addAdmin(username，pwd，infos)//插入用户信息 B←mod(ID，pwd，username)//B为加密后的信息 else if 进入修改用户界面 then userId←修改的用户ID，pwd←修改密码，infos←修改信息 val←callmodify(username，pwd，infos)//插入用户信息 else userId←要删除的用户ID val←call delAdmin(userId) return val