【超级超级超级超级肝的课设,发出来留个念~】

之前学数据库的时候用java简单实现了民航售票管理端以及客户端的一些功能,这次课程设计算是对上次课设的补充和完善吧,废话不多说了直接上图(有一些小小简陋,轻喷啊!)

一.主页

emmm其实俺也编不出来那么“精致”的界面,好多都是Ctrl+c啦。logo是俺们参加挑战杯设计的,正好能拿过来用,反正就是怎么省事怎么来。

简陋的登录界面——一开始以为挺好弄的,没想到就这一个小熊玩意儿弄了两整天才调好,又是div又是servlet又是Javabean什么什么的,代码在下面哈↓(ps:这是个固定div,有想拿走的可以自己写一下相应div属性)

1.表单

<div class="signform" id="signform" style="display: none"><div class="signclose"><img src="data:images/cuohao.png" width="35px" height="35px" onclick="signclose()"></div><form action="loginServlet" method="post"><div class="userdiv"><input id="user" class="signinput" type="text" placeholder="手机号" name="cp" ></div><div class="pwddiv"><input id="pwd" class="signinput" type="password" placeholder="密码" name="cpassword"></div><div class="yzmdiv"><br><input id="yzm" class="" type="text" placeholder="验证码" name="code"><img border=0 src="validate.jsp"></div><div class="postdiv"><button>登录</button></div></form><br><div class="change" style="color: #4d4d4d"><p>还没有账号?赶快<a href="register.jsp" style="text-decoration: none;color: #43A047">注册</a>一个吧</p></div></div>

2.css属性包(好多是无关项,俺没摘出来)

#displaysign{position: relative;top: 80px;width: 70px;height: 40px;
}
.signform {font-family: 微软雅黑;position: fixed;background-color: white;top: 20%;left: 30%;width: 500px;height: 400px;border-radius: 1em;text-align: center;z-index: 999;
}
#registerform {height: 450px;
}
.signclose {cursor: pointer;float: right;overflow: hidden;text-align: center;position: relative;height: 35px;width: 35px;margin-top: 10px;margin-right: 10px;
}
#registerloading{position: absolute;width: 25px;height: 25px;left: 410px;top: 90px;
}
.signinput {text-align: center;border-radius: 0.2em;width: 280px;height: 45px;border: none;background-color:#f2f2f2;font-size: 28px;
}
.signinput::-webkit-input-placeholder {font-size: 26px;
}
.userdiv {position: relative;margin-top: 80px;
}
.pwddiv {position: relative;margin-top: 20px;
}
.yzmdiv {position: relative;margin-top: 10px;
}
.postdiv {position: relative;margin-top: 20px;
}
.postdiv button {cursor: pointer;color: white;font-size: 26px;border: none;border-radius: 0.4em;width: 280px;height: 45px;background-color:#4CAF50;
}
.yyy {position: relative;margin-top: 20px;
}#yyy {position: relative;margin-top: 20px;
}
#airbu {cursor: pointer;color: white;font-size: 26px;border: none;border-radius: 0.4em;width: 100px;height: 45px;background-color:#2e6da4;
}
#anum {position: relative;margin-top: 40px;
}
#airbua {cursor: pointer;color: white;font-size: 26px;border: none;border-radius: 0.4em;width: 200px;height: 45px;background-color:#2e6da4;
}
#airbub {cursor: pointer;color: white;font-size: 26px;border: none;border-radius: 0.4em;width: 320px;height: 45px;background-color:#ac2925;
}
#airbuc {cursor: pointer;color: white;font-size: 26px;border: none;border-radius: 0.4em;width: 170px;height: 45px;background-color:#67b168;
}
#airbud {cursor: pointer;color: white;font-size: 26px;border: none;border-radius: 0.4em;width: 480px;height: 45px;background-color:#d58512;
}#airbue {cursor: pointer;color: white;font-size: 26px;border: none;border-radius: 0.4em;width: 180px;height: 45px;background-color:#4e4f51;
}.airfont {font-family: 微软雅黑;color: #4e4f51;size: 4px;font-weight: bold;
}
.aircheck {font-family: 微软雅黑;color: orangered;size: 4px;font-weight: bold;
}.checklist{color: #222222;font-weight: bold;font-family: 微软雅黑;
}

 3.登录servlet(LoginServlet.java)

package com.test.servlet;
import java.sql.*;
import java.io.*;import javax.servlet.*;
import javax.servlet.http.*;import com.test.jdbc.SqlSrvDBConn;
import com.test.model.vo.UserTable;public class LoginServlet extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{request.setCharacterEncoding("gb2312"); //设置请求编码String cp=request.getParameter("cp");//获取提交的用户名String cpassword=request.getParameter("cpassword");//获取提交的密码boolean validated=false; //验证成功标识SqlSrvDBConn sqlsrvdb=new SqlSrvDBConn();HttpSession session=request.getSession();//获得会话对象,用来保存当前登录用户的信息UserTable user=null; //先获得UserTable对象,如果是第一次访问该页,用户对象肯定为空,但如果是第二次甚至是第三次,就直接登录主页而无须再次重复验证该用户的信息user=(UserTable)session.getAttribute("user");//如果用户是第一次进入,会话中尚未存储user持久化对象,故为nullif(user==null){//查询userTable表中的记录String sql="select * from userTable";ResultSet rs=sqlsrvdb.executeQuery(sql); //取得结果集try{while(rs.next()){if((rs.getString("cp").trim().compareTo(cp)==0)&&(rs.getString("cpassword").compareTo(cpassword)==0)){user=new UserTable(); //创建持久化的JavaBean对象useruser.setCname(rs.getString(1));user.setCsex(rs.getString(2));user.setCid(rs.getString(3));user.setCaddress(rs.getString(4));user.setCvip(rs.getString(5));user.setCp(rs.getString(6));user.setCpassword(rs.getString(7));session.setAttribute("user",user);//把user对象存储在会话中validated=true;  //标识为true表示验证成功通过}}rs.close();}catch(SQLException e){e.printStackTrace();}sqlsrvdb.closeStmt();sqlsrvdb.closeConn();}else{validated=true;   //该用户在之前已登录过并成功验证,故标识为true表示无须再验了}String code=request.getParameter("code");//获取session中的验证码String randStr=(String)session.getAttribute("randStr");response.setCharacterEncoding("gb2312");PrintWriter out=response.getWriter();if(validated && code.equals(randStr)){   //验证成功跳转到main.jspresponse.sendRedirect("index2.jsp");}else{  //验证失败跳转到error.jspresponse.sendRedirect("error.jsp");}}public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{doGet(request,response);}
}

4.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app><servlet><servlet-name>LoginServlet</servlet-name><servlet-class>com.test.servlet.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/loginServlet</url-pattern></servlet-mapping>
</web-app>

5.验证码(validate.jsp)

<%@page language="java" import="java.awt.*,java.awt.image.BufferedImage,java.util.*,javax.imageio.ImageIO" pageEncoding="gb2312"%>
<%response.setHeader("Cache-Control","no-cache");// 在内存中创建图象 int width=60,height=20;BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//获取画笔Graphics g=image.getGraphics();//设定背景色 g.setColor(new Color(200,200,200));g.fillRect(0,0,width,height);//取随机产生的验证码(4位数字) Random rnd=new Random();int randNum=rnd.nextInt(9000)+1000;String randStr=String.valueOf(randNum);//将验证码存入sessionsession.setAttribute("randStr",randStr);//将验证码显示到图象中 g.setColor(Color.black);g.setFont(new Font("",Font.PLAIN,20));g.drawString(randStr,10,17);//随机产生100个干扰点,使图象中的验证码不易被其他程序探测到 for(int i=0;i<100;i++){int x=rnd.nextInt(width);int y=rnd.nextInt(height);g.drawOval(x,y,1,1);}//输出图象到页面 ImageIO.write(image,"JPEG",response.getOutputStream());out.clear();out=pageContext.pushBody();
%>

二. 功能界面

1.ER图以及流程图

2.功能简介

(1客户端:

客户可以通过登录该系统进行航班的查询,其查询方式分为“按日期查询”、“按起始地与目的地查询”、“按日期,起始地与目的地查询”以及“查询所有航班”四种,用户可以通过各种查询渠道得到符合条件的航班信息,并且能根据自己的需求进行购票。在购票界面,用户可以自行挑选客机座位号,并存入自己的订单里。在购票操作中,普通用户原价购买商品,而vip客户可享受8折优惠,另外非会员客户也能办理vip项目。

每个客户有自己的风航空间,在各自的空间里可以更改用户名、密码等信息。

(2管理端:

管理员可以通过登录管理系统进行机票的查询,其查询方式分为“按日期查询”、“按起始地与目的地查询”、“按日期,起始地与目的地查询”以及“查询所有航班”四种,管理员可以通过各种渠道得到符合条件的机票信息,并且能根据需求进行机票的增删改操作等等。

3.界面展示

(整套流程如下)


4.机票信息显示界面代码(仅关键部分代码)

 <% request.setCharacterEncoding("utf-8");if(session.getAttribute("ad")==null) {String ayear = request.getParameter("year");String amonth = request.getParameter("month");String aday = request.getParameter("day");String ad = ayear + amonth + aday;session.setAttribute("ad", ad);out.print(ayear + "年" + amonth + "月" + aday + "日的航班");}String ad1 = (String) session.getAttribute("ad");%><table border="1" width="700" bgcolor="#b0e0e6"  align="center"><tr><th>序号</th><th>航班号</th><th>logo</th><th>航空公司</th><th>始发地</th><th>目的地</th><th>起飞时间</th><th>余票</th><th>。。。</th></tr><%String url="jdbc:sqlserver://localhost:1433;databaseName=fenghang";String sqluser="sa";String password="123456";Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");Connection conn=DriverManager.getConnection(url,sqluser,password);int pageSize;   //一页显示的记录数int totalSize;   //记录总数int totalPage;  //总页数int currentPage;       //待显示页码String strPage;int i,id;pageSize=10; //设置一页显示的记录数strPage=request.getParameter("page"); //取得待显示页码if(strPage==null){currentPage=1;}else{currentPage=Integer.parseInt(strPage); //将字符串转换成整型}Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);String  sql="select * from 航班表 where ad='"+ ad1 +"'";ResultSet  rs=stmt.executeQuery(sql);rs.last(); //光标指向查询结果集中最后一条记录totalSize=rs.getRow(); //获取记录总数totalPage=(totalSize+pageSize-1)/pageSize; //记算总页数if(totalPage>0){rs.absolute((currentPage-1)*pageSize+1);//将记录指针定位到待显示页的第一条记录上i=0;id=(currentPage-1)*pageSize+1;String cNum;while(i<pageSize && !rs.isAfterLast()){cNum=rs.getString("anum");%><tr><td align="center"><a class="airfont"><%=id%></a></td><td align="center"><a class="airfont"><%=cNum%></a></td><td align="center"><img src="../images/air/<%=rs.getString("acom")%>.jpg" width="50px" height="50px"></td><td align="center"><a class="airfont"><%=rs.getString("acom")%></a></td><td align="center"><a class="airfont"><%=rs.getString("asta")%></a></td><td align="center"><a class="airfont"><%=rs.getString("ades")%></a></td><td align="center"><a class="airfont"><%=rs.getString("ad")%></a></td><td align="center"><a class="airfont"><%=rs.getString("are")%></a></td><td align="center"><a class="aircheck" href="<% String ppare=rs.getString("are");if (ppare.equals("0"))out.print("../air/nt.jsp");elseout.print("../check/ccc.jsp?anum="+cNum);%>">查看</a></td></tr><%rs.next();i++;id++;}}%></table><br><div align="center"><a style="font-size: x-large;color: slateblue">第<%=currentPage%>页 ,共<%=totalPage%>页</a><%if(currentPage>1){%><button id="airbu"><a href="danum1.jsp?page=1&ad=<%=ad1%>" style="color: ghostwhite">第一页</a></button><button id="airbu"><a href="danum1.jsp?page=<%=currentPage-1%>&ad=<%=ad1%>" style="color: ghostwhite">上一页</a></button><%}if(currentPage<totalPage){%><button id="airbu"><a href="danum1.jsp?page=<%=currentPage+1%>&ad=<%=ad1%>" style="color: ghostwhite">下一页</a></button><button id="airbu"><a href="danum1.jsp?page=<%=totalPage%>&ad=<%=ad1%>" style="color: ghostwhite">尾页</a></button><%}rs.close();stmt.close();conn.close();%>

三.参考文献

[1] 耿祥义等.Java2实用教程(第五版)[M].北京:清华大学出版社,2017

[2] 耿祥义等.JSP实用教程(第4版)[M].北京:清华大学出版社,2021

[3] 储久良等.Web前端开发技术——HTML、CSS、JavaScript(第2版)[M].北京:清华大学出版社,2017

[4] 云婷.价值链视角下在线票务服务企业O2O盈利模式研究——以携程网为例 [D].呼和浩特:内蒙古农业大学,2021:6.

四.系统说明

1.本系统需搭载jdk1.8与Tomcat9.0服务器进行运行

2.本系统的最好通过IntelliJ IDEA进行编译及运行,也可通过eclipse运行,但需要修改相关文件(web文件夹重命名为webContent文件夹等等)。

3.本系统src文件夹里存放相关java文件,web文件夹里存放视图相关文件。

4.大致文件结构:

①air目录:客户查询航班类文件

②check目录:购票类文件

③css目录:相关css文件

④customer目录:用户空间及订单类文件

⑤images目录:图片文件

⑥js目录:相关js文件

⑦manager:管理员操作类文件

⑧index.jsp:系统主页

5.数据库要使用Microsoft SQL Server,并将相关文件导入数据库。

五.搞一波小外宣啦!

这是俺的b站嗷,三连三连懂~

18,19

六.再有什么问题留言问就好啦,也希望得到各路大佬的指点!

JSP课程设计——民航售票管理系统相关推荐

  1. 基于Python+Sqlite实现(图形化)民航售票管理系统【100010198】

    民航管理系统--数据库课程设计 一. 概述 民航售票管理系统主要分为机场.航空公司和客户三方的服务.航空公司提供航线和飞机的资料,机场则对在本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该 ...

  2. [含课设报告+源码等]基于JSP实现的飞机票售票管理系统[包运行成功]

    下载:https://download.csdn.net/download/ll6666668/64026192 项目介绍: [含课设报告+源码等]基于JSP实现的飞机票售票管理系统[包运行成功][含 ...

  3. asp毕业设计——基于asp+sqlserver的民航售票管理系统设计与实现(毕业论文+程序源码)——民航售票管理系统

    基于asp+sqlserver的民航售票管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+sqlserver的民航售票管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...

  4. 基于html人事管理报告,基于C++builder的课程设计报告 (人事管理系统)

    内容介绍 原文档由会员 bshhty 发布 C++builder课程设计 ( 人事信息管理系统 ) 12页 7000余字 资料包含:完整课程设计报告,源代码等相关设计资料.本课程设计为RAR个文件. ...

  5. 查询学生选修课程管理系统java_JAVA数据库课程设计学生选课管理系统的

    <JAVA数据库课程设计学生选课管理系统的>由会员分享,可在线阅读,更多相关<JAVA数据库课程设计学生选课管理系统的(59页珍藏版)>请在人人文库网上搜索. 1.一.课程设计 ...

  6. c语言用链表写管理系统程序,c语言课程设计职工信息管理系统单链表实现程序源代码-20210401015126.docx-原创力文档...

    文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] C语言课程设计职工信息管理系统单链表实现程序源代 ...

  7. MFC课程设计 --学生成绩管理系统

    MFC课程设计 ,C++课程设计 --学生成绩管理系统 ps:因为课设完成的过程大家都不太一样,以下的代码仅供学习一下在MFC下各个控件的用法,有问题欢迎留言讨论. 实验目的 使用MFC类库编制应用程 ...

  8. c语言课程设计(图书馆管理系统)

    大一c语言课程设计:图书馆管理系统. 图书管理系统,功能齐全拿来就能用 1.主界面 代码段 void main() { int n;Sleep(300);loop1:tongji(); printf( ...

  9. c语言数据结构课程设计停车场管理系统,数据结构课程设计报告停车场管理系统...

    <数据结构课程设计报告停车场管理系统>由会员分享,可在线阅读,更多相关<数据结构课程设计报告停车场管理系统(8页珍藏版)>请在人人文库网上搜索. 1.数据结构课程设计报告系 别 ...

  10. c语言课程设计宠物店,c语言课程设计-宠物店信息管理系统.doc

    c语言课程设计-宠物店信息管理系统 合肥学院 计算机科学与技术系 课程设计报告 2012-2013学年第二学期 课程面向过程综合设计课程设计名称宠物(小动物)店信息管理系统 学生姓名宋俊 学号 专业班 ...

最新文章

  1. 实现了html实现网页无限下滑,10行代码实现页面无限滚动
  2. 使用Linux进行缓冲区溢出实验的配置记录
  3. IEEE史上首位华人主席!马里兰大学终身教授刘国瑞当选
  4. Solidworks如何创建投影曲线
  5. SVM训练时候样本不均衡怎么设置惩罚项
  6. 【双百解法】剑指 Offer 11. 旋转数组的最小数字
  7. 【 Grey Hack 】加强版nmap
  8. MySQL命令(二)| 表的增删查改、聚合函数(复合函数)、联合查询
  9. 链家大数据多维分析引擎实践
  10. linux循环控制结构,Linux Shell 之 Shell 基本控制结构(二)(循环结构)
  11. Python3列表、元组及之间的区别和转换
  12. 销毁Spring Bean的三种方法
  13. (转帖)美国人教你这样用Google,你真的会变特工
  14. gst-launch-1.0
  15. Hold住通话有三种方式
  16. 管道通信的基本流程和代码
  17. 全国计算机二级考试中 ms office高级应用与C语言哪个适合大学生?
  18. 水果店节日活动营销方案,水果店如何做营销活动
  19. oracle定时频率,Oracle 定时任务 — 定时执行存储过程
  20. 【一周头条盘点】中国软件网(2018.5.7~2018.5.11)

热门文章

  1. 360校招题之小明看花
  2. java 如何清除临时文件_如何删除Java中的临时文件?
  3. 学习使用jQuery中的on() 方法
  4. flutter 屏幕截图,超出屏幕部分截图
  5. vue + echarts 以山西地图为例
  6. css flex布局问题width:auto
  7. Beaglebone Black–I2C 接 BMP280 获取当前温度
  8. forward和include的区别详解
  9. H310C,B365,M.2 NVME SSD,USB3.0,安装 WIN7 64 位
  10. bitmap 设置图片尺寸,避免 内存溢出 OutOfMemoryError的优化方法