⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scheduleofclasses.java

📁 一个美国教授写得很好的java学生管理系统
💻 JAVA
字号:
// ScheduleOfClasses.java - Chapter 16 version.

// Copyright 2000 by Jacquie Barker - all rights reserved.

// A MODEL class.
package Courses;

import java.util.*;
import DataInterface.CollectionWrapper;
import UserInterface.SRS;

public class ScheduleOfClasses extends CollectionWrapper {
	//------------
	// Attributes.
	//------------

	private String semester;

	// This Hashtable stores Section object references, using
	// a String concatenation of course no. and section no. as the
	// key, e.g., "MATH101 - 1".

	private Hashtable sections; 

	//----------------
	// Constructor(s).
	//----------------

	public ScheduleOfClasses(String semester) {
		setSemester(semester);
		
		// Instantiate a new Hashtable.

		sections = new Hashtable();
	}

	//-----------------
	// Get/set methods.
	//-----------------

	public void setSemester(String semester) {
		this.semester = semester;
	}

	public String getSemester() {
		return semester;
	}

	//-----------------------------
	// Miscellaneous other methods.
	//-----------------------------

	// Used for testing purposes.
	
	public void display() {
		System.out.println("Schedule of Classes for " + getSemester());
		System.out.println("");

		// Step through the Hashtable and display all entries.

		Enumeration e = sections.elements();

		while (e.hasMoreElements()) {
			Section s = (Section) e.nextElement();
			s.display();
			System.out.println("");
		}
	}

	public void addSection(Section s) {
		// We formulate a key by concatenating the course no.
		// and section no., separated by a hyphen.

		String key = s.getRepresentedCourse().getCourseNo() + 
			     " - " + s.getSectionNo();
		sections.put(key, s);

		// Bidirectionally hook the ScheduleOfClasses back to the Section.

		s.setOfferedIn(this);
	}

	public void parseData(String line) {
		// We're going to parse tab-delimited records into
		// six attributes -- courseNo, sectionNo, dayOfWeek, 
		// timeOfDay, room, and capacity.  We'll use courseNo to 
		// look up the appropriate Course object, and will then
		// call the scheduleSection() method to fabricate a
		// new Section object.

		// First, make a copy of the record.

		String restOfLine = line;
		int index = restOfLine.indexOf("\t");
		String courseNo = restOfLine.substring(0, index);
		restOfLine = restOfLine.substring(index+1);
		index = restOfLine.indexOf("\t");

		// We have to parse the next value as a number.
		String sectionNumber = restOfLine.substring(0, index);
		int sectionNo = Integer.parseInt(sectionNumber);
		restOfLine = restOfLine.substring(index+1);

		index = restOfLine.indexOf("\t");
		String dayOfWeek = restOfLine.substring(0, index);
		restOfLine = restOfLine.substring(index+1);
		index = restOfLine.indexOf("\t");
		String timeOfDay = restOfLine.substring(0, index);
		restOfLine = restOfLine.substring(index+1);
		index = restOfLine.indexOf("\t");
		String room = restOfLine.substring(0, index);
		
		// We have to parse the last value as a number.
		String capacityValue = restOfLine.substring(index+1);
		int capacity = Integer.parseInt(capacityValue);

		// Look up the Course object in the Course Catalog.
		// Having made courseCatalog a public static attribute
		// of the SRS class comes in handy!
		Course c = SRS.courseCatalog.findCourse(courseNo);

		// Schedule the Section.
		Section s = c.scheduleSection(sectionNo, dayOfWeek.charAt(0), 
					      timeOfDay, room, capacity);
		String key = courseNo + " - " + s.getSectionNo();
		addSection(s);
	}

	// The full section number is a concatenation of the
	// course no. and section no., separated by a hyphen;
	// e.g., "ART101 - 1".

	public Section findSection(String fullSectionNo) {
		return (Section) sections.get(fullSectionNo);
	}

	// We don't need this method, but we have to provide it because
	// we inherited an abstract signature.

	public void parseData2(String line) { }

	// This next method was added for use with the GUI.

	// Convert the contents of the Hashtable into a Vector
	// that is sorted in alphabetic order.

	public Vector getSortedSections() {
		Vector sortedKeys = new Vector();
		Vector sortedSections = new Vector();

		// Note that we can pull the keys as an Enumeration as
		// well as the objects themselves.

		Enumeration e = sections.keys();
		while (e.hasMoreElements()) {
			boolean inserted = false;
			String key = (String) e.nextElement();
			for (int i = 0; i < sortedKeys.size(); i++) {
				String val = (String) sortedKeys.elementAt(i);

				// The compareTo() method compares two Strings,
				// returning a negative value if "key" comes
				// alphabetically before "val", zero if 
				// they are equal, and a positive value if 
				// "key" comes alphabetically after "val".

				if (key.compareTo(val) <= 0) {
					sortedKeys.insertElementAt(key, i);
					inserted = true;
					break;
				}
			}

			// If it hasn't been inserted yet, stick it at the end
			// of the "sortedKeys" Vector.

			if (!inserted) sortedKeys.add(key);
		}

		// Now that "sortedKeys" Vector contains all of the KEYS in 
		// alphabetic order, we'll step through that Vector and use 
		// it to pull the Section objects themselves out of the 
		// Hashtable and into another Vector "sortedSections".

		for (int i = 0; i < sortedKeys.size(); i++) {
			String key = (String) sortedKeys.elementAt(i);
			Section s = (Section) sections.get(key);
			sortedSections.add(s);
		}

		return sortedSections;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -