The full control and monitoring of equipment is performed through the master SAS terminals or the remote SAS terminal for the local AFC equipment. However, for backup control, there are mechanical switches in the GSCR of the master station and in the FCR of the satellite stations when the normal control from SAS is unavailable. The normal method of controlling AFC equipment shall be commands from the SAS terminal over a non-time critical segment of the Station LAN. The SAS shall be able to control the mode of operation of the AFC equipment for a group of stations, including master and satellite stations. These modes shall comprise normal operations and emergency operations, including special station events due to failed trains and conditions requiring full or partial suspension of fare collection. The SAS shall be able to provide 15 minutes traffic figure for monitoring.
时间: 2024-04-27 19:24:33 浏览: 136
AFC设备的完全控制和监控通过主SAS终端或本地AFC设备的远程SAS终端执行。然而,在SAS的正常控制不可用时,主站的GSCR和卫星站的FCR上有机械开关用于备份控制。控制AFC设备的正常方法应该是SAS终端通过车站局域网的非时间关键段发送命令。 SAS应该能够控制一组站(包括主站和卫星站)的AFC设备的操作模式。这些模式应包括正常操作和紧急操作,包括由于列车故障和需要全面或部分暂停收费的情况下的特殊车站事件。 SAS应该能够提供15分钟的流量数据以供监控。
相关问题
Develop a NetBeans application that illustrates the applicability of one sorting algorithm on a collection of 10 items. The algorithm should sort the items in descending order. The algorithm must work based on the principle of one of the four sorting algorithms studied during the semester. The collection of 10 items is defined and populated in the application code. You can decide the type and values of items stored in the collection. The algorithm must be implemented as part of a class called MyArrayList that extends the ArrayList class functionality with your sorting algorithm. [20 marks] 5. Extend the application implemented for Question 4 above to be able to measure the efficiency of the implemented sorting algorithm in term of number of comparisons performed by the algorithm. The application should display the total number of comparisons performed by the algorithm for a given collection of items. [10 marks] 6. In an Excel graph, plot the number of comparisons measured by the sorting algorithm when three different sizes of collection are considered. Submit your Excel file on Moodle. [20 marks]
Sure, I understand your question. You want me to develop a NetBeans application that demonstrates the use of one sorting algorithm on a collection of 10 items, sorting them in descending order. The algorithm should be based on one of the four sorting algorithms studied during the semester and should be implemented as part of a class called MyArrayList that extends the ArrayList class functionality with your sorting algorithm. Additionally, you want me to extend the application to measure the efficiency of the implemented sorting algorithm in terms of the number of comparisons performed by the algorithm, and to plot the number of comparisons measured by the sorting algorithm when three different sizes of collection are considered in an Excel graph.
To start, let's define and populate the collection of 10 items in the NetBeans application code. We can use integers for the items stored in the collection. Here's an example of how the collection can be defined and populated:
```
import java.util.ArrayList;
public class SortingDemo {
public static void main(String[] args) {
MyArrayList<Integer> list = new MyArrayList<Integer>();
list.add(5);
list.add(2);
list.add(10);
list.add(8);
list.add(1);
list.add(7);
list.add(9);
list.add(3);
list.add(4);
list.add(6);
System.out.println("Original list: " + list);
list.sortDescending();
System.out.println("Sorted list: " + list);
}
}
class MyArrayList<E extends Comparable<E>> extends ArrayList<E> {
public void sortDescending() {
// Insertion sort algorithm
for (int i = 1; i < size(); i++) {
E key = get(i);
int j = i - 1;
while (j >= 0 && get(j).compareTo(key) < 0) {
set(j + 1, get(j));
j--;
}
set(j + 1, key);
}
}
}
```
In the above code, we define a class called SortingDemo which contains a main method. Inside the main method, we create an instance of MyArrayList and add 10 integers to it. We then print out the original list and call the sortDescending method on the list to sort it in descending order. Finally, we print out the sorted list.
The MyArrayList class extends the ArrayList class and defines a sortDescending method that implements the insertion sort algorithm to sort the list in descending order.
Next, we need to extend the application to measure the efficiency of the sorting algorithm in terms of the number of comparisons performed by the algorithm. We can modify the MyArrayList class to keep track of the number of comparisons performed during the sorting process, like this:
```
class MyArrayList<E extends Comparable<E>> extends ArrayList<E> {
private int comparisons;
public void sortDescending() {
comparisons = 0;
// Insertion sort algorithm
for (int i = 1; i < size(); i++) {
E key = get(i);
int j = i - 1;
while (j >= 0 && get(j).compareTo(key) < 0) {
set(j + 1, get(j));
j--;
comparisons++;
}
set(j + 1, key);
}
}
public int getComparisons() {
return comparisons;
}
}
```
We added a private variable called comparisons to keep track of the number of comparisons performed during the sorting process. We initialize it to 0 at the start of the sortDescending method and increment it for each comparison performed. We also added a public method called getComparisons to retrieve the number of comparisons performed.
Finally, we need to plot the number of comparisons measured by the sorting algorithm when three different sizes of collection are considered in an Excel graph. To do this, we can modify the SortingDemo class to create three different lists of different sizes and sort each of them, recording the number of comparisons performed for each sort. We can then export the data to an Excel file and create a graph with the data.
Here's an example of the modified SortingDemo class:
```
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class SortingDemo {
public static void main(String[] args) {
MyArrayList<Integer> list1 = new MyArrayList<Integer>();
list1.add(5);
list1.add(2);
list1.add(10);
list1.add(8);
list1.add(1);
list1.add(7);
list1.add(9);
list1.add(3);
list1.add(4);
list1.add(6);
System.out.println("Original list 1: " + list1);
list1.sortDescending();
System.out.println("Sorted list 1: " + list1);
int comparisons1 = list1.getComparisons();
MyArrayList<Integer> list2 = new MyArrayList<Integer>();
for (int i = 0; i < 100; i++) {
list2.add((int) (Math.random() * 100));
}
System.out.println("Original list 2: " + list2);
list2.sortDescending();
System.out.println("Sorted list 2: " + list2);
int comparisons2 = list2.getComparisons();
MyArrayList<Integer> list3 = new MyArrayList<Integer>();
for (int i = 0; i < 1000; i++) {
list3.add((int) (Math.random() * 100));
}
System.out.println("Original list 3: " + list3);
list3.sortDescending();
System.out.println("Sorted list 3: " + list3);
int comparisons3 = list3.getComparisons();
System.out.println("Comparisons 1: " + comparisons1);
System.out.println("Comparisons 2: " + comparisons2);
System.out.println("Comparisons 3: " + comparisons3);
try (XSSFWorkbook workbook = new XSSFWorkbook()) {
FileOutputStream out = new FileOutputStream(new File("sorting.xlsx"));
org.apache.poi.ss.usermodel.Sheet sheet = workbook.createSheet("Sorting");
Row headerRow = sheet.createRow(0);
Cell cell0 = headerRow.createCell(0);
cell0.setCellValue("Collection Size");
Cell cell1 = headerRow.createCell(1);
cell1.setCellValue("Comparisons");
Row row1 = sheet.createRow(1);
Cell cell10 = row1.createCell(0);
cell10.setCellValue("10");
Cell cell11 = row1.createCell(1);
cell11.setCellValue(comparisons1);
Row row2 = sheet.createRow(2);
Cell cell20 = row2.createCell(0);
cell20.setCellValue("100");
Cell cell21 = row2.createCell(1);
cell21.setCellValue(comparisons2);
Row row3 = sheet.createRow(3);
Cell cell30 = row3.createCell(0);
cell30.setCellValue("1000");
Cell cell31 = row3.createCell(1);
cell31.setCellValue(comparisons3);
workbook.write(out);
out.close();
System.out.println("Excel file written successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
In the above code, we create three different lists of sizes 10, 100, and 1000, and sort each of them using the MyArrayList class. We record the number of comparisons performed for each sort and print them to the console. We then create an Excel file and write the data to it, creating a graph with the data.
To create the graph in Excel, open the sorting.xlsx file and select the data in cells A1:B3. Click on the Insert tab and select the type of graph you want to create. You can then customize the graph as needed.
write java。Once you have checked that your methods readLine and readPosInt work correctly, remove all the code inside the main method of the CLI class so that the main method is empty again. In the rest of this question, use the readLine and readPosInt methods every time your program needs to read a string or an integer from the user. In the empty main method of the CLI class, create a single Library object with the name "hhh Library". The main method of the CLI class must then print a menu that allows the user of your system to do six different actions that involve the library object, and your program must then read an integer from the user that indicates which action must be performed by the program (see below for the details about each action). Use the readPosInt method to print the menu (give the string for the menu as the argument of readPosInt) and to read the integer typed by the user.
Here is an example implementation of the CLI class with the required functionality:
```java
import java.util.Scanner;
public class CLI {
private static final String MENU = "1. Add a book\n2. Remove a book\n3. Search for a book\n4. Borrow a book\n5. Return a book\n6. Quit";
private static Library library;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
library = new Library("hhh Library");
int choice = -1;
while (choice != 6) {
System.out.println(MENU);
choice = readPosInt(scanner, "Enter your choice: ");
switch (choice) {
case 1:
addBook(scanner);
break;
case 2:
removeBook(scanner);
break;
case 3:
searchBook(scanner);
break;
case 4:
borrowBook(scanner);
break;
case 5:
returnBook(scanner);
break;
case 6:
System.out.println("Goodbye!");
break;
default:
System.out.println("Invalid choice. Please try again.");
break;
}
}
}
private static void addBook(Scanner scanner) {
String title = readLine(scanner, "Enter the title of the book: ");
String author = readLine(scanner, "Enter the author of the book: ");
int year = readPosInt(scanner, "Enter the publication year of the book: ");
library.addBook(new Book(title, author, year));
System.out.println("Book added successfully!");
}
private static void removeBook(Scanner scanner) {
String title = readLine(scanner, "Enter the title of the book to remove: ");
boolean removed = library.removeBook(title);
if (removed) {
System.out.println("Book removed successfully!");
} else {
System.out.println("Book not found.");
}
}
private static void searchBook(Scanner scanner) {
String searchTerm = readLine(scanner, "Enter a search term for the title or author of the book: ");
Book[] results = library.searchBooks(searchTerm);
if (results.length == 0) {
System.out.println("No results found.");
} else {
System.out.println("Search results:");
for (Book book : results) {
System.out.println(book);
}
}
}
private static void borrowBook(Scanner scanner) {
String title = readLine(scanner, "Enter the title of the book to borrow: ");
boolean borrowed = library.borrowBook(title);
if (borrowed) {
System.out.println("Book borrowed successfully!");
} else {
System.out.println("Book not available for borrowing.");
}
}
private static void returnBook(Scanner scanner) {
String title = readLine(scanner, "Enter the title of the book to return: ");
boolean returned = library.returnBook(title);
if (returned) {
System.out.println("Book returned successfully!");
} else {
System.out.println("Book not found or not borrowed.");
}
}
private static String readLine(Scanner scanner, String message) {
System.out.print(message);
return scanner.nextLine();
}
private static int readPosInt(Scanner scanner, String message) {
int num = -1;
while (num < 0) {
System.out.print(message);
try {
num = Integer.parseInt(scanner.nextLine());
} catch (NumberFormatException e) {
System.out.println("Invalid input. Please enter a positive integer.");
}
}
return num;
}
}
```
This implementation uses a Scanner object to read input from the user, and provides a menu with six different actions that can be performed on the library object. Each action is implemented as a separate method that reads input from the user as necessary and calls the appropriate method on the library object. The readLine and readPosInt methods are used to read strings and integers from the user, respectively, and handle any validation or error checking that may be required.
阅读全文