Back to blocks
在线巴士票务系统
4.0
ru交通与物流巴士票务在线购票票务系统
Промпт
Создать систему по поиску автобусных билетов и продажу билетов онлайн
Сгенерированный Результат
import React, { useState } from 'react'; import './App.css'; const App = () => { const [from, setFrom] = useState(''); const [to, setTo] = useState(''); const [date, setDate] = useState(''); const [tickets, setTickets] = useState([]); const [selectedTicket, setSelectedTicket] = useState(null); const searchTickets = () => { // Mock data for demonstration const mockTickets = [ { id: 1, from: 'New York', to: 'Boston', date: '2025-01-01', price: '$20' }, { id: 2, from: 'New York', to: 'Philadelphia', date: '2025-01-01', price: '$25' }, { id: 3, from: 'New York', to: 'Washington DC', date: '2025-01-01', price: '$30' }, ]; setTickets(mockTickets); }; const selectTicket = (ticket) => { setSelectedTicket(ticket); }; const confirmPurchase = () => { alert(`You have purchased a ticket from ${selectedTicket.from} to ${selectedTicket.to} on ${selectedTicket.date} for ${selectedTicket.price}`); setSelectedTicket(null); }; return ( <div className="App bg-gray-100 min-h-screen p-8"> <header className="text-center mb-8"> <h1 className="text-4xl font-bold text-blue-600">Bus Ticket Search and Purchase System</h1> </header> <div className="max-w-4xl mx-auto bg-white p-8 rounded-lg shadow-lg mb-8"> <div className="grid grid-cols-1 md:grid-cols-3 gap-4 mb-8"> <input type="text" placeholder="From" value={from} onChange={(e) => setFrom(e.target.value)} className="p-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-600" /> <input type="text" placeholder="To" value={to} onChange={(e) => setTo(e.target.value)} className="p-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-600" /> <input type="date" value={date} onChange={(e) => setDate(e.target.value)} className="p-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-600" /> </div> <button onClick={searchTickets} className="w-full bg-blue-600 text-white p-2 rounded-lg hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-600" > Search Tickets </button> </div> {tickets.length > 0 && ( <div className="max-w-4xl mx-auto bg-white p-8 rounded-lg shadow-lg mb-8"> <h2 className="text-2xl font-bold mb-4 text-blue-600">Available Tickets</h2> <div className="space-y-4"> {tickets.map((ticket) => ( <div key={ticket.id} className="p-4 border rounded-lg hover:bg-gray-50 cursor-pointer" onClick={() => selectTicket(ticket)} > <p className="font-bold">{ticket.from} to {ticket.to}</p> <p>Date: {ticket.date}</p> <p>Price: {ticket.price}</p> </div> ))} </div> </div> )} {selectedTicket && ( <div className="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center"> <div className="bg-white p-8 rounded-lg shadow-lg max-w-md w-full"> <h2 className="text-2xl font-bold mb-4 text-blue-600">Confirm Purchase</h2> <p className="mb-4">Are you sure you want to purchase the ticket from {selectedTicket.from} to {selectedTicket.to} on {selectedTicket.date} for {selectedTicket.price}?</p> <div className="flex justify-end space-x-4"> <button onClick={() => setSelectedTicket(null)} className="bg-gray-300 text-gray-700 p-2 rounded-lg hover:bg-gray-400 focus:outline-none focus:ring-2 focus:ring-gray-600" > Cancel </button> <button onClick={confirmPurchase} className="bg-blue-600 text-white p-2 rounded-lg hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-600" > Confirm </button> </div> </div> </div> )} <footer className="text-center mt-8 text-gray-600"> <p>© 2025 Bus Ticket Search and Purchase System. All rights reserved.</p> </footer> </div> ); }; export default App;
