admin 管理员组

文章数量: 887021


2024年1月13日发(作者:python的解释器在哪里)

模块三 软件设计案例

——问卷调查系统模块设计

一、案例简介

为了解同学的所思所想,所忧所虑,提高工作的针对性、实效性来切实满足同学在成长、成才、成功过程中的内在需要,学工部门拟开发一个在线问卷调查系统。问卷调查系统采用无记名方式作答,学生只需结合自身的客观情况,选择相应的答案即可,所有题目均为单选。

本案例是“常州信息职业技术学院大学生思想状况调查问卷系统”的模块设计。为简化设计过程,本案例仅选择项目管理模块进行设计。

二、 案例功能

问卷调查系统包含题库管理、问卷项目管理、统计查询和学生答卷四个模块,前三个模块为教师所用,最后一个模块为学生使用。题库管理模块负责维护和编辑所有题干和题支,项目管理模块负责创建和发布每次调查试卷,统计查询模块对调查结果进行分析统计,学生答卷模块供学生在线答卷。

该案例的功能列表如表1所示。

表1 功能模块

系统角色 功能模块

题库管理

子功能

提干设计

题支设计

创建项目

教师

项目管理

选题组卷

发布试卷

结束调查

统计查询

学生 答卷

分析统计

在线答卷

具体设计时选择“项目管理功能模块”进行模块案例设计。

三、模块设计

(一)项目管理模块设计概述

进行问卷调查的教师首先创建项目,然后从题库中选取问题组成问卷,当试卷问题确定后发布试卷,学生可以从答卷页面进行答卷,结果写入答卷结果库。答卷结束,教师结束调查,并关闭项目,不允许学生答卷。项目管理模块业务流程如图1所示。

1

出卷教师创建项目选题组卷发布试卷结束调查抽题题库关闭项目答卷结果库组卷问卷管理页面

图1 项目管理模块业务流程

项目管理模块的具体模块类设计包括模块逻辑层的类设计,数据访问层的工厂类设计、接口声明类设计、接口业务实现类设计。

模块的类结构图,如图2所示。

项目管理模块处理逻辑类

项目管理模块处理工厂类 项目管理模块接口声明类

实现

创建

项目管理模块处理接口实现类

图2 项目管理模块类结构图

(二)项目管理模块流程设计

项目管理模块包含创建项目、选题组卷、发布试卷和结束调查四个子功能。

1.创建项目

为每次调查创建一个调查项目,项目编号系统生成,项目内容文本框输入,项目可编辑,并可删除。业务流程如图3所示。

2

准备输入项目内容编辑删除保存项目清空输入显示项目内容写数据修改项目内容删除项目输出项目内容结束

图3 创建项目业务流程

2.选题组卷

使用组卷功能为调查问卷项目添加题干和题支。题号可以编辑。业务处理流程如图4所示。

准备分页显示调查项目分页显示题库题干和题支选择项目组卷选择题干添加题干和题支显示试卷题干和题支删除更新题号删除题干和题支结束

图4 选题组卷业务流程

3

3.发布试卷

在线发布调查问卷,供学生在线答卷,预览功能可以预览样卷。业务处理流程如图5所示。

准备显示未发布的调查项目发布预览发布试卷显示调查问卷的预览卷结束

图5 发布试卷业务流程

4.结束调查

当学生答卷完毕后,教师结束调查答卷。业务处理流程如图6所示。

准备显示已发布的调查项目结束预览结束调查问卷过程显示调查问卷结束

图6 结束调查业务流程

(三)项目管理模块类定义

1.接口声明

项目管理模块接口声明,如表1所示。

4

表1项目管理模块接口

接口声明

public interface IProjectManager

参数:project为调查项目;bool createProject(SurveryProject

创建项目;返回布尔值

project);

bool deleteProject(int projectID);

删除项目;参数:projectID为项目编号;返回布尔值

bool

updateProject(SurveryProject

project);

SurveryProject

getProjectByID(int projectID);

查询项目;参数:projectID为项目编号;返回项目对象

提交项目;参数:projectID为项目编号;返回布尔值

完成项目,结束调查;参数:project为调查项目;返回布尔值

组卷,添加题干和题支;参数:projectID为项目编号,subjectID为题支编号,seq为题支序号;返回布尔值

移除题支;参数:projectID为项目编号,subjectID为题支编号;返回布尔值

更新项目;参数:project为调查项目;返回布尔值

接口方法

bool submitProject(int

projectID);

bool completeProject(int

projectID);

bool createPaperItems(int

projectID, int subjectID, int seq);

bool removePaperItems(int

projectID, int subjectID);

功能

2.接口实现

项目管理模块接口声明。

项目管理模块的接口实现类命名为ProjectManager,可使用下面代码结构声明:

public class ProjectManager: IProjectManager{ 项目管理模块接口方法实现列表 }

表2给出接口bool createProject(SurveryProject project)的实现方法定义,其它接口的方法实现参照进行。

表2创建新调查项目的方法定义

方法名称

所属类

访问类型

输入参数

输出参数

返回值

功能

3.算法与处理流程

5

createProject

ProjectManager

Public

SurveryProject project

项目对象

布尔值,true创建成功,false创建失败。

创建一个新调查项目,并将新项目添加到数据库中。

实现接口方法时,可使用下面的算法处理流程:

声明一个数据库访问助手(SQLHelper)对象helper;

声明一个字符串,值为SQL语句(如果有参数,则声明为带参数的形式)或存储过程名;

声明一个数据库参数数组(SqlParameter[])对象prams,并创建prams的每个元素对象;

调用helper的增、删、改、查方法,实现对数据库的访问,参数为SQl语句(或存储过程名)和prams。

具体编码时可以参考下面的两种编码结构方法实现与数据库的交互,本文档仅给出编码结构的简单实现方法,并不是完整的实现方法,完整方法可以在具体编码时完善。

1)使用SQL语句的编码结构

public bool deleteProject (int projectID){

using (SQLHelper helper = new SQLHelper()) {

string deleteCommandText = "DELETE

Project WHERE

projectID =@projectID ";

deleteCommandText += "AND NOT EXISTS (";

deleteCommandText +="SELECT subjectID FROM SurveryQuestion WHERE

projectID=@projectID) ";

SqlParameter[] prams = { new SqlParameter("@projectID ", ,4)}

prams[0]. Value = projectID;

return helper. ExecuteNonQueryByParams(deleteCommandText,prams);

}

}

2)使用存储过程的编码结构:

public bool deleteProject(int projectID) {

using (SQLHelper helper = new SQLHelper()) {

string spName="usp03deleteProject";

SqlParameter[] prams = { new SqlParameter("@projectID", , 4) };

prams[0].Value = projectID;

return (eNonQuery(spName, prams) == 0) ? true : false;

}

}

4.工厂类定义

使用简单工厂类的createProjectManager方法创建调查项目管理模块的对象实例。项目管理对象简单工厂定义为sealed类型的类,该类不可被继承。

可使用下面的代码结构描述静态工厂类:

6

public sealed class ProjectFactory {

public static IProjectManager createProjectManager(){

return (new tManager());

}

}

SQLServer为封装ProjectManager类的命名空间。

5.逻辑层类定义

逻辑层调用工厂类的createProjectManager方法创建对象实例,并通过对象实例的方法实现对数据库的访问。逻辑层的方法命名参照接口声明。逻辑层的类设计可以参考下面的代码结构:

public class BllProjectManager {

//调用createProjectManager方法创建项目管理对象实例

private IProjectManager iProjectManager = ProjectManager();

public bool createProject(SurveryProject project) {

return Project(project);

}//创建新调查项目对象的方法定义

}

以上代码结构中给出创建新调查项目对象的方法createProjectManager的定义和实现,其它方法的声明可以参照进行。

7


本文标签: 项目 调查 模块 项目管理 方法