模块三软件设计
案例
全员育人导师制案例信息技术应用案例心得信息技术教学案例综合实践活动案例我余额宝案例
——问卷调查系统模块设计
一、案例简介
为了解同学的所思所想,所忧所虑,提高工作的针对性、实效性来切实满足同学在成长、成才、成功过程中的内在需要,学工部门拟开发一个在线问卷调查系统。问卷调查系统采用无记名方式作答,学生只需结合自身的客观情况,选择相应的答案即可,所有题目均为单选。
本案例是“常州信息职业技术学院大学生思想状况调查问卷系统”的模块设计。为简化设计过程,本案例仅选择项目管理模块进行设计。
二、案例功能
问卷调查系统包含题库管理、问卷项目管理、统计查询和学生答卷四个模块,前三个模块为教师所用,最后一个模块为学生使用。题库管理模块负责维护和编辑所有题干和题支,项目管理模块负责创建和发布每次调查试卷,统计查询模块对调查结果进行分析统计,学生答卷模块供学生在线答卷。
该案例的功能列
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
如表1所示。
表1 功能模块
具体设计时选择“项目管理功能模块”进行模块案例设计。
三、模块设计
(一)项目管理模块设计概述
进行问卷调查的教师首先创建项目,然后从题库中选取问题组成问卷,当试卷问题确定后发布试卷,学生可以从答卷页面进行答卷,结果写入答卷结果库。答卷结束,教师结束调查,并关闭项目,不允许学生答卷。项目管理模块业务流程如图1所示。
1
图1 项目管理模块业务流程
项目管理模块的具体模块类设计包括模块逻辑层的类设计,数据访问层的工厂类设计、接口声明类设计、接口业务实现类设计。
模块的类结构图,如图2所示。
图2 项目管理模块类结构图
(二)项目管理模块流程设计
项目管理模块包含创建项目、选题组卷、发布试卷和结束调查四个子功能。
1.创建项目
为每次调查创建一个调查项目,项目编号系统生成,项目内容文本框输入,项目可编辑,并可删除。业务流程如图3所示。
图3 创建项目业务流程
2.选题组卷
使用组卷功能为调查问卷项目添加题干和题支。题号可以编辑。业务处理流程如图4所示。
图4 选题组卷业务流程
3.发布试卷
在线发布调查问卷,供学生在线答卷,预览功能可以预览样卷。业务处理流程如图5所示。
图5 发布试卷业务流程
4.结束调查
当学生答卷完毕后,教师结束调查答卷。业务处理流程如图6所示。
图6 结束调查业务流程
(三)项目管理模块类定义
1.接口声明
项目管理模块接口声明,如表1所示。
表1项目管理模块接口
2.接口实现
项目管理模块的接口实现类命名为ProjectManager,可使用下面代码结构声明:
public class ProjectManager: IProjectManager{ 项目管理模块接口方法实现列表 }
表2给出接口bool createProject(SurveryProject project)的实现方法定义,其它接口的方法实现参照进行。
表2创建新调查项目的方法定义
3.算法与处理流程
温馨推荐
您可前往百度文库小程序
享受更优阅读体验
不去了
立即体验
实现接口方法时,可使用下面的算法处理流程:
①声明一个数据库访问助手(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 ", SqlDbType.Int,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", SqlDbType.Int, 4) };
prams[0].Value = projectID;
return (helper.ExecuteNonQuery(spName, prams) == 0) ? true : false;
}
}
4.工厂类定义
使用简单工厂类的createProjectManager方法创建调查项目管理模块的对象实例。项目管理对象简单工厂定义为sealed类型的类,该类不可被继承。
可使用下面的代码结构描述静态工厂类:
public sealed class ProjectFactory {
public static IProjectManager createProjectManager(){
return (new SQLServer.ProjectManager());
}
}
SQLServer为封装ProjectManager类的命名空间。
5.逻辑层类定义
逻辑层调用工厂类的createProjectManager方法创建对象实例,并通过对象实例的方法实现对数据库的访问。逻辑层的方法命名参照接口声明。逻辑层的类设计可以参考下面的代码结构:public class BllProjectManager {
//调用createProjectManager方法创建项目管理对象实例
private IProjectManager iProjectManager = ProjectFactory.createProjectManager();
public bool createProject(SurveryProject project) {
return iProjectManager.createProject(project);
}//创建新调查项目对象的方法定义
}
以上代码结构中给出创建新调查项目对象的方法createProjectManager的定义和实现,其它方法的声明可以参照进行。