软件工程--团队作业三
一、编码规范
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”>
<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.编码风格
-
php 代码必须以完整的形式来定界
(<?php … ?>)
,即不要使用php 短标签(<? … ?>)
,且保证在关闭标签后不要有任何空格。 -
当一个字符串是纯文本组成的时候(即不含有变量),则必须总是以单引号(')作为定界符。例如:
$a = 'Example String'; -
当用 array 类型符号来构造数组的时候,必须在每个逗号之后加上一个空格来增强可读性。例如:$sampleArray = array(1, 2, 3, 'Think', 'SNS');
-
当使用 array 类型符声明关联数组的时候,我们鼓励把它分成多个行,只是我们必须同时保证每行的键与值的对齐,以保持美观。例如:
$sampleArray = array( 'firstKey' => 'firstValue', 'secondKey' => 'secondValue' );
-
大括号的开始必须在类名的下一行顶格。例如:
lass Think { // ... }
-
每个 php 文件只允许声明一个类。在类文件里面写其它代码是允许的,但并不鼓励这样做。假如真要附加代码的话,必须用空行来分隔。
-
不允许用 var 符号来声明变量,类成员变量必须以 private,protected 和 public 来声明。其次,把类成员声明为 public 而直接引用虽然是允许的,但通常更好的方法是使用 get 和 set 方法来访问类成员。
-
静态 static 方法应该声明其作用域,且不应该再被声明为 private 私有,而应该为 protected 或者public ,如果只是不想被子类继承,则应该用 final 声明它们。
-
函数或方法的初始大括号应该在函数声明的下一行顶格。例如:
function get_client_ip() { // … }
-
在函数或方法名与参数括号之间不允许出现多余的空格。例如:
function get_client_ip(){} -
函数和方法参数必须用逗号+空格来分隔。
-
基于"if", "else"和"else if"的条件控制里,我们必须用空格间隔开语句和括号,大括号的开始 "{" 必须与条件控制语句位于同一行,结束 "}" 必须总是独占一行且顶格,控制流程内容必须用四个空格进行缩进,且不使用"elseif"。
if ($condition) { // ... } else if ($_condition) { // ... } else { // ... }
-
在条件控制语句的条件括号内,必须用空格将操作符与其它元素隔开。如果遇到很长的逻辑判断,则鼓励用内嵌括号来分割各个逻辑。例如:
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分