搜索
您的当前位置:首页正文

在线问卷调查系统

来源:意榕旅游网


课 程 设 计 报 告

课程设计名称: 数据库系统概论 系 部: 学生姓名: 班 级: 学 号: 成 绩: 指导教师: 陈 林

开课时间: 2011-2012 学年 2 学期

数据库系统课程设计报告

目 录

1、需求分析 ............................................................................................... 2 2、概念结构设计....................................................................................... 4 3、逻辑结构设计....................................................................................... 5 4、物理结构设计....................................................................................... 6 5、系统的功能及界面设计 ...................................................................... 6 6、数据库实施及应用程序编制 .............................................................. 7 7、界面设计 ............................................................................................. 10 8、心得体会 ............................................................................................. 13 9、参考资料 ............................................................................................. 13

第 1 页

数据库系统课程设计报告

题目在线问卷调查系统

系统功能的基本要求:

 组织者负责调查信息输入,包括问题序号、具体问题以及选择项的输入。  组织者能查看调查情况,能够查看所有的调查信息,能够查看指定问题序号的问题调查

统计信息。

 被调查者用给定随机号(不用实名)进入系统,能够查看调查问题并进行回答。 若问题较多(如需调查150个问题),在线参与调查人员较多(如500个并发用户),则在数据库的选择及设计上应作哪些具体策略保证在线调查能顺利进行。

1、需求分析

1.1本系统的设计的主要功能

创建问卷、查看问卷、查看调查用户信息,查看调查结果等。组织者负责调查信息输入,包括问题序号、具体问题以及选择项的输入,并且能查看调查情况,能够查看所有的调查信息,能够查看指定问题序号的问题调查统计信息。被调查者用给定随机号(不用实名)进入系统,能够查看调查问题并进行回答。考虑到调查问题较多,在线参与调查人员较多,则考虑将问卷分为几份,被调查者随机回答一份问卷。图1-1详细描述了该系统的数据流图。

组织者

查看 创建 输入问

结果 用户 题 信息库 题库 统计信息

随机号

登入

做题 做题结果

图1-1在线问卷调查系统数据流图

第 2 页

数据库系统课程设计报告

1.2数据字典 1.2.1数据项

数据项名 username password sj_id c_id q_id xibu title content choice1 choice2 choice3 choice4 choice5 answer 数据项含义说明 管理员用户名 密码 调查问卷的表的id 调查问题的id 被测试者所属的系部 调查表的名称 调查问题的具体内容 调查信息的选项1 调查信息的选项2 调查信息的选项3 调查信息的选项4 调查信息的选项5 调查者的答案 数据类型 长度 是否允许为空 varchar varchar int int char varchar varchar varchar varchar varchar varchar varchar varchar 10 50 6 11 11 4 20 200 50 50 50 50 50 50 Not null null Not null Not null Not null null null null null null null null null Not null 被测试者登录的随机号 char 1.2.2数据结构 数据结构名 含义说明 组成 admin 组织者信息 username ,password question 题目 q_id,title,choice1,choice2...choice5 infor 问卷 c_id,title user 被调查者信息 sj_id,xibu 1.2.3数据流 数据流名 含义说明 数据流来源 数据流去向 随机号登入 用随机号登入 被调查者 做题 1.2.4数据存储 数据存储名 输入数据流 组成 统计信息 被调查者所完成问题答案 题号、被调查者编号、答案 题库 所有待调查问题 题目题号、内容、选项 信息库 用户信息 被调查者编号,系别 1.2.5数据处理 数据处理名 输入 输出 处理 输入修改问题 组织者 题库 输入修改所需被调查问题 查看结果 组织者 统计信息 查看调查问题结果 创建用户 组织者 信息库 创建随机号,录入被调查者信息 做题 被调查者 问卷 回答问卷 第 3 页

数据库系统课程设计报告

2、概念结构设计

根据在线问卷调查系统的基本关系,分别找出实体:被调查者,问卷,题目,并且确定他们之间的联系以及他们各自的属性。建出如图2-1所示的E-R图。

选择3 选择2 选项1 选择4 选项

内容 选项5 问卷组成 n 题目 n 问卷 序号 问 卷 标题 m m 答案 做题 回答 结果 n m 被调 查者 编号 系别 图2-1E-R图

第 4 页

数据库系统课程设计报告

3、逻辑结构设计

3.1将上面的E-R图转换为相应的关系模型 被调查者信息(编号,系部) 主码:编号

题目(题号,内容,选项1,选项2,选项3,选项4,选项5) 主码:题号

问卷(问卷序号,标题) 主码:问卷序号

问卷组成(问卷序号,题号) 主码:问卷序号+题号 外码:问卷序号,题号

做题(被调查者编号,问卷序号) 主码:被调查者编号+问卷序号 外码:被调查者编号,问卷序号

回答结果(题号,答案,被调查者编号) 主码:题号+答案+被调查者编号 外码:题号,被调查者编号 3.2对数据模型进行优化

根据题目要求判断出被调查者信息表为BCNF,问卷表为BCNF,题目表为BCNF,问卷组成表为BCNF,做题表为BCNF,回答结果表为BCNF。

第 5 页

数据库系统课程设计报告

4、物理结构设计

根据本系统的要求,该在线问卷调查系统需要建立多个查询过程。组织者与

被调查登录的系统的分开的。在查询被调查者回答结果时,组织者需要输入查询的内容,所以要建立变量将值放入变量中然后建立存储过程进行查询。被调查者登陆系统的时候,被调查者要输入登入编号,并进行验证。组织者登入时也需输入信息,登陆后可以进行查询所有调查信息。

5、系统的功能及界面设计

5.1根据题目的要求,设计前台和后台的功能模式图如图5-1和5-2

前台

登录和验证 做问卷 图5-1前台的功能图

后台 添 添加加题问目 卷

登录功能 统计参评率 查询信息 图5-2后台的功能图

第 6 页

数据库系统课程设计报告

6、数据库实施及应用程序编制

用MYSQL建立数据库结构,此数据库我取名为:dbs1105,加载(测试/虚拟)数据,能体现对数据库的保护(安全性和完整性控制等)。实现各种查询、链接应用程序并能对数据库做简单的维护操作。 6.1数据库实施 建立数据库

create database dbs105 建立被调查者信息表

create table user ( sj_id char(6), xibu char(4),

primary key(sj_id) );

建立组织者信息表

create table admin( username varchar(10), password varchar(50), primary key(username) 建立问卷表

create table infor(

c_id int AUTO_INCREMENT , title varchar(20), primary key(c_id) ); 建立题目表

create table question( q_id int AUTO_INCREMENT, content varchar(200), choice1 varchar(50), choice2 varchar(50), choice3 varchar(50), choice4 varchar(50), choice5 varchar(50), primary key(q_id) );

建立问卷组成表

create table inforcomp( c_id int,

第 7 页

数据库系统课程设计报告

q_id varchar(10),

primary key(c_id,q_id) ); 建立做题表

create table ansinfor( c_id int,

sj_id char(6),

primary key(c_id,sj_id) );

建立回答结果表

create table answers( sj_id char(6), q_id int ,

answer varchar(50) );

6.2应用程序的编制

整个系统的代码,我采用java的servlet和jsp进行设计,将sql代码嵌入到servlet当中,因为篇幅过大,所以只将sql代码和重要部分的代码列出。

连接数据库的代码 :

public static Connection getConnection() throws Exception{ Connection conn = null; try {

Class.forName(\"com.mysql.jdbc.Driver\"); conn = DriverManager.getConnection(

\"jdbc:mysql://localhost:3306/dbs1105?\" + \"useUnicode=true&characterEncoding=utf8\", \"root\",\"root\"); } catch (Exception e) { e.printStackTrace(); throw e; }

return conn; }

第 8 页

数据库系统课程设计报告

前台

1.随机号的生成:

public static String genRandomNum(int pwd_len) {

int count = 0;

char str[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

StringBuffer pwd = new StringBuffer(\"\"); Random r = new Random();

while (count < pwd_len) { int i = Math.abs(r.nextInt(10)); if (i >= 0 && i < str.length) {

pwd.append(str[i]); count++; } } return pwd.toString();

}

2.被调查者的登录及其验证:select * from user where sj_id ='suijihao' select * from ansinfor where sj_id = 'suijihao' and c_id=5

3.问卷的显示:(1)select title from infor where c_id = 5 (2)select * from question where q_id in

(select q_id from inforcomp where cid = 5);

4.问卷的提交:insert into answer (sj_id,q_id,answer)values(?,?,?);

后台

1.组织者的登录:select username, password from admin

where username=? and password=?

2.题目的添加:insert into question (content,choice1,choice2,choice3, choice4,choice5) values(?,?,?,?,?,?) 3.问卷的添加:(1)insert into infor (title) values(?)

(2)insert into inforcomp (c_id,q_id) values(?,?) 4.各系参评率的统计:(1)select count(*) as num,xibu from ansinfor,

user where ansinfor.sj_id = user.sj_id and c_id='5' group by xibu

第 9 页

数据库系统课程设计报告

(2)select count(*) as sum,xibu from user group by xibu 5.统计某一题的调查情况:(1)select * from question where q_id=? (2)select * from answers where q_id=?

7、界面设计

前台

前台登录界面即被调查者的登录界面如图7-1:

图7-1 前台被调查者登录界面

后台

(1)后台组织者登录即相当于后台管理员界面如图7-2

图7-2 组织登录者界面

第 10 页

数据库系统课程设计报告

(2)添加题目的界面如图7-3

图7-3添加题目

(3)添加问卷界面如图7-4,在添加问卷之后,还有为问卷添加题目的操作。这里就省略了。

图7-4添加问卷

(4)统计各系的参评率如图7-5,要实现此功能,首先通过连接表查询,得到各系参加某个问卷调查的人数,在比上每个系所有的人数,就得到每个系的参评率,参评率的类型原本是float型的,在显示页面上的时候,我进行了截取。

第 11 页

数据库系统课程设计报告

图7-5各系的参评率

(5)查看某一题目的调查结果,实现的过程,先将该题的记录从数据库里面取出来,然后根据题目的q_id在 answers查出所有的记录,将所有的记录和原题的每个选项惊醒比较,这样能统计每个题目的选的人数。如图7-6

图7-6搜索查询

第 12 页

数据库系统课程设计报告

8、心得体会

通过这次课程设计,我独立地进行了一个完整的具有一定规模的数据库管理系统的设计和实践,是对于本学期理论知识学习的一次很好的运用和检验。不仅拓宽了自己的知识面,还在实践中巩固和加深了自己所学的理论知识,使自己的技术素质和实践能力有了进一步的提高,同时我的专业水平有了一定的进步。

在此次课程设计中,我设计的题目是在线问卷调查系统,这对我来说已经不是第一次设计这个系统。但由于我缺乏对数据库设计流程的认识,平时写程序,只注重对功能的实现,在编码的过程中如果需要添加什么功能或者字段,就会频繁的修改数据库。在一开始,对数据库没有完整的设计,以及对系统所有功能的分析,使得在后面的编码过程中产生障碍。向指导老师与同学请教后,渐渐有了设计的方向、思路和方法。从概念设计,逻辑、到物理结构,保证程序的使用价值。在具体的设计与实施中,我对数据库具体的设计步骤、思路、方法、技巧都有了进一步的了解,并感受深刻。在编码过程中,我遇到一些技术问题,比如生成随机数,在老师和同学的帮助下,以及在网上搜索,我逐步解决了这些问题,存在的问题是,调查问卷的显示,然后让被调查者回答并提交,这个界面需要用java.swing去编写,我的方案是,先写一个选择题的模型,在将其循环显示,每个选项的id是动态的,题号+选择项,比如第一题,0014,在插入数据库之前,将其截取、判断,然后插入数据库,由于时间问题,没能实现。最后,对于这样一个系统,数据库的设计是很好的,但在功能的实现上还不够全面,还存在很多缺憾,希望以后有机会,将它做成一个完善的系统。

总体而言,本次课程设计是对本学期学习过程的一次检验,是学习收获的运用实践,是学习成果的展示,是一次宝贵的实践经历,教会我在以后的项目设计中,以及用更加规范的流程和更加严谨的逻辑去设计,形成良好的设计习惯。

9、参考资料

[1] 《数据库系统概论》王珊 萨师煊 高等教育出版社 [2] 《数据库原理与应用》何玉洁 梁琦 机械工业出版社

第 13 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Top