南京邮电大学管理学院
课程设计报告
课 程 名:课程设计Ⅱ-网站设计与开发 网站题目:网上机票订购系统 任课教师:洪小娟 专业:信息管理与信息系统 学 号: 姓 名: 成 绩:
2016/2017学年第2学期
南京邮电大学管理学院
指导教师成绩评定表
一、需求分析 网上机票订购系统
该网上机票订购系统的核心功能是提供网上机票订购业务。 用户需求分析
用户最基本需求就是查询到合适目的地、合适起飞时间的机票信息,并且能够下订单,下完订单后能够查到已经订购的机票的订单信息。如果用户需要改变行程可以删除订单,然后重新下订单。
用户还有注册帐号,填写个人信息的需求,这样才能把用户与机票信息相匹配,生成机票订单。
二、系统设计
数据库设计:数据库名为shop
用户信息表(表名:users )主要储存用户帐号、密码和其他一些基本信息。
图2-1 users表属性
航班信息表(表名:filght )储存航班号,飞机型号,出发地、目的地,起飞时间、到达时间、机票价格等信息。
图2-2 filght表属性
订单信息表(表名:orders )OrderID 为订单号,设置为自增属性,储存航班号、用户ID 、总价格、起飞日期等信息。
图2-3 orders表属性
功能设计:
用户登录功能:没有注册的用户需要注册,填写一些个人信息,然后记录到数据库中。
用户密码修改功能,用在修改密码时需要先输入原密码,才能输入新的密码,原密码不对无法修改。 机票查询功能,用户可以查询到所有航班信息,也可以通过搜索航班号,目的地,起飞时间来查询特定的航班信息。 机票订购功能,在输入航班日期后会生成预览订单,提交后才会产生真正的订单,才能在订单页面看得到。
订单查询和删除功能,在这个页面,用户可以查到自己的订单。如果用户行程有变,可以删除订单。 网站架构:
网站的架构我主要做了前端机票展示和订购的机票部分,有以下模块组成。如下图
网站物理设计:
网页内容存放在服务器端,用户信息、航班信息、订单信息存放在MySQL 数据库中,用户请求时服务器在从数据库中调出数据给用户。
三、系统实现
开发环境:在虚拟机上搭建的Linux+Nginx+PHP+MySQL环境。 开发工具:Adobe Dreamweavercc 2017 开发环境配置:
在linux 系统上安装ftp 服务器vsftpd ,Winndows 上Dreamweave 通过配置ftp 的方式连接nginx 服务器。如下图:(ftp 地址为虚拟机IP 地址)
图3-1 ftp连接配置 编程实现:(主要使用php 语言) odbc_connection.php
$con = mysql_connect("localhost","root","123456"); if (!$con)
die('Could not connect: ' . mysql_error()); mysql_select_db("shop",$con); ?>
这是数据库连接的php 代码,其中shop 为数据库名。
login.php
include "./odbc_connection.php";
if(($_POST['UserId']"")&&($_POST['Password']"")) { $str=mysql_query("select UserID FROM users UserID='$_POST[UserId]' And Password='$_POST[Password]'");
if($result = mysql_fetch_array($str)) {
Where
$_SESSION['UserId']=$result['UserID']; mysql_close($con); ?> } else {
echo "";
} }?>
图3-2 login.php
表单代码省略,这段php 代码主要用于判断用户登录帐号和密码是否与数据库相匹配,如果匹配,把帐号写入$_SESSION['UserId']中再跳转到首页filght.php 。 reg.php "") { if ((strlen($userid)20)) { $strtemp="用户名必须大于4位小于20位"; $exit_flag=1; } $strSql=mysql_query("select UserId FROM UserId='$userid'"); if($result = mysql_fetch_array($strSql)) { $strtemp="已有人使用该用户"; $exit_flag=1; }
if($exit_flag==0){
users Where
$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); ?>
echo ""; }?>
图3-3 reg.php 表单代码同样省略,上面php 代码主要用于判断用户名长度大于4位小于20位,并且不能重复,如果满足条件则会执行插入语句,把用户数据插入数据库。插入成功后会跳转到注册成功页面reg-ok.php ,内容很简单就不放出来了。 Filght.php
$strSql=mysql_query("select Sex FROM users Where UserID='$_SESSION[UserId]' ");
$result=mysql_fetch_array($strSql); if($result['Sex']=="female")
echo ""; else
echo "
' width='100' height='100'>";?>
图3-4 filght.php
页面布局参考了网站设计课本代码,参杂了其他网站的内容,做的还是比较丑,就不放出来了。上面的php 代码主要是通过读取登陆界面存入的$_SESSION来获得登录用户的用户名,同时也从数据库读出用户的性别信息,并判断输出的图片是男性还是女性。 book.php
if($_POST['Airid']==""&&$_POST['departureplace']==""&&$_POST['departuretime']){
$result = mysql_query("SELECT * FROM filght Order By Departuretime Asc"); while($row = mysql_fetch_array($result)){?>
"") { $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)) { ?>
图3-5 book.php 图3-6 左图搜索结果显示
Book.php 页面的内容为整个机票订购网站的核心内容,主要用于显示航班信息。form2表单为搜索机票部分的表单,form1表单参杂在用作显示航班信息的php 代码中,主要用于输入日期信息,用隐藏表单传递航班号。上图中大段php 代码主要分为两种情况输出,一是搜索框有内容的输出查询;二是搜索框为空时,输出所有航班信息。
preview-order.php
include "./odbc_connection.php";
mysql_query("set names gbk;");
$str1=mysql_query("select * FROM users Where UserID='$_SESSION[UserId]' ");
$result1 = mysql_fetch_array($str1);
?>
$str2=mysql_query("select * FROM filght Where AirID='$_POST[hide]' "); $result2 = mysql_fetch_array($str2);
$p=$result2['price']+50;
$str3="insert into orders(AirID,UserID,price,dates) values
('$_POST[hide]','$_SESSION[UserId]','$p','2017-$_POST[Month]-$_POST[Day]')"; mysql_query($str3);
$str4=mysql_query("select OrderID
UserID='$_SESSION[UserId]' ");
$result4=mysql_fetch_array($str4);
?> FROM orders Where
if($_POST['submit2']=="返回")
{
$del="delete from orders where UserID='$_SESSION[UserId]'";
?> mysql_query($del); ?>
图3-7 preview-order.php
该页面主要显示下订单后预览订单信息,并生成订单。第一部分主要用于获取图3-7上半部分用户信息;第二部分主要显示航班信息、总价格,并且生成订单(订单号在数据库中自增);第三部分主要用于判断用户如果放弃订单,则会执行删除代码删除已经生成的订单并返回book.php 。
Order.php
if($_POST['submit']=="删除订单")
{
$del="delete from orders where OrderID='".$_POST['HideAirid']."'";
mysql_query($del);
echo "";
?>
}
mysql_close($con);
?>
图3-8 order.php 图3-9 删除订单成功的提示
此页面主要用于展示用户的所有订单,显示订单的代码和book.php 差别不大,就是隐藏表单传递的值是OrderID 给上面的删除订单代码,让用户能删除指定的订单。
Updatepw.php
include "./odbc_connection.php";
if(($_POST['opasswd']"")&&($_POST['npasswd']"")) {
$str=mysql_query("select * FROM users Where UserID='$_SESSION[UserId]' And Password='$_POST[opasswd]'");
if($result = mysql_fetch_array($str)) {
$str1="update users set Password='$_POST[npasswd]' where UserID='$_SESSION[UserId]' ";
mysql_query($str1);
mysql_close($con);
echo ""; ?>
else {
}
}
?> echo "";
图3-10 updatepw.php
此页面用来修改密码,html 语言与登录页面相似,php 代码不同,先需要验证原密码,原密码错误不能修改,并弹出错误提示。
Out.php
session_start();
unset($_SESSION['UserId']);
session_destroy();
?>
次代码用来注销用户,会删除$_SESSION['UserId'],然后跳转login.php 。 编程错误及解决方法
问题一:Dreamwear 用ftp 方式连接不上linux 服务器
图3-11 ftp连接错误
① Linux 系统的iptables 阻挡了端口连接。解决方案:使用serviceiptablesstop 关闭防火墙就好了;
② 使用root 用户登录linux 系统时,vsftpd 目录下记录有禁止连接ftp 帐号的文件ftpusers 中有root 用户。解决方案:打开/etc/vsftpd/ftpusers,删除root 即可。 ③ 连接时还会提示出现未知错误,可能是selinux 未关闭。解决方案:使用setenforce 0临时关闭selinux 即可;
以上就是我在用dreamweave 连接linux 系统出现过的问题,我都是通过百度和自己摸索得出解决方案。
问题二:使用php 的SESSION 报错(上方黑体字部分)
图3-12 session使用不当
错误原因是在使用session_start();时前面还有值输出,在通过查看源代码时发现在创建php 文件时Dreamwear 自动添加的在
之前,所以只要把删除即可。
问题三:SQL 查询语句出错及其他问题
图3-13 preview-order.php的各种问题
订单日期的错误是因为php.ini 中默认设置格林威治时间,而我系统的时间匹配的是亚洲/上海时间,所以报错。解决方案:在开头设置php 时区为上海时区,如下ini_set('date.timezone','Asia/Shanghai');
下面一条错误是提示我的SQL 查询语句有误,再仔细1检查我的查询语句后发现,由于自己粗心,英文逗号敲成了中文,所以语法出错。
由于我初学php 语言,每新编写一个php 页面都出现过许多小的php 语法错误,篇幅关系就不一一举例了。
四、实践收获和心得体会
通过几天的努力,终于完成这个简单的网上机票订购系统编写。其实,我在此之前没用过php 语言,而我之所以选择使用php 语言编写,主要是因为之前一段时间学习linux 系统,在虚拟机上搭好php 所需要的环境,再加上自己也想学一些php 知识,所以就选择使用php 语言搭建动态网页。
我此次设计并编写的网上机票订购系统,主要给用户提供机票的查询和订购功能,我主要做了用户需要使用的功能,管理员功能待开发。系统的运行环境是linux+ngin+mysql+php,网站的编写使用Dreamweaver2017。
由于我是初学php ,基本上没编写一个网页都会遇到php 语法错误;php 参数书写的格式不对,导致获取不了表单的信息;还有遇到一些逻辑错误,比如说搜索机票功能搜索不了特定的航班信息,删除订单需要点击两次,都是我在编写时遇到的逻辑错误。我在遇到php 语法和php 参数书写格式错误时,是通过百度其他人写的php 代码作为参考,对比自己的代码,找出问题所在。在遇到逻辑错误时就检查自己的if ’判断语句,看看是不是有括号没加问题等。
通过此次的课程设计,让我对温习以前学习网站设计,数据库的等知识,学到了一点php 编程知识,学会了使用Dreamwear 编写网站,获益匪浅,让我对网站设计有了更深的认识。
南京邮电大学管理学院
课程设计报告
课 程 名:课程设计Ⅱ-网站设计与开发 网站题目:网上机票订购系统 任课教师:洪小娟 专业:信息管理与信息系统 学 号: 姓 名: 成 绩:
2016/2017学年第2学期
南京邮电大学管理学院
指导教师成绩评定表
一、需求分析 网上机票订购系统
该网上机票订购系统的核心功能是提供网上机票订购业务。 用户需求分析
用户最基本需求就是查询到合适目的地、合适起飞时间的机票信息,并且能够下订单,下完订单后能够查到已经订购的机票的订单信息。如果用户需要改变行程可以删除订单,然后重新下订单。
用户还有注册帐号,填写个人信息的需求,这样才能把用户与机票信息相匹配,生成机票订单。
二、系统设计
数据库设计:数据库名为shop
用户信息表(表名:users )主要储存用户帐号、密码和其他一些基本信息。
图2-1 users表属性
航班信息表(表名:filght )储存航班号,飞机型号,出发地、目的地,起飞时间、到达时间、机票价格等信息。
图2-2 filght表属性
订单信息表(表名:orders )OrderID 为订单号,设置为自增属性,储存航班号、用户ID 、总价格、起飞日期等信息。
图2-3 orders表属性
功能设计:
用户登录功能:没有注册的用户需要注册,填写一些个人信息,然后记录到数据库中。
用户密码修改功能,用在修改密码时需要先输入原密码,才能输入新的密码,原密码不对无法修改。 机票查询功能,用户可以查询到所有航班信息,也可以通过搜索航班号,目的地,起飞时间来查询特定的航班信息。 机票订购功能,在输入航班日期后会生成预览订单,提交后才会产生真正的订单,才能在订单页面看得到。
订单查询和删除功能,在这个页面,用户可以查到自己的订单。如果用户行程有变,可以删除订单。 网站架构:
网站的架构我主要做了前端机票展示和订购的机票部分,有以下模块组成。如下图
网站物理设计:
网页内容存放在服务器端,用户信息、航班信息、订单信息存放在MySQL 数据库中,用户请求时服务器在从数据库中调出数据给用户。
三、系统实现
开发环境:在虚拟机上搭建的Linux+Nginx+PHP+MySQL环境。 开发工具:Adobe Dreamweavercc 2017 开发环境配置:
在linux 系统上安装ftp 服务器vsftpd ,Winndows 上Dreamweave 通过配置ftp 的方式连接nginx 服务器。如下图:(ftp 地址为虚拟机IP 地址)
图3-1 ftp连接配置 编程实现:(主要使用php 语言) odbc_connection.php
$con = mysql_connect("localhost","root","123456"); if (!$con)
die('Could not connect: ' . mysql_error()); mysql_select_db("shop",$con); ?>
这是数据库连接的php 代码,其中shop 为数据库名。
login.php
include "./odbc_connection.php";
if(($_POST['UserId']"")&&($_POST['Password']"")) { $str=mysql_query("select UserID FROM users UserID='$_POST[UserId]' And Password='$_POST[Password]'");
if($result = mysql_fetch_array($str)) {
Where
$_SESSION['UserId']=$result['UserID']; mysql_close($con); ?> } else {
echo "";
} }?>
图3-2 login.php
表单代码省略,这段php 代码主要用于判断用户登录帐号和密码是否与数据库相匹配,如果匹配,把帐号写入$_SESSION['UserId']中再跳转到首页filght.php 。 reg.php "") { if ((strlen($userid)20)) { $strtemp="用户名必须大于4位小于20位"; $exit_flag=1; } $strSql=mysql_query("select UserId FROM UserId='$userid'"); if($result = mysql_fetch_array($strSql)) { $strtemp="已有人使用该用户"; $exit_flag=1; }
if($exit_flag==0){
users Where
$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); ?>
echo ""; }?>
图3-3 reg.php 表单代码同样省略,上面php 代码主要用于判断用户名长度大于4位小于20位,并且不能重复,如果满足条件则会执行插入语句,把用户数据插入数据库。插入成功后会跳转到注册成功页面reg-ok.php ,内容很简单就不放出来了。 Filght.php
$strSql=mysql_query("select Sex FROM users Where UserID='$_SESSION[UserId]' ");
$result=mysql_fetch_array($strSql); if($result['Sex']=="female")
echo ""; else
echo "
' width='100' height='100'>";?>
图3-4 filght.php
页面布局参考了网站设计课本代码,参杂了其他网站的内容,做的还是比较丑,就不放出来了。上面的php 代码主要是通过读取登陆界面存入的$_SESSION来获得登录用户的用户名,同时也从数据库读出用户的性别信息,并判断输出的图片是男性还是女性。 book.php
if($_POST['Airid']==""&&$_POST['departureplace']==""&&$_POST['departuretime']){
$result = mysql_query("SELECT * FROM filght Order By Departuretime Asc"); while($row = mysql_fetch_array($result)){?>
"") { $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)) { ?>
图3-5 book.php 图3-6 左图搜索结果显示
Book.php 页面的内容为整个机票订购网站的核心内容,主要用于显示航班信息。form2表单为搜索机票部分的表单,form1表单参杂在用作显示航班信息的php 代码中,主要用于输入日期信息,用隐藏表单传递航班号。上图中大段php 代码主要分为两种情况输出,一是搜索框有内容的输出查询;二是搜索框为空时,输出所有航班信息。
preview-order.php
include "./odbc_connection.php";
mysql_query("set names gbk;");
$str1=mysql_query("select * FROM users Where UserID='$_SESSION[UserId]' ");
$result1 = mysql_fetch_array($str1);
?>
$str2=mysql_query("select * FROM filght Where AirID='$_POST[hide]' "); $result2 = mysql_fetch_array($str2);
$p=$result2['price']+50;
$str3="insert into orders(AirID,UserID,price,dates) values
('$_POST[hide]','$_SESSION[UserId]','$p','2017-$_POST[Month]-$_POST[Day]')"; mysql_query($str3);
$str4=mysql_query("select OrderID
UserID='$_SESSION[UserId]' ");
$result4=mysql_fetch_array($str4);
?> FROM orders Where
if($_POST['submit2']=="返回")
{
$del="delete from orders where UserID='$_SESSION[UserId]'";
?> mysql_query($del); ?>
图3-7 preview-order.php
该页面主要显示下订单后预览订单信息,并生成订单。第一部分主要用于获取图3-7上半部分用户信息;第二部分主要显示航班信息、总价格,并且生成订单(订单号在数据库中自增);第三部分主要用于判断用户如果放弃订单,则会执行删除代码删除已经生成的订单并返回book.php 。
Order.php
if($_POST['submit']=="删除订单")
{
$del="delete from orders where OrderID='".$_POST['HideAirid']."'";
mysql_query($del);
echo "";
?>
}
mysql_close($con);
?>
图3-8 order.php 图3-9 删除订单成功的提示
此页面主要用于展示用户的所有订单,显示订单的代码和book.php 差别不大,就是隐藏表单传递的值是OrderID 给上面的删除订单代码,让用户能删除指定的订单。
Updatepw.php
include "./odbc_connection.php";
if(($_POST['opasswd']"")&&($_POST['npasswd']"")) {
$str=mysql_query("select * FROM users Where UserID='$_SESSION[UserId]' And Password='$_POST[opasswd]'");
if($result = mysql_fetch_array($str)) {
$str1="update users set Password='$_POST[npasswd]' where UserID='$_SESSION[UserId]' ";
mysql_query($str1);
mysql_close($con);
echo ""; ?>
else {
}
}
?> echo "";
图3-10 updatepw.php
此页面用来修改密码,html 语言与登录页面相似,php 代码不同,先需要验证原密码,原密码错误不能修改,并弹出错误提示。
Out.php
session_start();
unset($_SESSION['UserId']);
session_destroy();
?>
次代码用来注销用户,会删除$_SESSION['UserId'],然后跳转login.php 。 编程错误及解决方法
问题一:Dreamwear 用ftp 方式连接不上linux 服务器
图3-11 ftp连接错误
① Linux 系统的iptables 阻挡了端口连接。解决方案:使用serviceiptablesstop 关闭防火墙就好了;
② 使用root 用户登录linux 系统时,vsftpd 目录下记录有禁止连接ftp 帐号的文件ftpusers 中有root 用户。解决方案:打开/etc/vsftpd/ftpusers,删除root 即可。 ③ 连接时还会提示出现未知错误,可能是selinux 未关闭。解决方案:使用setenforce 0临时关闭selinux 即可;
以上就是我在用dreamweave 连接linux 系统出现过的问题,我都是通过百度和自己摸索得出解决方案。
问题二:使用php 的SESSION 报错(上方黑体字部分)
图3-12 session使用不当
错误原因是在使用session_start();时前面还有值输出,在通过查看源代码时发现在创建php 文件时Dreamwear 自动添加的在
之前,所以只要把删除即可。
问题三:SQL 查询语句出错及其他问题
图3-13 preview-order.php的各种问题
订单日期的错误是因为php.ini 中默认设置格林威治时间,而我系统的时间匹配的是亚洲/上海时间,所以报错。解决方案:在开头设置php 时区为上海时区,如下ini_set('date.timezone','Asia/Shanghai');
下面一条错误是提示我的SQL 查询语句有误,再仔细1检查我的查询语句后发现,由于自己粗心,英文逗号敲成了中文,所以语法出错。
由于我初学php 语言,每新编写一个php 页面都出现过许多小的php 语法错误,篇幅关系就不一一举例了。
四、实践收获和心得体会
通过几天的努力,终于完成这个简单的网上机票订购系统编写。其实,我在此之前没用过php 语言,而我之所以选择使用php 语言编写,主要是因为之前一段时间学习linux 系统,在虚拟机上搭好php 所需要的环境,再加上自己也想学一些php 知识,所以就选择使用php 语言搭建动态网页。
我此次设计并编写的网上机票订购系统,主要给用户提供机票的查询和订购功能,我主要做了用户需要使用的功能,管理员功能待开发。系统的运行环境是linux+ngin+mysql+php,网站的编写使用Dreamweaver2017。
由于我是初学php ,基本上没编写一个网页都会遇到php 语法错误;php 参数书写的格式不对,导致获取不了表单的信息;还有遇到一些逻辑错误,比如说搜索机票功能搜索不了特定的航班信息,删除订单需要点击两次,都是我在编写时遇到的逻辑错误。我在遇到php 语法和php 参数书写格式错误时,是通过百度其他人写的php 代码作为参考,对比自己的代码,找出问题所在。在遇到逻辑错误时就检查自己的if ’判断语句,看看是不是有括号没加问题等。
通过此次的课程设计,让我对温习以前学习网站设计,数据库的等知识,学到了一点php 编程知识,学会了使用Dreamwear 编写网站,获益匪浅,让我对网站设计有了更深的认识。