课程设计报告课程名:课程设计Ⅱ-网站设计与开发网站题目:网上机票订购系统****:***专业:信息管理与信息系统学号:姓名:成绩:2016/2017学年第2学期南京邮电大学管理学院指导教师成绩评定表一、需求分析网上机票订购系统该网上机票订购系统的核心功能是提供网上机票订购业务。
用户需求分析用户最基本需求就是查询到合适目的地、合适起飞时间的机票信息,并且能够下订单,下完订单后能够查到已经订购的机票的订单信息。
如果用户需要改变行程可以删除订单,然后重新下订单。
用户还有注册帐号,填写个人信息的需求,这样才能把用户与机票信息相匹配,生成机票订单。
二、系统设计数据库设计:数据库名为shop用户信息表(表名:users)主要储存用户帐号、密码和其他一些基本信息。
图2-1 users表属性航班信息表(表名:filght)储存航班号,飞机型号,出发地、目的地,起飞时间、到达时间、机票价格等信息。
图2-2 filght表属性订单信息表(表名:orders)OrderID为订单号,设置为自增属性,储存航班号、用户ID、总价格、起飞日期等信息。
图2-3 orders表属性功能设计:用户登录功能:没有注册的用户需要注册,填写一些个人信息,然后记录到数据库中。
用户密码修改功能,用在修改密码时需要先输入原密码,才能输入新的密码,原密码不对无法修改。
机票查询功能,用户可以查询到所有航班信息,也可以通过搜索航班号,目的地,起飞时间来查询特定的航班信息。
机票订购功能,在输入航班日期后会生成预览订单,提交后才会产生真正的订单,才能在订单页面看得到。
订单查询和删除功能,在这个页面,用户可以查到自己的订单。
如果用户行程有变,可以删除订单。
网站架构:网站的架构我主要做了前端机票展示和订购的机票部分,有以下模块组成。
如下图网站流程图:网上机票订购系统用户登录与注册生成机票订单浏览机票信息查看订单信息是否有账号开始登录订购机票查看机票查看订单注册否结束网站物理设计:网页内容存放在服务器端,用户信息、航班信息、订单信息存放在MySQL 数据库中,用户请求时服务器在从数据库中调出数据给用户。
三、系统实现开发环境:在虚拟机上搭建的Linux+Nginx+PHP+MySQL环境。
开发工具:Adobe Dreamweaver cc 2017开发环境配置:在linux系统上安装ftp服务器vsftpd,Winndows上Dreamweave通过配置ftp的方式连接nginx服务器。
如下图:(ftp地址为虚拟机IP地址)图3-1 ftp连接配置编程实现:(主要使用php语言)odbc_connection.php<?php$con = mysql_connect("localhost","root","123456");if (!$con)die('Could not connect: ' . mysql_error());mysql_select_db("shop",$con);>这是数据库连接的php代码,其中shop为数据库名。
login.php<?phpinclude "./odbc_connection.php";if(($_POST['UserId']<>"")&&($_POST['Password']<>"")) {$str=mysql_query("select UserID FROM users Where UserID='$_POST[UserId]' And Password='$_POST[Password]'");if($result = mysql_fetch_array($str)) {$_SESSION['UserId']=$result['UserID'];mysql_close($con);?><meta http-equiv="refresh" content="0;url=./filght.php"> <?php}else {echo "<script>alert('对不起,用户名或密码错误!');</script>";}} ?>图3-2 login.php表单代码省略,这段php代码主要用于判断用户登录帐号和密码是否与数据库相匹配,如果匹配,把帐号写入$_SESSION['UserId']中再跳转到首页filght.php。
reg.php<?phpinclude "./odbc_connection.php";$userid=$_POST['UserId'];$exit_flag=0;if($userid<>"") {if ((strlen($userid)<4) or (strlen($userid)>20)) {$strtemp="用户名必须大于4位小于20位";$exit_flag=1;}$strSql=mysql_query("select UserId FROM users Where UserId='$userid'");if($result = mysql_fetch_array($strSql)) {$strtemp="已有人使用该用户";$exit_flag=1;}if($exit_flag==0){$sql="INSERT INTO users(UserID,Password,RealName,Sex,Tel,Email,QQ) V ALUES ('$_POST[UserId]','$_POST[password]','$_POST[realname]','$_POST[sex]','$_POST [tel]','$_POST[email]','$_POST[QQ]')";mysql_query($sql);?><meta http-equiv="refresh" content="0;url=./reg-ok.php"><?phpmysql_close($con);} elseecho "<script>alert('提示:$strtemp,请重新填写!');</script>";} ?>图3-3 reg.php表单代码同样省略,上面php代码主要用于判断用户名长度大于4位小于20位,并且不能重复,如果满足条件则会执行插入语句,把用户数据插入数据库。
插入成功后会跳转到注册成功页面reg-ok.php,内容很简单就不放出来了。
Filght.php<?php include "./odbc_connection.php";$strSql=mysql_query("select Sex FROM users WhereUserID='$_SESSION[UserId]' ");$result=mysql_fetch_array($strSql);if($result['Sex']=="female")echo "<img src='images/female.jpg' alt='女' width='100' height='100'>";elseecho "<img src='images/male.jpg' alt='男' width='100' height='100'>";?>图3-4 filght.php页面布局参考了网站设计课本代码,参杂了其他网站的内容,做的还是比较丑,就不放出来了。
上面的php代码主要是通过读取登陆界面存入的$_SESSION来获得登录用户的用户名,同时也从数据库读出用户的性别信息,并判断输出的图片是男性还是女性。
book.php<form name=form2 method='post' action='<?php echo $_SERVER['PHP_SELF']; ?>'> <table width='100%' border='0' cellspacing='0' cellpadding='0' bgcolor='#FFFFFF' align='center' height='68'><tr><td height='32' align="center" bgcolor='#FFD6D6' ><strong style="color: #FC060A; font-size: 18px; font-family: alex-brush; font-style: normal; font-weight: 400;">搜索机票</strong></td></tr><tr><td height='33' bgcolor="#FCD5D5" align="center">航班号:<INPUT size=8 name="Airid" type='inputbox' class="inputbox">目的地:<INPUT size=6 name="destination" type='inputbox' class="inputbox"> 起飞时间:<INPUT size=6 name="departuretime" type='inputbox'class="inputbox"> <input type='submit' value='搜索' name='submit'></td></tr></table></form><?phpif($_POST['Airid']==""&&$_POST['departureplace']==""&&$_POST['departure time']){$result = mysql_query("SELECT * FROM filght Order By Departuretime Asc"); while($row = mysql_fetch_array($result)){?><form name="form1" method='post' action='preview-order.php'><table width='100%' border='1' cellspacing='1' cellpadding='4' bgcolor='#FFFFFF' align='center' height='74'><tr><td height='90'><table width='100%' border='0' cellspacing='0' cellpadding='4' align='center' bgcolor='#FFFFFF' ><tr><td width='30%' rowspan='3' align='center' bgcolor='#FFFFFF'><img src='images/airlogo.jpg' width='100' height='50' border='0'><?php echo "<p align='center' style='font-size: 16px'>".$row['AirID']."</p>"; ?></td> <?php echo "<td align='right' bgcolor='#FFFFFF' >".$row['Departuretime']."</td><td align='center' bgcolor='#FFFFFF' >----------></td><td align='left' bgcolor='#FFFFFF'>".$row['Landingtime']."</td>";?></tr><tr><?php echo "<td align='right' bgcolor='#FFFFFF'>".$row['Departureplace']."</td> <td align='center' bgcolor='#FFFFFF'>".$row['Airclass']."</td> <td align='left' bgcolor='#FFFFFF'>".$row['Destination']."</td>"; ?></tr><tr><td colspan='3' align='center' bgcolor='#FFFFFF'>价格:<?php echo $row['price'];?> 日期:<input size=2 name='Month' type='inputbox' style='border:1px solid #060606'>月<input size=2 name='Day' type='inputbox'style='border:1px solid #060606'>日 <input name='hide' type='hidden' value='<?php echo $row['AirID']; ?>'><input type='submit' value='订票' name='submit'></td></tr></table></td></tr></table> </form><br><?php }} else {$flag=0;$p=0;$str="SELECT * FROM filght ";if($_POST['Airid']<>""){$str=$str."where AirID='$_POST[Airid]'";$p=1;$flag=1;}if($_POST['destination']<>""){if($flag==1)$str=$str."and Destination='$_POST[destination]'";else {$str=$str." where Destination='$_POST[destination]'";$flag=1;}}else$flag=0;if($_POST['departuretime']<>""){if(($flag==1) || ($p==1))$str=$str."and Departuretime='$_POST[departureptime]'";else$str=$str."where Departuretime='$_POST[departuretime]'";}$str=$str."Order By Departuretime Asc";$result = mysql_query($str);while($row = mysql_fetch_array($result)){ ?><form name="form1" method='post' action='preview-order.php'><table width='100%' border='1' cellspacing='1' cellpadding='4' bgcolor='#FFFFFF' align='center' height='74'><tr><td height='90'><table width='100%' border='0' cellspacing='0' cellpadding='4' align='center' bgcolor='#FFFFFF' ><tr><td width='30%' rowspan='3' align='center' bgcolor='#FFFFFF'><img src='images/airlogo.jpg' width='100' height='50' border='0'><?php echo "<p align='center' style='font-size: 16px'>".$row['AirID']."</p>"; ?></td> <?php echo "<td align='right' bgcolor='#FFFFFF' >".$row['Departuretime']."</td><td align='center' bgcolor='#FFFFFF' >----------></td><td align='left' bgcolor='#FFFFFF'>".$row['Landingtime']."</td>";?></tr><tr><?php echo "<td align='right' bgcolor='#FFFFFF'>".$row['Departureplace']."</td> <td align='center' bgcolor='#FFFFFF'>".$row['Airclass']."</td><td align='left' bgcolor='#FFFFFF'>".$row['Destination']."</td>"; ?></tr><tr><td colspan='3' align='center' bgcolor='#FFFFFF'>价格:<?php echo $row['price'];?> 日期:<input size=2 name='Month' type='inputbox' style='border:1px solid #060606'>月<input size=2 name='Day' type='inputbox'style='border:1px solid #060606'>日 <input name='hide' type='hidden' value='<?php echo $row['AirID']; ?>'><input type='submit' value='订票' name='submit'></td></tr></table></td></tr></table> </form><br><?php }}mysql_close($con);?>图3-5 book.php 图3-6 左图搜索结果显示Book.php页面的内容为整个机票订购网站的核心内容,主要用于显示航班信息。