目 录
摘 要 1
Abstract 2
1 系统概述 5
1.1 毕业设计目的 5
1.2 开发背景 5
1.3 开发环境 6
2 目的与任务 7
2.1 目的 7
2.2 任务 7
3 系统功能结构设计 9
3.1 登录功能 9
3.2 首页 9
3.3 社团信息功能 9
3.4 社团成员功能 9
3.5 社团活动功能 9
3.6 个人信息功能 10
3.7 职位信息功能 10
3.8 注销功能 10
4 系统数据库设计 11
4.1 E-R模型 11
4.2 数据库表结构 11
5 系统实现 14
5.1 index 14
5.1 Framework 14
5.2 View 14
5.3 Controller 18
5.4 Model 18
6系统测试与性能分析 19
6.1 测试计划 19
6.2 系统测试 19
6.2.1基础测试 19
6.2.2 社团管理测试 20
总 结 22
参考文献 24
致 谢 25
3 系统功能结构设计
3.1 登录功能
用户通过用户名和密码进入系统并获得相应的权限。系统采用自动注册功能,用户进入了某社团(该社团管理员将该用户信息录入系统)后,即可用学号登录,密码默认为学号(若有用户的身份证信息更好,可以设身份证后6位为默认密码),相应的,若用户信息未被录入系统,则该用户无法登录。现实中有可能出现用户参加了两个社团,在一个社团身份是主席,而另一个社团身份是会员,因此用户权限会根据操作的社团发生变化。
3.2 首页
首页仅显示所有社团的大致信息。
3.3 社团信息功能
社团信息功能包括对社团和部门的增加删除修改和查询。在社团信息页面可选择社团,除教师用户外,其他用户均只能选择自己参加的社团。显示所选择社团以及其所有部门的所有详细信息,具有权限的即可对相应信息进行增加删除修改。
3.4 社团成员功能
社团成员功能包括对成员的增加删除修改和查询。在社团成员页面选择社团和部门,除教师用户外,其他用户均只能选择自己参加的社团,而除教师、主席、副主席外,其他用户均只能选择自己参加的部门。显示所选择部门的所有成员的详细信息,具有权限即可对相应信息进行增加删除修改。
3.5 社团活动功能
社团活动功能包括对活动的增加删除修改和查询。在社团活动页面可选择社团,除教师用户外,其他用户均只能选择自己参加的社团。显示所选择社团的所有活动的大致信息,教师、主席、副主席、部长、副部长均可查看活动详细信息和添加活动。并在详细信息页面可对该活动进行修改和删除操作。
3.6 个人信息功能
个人信息功能包括对个人信息的修改以及修改密码操作。在个人信息页面可显示所参加的社团部门的大致信息,以及在社团内的个人信息。考虑到若一个人参加了多个社团多个部门,那么在录入信息的时候可能会有冲突,因此设置每个部门录入的信息互不干扰,即成员表中,以(用户学号,部门id)为主键。因此在个人信息页面中,显示了所有参加的部门中的个人信息。
3.7 职位信息功能
职位信息仅教师用户进入,用于管理各职位的权限等级。权限值越低等级越高:教师-0、主席-2、副主席-4、部长-6、副部长-8、会员-10、干事-10。目的是为了方便日后添加新的职位。
3.8 注销功能
注销当前账号以登录其他账号。
<?php
/**
* User: Leammin
* Date: 2016/12/11
*/
$p = !empty($_GET['p']) ? $_GET['p'] : "front";//确定使用哪个平台,默认front
$c = !empty($_GET['c']) ? $_GET['c'] : "Login";//确定使用哪个控制器,默认Login
$a = !empty($_GET['a']) ? $_GET['a'] : "login";
define("PLAT", $p);
define("DS", DIRECTORY_SEPARATOR);//DIRECTORY_SEPARA TOR表示“目录分隔符”,
define("ROOT", __DIR__ . DS); //index.php目录:
define("APP", ROOT . 'Application' . DS); //Application的完整路径
define("FRAMEWORK", ROOT . 'Framework' . DS); //框架基础类所在路径
define("PLAT_PATH", APP . PLAT . DS); //当前平台所在目录
define("CTRL_PATH", PLAT_PATH . "Controller" . DS);//当前控制器所在目录
define("MODEL_PATH", PLAT_PATH . "Model" . DS);//当前模型所在目录
define("VIEW_PATH", PLAT_PATH . "View" . DS);//当前视图所在目录
/*
echo PLAT."<br />";
echo DS."<br />";
echo ROOT."<br />";
echo APP."<br />";
echo FRAMEWORK."<br />";
echo PLAT_PATH."<br />";
echo CTRL_PATH."<br />";
echo MODEL_PATH."<br />";
echo VIEW_PATH."<br />";
*/
/*
* PLAT=front
* DS=\
* ROOT=F:\Programming\web\com\commllm\
* APP=F:\Programming\web\com\commllm\Application\
* FRAMEWORK=F:\Programming\web\com\commllm\Framework\
* PLAT_PATH=F:\Programming\web\com\commllm\Application\front\
* CTRL_PATH=F:\Programming\web\com\commllm\Application\front\Controller\
* MODEL_PATH=F:\Programming\web\com\commllm\Application\front\Model\
* VIEW_PATH=F:\Programming\web\com\commllm\Application\front\View\
*/
function __autoload($class){
$base_class = array('TableFactory','BaseModel','ModelFactory','BaseController');
if(in_array( $class, $base_class)) {
require FRAMEWORK . $class . '.class.php'; //加载基础模型类
}
else if(substr($class, -5) == "Model") {//所需要的类的名字最后5个字符是"Model”时
require MODEL_PATH . $class . ".class.php";
}
else if( substr($class, -10) == "Controller"){//所需要的类的名字最后10个字符是"Controller”时
require CTRL_PATH . $class . ".class.php";
}
}
/*
echo "<pre>";
$test = ModelFactory::mf('ActiModel');
$result = $test->getActiByid('1');
echo "<pre>";
if ($result === false) {
echo "<br />";
$e = $test->getErrorInfo();
echo "$e[2]";
echo "<br />";
}
var_dump($result);
echo "</pre>";
#*/
/*
$config = array(
'host' => "localhost",
'port' => 3306,
'user' => "root",
'pass' => "root",
'charset' => "utf8",
'dbname' => "asso_db"
);
$dsn = "mysql:host=$config[host]; port=$config[port]; dbname=$config[dbname]";
$opt = array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names " . $config['charset']);
$pdo = new PDO($dsn, $config['user'], $config['pass'], $opt);
$stmt = $pdo->query("select * from asso_info where asso_id = '10'");
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<pre>";
if ($result === false) {
echo "<br />";
$e = $pdo->errorInfo();
echo "$e[2]";
echo "<br />";
}
if ($stmt === false) {
echo "<br />";
$e = $pdo->errorInfo();
echo "$e[2]";
echo "<br />";
}
var_dump($stmt);
echo "<br />";
var_dump($result);
echo "</pre>";
#*/
/*
$membTable = TableFactory::membTable('123456789012','2','test','会员');
$test = ModelFactory::mf("MembModel");
$result = $test->insertMemb($membTable);
echo "<pre>";
if ($result === false) {
echo "<br />";
$e = $test->getErrorInfo();
echo "$e[2]";
echo "<br />";
}
var_dump($result);
echo "</pre>";
#*/
//*
session_start();
if (!isset($_SESSION['admin'])) {
$p = "front";
$c = "Login";
if ($a!='check') {
$a = 'login';
}
}
$ctrl_name = $c . "Controller"; //构建控制器的类名
$ctrl = new $ctrl_name (); //可变类
$action = $a . "Action";
$ctrl->$action();
#*/
//开启session