zoukankan      html  css  js  c++  java
  • 软件工程--团队作业三

    一、编码规范

    A.HTML编码规范
    1.缩进

    缩进4个空格,不使用tab或者混合tab和空格键。

    2.大小写问题

    所有的代码都应是小写的,包括元素名称、属性,属性值(除非text或CDATA的内容)、选择器、css属性、属性值(字符串除外),如:
    1) bgColor 改为 bgcolor
    2) http-equiv="Content-Type" 改为http-equiv="content-type"
    但是<!DOCTYPE 要按规定大写。

    3.标签

    1)html编码中原先就有关闭标记的,如:
    <html><body><div><table><tr><td></td></tr></table></div></body></html>,则必须按规定关闭。

    2)原先属于独立的不带关闭标记的标签,则需要在结束前的“>”前加“/”,如<meta><img><br><link>等,要写成<meta xxxxxxxxxxxxx /><img xxxxxxxxxxx /><br />,<link xxxxxxxxxxx />

    3)<style> 标签要写到head内,不能写到body中。<script></script>标签要写在head 或 body 内,如果不是必须马上加载的,建议写在</body>之前。

    4.注释

    1)注释放置的位置:对于比较短的注释(如变量的解释),不用另起一行注释,对于比较长的注释,要另起一行注释。

    2)对于每个变量名,每个函数,都要注释,对于一些较复杂的循环,要注释该循环是为了做什么。

    3)一个工程应有一个统一的头文件注释,以说明整个工程的信息、创建日期、版本等等。

    4)不要在注释内容中使用中横线 –。注释方法:<!--注释的内容-->

    5.属性

    各属性的值必须加英文双引号,如:
    1)<table width=800 border=1> 必须写为<table width=” 800” border=” 1”>

    1. <link href=css.css type=text/css rel=stylesheet />写为<link href=” css.css” type=” text/css” rel=” stylesheet” />

    3)给所有的属性赋一个值
    这一点,特别需要注意的是,对于type=checkbox的input标签,其checked属性,需要按如下方式书写:
    <input type=”checkbox” id=”mck” value=”1″ checked=”1″ />

    6项目命名规范

    用项目对应的英文单词命名。

    B.PHP编码规范
    1.文件格式

    1) 对于只含有 php 代码的文件,我们将在文件结尾处忽略掉 "?>" 。这是为了防止多余的空格或者其它字符影响到代码。

    2)缩进应该能够反映出代码的逻辑结果,尽量使用四个空格,禁止使用制表符TAB。

    3) 变量赋值必须保持相等间距和排列。

    4) 每行代码长度应控制在80个字符以内,最长不超过120个字符。

    5)每行结尾不允许有多余的空格。

    2.命名约定

    1)类文件都是以“.class.php“为后缀,且类文件名只允许字母,使用驼峰法命名,并且首字母大写,例如:DbMysql.class.php 。

    2) 配置和函数等其他类库文件之外的文件一般是分别以“.inc.php“和”.php“为后缀,且文件名命名使用小写字母和下划线的方式,多个单词之间以下 划线分隔,例如config.inc.php , common.php,install_function.php 。

    3) 类名和文件名一致,且类名只允许字母,例如 UserAction类的文件命名是UserAction.class.php, InfoModel类的文件名是InfoModel.class.php 。

    4) 控制器类以Action为后缀,例如 UserAction、InfoAction ,模型类以Model为后缀,例如UserModel、InfoModel ,其他类也分别以相应分类为后缀,例如Service 、Widget。

    5) 函数的命名使用小写字母和下划线的方式,且越详细越好,应该能够描述清楚该函数的功能,例如 get_client_ip 。

    6)类中的常量 constant 和全局范围内常量define,只能由大写字母和下划线组成,各个单词之间以下划线分割。

    7)局部变量的字母都使用小写,使用“_”作为每个词的分界。如:$php_var;

    8)类属性,使用骆驼命名法命名,与函数、方法的参数命名方法相同;

    9) 全局变量,字母都使用大写,使用“_”作为每个词的分界,公共库中无特殊需求不使用全局变量。

    10)命名必须具有描述性,但务求简练。不要在变量名中使用长句。通常在变量名中使用一对词语(使用下划线间隔)对变量进行简要描述这种方式更好。

    C.编码风格

    1. php 代码必须以完整的形式来定界(<?php … ?>),即不要使用php 短标签(<? … ?>),且保证在关闭标签后不要有任何空格。

    2. 当一个字符串是纯文本组成的时候(即不含有变量),则必须总是以单引号(')作为定界符。例如:
      $a = 'Example String';

    3. 当用 array 类型符号来构造数组的时候,必须在每个逗号之后加上一个空格来增强可读性。例如:$sampleArray = array(1, 2, 3, 'Think', 'SNS');

    4. 当使用 array 类型符声明关联数组的时候,我们鼓励把它分成多个行,只是我们必须同时保证每行的键与值的对齐,以保持美观。例如:
      $sampleArray = array( 'firstKey' => 'firstValue', 'secondKey' => 'secondValue' );

    5. 大括号的开始必须在类名的下一行顶格。例如:
      lass Think { // ... }

    6. 每个 php 文件只允许声明一个类。在类文件里面写其它代码是允许的,但并不鼓励这样做。假如真要附加代码的话,必须用空行来分隔。

    7. 不允许用 var 符号来声明变量,类成员变量必须以 private,protected 和 public 来声明。其次,把类成员声明为 public 而直接引用虽然是允许的,但通常更好的方法是使用 get 和 set 方法来访问类成员。

    8. 静态 static 方法应该声明其作用域,且不应该再被声明为 private 私有,而应该为 protected 或者public ,如果只是不想被子类继承,则应该用 final 声明它们。

    9. 函数或方法的初始大括号应该在函数声明的下一行顶格。例如:
      function get_client_ip() { // … }

    10. 在函数或方法名与参数括号之间不允许出现多余的空格。例如:
      function get_client_ip(){}

    11. 函数和方法参数必须用逗号+空格来分隔。

    12. 基于"if", "else"和"else if"的条件控制里,我们必须用空格间隔开语句和括号,大括号的开始 "{" 必须与条件控制语句位于同一行,结束 "}" 必须总是独占一行且顶格,控制流程内容必须用四个空格进行缩进,且不使用"elseif"。
      if ($condition) { // ... } else if ($_condition) { // ... } else { // ... }

    13. 在条件控制语句的条件括号内,必须用空格将操作符与其它元素隔开。如果遇到很长的逻辑判断,则鼓励用内嵌括号来分割各个逻辑。例如:
      if (($a != 2) and ($b == 1)) { $a = $b; }

    二、数据库设计

    1.学生表及各字段作用

    Student_id:学生的学号,是该表的主键,是非负整型数,长度为10位

    Student_name:学生的姓名,类型是长度为20的字符型变量

    Student_password:学生生经过加密后的密文,之所以用定长为41的字符,是因经过函数加密后的密码,长度为40位,防止数据溢出

    Student_sex:学生的性别,类型是长度为10的字符型变量

    Student_school:学生的学校,类型是长度为40的字符型变量

    Student_major:学生的专业,类型是长度为40的字符型变量

    Student_class:学生的班级,类型是长度为20的字符型变量

    2.教师表及各字段作用

    Teacher_id:教师的工号,是该表的主键,是非负整型数,长度为10位

    Teacher_name:教师的姓名,类型是长度为20的字符型变量

    Teacher_password:教师生经过加密后的密文,之所以用定长为41的字符,是因经过函数加密后的密码,长度为40位,防止数据溢出

    Teacher_course:教师所教的科目,类型是长度为40的字符型变量

    Teacher_school:教师的学校,类型是长度为40的字符型变量

    Teacher_major:教师的专业,类型是长度为40的字符型变量

    3.管理员表及各字段作用

    Admin_id:管理员的ID号,是该表的主键,是非负整型数,长度为10位

    Admin_name:管理员的姓名,类型是长度为20的字符型变量

    Admin_password:管理员经过加密后的密文,之所以用定长为41的的字符,是因为经过函数加密后的密码,长度为40位,防止数据溢出。

    4.试题表及各字段作用

    Q_id:一每道试题的唯一标记

    Q_content:该题目的内容,长度为150

    Opt1, Opt2, Opt3, Opt4分别为该题目的选项内容

    Q_answer:该题目的正确答案,类型为整型,当题目为判断题时,用1和2表示对与错;当题目类型为单选题时,用1,2,4,8分别代表A,B,C,D选项当题目类型为多选题时,用1,2,4,8或这四个数字之间的两两组合的值(3,5,6,9,10,12),或者三三组合的值(7,11,13,14)表示答案。之所以用1,2,4,8作为基数,是因为他们的值相加后都无重复值出现,而且做循环时也方便,可以分别写20,21,22,23

    Subject:用于表示该题目所属的科目

    Chapter:用于表示该题目所属章节

    Difficulty:用于表示该题目的难度系数。

    5. 考试表及各字段作用

    E_id:用于表示考试的ID号,是考试表的唯一标式符

    E_name:用于表示考试的名称

    E_nums:用于记录该考试所包含的试题总数

    E_score:用于记录该考试的卷面总分

    E_open_close:该字段是考试开放与否的标志位,默认为0,0为开放,1为关闭该考试,只有被开放的考试,才可以供学生参加考试,被关闭的考试,在学生选择考试时,将不会出现在选择考试的考试列表当中

    Subject:用于记录该考试所代表的科目。

    6.exam_paper表及各字段作用

    E_id:与exam表的的E_id相对应,用于表示该试卷所对应的考试

    Q_id:与question表的Q_id相对应,表示该试卷上的题目对应试题库的哪一题

    E_id:与Q_id共同作为exam_paper表的共同主键

    7. answer表及各字段作用

    E_id字段:用于记录考试的ID号,与exam表的ID号相对应

    Q_id字段:用于记录试题对应的试题库中的ID号,与qusetion表的ID号相对应

    Student_id字段:用于记录学生的学号,与student表的学号相对应

    Eq_id字段:用于记录该题目在学生做试卷时的顺序

    Student_answer字段:用于记录学生的答案

    本表用E_id,Q_id以及Student_id三个字段作为该表的主键。

    8. score表及各字段作用

    Student_id:用于表示学生的学号,与student表的Student_id相对应

    E_id:用于表示考试的编号,与exam表的E_id相对应

    Student_score:用于表示在某考试上获得的分数

    Rank:用于表示考试所得分数对应的分数等级,等级分为A+,A,B+,B等等。

    该表用E_id和Student_id共同作为主键

    截图如下:

    三、ER图

    截图如下:

    四、主要功能流程描述

    1.系统的整体框架

    2.主要功能流程图

    • 整体框架

    • 教师模块

    • 学生模块

    • 管理员模块

    五、人员分工

    六、得分(总分40分)

    张洁:10分
    陈玉红:10分
    袁湘华 :10分
    杨美玉 :10分

  • 相关阅读:
    【Azure Redis 缓存】Azure Redis 功能性讨论二
    【Azure Developer】如何用Microsoft Graph API管理AAD Application里面的Permissions
    【Azure 环境】通过Python SDK收集所有订阅简略信息,例如订阅id 名称, 资源组及组内资源信息等,如何给Python应用赋予相应的权限才能获取到信息呢?
    【Azure 应用服务】App Service与APIM同时集成到同一个虚拟网络后,如何通过内网访问内部VNET的APIM呢?
    【Azure 云服务】如何从Azure Cloud Service中获取项目的部署文件
    【Azure Redis 缓存】Azure Redis 异常
    【Azure 微服务】基于已经存在的虚拟网络(VNET)及子网创建新的Service Fabric并且为所有节点配置自定义DNS服务
    【Azure Redis 缓存】遇见Azure Redis不能创建成功的问题:至少一个资源部署操作失败,因为 Microsoft.Cache 资源提供程序未注册。
    【Azure Redis 缓存】如何得知Azure Redis服务有更新行为?
    【Azure API 管理】在 Azure API 管理中使用 OAuth 2.0 授权和 Azure AD 保护 Web API 后端,在请求中携带Token访问后报401的错误
  • 原文地址:https://www.cnblogs.com/Aveg123/p/6925064.html
Copyright © 2011-2022 走看看