概述

使用create-react-app模板模仿12306app,实现了登陆和查票购票管理,结合express+mysql做后台,实现数据存储。 github地址:https://github.com/jinqiang12345/react-12306

详细

react-12306

使用create-react-app模板模仿12306app,实现了登陆和查票购票管理,结合express+mysql做后台,实现数据存储

前辈让我模仿一下12306把前后端都联系起来,我就建了这个项目,上次使的是antd提供的模板,这次选用了create-react-app模板,自己引入redux、react-router、material-UI搭建前端界面,用express+mysql做后端,用fetchAPI连接,用redux存数据,在不同页面使用,项目过程中有很多问题,不过通过google,segmentfault提问都得到了解决。

我也是一名将要毕业的学生,为了找工作想做一些项目练练手,这个项目功能不是很多,但是把一些框架的功能都使用上了,目前还可以正常运行,如果感兴趣的话可以下载来看看,如果运行不了的话,可以留言,我会尽力解决,当然我可能会答复不及时,请见谅。

一、实现功能

  • 用户登录

  • 用户注册

  • 记住密码

  • 自动登陆

  • 选择出发车站和目的车站

  • 查询指定车站车次车票

  • 购买车票

  • 退票

  • 余票更新

  • 历史订单记录

  • 退出登录

  • app页面

二、项目截图

 

未登陆时点击订单查询页面会自动跳转到登陆页面

 

  • 登陆验证部分截图

   

登陆成功

  • 注册失败

  • 查询车票和筛选车次

 

  • 查询中

  • 购票退票

 

  • 退出登陆

三、运行项目

  • 首先确保已安装mysql(因为mysql官网上下载mysql需要注册,我使用的是免费版的wampserver,里面含有mysql,同样也可以使用)

  • 导入文件夹下两个sql文件

  • 在mysql中创建用户名数据表user(id, password)

  • 在mysql中创建train火车票数据表train(id, start, end, number, title, time, type)

  • 在运行之前要在12306server/router文件夹下更改数据库配置(用户名,登陆密码,数据库名,表名等)

  • 上述工作完成后打开12306server文件夹运行

  • npm install

  • node app.js //这样你的服务器已经在localhost:5000打开了

  • 接下来打开12306文件夹运行

  • npm install

  • npm start //这样12306就在localhost:3000打开了

四、项目目录

12306server
  • -node_modules

  • -router //路由文件夹,存放处理不同请求的文件

  • --insertrecord.js //购买火车票后,将数据存入数据库

  • --login.js //用户登陆时调用

  • --record.js //查询用户所有火车票传回前端

  • --removerecord.js //用户删除火车票时处理

  • --signin.js //新用户注册时调用

  • --train.js //指定出发地和目的地的全部车次

  • -app.js //项目入口文件

  • -package.json

12306
  • -node_modules

  • -public

  • -src

  • --actions //redux action

  • ---index.js //存放redux action 例如登陆后保存用户名,退出登陆后删除记录

  • --components //页面复用组件

  • ---dashtable.jsx //对应page/order界面最上部功能栏

  • ---dialog.jsx //购买车票和删除车票弹出的确认框

  • ---history.js //路由跳转插件可以使用history.push('***')跳转页面

  • ---logindialog.jsx //登陆验证弹出框,例如输入为空或错误,注册失败

  • ---Navbar.jsx //顶部标题栏

  • ---refresh.jsx //获取后台传回数据时加载中标志

  • ---sitelist.jsx //车站列表,我只是静态添加了几个,可以在文件中修改

  • ---ticket.jsx //对应page/order页面车票查询组件

  • ---tooltip.jsx //购票成功或失败,删除车票成功或失败底部信息提示

  • --pages //app页面

  • ---bottomBar.jsx //底部导航

  • ---endsite.jsx //目的车站页面

  • ---login.jsx //登陆页面

  • ---my12306.jsx //12306页面,登陆信息

  • ---order.jsx //车票预定页面,可查询车票

  • ---pay.jsx //购票支付页面

  • ---record.jsx //购票记录页面,可删除车票

  • ---server.jsx //商旅服务页面

  • ---site.jsx //出发车站页面

  • ---train.jsx //车票页面,车次根据车型筛选有效

  • ---user.jsx //用户信息页面,退出登录有效

  • --reducers //redux reducer 对action 处理的函数

  • --index.css

  • --index.js //项目入口

  • --registerServiceWorker.js

  • --router.js //路由配置

  • -.gitignore

  • -package.json

  • -README.md

  • -yarn.lock

记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + 演示效果

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

使用create-react-app模板模仿12306app的更多相关文章

  1. 深入 Create React App 核心概念

    本文差点难产而死.因为总结的过程中,多次怀疑本文是对官方文档的直接翻译和简单诺列:同时官方文档很全面,全范围的介绍无疑加深了写作的心智负担.但在最终的梳理中,发现走出了一条与众不同的路,于是坚持分享出 ...

  2. 在 .NET Core 5 中集成 Create React app

    翻译自 Camilo Reyes 2021年2月22日的文章 <Integrate Create React app with .NET Core 5> [1] Camilo Reyes ...

  3. tap news:week5 0.0 create react app

    参考https://blog.csdn.net/qtfying/article/details/78665664 先创建文件夹 安装create react app 这个脚手架(facebook官方提 ...

  4. 使用create react app教程

    This project was bootstrapped with Create React App. Below you will find some information on how to ...

  5. 如何扩展 Create React App 的 Webpack 配置

    如何扩展 Create React App 的 Webpack 配置  原文地址https://zhaozhiming.github.io/blog/2018/01/08/create-react-a ...

  6. Create React App

    Facebook开源了React前端框架(MIT Licence),也同时提供了React脚手架 - create-react-app. create-react-app遵循约定优于配置(Coc)的原 ...

  7. Create React App 安装less 报错

    执行npm run eject 暴露模块 安装 npm i  less less-loader -D 1.打开 react app 的 webpack.config.js const sassRege ...

  8. [React] Use the Fragment Short Syntax in Create React App 2.0

    create-react-app version 2.0 added a lot of new features. One of the new features is upgrading to Ba ...

  9. [React] {svg, css module, sass} support in Create React App 2.0

    create-react-app version 2.0 added a lot of new features. One of the new features is added the svgr  ...

随机推荐

  1. Javascript中的异步

    在C#,Java中,异步方法,通常是伴随多线程,并发等术语一起出现的,比如C#中的async方法,是运行在一个线程池线程上,并且在异步方法运行完成后,有一个回调函数通知主线程. 那么由于Javascr ...

  2. c语言把mysql数据库语句和变量封装为一个语句

    我有一个语句 sql = "insert into talbe_name  values(name,age)"  其中name和age两个变量根据外面的输入来确定,有两种方法 1: ...

  3. Shell基础学习(五) test命令

    1.数值测试 参数 说明 -eq 等于则为真 -gt 大于则为真 -lt 小于则为真 -nq 不等于则为真 -ge 大于等于为真 -le 小于等于为真 示例: num1= num2= if test ...

  4. HBase中的Client如何路由到正确的RegionServer

    在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer.什么叫相应的RegionServer?就是管理你要操 ...

  5. linux中的dup()系统调用

    参考1:http://www.blogjava.net/lihao336/archive/2011/12/13/366231.html 在linux纷繁复杂的内核代码中,sys_dup()的代码也许称 ...

  6. [FireDAC][Phys][MySQL] MySQL server has gone away

    [FireDAC][Phys][MySQL]  MySQL server has gone away 原因: MYSQL等其它数据库,其本质上还是SOCKET服务端. 作为网络通信服务端都有一个机制— ...

  7. ORACLE单表理论最大记录数

    不考虑硬件诸如内存,存储等硬件的限制. 一张表理论能存储多少条记录呢? 假设: 一个tablespace中包含1022个datafiles, 单个datafiles的最大是32G 假设每个block是 ...

  8. node.js&pm2搭建node生产环境

    node.js下载地址https://nodejs.org/en/download/stable/ 下载截图 建议采用稳定编译过的版本,source code稍麻烦,编译过的直接可用,安装超级简单,红 ...

  9. python接口自动化23-token参数关联登录(登录拉勾网)

    前言 登录网站的时候,经常会遇到传token参数,token关联并不难,难的是找出服务器第一次返回token的值所在的位置,取出来后就可以动态关联了 登录拉勾网 1.先找到登录首页https://pa ...

  10. 探寻C++最快的读取文件的方案 ——C++ IO优化

    在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式.相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据.还有人说Pascal的re ...