loading请求处理中...

科技行业企业网站设计

2021-12-02 18:49:23 阅读 11186次 标签: 企业网站设计 作者: 陈先生12121

科技行业企业网站设计 数据库设计

1.数据库概要说明 
采用MySQL数据库,用来存储图书相关信息、新闻相关信息、管理员信息等,这里将数据库命名为db_project,其中包含了3张数据表,用于存储不同的信息。 

2.数据库概念设计 
通过系统功能结构的确定,规划出系统中使用的数据库实体对象及实体E-R图。企业网站系统的主要功能之一是PHP业界的新闻发布,因此需要规划新闻实体,包括新闻编号、新闻标题、新闻内容、发布时间和更新时间等属性。新闻实体E-R图如下: 

图书开发相关信息同样要保存到数据库中。根据该需求规划图书实体,包括图书编号、图书类别、简述内容和新书名称等属性。图书实体E-R图如下: 

管理员信息,包括管理员的用户名和密码属性 

3.数据库逻辑设计 
根据设计好的E-R图在数据库中创建数据表

  • think_news (新闻信息表) 

  • think_book (图书信息表) 

  • think_admin (管理员信息表)

  后台管理模块设计

1.Framework框架技术 
后台模块的设计理念是,将所有的操作都放置在同一页面中,么米有不同页面的跳转功能。然后根据不同数据层面之间,用控制器来控制哪些数据层面应该显示,哪些数据层面应该隐藏。这里需要一个Framework,即框架的理念。所有的功能体现,都交由控制器中Framework控制实现,然后指定单一的其他控制器类进行逻辑处理。也就是说,管理员看见的后台界面都是由Framework自动调配的。Framework框架关键代码如下:

public function framework(){
        // 如果当前的SESSION值与登录界面传递的数据相同
        if(session('PHP') == 'phper_ym@163.com'){
            $string = I('id');                      // 接收页面传递的参数
            switch($string){                               // 分支语句
                case "addNews":
                    $this->assign('language_1',"block");        // 指定显示的逻辑层
                    $this->display('adminIndex');   // 指向页面
                    break;
                case "updateNews":
                    $this->assign('language_2',"block");    //  指定显示的逻辑层
                    $this->assign('language_1',"none");     // 指定隐藏的逻辑层
                    $this->display('adminIndex');           // 指向页面
                    break;
                case 'viewUpdateNews':
                    $new = D("News");               // 实例化模型
                    $data = $new->s elect();         // 执行查询

                    $count = $new->count();         // 查询满足要求的总记录数
                    // 实例化分页类,传入总记录数和每页显示的记录数
                    $Page = new ThinkPage($count,3);
                    $show = $Page->show();          // 分页显示输出

                    $list = $new->order('id')->limit($Page->firstRow.','.$Page->listRows)->s elect();
                    $this->assign('pc',$list);    // 赋值数据集

                    $this->assign('page',$show);    // 赋值分页输出
                    $this->assign('language_3',"block");
                    $this->assign('language_1',"none");
                    $this->display('adminIndex');               // 输出模板   
                    break;
                    //  省略部分代码
            }
        }else{
            $this->assign('hint','您没有操作权限');
            $this->assign('url','__URL__/admin');
            $this->display('information');
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

2.更改密码和项目所需数据表的操作 
更改密码关键代码如下:

// 密码更改操作
    public function change(){
        // 判断是否通过SESSION验证
        if(session('PHP') == "phper_ym@163.com"){

            // 接收表单传递的数据
            $string = I('pwd');
            $stringg = I('pwdd');
            // 判断两次输入的密码是否相同
            if($string == $stringg){
                $pc = M('admin');                       // 实例化基础模型类
                define(PHP,'_php');                     // 定义常量
                $pc = $pc->where('id');                 // 取得数据表中数据
                $data['pwd'] = md5($string."_php");     //  MD5加密
                $pc = $pc->where('id=1')->data($data)->save();  // 执行更新操作
                $this->assign('hint','更改密码成功');
                $this->assign('url','__URL__/adminIndex');
                $this->assign('language_1',"block");
                $this->display('informaton'); 
            }else{
                $this->assign('hint','两次密码输入不一致');
                $this->assign('url','__URL__/adminIndex');
                $this->assign('language_1',"block");
                $this->display('information');
            }

        }else{
            $this->assign('hint','您没有操作权限');
            $this->assign('url','__URL__/admin');
            $this->display('information');
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

在Framework中完成项目所需数据表,关键代码如下:

 // 项目所需数据表
                case "back":
                    $pc = M('project');     // 实例化模型
                    $pc = $pc->query('show tables');        // 执行SQL查询



                    $this->assign("type","block");          // 设置模块显示
                    $this->assign('list',$pc);              // 向模板中传递数据
                    // $this->display('adminIndex');           // 模板指向
                break; 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3.左侧功能菜单区 
利用CSS+DIV技术结合HTML标签编写功能菜单布局和样式修订,将每个列表内容都用

模块包含其中,并利用display属性设置所有标题的子类模块隐藏。然后对链接标签的地址进行设置,并实现指向控制器中的某个方法。页面布局关键代码如下:

<div class="left">
      <div class="leftLi">增加新闻div>
      <div class="liDiv">
        <ul class="liDivUl">
            <li>
              <a href="__URL__/framework/id/addNews">单条增加新闻a>
            li>
        ul>
      div>
      <div class="leftLi">更新新闻div>
      <div class="liDiv">
        <ul class="liDivUl">
            <li><a href="__URL__/framework/id/updateNews">操作代码式更新a>li>
            <li><a class="aHref" href="__URL__/framework/id/viewUpdateNews">操作界面式更新a>li>
        ul>
      div>
      <div class="leftLi">增加新书div>
      <div class="liDiv">
          <ul class="liDivUl">
              <li><a href="__URL__/framework/id/addBook">单条增加新书a>li>
          ul>
      div>
      <div class="leftLi">更新新书div>
      <div class="liDiv">
          <ul class="liDivUl">
            <li>
              <a href="__URL__/framework/id/updateNewbook">操作代码式更新a>
            li>
            <li>
              <a href="__URL__/framework/id/viewUpdateNewbook">
                操作界面式更新
              a>
            li>
          ul>
      div>
   >
          $(function(){
            // 除指定区块的第一个外都设置为隐藏属性
            $(".liDiv:gt(0)").hide();

            // 标题切换单击
            $(".leftLi").toggle(function(){
              $(".liDiv").hide();
              // 指定模块的下一级模块淡入效果显示
              $(this).next('.liDiv').fadeIn("fast");
            },function(){
              $(this).next('.liDiv').hide();    // 当前对象的下个li隐藏
              $('.liDiv:not(:first)').hide();   // 不是第一个的标签隐藏
              $('.liDiv:first').fadeIn("fast"); // 第一个标签淡入显示
            });
          });
      >
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

4.右侧操作内容显示区 
(1)当管理员单击某个功能链接时,右侧的操作内容显示区会自动切换到对应的操作界面中来。笔者以“操作界面式更新”的功能选项为例。当功能按钮被单击时,程序首先将指令传递到控制器中的framework方法中来。framework方法接收参数,利用switch语句比对case值,比对成功后,控制器再次将数据传递到view视图层,即模板文件。传递的最主要数据是指定将页面中定义的display属性值$language_3赋值为block,设置其显示,进而具有操作权限。此部分内容的核心代码如下:

<div class="right_3" style="display:{$language_3}">div>
  • 1

(2)当页面显示成功后就可以进行对应的修改和删除操作了。执行这两个步骤的操作主要是在ThinkPHP的控制器中完成的。View层的代码如下:

adminIndex.html关键代码如下:

<table align="center">
        
        <volist name="pc" id="pList">
            <tr>
                <td style="border:1px solid white;" width="50px">
                    {$pList.id}
                td>
                <td style="border:1px solid white" width="500px">
                    {$pList.title|msubstr=0,30}...
                td>
                <td width="100px" style="border:1px solid white">
                    <a href="__URL__/update/newIdUpdate/{$pList.id}">编辑a>|
                    <a href="__URL__/delete/newIdDelet/{$pList.id}">删除a>
                td>
            tr>
        volist>
        <tr>
            <td colspan="3">{$page}td>
        tr>
    table>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

(3)当编辑按钮被单击时,程序会将指定的数据传递到控制器层的update方法中,并同时传递一条数据主键ID的值。 
update方法关键代码如下:

 public function update(){
        $string = I('newIdUpdate');         // 接收传递进来的ID的值
        $pc = M('news');                    // 实例化基础模型类
        $pc = $pc->where('id='.$string)->s elect();      // 执行指定id的查询操作
        print_r($pc);

        // 为模板变量赋值
        $this->assign('head',$pc[0]['id']);
        $this->assign('title',$pc[0]['title']);
        $this->assign('head',$string);
        $this->assign('content',$pc[0]['content']);
        $this->assign('time',$pc[0]['date_time']);

        // 设置模块language_4的display属性值为block
        $this->assign('language_4','block');
        $this->assign('language_3','none');
        $this->assign('language_1','none');
        $this->display('adminIndex');       // 模板指向adminIndex页面
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

(4)由于控制器完成这部分的操作后,隐藏了原有控制页面,显示了新的操作页面。也就是说,控制器此步骤的操作是将控制权重重新赋予到新模块页面,此模块为

标记中class属性值为”right_4”的模块。此模块的view层代码如下:

 
       <div class="right_4" style="display:'{$language_4}'">
           <form action="__URL__/adminUpdate" method="post">
                <input type="hidden" name="head" value="{$head}" />
                新闻标题:<input class="inputOne" type="text" name="title" value="{$title}" /><br />
                新闻内容:<textarea name="textarea" class="inputTwo">{$content}textarea><br />
                发布时间:<input type="text" class="inputOne" name="time" value="{$time}" />
                <input type="submit" value="更新" />
            form>
       div>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

(5)当更新按钮被单击之后,程序又再次指向控制器的adminUpdate方法,从而执行更新操作。其控制器关键代码如下:

public function adminUpdate(){
        // 获取接收的文本框信息
        $data['title'] = I('title');
        $data['content'] = I('content');
        $data['date_time'] = I('time');
        $id = I('head');
        $data['update_time'] = date('Y-m-d');
        $pc = M('news');        // 实例化基础模型类
        $pc = $pc->where('id='.$id)->data($data)->save();       // 执行更新操作
        if($pc != false){
            $this->assign('hint','更新成功');
            $this->assign('url','__URL__/adminIndex');
            $this->display('information');
        }else{
            $this->assign('hint','更新失败');
            $this->assign('url','__URL__/adminIndex');
            $this->display('information');
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

总结: 
运用软件工程的设计思想中最流行的MVC设计理念,通过一个业界比较有名的国产框架编写而成。通过对这个项目的学习,可以了解到PHP网站程序的开发流程,并且了解ThinkPHP框架三层开发的具体事宜。

设计公司推荐

成为一品威客服务商,百万订单等您来有奖注册中

留言( 展开评论

快速发任务

价格是多少?怎样找到合适的人才?

官方顾问免费为您解答