原文 基于Sql Server 2008的分布式数据库的实践(五)

程序设计

-----------------------------------------------------------------------------------------------------------------

Index.php————选择界面,并且实现学生和老师的注册

sql_ini.php————SQL配置文件

./student————学生的后台

./admin————老师的后台

-----------------------------------------------------------------------------------------------------------------

./student

cookie.php————cookie转跳文件

index1.php————后台界面

login.php————登录界面

loginout.php————cookie注销处理

main.php————主界面

menu.php————后台菜单

sclass.php————显示学生选课信息

score.php-————显示学生成绩

sinfo.php————显示学生资料

sql_ini.php————SQL配置文件

up.php————后台表单处理文件

-----------------------------------------------------------------------------------------------------------------

./admin

class.php————显示老师课程信息

cookie.php————cookie转跳文件

index1.php————后台界面

info.php————显示老师资料(有权限设置)

login.php————登录界面

loginout.php————cookie注销处理

main.php————主界面

menu.php————后台菜单

score.php-————登记学生成绩

sql_ini.php————SQL配置文件

up.php————后台表单处理文件

程序解释

学生注册

 1 if(isset($_POST['addstudent']))
2 {
3 //判断是否有空,即没有输入的
4 if(($_POST['sname']=='')||($_POST['sex']=='')||($_POST['school']=='')||($_POST['scount']=='')||($_POST['spwd1']=='')||($_POST['spwd2']==''))
5 {
6 echo '请输全信息!';
7 exit();
8 }
9 //把传递的数据赋值到变量里面
10 $sname=$_POST['sname'];
11 $sex=$_POST['sex'];
12 $school=$_POST['school'];
13 $scount=$_POST['scount'];
14 $spwd1=$_POST['spwd1'];
15 $spwd2=$_POST['spwd2'];
16 $sid=rand(1,9999);//随机一个学号
17 //判断两次密码是不是相同
18 if($spwd1==$spwd2)
19 {
20 //SQL Server 对数据处理前的操作
21 sql();
22 //SQL语句
23 $sql="select * from [V3].[dbo].[V3_student]";
24 $result = mssql_query($sql);
25 //从结果集中取得一行作为关联数组
26 while ($row = mssql_fetch_array($result, MSSQL_ASSOC))
27 {
28 //二次判断是否登录帐号重复
29 if($row['scount']==$scount)
30 {
31 //报错并终止
32 echo ("已经有人申请了这个帐号!");
33 exit();
34 }
35 }
36 //SQL语句插入到视图里面
37 $sql_add="INSERT INTO [V3].[dbo].[V3_student] ([sid],[sex],[sname],[school],[scount],[spwd])
38 VALUES (".$sid.",'".$sex."','".$sname."','".$school."','".$scount."','".$spwd1."')";
39 $result_add = mssql_query($sql_add);
40 //对SQL操作的结果的判断
41 if($result_add)
42 {echo "<center>注册成功!</center>";}
43 else
44 {echo "sql出错!";}
45 }
46 else
47 {
48 //密码不相同报错并终止
49 echo ("两次密码不对");
50 exit();
51 }
52 }

老师注册

 1 if(isset($_POST['addadmin']))
2 {
3 //判断是否有空,即没有输入的
4 if(($_POST['name']=='')||($_POST['sex']=='')||($_POST['age']=='')||($_POST['count']=='')||($_POST['pwd']=='')||($_POST['pwd2']=='')||($_POST['ageage']=='')||($_POST['tel']=='')||($_POST['address']==''))
5 {
6 echo '请输全信息!';
7 exit();
8 }
9 //把传递的数据赋值到变量里面
10 $tname=$_POST['name'];
11 $tsex=$_POST['sex'];
12 $tage=$_POST['age'];
13 $tcount=$_POST['count'];
14 $tpwd=$_POST['pwd'];
15 $tpwd2=$_POST['pwd2'];
16 $age=$_POST['ageage'];
17 $tel=$_POST['tel'];
18 $address=$_POST['address'];
19 $tsuper=1;
20 $tidid=rand(1,9999);
21 //判断两次密码是否相同
22 if($tpwd==$tpwd2)
23 {
24 //SQL Server 对数据处理前的操作
25 sql();
26 //SQL语句
27 $sql="select * from [V3].[dbo].[teacher]";
28 $result = mssql_query($sql);
29 //从结果集中取得一行作为关联数组
30 while ($row = mssql_fetch_array($result, MSSQL_ASSOC))
31 {
32 //二次判断是否登录帐号重复
33 if($row['tcount']==$tcount)
34 {
35 //报错并终止
36 echo ("已经有人申请了这个帐号!");
37 exit();
38 }
39 }
40 $sql_add="EXEC [V3].[dbo].[V3_teacher] ".$tidid.",'".$tname."', '".$tage."', '".$tsex."', '".$tcount."', '".$tpwd."', '".$tsuper."','".$age."','".$tel."','".$address."'";
41 $result_add = mssql_query($sql_add);
42 if($result_add)
43 {echo "<center>注册成功!</center>";}
44 else
45 {echo "sql出错!";}
46 }
47 else
48 {
49 //报错并终止
50 echo ("两次密码不对");
51 exit();
52 }
53 }

学生登录和查看资料

 1 //cookie传递id
2 $sid=$_COOKIE['uid'];
3 sql();
4 //SQL 语句
5 $query = "SELECT * FROM [V3].[dbo].[V3_student] where [sid]=".$sid."";
6 $result = mssql_query($query);
7 //取得这个表有多少列
8 $db_t_num=mssql_num_fields($result);
9 //保存字段中文含义
10 $arrname[0]='学号';
11 $arrname[1]='姓名';
12 $arrname[2]='学院';
13 $arrname[3]='帐号';
14 $arrname[4]='密码';
15 /*******************
16 HTML表格输出
17 *******************/
18 echo "<table border='1' >\n";
19 echo "\t<tr>\n";
20 for($num=0;$num<$db_t_num;$num++)
21 {
22 //输出字段中文含义
23 echo "\t\t<td>".$arrname[$num]."</td>\n";
24 }
25 echo "\t</tr>\n";
26 while ($row = mssql_fetch_array($result, MSSQL_ASSOC))
27 {
28 //输出内容
29 echo "\t<tr>\n";
30 echo '<td>'.$row["sid"].'</td>';
31 echo '<td>'.$row["sname"].'</td>';
32 echo '<td>'.$row["school"].'</td>';
33 echo '<td>'.$row["scount"].'</td>';
34 echo '<td>******</td>';//隐藏的写法
35 echo "\t</tr>\n";
36 }
37 echo "</table>\n";
38 //释放SQL链接
39 mssql_free_result($result);

学生选课

 1 //GET得到是选课操作
2 if($_GET['action']=='do')
3 {
4 //cookie传递sid
5 $id=$_COOKIE["uid"];
6 sql();
7 //sid选了什么课,使check打上勾
8 $sql_do="SELECT * FROM [V3].[dbo].[class] where [sid]=".$id."";
9 $result_do = mssql_query($sql_do);
10 $ii=0;//保存学生所选的课
11 while ($row = mssql_fetch_array($result_do, MSSQL_ASSOC))
12 {
13 $s_cid_do[$ii]=$row['cid'];
14 $ii++;
15 }
16
17 //SQL语句通过默认学生sid=0取得课名cname和课号cid和老师tid
18 $sql_class="SELECT * FROM [V3].[dbo].[class] where [sid] = 0";
19 $result_class = mssql_query($sql_class);
20 $i=0;//保存有多少行
21 while ($row = mssql_fetch_array($result_class, MSSQL_ASSOC))
22 {
23 $class_tid[$i]=$row['tid'];
24 $class_cid[$i]=$row['cid'];
25 $class_name[$i]=$row['cname'];
26 $i++;
27 }
28 //SQL语句通过tid取得老师名字,教学年龄和性别
29 for($a=0;$a<$i;$a++)
30 {
31 $sql_t[$a]="SELECT * FROM [V3].[dbo].[teacher] where [tid]=".$class_tid[$a]."";
32 $result_t[$a]= mssql_query($sql_t[$a]);
33 while ($class_t = mssql_fetch_array($result_t[$a], MSSQL_ASSOC))
34 {
35 $class_tsex[$a]=$class_t['tsex'];
36 $class_tage[$a]=$class_t['tage'];
37 $class_tname[$a]=$class_t['tname'];
38 }
39 }
40 //保存字段中文含义
41 $arrname[0]='课号';
42 $arrname[1]='课名';
43 $arrname[2]='老师名字';
44 $arrname[3]='老师编号';
45 $arrname[4]='老师教学年龄';
46 $arrname[5]='老师性别';
47 $arrname[6]='选课';
48 /*******************
49 HTML表格输出
50 *******************/
51 echo '<form action="up.php" method="POST">';
52 echo "<table border='1' >\n";
53 echo "\t<tr><td colspan='7' align='center'>选课系统</td></tr>\n";
54 echo "\t<tr>\n";
55 echo "\t<tr>\n";
56 //有6列
57 for($num=0;$num<7;$num++)
58 {
59 echo "\t\t<td>".$arrname[$num]."</td>\n";
60 }
61 for($a=0;$a<$i;$a++)
62 {
63 //check初始化
64 $check = '';
65 //判断是男是女
66 if($class_tsex[$a]=='0')
67 $class_tsex[$a]='男';
68 else
69 $class_tsex[$a]='女';
70 //判断选了这门课
71 for($b=0;$b<$ii;$b++)
72 {
73 if($class_cid[$a]==$s_cid_do[$b])
74 {
75 $check = 'checked';
76 }
77 }
78 echo "\t<tr>\n";
79 echo '<td>'.$class_cid[$a].'</td>';
80 echo '<td>'.$class_name[$a].'</td>';
81 echo '<td>'.$class_tname[$a].'</td>';
82 echo '<td>'.$class_tid[$a].'</td>';
83 echo '<td>'.$class_tage[$a].'</td>';
84 echo '<td>'.$class_tsex[$a].'</td>';
85 echo '<td><input type="checkbox" name=pa_'.$class_cid[$a].' '.$check.'></td>';//name=pa_'.$class_cid[$a]这样写是为了出现BUG
86 echo "\t</tr>\n";
87 }
88 echo "\t<tr><td colspan='7' align='center'><input type='submit' name='sub' value='确认课程'></td></tr>\n";
89 echo "</table>\n";
90 echo "</form>";
91 }

学生退课

 1 //GET传递操作,为退课操作
2 if($_GET['action']=='mine')
3 {
4 //cookie传递sid
5 $id=$_COOKIE["uid"];
6 sql();
7 //SQL语句通过学号sid取得课号cid和tid和课名
8 $sql_s="SELECT * FROM [V3].[dbo].[class] where [sid]=".$id."";
9 $result_s = mssql_query($sql_s);
10 $i=0;//保存有多少行
11 while ($row = mssql_fetch_array($result_s, MSSQL_ASSOC))
12 {
13 $s_cid[$i]=$row['cid'];
14 $s_cname[$i]=$row['cname'];
15 $s_tid[$i]=$row['tid'];
16 $i++;
17 }
18 //SQL语句通过tid得到上课的老师名字以及教学年龄和性别
19 for($a=0;$a<$i;$a++)
20 {
21 $sql_s_t[$a]="SELECT * from [V3].[dbo].[teacher] where [tid]=".$s_tid[$a]."";
22 $result_s_t[$a] = mssql_query($sql_s_t[$a]);
23 while ($s_t = mssql_fetch_array($result_s_t[$a], MSSQL_ASSOC))
24 {
25 $s_tsex[$a]=$s_t['tsex'];
26 $s_tage[$a]=$s_t['tage'];
27 $s_tname[$a]=$s_t['tname'];
28 }
29 }
30 //保存字段中文含义
31 $arrname[0]='课号';
32 $arrname[1]='课名';
33 $arrname[2]='老师名字';
34 $arrname[3]='老师编号';
35 $arrname[4]='老师教学年龄';
36 $arrname[5]='老师性别';
37 $arrname[6]='退课';
38 /*******************
39 HTML表格输出
40 *******************/
41 echo '<form action="up.php" method="POST">';
42 echo "<table border='1' >\n";
43 echo "\t<tr><td colspan='7' align='center'>我选上的课</td></tr>\n";
44 echo "\t<tr>\n";
45 echo "\t<tr>\n";
46 //有7列
47 for($num=0;$num<7;$num++)
48 {
49 echo "\t\t<td>".$arrname[$num]."</td>\n";
50 }
51 echo "\t</tr>\n";
52 for($a=0;$a<$i;$a++)
53 {
54 //判断是男是女
55 if($s_tsex[$a]=='0')
56 $s_tsex[$a]='男';
57 else
58 $s_tsex[$a]='女';
59 echo "\t<tr>\n";
60 echo '<td>'.$s_cid[$a].'</td>';
61 echo '<td>'.$s_cname[$a].'</td>';
62 echo '<td>'.$s_tname[$a].'</td>';
63 echo '<td>'.$s_tid[$a].'</td>';
64 echo '<td>'.$s_tage[$a].'</td>';
65 echo '<td>'.$s_tsex[$a].'</td>';
66 echo '<td><input type="checkbox" name="ma_'.$s_cid[$a].'" ></td></td>';
67 echo "\t</tr>\n";
68 }
69 echo "\t<tr><td colspan='7' align='center'><input type='submit' name='delsub' value='确认退课'></td></tr>\n";
70 echo "</table>\n";
71 echo "</form>";
72 }

学生查看成绩

 1 //通过cookie得到sid
2 $id=$_COOKIE['uid'];
3 sql();
4 //SQL语句通过学号sid取得课号cid和tid和课名
5 $sql_s="SELECT * FROM [V3].[dbo].[class] where [sid]=".$id."";
6 $result_s = mssql_query($sql_s);
7 $i=0;//保存有多少行
8 while ($row = mssql_fetch_array($result_s, MSSQL_ASSOC))
9 {
10 $s_cid[$i]=$row['cid'];
11 $s_cname[$i]=$row['cname'];
12 $s_tid[$i]=$row['tid'];
13 $s_score[$i]=$row['score'];
14 $i++;
15 }
16 //SQL语句通过tid得到上课的老师名字以及教学年龄和性别
17 for($a=0;$a<$i;$a++)
18 {
19 $sql_s_t[$a]="SELECT * from [V3].[dbo].[teacher] where [tid]=".$s_tid[$a]."";
20 $result_s_t[$a] = mssql_query($sql_s_t[$a]);
21 while ($s_t = mssql_fetch_array($result_s_t[$a], MSSQL_ASSOC))
22 {
23 $s_tsex[$a]=$s_t['tsex'];
24 $s_tage[$a]=$s_t['tage'];
25 $s_tname[$a]=$s_t['tname'];
26 }
27 }
28 //保存字段中文含义
29 $arrname[0]='课号';
30 $arrname[1]='课名';
31 $arrname[2]='老师名字';
32 $arrname[3]='老师编号';
33 $arrname[4]='老师教学年龄';
34 $arrname[5]='老师性别';
35 $arrname[6]='分数';
36 /*******************
37 HTML表格输出
38 *******************/
39 echo "<table border='1' >\n";
40 echo "\t<tr><td colspan='7' align='center'>我选上的课</td></tr>\n";
41 echo "\t<tr>\n";
42 echo "\t<tr>\n";
43 //有7列
44 for($num=0;$num<7;$num++)
45 {
46 echo "\t\t<td>".$arrname[$num]."</td>\n";
47 }
48 echo "\t</tr>\n";
49 for($a=0;$a<$i;$a++)
50 {
51 if($s_tsex[$a]=='0')
52 $s_tsex[$a]='男';
53 else
54 $s_tsex[$a]='女';
55 //判断是否上成绩,若为999,则是没有上成绩
56 if($s_score[$a]=='999')
57 {
58 $s_score[$a]='未上成绩';
59 }
60 echo "\t<tr>\n";
61 echo '<td>'.$s_cid[$a].'</td>';
62 echo '<td>'.$s_cname[$a].'</td>';
63 echo '<td>'.$s_tname[$a].'</td>';
64 echo '<td>'.$s_tid[$a].'</td>';
65 echo '<td>'.$s_tage[$a].'</td>';
66 echo '<td>'.$s_tsex[$a].'</td>';
67 echo '<td>'.$s_score[$a].'</td>';
68
69 echo "\t</tr>\n";
70 }
71 echo "</table>\n";

老师登录和查看所有资料(权限限制)

 1 //GET传递信息,显示所以老师(权限限制)
2 if($_GET['people']=='all')
3 {
4 if($_COOKIE["super"]=='10')
5 {
6 sql();
7 //SQL 语句
8 $query = "SELECT * FROM [V3].[dbo].[teacher]";
9 $result = mssql_query($query);
10
11 /*******************
12 HTML表格输出
13 *******************/
14 echo "<table border='1' >\n";
15 //取得结果集中字段的数目
16 $db_t_num=mssql_num_fields($result);
17 //保存字段中文含义
18 $arrname[0]='编号';
19 $arrname[1]='姓名';
20 $arrname[2]='教学年龄';
21 $arrname[3]='性别';
22 $arrname[4]='登录帐号';
23 $arrname[5]='登录密码';
24 $arrname[6]='管理权限';
25
26 echo "\t<tr>\n";
27 for($num=0;$num<$db_t_num;$num++)
28 {
29 echo "\t\t<td>".$arrname[$num]."</td>\n";
30 }
31 echo "\t</tr>\n";
32 //从结果集中取得一行作为关联数组
33 while ($row = mssql_fetch_array($result, MSSQL_ASSOC))
34 {
35 //判断之后显示男女中文
36 if($row["tsex"]=='0')
37 $row["tsex"]='男';
38 else
39 $row["tsex"]='女';
40 //判断是不是超级管理员
41 if($row["tsuper"]=='10')
42 $row["tsuper"]='超级老师管理员';
43 else
44 $row["tsuper"]='普通老师管理员';
45
46 //输出内容
47 echo "\t<tr>\n";
48 echo '<td>'.$row["tid"].'</td>';
49 echo '<td>'.$row["tname"].'</td>';
50 echo '<td>'.$row["tage"].'</td>';
51 echo '<td>'.$row["tsex"].'</td>';
52 echo '<td>'.$row["tcount"].'</td>';
53 echo '<td>******</td>';//隐藏的写法
54 echo '<td>'.$row["tsuper"].'</td>';
55 echo "\t</tr>\n";
56 }
57 echo "</table>\n";
58
59 //释放SQL链接
60 mssql_free_result($result);
61 }
62 else
63 {
64 echo "没有权限查看!";
65 }
66 }

老师查看资料

 1 //GET传递信息,显示自己信息
2 if($_GET['people']=='me')
3 {
4 //cookie传输tid
5 $id=$_COOKIE["uid"];
6 //SQL 语句
7 $query = "SELECT * FROM [V3].[dbo].[teacher] where tid=".$id."";
8 $result = mssql_query($query);
9 /*******************
10 HTML表格输出
11 *******************/
12 echo "<table border='1' >\n";
13 //取得结果集中字段的数目
14 $db_t_num=mssql_num_fields($result);
15 //保存字段中文含义
16 $arrname[0]='编号';
17 $arrname[1]='姓名';
18 $arrname[2]='教学年龄';
19 $arrname[3]='性别';
20 $arrname[4]='登录帐号';
21 $arrname[5]='登录密码';
22 $arrname[6]='管理权限';
23
24 echo "\t<tr>\n";
25 for($num=0;$num<$db_t_num;$num++)
26 {
27 echo "\t\t<td>".$arrname[$num]."</td>\n";
28 }
29 echo "\t</tr>\n";
30 while ($row = mssql_fetch_array($result, MSSQL_ASSOC))
31 {
32 //判断之后显示男女中文
33 if($row["tsex"]=='0')
34 $row["tsex"]='男';
35 else
36 $row["tsex"]='女';
37 //判断是不是超级管理员
38 if($row["tsuper"]=='10')
39 $row["tsuper"]='超级老师管理员';
40 else
41 $row["tsuper"]='普通老师管理员';
42
43 //输出内容
44 echo "\t<tr>\n";
45 echo '<td>'.$row["tid"].'</td>';
46 echo '<td>'.$row["tname"].'</td>';
47 echo '<td>'.$row["tage"].'</td>';
48 echo '<td>'.$row["tsex"].'</td>';
49 echo '<td>'.$row["tcount"].'</td>';
50 echo '<td>******</td>';//隐藏的写法
51 echo '<td>'.$row["tsuper"].'</td>';
52 echo "\t</tr>\n";
53 }
54 echo "</table>\n";
55
56 //释放SQL链接
57 mssql_free_result($result);
58 }

老师添加老师(权限限制)

 1 //POST传递信息
2 if(isset($_POST['addsub']))
3 {
4 //把传递的信息传到变量里面
5 $tname=$_POST['name'];
6 $tsex=$_POST['sex'];
7 $tage=$_POST['age'];
8 $tcount=$_POST['count'];
9 $tpwd=$_POST['pwd'];
10 $tpwd2=$_POST['pwd2'];
11 $tsuper=$_POST['super'];
12 $tidid=$_POST['idid'];
13 $age=$_POST['ageage'];
14 $tel=$_POST['tel'];
15 $address=$_POST['address'];
16 //判断两次密码是否相同
17 if($tpwd==$tpwd2)
18 {
19 sql();
20 //SQL语句
21 $sql="select * from [V3].[dbo].[teacher]";
22 $result = mssql_query($sql);
23 //从结果集中取得一行作为关联数组
24 while ($row = mssql_fetch_array($result, MSSQL_ASSOC))
25 {
26 //二次判断是否登录帐号重复
27 if($row['tcount']==$tcount)
28 {
29 //报错并终止
30 echo ("已经有人申请了这个帐号!");
31 exit();
32 }
33 }
34 //执行SQL语句插入
35 $sql_add="EXEC [V3].[dbo].[V3_teacher] ".$tidid.",'".$tname."', '".$tage."', '".$tsex."', '".$tcount."', '".$tpwd."', '".$tsuper."','".$age."','".$tel."','".$address."'";
36 $result_add = mssql_query($sql_add);
37 if($result_add)
38 {echo "添加成功!";}
39 else
40 {echo "sql出错!";}
41 }
42 else
43 {
44 //报错并终止
45 echo ("两次密码不对");
46 exit();
47 }
48 }

老师删减老师(权限限制)

 1 //POST传递信息
2 if(isset($_POST['delsub']))
3 {
4 sql();
5 $tid=$_POST['id'];
6 $sql="DELETE FROM [V3].[dbo].[teacher] where [tid]=".$tid."";
7 $result = mssql_query($sql);
8 if($result)
9 {echo "删除成功";}
10 else
11 {echo "SQL出错!";}
12 }

老师添加课程

 1 //POST传递信息
2 if(isset($_POST['addclass']))
3 {
4 sql();
5 //POST传递信息
6 $tid=$_POST['id'];
7 $cname=$_POST['name'];
8 //SQL语句插入
9 $sql="INSERT INTO [V3].[dbo].[class] ([sid], [tid], [cname],[score],[cid]) VALUES (0, ".$tid.", '".$cname."',999,".rand(1,999).")";
10 $result = mssql_query($sql);
11 if($result)
12 {echo "创建课程成功";}
13 else
14 {echo "SQL出错!";}
15 }

老师查看选课情况

 1 if($_GET['action']=='list')
2 {
3 //cookie传递tid
4 $id=$_COOKIE["uid"];
5 sql();
6 //SQL语句取得编号tid老师以及默认学生sid=0,得到课名cname和课号cid
7 $sql_class="SELECT * FROM [V3].[dbo].[class] where [tid]=".$id." AND [sid] = 0";
8 $result_class = mssql_query($sql_class);
9 $i=0;//保存有多少行
10 while ($row = mssql_fetch_array($result_class, MSSQL_ASSOC))
11 {
12 $class_id[$i]=$row['cid'];
13 $class_name[$i]=$row['cname'];
14 $i++;
15 }
16 //SQL语句通过tid和cid得到有多少学生选课
17 for($a=0;$a<$i;$a++)
18 {
19 $sql_num[$a]="SELECT * FROM [V3].[dbo].[class] where [tid]=".$id." AND [cid] = ".$class_id[$a]."";
20 $result_num[$a]= mssql_query($sql_num[$a]);
21 $class_num[$a]=mssql_num_rows($result_num[$a]);
22 }
23 //保存字段中文含义
24 $arrname[0]='课号';
25 $arrname[1]='课名';
26 $arrname[2]='选课人数';
27 /*******************
28 HTML表格输出
29 *******************/
30 echo "<table border='1' >\n";
31 echo "\t<tr><td colspan='3' align='center'>老师号:".$id."</td></tr>\n";
32 echo "\t<tr>\n";
33 //有3列
34 for($num=0;$num<3;$num++)
35 {
36 echo "\t\t<td>".$arrname[$num]."</td>\n";
37 }
38 echo "\t</tr>\n";
39 for($a=0;$a<$i;$a++)
40 {
41 //删去sid为0的
42 $class_num[$a]=$class_num[$a]-1;
43 echo "\t<tr>\n";
44 echo '<td>'.$class_id[$a].'</td>';
45 echo '<td>'.$class_name[$a].'</td>';
46 echo '<td>'.$class_num[$a].'</td>';
47 echo "\t</tr>\n";
48 }
49 echo "</table>\n";
50 }
51 ?>

老师删减课程

 1 //POST传递信息
2 if(isset($_POST['delclass']))
3 {
4 sql();
5 //POST传递信息
6 $cid=$_POST['cid'];
7 //SQL进行删减操作
8 $sql="DELETE FROM [V3].[dbo].[class] where [cid]=".$cid."";
9 $result = mssql_query($sql);
10 if($result)
11 {echo "删除课程成功";}
12 else
13 {echo "SQL出错!";}

老师查看成绩

 1 //GET传递信息
2 if($_GET['action']=='show')
3 {
4 sql();
5 //cookie传输tid
6 $id=$_COOKIE["uid"];
7 //SQL语句通过tid取得课号cid
8 $sql_t="SELECT * FROM [V3].[dbo].[class] where [sid]=0 AND [tid] = ".$id."";
9 $result_t = mssql_query($sql_t);
10 $i=0;//保存老师有多少课程
11 while ($row = mssql_fetch_array($result_t, MSSQL_ASSOC))
12 {
13 $t_cid[$i]=$row['cid'];
14 $t_cname[$i]=$row['cname'];
15 $i++;
16 }
17 //将cid,sid,score存入数组
18 for($a=0;$a<$i;$a++)
19 {
20 //通过cid找到选课了的学生
21 $sql_t_s="SELECT * FROM [V3].[dbo].[class] where [cid]=".$t_cid[$a]." AND [tid] = ".$id."";
22 $result_t_s = mssql_query($sql_t_s);
23 $ii=0;//保存每个课程的学生人数
24 while($row_ready = mssql_fetch_array($result_t_s, MSSQL_ASSOC))
25 {
26 $t_sid[$a][$ii]=$row_ready['sid'];
27 $t_score[$a][$ii]=$row_ready['score'];
28 $ii++;
29 }
30 $num[$a]=$ii;//把每个课程的人数存到数组里面
31 }
32 //通过sid找到sname
33 for($b=0;$b<$i;$b++)
34 {
35 for($c=0;$c<$num[$b];$c++)
36 {
37 //通过cid找到选课了的学生
38 $sql_sn="SELECT * FROM [V3].[dbo].[V3_student] where [sid]=".$t_sid[$b][$c]."";
39 $result_sn = mssql_query($sql_sn);
40 while($row_sn = mssql_fetch_array($result_sn, MSSQL_ASSOC))
41 {
42 $t_sname[$b][$c]=$row_sn['sname'];
43 }
44 }
45 }
46 //列出老师的课程
47 if($_GET['cid']=='0')
48 {
49 for($dd=0;$dd<$i;$dd++)
50 {
51 echo "<a href='score.php?action=show&cid=".$t_cid[$dd]."'>查看__".$t_cname[$dd]."__课程情况!</a><br>";
52 }
53 }
54 for($ddd=0;$ddd<$i;$ddd++)
55 {
56 if($_GET['cid']==$t_cid[$ddd])
57 {
58 //保存字段中文含义
59 $arrname[0]='课号';
60 $arrname[1]='课名';
61 $arrname[2]='学生号';
62 $arrname[3]='学生名';
63 $arrname[4]='成绩';
64 /*******************
65 HTML表格输出
66 *******************/
67 echo "<table border='1' >\n";
68 echo "\t<tr>\n";
69 //5列
70 for($num5=0;$num5<5;$num5++)
71 {
72 echo "\t\t<td>".$arrname[$num5]."</td>\n";
73 }
74 echo "\t</tr>\n";
75
76 for($e=0;$e < $num[ $ddd ];$e++)
77 {
78 if($t_score[$ddd][$e]=="999")
79 {
80 $t_score[$ddd][$e]="未上传成绩";
81 }
82 if($t_sid[$ddd][$e]=='0')
83 {
84 //不显示默认为0的学生
85 continue;
86 }
87 //输出内容
88 echo "\t<tr>\n";
89 echo '<td>'.$t_cid[$ddd].'</td>';
90 echo '<td>'.$t_cname[$ddd].'</td>';
91 echo '<td>'.$t_sid[$ddd][$e].'</td>';
92 echo '<td>'.$t_sname[$ddd][$e].'</td>';
93 echo '<td>'.$t_score[$ddd][$e].'</td>';
94 echo "\t</tr>\n";
95 }
96 echo "</table>\n";
97 }
98 }
99 }

老师上传成绩

 1 if(isset($_POST['up']))
2 {
3 sql();
4 //cookie传输tid
5 $id=$_COOKIE["uid"];
6 //POST传输得到cid
7 $up_cid=$_POST['cid'];
8 //通过cid和tid找到选课了的学生
9 $sql_s="SELECT * FROM [V3].[dbo].[class] where [cid]=".$up_cid." AND [tid] = ".$id."";
10 $result_s = mssql_query($sql_s);
11 $i=0;//保存有多少学生
12 while ($row = mssql_fetch_array($result_s, MSSQL_ASSOC))
13 {
14 $up_score[$i]=$row['score'];
15 $up_sid[$i]=$row['sid'];
16 $i++;
17 }
18 for($a=0;$a<$i;$a++)
19 {
20 if($up_sid[$a]=='0')
21 {
22 //忽略默认sid为0的学生
23 continue;
24 }
25 //判断是不是数字
26 if(is_numeric($_POST["sid_$up_sid[$a]"]))
27 {
28 //判断是否在0~100之内
29 if($_POST["sid_$up_sid[$a]"]<=100&&$_POST["sid_$up_sid[$a]"]>=0)
30 {
31 //POST传递给up_score数组
32 $up_score[$a]=$_POST["sid_$up_sid[$a]"];
33 }
34 else
35 {echo "输入0~100之内的数字成绩!<br>";}
36 }
37 else
38 {echo "输入数字!<br>";}
39 //SQL语句更新score
40 $sql_up_score="UPDATE [V3].[dbo].[class] SET [score] = ".$up_score[$a]." WHERE [cid] =".$up_cid." AND [sid] =".$up_sid[$a]."";
41 $result_up_score = mssql_query($sql_up_score);
42 if($result_up_score)
43 {echo "上传成绩成功!";}
44 else
45 {echo "上传失败!";}
46 }
47 }

反省:代码不整洁,因为这是老师布置的一个作业,做的比较匆忙,只是解决了里面出现的一些error和warning,并没有对代码进行优化,还有对网站安全的处理,比如SQL注入等没有做出处理。

这些只是部分代码,希望大家看得过去。。。

转载请注明出处:http://www.cnblogs.com/yydcdut/p/3461254.html

基于Sql Server 2008的分布式数据库的实践(五)的更多相关文章

  1. 基于Sql Server 2008的分布式数据库的实践(四)

    原文 基于Sql Server 2008的分布式数据库的实践(四) 数据库设计 1.E-R图 2.数据库创建 Win 7 1 create database V3 Win 2003 1 create  ...

  2. 基于Sql Server 2008的分布式数据库的实践(三)

    原文 基于Sql Server 2008的分布式数据库的实践(三) 配置PHP 1.打开PHP配置文件,找到extension=php_mssql.dll,将前面的注释符号去掉 2.找到mssql.s ...

  3. 基于Sql Server 2008的分布式数据库的实践(二)

    原文 基于Sql Server 2008的分布式数据库的实践(二) 从Win7连接Win2003的Sql Server 2008 1.新建链接服务器链接到Win2003的Sql Server 2008 ...

  4. 基于Sql Server 2008的分布式数据库的实践(一)

    原文 基于Sql Server 2008的分布式数据库的实践(一) 配置Sql Server 2008(Win7) 1.打开SQL server2012,使用windows身份登录 2.登录后,右键选 ...

  5. 基于Sql Server 2008的分布式数据库的实践(终结)

    学习.操作心得 以前在做网站程序的时候一直用的是MYSQL,但是网上搜到MYSQL不支持分布式操作,然后便开始查询MSSQL的分布式数据库的设计与操作,后来在网上找到了<基于SQL SERVER ...

  6. 基于Sql Server 2008的分布式数据库的实践

    配置Sql Server 2008(Win7) 1.打开SQL server2012,使用windows身份登录 2.登录后,右键选择“属性”.左侧选择“安全性”,选中右侧的“SQL Server 和 ...

  7. 基于SQL Server 2008 Service Broker构建企业级消息系统

    注:这篇文章是为InfoQ 中文站而写,文章的地址是:http://www.infoq.com/cn/articles/enterprisemessage-sqlserver-servicebroke ...

  8. SQL SERVER 2008 R2 还原数据库3154错误

    1.SQL SERVER 2008 在还原数据库时,会报错. 提示错误:"备份集中的数据库备份与现有的 '***' 数据库不同.RESTORE DATABASE 正在异常终止. (Micro ...

  9. SQL Server 2008 R2 主从数据库同步

    一.准备工作: 主数据库服务器: OS:Windows Server 2008 R2    DB: SQL Server 2008 R2 Hostname : CXMasterDB IP: 192.1 ...

随机推荐

  1. object-c 协议(Protocols)和代理(Delegation)的学习

    代理是Object-C中的一个重要机制,他可以将面向对象编程的封装特性进一步加强,不是自己负责的事情坚决不做,而是转而让对应的事情负责人(代理)去做.相反如果是自己需要负责的事情(作为别人的代理),会 ...

  2. 关于js的一些关键知识点(call,apply,callee, caller,clourse,prototypeChain)

    可能不少学习javascript在使用call,apply,callee时会感到困惑,以下希望对于你有所帮助: 1.~~~call ,apply是函数(函数对象)的方法:callee是函数argume ...

  3. Protel99 SE快捷键大全

    为了方便观看我们的protel99 se视频教程的朋友,我们在这里发布了protel99 se的所有的键盘的快捷分健大全,希望大家在学习我们的视频教程的时候,可以熟悉以下这些快捷键,因为平时我们用pr ...

  4. json对象的封装与解析

    一.解析json对象 表结构信息对象,json格式,名称为tableObj   *  {   *   "tableName":"t_res",          ...

  5. Microsoft 收购 Apiphany

    StevenMartinMS 2013 年 10 月 23 日上午 10:00 今天,我高兴地宣布我们收购了业界领先的 API 管理交付平台 - Apiphany. 应用程序可扩展性已经不算什么新鲜事 ...

  6. poj 2503 Babelfish(Map、Hash、字典树)

    题目链接:http://poj.org/bbs?problem_id=2503 思路分析: 题目数据数据量为10^5, 为查找问题,使用Hash或Map等查找树可以解决,也可以使用字典树查找. 代码( ...

  7. 获取WebView里的网页文本内容

    获取WebView里的网页文本内容,能够採用例如以下方法: public class ComJSInterface { public void loadHtmlContent(String conte ...

  8. Java多线程之synchronized(一)

    在上节中已经说过了“非线程安全”是如何出现的,链接如下:http://www.cnblogs.com/chentong/p/5650137.html,那么怎么解决“非线程安全”问题呢,只需要在两个线程 ...

  9. 【ActiveMQ】设置自动重连

    <property name="brokerURL" value="tcp://localhost:61616"/> <property na ...

  10. F - 蜘蛛牌(深度搜索)

    Problem Description 蜘蛛牌是windows xp操作系统自带的一款纸牌游戏,游戏规则是这样的:只能将牌拖到比她大一的牌上面(A最小,K最大),如果拖动的牌上有按顺序排好的牌时,那么 ...