数据结构车票管理系统的实验课设具体内容,要有流程图,源代码,功能设计等
时间: 2023-07-11 09:31:06 浏览: 47
好的,下面是车票管理系统的流程图:
![车票管理系统流程图](https://cdn.jsdelivr.net/gh/wu529778790/figure-bed/image/车票管理系统流程图.png)
车票管理系统的基本功能设计如下:
1. 添加车票:输入车票信息,将车票添加到链表中并保存到文件中。
2. 删除车票:输入要删除的车票编号,将车票从链表中删除并保存到文件中。
3. 查询车票:输入要查询的车票编号,输出车票信息。
4. 显示所有车票信息:遍历链表并输出所有车票信息。
5. 退出程序:将链表中的车票信息保存到文件中并退出。
下面是车票管理系统的源代码,使用Java语言实现:
Ticket.java
```java
public class Ticket {
private String ticketNo; // 车票编号
private String startStation; // 起点站
private String endStation; // 终点站
private String departureTime; // 发车时间
private double price; // 车票价格
public Ticket(String ticketNo, String startStation, String endStation, String departureTime, double price) {
this.ticketNo = ticketNo;
this.startStation = startStation;
this.endStation = endStation;
this.departureTime = departureTime;
this.price = price;
}
public String getTicketNo() {
return ticketNo;
}
public String getStartStation() {
return startStation;
}
public String getEndStation() {
return endStation;
}
public String getDepartureTime() {
return departureTime;
}
public double getPrice() {
return price;
}
@Override
public String toString() {
return "Ticket{" +
"ticketNo='" + ticketNo + '\'' +
", startStation='" + startStation + '\'' +
", endStation='" + endStation + '\'' +
", departureTime='" + departureTime + '\'' +
", price=" + price +
'}';
}
}
```
TicketList.java
```java
import java.io.*;
public class TicketList {
private TicketNode head; // 头节点
private TicketNode tail; // 尾节点
public TicketList() {
// 初始化头节点和尾节点
head = new TicketNode(null);
tail = head;
}
// 添加车票
public void addTicket(Ticket ticket) {
TicketNode node = new TicketNode(ticket);
tail.setNext(node);
tail = node;
}
// 删除车票
public void deleteTicket(String ticketNo) {
TicketNode prev = head;
TicketNode curr = head.getNext();
while (curr != null) {
if (curr.getTicket().getTicketNo().equals(ticketNo)) {
prev.setNext(curr.getNext());
if (curr == tail) {
tail = prev;
}
return;
}
prev = curr;
curr = curr.getNext();
}
}
// 查询车票
public Ticket searchTicket(String ticketNo) {
TicketNode curr = head.getNext();
while (curr != null) {
if (curr.getTicket().getTicketNo().equals(ticketNo)) {
return curr.getTicket();
}
curr = curr.getNext();
}
return null;
}
// 显示所有车票信息
public void displayAllTickets() {
TicketNode curr = head.getNext();
while (curr != null) {
System.out.println(curr.getTicket());
curr = curr.getNext();
}
}
// 保存车票信息到文件
public void saveToFile(String fileName) throws IOException {
FileOutputStream fos = new FileOutputStream(fileName);
ObjectOutputStream oos = new ObjectOutputStream(fos);
TicketNode curr = head.getNext();
while (curr != null) {
oos.writeObject(curr.getTicket());
curr = curr.getNext();
}
oos.close();
fos.close();
}
// 从文件中读取车票信息
public void readFromFile(String fileName) throws IOException, ClassNotFoundException {
FileInputStream fis = new FileInputStream(fileName);
ObjectInputStream ois = new ObjectInputStream(fis);
while (fis.available() > 0) {
Ticket ticket = (Ticket) ois.readObject();
addTicket(ticket);
}
ois.close();
fis.close();
}
}
```
TicketNode.java
```java
public class TicketNode {
private Ticket ticket; // 车票信息
private TicketNode next; // 下一个节点
public TicketNode(Ticket ticket) {
this.ticket = ticket;
next = null;
}
public Ticket getTicket() {
return ticket;
}
public TicketNode getNext() {
return next;
}
public void setNext(TicketNode next) {
this.next = next;
}
}
```
TicketManagementSystem.java
```java
import java.io.IOException;
import java.util.Scanner;
public class TicketManagementSystem {
private TicketList ticketList;
public TicketManagementSystem() {
ticketList = new TicketList();
}
// 添加车票
private void addTicket() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入车票编号:");
String ticketNo = scanner.nextLine();
System.out.print("请输入起点站:");
String startStation = scanner.nextLine();
System.out.print("请输入终点站:");
String endStation = scanner.nextLine();
System.out.print("请输入发车时间:");
String departureTime = scanner.nextLine();
System.out.print("请输入车票价格:");
double price = scanner.nextDouble();
scanner.nextLine();
Ticket ticket = new Ticket(ticketNo, startStation, endStation, departureTime, price);
ticketList.addTicket(ticket);
System.out.println("添加车票成功!");
}
// 删除车票
private void deleteTicket() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要删除的车票编号:");
String ticketNo = scanner.nextLine();
ticketList.deleteTicket(ticketNo);
System.out.println("删除车票成功!");
}
// 查询车票
private void searchTicket() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要查询的车票编号:");
String ticketNo = scanner.nextLine();
Ticket ticket = ticketList.searchTicket(ticketNo);
if (ticket == null) {
System.out.println("未找到该车票!");
} else {
System.out.println(ticket);
}
}
// 显示所有车票信息
private void displayAllTickets() {
ticketList.displayAllTickets();
}
// 保存车票信息到文件
private void saveToFile() {
try {
ticketList.saveToFile("tickets.dat");
System.out.println("保存车票信息成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
// 从文件中读取车票信息
private void readFromFile() {
try {
ticketList.readFromFile("tickets.dat");
System.out.println("读取车票信息成功!");
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
// 显示菜单
private void showMenu() {
System.out.println("1. 添加车票");
System.out.println("2. 删除车票");
System.out.println("3. 查询车票");
System.out.println("4. 显示所有车票信息");
System.out.println("5. 保存车票信息到文件");
System.out.println("6. 从文件中读取车票信息");
System.out.println("7. 退出程序");
System.out.println("请输入操作编号:");
}
// 运行程序
public void run() {
readFromFile(); // 从文件中读取车票信息
Scanner scanner = new Scanner(System.in);
int choice = 0;
while (choice != 7) {
showMenu();
choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1:
addTicket();
break;
case 2:
deleteTicket();
break;
case 3:
searchTicket();
break;
case 4:
displayAllTickets();
break;
case 5:
saveToFile();
break;
case 6:
readFromFile();
break;
case 7:
System.out.println("程序已退出!");
break;
default:
System.out.println("无效的操作编号,请重新输入!");
}
}
saveToFile(); // 保存车票信息到文件
}
public static void main(String[] args) {
TicketManagementSystem system = new TicketManagementSystem();
system.run();
}
}
```
注意:为了简化代码,这里使用了Java内置的序列化机制来实现将车票信息保存到文件和从文件中读取车票信息的功能,实际应用中可能需要使用更加高效的数据存储方式。