软件工程--团队作业三

一、编码规范

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分

原文地址:https://www.cnblogs.com/Aveg123/p/6925064.html