11 系统分析11 系统分析.docx

上传人:麒*** 文档编号:93818863 上传时间:2023-07-15 格式:DOCX 页数:58 大小:34.29KB
返回 下载 相关 举报
11 系统分析11 系统分析.docx_第1页
第1页 / 共58页
11 系统分析11 系统分析.docx_第2页
第2页 / 共58页
点击查看更多>>
资源描述

《11 系统分析11 系统分析.docx》由会员分享,可在线阅读,更多相关《11 系统分析11 系统分析.docx(58页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、11 系统分析11 系统分析 11 系统分析11 系统分析 1.1 系 统 分 析 本节通过系统背景、系统模块分析和系统流程图3个方面来对系统进行分析。 1.1.1 系统背景 从国际互联网到校园网、企业局域网,各种网上投票系统随处可见。意见调查、用户信息统计、经营情况调查都可以作为投票的内容。网上投票系统凭借其方便快捷等特点,已经成为互联网资源中不可缺少的一部分。 网上投票系统是网站搜集用户需求并有效地实施市场策略的重要手段之一。通过开展问卷调查,可以迅速了解不同行业、不同区域用户的需求,客观地搜集需求信息,及时调整网站的营销策略以满足不同的需求。随着网络技术的发展,网上投票系统的作用将会越来

2、越大。 1.1.2 系统模块分析 为了更合理地设计投票系统,需要从以下3点进行分析。 1投票的形式 网上投票系统是网站搜集用户需求信息的一个途径,可以根据网站的需要设置一个或多个调查。不同的调查需要设置不同的选项,不同的调查要求,选项的形式也是不同的(单选或多选),不同时间段又会有不同的调查。既然网站要通过投票系统搜集信息,那么投票就必须有结果和对用户信息的统计。 2投票的特点 由于互联网本身的开放性,使网上投票面临种种危险,也由此提出了相应的安全控制要求。 信息保密性:投票者有保密的要求。如果用户名及投票内容被人知悉,就对用户的隐私权构成了侵害。因此在网上投票系统中一般均有匿名投票的要求。

3、投票唯一性:一个投票者,其投票次数应当只有一次。若投票者可进行多次投票,这将对调查内容的可靠性构成严重的威胁。 有了这些特殊性的要求,就需要对用户的信息和投票进行检查和处理,以保证投票的客观和有效性。针对用户信息,如果无特殊的要求(例如只允许注册会员参加),那么系统就只需要记录的IP、投票时间、用户所在区域。投票结果的显示是非常重要的,一是用户希望自己的投票能够及时反映出来;二是投票的结果也是给希望投票的用户的一个参考。 3投票系统结构 根据投票系统对形式的需求和投票系统自身的特点,需要包含以下几个模块。 投票管理模块:该模块可以添加、编辑和删除调查选项,设置调查选项为多选或单选,设置调查的时

4、间期限,设置此调查是否启用,调查结果的统计显示。 调查显示模块:该模块的功能是显示已启用、未过期的调查。 投票处理模块:该模块需要对投票进行有效性检查,并将投票结果和用户信息写入数据库。 调查结果显示模块:该模块主要是计算每个调查选项统计结果的百分比并以图表的形式显示 出来。 数据库操作的基础模块:该模块定义了连接数据库、表的查询,数据的插入、更新和删除操作。该模块作为一个通用模块将会在后面的章节用到。 1.1.3 系统流程图 根据以上分析,系统的流程如图1.1所示。在该流程中,网站管理员在投票管理里面添加调查数据,然后在调查显示模块里面显示出来。用户通过调查显示的“投票”按钮投票,数据被传递

5、到投票处理模块,处理之后转到调查结果显示页面。用户也可以通过调查显示的“查看结果”按钮直接转到调查结果显示页面。 图1.1 系统流程图 1.2 数据库建立 通过1.1节对投票系统功能的分析可知,需要存储的信息有调查信息、调查选项信息和用户信息。因此,本系统需要建立调查信息表、调查选项信息表和用户信息表。先从图1.2来分析这几个表之间的 关系。 从图1.2可以看出调查信息、调查选项信息和用户信息都是1对多的关系,并通过调查信息ID关联。构架的投票系统数据库vote(采用MySQL数据库)如表1.1表1.3所示。 图1.2 数据表关系图 表1.1 调查信息表:EM_VOTE_INFO用于存储调查内

6、容 字 段 名类型(长度)描 述主 键是否为空默认值备 注F_IDINT(10)表ID(唯一)是否自动增加F_VOTE_TITLEVARCHAR(255)调查标题否否F_VOTE_STARTINT(10)TIMESTAMP调查开始时间否是F_VOTE_ENDINT(10)TIMESTAMP调查结束时间否是F_VOTE_ITEM_TYPETINYINT调查选项类型否否11为单选(默认) 2为多选F_VOTE_IS_DISPLAYTINYINT是否启用否否11为启用(默认) 0为禁用表1.2 调查选项信息表:EE_ITEM_INFO用于存储调查的选项信息 字 段 名类型(长度)描 述主 键是否为空

7、默认值备 注F_IDINT(10)表ID(唯一)是否自动增加F_ID_VOTE_INFOINT(10)调查表ID否否与调查表关联F_ITEM_TITLEVARCHAR(50)选项标题否否F_ITEM_COUNTINT(10)统计数量否否0F_ITEM_ORDERTINYINT选项排列顺序否否01为单选(默认)表1.3 调查用户信息表:EE_VOTE_USER用于存储用户信息 字 段 名类型(长度)描 述主 键是否为空默认值备 注F_IDINT(10)表ID(唯一)是否自动增加F_ID_VOTE_INFOINT(10)调查表ID否否与调查表关联F_USER_IPINT(15)用户IP否否续表 字

8、 段 名类型(长度)描 述主 键是否为空默认值备 注F_USER_TIMEINT(10)TIMESTAMP统计时间否否F_USER_AREAVARCHAR(20)用户所在区域否否1.3 数据库操作基础模块 数据操作基础模块主要实现数据库连接以及对数据库表的一些基本操作功能。它包括配置文件和数据库操作文件。下面分别对它们做详细讲解。 1.3.1 配置文件config.inc.php 建立配置文件是系统构架需要考虑的重点。因为在一个系统里会有一些常用的参数在很多地方可以用到,如果到使用的时候才定义,那么需要修改的时候就会相当的麻烦,而且容易出错,代码的可读性也很差。在配置文件里放的主要是数据库连接

9、用的参数和一些全局变量。代码如下: ?php define(UserName, root);/数据库连接用户名 define(PassWord, root);/数据库连接密码 define(ServerName, localhost);/数据库服务器的名称 define(DBName,Languagevote);/数据库名称 define(ERRFILE,err.php);/错误处理显示文件 define(ROOT_PATH, dirname(_FILE_) . /);/定义根目录路径 define(INCLUDE_PATH, ROOT_PATH . include/);/定义包含文件目录路径

10、 ? 1.3.2 数据操作文件db.inc.php PHP是一种面向对象的编程语言。这个数据操作文件主要用于建立一个类。该类的初始化构造函数可以连接数据库和表。其他的方法包括对表的查询、数据的插入、更新、删除操作和事务处理。事务处理是用在执行多个更新或删除操作时为了保证数据完整性而使用的。把这些基本操作封装在一个模块里面对于代码的可读性、系统的扩展性和健壮性都有好处。代码如下: ?php /* 功能:数据库的基础操作类 */ class DBSQL private $CONN = ;/定义数据库连接变量 /* * 功能:初始化构造函数,连接数据库 */ public function _con

11、struct() try /捕获连接错误并显示错误文件 $conn = mysql_connect(ServerName,UserName,PassWord); catch (Exception $e) $msg = $e; include(ERRFILE); try /捕获数据库选择错误并显示错误文件 mysql_select_db(DBName,$conn); catch (Exception $e) $msg = $e; include(ERRFILE); $this-CONN = $conn; /* * 功能:数据库查询函数 * 参数:$sql SQL语句 * 返回:二维数组或fals

12、e */ public function select($sql = ) if (empty($sql) return false;/如果SQL语句为空则返回false if (empty($this-CONN) return false;/如果连接为空则返回false try/捕获数据库选择错误并显示错误文件 $results = mysql_query($sql,$this-CONN); catch (Exception $e) $msg = $e; include(ERRFILE); if (!$results) or (empty($results) /如果查询结果为空则释放结果并返回

13、false mysql_free_result($results); return false; $count = 0; $data = array(); while ($row = mysql_fetch_array($results) /把查询结果重组成一个二维数组 $data$count = $row; $count+; mysql_free_result($results); return $data; /* * 功能:数据插入函数 * 参数:$sql SQL语句 * 返回:0或新插入数据的ID */ public function insert($sql = ) if (empty(

14、$sql) return 0;/如果SQL语句为空则返回false if (empty($this-CONN) return 0;/如果连接为空则返回false try/捕获数据库选择错误并显示错误文件 $results = mysql_query($sql,$this-CONN); catch(Exception $e) $msg = $e; include(ERRFILE); if (!$results) /如果插入失败就返回0,否则返回当前插入数据ID return 0; else return mysql_insert_id($this-CONN); /* * 功能:数据更新函数 *

15、参数:$sql SQL语句 * 返回:TRUE OR FALSE */ public function update($sql = ) if(empty($sql) return false;/如果SQL语句为空则返回false if(empty($this-CONN) return false;/如果连接为空则返回false try/捕获数据库选择错误并显示错误文件 $result = mysql_query($sql,$this-CONN); catch(Exception $e) $msg = $e; include(ERRFILE); return $result; /* * 功能:数

16、据删除函数 * 参数:$sql SQL语句 * 返回:TRUE OR FALSE */ public function delete($sql = ) if(empty($sql) return false;/如果SQL语句为空则返回false if(empty($this-CONN) return false;/如果连接为空则返回false try $result = mysql_query($sql,$this-CONN); catch(Exception $e) $msg = $e; include(ERRFILE); return $result; /* * 功能:定义事务 */ pu

17、blic function begintransaction() mysql_query(SET AUTOCOMMIT=0);/设置为不自动提交,因为MySQL默认立即执行 mysql_query(BEGIN);/开始事务定义 /* * 功能:回滚 */ public function rollback() mysql_query(ROOLBACK); /* * 功能:提交执行 */ public function commit() mysql_query(COMMIT); ? 1.4 投票管理模块 投票管理模块用于实现网站管理员对投票数据的管理,可以添加、编辑、删除调查选项,还可以查看调查统

18、计的信息。该模块包括调查类文件、调查列表文件、添加调查文件、编辑调查文件、删除调查文件以及用户统计文件。下面对这几个文件分别进行讲解。 1.4.1 调查类文件vote.inc.php 该文件是一个类文件。它的功能主要是对调查信息、表1.2和表1.3的操作,除一些基本操作外,在开发的过程中还可以根据需要添加其他的操作。调查类文件作为一个包含文件被调用。代码如下: ?php require_once(INCLUDE_PATH . db.inc.php); class Vote extends DBSQL public $_name = EM_VOTE_INFO;/定义调查表名称变量 public

19、$_item = EE_ITEM_INFO;/定义调查选项表名称变量 public $_user = EE_VOTE_USER;/定义用户信息表名称变量 public $_pagesize = 10;/定义每页提取记录数 public $_type = array(1=单选,/定义选项类型 2=多选); public $_display = array(0=禁用,/定义调查启用显示 1=启用); private function _construct() parent:_construct(); /* * 功能:提取调查列表 * 返回:数组 */ public function getVote

20、List() $sql = SELECT * FROM . $this-_name; return $this-select($sql); /* * 功能:提取指定表的指定ID的记录 * 参数:$id 表ID,$name 表名称 * 返回:数组 */ public function getInfo($id,$name) $sql = SELECT * FROM . $name . WHERE F_ID = $id; $r = $this-select($sql); return $r0; /* * 功能:向指定表中插入数据 * 参数:$name 表名称,$data 数组(格式:$data字段名

21、 = 值) * 返回:插入记录ID */ public function insertData($name,$data) $field = implode(,array_keys($data);/定义SQL语句的字段部分 foreach($data as $key = $val)/组合SQL语句的值部分 $value .= . $val . ; if($key count($data) - 1)/判断是否到数组的最后一个值 $value .= ,; $sql = INSERT INTO . $name . ( . $field . ) VALUES( . $value . ); return

22、$this-insert($sql); /* * 功能:更新指定表指定ID的调查表记录 * 参数:$name 表名称,$id 表ID,$data 数组(格式:$data字段名 = 值) * 返回:TRUE OR FALSE */ public function updateData($name,$id,$data) $col = array(); foreach ($data as $key = $value) $col = $key . = . $value . ; $sql = UPDATE . $name . SET . implode(,$col) . WHERE F_ID = $id

23、; return $this-update($sql); /* * 功能:删除指定ID的调查表记录及相关表记录 * 参数:$id 调查表ID * 返回:TRUE OR FALSE */ public function delData($id) $this-begintransaction(); try $sql = DELETE FROM . $this-_item . WHERE F_ID_VOTE_INFO = . $id; $this-delete($sql);/删除调查选项里面的相关数据 $sql = DELETE FROM . $this-_user . WHERE F_ID_VOT

24、E_INFO = . $id; $this-delete($sql);/删除用户统计表里面的相关数据 $sql = DELETE FROM . $this-_name . WHERE F_ID = . $id; $this-delete($sql); catch(Exception $e) $this-rollback(); return false; $this-commit(); return true; /* * 功能:提取指定调查ID的选项 * 参数:$vote_id 调查ID * 返回:数组 */ public function getItemList($vote_id) $sql

25、= SELECT * FROM . $this-_item . WHERE F_ID_VOTE_INFO = $vote_id; return $this-select($sql); /* * 功能:删除指定ID的选项表记录 * 参数:$id 表ID * 返回:TRUE OR FALSE */ public function delItemData($id) $sql = DELETE FROM . $this-_item . WHERE F_ID = $id; return $this-delete($sql); $sql .= “ ORDER BY F_ITEM_ORDER”; /* *

26、功能:提取指定调查ID的用户统计信息 * 参数:$vote_id 调查ID,$page 当前页码 * 返回:数组 */ public function getUserList($vote_id,$page=1) $start = ($ 1) * $this-_pagesize; $sql = SELECT * FROM . $this-_user . WHERE F_ID_VOTE_INFO = $vote_id; $sql .= LIMIT $start,$this-_pagesize; return $this-select($sql); /* * 功能:提取指定调查ID用户统计记录的条数

27、 * 参数:$vote_id 调查ID * 返回:记录条数 */ public function getUserCount($vote_id) $sql = SELECT COUNT(F_ID) FROM . $this-_user . WHERE F_ID_VOTE_INFO = $vote_id; $r = $this-select($sql); return $r00; /* * 功能:删除指定ID的用户统计记录 * 参数:$id 用户统计表ID * 返回:TRUE OR FALSE */ public function delUserData($id) $sql = DELETE FR

28、OM . $this-_user . WHERE F_ID = $id; return $this-delete($sql); ? 对单个表进行查询、插入、更新和删除时的代码很相似,唯一不同的是操作表的名称。这里可以把这些对单个表的基本操作放到基础类文件db.inc.php里面。加入如下代码: /* * 功能:提取指定表的指定ID的记录 * 参数:$id 表ID,$name 表名称 * 返回:数组 */ public function getInfo($id,$name) $sql = SELECT * FROM . $name . WHERE F_ID = $id; $r = $this-s

29、elect($sql); return $r0; /* * 功能:向指定表中插入数据 * 参数:$name 表名称,$data 数组(格式:$data字段名 = 值) * 返回:插入记录ID */ public function insertData($name,$data) $field = implode(,array_keys($data);/定义SQL语句的字段部分 $i = 0; foreach($data as $key = $val)/组合SQL语句的值部分 $value .= . $val . ; if($i count($data) - 1)/判断是否到数组的最后一个值 $v

30、alue .= ,; $i+; $sql = INSERT INTO . $name . ( . $field . ) VALUES( . $value . ); return $this-insert($sql); /* * 功能:更新指定表指定ID的调查表记录 * 参数:$name 表名称,$id 表ID,$data 数组(格式:$data字段名 = 值) * 返回:TRUE OR FALSE */ public function updateData($name,$id,$data) $col = array(); foreach ($data as $key = $value) $co

31、l = $key . = . $value . ; $sql = UPDATE . $name . SET . implode(,$col) . WHERE F_ID = $id; return $this-update($sql); /* * 功能:删除指定ID的表记录 * 参数:$id表ID,$name 表名称 * 返回:TRUE OR FALSE */ public function delData($id,$name) $sql = DELETE FROM . $name . WHERE F_ID = $id; return $this-delete($sql); 1.4.2 调查列表

32、文件VoteList.php 该文件的功能是显示调查信息表1.1中的数据列表。该文件包含配置文件调查类文件。提取列表的数据是通过调查类文件里面的提取列表方法来实现的。首先声明一个调查类Vote的对象,通过这个对象来调用类的提取列表方法getVoteList()。通过这个页面连接到添加、编辑、选项管理、用户统计及删除操作页面。界面如图1.3所示。 图1.3 调查列表 代码如下: ?php require_once(config.inc.php); require_once(INCLUDE_PATH . vote.inc.php); $vote = new Vote();/声明一个对象$vote

33、$list = $vote-getVoteList(); $time = time(); ? form name=form1 action= method=post table width=98% border=0 align=center cellspacing=0 class=l_table_1 id=table_1 tr class=title td width=5%序号/td td width=24%调查标题/td td width=14%开始时间/td td width=12%结束时间/td td width=12%选项类型/td td width=6%是否过期/td td widt

34、h=6%是否启用/td td width=21%操作/td /tr ?php if($list)/如果有记录则循环显示 foreach($list as $key = $value) ? tr class=l_field td align=left?php echo ($key + 1)?/td td align=left?php echo $valueF_VOTE_TITLE?/td td align=left?php echo date(Y-m-d,$valueF_VOTE_START)?/td td align=left?php echo date(Y-m-d,$valueF_VOTE_

35、END)?/td td align=left?php echo $vote-_type$valueF_VOTE_ITEM_TYPE?/td td align=left?php if($valueF_VOTE_END $time) echo 未过期;else echo 已过期;?/td td align=left?php echo $vote-_display$valueF_VOTE_IS_DISPLAY?/td td align=lefta href=EditVote.php?id=?php echo $valueF_ID?编辑/a a href= ItemList.php?id=?php e

36、cho $valueF_ID?选项管理/a a href=UserList.php?id=?php echo $valueF_ID?用户统计信息/a a href=DelVote.php?id=?php echo $valueF_ID?删除/a /td /tr ?php ? tr td colspan=13 align=centerinput type=submit name=Submit3 value= 添 加 调 查 onclick= javascript:window.location=AddVote.php /td /tr /table /form 1.4.3 添加调查文件AddVot

37、e.php 该文件的功能是添加新调查,将数据写入表1.1中。该文件由图1.3中调查列表页面的“添加调查”按钮连接过来。用户填写完表单后单击“提交”按钮进行处理。表单提交给自身,通过判断是否为提交操作进行数据处理。数据的处理通过调查类Vote的对象调用父类DBSQL的insertData()方法实现的,界面如图1.4所示。 图1.4 添加调查 1主程序部分 该部分代码用于实现提交数据的处理和操作界面的显示。代码如下: ?php require_once(./config.inc.php); require_once(INCLUDE_PATH . vote.inc.php); $vote = new Vote(); list($year,$month,$day) = explode(-,date(Y-m-d); if($_SERVERREQUEST_METHOD = POST) /判断是否是提交请求,若是则添加数据 $dataF_VOTE_TITLE = $_POSTtitle; $dataF_VOTE_START = mktime(0,0,0,$_POSTstart_m,$_POSTstart_d,$_POSTstart_y); $dataF_VOTE_END = mktime(0,0,0,$_POSTend_m,$_POSTend_d,$_POSTend_y); $da

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 考试试题 > 试题库答案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com