原文 基于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. GraphLab:新的面向机器学习的并行框架

    大规模图数据计算引起了许多知名公司的关注,微软提出了用于图数据匹配的Horton - Querying Large Distributed Graphs(Link:http://research.mi ...

  2. Core 发布至Linux

    ASP.NET Core 发布至Linux生产环境 Ubuntu 系统 ASP.NET Core 发布至Linux生产环境 Ubuntu 系统,之前跟大家讲解了 dotnet publish 发布,而 ...

  3. linux如何关闭selinux?

    首先我们可以用命令来查看selinux的状态getenforce 这个命令可以查看到selinux的状态,当前可以看到是关闭状态的.还有一个命令也可以查看出selinux的状态.sestatus -v ...

  4. C#共享内存类改进版

    原文 C#共享内存类改进版 改进说明及源码实例下载见:http://blog.csdn.net/zzh8845/archive/2008/11/22/3349963.aspx ShareMem.cs ...

  5. 过目不忘JS正则表达式(转)

    正则表达式,有木有人像我一样,学了好几遍却还是很懵圈,学的时候老明白了,学完了忘光了.好吧,其实还是练的不够,所谓温故而知新,可以为师矣,今天就随我来复习一下这傲娇的正则表达式吧. 为啥要有正则表达式 ...

  6. python的Error集,17个新手常见Python运行时错误

    python及相关工具安装Error集 . 如果升级python版本中出现error .so.1.0: cannot open shared object file: No such file or ...

  7. Node log4js

    一个完善的项目,日志是必不可少的一部分,在node开发中,调试成了让开发者头疼的部分,因此日志成为在node中帮助调试的一个重要模块. 一.Node使用Log4js 1.使用npm工具,在命令行中 执 ...

  8. android点滴之PendingIntent的使用

    一概念 PendingIntent就是一个能够在满足一定条件下运行的Intent,它相比于Intent的优势在于自己携带有Context对象.这样他就不必依赖于某个activity才干够存在. 它和I ...

  9. Boost.Asio基础(五) 异步编程初探

    异步编程 本节深入讨论异步编程将遇到的若干问题.建议多次阅读,以便吃透这一节的内容,这一节是对整个boost.asio来说是非常重要的. 为什么须要异步 如前所述,通常同步编程要比异步编程更简单.同步 ...

  10. js正则表达式验证字符长度

    原理,就是把一个汉字替换为两个字母,来实现长度验证. //js正则验证字符长度 第一种:直接输出长度 alert('1sS#符'.replace(/[^\x00-\xff]/g, 'AA').leng ...